7z-iterator 0.1.7 → 0.1.8

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.
@@ -79,23 +79,29 @@ LiteralDecoder.prototype.create = function(numPosBits, numPrevBits){
79
79
  this._numPosBits = numPosBits;
80
80
  this._posMask = (1 << numPosBits) - 1;
81
81
  this._numPrevBits = numPrevBits;
82
+ // Lazy allocation: only create coders array, allocate individual coders on demand
83
+ // This saves significant memory for archives that don't use all coder slots
82
84
  this._coders = [];
83
- var count = 1 << (this._numPrevBits + this._numPosBits);
84
- for (var i = 0; i < count; i++){
85
- this._coders[i] = new LiteralDecoder.Decoder2();
86
- }
85
+ this._coderCount = 1 << (this._numPrevBits + this._numPosBits);
87
86
  };
88
87
 
89
88
  LiteralDecoder.prototype.init = function(){
90
- var count = 1 << (this._numPrevBits + this._numPosBits);
91
- for (var i = 0; i < count; i++){
92
- this._coders[i].init();
89
+ // Only init coders that have been allocated (lazy allocation support)
90
+ for (var i = 0; i < this._coders.length; i++){
91
+ if (this._coders[i]) {
92
+ this._coders[i].init();
93
+ }
93
94
  }
94
95
  };
95
96
 
96
97
  LiteralDecoder.prototype.getDecoder = function(pos, prevByte){
97
- return this._coders[((pos & this._posMask) << this._numPrevBits) +
98
- ((prevByte & 0xff) >>> (8 - this._numPrevBits))];
98
+ var index = ((pos & this._posMask) << this._numPrevBits) +
99
+ ((prevByte & 0xff) >>> (8 - this._numPrevBits));
100
+ // Lazy allocation: create coder on first access
101
+ if (!this._coders[index]) {
102
+ this._coders[index] = new LiteralDecoder.Decoder2();
103
+ }
104
+ return this._coders[index];
99
105
  };
100
106
 
101
107
  var Decoder = function(){
@@ -1,7 +1,18 @@
1
1
  'use strict';
2
2
 
3
3
  // Node 0.8 compatible buffer allocation
4
+ // Note: For OutWindow, zero-fill is not required since we write before reading.
5
+ // Using allocUnsafe/uninitialized buffer saves significant memory and time.
4
6
  var makeBuffer = function(len) {
7
+ if (Buffer.allocUnsafe) {
8
+ return Buffer.allocUnsafe(len);
9
+ }
10
+ // Node 0.8 fallback - new Buffer() is uninitialized (fast)
11
+ return new Buffer(len);
12
+ };
13
+
14
+ // Safe version that zero-fills (use when buffer may be read before written)
15
+ makeBuffer.safe = function(len) {
5
16
  if (Buffer.alloc) {
6
17
  return Buffer.alloc(len);
7
18
  }
@@ -1,7 +1,7 @@
1
1
  // Deflate codec - standard zlib/zip compression
2
2
  // 7z uses raw deflate without zlib or gzip headers
3
3
  //
4
- // Uses pako for pure JavaScript decompression (works on all Node versions)
4
+ // Uses native zlib on Node 0.11.12+, falls back to pako for older versions
5
5
  "use strict";
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
@@ -21,7 +21,6 @@ _export(exports, {
21
21
  }
22
22
  });
23
23
  var _extractbaseiterator = require("extract-base-iterator");
24
- var _pako = /*#__PURE__*/ _interop_require_default(require("pako"));
25
24
  var _createBufferingDecoderts = /*#__PURE__*/ _interop_require_default(require("./createBufferingDecoder.js"));
26
25
  function _interop_require_default(obj) {
27
26
  return obj && obj.__esModule ? obj : {
@@ -29,9 +28,7 @@ function _interop_require_default(obj) {
29
28
  };
30
29
  }
31
30
  function decodeDeflate(input, _properties, _unpackSize) {
32
- // pako.inflateRaw returns Uint8Array, convert to Buffer
33
- var result = _pako.default.inflateRaw(input);
34
- return (0, _extractbaseiterator.bufferFrom)(result);
31
+ return (0, _extractbaseiterator.inflateRaw)(input);
35
32
  }
36
33
  function createDeflateDecoder(properties, unpackSize) {
37
34
  return (0, _createBufferingDecoderts.default)(decodeDeflate, properties, unpackSize);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/Deflate.ts"],"sourcesContent":["// Deflate codec - standard zlib/zip compression\n// 7z uses raw deflate without zlib or gzip headers\n//\n// Uses pako for pure JavaScript decompression (works on all Node versions)\n\nimport { bufferFrom } from 'extract-base-iterator';\nimport pako from 'pako';\nimport type { Transform } from 'readable-stream';\nimport createBufferingDecoder from './createBufferingDecoder.ts';\n\n/**\n * Decode Deflate compressed data\n *\n * @param input - Deflate compressed data\n * @param _properties - Unused for Deflate\n * @param _unpackSize - Unused for Deflate\n * @returns Decompressed data\n */\nexport function decodeDeflate(input: Buffer, _properties?: Buffer, _unpackSize?: number): Buffer {\n // pako.inflateRaw returns Uint8Array, convert to Buffer\n var result = pako.inflateRaw(input);\n return bufferFrom(result);\n}\n\n/**\n * Create a Deflate decoder Transform stream\n */\nexport function createDeflateDecoder(properties?: Buffer, unpackSize?: number): Transform {\n return createBufferingDecoder(decodeDeflate, properties, unpackSize);\n}\n"],"names":["createDeflateDecoder","decodeDeflate","input","_properties","_unpackSize","result","pako","inflateRaw","bufferFrom","properties","unpackSize","createBufferingDecoder"],"mappings":"AAAA,gDAAgD;AAChD,mDAAmD;AACnD,EAAE;AACF,2EAA2E;;;;;;;;;;;;QAwB3DA;eAAAA;;QATAC;eAAAA;;;mCAbW;2DACV;+EAEkB;;;;;;AAU5B,SAASA,cAAcC,KAAa,EAAEC,WAAoB,EAAEC,WAAoB;IACrF,wDAAwD;IACxD,IAAIC,SAASC,aAAI,CAACC,UAAU,CAACL;IAC7B,OAAOM,IAAAA,+BAAU,EAACH;AACpB;AAKO,SAASL,qBAAqBS,UAAmB,EAAEC,UAAmB;IAC3E,OAAOC,IAAAA,iCAAsB,EAACV,eAAeQ,YAAYC;AAC3D"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/Deflate.ts"],"sourcesContent":["// Deflate codec - standard zlib/zip compression\n// 7z uses raw deflate without zlib or gzip headers\n//\n// Uses native zlib on Node 0.11.12+, falls back to pako for older versions\n\nimport { inflateRaw } from 'extract-base-iterator';\nimport type { Transform } from 'readable-stream';\nimport createBufferingDecoder from './createBufferingDecoder.ts';\n\n/**\n * Decode Deflate compressed data\n *\n * @param input - Deflate compressed data\n * @param _properties - Unused for Deflate\n * @param _unpackSize - Unused for Deflate\n * @returns Decompressed data\n */\nexport function decodeDeflate(input: Buffer, _properties?: Buffer, _unpackSize?: number): Buffer {\n return inflateRaw(input);\n}\n\n/**\n * Create a Deflate decoder Transform stream\n */\nexport function createDeflateDecoder(properties?: Buffer, unpackSize?: number): Transform {\n return createBufferingDecoder(decodeDeflate, properties, unpackSize);\n}\n"],"names":["createDeflateDecoder","decodeDeflate","input","_properties","_unpackSize","inflateRaw","properties","unpackSize","createBufferingDecoder"],"mappings":"AAAA,gDAAgD;AAChD,mDAAmD;AACnD,EAAE;AACF,2EAA2E;;;;;;;;;;;;QAqB3DA;eAAAA;;QAPAC;eAAAA;;;mCAZW;+EAEQ;;;;;;AAU5B,SAASA,cAAcC,KAAa,EAAEC,WAAoB,EAAEC,WAAoB;IACrF,OAAOC,IAAAA,+BAAU,EAACH;AACpB;AAKO,SAASF,qBAAqBM,UAAmB,EAAEC,UAAmB;IAC3E,OAAOC,IAAAA,iCAAsB,EAACP,eAAeK,YAAYC;AAC3D"}
@@ -1,9 +1,8 @@
1
1
  // Deflate codec - standard zlib/zip compression
2
2
  // 7z uses raw deflate without zlib or gzip headers
3
3
  //
4
- // Uses pako for pure JavaScript decompression (works on all Node versions)
5
- import { bufferFrom } from 'extract-base-iterator';
6
- import pako from 'pako';
4
+ // Uses native zlib on Node 0.11.12+, falls back to pako for older versions
5
+ import { inflateRaw } from 'extract-base-iterator';
7
6
  import createBufferingDecoder from './createBufferingDecoder.js';
8
7
  /**
9
8
  * Decode Deflate compressed data
@@ -13,9 +12,7 @@ import createBufferingDecoder from './createBufferingDecoder.js';
13
12
  * @param _unpackSize - Unused for Deflate
14
13
  * @returns Decompressed data
15
14
  */ export function decodeDeflate(input, _properties, _unpackSize) {
16
- // pako.inflateRaw returns Uint8Array, convert to Buffer
17
- var result = pako.inflateRaw(input);
18
- return bufferFrom(result);
15
+ return inflateRaw(input);
19
16
  }
20
17
  /**
21
18
  * Create a Deflate decoder Transform stream
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/Deflate.ts"],"sourcesContent":["// Deflate codec - standard zlib/zip compression\n// 7z uses raw deflate without zlib or gzip headers\n//\n// Uses pako for pure JavaScript decompression (works on all Node versions)\n\nimport { bufferFrom } from 'extract-base-iterator';\nimport pako from 'pako';\nimport type { Transform } from 'readable-stream';\nimport createBufferingDecoder from './createBufferingDecoder.ts';\n\n/**\n * Decode Deflate compressed data\n *\n * @param input - Deflate compressed data\n * @param _properties - Unused for Deflate\n * @param _unpackSize - Unused for Deflate\n * @returns Decompressed data\n */\nexport function decodeDeflate(input: Buffer, _properties?: Buffer, _unpackSize?: number): Buffer {\n // pako.inflateRaw returns Uint8Array, convert to Buffer\n var result = pako.inflateRaw(input);\n return bufferFrom(result);\n}\n\n/**\n * Create a Deflate decoder Transform stream\n */\nexport function createDeflateDecoder(properties?: Buffer, unpackSize?: number): Transform {\n return createBufferingDecoder(decodeDeflate, properties, unpackSize);\n}\n"],"names":["bufferFrom","pako","createBufferingDecoder","decodeDeflate","input","_properties","_unpackSize","result","inflateRaw","createDeflateDecoder","properties","unpackSize"],"mappings":"AAAA,gDAAgD;AAChD,mDAAmD;AACnD,EAAE;AACF,2EAA2E;AAE3E,SAASA,UAAU,QAAQ,wBAAwB;AACnD,OAAOC,UAAU,OAAO;AAExB,OAAOC,4BAA4B,8BAA8B;AAEjE;;;;;;;CAOC,GACD,OAAO,SAASC,cAAcC,KAAa,EAAEC,WAAoB,EAAEC,WAAoB;IACrF,wDAAwD;IACxD,IAAIC,SAASN,KAAKO,UAAU,CAACJ;IAC7B,OAAOJ,WAAWO;AACpB;AAEA;;CAEC,GACD,OAAO,SAASE,qBAAqBC,UAAmB,EAAEC,UAAmB;IAC3E,OAAOT,uBAAuBC,eAAeO,YAAYC;AAC3D"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/sevenz/codecs/Deflate.ts"],"sourcesContent":["// Deflate codec - standard zlib/zip compression\n// 7z uses raw deflate without zlib or gzip headers\n//\n// Uses native zlib on Node 0.11.12+, falls back to pako for older versions\n\nimport { inflateRaw } from 'extract-base-iterator';\nimport type { Transform } from 'readable-stream';\nimport createBufferingDecoder from './createBufferingDecoder.ts';\n\n/**\n * Decode Deflate compressed data\n *\n * @param input - Deflate compressed data\n * @param _properties - Unused for Deflate\n * @param _unpackSize - Unused for Deflate\n * @returns Decompressed data\n */\nexport function decodeDeflate(input: Buffer, _properties?: Buffer, _unpackSize?: number): Buffer {\n return inflateRaw(input);\n}\n\n/**\n * Create a Deflate decoder Transform stream\n */\nexport function createDeflateDecoder(properties?: Buffer, unpackSize?: number): Transform {\n return createBufferingDecoder(decodeDeflate, properties, unpackSize);\n}\n"],"names":["inflateRaw","createBufferingDecoder","decodeDeflate","input","_properties","_unpackSize","createDeflateDecoder","properties","unpackSize"],"mappings":"AAAA,gDAAgD;AAChD,mDAAmD;AACnD,EAAE;AACF,2EAA2E;AAE3E,SAASA,UAAU,QAAQ,wBAAwB;AAEnD,OAAOC,4BAA4B,8BAA8B;AAEjE;;;;;;;CAOC,GACD,OAAO,SAASC,cAAcC,KAAa,EAAEC,WAAoB,EAAEC,WAAoB;IACrF,OAAOL,WAAWG;AACpB;AAEA;;CAEC,GACD,OAAO,SAASG,qBAAqBC,UAAmB,EAAEC,UAAmB;IAC3E,OAAOP,uBAAuBC,eAAeK,YAAYC;AAC3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "7z-iterator",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
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",
@@ -52,7 +52,6 @@
52
52
  "mkdirp-classic": "*",
53
53
  "on-one": "*",
54
54
  "os-shim": "*",
55
- "pako": "^1.0.11",
56
55
  "queue-cb": "*",
57
56
  "readable-stream": "^2.3.7",
58
57
  "rimraf2": "*",