7z-iterator 0.2.8 → 0.2.10
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.map +1 -1
- package/dist/cjs/SevenZipIterator.js.map +1 -1
- package/dist/cjs/compat.js.map +1 -1
- package/dist/cjs/lib/streamToSource.js.map +1 -1
- package/dist/cjs/nextEntry.js.map +1 -1
- package/dist/cjs/sevenz/NumberCodec.js.map +1 -1
- package/dist/cjs/sevenz/SevenZipParser.d.cts +1 -0
- package/dist/cjs/sevenz/SevenZipParser.d.ts +1 -0
- package/dist/cjs/sevenz/SevenZipParser.js +18 -0
- package/dist/cjs/sevenz/SevenZipParser.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Aes.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Bcj.js +1 -1
- package/dist/cjs/sevenz/codecs/Bcj.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Bcj2.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjArm.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjArm64.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjArmt.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjIa64.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjPpc.js.map +1 -1
- package/dist/cjs/sevenz/codecs/BcjSparc.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Delta.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Lzma.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Lzma2.js.map +1 -1
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.js.map +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.map +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.map +1 -1
- package/dist/cjs/sevenz/headers.js +1 -1
- package/dist/cjs/sevenz/headers.js.map +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.d.ts +1 -0
- package/dist/esm/sevenz/SevenZipParser.js +207 -189
- 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
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
* The native decoder uses Node.js streams which integrate naturally with
|
|
9
9
|
* the callback-based async pattern used throughout the iterator libraries.
|
|
10
10
|
*/ import Module from 'module';
|
|
11
|
-
|
|
11
|
+
const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
|
|
12
12
|
// Try to load lzma-native (only on Node 10+ where ES6 class syntax is supported)
|
|
13
13
|
// Note: We must check the version BEFORE requiring because syntax errors during
|
|
14
14
|
// module parsing cannot be caught by try/catch
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
let lzmaNative = null;
|
|
16
|
+
let _hasNativeLzmaLib = false;
|
|
17
|
+
const major = +process.versions.node.split('.')[0];
|
|
18
18
|
if (major >= 10) {
|
|
19
19
|
try {
|
|
20
20
|
lzmaNative = _require('lzma-native');
|
|
@@ -25,7 +25,7 @@ if (major >= 10) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
// Export whether native lzma is available for streaming
|
|
28
|
-
export
|
|
28
|
+
export const hasNativeLzma = _hasNativeLzmaLib;
|
|
29
29
|
/**
|
|
30
30
|
* Create a native LZMA2 decoder stream
|
|
31
31
|
* Returns a Transform stream that decodes LZMA2 data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/lzmaCompat.ts"],"sourcesContent":["/**\n * LZMA compatibility layer - uses native lzma when available, falls back to lzma-purejs\n *\n * lzma-native provides native liblzma bindings with rawDecoder support.\n * This gives significant performance improvements on Node.js 8+ while\n * maintaining compatibility with Node.js 0.8+ via lzma-purejs fallback.\n *\n * The native decoder uses Node.js streams which integrate naturally with\n * the callback-based async pattern used throughout the iterator libraries.\n */\n\nimport Module from 'module';\nimport type { Transform } from 'readable-stream';\n\
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/lzmaCompat.ts"],"sourcesContent":["/**\n * LZMA compatibility layer - uses native lzma when available, falls back to lzma-purejs\n *\n * lzma-native provides native liblzma bindings with rawDecoder support.\n * This gives significant performance improvements on Node.js 8+ while\n * maintaining compatibility with Node.js 0.8+ via lzma-purejs fallback.\n *\n * The native decoder uses Node.js streams which integrate naturally with\n * the callback-based async pattern used throughout the iterator libraries.\n */\n\nimport Module from 'module';\nimport type { Transform } from 'readable-stream';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// Try to load lzma-native (only on Node 10+ where ES6 class syntax is supported)\n// Note: We must check the version BEFORE requiring because syntax errors during\n// module parsing cannot be caught by try/catch\nlet lzmaNative: typeof import('lzma-native') | null = null;\nlet _hasNativeLzmaLib = false;\nconst major = +process.versions.node.split('.')[0];\n\nif (major >= 10) {\n try {\n lzmaNative = _require('lzma-native');\n // Verify rawDecoder support\n _hasNativeLzmaLib = lzmaNative !== null && typeof lzmaNative.createStream === 'function';\n } catch (_e) {\n // lzma-native not available - will use lzma-purejs\n }\n}\n\n// Export whether native lzma is available for streaming\nexport const hasNativeLzma = _hasNativeLzmaLib;\n\n/**\n * Create a native LZMA2 decoder stream\n * Returns a Transform stream that decodes LZMA2 data\n *\n * Note: Native LZMA2 decoder disabled due to LZMA_DATA_ERROR issues with\n * lzma-native's rawDecoder for LZMA2. The native decoder fails partway through\n * decompression on certain archives (e.g., Node.js Windows releases), reporting\n * \"Data is corrupt\" even when the data is valid. Falls back to lzma-purejs\n * which handles all LZMA2 streams correctly.\n *\n * @param _dictSize - Dictionary size (unused, native disabled)\n * @returns null - always falls back to pure JS decoder\n */\nexport function createNativeLzma2Decoder(_dictSize?: number): Transform | null {\n // Native LZMA2 disabled - lzma-native's rawDecoder has issues with certain\n // LZMA2 streams (LZMA_DATA_ERROR: Data is corrupt), even when data is valid.\n // The pure JS lzma-purejs implementation handles all streams correctly.\n return null;\n}\n\n/**\n * Create a native LZMA1 decoder stream\n * Returns a Transform stream that decodes LZMA1 data\n *\n * Note: Native LZMA1 decoder disabled due to LZMA_BUF_ERROR issues with\n * lzma-native's rawDecoder for LZMA1. Falls back to lzma-purejs which\n * handles 7z's LZMA1 format correctly. LZMA2 native works fine.\n *\n * @param _lc - Literal context bits (0-8)\n * @param _lp - Literal position bits (0-4)\n * @param _pb - Position bits (0-4)\n * @param _dictSize - Dictionary size\n * @returns null - always falls back to pure JS decoder\n */\nexport function createNativeLzma1Decoder(_lc: number, _lp: number, _pb: number, _dictSize: number): Transform | null {\n // Native LZMA1 disabled - lzma-native's rawDecoder has issues with 7z's LZMA1 format\n // (LZMA_BUF_ERROR: No progress is possible)\n // LZMA2 native works correctly and is more common in modern 7z files\n return null;\n}\n"],"names":["Module","_require","require","createRequire","url","lzmaNative","_hasNativeLzmaLib","major","process","versions","node","split","createStream","_e","hasNativeLzma","createNativeLzma2Decoder","_dictSize","createNativeLzma1Decoder","_lc","_lp","_pb"],"mappings":"AAAA;;;;;;;;;CASC,GAED,OAAOA,YAAY,SAAS;AAG5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,iFAAiF;AACjF,gFAAgF;AAChF,+CAA+C;AAC/C,IAAIG,aAAkD;AACtD,IAAIC,oBAAoB;AACxB,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAElD,IAAIJ,SAAS,IAAI;IACf,IAAI;QACFF,aAAaJ,SAAS;QACtB,4BAA4B;QAC5BK,oBAAoBD,eAAe,QAAQ,OAAOA,WAAWO,YAAY,KAAK;IAChF,EAAE,OAAOC,IAAI;IACX,mDAAmD;IACrD;AACF;AAEA,wDAAwD;AACxD,OAAO,MAAMC,gBAAgBR,kBAAkB;AAE/C;;;;;;;;;;;;CAYC,GACD,OAAO,SAASS,yBAAyBC,SAAkB;IACzD,2EAA2E;IAC3E,6EAA6E;IAC7E,wEAAwE;IACxE,OAAO;AACT;AAEA;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASC,yBAAyBC,GAAW,EAAEC,GAAW,EAAEC,GAAW,EAAEJ,SAAiB;IAC/F,qFAAqF;IACrF,4CAA4C;IAC5C,qEAAqE;IACrE,OAAO;AACT"}
|
|
@@ -5,16 +5,16 @@ import { allocBufferUnsafe } from 'extract-base-iterator';
|
|
|
5
5
|
* Input stream wrapper for lzma-purejs
|
|
6
6
|
* Wraps a Buffer region as a readable stream interface
|
|
7
7
|
*/ export function createInputStream(buffer, offset, length) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
let pos = 0;
|
|
9
|
+
const end = Math.min(offset + length, buffer.length);
|
|
10
|
+
const start = offset;
|
|
11
11
|
return {
|
|
12
12
|
readByte: ()=>{
|
|
13
13
|
if (start + pos >= end) return -1;
|
|
14
14
|
return buffer[start + pos++];
|
|
15
15
|
},
|
|
16
16
|
read: (buf, bufOffset, len)=>{
|
|
17
|
-
|
|
17
|
+
let bytesRead = 0;
|
|
18
18
|
while(bytesRead < len && start + pos < end){
|
|
19
19
|
buf[bufOffset + bytesRead] = buffer[start + pos];
|
|
20
20
|
pos++;
|
|
@@ -37,9 +37,9 @@ import { allocBufferUnsafe } from 'extract-base-iterator';
|
|
|
37
37
|
// Pre-allocation mode: single buffer, no concat needed
|
|
38
38
|
// Includes bounds checking for safety on older Node.js versions
|
|
39
39
|
if (expectedSize && expectedSize > 0) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const buffer = allocBufferUnsafe(expectedSize);
|
|
41
|
+
let bufPos = 0;
|
|
42
|
+
const bufLen = buffer.length;
|
|
43
43
|
return {
|
|
44
44
|
writeByte: (b)=>{
|
|
45
45
|
if (bufPos < bufLen) {
|
|
@@ -48,7 +48,7 @@ import { allocBufferUnsafe } from 'extract-base-iterator';
|
|
|
48
48
|
// Silently ignore overflow (should not happen with correct size)
|
|
49
49
|
},
|
|
50
50
|
write: (buf, bufOffset, len)=>{
|
|
51
|
-
for(
|
|
51
|
+
for(let i = 0; i < len && bufPos < bufLen; i++){
|
|
52
52
|
buffer[bufPos++] = buf[bufOffset + i];
|
|
53
53
|
}
|
|
54
54
|
return len;
|
|
@@ -63,10 +63,10 @@ import { allocBufferUnsafe } from 'extract-base-iterator';
|
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
// Chunked mode: accumulate in 64KB chunks (fallback for unknown size)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
const chunks = [];
|
|
67
|
+
const CHUNK_SIZE = 65536; // 64KB chunks for better memory efficiency
|
|
68
|
+
let currentChunk = allocBufferUnsafe(CHUNK_SIZE);
|
|
69
|
+
let pos = 0;
|
|
70
70
|
return {
|
|
71
71
|
writeByte: (b)=>{
|
|
72
72
|
currentChunk[pos++] = b;
|
|
@@ -77,7 +77,7 @@ import { allocBufferUnsafe } from 'extract-base-iterator';
|
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
write: function(buf, bufOffset, len) {
|
|
80
|
-
for(
|
|
80
|
+
for(let i = 0; i < len; i++){
|
|
81
81
|
this.writeByte(buf[bufOffset + i]);
|
|
82
82
|
}
|
|
83
83
|
return len;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/streams.ts"],"sourcesContent":["// Shared stream wrappers for lzma-purejs codec interface\n// These adapters convert between Buffer/lzma-purejs stream interfaces\n\nimport { allocBufferUnsafe } from 'extract-base-iterator';\n\n/**\n * Input stream wrapper for lzma-purejs\n * Wraps a Buffer region as a readable stream interface\n */\nexport function createInputStream(buffer: Buffer, offset: number, length: number) {\n
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/streams.ts"],"sourcesContent":["// Shared stream wrappers for lzma-purejs codec interface\n// These adapters convert between Buffer/lzma-purejs stream interfaces\n\nimport { allocBufferUnsafe } from 'extract-base-iterator';\n\n/**\n * Input stream wrapper for lzma-purejs\n * Wraps a Buffer region as a readable stream interface\n */\nexport function createInputStream(buffer: Buffer, offset: number, length: number) {\n let pos = 0;\n const end = Math.min(offset + length, buffer.length);\n const start = offset;\n\n return {\n readByte: (): number => {\n if (start + pos >= end) return -1;\n return buffer[start + pos++];\n },\n read: (buf: number[], bufOffset: number, len: number): number => {\n let bytesRead = 0;\n while (bytesRead < len && start + pos < end) {\n buf[bufOffset + bytesRead] = buffer[start + pos];\n pos++;\n bytesRead++;\n }\n return bytesRead === 0 ? -1 : bytesRead;\n },\n };\n}\n\n/**\n * Output stream wrapper for lzma-purejs\n * Collects output bytes into Buffer chunks\n * Uses typed arrays for memory efficiency (1 byte per element instead of 8)\n *\n * Memory optimization: If expectedSize is provided, pre-allocates a single buffer\n * to avoid double-memory during Buffer.concat.\n *\n * @param expectedSize - Optional expected output size for pre-allocation\n */\nexport function createOutputStream(expectedSize?: number) {\n // Pre-allocation mode: single buffer, no concat needed\n // Includes bounds checking for safety on older Node.js versions\n if (expectedSize && expectedSize > 0) {\n const buffer = allocBufferUnsafe(expectedSize);\n let bufPos = 0;\n const bufLen = buffer.length;\n\n return {\n writeByte: (b: number): void => {\n if (bufPos < bufLen) {\n buffer[bufPos++] = b;\n }\n // Silently ignore overflow (should not happen with correct size)\n },\n write: (buf: number[], bufOffset: number, len: number): number => {\n for (let i = 0; i < len && bufPos < bufLen; i++) {\n buffer[bufPos++] = buf[bufOffset + i];\n }\n return len;\n },\n flush: (): void => {\n // No-op for pre-allocated buffer\n },\n toBuffer: (): Buffer => {\n // Return only the used portion\n return bufPos < buffer.length ? buffer.slice(0, bufPos) : buffer;\n },\n };\n }\n\n // Chunked mode: accumulate in 64KB chunks (fallback for unknown size)\n const chunks: Buffer[] = [];\n const CHUNK_SIZE = 65536; // 64KB chunks for better memory efficiency\n let currentChunk: Buffer = allocBufferUnsafe(CHUNK_SIZE);\n let pos = 0;\n\n return {\n writeByte: (b: number): void => {\n currentChunk[pos++] = b;\n if (pos >= CHUNK_SIZE) {\n chunks.push(currentChunk);\n currentChunk = allocBufferUnsafe(CHUNK_SIZE);\n pos = 0;\n }\n },\n write: function (buf: number[], bufOffset: number, len: number): number {\n for (let i = 0; i < len; i++) {\n this.writeByte(buf[bufOffset + i]);\n }\n return len;\n },\n flush: (): void => {\n if (pos > 0) {\n // Only keep the used portion of the current chunk\n chunks.push(currentChunk.slice(0, pos));\n currentChunk = allocBufferUnsafe(CHUNK_SIZE);\n pos = 0;\n }\n },\n toBuffer: function (): Buffer {\n this.flush();\n // Optimization: if single chunk, return it directly\n if (chunks.length === 1) {\n return chunks[0];\n }\n return Buffer.concat(chunks);\n },\n };\n}\n"],"names":["allocBufferUnsafe","createInputStream","buffer","offset","length","pos","end","Math","min","start","readByte","read","buf","bufOffset","len","bytesRead","createOutputStream","expectedSize","bufPos","bufLen","writeByte","b","write","i","flush","toBuffer","slice","chunks","CHUNK_SIZE","currentChunk","push","Buffer","concat"],"mappings":"AAAA,yDAAyD;AACzD,sEAAsE;AAEtE,SAASA,iBAAiB,QAAQ,wBAAwB;AAE1D;;;CAGC,GACD,OAAO,SAASC,kBAAkBC,MAAc,EAAEC,MAAc,EAAEC,MAAc;IAC9E,IAAIC,MAAM;IACV,MAAMC,MAAMC,KAAKC,GAAG,CAACL,SAASC,QAAQF,OAAOE,MAAM;IACnD,MAAMK,QAAQN;IAEd,OAAO;QACLO,UAAU;YACR,IAAID,QAAQJ,OAAOC,KAAK,OAAO,CAAC;YAChC,OAAOJ,MAAM,CAACO,QAAQJ,MAAM;QAC9B;QACAM,MAAM,CAACC,KAAeC,WAAmBC;YACvC,IAAIC,YAAY;YAChB,MAAOA,YAAYD,OAAOL,QAAQJ,MAAMC,IAAK;gBAC3CM,GAAG,CAACC,YAAYE,UAAU,GAAGb,MAAM,CAACO,QAAQJ,IAAI;gBAChDA;gBACAU;YACF;YACA,OAAOA,cAAc,IAAI,CAAC,IAAIA;QAChC;IACF;AACF;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASC,mBAAmBC,YAAqB;IACtD,uDAAuD;IACvD,gEAAgE;IAChE,IAAIA,gBAAgBA,eAAe,GAAG;QACpC,MAAMf,SAASF,kBAAkBiB;QACjC,IAAIC,SAAS;QACb,MAAMC,SAASjB,OAAOE,MAAM;QAE5B,OAAO;YACLgB,WAAW,CAACC;gBACV,IAAIH,SAASC,QAAQ;oBACnBjB,MAAM,CAACgB,SAAS,GAAGG;gBACrB;YACA,iEAAiE;YACnE;YACAC,OAAO,CAACV,KAAeC,WAAmBC;gBACxC,IAAK,IAAIS,IAAI,GAAGA,IAAIT,OAAOI,SAASC,QAAQI,IAAK;oBAC/CrB,MAAM,CAACgB,SAAS,GAAGN,GAAG,CAACC,YAAYU,EAAE;gBACvC;gBACA,OAAOT;YACT;YACAU,OAAO;YACL,iCAAiC;YACnC;YACAC,UAAU;gBACR,+BAA+B;gBAC/B,OAAOP,SAAShB,OAAOE,MAAM,GAAGF,OAAOwB,KAAK,CAAC,GAAGR,UAAUhB;YAC5D;QACF;IACF;IAEA,sEAAsE;IACtE,MAAMyB,SAAmB,EAAE;IAC3B,MAAMC,aAAa,OAAO,2CAA2C;IACrE,IAAIC,eAAuB7B,kBAAkB4B;IAC7C,IAAIvB,MAAM;IAEV,OAAO;QACLe,WAAW,CAACC;YACVQ,YAAY,CAACxB,MAAM,GAAGgB;YACtB,IAAIhB,OAAOuB,YAAY;gBACrBD,OAAOG,IAAI,CAACD;gBACZA,eAAe7B,kBAAkB4B;gBACjCvB,MAAM;YACR;QACF;QACAiB,OAAO,SAAUV,GAAa,EAAEC,SAAiB,EAAEC,GAAW;YAC5D,IAAK,IAAIS,IAAI,GAAGA,IAAIT,KAAKS,IAAK;gBAC5B,IAAI,CAACH,SAAS,CAACR,GAAG,CAACC,YAAYU,EAAE;YACnC;YACA,OAAOT;QACT;QACAU,OAAO;YACL,IAAInB,MAAM,GAAG;gBACX,kDAAkD;gBAClDsB,OAAOG,IAAI,CAACD,aAAaH,KAAK,CAAC,GAAGrB;gBAClCwB,eAAe7B,kBAAkB4B;gBACjCvB,MAAM;YACR;QACF;QACAoB,UAAU;YACR,IAAI,CAACD,KAAK;YACV,oDAAoD;YACpD,IAAIG,OAAOvB,MAAM,KAAK,GAAG;gBACvB,OAAOuB,MAAM,CAAC,EAAE;YAClB;YACA,OAAOI,OAAOC,MAAM,CAACL;QACvB;IACF;AACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
1
|
+
export declare const SEVENZ_MAGIC: number[];
|
|
2
|
+
export declare const SIGNATURE_HEADER_SIZE = 32;
|
|
3
|
+
export declare const START_HEADER_SIZE = 20;
|
|
4
|
+
export declare const PropertyId: {
|
|
5
5
|
kEnd: number;
|
|
6
6
|
kHeader: number;
|
|
7
7
|
kArchiveProperties: number;
|
|
@@ -29,7 +29,7 @@ export declare var PropertyId: {
|
|
|
29
29
|
kStartPos: number;
|
|
30
30
|
kDummy: number;
|
|
31
31
|
};
|
|
32
|
-
export declare
|
|
32
|
+
export declare const CodecId: {
|
|
33
33
|
COPY: number[];
|
|
34
34
|
DELTA: number[];
|
|
35
35
|
LZMA: number[];
|
|
@@ -47,7 +47,7 @@ export declare var CodecId: {
|
|
|
47
47
|
BZIP2: number[];
|
|
48
48
|
AES: number[];
|
|
49
49
|
};
|
|
50
|
-
export declare
|
|
50
|
+
export declare const FileAttribute: {
|
|
51
51
|
READONLY: number;
|
|
52
52
|
HIDDEN: number;
|
|
53
53
|
SYSTEM: number;
|
|
@@ -64,7 +64,7 @@ export declare var FileAttribute: {
|
|
|
64
64
|
ENCRYPTED: number;
|
|
65
65
|
UNIX_EXTENSION: number;
|
|
66
66
|
};
|
|
67
|
-
export declare
|
|
67
|
+
export declare const UnixMode: {
|
|
68
68
|
DIR: number;
|
|
69
69
|
FILE: number;
|
|
70
70
|
SYMLINK: number;
|
|
@@ -74,7 +74,7 @@ export declare var UnixMode: {
|
|
|
74
74
|
DEFAULT_DIR: number;
|
|
75
75
|
DEFAULT_FILE: number;
|
|
76
76
|
};
|
|
77
|
-
export declare
|
|
77
|
+
export declare const ErrorCode: {
|
|
78
78
|
INVALID_SIGNATURE: string;
|
|
79
79
|
CRC_MISMATCH: string;
|
|
80
80
|
UNSUPPORTED_CODEC: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// 7z format constants
|
|
2
2
|
// Reference: https://py7zr.readthedocs.io/en/latest/archive_format.html
|
|
3
3
|
// 7z signature: '7z' + magic bytes
|
|
4
|
-
export
|
|
4
|
+
export const SEVENZ_MAGIC = [
|
|
5
5
|
0x37,
|
|
6
6
|
0x7a,
|
|
7
7
|
0xbc,
|
|
@@ -10,10 +10,10 @@ export var SEVENZ_MAGIC = [
|
|
|
10
10
|
0x1c
|
|
11
11
|
];
|
|
12
12
|
// Header sizes
|
|
13
|
-
export
|
|
14
|
-
export
|
|
13
|
+
export const SIGNATURE_HEADER_SIZE = 32;
|
|
14
|
+
export const START_HEADER_SIZE = 20; // Part of signature header after magic + version
|
|
15
15
|
// Property IDs for encoded header
|
|
16
|
-
export
|
|
16
|
+
export const PropertyId = {
|
|
17
17
|
kEnd: 0x00,
|
|
18
18
|
kHeader: 0x01,
|
|
19
19
|
kArchiveProperties: 0x02,
|
|
@@ -44,7 +44,7 @@ export var PropertyId = {
|
|
|
44
44
|
// Codec IDs
|
|
45
45
|
// 7z uses variable-length codec IDs
|
|
46
46
|
// Reference: 7za i output shows hex codec IDs (e.g., 3030501 = ARM)
|
|
47
|
-
export
|
|
47
|
+
export const CodecId = {
|
|
48
48
|
COPY: [
|
|
49
49
|
0x00
|
|
50
50
|
],
|
|
@@ -130,7 +130,7 @@ export var CodecId = {
|
|
|
130
130
|
]
|
|
131
131
|
};
|
|
132
132
|
// File attribute flags (Windows style, stored in FilesInfo)
|
|
133
|
-
export
|
|
133
|
+
export const FileAttribute = {
|
|
134
134
|
READONLY: 0x01,
|
|
135
135
|
HIDDEN: 0x02,
|
|
136
136
|
SYSTEM: 0x04,
|
|
@@ -148,7 +148,7 @@ export var FileAttribute = {
|
|
|
148
148
|
UNIX_EXTENSION: 0x8000
|
|
149
149
|
};
|
|
150
150
|
// Unix permission modes (decimal values for Node 0.8 compatibility)
|
|
151
|
-
export
|
|
151
|
+
export const UnixMode = {
|
|
152
152
|
DIR: 16384,
|
|
153
153
|
FILE: 32768,
|
|
154
154
|
SYMLINK: 40960,
|
|
@@ -159,7 +159,7 @@ export var UnixMode = {
|
|
|
159
159
|
DEFAULT_FILE: 420
|
|
160
160
|
};
|
|
161
161
|
// Error codes
|
|
162
|
-
export
|
|
162
|
+
export const ErrorCode = {
|
|
163
163
|
INVALID_SIGNATURE: 'INVALID_SIGNATURE',
|
|
164
164
|
CRC_MISMATCH: 'CRC_MISMATCH',
|
|
165
165
|
UNSUPPORTED_CODEC: 'UNSUPPORTED_CODEC',
|
|
@@ -174,7 +174,7 @@ export var ErrorCode = {
|
|
|
174
174
|
/**
|
|
175
175
|
* Create an error with a code property
|
|
176
176
|
*/ export function createCodedError(message, code) {
|
|
177
|
-
|
|
177
|
+
const err = new Error(message);
|
|
178
178
|
err.code = code;
|
|
179
179
|
return err;
|
|
180
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/constants.ts"],"sourcesContent":["// 7z format constants\n// Reference: https://py7zr.readthedocs.io/en/latest/archive_format.html\n\n// 7z signature: '7z' + magic bytes\nexport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/constants.ts"],"sourcesContent":["// 7z format constants\n// Reference: https://py7zr.readthedocs.io/en/latest/archive_format.html\n\n// 7z signature: '7z' + magic bytes\nexport const SEVENZ_MAGIC = [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c];\n\n// Header sizes\nexport const SIGNATURE_HEADER_SIZE = 32;\nexport const START_HEADER_SIZE = 20; // Part of signature header after magic + version\n\n// Property IDs for encoded header\nexport const PropertyId = {\n kEnd: 0x00,\n kHeader: 0x01,\n kArchiveProperties: 0x02,\n kAdditionalStreamsInfo: 0x03,\n kMainStreamsInfo: 0x04,\n kFilesInfo: 0x05,\n kPackInfo: 0x06,\n kUnpackInfo: 0x07,\n kSubStreamsInfo: 0x08,\n kSize: 0x09,\n kCRC: 0x0a,\n kFolder: 0x0b,\n kCodersUnpackSize: 0x0c,\n kNumUnpackStream: 0x0d,\n kEmptyStream: 0x0e,\n kEmptyFile: 0x0f,\n kAnti: 0x10,\n kName: 0x11,\n kCTime: 0x12,\n kATime: 0x13,\n kMTime: 0x14,\n kWinAttributes: 0x15,\n kComment: 0x16,\n kEncodedHeader: 0x17,\n kStartPos: 0x18,\n kDummy: 0x19,\n};\n\n// Codec IDs\n// 7z uses variable-length codec IDs\n// Reference: 7za i output shows hex codec IDs (e.g., 3030501 = ARM)\nexport const CodecId = {\n COPY: [0x00],\n DELTA: [0x03],\n LZMA: [0x03, 0x01, 0x01],\n LZMA2: [0x21],\n BCJ_X86: [0x03, 0x03, 0x01, 0x03],\n BCJ_PPC: [0x03, 0x03, 0x02, 0x05],\n BCJ_IA64: [0x03, 0x03, 0x04, 0x01],\n BCJ_ARM: [0x03, 0x03, 0x05, 0x01],\n BCJ_ARMT: [0x03, 0x03, 0x07, 0x01],\n BCJ_SPARC: [0x03, 0x03, 0x08, 0x05],\n BCJ_ARM64: [0x03, 0x03, 0x0a, 0x01],\n BCJ2: [0x03, 0x03, 0x01, 0x1b],\n PPMD: [0x03, 0x04, 0x01],\n DEFLATE: [0x04, 0x01, 0x08],\n BZIP2: [0x04, 0x02, 0x02],\n AES: [0x06, 0xf1, 0x07, 0x01],\n};\n\n// File attribute flags (Windows style, stored in FilesInfo)\nexport const FileAttribute = {\n READONLY: 0x01,\n HIDDEN: 0x02,\n SYSTEM: 0x04,\n DIRECTORY: 0x10,\n ARCHIVE: 0x20,\n DEVICE: 0x40,\n NORMAL: 0x80,\n TEMPORARY: 0x100,\n SPARSE_FILE: 0x200,\n REPARSE_POINT: 0x400,\n COMPRESSED: 0x800,\n OFFLINE: 0x1000,\n NOT_CONTENT_INDEXED: 0x2000,\n ENCRYPTED: 0x4000,\n UNIX_EXTENSION: 0x8000,\n};\n\n// Unix permission modes (decimal values for Node 0.8 compatibility)\nexport const UnixMode = {\n DIR: 16384, // 0o40000 - directory\n FILE: 32768, // 0o100000 - regular file\n SYMLINK: 40960, // 0o120000 - symbolic link\n RWXRWXRWX: 511, // 0o777\n RWXRXRX: 493, // 0o755\n RWRR: 420, // 0o644\n DEFAULT_DIR: 493, // 0o755 - rwxr-xr-x\n DEFAULT_FILE: 420, // 0o644 - rw-r--r--\n};\n\n// Error codes\nexport const ErrorCode = {\n INVALID_SIGNATURE: 'INVALID_SIGNATURE',\n CRC_MISMATCH: 'CRC_MISMATCH',\n UNSUPPORTED_CODEC: 'UNSUPPORTED_CODEC',\n UNSUPPORTED_VERSION: 'UNSUPPORTED_VERSION',\n UNSUPPORTED_FEATURE: 'UNSUPPORTED_FEATURE',\n TRUNCATED_ARCHIVE: 'TRUNCATED_ARCHIVE',\n CORRUPT_HEADER: 'CORRUPT_HEADER',\n ENCRYPTED_ARCHIVE: 'ENCRYPTED_ARCHIVE',\n COMPRESSED_HEADER: 'COMPRESSED_HEADER',\n DECOMPRESSION_FAILED: 'DECOMPRESSION_FAILED',\n};\n\n// Error with code property\nexport interface CodedError extends Error {\n code: string;\n}\n\n/**\n * Create an error with a code property\n */\nexport function createCodedError(message: string, code: string): CodedError {\n const err = new Error(message) as CodedError;\n err.code = code;\n return err;\n}\n"],"names":["SEVENZ_MAGIC","SIGNATURE_HEADER_SIZE","START_HEADER_SIZE","PropertyId","kEnd","kHeader","kArchiveProperties","kAdditionalStreamsInfo","kMainStreamsInfo","kFilesInfo","kPackInfo","kUnpackInfo","kSubStreamsInfo","kSize","kCRC","kFolder","kCodersUnpackSize","kNumUnpackStream","kEmptyStream","kEmptyFile","kAnti","kName","kCTime","kATime","kMTime","kWinAttributes","kComment","kEncodedHeader","kStartPos","kDummy","CodecId","COPY","DELTA","LZMA","LZMA2","BCJ_X86","BCJ_PPC","BCJ_IA64","BCJ_ARM","BCJ_ARMT","BCJ_SPARC","BCJ_ARM64","BCJ2","PPMD","DEFLATE","BZIP2","AES","FileAttribute","READONLY","HIDDEN","SYSTEM","DIRECTORY","ARCHIVE","DEVICE","NORMAL","TEMPORARY","SPARSE_FILE","REPARSE_POINT","COMPRESSED","OFFLINE","NOT_CONTENT_INDEXED","ENCRYPTED","UNIX_EXTENSION","UnixMode","DIR","FILE","SYMLINK","RWXRWXRWX","RWXRXRX","RWRR","DEFAULT_DIR","DEFAULT_FILE","ErrorCode","INVALID_SIGNATURE","CRC_MISMATCH","UNSUPPORTED_CODEC","UNSUPPORTED_VERSION","UNSUPPORTED_FEATURE","TRUNCATED_ARCHIVE","CORRUPT_HEADER","ENCRYPTED_ARCHIVE","COMPRESSED_HEADER","DECOMPRESSION_FAILED","createCodedError","message","code","err","Error"],"mappings":"AAAA,sBAAsB;AACtB,wEAAwE;AAExE,mCAAmC;AACnC,OAAO,MAAMA,eAAe;IAAC;IAAM;IAAM;IAAM;IAAM;IAAM;CAAK,CAAC;AAEjE,eAAe;AACf,OAAO,MAAMC,wBAAwB,GAAG;AACxC,OAAO,MAAMC,oBAAoB,GAAG,CAAC,iDAAiD;AAEtF,kCAAkC;AAClC,OAAO,MAAMC,aAAa;IACxBC,MAAM;IACNC,SAAS;IACTC,oBAAoB;IACpBC,wBAAwB;IACxBC,kBAAkB;IAClBC,YAAY;IACZC,WAAW;IACXC,aAAa;IACbC,iBAAiB;IACjBC,OAAO;IACPC,MAAM;IACNC,SAAS;IACTC,mBAAmB;IACnBC,kBAAkB;IAClBC,cAAc;IACdC,YAAY;IACZC,OAAO;IACPC,OAAO;IACPC,QAAQ;IACRC,QAAQ;IACRC,QAAQ;IACRC,gBAAgB;IAChBC,UAAU;IACVC,gBAAgB;IAChBC,WAAW;IACXC,QAAQ;AACV,EAAE;AAEF,YAAY;AACZ,oCAAoC;AACpC,oEAAoE;AACpE,OAAO,MAAMC,UAAU;IACrBC,MAAM;QAAC;KAAK;IACZC,OAAO;QAAC;KAAK;IACbC,MAAM;QAAC;QAAM;QAAM;KAAK;IACxBC,OAAO;QAAC;KAAK;IACbC,SAAS;QAAC;QAAM;QAAM;QAAM;KAAK;IACjCC,SAAS;QAAC;QAAM;QAAM;QAAM;KAAK;IACjCC,UAAU;QAAC;QAAM;QAAM;QAAM;KAAK;IAClCC,SAAS;QAAC;QAAM;QAAM;QAAM;KAAK;IACjCC,UAAU;QAAC;QAAM;QAAM;QAAM;KAAK;IAClCC,WAAW;QAAC;QAAM;QAAM;QAAM;KAAK;IACnCC,WAAW;QAAC;QAAM;QAAM;QAAM;KAAK;IACnCC,MAAM;QAAC;QAAM;QAAM;QAAM;KAAK;IAC9BC,MAAM;QAAC;QAAM;QAAM;KAAK;IACxBC,SAAS;QAAC;QAAM;QAAM;KAAK;IAC3BC,OAAO;QAAC;QAAM;QAAM;KAAK;IACzBC,KAAK;QAAC;QAAM;QAAM;QAAM;KAAK;AAC/B,EAAE;AAEF,4DAA4D;AAC5D,OAAO,MAAMC,gBAAgB;IAC3BC,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC,WAAW;IACXC,SAAS;IACTC,QAAQ;IACRC,QAAQ;IACRC,WAAW;IACXC,aAAa;IACbC,eAAe;IACfC,YAAY;IACZC,SAAS;IACTC,qBAAqB;IACrBC,WAAW;IACXC,gBAAgB;AAClB,EAAE;AAEF,oEAAoE;AACpE,OAAO,MAAMC,WAAW;IACtBC,KAAK;IACLC,MAAM;IACNC,SAAS;IACTC,WAAW;IACXC,SAAS;IACTC,MAAM;IACNC,aAAa;IACbC,cAAc;AAChB,EAAE;AAEF,cAAc;AACd,OAAO,MAAMC,YAAY;IACvBC,mBAAmB;IACnBC,cAAc;IACdC,mBAAmB;IACnBC,qBAAqB;IACrBC,qBAAqB;IACrBC,mBAAmB;IACnBC,gBAAgB;IAChBC,mBAAmB;IACnBC,mBAAmB;IACnBC,sBAAsB;AACxB,EAAE;AAOF;;CAEC,GACD,OAAO,SAASC,iBAAiBC,OAAe,EAAEC,IAAY;IAC5D,MAAMC,MAAM,IAAIC,MAAMH;IACtBE,IAAID,IAAI,GAAGA;IACX,OAAOC;AACT"}
|