neozipkit 0.8.0 → 1.0.5

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.
Files changed (115) hide show
  1. package/NEOZIP_APPNOTE.md +527 -0
  2. package/README.md +57 -21
  3. package/WHATS_NEW.md +146 -0
  4. package/dist/browser/ZipkitBrowser.d.ts.map +1 -1
  5. package/dist/browser/ZipkitBrowser.js +4 -6
  6. package/dist/browser/ZipkitBrowser.js.map +1 -1
  7. package/dist/browser/zstd-browser-shim.d.ts +28 -0
  8. package/dist/browser/zstd-browser-shim.d.ts.map +1 -0
  9. package/dist/browser/zstd-browser-shim.js +66 -0
  10. package/dist/browser/zstd-browser-shim.js.map +1 -0
  11. package/dist/browser-esm/index.js +2110 -41755
  12. package/dist/browser-esm/index.js.map +4 -4
  13. package/dist/browser-umd/index.js +2110 -41755
  14. package/dist/browser-umd/index.js.map +4 -4
  15. package/dist/browser-umd/index.min.js +3 -21
  16. package/dist/core/ZipCompress.d.ts +2 -7
  17. package/dist/core/ZipCompress.d.ts.map +1 -1
  18. package/dist/core/ZipCompress.js +57 -33
  19. package/dist/core/ZipCompress.js.map +1 -1
  20. package/dist/core/ZipDecompress.d.ts +1 -3
  21. package/dist/core/ZipDecompress.d.ts.map +1 -1
  22. package/dist/core/ZipDecompress.js +27 -17
  23. package/dist/core/ZipDecompress.js.map +1 -1
  24. package/dist/core/ZipEntry.d.ts +6 -0
  25. package/dist/core/ZipEntry.d.ts.map +1 -1
  26. package/dist/core/ZipEntry.js +7 -1
  27. package/dist/core/ZipEntry.js.map +1 -1
  28. package/dist/core/Zipkit.d.ts +43 -11
  29. package/dist/core/Zipkit.d.ts.map +1 -1
  30. package/dist/core/Zipkit.js +106 -63
  31. package/dist/core/Zipkit.js.map +1 -1
  32. package/dist/core/components/HashCalculator.d.ts +22 -1
  33. package/dist/core/components/HashCalculator.d.ts.map +1 -1
  34. package/dist/core/components/HashCalculator.js +49 -6
  35. package/dist/core/components/HashCalculator.js.map +1 -1
  36. package/dist/core/components/Util.d.ts +3 -4
  37. package/dist/core/components/Util.d.ts.map +1 -1
  38. package/dist/core/components/Util.js +10 -8
  39. package/dist/core/components/Util.js.map +1 -1
  40. package/dist/core/constants/Headers.d.ts +1 -3
  41. package/dist/core/constants/Headers.d.ts.map +1 -1
  42. package/dist/core/constants/Headers.js +14 -5
  43. package/dist/core/constants/Headers.js.map +1 -1
  44. package/dist/core/constants/MetaPaths.d.ts +38 -0
  45. package/dist/core/constants/MetaPaths.d.ts.map +1 -0
  46. package/dist/core/constants/MetaPaths.js +79 -0
  47. package/dist/core/constants/MetaPaths.js.map +1 -0
  48. package/dist/core/encryption/AesCrypto.d.ts +55 -11
  49. package/dist/core/encryption/AesCrypto.d.ts.map +1 -1
  50. package/dist/core/encryption/AesCrypto.js +223 -68
  51. package/dist/core/encryption/AesCrypto.js.map +1 -1
  52. package/dist/core/encryption/index.d.ts +1 -1
  53. package/dist/core/encryption/index.d.ts.map +1 -1
  54. package/dist/core/encryption/index.js +3 -1
  55. package/dist/core/encryption/index.js.map +1 -1
  56. package/dist/core/index.d.ts +2 -0
  57. package/dist/core/index.d.ts.map +1 -1
  58. package/dist/core/index.js +14 -1
  59. package/dist/core/index.js.map +1 -1
  60. package/dist/core/merkle/MerkleRoot.d.ts +109 -0
  61. package/dist/core/merkle/MerkleRoot.d.ts.map +1 -0
  62. package/dist/core/merkle/MerkleRoot.js +275 -0
  63. package/dist/core/merkle/MerkleRoot.js.map +1 -0
  64. package/dist/core/version.js +1 -1
  65. package/dist/node/LegacyZstd.d.ts +67 -0
  66. package/dist/node/LegacyZstd.d.ts.map +1 -0
  67. package/dist/node/LegacyZstd.js +209 -0
  68. package/dist/node/LegacyZstd.js.map +1 -0
  69. package/dist/node/ZipCompressNode.d.ts +9 -7
  70. package/dist/node/ZipCompressNode.d.ts.map +1 -1
  71. package/dist/node/ZipCompressNode.js +105 -75
  72. package/dist/node/ZipCompressNode.js.map +1 -1
  73. package/dist/node/ZipDecompressNode.d.ts +7 -3
  74. package/dist/node/ZipDecompressNode.d.ts.map +1 -1
  75. package/dist/node/ZipDecompressNode.js +68 -56
  76. package/dist/node/ZipDecompressNode.js.map +1 -1
  77. package/dist/node/ZipkitNode.d.ts +23 -0
  78. package/dist/node/ZipkitNode.d.ts.map +1 -1
  79. package/dist/node/ZipkitNode.js +195 -41
  80. package/dist/node/ZipkitNode.js.map +1 -1
  81. package/dist/node/ZstdNode.d.ts +39 -0
  82. package/dist/node/ZstdNode.d.ts.map +1 -0
  83. package/dist/node/ZstdNode.js +171 -0
  84. package/dist/node/ZstdNode.js.map +1 -0
  85. package/dist/node/index.d.ts +3 -0
  86. package/dist/node/index.d.ts.map +1 -1
  87. package/dist/node/index.js +11 -1
  88. package/dist/node/index.js.map +1 -1
  89. package/package.json +4 -3
  90. package/src/browser/ZipkitBrowser.ts +4 -6
  91. package/src/browser/zstd-browser-shim.ts +76 -0
  92. package/src/core/ZipCompress.ts +71 -42
  93. package/src/core/ZipDecompress.ts +35 -18
  94. package/src/core/ZipEntry.ts +8 -1
  95. package/src/core/Zipkit.ts +149 -76
  96. package/src/core/components/HashCalculator.ts +58 -6
  97. package/src/core/components/Util.ts +16 -7
  98. package/src/core/constants/Headers.ts +14 -4
  99. package/src/core/constants/MetaPaths.ts +86 -0
  100. package/src/core/encryption/AesCrypto.ts +265 -86
  101. package/src/core/encryption/index.ts +1 -1
  102. package/src/core/index.ts +14 -0
  103. package/src/core/merkle/MerkleRoot.ts +312 -0
  104. package/src/core/version.ts +1 -1
  105. package/src/node/LegacyZstd.ts +270 -0
  106. package/src/node/ZipCompressNode.ts +127 -84
  107. package/src/node/ZipDecompressNode.ts +93 -67
  108. package/src/node/ZipkitNode.ts +230 -42
  109. package/src/node/ZstdNode.ts +155 -0
  110. package/src/node/index.ts +10 -0
  111. package/dist/core/ZstdManager.d.ts +0 -56
  112. package/dist/core/ZstdManager.d.ts.map +0 -1
  113. package/dist/core/ZstdManager.js +0 -144
  114. package/dist/core/ZstdManager.js.map +0 -1
  115. package/src/core/ZstdManager.ts +0 -165
