@shockpkg/ria-packager
Version:
Package for creating Adobe AIR packages
1 lines • 34.7 kB
Source Map (JSON)
{"version":3,"file":"zipper.mjs","names":["deflateRaw","crc32","addET","flags","times","time","index","local","push","Math","round","getTime","ZipperEntryExtraField","type","data","Uint8Array","constructor","sizeof","length","encode","d","v","DataView","buffer","byteOffset","byteLength","setUint16","set","initInfoZipUnix2Local","uid","gid","_initInfoZipUnix2","initInfoZipUnix2Central","initExtendedTimestampLocal","mtime","atime","ctime","_initExtendedTimestamp","initExtendedTimestampCentral","i","setUint32","ZipperEntry","signatureLocal","signatureCentral","extractVersion","extractHostOS","createVersion","createHostOS","compression","date","sizeCompressed","sizeUncompressed","diskNumberStart","internalAttributes","externalAttributes","headerOffsetLocal","path","comment","extraFieldsLocal","extraFieldsCentral","sizeofExtraFieldsLocal","r","ef","sizeofLocal","sizeofExtraFieldsCentral","sizeofCentral","createExtraField","setDate","dosTime","_dateToDosTime","encodeLocal","setUint8","e","encodeCentral","initData","compress","_crc32","comp","_zlibDeflateRaw","addExtraFieldsExtendedTimestamp","efl","efc","addExtraFieldsInfoZipUnix2","Date","getDate","getMonth","getFullYear","floor","getSeconds","getMinutes","getHours","Promise","resolve","reject","err","Zipper","signature","entries","_offset","output","_output","createEntry","addEntry","entry","Error","_writeOutput","close","size","end","write"],"sources":["../src/zipper.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {deflateRaw} from 'node:zlib';\n\nimport {crc32} from '@shockpkg/icon-encoder';\n\n/**\n * Add Extended Timestamp to bit flags and list.\n *\n * @param flags Bit flags.\n * @param times Array of times.\n * @param time Time to add, or not if null.\n * @param index Bit index.\n * @param local Local header or central.\n * @returns New bit flags.\n */\nfunction addET(\n\tflags: number,\n\ttimes: number[],\n\ttime: Readonly<Date> | number | null = null,\n\tindex: number,\n\tlocal: boolean\n) {\n\tif (time !== null) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\tflags |= 1 << index;\n\t\tif (index || local) {\n\t\t\ttimes.push(\n\t\t\t\ttypeof time === 'number'\n\t\t\t\t\t? time\n\t\t\t\t\t: Math.round(time.getTime() / 1000)\n\t\t\t);\n\t\t}\n\t}\n\treturn flags;\n}\n\n/**\n * Zipper write stream interface.\n * A subset of Writable.\n */\nexport interface IZipperWriteStream {\n\t/**\n\t * Write data.\n\t *\n\t * @param data Data chunk.\n\t * @param cb Callback function.\n\t */\n\twrite(data: Readonly<Uint8Array>, cb: (err: Error) => void): void;\n\n\t/**\n\t * Write end.\n\t *\n\t * @param cb Callback function.\n\t */\n\tend(cb: (err: Error) => void): void;\n}\n\n/**\n * Zipper Entry Extra Field object.\n */\nexport class ZipperEntryExtraField {\n\t/**\n\t * Type ID.\n\t */\n\tpublic type = 0;\n\n\t/**\n\t * Data for the type.\n\t */\n\tpublic data: Uint8Array = new Uint8Array(0);\n\n\t/**\n\t * Zipper Entry Extra Field constructor.\n\t */\n\tconstructor() {}\n\n\t/**\n\t * Get the encode size.\n\t *\n\t * @returns Encode size.\n\t */\n\tpublic sizeof() {\n\t\treturn 4 + this.data.length;\n\t}\n\n\t/**\n\t * Encode type and data as data.\n\t *\n\t * @returns Encoded data.\n\t */\n\tpublic encode() {\n\t\tconst {data, type} = this;\n\t\tconst d = new Uint8Array(this.sizeof());\n\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\tv.setUint16(0, type, true);\n\t\tv.setUint16(2, data.length, true);\n\t\td.set(data, 4);\n\t\treturn d;\n\t}\n\n\t/**\n\t * Init Info-ZIP UNIX type 2 data, local header.\n\t *\n\t * @param uid User ID.\n\t * @param gid Group ID.\n\t */\n\tpublic initInfoZipUnix2Local(uid = 0, gid = 0) {\n\t\tthis._initInfoZipUnix2(true, uid, gid);\n\t}\n\n\t/**\n\t * Init Info-ZIP UNIX type 2 data, central header.\n\t *\n\t * @param uid User ID.\n\t * @param gid Group ID.\n\t */\n\tpublic initInfoZipUnix2Central(uid = 0, gid = 0) {\n\t\tthis._initInfoZipUnix2(false, uid, gid);\n\t}\n\n\t/**\n\t * Init Extended Timestamp data, local header.\n\t *\n\t * @param mtime Modification time.\n\t * @param atime Access time.\n\t * @param ctime Creation time.\n\t */\n\tpublic initExtendedTimestampLocal(\n\t\tmtime: Readonly<Date> | number | null = null,\n\t\tatime: Readonly<Date> | number | null = null,\n\t\tctime: Readonly<Date> | number | null = null\n\t) {\n\t\tthis._initExtendedTimestamp(true, mtime, atime, ctime);\n\t}\n\n\t/**\n\t * Init Extended Timestamp data, central header.\n\t *\n\t * @param mtime Modification time.\n\t * @param atime Access time.\n\t * @param ctime Creation time.\n\t */\n\tpublic initExtendedTimestampCentral(\n\t\tmtime: Readonly<Date> | number | null = null,\n\t\tatime: Readonly<Date> | number | null = null,\n\t\tctime: Readonly<Date> | number | null = null\n\t) {\n\t\tthis._initExtendedTimestamp(false, mtime, atime, ctime);\n\t}\n\n\t/**\n\t * Init Info-ZIP UNIX type 2 data.\n\t *\n\t * @param local Local header or central.\n\t * @param uid User ID.\n\t * @param gid Group ID.\n\t */\n\tprotected _initInfoZipUnix2(local: boolean, uid: number, gid: number) {\n\t\tconst d = local ? new Uint8Array(4) : new Uint8Array(0);\n\t\tif (local) {\n\t\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\t\tv.setUint16(0, uid, true);\n\t\t\tv.setUint16(2, gid, true);\n\t\t}\n\n\t\t// Type: 'Ux'\n\t\tthis.type = 0x7855;\n\t\tthis.data = d;\n\t}\n\n\t/**\n\t * Init Extended Timestamp data.\n\t *\n\t * @param local Local header or central.\n\t * @param mtime Modification time.\n\t * @param atime Access time.\n\t * @param ctime Creation time.\n\t */\n\tprotected _initExtendedTimestamp(\n\t\tlocal: boolean,\n\t\tmtime: Readonly<Date> | number | null,\n\t\tatime: Readonly<Date> | number | null,\n\t\tctime: Readonly<Date> | number | null\n\t) {\n\t\tlet flags = 0;\n\t\tconst times: number[] = [];\n\t\tflags = addET(flags, times, mtime, 0, local);\n\t\tflags = addET(flags, times, atime, 1, local);\n\t\tflags = addET(flags, times, ctime, 2, local);\n\n\t\tconst d = new Uint8Array(1 + times.length * 4);\n\t\tlet i = 0;\n\t\td[i++] = flags;\n\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\tfor (const time of times) {\n\t\t\tv.setUint32(i, time, true);\n\t\t\ti += 4;\n\t\t}\n\n\t\t// Type: 'UT'\n\t\tthis.type = 0x5455;\n\t\tthis.data = d;\n\t}\n}\n\n/**\n * Zipper Entry object.\n */\nexport class ZipperEntry {\n\t/**\n\t * Tag signature, local header.\n\t */\n\tpublic signatureLocal = 0x4034b50;\n\n\t/**\n\t * Tag signature, central header.\n\t */\n\tpublic signatureCentral = 0x2014b50;\n\n\t/**\n\t * Extract version.\n\t */\n\tpublic extractVersion = 0x14;\n\n\t/**\n\t * Extract host OS.\n\t */\n\tpublic extractHostOS = 0;\n\n\t/**\n\t * Create version.\n\t */\n\tpublic createVersion = 0x14;\n\n\t/**\n\t * Create host OS.\n\t */\n\tpublic createHostOS = 0;\n\n\t/**\n\t * Extract flags.\n\t */\n\tpublic flags = 0;\n\n\t/**\n\t * Compression type.\n\t */\n\tpublic compression = 0;\n\n\t/**\n\t * DOS time.\n\t */\n\tpublic time = 0;\n\n\t/**\n\t * DOS date.\n\t */\n\tpublic date = 0;\n\n\t/**\n\t * Data CRC32.\n\t */\n\tpublic crc32 = 0;\n\n\t/**\n\t * Size compressed.\n\t */\n\tpublic sizeCompressed = 0;\n\n\t/**\n\t * Size uncompressed.\n\t */\n\tpublic sizeUncompressed = 0;\n\n\t/**\n\t * Disk number start.\n\t */\n\tpublic diskNumberStart = 0;\n\n\t/**\n\t * Internal attributes.\n\t */\n\tpublic internalAttributes = 0;\n\n\t/**\n\t * External attributes.\n\t */\n\tpublic externalAttributes = 0;\n\n\t/**\n\t * Header offset, local header.\n\t */\n\tpublic headerOffsetLocal = 0;\n\n\t/**\n\t * Entry path.\n\t */\n\tpublic path: Uint8Array<ArrayBufferLike> = new Uint8Array(0);\n\n\t/**\n\t * Entry comment.\n\t */\n\tpublic comment: Uint8Array<ArrayBufferLike> = new Uint8Array(0);\n\n\t/**\n\t * Extra fields, local header.\n\t */\n\tpublic extraFieldsLocal: ZipperEntryExtraField[] = [];\n\n\t/**\n\t * Extra fields, central header.\n\t */\n\tpublic extraFieldsCentral: ZipperEntryExtraField[] = [];\n\n\t/**\n\t * Zipper Entry constructor.\n\t */\n\tconstructor() {}\n\n\t/**\n\t * Get the file record extra fields size.\n\t *\n\t * @returns Extra fields size.\n\t */\n\tpublic sizeofExtraFieldsLocal() {\n\t\tlet r = 0;\n\t\tfor (const ef of this.extraFieldsLocal) {\n\t\t\tr += ef.sizeof();\n\t\t}\n\t\treturn r;\n\t}\n\n\t/**\n\t * Get the file record extra fields size.\n\t *\n\t * @returns Extra fields size.\n\t */\n\tpublic sizeofLocal() {\n\t\treturn 30 + this.path.length + this.sizeofExtraFieldsLocal();\n\t}\n\n\t/**\n\t * Get the file record extra fields size.\n\t *\n\t * @returns Extra fields size.\n\t */\n\tpublic sizeofExtraFieldsCentral() {\n\t\tlet r = 0;\n\t\tfor (const ef of this.extraFieldsCentral) {\n\t\t\tr += ef.sizeof();\n\t\t}\n\t\treturn r;\n\t}\n\n\t/**\n\t * Get the central record extra fields size.\n\t *\n\t * @returns Extra fields size.\n\t */\n\tpublic sizeofCentral() {\n\t\treturn (\n\t\t\t46 +\n\t\t\tthis.path.length +\n\t\t\tthis.comment.length +\n\t\t\tthis.sizeofExtraFieldsCentral()\n\t\t);\n\t}\n\n\t/**\n\t * Create new ZipperEntryExtraField object.\n\t *\n\t * @returns ZipperEntryExtraField object.\n\t */\n\tpublic createExtraField() {\n\t\treturn new ZipperEntryExtraField();\n\t}\n\n\t/**\n\t * Set date from a date object or timestamp.\n\t *\n\t * @param date Date object or timestamp.\n\t */\n\tpublic setDate(date: Readonly<Date> | number) {\n\t\tconst dosTime = this._dateToDosTime(date);\n\t\tthis.date = dosTime.date;\n\t\tthis.time = dosTime.time;\n\t}\n\n\t/**\n\t * Get local record data.\n\t *\n\t * @returns Local record data.\n\t */\n\tpublic encodeLocal() {\n\t\tconst {path, extraFieldsLocal} = this;\n\n\t\tconst d = new Uint8Array(this.sizeofLocal());\n\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\tlet i = 0;\n\n\t\tv.setUint32(i, this.signatureLocal, true);\n\t\ti += 4;\n\t\tv.setUint8(i++, this.extractVersion);\n\t\tv.setUint8(i++, this.extractHostOS);\n\t\tv.setUint16(i, this.flags, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.compression, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.time, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.date, true);\n\t\ti += 2;\n\t\tv.setUint32(i, this.crc32, true);\n\t\ti += 4;\n\t\tv.setUint32(i, this.sizeCompressed, true);\n\t\ti += 4;\n\t\tv.setUint32(i, this.sizeUncompressed, true);\n\t\ti += 4;\n\t\tv.setUint16(i, path.length, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.sizeofExtraFieldsLocal(), true);\n\t\ti += 2;\n\n\t\td.set(path, i);\n\t\ti += path.length;\n\n\t\tfor (const ef of extraFieldsLocal) {\n\t\t\tconst e = ef.encode();\n\t\t\td.set(e, i);\n\t\t\ti += e.length;\n\t\t}\n\t\treturn d;\n\t}\n\n\t/**\n\t * Get central record data.\n\t *\n\t * @returns Central entry data.\n\t */\n\tpublic encodeCentral() {\n\t\tconst {path, comment, extraFieldsCentral} = this;\n\t\tconst d = new Uint8Array(this.sizeofCentral());\n\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\tlet i = 0;\n\n\t\tv.setUint32(i, this.signatureCentral, true);\n\t\ti += 4;\n\t\tv.setUint8(i++, this.createVersion);\n\t\tv.setUint8(i++, this.createHostOS);\n\t\tv.setUint8(i++, this.extractVersion);\n\t\tv.setUint8(i++, this.extractHostOS);\n\t\tv.setUint16(i, this.flags, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.compression, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.time, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.date, true);\n\t\ti += 2;\n\t\tv.setUint32(i, this.crc32, true);\n\t\ti += 4;\n\t\tv.setUint32(i, this.sizeCompressed, true);\n\t\ti += 4;\n\t\tv.setUint32(i, this.sizeUncompressed, true);\n\t\ti += 4;\n\t\tv.setUint16(i, path.length, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.sizeofExtraFieldsCentral(), true);\n\t\ti += 2;\n\t\tv.setUint16(i, comment.length, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.diskNumberStart, true);\n\t\ti += 2;\n\t\tv.setUint16(i, this.internalAttributes, true);\n\t\ti += 2;\n\t\tv.setUint32(i, this.externalAttributes, true);\n\t\ti += 4;\n\t\tv.setUint32(i, this.headerOffsetLocal, true);\n\t\ti += 4;\n\n\t\td.set(path, i);\n\t\ti += path.length;\n\n\t\tfor (const ef of extraFieldsCentral) {\n\t\t\tconst e = ef.encode();\n\t\t\td.set(e, i);\n\t\t\ti += e.length;\n\t\t}\n\n\t\td.set(comment, i);\n\n\t\treturn d;\n\t}\n\n\t/**\n\t * Setup data for entry.\n\t *\n\t * @param data Data for the entry.\n\t * @param compress Compress option, true to force, false to disable.\n\t * @returns Resulting data, or null if no data passed.\n\t */\n\tpublic async initData(\n\t\tdata: Readonly<Uint8Array> | null,\n\t\tcompress: boolean | null = null\n\t) {\n\t\tthis.compression = 0;\n\t\tthis.crc32 = 0;\n\t\tthis.sizeCompressed = 0;\n\t\tthis.sizeUncompressed = 0;\n\n\t\tif (!data) {\n\t\t\treturn null;\n\t\t}\n\t\tconst crc32 = this._crc32(data);\n\n\t\tif (compress === false) {\n\t\t\tthis.crc32 = crc32;\n\t\t\tthis.sizeCompressed = this.sizeUncompressed = data.length;\n\t\t\tthis.compression = 0;\n\t\t\treturn data;\n\t\t}\n\n\t\tif (compress === true) {\n\t\t\tconst comp = await this._zlibDeflateRaw(data);\n\t\t\tthis.crc32 = crc32;\n\t\t\tthis.sizeUncompressed = data.length;\n\t\t\tthis.sizeCompressed = comp.length;\n\t\t\tthis.compression = 8;\n\t\t\treturn comp;\n\t\t}\n\n\t\tconst comp = await this._zlibDeflateRaw(data);\n\t\tconst r = comp.length < data.length ? comp : data;\n\t\tthis.crc32 = crc32;\n\t\tthis.sizeUncompressed = data.length;\n\t\tthis.sizeCompressed = r.length;\n\t\tthis.compression = r === data ? 0 : 8;\n\t\treturn r;\n\t}\n\n\t/**\n\t * Add extra fields for Extended Timestamp.\n\t *\n\t * @param mtime Modification time.\n\t * @param atime Access time.\n\t * @param ctime Creation time.\n\t */\n\tpublic addExtraFieldsExtendedTimestamp(\n\t\tmtime: Readonly<Date> | number | null = null,\n\t\tatime: Readonly<Date> | number | null = null,\n\t\tctime: Readonly<Date> | number | null = null\n\t) {\n\t\tconst efl = this.createExtraField();\n\t\tefl.initExtendedTimestampLocal(mtime, atime, ctime);\n\t\tthis.extraFieldsLocal.push(efl);\n\n\t\tconst efc = this.createExtraField();\n\t\tefc.initExtendedTimestampCentral(mtime, atime, ctime);\n\t\tthis.extraFieldsCentral.push(efc);\n\t}\n\n\t/**\n\t * Add extra fields for Info-ZIP UNIX type 2.\n\t *\n\t * @param uid User ID.\n\t * @param gid Group ID.\n\t */\n\tpublic addExtraFieldsInfoZipUnix2(uid = 0, gid = 0) {\n\t\tconst efl = this.createExtraField();\n\t\tefl.initInfoZipUnix2Local(uid, gid);\n\t\tthis.extraFieldsLocal.push(efl);\n\n\t\tconst efc = this.createExtraField();\n\t\tefc.initInfoZipUnix2Central(uid, gid);\n\t\tthis.extraFieldsCentral.push(efc);\n\t}\n\n\t/**\n\t * Convert date from a date object or timestamp.\n\t *\n\t * @param date Date object or timestamp.\n\t * @returns DOS time.\n\t */\n\tprotected _dateToDosTime(date: Readonly<Date> | number) {\n\t\tconst d = typeof date === 'number' ? new Date(date * 1000) : date;\n\t\treturn {\n\t\t\tdate:\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t(d.getDate() & 0x1f) |\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t(((d.getMonth() + 1) & 0xf) << 5) |\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t(((d.getFullYear() - 1980) & 0x7f) << 9),\n\t\t\ttime:\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tMath.floor(d.getSeconds() / 2) |\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t((d.getMinutes() & 0x3f) << 5) |\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t((d.getHours() & 0x1f) << 11)\n\t\t};\n\t}\n\n\t/**\n\t * Calculate the CRC32 hash for data.\n\t *\n\t * @param data Data to be hashed.\n\t * @returns CRC32 hash.\n\t */\n\tprotected _crc32(data: Readonly<Uint8Array>) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\treturn crc32(data) >>> 0;\n\t}\n\n\t/**\n\t * Zlib deflate raw data.\n\t *\n\t * @param data Data to be compressed.\n\t * @returns Compressed data.\n\t */\n\tprotected async _zlibDeflateRaw(data: Readonly<Uint8Array>) {\n\t\treturn new Promise<Uint8Array>((resolve, reject) => {\n\t\t\tdeflateRaw(data, (err, d) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve(new Uint8Array(d.buffer, d.byteOffset, d.byteLength));\n\t\t\t});\n\t\t});\n\t}\n}\n\n/**\n * Zipper, a low-level ZIP file writter.\n */\nexport class Zipper {\n\t/**\n\t * Tag signature.\n\t */\n\tpublic signature = 0x6054b50;\n\n\t/**\n\t * Archive comment.\n\t */\n\tpublic comment: Uint8Array<ArrayBufferLike> = new Uint8Array(0);\n\n\t/**\n\t * Added entries.\n\t */\n\tpublic entries: ZipperEntry[] = [];\n\n\t/**\n\t * Current offset.\n\t */\n\tprotected _offset = 0;\n\n\t/**\n\t * Output stream.\n\t */\n\tprotected readonly _output: IZipperWriteStream;\n\n\t/**\n\t * Zipper constructor.\n\t *\n\t * @param output Writable stream.\n\t */\n\tconstructor(output: IZipperWriteStream) {\n\t\tthis._output = output;\n\t}\n\n\t/**\n\t * Create new ZipperEntry object.\n\t *\n\t * @returns ZipperEntry object.\n\t */\n\tpublic createEntry() {\n\t\treturn new ZipperEntry();\n\t}\n\n\t/**\n\t * Add Entry and any associated data.\n\t *\n\t * @param entry Entry object.\n\t * @param data Data from the entry initData method.\n\t */\n\tpublic async addEntry(\n\t\tentry: ZipperEntry,\n\t\tdata: Readonly<Uint8Array> | null = null\n\t) {\n\t\tconst {_offset} = this;\n\t\tconst {sizeCompressed} = entry;\n\t\tif (data) {\n\t\t\tif (data.length !== sizeCompressed) {\n\t\t\t\tthrow new Error('Data length and compressed size must match');\n\t\t\t}\n\t\t} else if (sizeCompressed) {\n\t\t\tthrow new Error('Data required when compressed size not zero');\n\t\t}\n\t\tentry.headerOffsetLocal = _offset;\n\t\tthis.entries.push(entry);\n\t\tawait this._writeOutput(entry.encodeLocal());\n\t\tif (data) {\n\t\t\tawait this._writeOutput(data);\n\t\t}\n\t}\n\n\t/**\n\t * Close stream.\n\t */\n\tpublic async close() {\n\t\tconst {_offset, entries, comment} = this;\n\t\tlet size = 0;\n\t\tfor (const e of entries) {\n\t\t\tconst d = e.encodeCentral();\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tawait this._writeOutput(d);\n\t\t\tsize += d.length;\n\t\t}\n\n\t\tconst d = new Uint8Array(22 + comment.length);\n\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\tlet i = 0;\n\n\t\tv.setUint32(i, this.signature, true);\n\t\ti += 4;\n\t\tv.setUint16(i, 0, true);\n\t\ti += 2;\n\t\tv.setUint16(i, 0, true);\n\t\ti += 2;\n\t\tv.setUint16(i, entries.length, true);\n\t\ti += 2;\n\t\tv.setUint16(i, entries.length, true);\n\t\ti += 2;\n\t\tv.setUint32(i, size, true);\n\t\ti += 4;\n\t\tv.setUint32(i, _offset, true);\n\t\ti += 4;\n\t\tv.setUint16(i, comment.length, true);\n\t\ti += 2;\n\t\td.set(comment, i);\n\n\t\tawait this._writeOutput(d);\n\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tthis._output.end((err: Error) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Write data buffer to output stream.\n\t *\n\t * @param data Output data.\n\t */\n\tprotected async _writeOutput(data: Readonly<Uint8Array>) {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tthis._output.write(data, err => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t\tthis._offset += data.length;\n\t}\n}\n"],"mappings":"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","ignoreList":[]}