{"version":3,"file":"zip.mjs","names":["yauzl","Archive","Entry","PathType","modeToPathType","streamToBuffer","yauzlEntryRead","zipfile","entry","uncompressedSize","Promise","resolve","reject","openReadStream","err","stream","yauzlEntryReadSymlink","Buffer","alloc","EntryZip","uid","gid","uname","gname","atime","_readRsrc","constructor","info","archive","size","sizeComp","mtime","crc32","compressionMethod","isCompressed","isEncrypted","versionMadeBy","versionNeededToExtract","comment","generalPurposeBitFlag","internalFileAttributes","externalFileAttributes","extraFields","ArchiveZip","FILE_EXTENSIONS","path","read","itter","_read","Static","open","lazyEntries","each","yentry","compressedSize","fileName","type","efaOrPathToPathType","isMacResource","pathIsMacResource","mode","efaToUnixMode","lastModDate","getLastModDate","readData","FILE","readSymlink","SYMLINK","pathRaw","ret","trigger","error","next","close","readEntry","on","then","done","catch","efaToUnix","attrs","test","DIRECTORY"],"sources":["../../src/archive/zip.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {Readable} from 'node:stream';\n\nimport yauzl from 'yauzl';\n\nimport {Archive, Entry, IEntryInfo} from '../archive.ts';\nimport {PathType} from '../types.ts';\nimport {modeToPathType, streamToBuffer} from '../util.ts';\n\n/**\n * Read entry.\n *\n * @param zipfile Zipfile.\n * @param entry Entry.\n * @returns Readable stream.\n */\nconst yauzlEntryRead = async (zipfile: yauzl.ZipFile, entry: yauzl.Entry) => {\n\t// If the entry is empty, just return an empty stream.\n\tif (!entry.uncompressedSize) {\n\t\treturn null;\n\t}\n\n\treturn new Promise<Readable>((resolve, reject) => {\n\t\tzipfile.openReadStream(entry, (err, stream) => {\n\t\t\tif (err) {\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve(stream);\n\t\t});\n\t});\n};\n\n/**\n * Read entry as symlink.\n *\n * @param zipfile Zipfile.\n * @param entry Entry.\n * @returns Buffer.\n */\nconst yauzlEntryReadSymlink = async (\n\tzipfile: yauzl.ZipFile,\n\tentry: yauzl.Entry\n) => {\n\tconst stream = await yauzlEntryRead(zipfile, entry);\n\treturn stream ? streamToBuffer(stream) : Buffer.alloc(0);\n};\n\nexport interface IZipEntryExtraField {\n\t/**\n\t * Field ID.\n\t */\n\tid: number;\n\n\t/**\n\t * Field data.\n\t */\n\tdata: Buffer;\n}\n\nexport interface IEntryInfoZip extends IEntryInfo {\n\t/**\n\t * @inheritdoc\n\t */\n\tarchive: ArchiveZip;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tsize: number;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tsizeComp: number;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tuid?: null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tgid?: null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tuname?: null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tgname?: null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tatime?: null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tmtime: Date;\n\n\t/**\n\t * Entry CRC32.\n\t */\n\tcrc32: number;\n\n\t/**\n\t * Entry compression method.\n\t */\n\tcompressionMethod: number;\n\n\t/**\n\t * Entry is compressed flag.\n\t */\n\tisCompressed: boolean;\n\n\t/**\n\t * Entry is encrypted flag.\n\t */\n\tisEncrypted: boolean;\n\n\t/**\n\t * Entry version made by.\n\t */\n\tversionMadeBy: number;\n\n\t/**\n\t * Entry version needed to extract.\n\t */\n\tversionNeededToExtract: number;\n\n\t/**\n\t * Entry general purpose bit flags.\n\t */\n\tgeneralPurposeBitFlag: number;\n\n\t/**\n\t * Entry internal file attributes.\n\t */\n\tinternalFileAttributes: number;\n\n\t/**\n\t * Entry external file attributes.\n\t */\n\texternalFileAttributes: number;\n\n\t/**\n\t * Entry comment.\n\t */\n\tcomment: string;\n\n\t/**\n\t * Entry extra fields.\n\t */\n\textraFields: IZipEntryExtraField[];\n\n\t/**\n\t * @inheritdoc\n\t */\n\treadRsrc?: null;\n}\n\n/**\n * EntryZip object.\n */\nexport class EntryZip extends Entry {\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly archive: ArchiveZip;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly size: number;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly sizeComp: number;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly uid: null = null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly gid: null = null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly uname: null = null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly gname: null = null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly atime: null = null;\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly mtime: Date;\n\n\t/**\n\t * Entry CRC32.\n\t */\n\tpublic readonly crc32: number;\n\n\t/**\n\t * Entry compression method.\n\t */\n\tpublic readonly compressionMethod: number;\n\n\t/**\n\t * Entry is compressed flag.\n\t */\n\tpublic readonly isCompressed: boolean;\n\n\t/**\n\t * Entry is encrypted flag.\n\t */\n\tpublic readonly isEncrypted: boolean;\n\n\t/**\n\t * Entry version made by.\n\t */\n\tpublic readonly versionMadeBy: number;\n\n\t/**\n\t * Entry version needed to extract.\n\t */\n\tpublic readonly versionNeededToExtract: number;\n\n\t/**\n\t * Entry general purpose bit flags.\n\t */\n\tpublic readonly generalPurposeBitFlag: number;\n\n\t/**\n\t * Entry internal file attributes.\n\t */\n\tpublic readonly internalFileAttributes: number;\n\n\t/**\n\t * Entry external file attributes.\n\t */\n\tpublic readonly externalFileAttributes: number;\n\n\t/**\n\t * Entry comment.\n\t */\n\tpublic readonly comment: string;\n\n\t/**\n\t * Entry extra fields.\n\t */\n\tpublic readonly extraFields: IZipEntryExtraField[];\n\n\t/**\n\t * @inheritdoc\n\t */\n\tprotected readonly _readRsrc: null = null;\n\n\t/**\n\t * EntryZip constructor.\n\t *\n\t * @param info Info object.\n\t */\n\tconstructor(info: Readonly<IEntryInfoZip>) {\n\t\tsuper(info);\n\n\t\tthis.archive = info.archive;\n\t\tthis.size = info.size;\n\t\tthis.sizeComp = info.sizeComp;\n\t\tthis.mtime = info.mtime;\n\t\tthis.crc32 = info.crc32;\n\t\tthis.compressionMethod = info.compressionMethod;\n\t\tthis.isCompressed = info.isCompressed;\n\t\tthis.isEncrypted = info.isEncrypted;\n\t\tthis.versionMadeBy = info.versionMadeBy;\n\t\tthis.versionNeededToExtract = info.versionNeededToExtract;\n\t\tthis.comment = info.comment;\n\t\tthis.generalPurposeBitFlag = info.generalPurposeBitFlag;\n\t\tthis.internalFileAttributes = info.internalFileAttributes;\n\t\tthis.externalFileAttributes = info.externalFileAttributes;\n\t\tthis.extraFields = info.extraFields;\n\t}\n}\n\n/**\n * ArchiveZip object.\n */\nexport class ArchiveZip extends Archive {\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic static readonly FILE_EXTENSIONS: readonly string[] | null = ['.zip'];\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic readonly Entry = EntryZip;\n\n\t/**\n\t * ArchiveZip constructor.\n\t *\n\t * @param path File path.\n\t */\n\tconstructor(path: string) {\n\t\tsuper(path);\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\tpublic async read(itter: (entry: EntryZip) => Promise<unknown>) {\n\t\tawait super.read(itter as Parameters<Archive['read']>[0]);\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\tprotected async _read(itter: (entry: EntryZip) => Promise<unknown>) {\n\t\tconst Static = this.constructor as typeof ArchiveZip;\n\n\t\tconst zipfile = await new Promise<yauzl.ZipFile>((resolve, reject) => {\n\t\t\tyauzl.open(this.path, {lazyEntries: true}, (err, zipfile) => {\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(zipfile);\n\t\t\t});\n\t\t});\n\n\t\t/**\n\t\t * Each itterator.\n\t\t *\n\t\t * @param yentry Entry.\n\t\t * @returns Recursion hint.\n\t\t */\n\t\tconst each = async (yentry: yauzl.Entry) => {\n\t\t\tconst {\n\t\t\t\tcomment,\n\t\t\t\tcompressedSize,\n\t\t\t\tcompressionMethod,\n\t\t\t\tcrc32,\n\t\t\t\texternalFileAttributes,\n\t\t\t\textraFields,\n\t\t\t\tfileName,\n\t\t\t\tgeneralPurposeBitFlag,\n\t\t\t\tinternalFileAttributes,\n\t\t\t\tuncompressedSize,\n\t\t\t\tversionMadeBy,\n\t\t\t\tversionNeededToExtract\n\t\t\t} = yentry;\n\n\t\t\tconst type = Static.efaOrPathToPathType(\n\t\t\t\texternalFileAttributes,\n\t\t\t\tfileName\n\t\t\t);\n\t\t\tif (type === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Mac resource fork paths currently unsupported, so skip.\n\t\t\t// The actual file format is unknown.\n\t\t\tconst isMacResource = Static.pathIsMacResource(fileName);\n\t\t\tif (isMacResource) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst mode = Static.efaToUnixMode(externalFileAttributes);\n\t\t\tconst lastModDate = yentry.getLastModDate();\n\t\t\tconst isCompressed = yentry.isCompressed();\n\t\t\tconst isEncrypted = yentry.isEncrypted();\n\n\t\t\tconst readData =\n\t\t\t\ttype === PathType.FILE\n\t\t\t\t\t? async () => yauzlEntryRead(zipfile, yentry)\n\t\t\t\t\t: null;\n\n\t\t\tconst readSymlink =\n\t\t\t\ttype === PathType.SYMLINK\n\t\t\t\t\t? async () => yauzlEntryReadSymlink(zipfile, yentry)\n\t\t\t\t\t: null;\n\n\t\t\tconst entry = new this.Entry({\n\t\t\t\tarchive: this,\n\t\t\t\ttype,\n\t\t\t\tpathRaw: fileName,\n\t\t\t\tsize: uncompressedSize,\n\t\t\t\tsizeComp: compressedSize,\n\t\t\t\tmode,\n\t\t\t\tmtime: lastModDate,\n\t\t\t\tcrc32,\n\t\t\t\tcompressionMethod,\n\t\t\t\tisCompressed,\n\t\t\t\tisEncrypted,\n\t\t\t\tversionMadeBy,\n\t\t\t\tversionNeededToExtract,\n\t\t\t\tgeneralPurposeBitFlag,\n\t\t\t\tinternalFileAttributes,\n\t\t\t\texternalFileAttributes,\n\t\t\t\tcomment,\n\t\t\t\textraFields,\n\t\t\t\treadData,\n\t\t\t\treadSymlink\n\t\t\t});\n\t\t\tconst ret = await entry.trigger(itter);\n\t\t\treturn ret === false;\n\t\t};\n\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tlet error: Error | null = null;\n\n\t\t\t/**\n\t\t\t * Next callback.\n\t\t\t *\n\t\t\t * @param err Error object or null.\n\t\t\t */\n\t\t\tconst next = (err: Error | null) => {\n\t\t\t\tif (err) {\n\t\t\t\t\terror = err;\n\t\t\t\t\tzipfile.close();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tzipfile.readEntry();\n\t\t\t};\n\t\t\tzipfile.on('error', next);\n\t\t\tzipfile.on('entry', (entry: yauzl.Entry) => {\n\t\t\t\teach(entry)\n\t\t\t\t\t.then(done => {\n\t\t\t\t\t\tif (!done) {\n\t\t\t\t\t\t\tnext(null);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tzipfile.close();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(next);\n\t\t\t});\n\t\t\tzipfile.on('close', () => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve();\n\t\t\t});\n\t\t\tnext(null);\n\t\t});\n\t}\n\n\t/**\n\t * Get Unix bits from the ZIP file external file attributes.\n\t *\n\t * @param attrs Attributes value.\n\t * @returns Unix bits or null.\n\t */\n\tpublic static efaToUnix(attrs: number) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\treturn attrs >>> 16;\n\t}\n\n\t/**\n\t * Get stat mode value from ZIP file external file attributes, if present.\n\t *\n\t * @param attrs Attributes value.\n\t * @returns Stat mode or null.\n\t */\n\tpublic static efaToUnixMode(attrs: number) {\n\t\tconst mode = this.efaToUnix(attrs);\n\n\t\t// Check if type bits are present, else no Unix info.\n\t\t// eslint-disable-next-line no-bitwise\n\t\treturn (mode >> 12) & 0b1111 ? mode : null;\n\t}\n\n\t/**\n\t * Get path type from attributes and path value from ZIP file entry.\n\t *\n\t * @param attrs Attributes value.\n\t * @param path Entry path.\n\t * @returns Path type.\n\t */\n\tpublic static efaOrPathToPathType(attrs: number, path: string) {\n\t\t// Check for Unix stat type information.\n\t\tconst mode = this.efaToUnixMode(attrs);\n\t\tif (!mode) {\n\t\t\t// No Unix type information, assume Windows info only.\n\t\t\t// Only file or directory, with directory having a trailing slash.\n\t\t\treturn /[/\\\\]$/.test(path) ? PathType.DIRECTORY : PathType.FILE;\n\t\t}\n\t\treturn modeToPathType(mode);\n\t}\n\n\t/**\n\t * Check if path is a Mac resource fork related path.\n\t *\n\t * @param path Zip path.\n\t * @returns Boolean value.\n\t */\n\tpublic static pathIsMacResource(path: string) {\n\t\treturn /^__MACOSX(\\\\|\\/|$)/.test(path);\n\t}\n}\n"],"mappings":"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","ignoreList":[]}