7z-iterator 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/FileEntry.js +1 -1
- package/dist/cjs/FileEntry.js.map +1 -1
- package/dist/cjs/SevenZipIterator.js +1 -1
- package/dist/cjs/SevenZipIterator.js.map +1 -1
- package/dist/cjs/compat.js +1 -1
- package/dist/cjs/compat.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/lib/Lock.js +1 -1
- package/dist/cjs/lib/streamToSource.js +1 -1
- package/dist/cjs/lib/streamToSource.js.map +1 -1
- package/dist/cjs/nextEntry.js +1 -1
- package/dist/cjs/nextEntry.js.map +1 -1
- package/dist/cjs/sevenz/NumberCodec.js +1 -1
- package/dist/cjs/sevenz/NumberCodec.js.map +1 -1
- package/dist/cjs/sevenz/SevenZipParser.js +1 -1
- package/dist/cjs/sevenz/SevenZipParser.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Aes.js +1 -1
- package/dist/cjs/sevenz/codecs/Aes.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BZip2.js +1 -1
- package/dist/cjs/sevenz/codecs/Bcj.js +2 -2
- package/dist/cjs/sevenz/codecs/Bcj.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Bcj2.js +1 -1
- package/dist/cjs/sevenz/codecs/Bcj2.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjArm.js +1 -1
- package/dist/cjs/sevenz/codecs/BcjArm.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjArm64.js +1 -1
- package/dist/cjs/sevenz/codecs/BcjArm64.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjArmt.js +1 -1
- package/dist/cjs/sevenz/codecs/BcjArmt.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjIa64.js +1 -1
- package/dist/cjs/sevenz/codecs/BcjIa64.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjPpc.js +1 -1
- package/dist/cjs/sevenz/codecs/BcjPpc.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjSparc.js +1 -1
- package/dist/cjs/sevenz/codecs/BcjSparc.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Copy.js +1 -1
- package/dist/cjs/sevenz/codecs/Deflate.js +1 -1
- package/dist/cjs/sevenz/codecs/Delta.js +1 -1
- package/dist/cjs/sevenz/codecs/Delta.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Lzma.js +1 -1
- package/dist/cjs/sevenz/codecs/Lzma.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Lzma2.js +1 -1
- package/dist/cjs/sevenz/codecs/Lzma2.js.map +1 -1
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.js +1 -1
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.js.map +1 -1
- package/dist/cjs/sevenz/codecs/index.js +1 -1
- package/dist/cjs/sevenz/codecs/index.js.map +1 -1
- package/dist/cjs/sevenz/codecs/lzmaCompat.d.cts +1 -1
- package/dist/cjs/sevenz/codecs/lzmaCompat.d.ts +1 -1
- package/dist/cjs/sevenz/codecs/lzmaCompat.js +1 -1
- package/dist/cjs/sevenz/codecs/lzmaCompat.js.map +1 -1
- package/dist/cjs/sevenz/codecs/streams.js +1 -1
- package/dist/cjs/sevenz/codecs/streams.js.map +1 -1
- package/dist/cjs/sevenz/constants.d.cts +8 -8
- package/dist/cjs/sevenz/constants.d.ts +8 -8
- package/dist/cjs/sevenz/constants.js +1 -1
- package/dist/cjs/sevenz/constants.js.map +1 -1
- package/dist/cjs/sevenz/headers.js +2 -2
- package/dist/cjs/sevenz/headers.js.map +1 -1
- package/dist/cjs/sevenz/index.js +1 -1
- package/dist/cjs/types.js +1 -1
- package/dist/esm/FileEntry.js +1 -1
- package/dist/esm/FileEntry.js.map +1 -1
- package/dist/esm/SevenZipIterator.js +6 -6
- package/dist/esm/SevenZipIterator.js.map +1 -1
- package/dist/esm/compat.js +2 -2
- package/dist/esm/compat.js.map +1 -1
- package/dist/esm/lib/streamToSource.js +12 -12
- package/dist/esm/lib/streamToSource.js.map +1 -1
- package/dist/esm/nextEntry.js +11 -11
- package/dist/esm/nextEntry.js.map +1 -1
- package/dist/esm/sevenz/NumberCodec.js +19 -19
- package/dist/esm/sevenz/NumberCodec.js.map +1 -1
- package/dist/esm/sevenz/SevenZipParser.js +191 -191
- package/dist/esm/sevenz/SevenZipParser.js.map +1 -1
- package/dist/esm/sevenz/codecs/Aes.js +29 -29
- package/dist/esm/sevenz/codecs/Aes.js.map +1 -1
- package/dist/esm/sevenz/codecs/Bcj.js +8 -8
- package/dist/esm/sevenz/codecs/Bcj.js.map +1 -1
- package/dist/esm/sevenz/codecs/Bcj2.js +35 -35
- package/dist/esm/sevenz/codecs/Bcj2.js.map +1 -1
- package/dist/esm/sevenz/codecs/BcjArm.js +4 -4
- package/dist/esm/sevenz/codecs/BcjArm.js.map +1 -1
- package/dist/esm/sevenz/codecs/BcjArm64.js +5 -5
- package/dist/esm/sevenz/codecs/BcjArm64.js.map +1 -1
- package/dist/esm/sevenz/codecs/BcjArmt.js +10 -10
- package/dist/esm/sevenz/codecs/BcjArmt.js.map +1 -1
- package/dist/esm/sevenz/codecs/BcjIa64.js +24 -24
- package/dist/esm/sevenz/codecs/BcjIa64.js.map +1 -1
- package/dist/esm/sevenz/codecs/BcjPpc.js +5 -5
- package/dist/esm/sevenz/codecs/BcjPpc.js.map +1 -1
- package/dist/esm/sevenz/codecs/BcjSparc.js +8 -8
- package/dist/esm/sevenz/codecs/BcjSparc.js.map +1 -1
- package/dist/esm/sevenz/codecs/Delta.js +6 -6
- package/dist/esm/sevenz/codecs/Delta.js.map +1 -1
- package/dist/esm/sevenz/codecs/Lzma.js +16 -16
- package/dist/esm/sevenz/codecs/Lzma.js.map +1 -1
- package/dist/esm/sevenz/codecs/Lzma2.js +35 -35
- package/dist/esm/sevenz/codecs/Lzma2.js.map +1 -1
- package/dist/esm/sevenz/codecs/createBufferingDecoder.js +3 -3
- package/dist/esm/sevenz/codecs/createBufferingDecoder.js.map +1 -1
- package/dist/esm/sevenz/codecs/index.js +6 -6
- package/dist/esm/sevenz/codecs/index.js.map +1 -1
- package/dist/esm/sevenz/codecs/lzmaCompat.d.ts +1 -1
- package/dist/esm/sevenz/codecs/lzmaCompat.js +5 -5
- package/dist/esm/sevenz/codecs/lzmaCompat.js.map +1 -1
- package/dist/esm/sevenz/codecs/streams.js +13 -13
- package/dist/esm/sevenz/codecs/streams.js.map +1 -1
- package/dist/esm/sevenz/constants.d.ts +8 -8
- package/dist/esm/sevenz/constants.js +9 -9
- package/dist/esm/sevenz/constants.js.map +1 -1
- package/dist/esm/sevenz/headers.js +134 -134
- package/dist/esm/sevenz/headers.js.map +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/headers.ts"],"sourcesContent":["// 7z header parsing\n// Reference: https://py7zr.readthedocs.io/en/latest/archive_format.html\n\nimport { bufferEquals, readUInt64LE, verifyCrc32Region } from 'extract-base-iterator';\nimport { createCodedError, ErrorCode, PropertyId, SEVENZ_MAGIC } from './constants.ts';\nimport { readDefinedVector, readNumber } from './NumberCodec.ts';\n\n// Type definitions\nexport interface SignatureHeader {\n majorVersion: number;\n minorVersion: number;\n startHeaderCRC: number;\n nextHeaderOffset: number;\n nextHeaderSize: number;\n nextHeaderCRC: number;\n}\n\nexport interface Coder {\n id: number[]; // Codec ID bytes\n numInStreams: number; // Number of input streams\n numOutStreams: number; // Number of output streams\n properties?: Buffer; // Optional codec properties\n}\n\nexport interface Folder {\n coders: Coder[];\n bindPairs: { inIndex: number; outIndex: number }[];\n packedStreams: number[]; // Indices of packed streams\n unpackSizes: number[]; // Unpack size for each coder output\n unpackCRC?: number; // CRC of final unpacked data\n hasCRC: boolean;\n}\n\nexport interface StreamsInfo {\n packPos: number; // Position of packed data (relative to end of signature header)\n packSizes: number[]; // Sizes of packed streams\n packCRCs?: number[]; // Optional CRCs for packed streams\n folders: Folder[]; // Decompression info\n numUnpackStreamsPerFolder: number[]; // Number of files in each folder (for solid archives)\n unpackSizes: number[]; // Size of each unpacked file\n unpackCRCs?: number[]; // Optional CRCs for unpacked files\n}\n\nexport interface FileInfo {\n name: string;\n size: number;\n isDirectory: boolean;\n isAntiFile: boolean; // \"Anti\" items mark files to delete in delta archives\n hasStream: boolean; // False for empty files/directories\n crc?: number;\n ctime?: Date;\n atime?: Date;\n mtime?: Date;\n attributes?: number;\n}\n\nexport interface ArchiveHeader {\n signature: SignatureHeader;\n streamsInfo?: StreamsInfo;\n filesInfo: FileInfo[];\n}\n\n/**\n * Parse the signature header (first 32 bytes)\n */\nexport function parseSignatureHeader(buf: Buffer): SignatureHeader {\n // Verify magic bytes\n if (!bufferEquals(buf, 0, SEVENZ_MAGIC)) {\n throw createCodedError('Not a valid 7z archive', ErrorCode.INVALID_SIGNATURE);\n }\n\n // Read version\n var majorVersion = buf[6];\n var minorVersion = buf[7];\n\n // Version check - we support 0.x (current is 0.4)\n if (majorVersion > 0) {\n throw createCodedError(`Unsupported 7z version: ${majorVersion}.${minorVersion}`, ErrorCode.UNSUPPORTED_VERSION);\n }\n\n // Read start header CRC (CRC of the next 20 bytes)\n var startHeaderCRC = buf.readUInt32LE(8);\n\n // Verify start header CRC\n if (!verifyCrc32Region(buf, 12, 20, startHeaderCRC)) {\n throw createCodedError('Start header CRC mismatch', ErrorCode.CRC_MISMATCH);\n }\n\n // Read next header location\n var nextHeaderOffset = readUInt64LE(buf, 12);\n var nextHeaderSize = readUInt64LE(buf, 20);\n var nextHeaderCRC = buf.readUInt32LE(28);\n\n return {\n majorVersion: majorVersion,\n minorVersion: minorVersion,\n startHeaderCRC: startHeaderCRC,\n nextHeaderOffset: nextHeaderOffset,\n nextHeaderSize: nextHeaderSize,\n nextHeaderCRC: nextHeaderCRC,\n };\n}\n\n/**\n * Parse the encoded header (metadata block at end of archive)\n */\nexport function parseEncodedHeader(buf: Buffer, expectedCRC: number): { streamsInfo?: StreamsInfo; filesInfo: FileInfo[] } {\n // Verify CRC\n if (!verifyCrc32Region(buf, 0, buf.length, expectedCRC)) {\n throw createCodedError('Encoded header CRC mismatch', ErrorCode.CRC_MISMATCH);\n }\n\n var offset = 0;\n\n // Read property ID\n var propertyId = buf[offset++];\n\n // Handle kEncodedHeader - means the header itself is compressed\n if (propertyId === PropertyId.kEncodedHeader) {\n // Return indicator that we need to decompress\n throw createCodedError('Compressed header - needs decompression first', ErrorCode.COMPRESSED_HEADER);\n }\n\n // Should be kHeader\n if (propertyId !== PropertyId.kHeader) {\n throw createCodedError(`Expected kHeader, got ${propertyId}`, ErrorCode.CORRUPT_HEADER);\n }\n\n // Parse header contents (after kHeader byte)\n return parseHeaderContent(buf, offset);\n}\n\n/**\n * Parse header content (after kHeader byte has been read)\n * Used by parseEncodedHeader and for decompressed headers\n */\nexport function parseHeaderContent(buf: Buffer, offset: number): { streamsInfo?: StreamsInfo; filesInfo: FileInfo[] } {\n var result: { streamsInfo?: StreamsInfo; filesInfo: FileInfo[] } = {\n filesInfo: [],\n };\n\n // Parse header contents\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n switch (propertyId) {\n case PropertyId.kArchiveProperties:\n offset = skipArchiveProperties(buf, offset);\n break;\n case PropertyId.kAdditionalStreamsInfo:\n // Additional streams - skip for now\n offset = skipStreamsInfo(buf, offset);\n break;\n case PropertyId.kMainStreamsInfo: {\n var streamsResult = parseStreamsInfo(buf, offset);\n result.streamsInfo = streamsResult.info;\n offset = streamsResult.offset;\n break;\n }\n case PropertyId.kFilesInfo: {\n var filesResult = parseFilesInfo(buf, offset);\n result.filesInfo = filesResult.files;\n offset = filesResult.offset;\n break;\n }\n default:\n throw createCodedError(`Unknown property ID in header: ${propertyId}`, ErrorCode.CORRUPT_HEADER);\n }\n }\n\n return result;\n}\n\n/**\n * Parse StreamsInfo block\n */\nfunction parseStreamsInfo(buf: Buffer, offset: number): { info: StreamsInfo; offset: number } {\n var info: StreamsInfo = {\n packPos: 0,\n packSizes: [],\n folders: [],\n numUnpackStreamsPerFolder: [],\n unpackSizes: [],\n };\n\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n switch (propertyId) {\n case PropertyId.kPackInfo: {\n var packResult = parsePackInfo(buf, offset);\n info.packPos = packResult.packPos;\n info.packSizes = packResult.packSizes;\n info.packCRCs = packResult.packCRCs;\n offset = packResult.offset;\n break;\n }\n case PropertyId.kUnpackInfo: {\n var unpackResult = parseUnpackInfo(buf, offset);\n info.folders = unpackResult.folders;\n offset = unpackResult.offset;\n break;\n }\n case PropertyId.kSubStreamsInfo: {\n var subResult = parseSubStreamsInfo(buf, offset, info.folders);\n info.numUnpackStreamsPerFolder = subResult.numUnpackStreamsPerFolder;\n info.unpackSizes = subResult.unpackSizes;\n info.unpackCRCs = subResult.unpackCRCs;\n offset = subResult.offset;\n break;\n }\n default:\n throw createCodedError(`Unknown property ID in StreamsInfo: ${propertyId}`, ErrorCode.CORRUPT_HEADER);\n }\n }\n\n // If no SubStreamsInfo, each folder produces one file\n if (info.unpackSizes.length === 0 && info.folders.length > 0) {\n for (var i = 0; i < info.folders.length; i++) {\n var folder = info.folders[i];\n // Get the final unpack size (last coder's output)\n var finalSize = folder.unpackSizes[folder.unpackSizes.length - 1];\n info.unpackSizes.push(finalSize);\n info.numUnpackStreamsPerFolder.push(1);\n }\n }\n\n return { info: info, offset: offset };\n}\n\n/**\n * Parse PackInfo block\n */\nfunction parsePackInfo(buf: Buffer, offset: number): { packPos: number; packSizes: number[]; packCRCs?: number[]; offset: number } {\n // Pack position\n var packPosResult = readNumber(buf, offset);\n var packPos = packPosResult.value;\n offset += packPosResult.bytesRead;\n\n // Number of pack streams\n var numPackResult = readNumber(buf, offset);\n var numPackStreams = numPackResult.value;\n offset += numPackResult.bytesRead;\n\n var packSizes: number[] = [];\n var packCRCs: number[] | undefined;\n\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n if (propertyId === PropertyId.kSize) {\n for (var i = 0; i < numPackStreams; i++) {\n var sizeResult = readNumber(buf, offset);\n packSizes.push(sizeResult.value);\n offset += sizeResult.bytesRead;\n }\n } else if (propertyId === PropertyId.kCRC) {\n packCRCs = [];\n var definedResult = readDefinedVector(buf, offset, numPackStreams);\n offset += definedResult.bytesRead;\n for (var j = 0; j < numPackStreams; j++) {\n if (definedResult.defined[j]) {\n packCRCs.push(buf.readUInt32LE(offset));\n offset += 4;\n } else {\n packCRCs.push(0);\n }\n }\n }\n }\n\n return { packPos: packPos, packSizes: packSizes, packCRCs: packCRCs, offset: offset };\n}\n\n/**\n * Parse UnpackInfo block\n */\nfunction parseUnpackInfo(buf: Buffer, offset: number): { folders: Folder[]; offset: number } {\n var folders: Folder[] = [];\n\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n if (propertyId === PropertyId.kFolder) {\n // Number of folders\n var numFoldersResult = readNumber(buf, offset);\n var numFolders = numFoldersResult.value;\n offset += numFoldersResult.bytesRead;\n\n // External flag\n var external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External folders not supported', ErrorCode.CORRUPT_HEADER);\n }\n\n // Parse each folder\n for (var i = 0; i < numFolders; i++) {\n var folderResult = parseFolder(buf, offset);\n folders.push(folderResult.folder);\n offset = folderResult.offset;\n }\n } else if (propertyId === PropertyId.kCodersUnpackSize) {\n // Unpack sizes for each coder output\n for (var j = 0; j < folders.length; j++) {\n var folder = folders[j];\n folder.unpackSizes = [];\n // One unpack size per coder output stream\n var numOutputs = 0;\n for (var k = 0; k < folder.coders.length; k++) {\n numOutputs += folder.coders[k].numOutStreams;\n }\n for (var l = 0; l < numOutputs; l++) {\n var sizeResult = readNumber(buf, offset);\n folder.unpackSizes.push(sizeResult.value);\n offset += sizeResult.bytesRead;\n }\n }\n } else if (propertyId === PropertyId.kCRC) {\n // CRCs for folders\n var definedResult = readDefinedVector(buf, offset, folders.length);\n offset += definedResult.bytesRead;\n for (var m = 0; m < folders.length; m++) {\n folders[m].hasCRC = definedResult.defined[m];\n if (definedResult.defined[m]) {\n folders[m].unpackCRC = buf.readUInt32LE(offset);\n offset += 4;\n }\n }\n }\n }\n\n return { folders: folders, offset: offset };\n}\n\n/**\n * Parse a single Folder structure\n */\nfunction parseFolder(buf: Buffer, offset: number): { folder: Folder; offset: number } {\n // Number of coders\n var numCodersResult = readNumber(buf, offset);\n var numCoders = numCodersResult.value;\n offset += numCodersResult.bytesRead;\n\n var coders: Coder[] = [];\n var numInStreamsTotal = 0;\n var numOutStreamsTotal = 0;\n\n for (var i = 0; i < numCoders; i++) {\n var flags = buf[offset++];\n var idSize = flags & 0x0f;\n var isComplex = (flags & 0x10) !== 0;\n var hasAttributes = (flags & 0x20) !== 0;\n\n // Read codec ID\n var id: number[] = [];\n for (var j = 0; j < idSize; j++) {\n id.push(buf[offset++]);\n }\n\n var numInStreams = 1;\n var numOutStreams = 1;\n\n if (isComplex) {\n var inResult = readNumber(buf, offset);\n numInStreams = inResult.value;\n offset += inResult.bytesRead;\n\n var outResult = readNumber(buf, offset);\n numOutStreams = outResult.value;\n offset += outResult.bytesRead;\n }\n\n var properties: Buffer | undefined;\n if (hasAttributes) {\n var propsLenResult = readNumber(buf, offset);\n offset += propsLenResult.bytesRead;\n properties = buf.slice(offset, offset + propsLenResult.value);\n offset += propsLenResult.value;\n }\n\n coders.push({\n id: id,\n numInStreams: numInStreams,\n numOutStreams: numOutStreams,\n properties: properties,\n });\n\n numInStreamsTotal += numInStreams;\n numOutStreamsTotal += numOutStreams;\n }\n\n // Bind pairs\n var numBindPairs = numOutStreamsTotal - 1;\n var bindPairs: { inIndex: number; outIndex: number }[] = [];\n\n for (var k = 0; k < numBindPairs; k++) {\n var inIndexResult = readNumber(buf, offset);\n offset += inIndexResult.bytesRead;\n\n var outIndexResult = readNumber(buf, offset);\n offset += outIndexResult.bytesRead;\n\n bindPairs.push({\n inIndex: inIndexResult.value,\n outIndex: outIndexResult.value,\n });\n }\n\n // Packed stream indices\n var numPackedStreams = numInStreamsTotal - numBindPairs;\n var packedStreams: number[] = [];\n\n if (numPackedStreams === 1) {\n // Find the unbound input stream\n for (var m = 0; m < numInStreamsTotal; m++) {\n var isBound = false;\n for (var n = 0; n < bindPairs.length; n++) {\n if (bindPairs[n].inIndex === m) {\n isBound = true;\n break;\n }\n }\n if (!isBound) {\n packedStreams.push(m);\n break;\n }\n }\n } else {\n for (var p = 0; p < numPackedStreams; p++) {\n var indexResult = readNumber(buf, offset);\n packedStreams.push(indexResult.value);\n offset += indexResult.bytesRead;\n }\n }\n\n return {\n folder: {\n coders: coders,\n bindPairs: bindPairs,\n packedStreams: packedStreams,\n unpackSizes: [],\n hasCRC: false,\n },\n offset: offset,\n };\n}\n\n/**\n * Parse SubStreamsInfo block\n */\nfunction parseSubStreamsInfo(buf: Buffer, offset: number, folders: Folder[]): { numUnpackStreamsPerFolder: number[]; unpackSizes: number[]; unpackCRCs?: number[]; offset: number } {\n var numUnpackStreamsPerFolder: number[] = [];\n var unpackSizes: number[] = [];\n var unpackCRCs: number[] | undefined;\n\n // Default: 1 file per folder\n for (var i = 0; i < folders.length; i++) {\n numUnpackStreamsPerFolder.push(1);\n }\n\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n if (propertyId === PropertyId.kNumUnpackStream) {\n for (var j = 0; j < folders.length; j++) {\n var numResult = readNumber(buf, offset);\n numUnpackStreamsPerFolder[j] = numResult.value;\n offset += numResult.bytesRead;\n }\n } else if (propertyId === PropertyId.kSize) {\n for (var k = 0; k < folders.length; k++) {\n var numStreams = numUnpackStreamsPerFolder[k];\n if (numStreams === 0) continue;\n\n // Read sizes for all but last stream in folder (last is calculated)\n var remaining = folders[k].unpackSizes[folders[k].unpackSizes.length - 1];\n for (var l = 0; l < numStreams - 1; l++) {\n var sizeResult = readNumber(buf, offset);\n unpackSizes.push(sizeResult.value);\n remaining -= sizeResult.value;\n offset += sizeResult.bytesRead;\n }\n // Last stream size is remainder\n unpackSizes.push(remaining);\n }\n } else if (propertyId === PropertyId.kCRC) {\n // Count files that need CRC\n var numFiles = 0;\n for (var m = 0; m < folders.length; m++) {\n var numStreamsInFolder = numUnpackStreamsPerFolder[m];\n // Only count if folder doesn't have CRC or has multiple streams\n if (!folders[m].hasCRC || numStreamsInFolder > 1) {\n numFiles += numStreamsInFolder;\n }\n }\n\n unpackCRCs = [];\n var definedResult = readDefinedVector(buf, offset, numFiles);\n offset += definedResult.bytesRead;\n for (var n = 0; n < numFiles; n++) {\n if (definedResult.defined[n]) {\n unpackCRCs.push(buf.readUInt32LE(offset));\n offset += 4;\n } else {\n unpackCRCs.push(0);\n }\n }\n }\n }\n\n // If no sizes specified, use folder unpack sizes\n if (unpackSizes.length === 0) {\n for (var p = 0; p < folders.length; p++) {\n var folder = folders[p];\n unpackSizes.push(folder.unpackSizes[folder.unpackSizes.length - 1]);\n }\n }\n\n return { numUnpackStreamsPerFolder: numUnpackStreamsPerFolder, unpackSizes: unpackSizes, unpackCRCs: unpackCRCs, offset: offset };\n}\n\n/**\n * Parse FilesInfo block\n */\nfunction parseFilesInfo(buf: Buffer, offset: number): { files: FileInfo[]; offset: number } {\n // Number of files\n var numFilesResult = readNumber(buf, offset);\n var numFiles = numFilesResult.value;\n offset += numFilesResult.bytesRead;\n\n // Initialize files array\n var files: FileInfo[] = [];\n for (var i = 0; i < numFiles; i++) {\n files.push({\n name: '',\n size: 0,\n isDirectory: false,\n isAntiFile: false,\n hasStream: true,\n });\n }\n\n var emptyStreamFlags: boolean[] = [];\n var emptyFileFlags: boolean[] = [];\n\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n // Read property size\n var propSizeResult = readNumber(buf, offset);\n var propSize = propSizeResult.value;\n offset += propSizeResult.bytesRead;\n\n var propEnd = offset + propSize;\n\n switch (propertyId) {\n case PropertyId.kEmptyStream:\n emptyStreamFlags = readBoolVector(buf, offset, numFiles);\n // Mark files that don't have streams\n for (var j = 0; j < numFiles; j++) {\n files[j].hasStream = !emptyStreamFlags[j];\n }\n break;\n\n case PropertyId.kEmptyFile: {\n var numEmptyStreams = 0;\n for (var k = 0; k < emptyStreamFlags.length; k++) {\n if (emptyStreamFlags[k]) numEmptyStreams++;\n }\n emptyFileFlags = readBoolVector(buf, offset, numEmptyStreams);\n break;\n }\n\n case PropertyId.kAnti: {\n var numAnti = 0;\n for (var l = 0; l < emptyStreamFlags.length; l++) {\n if (emptyStreamFlags[l]) numAnti++;\n }\n var antiFlags = readBoolVector(buf, offset, numAnti);\n var antiIdx = 0;\n for (var m = 0; m < numFiles; m++) {\n if (emptyStreamFlags[m]) {\n files[m].isAntiFile = antiFlags[antiIdx++];\n }\n }\n break;\n }\n\n case PropertyId.kName:\n offset = parseFileNames(buf, offset, files);\n break;\n\n case PropertyId.kCTime:\n offset = parseFileTimes(buf, offset, files, 'ctime');\n break;\n\n case PropertyId.kATime:\n offset = parseFileTimes(buf, offset, files, 'atime');\n break;\n\n case PropertyId.kMTime:\n offset = parseFileTimes(buf, offset, files, 'mtime');\n break;\n\n case PropertyId.kWinAttributes:\n offset = parseAttributes(buf, offset, files);\n break;\n\n case PropertyId.kDummy:\n // Skip dummy bytes\n break;\n\n default:\n // Skip unknown properties\n break;\n }\n\n offset = propEnd;\n }\n\n // Determine directories from empty stream + not empty file\n var emptyIdx = 0;\n for (var n = 0; n < numFiles; n++) {\n if (emptyStreamFlags[n]) {\n // Empty stream - could be directory or empty file\n if (emptyIdx < emptyFileFlags.length && emptyFileFlags[emptyIdx]) {\n files[n].isDirectory = false; // Empty file\n } else {\n files[n].isDirectory = true; // Directory\n }\n emptyIdx++;\n }\n }\n\n return { files: files, offset: offset };\n}\n\n/**\n * Read a boolean vector (bit-packed)\n */\nfunction readBoolVector(buf: Buffer, offset: number, count: number): boolean[] {\n var result: boolean[] = [];\n var byteIdx = 0;\n var bitMask = 0x80;\n\n for (var i = 0; i < count; i++) {\n result.push((buf[offset + byteIdx] & bitMask) !== 0);\n bitMask = bitMask >>> 1;\n if (bitMask === 0) {\n bitMask = 0x80;\n byteIdx++;\n }\n }\n\n return result;\n}\n\n/**\n * Parse file names (UTF-16LE encoded)\n */\nfunction parseFileNames(buf: Buffer, offset: number, files: FileInfo[]): number {\n // External flag\n var external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External file names not supported', ErrorCode.CORRUPT_HEADER);\n }\n\n // Names are UTF-16LE, null-terminated\n for (var i = 0; i < files.length; i++) {\n var nameChars: number[] = [];\n while (offset < buf.length) {\n var charCode = buf.readUInt16LE(offset);\n offset += 2;\n if (charCode === 0) break;\n nameChars.push(charCode);\n }\n files[i].name = String.fromCharCode.apply(null, nameChars);\n }\n\n return offset;\n}\n\n/**\n * Parse file times (Windows FILETIME format)\n */\nfunction parseFileTimes(buf: Buffer, offset: number, files: FileInfo[], timeType: 'ctime' | 'atime' | 'mtime'): number {\n // Read defined vector (allDefined byte + optional bitmask)\n var definedResult = readDefinedVector(buf, offset, files.length);\n offset += definedResult.bytesRead;\n\n // External flag - 0x00 means data follows inline, non-zero means external stream\n var external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External file times not supported', ErrorCode.UNSUPPORTED_FEATURE);\n }\n\n // Read times\n for (var i = 0; i < files.length; i++) {\n if (definedResult.defined[i]) {\n var filetime = readUInt64LE(buf, offset);\n offset += 8;\n // Convert FILETIME (100ns since 1601) to JavaScript Date\n // FILETIME epoch: 1601-01-01\n // JS Date epoch: 1970-01-01\n // Difference: 11644473600 seconds\n var ms = filetime / 10000 - 11644473600000;\n files[i][timeType] = new Date(ms);\n }\n }\n\n return offset;\n}\n\n/**\n * Parse Windows file attributes\n */\nfunction parseAttributes(buf: Buffer, offset: number, files: FileInfo[]): number {\n // Read defined vector (allDefined byte + optional bitmask)\n var definedResult = readDefinedVector(buf, offset, files.length);\n offset += definedResult.bytesRead;\n\n // External flag - 0x00 means data follows inline, non-zero means external stream\n var external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External file attributes not supported', ErrorCode.UNSUPPORTED_FEATURE);\n }\n\n // Read attributes\n for (var i = 0; i < files.length; i++) {\n if (definedResult.defined[i]) {\n files[i].attributes = buf.readUInt32LE(offset);\n offset += 4;\n }\n }\n\n return offset;\n}\n\n/**\n * Skip archive properties block\n */\nfunction skipArchiveProperties(buf: Buffer, offset: number): number {\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n var sizeResult = readNumber(buf, offset);\n offset += sizeResult.bytesRead + sizeResult.value;\n }\n return offset;\n}\n\n/**\n * Skip streams info block (for additional streams)\n */\nfunction skipStreamsInfo(buf: Buffer, offset: number): number {\n while (offset < buf.length) {\n var propertyId = buf[offset++];\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n // For nested structures, recurse\n if (propertyId === PropertyId.kPackInfo || propertyId === PropertyId.kUnpackInfo || propertyId === PropertyId.kSubStreamsInfo) {\n offset = skipStreamsInfo(buf, offset);\n }\n }\n return offset;\n}\n"],"names":["bufferEquals","readUInt64LE","verifyCrc32Region","createCodedError","ErrorCode","PropertyId","SEVENZ_MAGIC","readDefinedVector","readNumber","parseSignatureHeader","buf","INVALID_SIGNATURE","majorVersion","minorVersion","UNSUPPORTED_VERSION","startHeaderCRC","readUInt32LE","CRC_MISMATCH","nextHeaderOffset","nextHeaderSize","nextHeaderCRC","parseEncodedHeader","expectedCRC","length","offset","propertyId","kEncodedHeader","COMPRESSED_HEADER","kHeader","CORRUPT_HEADER","parseHeaderContent","result","filesInfo","kEnd","kArchiveProperties","skipArchiveProperties","kAdditionalStreamsInfo","skipStreamsInfo","kMainStreamsInfo","streamsResult","parseStreamsInfo","streamsInfo","info","kFilesInfo","filesResult","parseFilesInfo","files","packPos","packSizes","folders","numUnpackStreamsPerFolder","unpackSizes","kPackInfo","packResult","parsePackInfo","packCRCs","kUnpackInfo","unpackResult","parseUnpackInfo","kSubStreamsInfo","subResult","parseSubStreamsInfo","unpackCRCs","i","folder","finalSize","push","packPosResult","value","bytesRead","numPackResult","numPackStreams","kSize","sizeResult","kCRC","definedResult","j","defined","kFolder","numFoldersResult","numFolders","external","folderResult","parseFolder","kCodersUnpackSize","numOutputs","k","coders","numOutStreams","l","m","hasCRC","unpackCRC","numCodersResult","numCoders","numInStreamsTotal","numOutStreamsTotal","flags","idSize","isComplex","hasAttributes","id","numInStreams","inResult","outResult","properties","propsLenResult","slice","numBindPairs","bindPairs","inIndexResult","outIndexResult","inIndex","outIndex","numPackedStreams","packedStreams","isBound","n","p","indexResult","kNumUnpackStream","numResult","numStreams","remaining","numFiles","numStreamsInFolder","numFilesResult","name","size","isDirectory","isAntiFile","hasStream","emptyStreamFlags","emptyFileFlags","propSizeResult","propSize","propEnd","kEmptyStream","readBoolVector","kEmptyFile","numEmptyStreams","kAnti","numAnti","antiFlags","antiIdx","kName","parseFileNames","kCTime","parseFileTimes","kATime","kMTime","kWinAttributes","parseAttributes","kDummy","emptyIdx","count","byteIdx","bitMask","nameChars","charCode","readUInt16LE","String","fromCharCode","apply","timeType","UNSUPPORTED_FEATURE","filetime","ms","Date","attributes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/headers.ts"],"sourcesContent":["// 7z header parsing\n// Reference: https://py7zr.readthedocs.io/en/latest/archive_format.html\n\nimport { bufferEquals, readUInt64LE, verifyCrc32Region } from 'extract-base-iterator';\nimport { createCodedError, ErrorCode, PropertyId, SEVENZ_MAGIC } from './constants.ts';\nimport { readDefinedVector, readNumber } from './NumberCodec.ts';\n\n// Type definitions\nexport interface SignatureHeader {\n majorVersion: number;\n minorVersion: number;\n startHeaderCRC: number;\n nextHeaderOffset: number;\n nextHeaderSize: number;\n nextHeaderCRC: number;\n}\n\nexport interface Coder {\n id: number[]; // Codec ID bytes\n numInStreams: number; // Number of input streams\n numOutStreams: number; // Number of output streams\n properties?: Buffer; // Optional codec properties\n}\n\nexport interface Folder {\n coders: Coder[];\n bindPairs: { inIndex: number; outIndex: number }[];\n packedStreams: number[]; // Indices of packed streams\n unpackSizes: number[]; // Unpack size for each coder output\n unpackCRC?: number; // CRC of final unpacked data\n hasCRC: boolean;\n}\n\nexport interface StreamsInfo {\n packPos: number; // Position of packed data (relative to end of signature header)\n packSizes: number[]; // Sizes of packed streams\n packCRCs?: number[]; // Optional CRCs for packed streams\n folders: Folder[]; // Decompression info\n numUnpackStreamsPerFolder: number[]; // Number of files in each folder (for solid archives)\n unpackSizes: number[]; // Size of each unpacked file\n unpackCRCs?: number[]; // Optional CRCs for unpacked files\n}\n\nexport interface FileInfo {\n name: string;\n size: number;\n isDirectory: boolean;\n isAntiFile: boolean; // \"Anti\" items mark files to delete in delta archives\n hasStream: boolean; // False for empty files/directories\n crc?: number;\n ctime?: Date;\n atime?: Date;\n mtime?: Date;\n attributes?: number;\n}\n\nexport interface ArchiveHeader {\n signature: SignatureHeader;\n streamsInfo?: StreamsInfo;\n filesInfo: FileInfo[];\n}\n\n/**\n * Parse the signature header (first 32 bytes)\n */\nexport function parseSignatureHeader(buf: Buffer): SignatureHeader {\n // Verify magic bytes\n if (!bufferEquals(buf, 0, SEVENZ_MAGIC)) {\n throw createCodedError('Not a valid 7z archive', ErrorCode.INVALID_SIGNATURE);\n }\n\n // Read version\n const majorVersion = buf[6];\n const minorVersion = buf[7];\n\n // Version check - we support 0.x (current is 0.4)\n if (majorVersion > 0) {\n throw createCodedError(`Unsupported 7z version: ${majorVersion}.${minorVersion}`, ErrorCode.UNSUPPORTED_VERSION);\n }\n\n // Read start header CRC (CRC of the next 20 bytes)\n const startHeaderCRC = buf.readUInt32LE(8);\n\n // Verify start header CRC\n if (!verifyCrc32Region(buf, 12, 20, startHeaderCRC)) {\n throw createCodedError('Start header CRC mismatch', ErrorCode.CRC_MISMATCH);\n }\n\n // Read next header location\n const nextHeaderOffset = readUInt64LE(buf, 12);\n const nextHeaderSize = readUInt64LE(buf, 20);\n const nextHeaderCRC = buf.readUInt32LE(28);\n\n return {\n majorVersion: majorVersion,\n minorVersion: minorVersion,\n startHeaderCRC: startHeaderCRC,\n nextHeaderOffset: nextHeaderOffset,\n nextHeaderSize: nextHeaderSize,\n nextHeaderCRC: nextHeaderCRC,\n };\n}\n\n/**\n * Parse the encoded header (metadata block at end of archive)\n */\nexport function parseEncodedHeader(buf: Buffer, expectedCRC: number): { streamsInfo?: StreamsInfo; filesInfo: FileInfo[] } {\n // Verify CRC\n if (!verifyCrc32Region(buf, 0, buf.length, expectedCRC)) {\n throw createCodedError('Encoded header CRC mismatch', ErrorCode.CRC_MISMATCH);\n }\n\n let offset = 0;\n\n // Read property ID\n const propertyId = buf[offset++];\n\n // Handle kEncodedHeader - means the header itself is compressed\n if (propertyId === PropertyId.kEncodedHeader) {\n // Return indicator that we need to decompress\n throw createCodedError('Compressed header - needs decompression first', ErrorCode.COMPRESSED_HEADER);\n }\n\n // Should be kHeader\n if (propertyId !== PropertyId.kHeader) {\n throw createCodedError(`Expected kHeader, got ${propertyId}`, ErrorCode.CORRUPT_HEADER);\n }\n\n // Parse header contents (after kHeader byte)\n return parseHeaderContent(buf, offset);\n}\n\n/**\n * Parse header content (after kHeader byte has been read)\n * Used by parseEncodedHeader and for decompressed headers\n */\nexport function parseHeaderContent(buf: Buffer, offset: number): { streamsInfo?: StreamsInfo; filesInfo: FileInfo[] } {\n const result: { streamsInfo?: StreamsInfo; filesInfo: FileInfo[] } = {\n filesInfo: [],\n };\n\n // Parse header contents\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n switch (propertyId) {\n case PropertyId.kArchiveProperties:\n offset = skipArchiveProperties(buf, offset);\n break;\n case PropertyId.kAdditionalStreamsInfo:\n // Additional streams - skip for now\n offset = skipStreamsInfo(buf, offset);\n break;\n case PropertyId.kMainStreamsInfo: {\n const streamsResult = parseStreamsInfo(buf, offset);\n result.streamsInfo = streamsResult.info;\n offset = streamsResult.offset;\n break;\n }\n case PropertyId.kFilesInfo: {\n const filesResult = parseFilesInfo(buf, offset);\n result.filesInfo = filesResult.files;\n offset = filesResult.offset;\n break;\n }\n default:\n throw createCodedError(`Unknown property ID in header: ${propertyId}`, ErrorCode.CORRUPT_HEADER);\n }\n }\n\n return result;\n}\n\n/**\n * Parse StreamsInfo block\n */\nfunction parseStreamsInfo(buf: Buffer, offset: number): { info: StreamsInfo; offset: number } {\n const info: StreamsInfo = {\n packPos: 0,\n packSizes: [],\n folders: [],\n numUnpackStreamsPerFolder: [],\n unpackSizes: [],\n };\n\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n switch (propertyId) {\n case PropertyId.kPackInfo: {\n const packResult = parsePackInfo(buf, offset);\n info.packPos = packResult.packPos;\n info.packSizes = packResult.packSizes;\n info.packCRCs = packResult.packCRCs;\n offset = packResult.offset;\n break;\n }\n case PropertyId.kUnpackInfo: {\n const unpackResult = parseUnpackInfo(buf, offset);\n info.folders = unpackResult.folders;\n offset = unpackResult.offset;\n break;\n }\n case PropertyId.kSubStreamsInfo: {\n const subResult = parseSubStreamsInfo(buf, offset, info.folders);\n info.numUnpackStreamsPerFolder = subResult.numUnpackStreamsPerFolder;\n info.unpackSizes = subResult.unpackSizes;\n info.unpackCRCs = subResult.unpackCRCs;\n offset = subResult.offset;\n break;\n }\n default:\n throw createCodedError(`Unknown property ID in StreamsInfo: ${propertyId}`, ErrorCode.CORRUPT_HEADER);\n }\n }\n\n // If no SubStreamsInfo, each folder produces one file\n if (info.unpackSizes.length === 0 && info.folders.length > 0) {\n for (let i = 0; i < info.folders.length; i++) {\n const folder = info.folders[i];\n // Get the final unpack size (last coder's output)\n const finalSize = folder.unpackSizes[folder.unpackSizes.length - 1];\n info.unpackSizes.push(finalSize);\n info.numUnpackStreamsPerFolder.push(1);\n }\n }\n\n return { info: info, offset: offset };\n}\n\n/**\n * Parse PackInfo block\n */\nfunction parsePackInfo(buf: Buffer, offset: number): { packPos: number; packSizes: number[]; packCRCs?: number[]; offset: number } {\n // Pack position\n const packPosResult = readNumber(buf, offset);\n const packPos = packPosResult.value;\n offset += packPosResult.bytesRead;\n\n // Number of pack streams\n const numPackResult = readNumber(buf, offset);\n const numPackStreams = numPackResult.value;\n offset += numPackResult.bytesRead;\n\n const packSizes: number[] = [];\n let packCRCs: number[] | undefined;\n\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n if (propertyId === PropertyId.kSize) {\n for (let i = 0; i < numPackStreams; i++) {\n const sizeResult = readNumber(buf, offset);\n packSizes.push(sizeResult.value);\n offset += sizeResult.bytesRead;\n }\n } else if (propertyId === PropertyId.kCRC) {\n packCRCs = [];\n const definedResult = readDefinedVector(buf, offset, numPackStreams);\n offset += definedResult.bytesRead;\n for (let j = 0; j < numPackStreams; j++) {\n if (definedResult.defined[j]) {\n packCRCs.push(buf.readUInt32LE(offset));\n offset += 4;\n } else {\n packCRCs.push(0);\n }\n }\n }\n }\n\n return { packPos: packPos, packSizes: packSizes, packCRCs: packCRCs, offset: offset };\n}\n\n/**\n * Parse UnpackInfo block\n */\nfunction parseUnpackInfo(buf: Buffer, offset: number): { folders: Folder[]; offset: number } {\n const folders: Folder[] = [];\n\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n if (propertyId === PropertyId.kFolder) {\n // Number of folders\n const numFoldersResult = readNumber(buf, offset);\n const numFolders = numFoldersResult.value;\n offset += numFoldersResult.bytesRead;\n\n // External flag\n const external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External folders not supported', ErrorCode.CORRUPT_HEADER);\n }\n\n // Parse each folder\n for (let i = 0; i < numFolders; i++) {\n const folderResult = parseFolder(buf, offset);\n folders.push(folderResult.folder);\n offset = folderResult.offset;\n }\n } else if (propertyId === PropertyId.kCodersUnpackSize) {\n // Unpack sizes for each coder output\n for (let j = 0; j < folders.length; j++) {\n const folder = folders[j];\n folder.unpackSizes = [];\n // One unpack size per coder output stream\n let numOutputs = 0;\n for (let k = 0; k < folder.coders.length; k++) {\n numOutputs += folder.coders[k].numOutStreams;\n }\n for (let l = 0; l < numOutputs; l++) {\n const sizeResult = readNumber(buf, offset);\n folder.unpackSizes.push(sizeResult.value);\n offset += sizeResult.bytesRead;\n }\n }\n } else if (propertyId === PropertyId.kCRC) {\n // CRCs for folders\n const definedResult = readDefinedVector(buf, offset, folders.length);\n offset += definedResult.bytesRead;\n for (let m = 0; m < folders.length; m++) {\n folders[m].hasCRC = definedResult.defined[m];\n if (definedResult.defined[m]) {\n folders[m].unpackCRC = buf.readUInt32LE(offset);\n offset += 4;\n }\n }\n }\n }\n\n return { folders: folders, offset: offset };\n}\n\n/**\n * Parse a single Folder structure\n */\nfunction parseFolder(buf: Buffer, offset: number): { folder: Folder; offset: number } {\n // Number of coders\n const numCodersResult = readNumber(buf, offset);\n const numCoders = numCodersResult.value;\n offset += numCodersResult.bytesRead;\n\n const coders: Coder[] = [];\n let numInStreamsTotal = 0;\n let numOutStreamsTotal = 0;\n\n for (let i = 0; i < numCoders; i++) {\n const flags = buf[offset++];\n const idSize = flags & 0x0f;\n const isComplex = (flags & 0x10) !== 0;\n const hasAttributes = (flags & 0x20) !== 0;\n\n // Read codec ID\n const id: number[] = [];\n for (let j = 0; j < idSize; j++) {\n id.push(buf[offset++]);\n }\n\n let numInStreams = 1;\n let numOutStreams = 1;\n\n if (isComplex) {\n const inResult = readNumber(buf, offset);\n numInStreams = inResult.value;\n offset += inResult.bytesRead;\n\n const outResult = readNumber(buf, offset);\n numOutStreams = outResult.value;\n offset += outResult.bytesRead;\n }\n\n let properties: Buffer | undefined;\n if (hasAttributes) {\n const propsLenResult = readNumber(buf, offset);\n offset += propsLenResult.bytesRead;\n properties = buf.slice(offset, offset + propsLenResult.value);\n offset += propsLenResult.value;\n }\n\n coders.push({\n id: id,\n numInStreams: numInStreams,\n numOutStreams: numOutStreams,\n properties: properties,\n });\n\n numInStreamsTotal += numInStreams;\n numOutStreamsTotal += numOutStreams;\n }\n\n // Bind pairs\n const numBindPairs = numOutStreamsTotal - 1;\n const bindPairs: { inIndex: number; outIndex: number }[] = [];\n\n for (let k = 0; k < numBindPairs; k++) {\n const inIndexResult = readNumber(buf, offset);\n offset += inIndexResult.bytesRead;\n\n const outIndexResult = readNumber(buf, offset);\n offset += outIndexResult.bytesRead;\n\n bindPairs.push({\n inIndex: inIndexResult.value,\n outIndex: outIndexResult.value,\n });\n }\n\n // Packed stream indices\n const numPackedStreams = numInStreamsTotal - numBindPairs;\n const packedStreams: number[] = [];\n\n if (numPackedStreams === 1) {\n // Find the unbound input stream\n for (let m = 0; m < numInStreamsTotal; m++) {\n let isBound = false;\n for (let n = 0; n < bindPairs.length; n++) {\n if (bindPairs[n].inIndex === m) {\n isBound = true;\n break;\n }\n }\n if (!isBound) {\n packedStreams.push(m);\n break;\n }\n }\n } else {\n for (let p = 0; p < numPackedStreams; p++) {\n const indexResult = readNumber(buf, offset);\n packedStreams.push(indexResult.value);\n offset += indexResult.bytesRead;\n }\n }\n\n return {\n folder: {\n coders: coders,\n bindPairs: bindPairs,\n packedStreams: packedStreams,\n unpackSizes: [],\n hasCRC: false,\n },\n offset: offset,\n };\n}\n\n/**\n * Parse SubStreamsInfo block\n */\nfunction parseSubStreamsInfo(buf: Buffer, offset: number, folders: Folder[]): { numUnpackStreamsPerFolder: number[]; unpackSizes: number[]; unpackCRCs?: number[]; offset: number } {\n const numUnpackStreamsPerFolder: number[] = [];\n const unpackSizes: number[] = [];\n let unpackCRCs: number[] | undefined;\n\n // Default: 1 file per folder\n for (let i = 0; i < folders.length; i++) {\n numUnpackStreamsPerFolder.push(1);\n }\n\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n if (propertyId === PropertyId.kNumUnpackStream) {\n for (let j = 0; j < folders.length; j++) {\n const numResult = readNumber(buf, offset);\n numUnpackStreamsPerFolder[j] = numResult.value;\n offset += numResult.bytesRead;\n }\n } else if (propertyId === PropertyId.kSize) {\n for (let k = 0; k < folders.length; k++) {\n const numStreams = numUnpackStreamsPerFolder[k];\n if (numStreams === 0) continue;\n\n // Read sizes for all but last stream in folder (last is calculated)\n let remaining = folders[k].unpackSizes[folders[k].unpackSizes.length - 1];\n for (let l = 0; l < numStreams - 1; l++) {\n const sizeResult = readNumber(buf, offset);\n unpackSizes.push(sizeResult.value);\n remaining -= sizeResult.value;\n offset += sizeResult.bytesRead;\n }\n // Last stream size is remainder\n unpackSizes.push(remaining);\n }\n } else if (propertyId === PropertyId.kCRC) {\n // Count files that need CRC\n let numFiles = 0;\n for (let m = 0; m < folders.length; m++) {\n const numStreamsInFolder = numUnpackStreamsPerFolder[m];\n // Only count if folder doesn't have CRC or has multiple streams\n if (!folders[m].hasCRC || numStreamsInFolder > 1) {\n numFiles += numStreamsInFolder;\n }\n }\n\n unpackCRCs = [];\n const definedResult = readDefinedVector(buf, offset, numFiles);\n offset += definedResult.bytesRead;\n for (let n = 0; n < numFiles; n++) {\n if (definedResult.defined[n]) {\n unpackCRCs.push(buf.readUInt32LE(offset));\n offset += 4;\n } else {\n unpackCRCs.push(0);\n }\n }\n }\n }\n\n // If no sizes specified, use folder unpack sizes\n if (unpackSizes.length === 0) {\n for (let p = 0; p < folders.length; p++) {\n const folder = folders[p];\n unpackSizes.push(folder.unpackSizes[folder.unpackSizes.length - 1]);\n }\n }\n\n return { numUnpackStreamsPerFolder: numUnpackStreamsPerFolder, unpackSizes: unpackSizes, unpackCRCs: unpackCRCs, offset: offset };\n}\n\n/**\n * Parse FilesInfo block\n */\nfunction parseFilesInfo(buf: Buffer, offset: number): { files: FileInfo[]; offset: number } {\n // Number of files\n const numFilesResult = readNumber(buf, offset);\n const numFiles = numFilesResult.value;\n offset += numFilesResult.bytesRead;\n\n // Initialize files array\n const files: FileInfo[] = [];\n for (let i = 0; i < numFiles; i++) {\n files.push({\n name: '',\n size: 0,\n isDirectory: false,\n isAntiFile: false,\n hasStream: true,\n });\n }\n\n let emptyStreamFlags: boolean[] = [];\n let emptyFileFlags: boolean[] = [];\n\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n\n // Read property size\n const propSizeResult = readNumber(buf, offset);\n const propSize = propSizeResult.value;\n offset += propSizeResult.bytesRead;\n\n const propEnd = offset + propSize;\n\n switch (propertyId) {\n case PropertyId.kEmptyStream:\n emptyStreamFlags = readBoolVector(buf, offset, numFiles);\n // Mark files that don't have streams\n for (let j = 0; j < numFiles; j++) {\n files[j].hasStream = !emptyStreamFlags[j];\n }\n break;\n\n case PropertyId.kEmptyFile: {\n let numEmptyStreams = 0;\n for (let k = 0; k < emptyStreamFlags.length; k++) {\n if (emptyStreamFlags[k]) numEmptyStreams++;\n }\n emptyFileFlags = readBoolVector(buf, offset, numEmptyStreams);\n break;\n }\n\n case PropertyId.kAnti: {\n let numAnti = 0;\n for (let l = 0; l < emptyStreamFlags.length; l++) {\n if (emptyStreamFlags[l]) numAnti++;\n }\n const antiFlags = readBoolVector(buf, offset, numAnti);\n let antiIdx = 0;\n for (let m = 0; m < numFiles; m++) {\n if (emptyStreamFlags[m]) {\n files[m].isAntiFile = antiFlags[antiIdx++];\n }\n }\n break;\n }\n\n case PropertyId.kName:\n offset = parseFileNames(buf, offset, files);\n break;\n\n case PropertyId.kCTime:\n offset = parseFileTimes(buf, offset, files, 'ctime');\n break;\n\n case PropertyId.kATime:\n offset = parseFileTimes(buf, offset, files, 'atime');\n break;\n\n case PropertyId.kMTime:\n offset = parseFileTimes(buf, offset, files, 'mtime');\n break;\n\n case PropertyId.kWinAttributes:\n offset = parseAttributes(buf, offset, files);\n break;\n\n case PropertyId.kDummy:\n // Skip dummy bytes\n break;\n\n default:\n // Skip unknown properties\n break;\n }\n\n offset = propEnd;\n }\n\n // Determine directories from empty stream + not empty file\n let emptyIdx = 0;\n for (let n = 0; n < numFiles; n++) {\n if (emptyStreamFlags[n]) {\n // Empty stream - could be directory or empty file\n if (emptyIdx < emptyFileFlags.length && emptyFileFlags[emptyIdx]) {\n files[n].isDirectory = false; // Empty file\n } else {\n files[n].isDirectory = true; // Directory\n }\n emptyIdx++;\n }\n }\n\n return { files: files, offset: offset };\n}\n\n/**\n * Read a boolean vector (bit-packed)\n */\nfunction readBoolVector(buf: Buffer, offset: number, count: number): boolean[] {\n const result: boolean[] = [];\n let byteIdx = 0;\n let bitMask = 0x80;\n\n for (let i = 0; i < count; i++) {\n result.push((buf[offset + byteIdx] & bitMask) !== 0);\n bitMask = bitMask >>> 1;\n if (bitMask === 0) {\n bitMask = 0x80;\n byteIdx++;\n }\n }\n\n return result;\n}\n\n/**\n * Parse file names (UTF-16LE encoded)\n */\nfunction parseFileNames(buf: Buffer, offset: number, files: FileInfo[]): number {\n // External flag\n const external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External file names not supported', ErrorCode.CORRUPT_HEADER);\n }\n\n // Names are UTF-16LE, null-terminated\n for (let i = 0; i < files.length; i++) {\n const nameChars: number[] = [];\n while (offset < buf.length) {\n const charCode = buf.readUInt16LE(offset);\n offset += 2;\n if (charCode === 0) break;\n nameChars.push(charCode);\n }\n files[i].name = String.fromCharCode.apply(null, nameChars);\n }\n\n return offset;\n}\n\n/**\n * Parse file times (Windows FILETIME format)\n */\nfunction parseFileTimes(buf: Buffer, offset: number, files: FileInfo[], timeType: 'ctime' | 'atime' | 'mtime'): number {\n // Read defined vector (allDefined byte + optional bitmask)\n const definedResult = readDefinedVector(buf, offset, files.length);\n offset += definedResult.bytesRead;\n\n // External flag - 0x00 means data follows inline, non-zero means external stream\n const external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External file times not supported', ErrorCode.UNSUPPORTED_FEATURE);\n }\n\n // Read times\n for (let i = 0; i < files.length; i++) {\n if (definedResult.defined[i]) {\n const filetime = readUInt64LE(buf, offset);\n offset += 8;\n // Convert FILETIME (100ns since 1601) to JavaScript Date\n // FILETIME epoch: 1601-01-01\n // JS Date epoch: 1970-01-01\n // Difference: 11644473600 seconds\n const ms = filetime / 10000 - 11644473600000;\n files[i][timeType] = new Date(ms);\n }\n }\n\n return offset;\n}\n\n/**\n * Parse Windows file attributes\n */\nfunction parseAttributes(buf: Buffer, offset: number, files: FileInfo[]): number {\n // Read defined vector (allDefined byte + optional bitmask)\n const definedResult = readDefinedVector(buf, offset, files.length);\n offset += definedResult.bytesRead;\n\n // External flag - 0x00 means data follows inline, non-zero means external stream\n const external = buf[offset++];\n if (external !== 0) {\n throw createCodedError('External file attributes not supported', ErrorCode.UNSUPPORTED_FEATURE);\n }\n\n // Read attributes\n for (let i = 0; i < files.length; i++) {\n if (definedResult.defined[i]) {\n files[i].attributes = buf.readUInt32LE(offset);\n offset += 4;\n }\n }\n\n return offset;\n}\n\n/**\n * Skip archive properties block\n */\nfunction skipArchiveProperties(buf: Buffer, offset: number): number {\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n const sizeResult = readNumber(buf, offset);\n offset += sizeResult.bytesRead + sizeResult.value;\n }\n return offset;\n}\n\n/**\n * Skip streams info block (for additional streams)\n */\nfunction skipStreamsInfo(buf: Buffer, offset: number): number {\n while (offset < buf.length) {\n const propertyId = buf[offset++];\n if (propertyId === PropertyId.kEnd) {\n break;\n }\n // For nested structures, recurse\n if (propertyId === PropertyId.kPackInfo || propertyId === PropertyId.kUnpackInfo || propertyId === PropertyId.kSubStreamsInfo) {\n offset = skipStreamsInfo(buf, offset);\n }\n }\n return offset;\n}\n"],"names":["bufferEquals","readUInt64LE","verifyCrc32Region","createCodedError","ErrorCode","PropertyId","SEVENZ_MAGIC","readDefinedVector","readNumber","parseSignatureHeader","buf","INVALID_SIGNATURE","majorVersion","minorVersion","UNSUPPORTED_VERSION","startHeaderCRC","readUInt32LE","CRC_MISMATCH","nextHeaderOffset","nextHeaderSize","nextHeaderCRC","parseEncodedHeader","expectedCRC","length","offset","propertyId","kEncodedHeader","COMPRESSED_HEADER","kHeader","CORRUPT_HEADER","parseHeaderContent","result","filesInfo","kEnd","kArchiveProperties","skipArchiveProperties","kAdditionalStreamsInfo","skipStreamsInfo","kMainStreamsInfo","streamsResult","parseStreamsInfo","streamsInfo","info","kFilesInfo","filesResult","parseFilesInfo","files","packPos","packSizes","folders","numUnpackStreamsPerFolder","unpackSizes","kPackInfo","packResult","parsePackInfo","packCRCs","kUnpackInfo","unpackResult","parseUnpackInfo","kSubStreamsInfo","subResult","parseSubStreamsInfo","unpackCRCs","i","folder","finalSize","push","packPosResult","value","bytesRead","numPackResult","numPackStreams","kSize","sizeResult","kCRC","definedResult","j","defined","kFolder","numFoldersResult","numFolders","external","folderResult","parseFolder","kCodersUnpackSize","numOutputs","k","coders","numOutStreams","l","m","hasCRC","unpackCRC","numCodersResult","numCoders","numInStreamsTotal","numOutStreamsTotal","flags","idSize","isComplex","hasAttributes","id","numInStreams","inResult","outResult","properties","propsLenResult","slice","numBindPairs","bindPairs","inIndexResult","outIndexResult","inIndex","outIndex","numPackedStreams","packedStreams","isBound","n","p","indexResult","kNumUnpackStream","numResult","numStreams","remaining","numFiles","numStreamsInFolder","numFilesResult","name","size","isDirectory","isAntiFile","hasStream","emptyStreamFlags","emptyFileFlags","propSizeResult","propSize","propEnd","kEmptyStream","readBoolVector","kEmptyFile","numEmptyStreams","kAnti","numAnti","antiFlags","antiIdx","kName","parseFileNames","kCTime","parseFileTimes","kATime","kMTime","kWinAttributes","parseAttributes","kDummy","emptyIdx","count","byteIdx","bitMask","nameChars","charCode","readUInt16LE","String","fromCharCode","apply","timeType","UNSUPPORTED_FEATURE","filetime","ms","Date","attributes"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "7z-iterator",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.11",
|
|
4
4
|
"description": "Extract contents from 7z archives using an iterator API. Pure JavaScript, works on Node.js 0.8+",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"extract",
|
|
@@ -47,30 +47,30 @@
|
|
|
47
47
|
"version": "tsds version"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"call-once-fn": "
|
|
51
|
-
"extract-base-iterator": "
|
|
52
|
-
"fs-remove-compat": "
|
|
53
|
-
"lodash.compact": "
|
|
54
|
-
"mkdirp-classic": "
|
|
55
|
-
"on-one": "
|
|
56
|
-
"os-shim": "
|
|
57
|
-
"queue-cb": "
|
|
50
|
+
"call-once-fn": "^1.1.9",
|
|
51
|
+
"extract-base-iterator": "^2.4.12",
|
|
52
|
+
"fs-remove-compat": "^0.2.2",
|
|
53
|
+
"lodash.compact": "^3.0.1",
|
|
54
|
+
"mkdirp-classic": "^0.5.3",
|
|
55
|
+
"on-one": "^1.0.9",
|
|
56
|
+
"os-shim": "^0.1.3",
|
|
57
|
+
"queue-cb": "^1.6.2",
|
|
58
58
|
"readable-stream": "^2.3.8",
|
|
59
59
|
"seek-bzip": "^2.0.0",
|
|
60
|
-
"short-hash": "
|
|
61
|
-
"temp-suffix": "
|
|
60
|
+
"short-hash": "^1.0.0",
|
|
61
|
+
"temp-suffix": "^1.0.9"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@types/mocha": "
|
|
65
|
-
"@types/node": "
|
|
66
|
-
"fs-iterator": "
|
|
67
|
-
"fs-stats-spys": "
|
|
68
|
-
"get-remote": "^2.
|
|
64
|
+
"@types/mocha": "^10.0.10",
|
|
65
|
+
"@types/node": "^25.0.1",
|
|
66
|
+
"fs-iterator": "^6.1.10",
|
|
67
|
+
"fs-stats-spys": "^1.2.8",
|
|
68
|
+
"get-remote": "^2.3.1",
|
|
69
69
|
"lzma-native": "^8.0.6",
|
|
70
|
-
"node-version-use": "
|
|
71
|
-
"pinkie-promise": "
|
|
72
|
-
"ts-dev-stack": "
|
|
73
|
-
"tsds-config": "
|
|
70
|
+
"node-version-use": "^2.1.5",
|
|
71
|
+
"pinkie-promise": "^2.0.1",
|
|
72
|
+
"ts-dev-stack": "^1.21.3",
|
|
73
|
+
"tsds-config": "^0.2.1"
|
|
74
74
|
},
|
|
75
75
|
"optionalDependencies": {
|
|
76
76
|
"lzma-native": "^8.0.6"
|