@@ -57,10 +57,10 @@ const HashCalculator_1 = require("../core/components/HashCalculator");
57
57
  const ZipCrypto_1 = require("../core/encryption/ZipCrypto");
58
58
  const AesCrypto_1 = require("../core/encryption/AesCrypto");
59
59
  const NeoCrypto_1 = require("../core/encryption/NeoCrypto");
60
- const ZstdManager_1 = require("../core/ZstdManager");
61
60
  const Errors_1 = __importDefault(require("../core/constants/Errors"));
62
61
  const fs = __importStar(require("fs"));
63
62
  const path = __importStar(require("path"));
63
+ const ZstdNode_1 = require("./ZstdNode");
64
64
  const pako = require('pako');
65
65
  /**
66
66
  * ZipCompressNode - Node.js file-based compression operations
@@ -138,12 +138,10 @@ class ZipCompressNode {
138
138
  let buffer = Buffer.alloc(0);
139
139
  if (hashCalculator) {
140
140
  hashCalculator.update(data);
141
- if (!entry.crc || entry.crc === 0) {
142
- entry.crc = hashCalculator.finalizeCRC32();
143
- }
144
- if (options?.useSHA256 && !entry.sha256) {
145
- entry.sha256 = hashCalculator.finalizeSHA256();
146
- }
141
+ hashCalculator.applyToEntry(entry, {
142
+ setCrc: !entry.crc || entry.crc === 0,
143
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
144
+ });
147
145
  }
148
146
  // Compress based on method
149
147
  if (compressionMethod === Headers_1.CMP_METHOD.STORED) {
@@ -167,11 +165,12 @@ class ZipCompressNode {
167
165
  if (enc === 'zipcrypto') {
168
166
  buffer = this.encryptCompressedData(buffer, entry, options.password);
169
167
  }
170
- else if (enc === 'neo-aes256') {
171
- buffer = this.encryptCompressedDataNeo(buffer, entry, options.password);
168
+ else if (enc === 'aes256') {
169
+ buffer = this.encryptCompressedDataAes(buffer, entry, options.password);
172
170
  }
173
171
  else {
174
- buffer = this.encryptCompressedDataAes(buffer, entry, options.password);
172
+ // Default / 'neo-aes256': NeoEncrypt (0x024E)
173
+ buffer = this.encryptCompressedDataNeo(buffer, entry, options.password);
175
174
  }
176
175
  }
177
176
  return buffer;
@@ -196,12 +195,10 @@ class ZipCompressNode {
196
195
  // For buffer, calculate hashes if needed
197
196
  if (hashCalculator && entry) {
198
197
  hashCalculator.update(data);
199
- if (!entry.crc || entry.crc === 0) {
200
- entry.crc = hashCalculator.finalizeCRC32();
201
- }
202
- if (options?.useSHA256 && !entry.sha256) {
203
- entry.sha256 = hashCalculator.finalizeSHA256();
204
- }
198
+ hashCalculator.applyToEntry(entry, {
199
+ setCrc: !entry.crc || entry.crc === 0,
200
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
201
+ });
205
202
  }
206
203
  return data;
207
204
  }
@@ -224,12 +221,10 @@ class ZipCompressNode {
224
221
  }
225
222
  // Finalize hashes
226
223
  if (hashCalculator && entry) {
227
- if (!entry.crc || entry.crc === 0) {
228
- entry.crc = hashCalculator.finalizeCRC32();
229
- }
230
- if (options?.useSHA256 && !entry.sha256) {
231
- entry.sha256 = hashCalculator.finalizeSHA256();
232
- }
224
+ hashCalculator.applyToEntry(entry, {
225
+ setCrc: !entry.crc || entry.crc === 0,
226
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
227
+ });
233
228
  }
234
229
  return Buffer.alloc(0);
235
230
  }
@@ -247,10 +242,10 @@ class ZipCompressNode {
247
242
  if (hashCalculator && entry) {
248
243
  hashCalculator.update(data);
249
244
  // Always set CRC if hash calculator was used (it calculated the correct CRC)
250
- entry.crc = hashCalculator.finalizeCRC32();
251
- if (options?.useSHA256 && !entry.sha256) {
252
- entry.sha256 = hashCalculator.finalizeSHA256();
253
- }
245
+ hashCalculator.applyToEntry(entry, {
246
+ setCrc: true,
247
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
248
+ });
254
249
  }
255
250
  const result = pako.deflateRaw(data, { level: level ?? 6 });
256
251
  const compressed = Buffer.from(result.buffer, result.byteOffset, result.byteLength);
@@ -291,10 +286,10 @@ class ZipCompressNode {
291
286
  // Finalize hashes after all chunks processed and compressed
292
287
  if (hashCalculator && entry) {
293
288
  // Always set CRC if hash calculator was used (it calculated the correct CRC)
294
- entry.crc = hashCalculator.finalizeCRC32();
295
- if (options?.useSHA256 && !entry.sha256) {
296
- entry.sha256 = hashCalculator.finalizeSHA256();
297
- }
289
+ hashCalculator.applyToEntry(entry, {
290
+ setCrc: true,
291
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
292
+ });
298
293
  }
299
294
  // For chunked processing, return empty buffer (data already written via onOutputBuffer)
300
295
  if (entry) {
@@ -331,70 +326,106 @@ class ZipCompressNode {
331
326
  }
332
327
  }
333
328
  /**
334
- * Compresses data using Zstandard (zstd) algorithm
335
- * @param input - Buffer to compress OR chunked reader object with totalSize and readChunk callback
329
+ * Compresses data using Zstandard via Node native zlib chunked streaming.
330
+ *
331
+ * @param input - Buffer OR chunked reader (`onReadChunk` preferred; `readChunk` accepted)
336
332
  * @param options - Compression options
337
- * @param bufferSize - Size of buffer to read if using chunked reader (default: 512KB)
338
- * @param entry - Optional ZIP entry for hash calculation
339
- * @param onOutputBuffer - Optional callback for streaming output
340
- * @returns Compressed data buffer
333
+ * @param bufferSize - Chunk size for streaming reads (default: 512KB)
334
+ * @param entry - Optional ZIP entry for hash / compressedSize
335
+ * @param onOutputBuffer - Optional callback for streaming compressed output
336
+ * @returns Compressed buffer, or empty buffer when streamed via onOutputBuffer
341
337
  */
