7z-iterator 0.2.1 → 0.2.3
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/assets/lzma-purejs/package.json +3 -3
- package/dist/cjs/SevenZipIterator.js +2 -4
- package/dist/cjs/SevenZipIterator.js.map +1 -1
- package/dist/cjs/compat.d.cts +1 -0
- package/dist/cjs/compat.d.ts +1 -0
- package/dist/cjs/compat.js +32 -0
- package/dist/cjs/compat.js.map +1 -0
- package/dist/cjs/sevenz/SevenZipParser.d.cts +3 -1
- package/dist/cjs/sevenz/SevenZipParser.d.ts +3 -1
- package/dist/cjs/sevenz/SevenZipParser.js +13 -5
- package/dist/cjs/sevenz/SevenZipParser.js.map +1 -1
- package/dist/cjs/sevenz/codecs/Copy.d.cts +3 -1
- package/dist/cjs/sevenz/codecs/Copy.d.ts +3 -1
- package/dist/cjs/sevenz/codecs/Copy.js +15 -2
- package/dist/cjs/sevenz/codecs/Copy.js.map +1 -1
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.d.cts +2 -2
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.d.ts +2 -2
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.js +15 -2
- package/dist/cjs/sevenz/codecs/createBufferingDecoder.js.map +1 -1
- package/dist/cjs/sevenz/codecs/lzmaCompat.d.cts +9 -3
- package/dist/cjs/sevenz/codecs/lzmaCompat.d.ts +9 -3
- package/dist/cjs/sevenz/codecs/lzmaCompat.js +5 -15
- package/dist/cjs/sevenz/codecs/lzmaCompat.js.map +1 -1
- package/dist/esm/SevenZipIterator.js +1 -3
- package/dist/esm/SevenZipIterator.js.map +1 -1
- package/dist/esm/compat.d.ts +1 -0
- package/dist/esm/compat.js +16 -0
- package/dist/esm/compat.js.map +1 -0
- package/dist/esm/sevenz/SevenZipParser.d.ts +3 -1
- package/dist/esm/sevenz/SevenZipParser.js +9 -1
- package/dist/esm/sevenz/SevenZipParser.js.map +1 -1
- package/dist/esm/sevenz/codecs/Copy.d.ts +3 -1
- package/dist/esm/sevenz/codecs/Copy.js +9 -1
- package/dist/esm/sevenz/codecs/Copy.js.map +1 -1
- package/dist/esm/sevenz/codecs/createBufferingDecoder.d.ts +2 -2
- package/dist/esm/sevenz/codecs/createBufferingDecoder.js +9 -1
- package/dist/esm/sevenz/codecs/createBufferingDecoder.js.map +1 -1
- package/dist/esm/sevenz/codecs/lzmaCompat.d.ts +9 -3
- package/dist/esm/sevenz/codecs/lzmaCompat.js +13 -17
- package/dist/esm/sevenz/codecs/lzmaCompat.js.map +1 -1
- package/package.json +3 -7
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
// Copy codec - passthrough (no compression)
|
|
2
2
|
// This is the simplest codec, just passes data through unchanged
|
|
3
|
-
import
|
|
3
|
+
import Stream from 'stream';
|
|
4
|
+
// Use native streams when available, readable-stream only for Node 0.x
|
|
5
|
+
const major = +process.versions.node.split('.')[0];
|
|
6
|
+
let PassThrough;
|
|
7
|
+
if (major > 0) {
|
|
8
|
+
PassThrough = Stream.PassThrough;
|
|
9
|
+
} else {
|
|
10
|
+
PassThrough = require('readable-stream').PassThrough;
|
|
11
|
+
}
|
|
4
12
|
/**
|
|
5
13
|
* Create a Copy decoder stream
|
|
6
14
|
* Simply passes through data unchanged
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/Copy.ts"],"sourcesContent":["// Copy codec - passthrough (no compression)\n// This is the simplest codec, just passes data through unchanged\n\nimport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/Copy.ts"],"sourcesContent":["// Copy codec - passthrough (no compression)\n// This is the simplest codec, just passes data through unchanged\n\nimport Stream from 'stream';\n\n// Use native streams when available, readable-stream only for Node 0.x\nconst major = +process.versions.node.split('.')[0];\nlet PassThrough: typeof Stream.PassThrough;\nif (major > 0) {\n PassThrough = Stream.PassThrough;\n} else {\n PassThrough = require('readable-stream').PassThrough;\n}\ntype Transform = Stream.Transform;\n\n/**\n * Create a Copy decoder stream\n * Simply passes through data unchanged\n */\nexport function createCopyDecoder(): Transform {\n return new PassThrough();\n}\n\n/**\n * Decode a buffer using Copy codec (no-op)\n * @param input - Input buffer\n * @param _properties - Unused\n * @param _unpackSize - Unused\n * @returns Same buffer (no transformation)\n */\nexport function decodeCopy(input: Buffer, _properties?: Buffer, _unpackSize?: number): Buffer {\n return input;\n}\n"],"names":["Stream","major","process","versions","node","split","PassThrough","require","createCopyDecoder","decodeCopy","input","_properties","_unpackSize"],"mappings":"AAAA,4CAA4C;AAC5C,iEAAiE;AAEjE,OAAOA,YAAY,SAAS;AAE5B,uEAAuE;AACvE,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAIC;AACJ,IAAIL,QAAQ,GAAG;IACbK,cAAcN,OAAOM,WAAW;AAClC,OAAO;IACLA,cAAcC,QAAQ,mBAAmBD,WAAW;AACtD;AAGA;;;CAGC,GACD,OAAO,SAASE;IACd,OAAO,IAAIF;AACb;AAEA;;;;;;CAMC,GACD,OAAO,SAASG,WAAWC,KAAa,EAAEC,WAAoB,EAAEC,WAAoB;IAClF,OAAOF;AACT"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Stream from 'stream';
|
|
2
2
|
export type DecodeFn = (input: Buffer, properties?: Buffer, unpackSize?: number) => Buffer;
|
|
3
3
|
/**
|
|
4
4
|
* Create a Transform stream that buffers all input, then decodes in flush
|
|
5
5
|
* This is the common pattern for codecs that can't stream (need full input)
|
|
6
6
|
*/
|
|
7
|
-
export default function createBufferingDecoder(decodeFn: DecodeFn, properties?: Buffer, unpackSize?: number): Transform;
|
|
7
|
+
export default function createBufferingDecoder(decodeFn: DecodeFn, properties?: Buffer, unpackSize?: number): Stream.Transform;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
// Helper to create a Transform stream that buffers all input before decoding
|
|
2
2
|
// Used by codecs that need the full input before decompression (LZMA, LZMA2, BZip2, etc.)
|
|
3
|
-
import
|
|
3
|
+
import Stream from 'stream';
|
|
4
|
+
// Use native streams when available, readable-stream only for Node 0.x
|
|
5
|
+
const major = +process.versions.node.split('.')[0];
|
|
6
|
+
let Transform;
|
|
7
|
+
if (major > 0) {
|
|
8
|
+
Transform = Stream.Transform;
|
|
9
|
+
} else {
|
|
10
|
+
Transform = require('readable-stream').Transform;
|
|
11
|
+
}
|
|
4
12
|
/**
|
|
5
13
|
* Create a Transform stream that buffers all input, then decodes in flush
|
|
6
14
|
* This is the common pattern for codecs that can't stream (need full input)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/createBufferingDecoder.ts"],"sourcesContent":["// Helper to create a Transform stream that buffers all input before decoding\n// Used by codecs that need the full input before decompression (LZMA, LZMA2, BZip2, etc.)\n\nimport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/createBufferingDecoder.ts"],"sourcesContent":["// Helper to create a Transform stream that buffers all input before decoding\n// Used by codecs that need the full input before decompression (LZMA, LZMA2, BZip2, etc.)\n\nimport Stream from 'stream';\n\n// Use native streams when available, readable-stream only for Node 0.x\nconst major = +process.versions.node.split('.')[0];\nlet Transform: typeof Stream.Transform;\nif (major > 0) {\n Transform = Stream.Transform;\n} else {\n Transform = require('readable-stream').Transform;\n}\ntype TransformCallback = (error?: Error | null, data?: Buffer) => void;\n\nexport type DecodeFn = (input: Buffer, properties?: Buffer, unpackSize?: number) => Buffer;\n\n/**\n * Create a Transform stream that buffers all input, then decodes in flush\n * This is the common pattern for codecs that can't stream (need full input)\n */\nexport default function createBufferingDecoder(decodeFn: DecodeFn, properties?: Buffer, unpackSize?: number): Stream.Transform {\n var chunks: Buffer[] = [];\n\n return new Transform({\n transform: (chunk: Buffer, _encoding: string, callback: TransformCallback) => {\n chunks.push(chunk);\n callback();\n },\n flush: function (callback: TransformCallback) {\n try {\n var input = Buffer.concat(chunks);\n var output = decodeFn(input, properties, unpackSize);\n this.push(output);\n callback();\n } catch (err) {\n callback(err as Error);\n }\n },\n });\n}\n"],"names":["Stream","major","process","versions","node","split","Transform","require","createBufferingDecoder","decodeFn","properties","unpackSize","chunks","transform","chunk","_encoding","callback","push","flush","input","Buffer","concat","output","err"],"mappings":"AAAA,6EAA6E;AAC7E,0FAA0F;AAE1F,OAAOA,YAAY,SAAS;AAE5B,uEAAuE;AACvE,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAIC;AACJ,IAAIL,QAAQ,GAAG;IACbK,YAAYN,OAAOM,SAAS;AAC9B,OAAO;IACLA,YAAYC,QAAQ,mBAAmBD,SAAS;AAClD;AAKA;;;CAGC,GACD,eAAe,SAASE,uBAAuBC,QAAkB,EAAEC,UAAmB,EAAEC,UAAmB;IACzG,IAAIC,SAAmB,EAAE;IAEzB,OAAO,IAAIN,UAAU;QACnBO,WAAW,CAACC,OAAeC,WAAmBC;YAC5CJ,OAAOK,IAAI,CAACH;YACZE;QACF;QACAE,OAAO,SAAUF,QAA2B;YAC1C,IAAI;gBACF,IAAIG,QAAQC,OAAOC,MAAM,CAACT;gBAC1B,IAAIU,SAASb,SAASU,OAAOT,YAAYC;gBACzC,IAAI,CAACM,IAAI,CAACK;gBACVN;YACF,EAAE,OAAOO,KAAK;gBACZP,SAASO;YACX;QACF;IACF;AACF"}
|
|
@@ -14,10 +14,16 @@ export declare var hasNativeLzma: boolean;
|
|
|
14
14
|
* Create a native LZMA2 decoder stream
|
|
15
15
|
* Returns a Transform stream that decodes LZMA2 data
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* Note: Native LZMA2 decoder disabled due to LZMA_DATA_ERROR issues with
|
|
18
|
+
* lzma-native's rawDecoder for LZMA2. The native decoder fails partway through
|
|
19
|
+
* decompression on certain archives (e.g., Node.js Windows releases), reporting
|
|
20
|
+
* "Data is corrupt" even when the data is valid. Falls back to lzma-purejs
|
|
21
|
+
* which handles all LZMA2 streams correctly.
|
|
22
|
+
*
|
|
23
|
+
* @param _dictSize - Dictionary size (unused, native disabled)
|
|
24
|
+
* @returns null - always falls back to pure JS decoder
|
|
19
25
|
*/
|
|
20
|
-
export declare function createNativeLzma2Decoder(
|
|
26
|
+
export declare function createNativeLzma2Decoder(_dictSize?: number): Transform | null;
|
|
21
27
|
/**
|
|
22
28
|
* Create a native LZMA1 decoder stream
|
|
23
29
|
* Returns a Transform stream that decodes LZMA1 data
|
|
@@ -30,23 +30,19 @@ export var hasNativeLzma = _hasNativeLzmaLib;
|
|
|
30
30
|
* Create a native LZMA2 decoder stream
|
|
31
31
|
* Returns a Transform stream that decodes LZMA2 data
|
|
32
32
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return
|
|
46
|
-
filters: [
|
|
47
|
-
filterOpts
|
|
48
|
-
]
|
|
49
|
-
});
|
|
33
|
+
* Note: Native LZMA2 decoder disabled due to LZMA_DATA_ERROR issues with
|
|
34
|
+
* lzma-native's rawDecoder for LZMA2. The native decoder fails partway through
|
|
35
|
+
* decompression on certain archives (e.g., Node.js Windows releases), reporting
|
|
36
|
+
* "Data is corrupt" even when the data is valid. Falls back to lzma-purejs
|
|
37
|
+
* which handles all LZMA2 streams correctly.
|
|
38
|
+
*
|
|
39
|
+
* @param _dictSize - Dictionary size (unused, native disabled)
|
|
40
|
+
* @returns null - always falls back to pure JS decoder
|
|
41
|
+
*/ export function createNativeLzma2Decoder(_dictSize) {
|
|
42
|
+
// Native LZMA2 disabled - lzma-native's rawDecoder has issues with certain
|
|
43
|
+
// LZMA2 streams (LZMA_DATA_ERROR: Data is corrupt), even when data is valid.
|
|
44
|
+
// The pure JS lzma-purejs implementation handles all streams correctly.
|
|
45
|
+
return null;
|
|
50
46
|
}
|
|
51
47
|
/**
|
|
52
48
|
* Create a native LZMA1 decoder stream
|
|
@@ -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\nvar _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\nvar lzmaNative: typeof import('lzma-native') | null = null;\nvar _hasNativeLzmaLib = false;\nvar 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 var hasNativeLzma = _hasNativeLzmaLib;\n\n/**\n * Create a native LZMA2 decoder stream\n * Returns a Transform stream that decodes LZMA2 data\n *\n * @param
|
|
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\nvar _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\nvar lzmaNative: typeof import('lzma-native') | null = null;\nvar _hasNativeLzmaLib = false;\nvar 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 var 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,IAAIC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAExF,iFAAiF;AACjF,gFAAgF;AAChF,+CAA+C;AAC/C,IAAIG,aAAkD;AACtD,IAAIC,oBAAoB;AACxB,IAAIC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAEhD,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,IAAIC,gBAAgBR,kBAAkB;AAE7C;;;;;;;;;;;;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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "7z-iterator",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
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",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"./package.json": "./package.json"
|
|
33
33
|
},
|
|
34
34
|
"main": "dist/cjs/index.js",
|
|
35
|
+
"source": "src/index.ts",
|
|
35
36
|
"types": "dist/cjs/index.d.ts",
|
|
36
37
|
"files": [
|
|
37
38
|
"dist",
|
|
@@ -63,11 +64,9 @@
|
|
|
63
64
|
"@biomejs/biome": "*",
|
|
64
65
|
"@types/mocha": "*",
|
|
65
66
|
"@types/node": "*",
|
|
66
|
-
"array-find": "^1.0.0",
|
|
67
|
-
"end-with": "^1.0.2",
|
|
68
67
|
"fs-iterator": "*",
|
|
69
68
|
"fs-stats-spys": "*",
|
|
70
|
-
"get-remote": "^2.2.
|
|
69
|
+
"get-remote": "^2.2.4",
|
|
71
70
|
"lzma-native": "^8.0.6",
|
|
72
71
|
"node-version-use": "*",
|
|
73
72
|
"pinkie-promise": "*",
|
|
@@ -78,8 +77,5 @@
|
|
|
78
77
|
},
|
|
79
78
|
"engines": {
|
|
80
79
|
"node": ">=0.8"
|
|
81
|
-
},
|
|
82
|
-
"tsds": {
|
|
83
|
-
"source": "src/index.ts"
|
|
84
80
|
}
|
|
85
81
|
}
|