mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-24 23:33:05 +00:00
nodejs: add tests to library (#7694)
* nodejs: add tests to library * new tests * remove message splitting * fix race * docs * replace extract-zip with yauzl that it wraps (high severity issue) * fix ci tests * skip server tests on macos and win unless SMP_SERVER is set * fix win test * fix win test --------- Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
This commit is contained in:
1 parent
ba9269a3ad
commit
46b2cf9f85
73 files changed
+957
-265
No files matched your search
@@ -4,15 +4,17 @@ const LOCAL_FILE_HEADER = 0x04034b50
|
||||
const CENTRAL_DIRECTORY_HEADER = 0x02014b50
|
||||
const END_OF_CENTRAL_DIRECTORY = 0x06054b50
|
||||
const ZIP_VERSION = 20
|
||||
const MADE_BY_UNIX = 3 << 8
|
||||
const LOCAL_HEADER_SIZE = 30
|
||||
const CENTRAL_ENTRY_SIZE = 46
|
||||
const END_RECORD_SIZE = 22
|
||||
|
||||
export function storedZip(files: {[name: string]: string}): Buffer {
|
||||
export function storedZip(files: {[name: string]: string | {content: string, mode: number}}): Buffer {
|
||||
const local: Buffer[] = []
|
||||
const central: Buffer[] = []
|
||||
let offset = 0
|
||||
for (const [name, content] of Object.entries(files)) {
|
||||
for (const [name, file] of Object.entries(files)) {
|
||||
const {content, mode} = typeof file === "string" ? {content: file, mode: 0} : file
|
||||
const nameBuf = Buffer.from(name)
|
||||
const data = Buffer.from(content)
|
||||
const crc = zlib.crc32(data)
|
||||
@@ -26,12 +28,13 @@ export function storedZip(files: {[name: string]: string}): Buffer {
|
||||
local.push(header, nameBuf, data)
|
||||
const entry = Buffer.alloc(CENTRAL_ENTRY_SIZE)
|
||||
entry.writeUInt32LE(CENTRAL_DIRECTORY_HEADER, 0)
|
||||
entry.writeUInt16LE(ZIP_VERSION, 4)
|
||||
entry.writeUInt16LE(mode ? MADE_BY_UNIX | ZIP_VERSION : ZIP_VERSION, 4)
|
||||
entry.writeUInt16LE(ZIP_VERSION, 6)
|
||||
entry.writeUInt32LE(crc, 16)
|
||||
entry.writeUInt32LE(data.length, 20)
|
||||
entry.writeUInt32LE(data.length, 24)
|
||||
entry.writeUInt16LE(nameBuf.length, 28)
|
||||
entry.writeUInt32LE(mode * 0x10000, 38)
|
||||
entry.writeUInt32LE(offset, 42)
|
||||
central.push(entry, nameBuf)
|
||||
offset += header.length + nameBuf.length + data.length
|
||||
|
||||
Reference in new issue
Block a user