342
338
  async zstdCompress(input, options, bufferSize, entry, onOutputBuffer) {
343
339
  const effectiveBufferSize = bufferSize || options?.bufferSize || this.zipkitNode.getBufferSize();
344
340
  const isBuffer = Buffer.isBuffer(input);
345
341
  const totalSize = isBuffer ? input.length : input.totalSize;
342
+ const needsHashCalculation = entry && ((!entry.crc || entry.crc === 0) || (options?.useSHA256 && !entry.sha256));
343
+ const hashCalculator = needsHashCalculation
344
+ ? new HashCalculator_1.HashCalculator({ useSHA256: !!(options?.useSHA256 && entry && !entry.sha256) })
345
+ : null;
346
346
  if (options?.level == 0) {
347
- // For store mode, return as-is
348
347
  if (isBuffer) {
348
+ if (hashCalculator && entry) {
349
+ hashCalculator.update(input);
350
+ hashCalculator.applyToEntry(entry, {
351
+ setCrc: !entry.crc || entry.crc === 0,
352
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
353
+ });
354
+ }
349
355
  return input;
350
356
  }
351
- else {
352
- // Read all chunks
353
- const chunks = [];
354
- let position = 0;
355
- while (position < totalSize) {
356
- const size = Math.min(effectiveBufferSize, totalSize - position);
357
- const chunk = input.readChunk(position, size);
357
+ const chunks = [];
358
+ const read = input.onReadChunk ?? input.readChunk;
359
+ if (!read) {
360
+ throw new Error('ZSTD store mode: chunked reader missing read callback');
361
+ }
362
+ let position = 0;
363
+ while (position < totalSize) {
364
+ const size = Math.min(effectiveBufferSize, totalSize - position);
365
+ const chunk = read(position, size);
366
+ if (hashCalculator) {
367
+ hashCalculator.update(chunk);
368
+ }
369
+ if (onOutputBuffer) {
370
+ await onOutputBuffer(chunk);
371
+ }
372
+ else {
358
373
  chunks.push(chunk);
359
- position += size;
360
374
  }
361
- return Buffer.concat(chunks);
375
+ position += chunk.length;
362
376
  }
377
+ if (hashCalculator && entry) {
378
+ hashCalculator.applyToEntry(entry, {
379
+ setCrc: !entry.crc || entry.crc === 0,
380
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
381
+ });
382
+ }
383
+ return onOutputBuffer ? Buffer.alloc(0) : Buffer.concat(chunks);
363
384
  }
364
385
  try {
365
- // Zstd compression levels range from 1 (fastest) to 22 (highest compression)
366
- // Map our 1-9 level to a reasonable zstd range (1-19)
367
386
  const level = options?.level ?? 6;
368
- const zstdLevel = Math.min(Math.max(1, Math.floor(level * 2.1)), 19);
369
- // Get the full buffer (zstd doesn't support true streaming compression)
370
- const inbuf = isBuffer ? input : (() => {
371
- const chunks = [];
372
- let position = 0;
373
- while (position < totalSize) {
374
- const size = Math.min(effectiveBufferSize, totalSize - position);
375
- const chunk = input.readChunk(position, size);
376
- chunks.push(chunk);
377
- position += size;
378
- }
379
- return Buffer.concat(chunks);
380
- })();
381
- // Validate input
382
- if (!inbuf || inbuf.length === 0) {
387
+ const read = isBuffer
388
+ ? (position, size) => input.subarray(position, position + size)
389
+ : (input.onReadChunk ?? input.readChunk);
390
+ if (!read) {
391
+ throw new Error('ZSTD compression: chunked reader missing read callback');
392
+ }
393
+ if (!totalSize) {
383
394
  throw new Error('ZSTD compression: empty input buffer');
384
395
  }
385
- // Convert Buffer to Uint8Array for WASM module
386
- const inputArray = new Uint8Array(inbuf.buffer, inbuf.byteOffset, inbuf.byteLength);
387
- // Compress the data with zstd using global ZstdManager
388
- const compressedData = await ZstdManager_1.ZstdManager.compress(inputArray, zstdLevel);
389
- const compressedBuffer = Buffer.from(compressedData);
390
- // Set the compressed size in the entry for ZIP file structure
396
+ if (isBuffer && hashCalculator && entry) {
397
+ hashCalculator.update(input);
398
+ hashCalculator.applyToEntry(entry, {
399
+ setCrc: true,
400
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
401
+ });
402
+ }
403
+ const collected = [];
404
+ const compressedSize = await ZstdNode_1.ZstdNode.compressChunks(read, totalSize, effectiveBufferSize, level, isBuffer
405
+ ? undefined
406
+ : (plain) => {
407
+ hashCalculator?.update(plain);
408
+ }, async (compressed) => {
409
+ if (onOutputBuffer) {
410
+ await onOutputBuffer(compressed);
411
+ }
412
+ else {
413
+ collected.push(compressed);
414
+ }
415
+ });
416
+ if (!isBuffer && hashCalculator && entry) {
417
+ hashCalculator.applyToEntry(entry, {
418
+ setCrc: true,
419
+ setSha256: !!(options?.useSHA256 && !entry.sha256),
420
+ });
421
+ }
391
422
  if (entry) {
392
- entry.compressedSize = compressedBuffer.length;
423
+ entry.compressedSize = compressedSize;
393
424
  }
394
425
  if (onOutputBuffer) {
395
- await onOutputBuffer(compressedBuffer);
426
+ return Buffer.alloc(0);
396
427
  }
397
- return compressedBuffer;
428
+ return Buffer.concat(collected);
398
429
  }
399
430
  catch (e) {
400
431
  Logger_1.Logger.error('Error during zstd compression:', e);
@@ -542,9 +573,8 @@ class ZipCompressNode {
542
573
  return await this.compressData(entry, fileData, options, onOutputBuffer);
543
574
  }
544
575
  else if (compressionMethod === 'ZSTD') {
545
- // ZSTD requires full buffer, so read file first
546
- const fileData = fs.readFileSync(filePath);
547
- return await this.compressData(entry, fileData, options, onOutputBuffer);
576
+ // Native Node zstd chunked streaming
577
+ return await this.zstdCompress(chunkedReader, options, bufferSize, entry, onOutputBuffer);
548
578
  }
549
579
  else {
550
580
  // DEFLATED: Use deflateCompress with chunked reader
@@ -1 +1 @@
1
- {"version":3,"file":"ZipCompressNode.js","sourceRoot":"","sources":["../../src/node/ZipCompressNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ZipCompressNode.js","sourceRoot":"","sources":["../../src/node/ZipCompressNode.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,10 @@ export declare class ZipDecompressNode {
58
58
  skipHashCheck?: boolean;
59
59
  onProgress?: (bytes: number) => void;
60
60
  }): Promise<Buffer>;
61
+ /**
62
+ * Read the raw compressed payload for an entry (no decrypt / decompress).
63
+ */
64
+ readCompressedPayload(entry: ZipEntry): Promise<Buffer>;
61
65
  /**
62
66
  * Test entry integrity without extracting to disk
63
67
  * Validates CRC-32 or SHA-256 hash without writing decompressed data
@@ -175,7 +179,8 @@ export declare class ZipDecompressNode {
175
179
  */
176
180
  private inflateStream;
177
181
  /**
178
- * Streaming ZSTD decompression
182
+ * Streaming ZSTD decompression via Node zlib (native).
183
+ * When maxOut > 0, truncates output (legacy WASM emitted +18 zero bytes).
179
184
  */
180
185
  private zstdDecompressStream;
181
186
  /**
@@ -183,8 +188,7 @@ export declare class ZipDecompressNode {
183
188
  */
184
189
  private inflate;
185
190
  /**
186
- * Zstd decompress method (now async with ZstdManager)
187
- * Internal method only
191
+ * Zstd decompress via Node zlib (native), repairing legacy WASM +18 padding when present.
188
192
  */
189
193
  private zstdDecompressSync;
190
194
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ZipDecompressNode.d.ts","sourceRoot":"","sources":["../../src/node/ZipDecompressNode.ts"],"names":[],"mappings":"AAiBA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AAUxC;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAa;IAG/B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAkB;IAE/C;;;OAGG;gBACS,UAAU,EAAE,UAAU;IAQlC;;OAEG;IACH,OAAO,CAAC,GAAG;IAUX;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC,MAAM,CAAC;IAQlB;;;;;;;;;;;;OAYG;IACG,SAAS,CACb,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAYrC;;;;;;;;;;;OAWG;YACY,wBAAwB;IAqCvC;;;OAGG;YACW,qBAAqB;IA8DnC;;;;;;;OAOG;YACW,uBAAuB;IAwDrC;;;OAGG;YACW,iBAAiB;IAwD/B;;;;;;;;;;;OAWG;YACW,gBAAgB;IA8E9B;;;;;;;;;;;;;;OAcG;YACW,kBAAkB;IA0DhC;;;;;;;;;;;;OAYG;YACW,gBAAgB;IA2D9B;;;;;;;;;;;OAWG;YACY,gBAAgB;IA2B/B;;;;;;;OAOG;YACY,aAAa;IA6B5B;;OAEG;YACY,oBAAoB;IA+BnC;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;;OAGG;YACW,kBAAkB;IAchC;;;;OAIG;YACW,UAAU;CA4CzB"}
1
+ {"version":3,"file":"ZipDecompressNode.d.ts","sourceRoot":"","sources":["../../src/node/ZipDecompressNode.ts"],"names":[],"mappings":"AAgBA,OAAO,UAAU,MAAM,cAAc,CAAC;AAItC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AAUxC;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAa;IAG/B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAkB;IAE/C;;;OAGG;gBACS,UAAU,EAAE,UAAU;IAQlC;;OAEG;IACH,OAAO,CAAC,GAAG;IAUX;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC,MAAM,CAAC;IAQlB;;OAEG;IACG,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7D;;;;;;;;;;;;OAYG;IACG,SAAS,CACb,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAYrC;;;;;;;;;;;OAWG;YACY,wBAAwB;IAqCvC;;;OAGG;YACW,qBAAqB;IA0DnC;;;;;;;OAOG;YACW,uBAAuB;IAqDrC;;;OAGG;YACW,iBAAiB;IAqD/B;;;;;;;;;;;OAWG;YACW,gBAAgB;IAgF9B;;;;;;;;;;;;;;OAcG;YACW,kBAAkB;IA4DhC;;;;;;;;;;;;OAYG;YACW,gBAAgB;IAmE9B;;;;;;;;;;;OAWG;YACY,gBAAgB;IA2B/B;;;;;;;OAOG;YACY,aAAa;IA6B5B;;;OAGG;YACY,oBAAoB;IA0BnC;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;YACW,kBAAkB;IA8BhC;;;;OAIG;YACW,UAAU;CA4CzB"}
@@ -52,7 +52,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.ZipDecompressNode = void 0;
54
54
  const pako = require('pako');
55
- const ZstdManager_1 = require("../core/ZstdManager");
55
+ const ZstdNode_1 = require("./ZstdNode");
56
+ const LegacyZstd_1 = require("./LegacyZstd");
56
57
  const Logger_1 = require("../core/components/Logger");
57
58
  const Errors_1 = __importDefault(require("../core/constants/Errors"));
58
59
  const Headers_1 = require("../core/constants/Headers");
@@ -134,6 +135,17 @@ class ZipDecompressNode {
134
135
  // Call internal extract to buffer method
135
136
  return await this.extractToBufferInternal(fileHandle, entry, options);
136
137
  }
138
+ /**
139
+ * Read the raw compressed payload for an entry (no decrypt / decompress).
140
+ */
141
+ async readCompressedPayload(entry) {
142
+ const fileHandle = this.zipkitNode.getFileHandle();
143
+ const chunks = [];
144
+ for await (const chunk of this.readCompressedDataStream(fileHandle, entry)) {
145
+ chunks.push(chunk);
146
+ }
147
+ return Buffer.concat(chunks);
148
+ }
137
149
  /**
138
150
  * Test entry integrity without extracting to disk
139
151
  * Validates CRC-32 or SHA-256 hash without writing decompressed data
@@ -206,18 +218,11 @@ class ZipDecompressNode {
206
218
  const isEncrypted = entry.isEncrypted && this.zipkitNode?.password;
207
219
  const isFullPayloadCrypto = entry.aesVersion > 0 || entry.cmpMethod === Headers_1.CMP_METHOD.AES_ENCRYPT || entry.neoCryptoAlgorithm > 0;
208
220
  if (isEncrypted && isFullPayloadCrypto) {
209
- // WinZip AES or NeoEncrypt: read full payload, decrypt in one shot (HMAC must be verified first)
221
+ // WinZip AES / NeoEncrypt: stream decrypt (HMAC verified at end of ciphertext)
210
222
  const dataStream = this.readCompressedDataStream(fileHandle, entry);
211
- const chunks = [];
212
- for await (const chunk of dataStream) {
213
- chunks.push(chunk);
214
- }
215
- const fullPayload = Buffer.concat(chunks);
216
- const decrypted = AesCrypto_1.AesCrypto.decryptBuffer(entry, fullPayload, this.zipkitNode.password);
217
- // Wrap decrypted data as a single-item generator for the decompression pipeline
223
+ const decrypted = AesCrypto_1.AesCrypto.decryptStream(this.zipkitNode.password, entry.compressedSize, dataStream);
218
224
  const skipHash = entry.aesVersion === 2 ? true : options?.skipHashCheck;
219
- async function* singleChunk() { yield decrypted; }
220
- await this.unCompressToFile(singleChunk(), entry, writeStream, {
225
+ await this.unCompressToFile(decrypted, entry, writeStream, {
221
226
  skipHashCheck: skipHash,
222
227
  onProgress: options?.onProgress,
223
228
  outputPath
@@ -263,15 +268,9 @@ class ZipDecompressNode {
263
268
  const isFullPayloadCrypto = entry.aesVersion > 0 || entry.cmpMethod === Headers_1.CMP_METHOD.AES_ENCRYPT || entry.neoCryptoAlgorithm > 0;
264
269
  if (isEncrypted && isFullPayloadCrypto) {
265
270
  const dataStream = this.readCompressedDataStream(fileHandle, entry);
266
- const chunks = [];
267
- for await (const chunk of dataStream) {
268
- chunks.push(chunk);
269
- }
270
- const fullPayload = Buffer.concat(chunks);
271
- const decrypted = AesCrypto_1.AesCrypto.decryptBuffer(entry, fullPayload, this.zipkitNode.password);
271
+ const decrypted = AesCrypto_1.AesCrypto.decryptStream(this.zipkitNode.password, entry.compressedSize, dataStream);
272
272
  const skipHash = entry.aesVersion === 2 ? true : options?.skipHashCheck;
273
- async function* singleChunk() { yield decrypted; }
274
- return await this.unCompressToBuffer(singleChunk(), entry, {
273
+ return await this.unCompressToBuffer(decrypted, entry, {
275
274
  skipHashCheck: skipHash,
276
275
  onProgress: options?.onProgress
277
276
  });
@@ -311,15 +310,9 @@ class ZipDecompressNode {
311
310
  const isFullPayloadCrypto = entry.aesVersion > 0 || entry.cmpMethod === Headers_1.CMP_METHOD.AES_ENCRYPT || entry.neoCryptoAlgorithm > 0;
312
311
  if (isEncrypted && isFullPayloadCrypto) {
313
312
  const dataStream = this.readCompressedDataStream(fileHandle, entry);
314
- const chunks = [];
315
- for await (const chunk of dataStream) {
316
- chunks.push(chunk);
317
- }
318
- const fullPayload = Buffer.concat(chunks);
319
- const decrypted = AesCrypto_1.AesCrypto.decryptBuffer(entry, fullPayload, this.zipkitNode.password);
313
+ const decrypted = AesCrypto_1.AesCrypto.decryptStream(this.zipkitNode.password, entry.compressedSize, dataStream);
320
314
  const skipHash = entry.aesVersion === 2 ? true : options?.skipHashCheck;
321
- async function* singleChunk() { yield decrypted; }
322
- return await this.unCompressToTest(singleChunk(), entry, {
315
+ return await this.unCompressToTest(decrypted, entry, {
323
316
  skipHashCheck: skipHash,
324
317
  onProgress: options?.onProgress
325
318
  });
@@ -386,6 +379,9 @@ class ZipDecompressNode {
386
379
  if (!options?.skipHashCheck) {
387
380
  if (entry.sha256) {
388
381
  const calculatedHash = hashCalc.finalizeSHA256();
382
+ const leaf = hashCalc.finalizeMerkleLeafV1();
383
+ if (leaf)
384
+ entry.merkleLeafV1 = leaf;
389
385
  this.log(`SHA-256 comparison: calculated=${calculatedHash}, stored=${entry.sha256}`);
390
386
  if (calculatedHash !== entry.sha256) {
391
387
  if (options?.outputPath && fs) {
@@ -463,6 +459,9 @@ class ZipDecompressNode {
463
459
  if (!options?.skipHashCheck) {
464
460
  if (entry.sha256) {
465
461
  const calculatedHash = hashCalc.finalizeSHA256();
462
+ const leaf = hashCalc.finalizeMerkleLeafV1();
463
+ if (leaf)
464
+ entry.merkleLeafV1 = leaf;
466
465
  this.log(`SHA-256 comparison: calculated=${calculatedHash}, stored=${entry.sha256}`);
467
466
  if (calculatedHash !== entry.sha256) {
468
467
  throw new Error(Errors_1.default.INVALID_SHA256);
@@ -518,6 +517,9 @@ class ZipDecompressNode {
518
517
  if (!options?.skipHashCheck) {
519
518
  if (entry.sha256) {
520
519
  const calculatedHash = hashCalc.finalizeSHA256();
520
+ const leaf = hashCalc.finalizeMerkleLeafV1();
521
+ if (leaf)
522
+ entry.merkleLeafV1 = leaf;
521
523
  this.log(`SHA-256 comparison: calculated=${calculatedHash}, stored=${entry.sha256}`);
522
524
  if (calculatedHash !== entry.sha256) {
523
525
  throw new Error(Errors_1.default.INVALID_SHA256);
@@ -538,7 +540,14 @@ class ZipDecompressNode {
538
540
  }
539
541
  }
540
542
  else {
541
- // Hash check skipped - return undefined
543
+ // Hash check skipped — still finalize leaf/digest once from this stream when SHA was enabled
544
+ if (entry.sha256 && hashCalc) {
545
+ const calculatedHash = hashCalc.finalizeSHA256();
546
+ const leaf = hashCalc.finalizeMerkleLeafV1();
547
+ if (leaf)
548
+ entry.merkleLeafV1 = leaf;
549
+ return { verifiedHash: calculatedHash || undefined };
550
+ }
542
551
  return { verifiedHash: undefined };
543
552
  }
544
553
  }
@@ -574,8 +583,8 @@ class ZipDecompressNode {
574
583
  yield* this.inflateStream(compressedStream);
575
584
  }
576
585
  else if (method === Headers_1.CMP_METHOD.ZSTD) {
577
- // Use ZSTD streaming decompression - note: ZSTD requires full buffer
578
- yield* this.zstdDecompressStream(compressedStream);
586
+ // Native Node zstd; bound output to entry size (repairs legacy WASM +18 padding)
587
+ yield* this.zstdDecompressStream(compressedStream, entry?.uncompressedSize ?? 0);
579
588
  }
580
589
  else {
581
590
  throw new Error(`Unsupported compression method: ${method}`);
@@ -612,27 +621,25 @@ class ZipDecompressNode {
612
621
  }
613
622
  }
614
623
  /**
615
- * Streaming ZSTD decompression
624
+ * Streaming ZSTD decompression via Node zlib (native).
625
+ * When maxOut > 0, truncates output (legacy WASM emitted +18 zero bytes).
616
626
  */
617
- async *zstdDecompressStream(compressedStream) {
618
- // ZSTD is guaranteed to be initialized via factory method
619
- // Collect all compressed chunks first (ZSTD needs complete data)
620
- const compressedChunks = [];
621
- for await (const chunk of compressedStream) {
622
- compressedChunks.push(chunk);
623
- }
624
- const compressedData = Buffer.concat(compressedChunks);
627
+ async *zstdDecompressStream(compressedStream, maxOut = 0) {
625
628
  try {
626
- // Use global ZstdManager for decompression
627
- const decompressed = await ZstdManager_1.ZstdManager.decompress(compressedData);
628
- const decompressedBuffer = Buffer.from(decompressed);
629
- // Yield decompressed data in chunks using ZipkitServer's bufferSize
630
- const chunkSize = this.zipkitNode.getBufferSize();
631
- let offset = 0;
632
- while (offset < decompressedBuffer.length) {
633
- const end = Math.min(offset + chunkSize, decompressedBuffer.length);
634
- yield decompressedBuffer.slice(offset, end);
635
- offset = end;
629
+ let remaining = maxOut > 0 ? maxOut : Number.POSITIVE_INFINITY;
630
+ for await (const chunk of ZstdNode_1.ZstdNode.decompressStream(compressedStream)) {
631
+ if (remaining <= 0) {
632
+ break;
633
+ }
634
+ if (chunk.length <= remaining) {
635
+ remaining -= chunk.length;
636
+ yield chunk;
637
+ }
638
+ else {
639
+ yield chunk.subarray(0, remaining);
640
+ remaining = 0;
641
+ break;
642
+ }
636
643
  }
637
644
  }
638
645
  catch (error) {
@@ -648,16 +655,21 @@ class ZipDecompressNode {
648
655
  return Buffer.from(result.buffer, result.byteOffset, result.byteLength);
649
656
  }
650
657
  /**
651
- * Zstd decompress method (now async with ZstdManager)
652
- * Internal method only
658
+ * Zstd decompress via Node zlib (native), repairing legacy WASM +18 padding when present.
653
659
  */
654
- async zstdDecompressSync(data) {
660
+ async zstdDecompressSync(data, entry) {
655
661
  this.log(`zstdDecompressSync() called with ${data.length} bytes`);
656
662
  try {
657
- // Use global ZstdManager for decompression
658
- const decompressed = await ZstdManager_1.ZstdManager.decompress(data);
663
+ let decompressed = await ZstdNode_1.ZstdNode.decompress(data);
664
+ if (entry && entry.uncompressedSize > 0) {
665
+ const { repaired, wasLegacy } = (0, LegacyZstd_1.repairLegacyWasmZstdPlaintext)(decompressed, entry.uncompressedSize, entry.crc);
666
+ if (wasLegacy) {
667
+ this.log(`Legacy WASM zstd padding repaired: ${decompressed.length} -> ${repaired.length} bytes`);
668
+ }
669
+ decompressed = repaired;
670
+ }
659
671
  this.log(`ZSTD decompression successful: ${data.length} bytes -> ${decompressed.length} bytes`);
660
- return Buffer.from(decompressed);
672
+ return decompressed;
661
673
  }
662
674
  catch (error) {
663
675
  this.log(`ZSTD decompression failed: ${error}`);
@@ -686,7 +698,7 @@ class ZipDecompressNode {
686
698
  outBuf = this.inflate(compressedData);
687
699
  }
688
700
  else if (method === Headers_1.CMP_METHOD.ZSTD) {
689
- outBuf = await this.zstdDecompressSync(compressedData);
701
+ outBuf = await this.zstdDecompressSync(compressedData, entry);
690
702
  }
691
703
  else {
692
704
  throw new Error(`Unsupported compression method: ${method}`);