UNPKG

33.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"zipper.js","names":["_nodeZlib","require","_iconEncoder","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","local","flags","times","forEach","i","push","Math","round","getTime","time","setUint32","exports","ZipperEntry","signatureLocal","signatureCentral","extractVersion","extractHostOS","createVersion","createHostOS","compression","date","crc32","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","deflateRaw","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 * 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\t[mtime, atime, ctime].forEach((v, i) => {\n\t\t\tif (v === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\tflags |= 1 << i;\n\t\t\tif (local || i) {\n\t\t\t\ttimes.push(\n\t\t\t\t\ttypeof v === 'number' ? v : Math.round(v.getTime() / 1000)\n\t\t\t\t);\n\t\t\t}\n\t\t});\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 = new Uint8Array(0);\n\n\t/**\n\t * Entry comment.\n\t */\n\tpublic comment = 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 = 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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"}
\No newline at end of file