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.
- package/NEOZIP_APPNOTE.md +527 -0
- package/README.md +57 -21
- package/WHATS_NEW.md +146 -0
- package/dist/browser/ZipkitBrowser.d.ts.map +1 -1
- package/dist/browser/ZipkitBrowser.js +4 -6
- package/dist/browser/ZipkitBrowser.js.map +1 -1
- package/dist/browser/zstd-browser-shim.d.ts +28 -0
- package/dist/browser/zstd-browser-shim.d.ts.map +1 -0
- package/dist/browser/zstd-browser-shim.js +66 -0
- package/dist/browser/zstd-browser-shim.js.map +1 -0
- package/dist/browser-esm/index.js +2110 -41755
- package/dist/browser-esm/index.js.map +4 -4
- package/dist/browser-umd/index.js +2110 -41755
- package/dist/browser-umd/index.js.map +4 -4
- package/dist/browser-umd/index.min.js +3 -21
- package/dist/core/ZipCompress.d.ts +2 -7
- package/dist/core/ZipCompress.d.ts.map +1 -1
- package/dist/core/ZipCompress.js +57 -33
- package/dist/core/ZipCompress.js.map +1 -1
- package/dist/core/ZipDecompress.d.ts +1 -3
- package/dist/core/ZipDecompress.d.ts.map +1 -1
- package/dist/core/ZipDecompress.js +27 -17
- package/dist/core/ZipDecompress.js.map +1 -1
- package/dist/core/ZipEntry.d.ts +6 -0
- package/dist/core/ZipEntry.d.ts.map +1 -1
- package/dist/core/ZipEntry.js +7 -1
- package/dist/core/ZipEntry.js.map +1 -1
- package/dist/core/Zipkit.d.ts +43 -11
- package/dist/core/Zipkit.d.ts.map +1 -1
- package/dist/core/Zipkit.js +106 -63
- package/dist/core/Zipkit.js.map +1 -1
- package/dist/core/components/HashCalculator.d.ts +22 -1
- package/dist/core/components/HashCalculator.d.ts.map +1 -1
- package/dist/core/components/HashCalculator.js +49 -6
- package/dist/core/components/HashCalculator.js.map +1 -1
- package/dist/core/components/Util.d.ts +3 -4
- package/dist/core/components/Util.d.ts.map +1 -1
- package/dist/core/components/Util.js +10 -8
- package/dist/core/components/Util.js.map +1 -1
- package/dist/core/constants/Headers.d.ts +1 -3
- package/dist/core/constants/Headers.d.ts.map +1 -1
- package/dist/core/constants/Headers.js +14 -5
- package/dist/core/constants/Headers.js.map +1 -1
- package/dist/core/constants/MetaPaths.d.ts +38 -0
- package/dist/core/constants/MetaPaths.d.ts.map +1 -0
- package/dist/core/constants/MetaPaths.js +79 -0
- package/dist/core/constants/MetaPaths.js.map +1 -0
- package/dist/core/encryption/AesCrypto.d.ts +55 -11
- package/dist/core/encryption/AesCrypto.d.ts.map +1 -1
- package/dist/core/encryption/AesCrypto.js +223 -68
- package/dist/core/encryption/AesCrypto.js.map +1 -1
- package/dist/core/encryption/index.d.ts +1 -1
- package/dist/core/encryption/index.d.ts.map +1 -1
- package/dist/core/encryption/index.js +3 -1
- package/dist/core/encryption/index.js.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +14 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/merkle/MerkleRoot.d.ts +109 -0
- package/dist/core/merkle/MerkleRoot.d.ts.map +1 -0
- package/dist/core/merkle/MerkleRoot.js +275 -0
- package/dist/core/merkle/MerkleRoot.js.map +1 -0
- package/dist/core/version.js +1 -1
- package/dist/node/LegacyZstd.d.ts +67 -0
- package/dist/node/LegacyZstd.d.ts.map +1 -0
- package/dist/node/LegacyZstd.js +209 -0
- package/dist/node/LegacyZstd.js.map +1 -0
- package/dist/node/ZipCompressNode.d.ts +9 -7
- package/dist/node/ZipCompressNode.d.ts.map +1 -1
- package/dist/node/ZipCompressNode.js +105 -75
- package/dist/node/ZipCompressNode.js.map +1 -1
- package/dist/node/ZipDecompressNode.d.ts +7 -3
- package/dist/node/ZipDecompressNode.d.ts.map +1 -1
- package/dist/node/ZipDecompressNode.js +68 -56
- package/dist/node/ZipDecompressNode.js.map +1 -1
- package/dist/node/ZipkitNode.d.ts +23 -0
- package/dist/node/ZipkitNode.d.ts.map +1 -1
- package/dist/node/ZipkitNode.js +195 -41
- package/dist/node/ZipkitNode.js.map +1 -1
- package/dist/node/ZstdNode.d.ts +39 -0
- package/dist/node/ZstdNode.d.ts.map +1 -0
- package/dist/node/ZstdNode.js +171 -0
- package/dist/node/ZstdNode.js.map +1 -0
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +11 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +4 -3
- package/src/browser/ZipkitBrowser.ts +4 -6
- package/src/browser/zstd-browser-shim.ts +76 -0
- package/src/core/ZipCompress.ts +71 -42
- package/src/core/ZipDecompress.ts +35 -18
- package/src/core/ZipEntry.ts +8 -1
- package/src/core/Zipkit.ts +149 -76
- package/src/core/components/HashCalculator.ts +58 -6
- package/src/core/components/Util.ts +16 -7
- package/src/core/constants/Headers.ts +14 -4
- package/src/core/constants/MetaPaths.ts +86 -0
- package/src/core/encryption/AesCrypto.ts +265 -86
- package/src/core/encryption/index.ts +1 -1
- package/src/core/index.ts +14 -0
- package/src/core/merkle/MerkleRoot.ts +312 -0
- package/src/core/version.ts +1 -1
- package/src/node/LegacyZstd.ts +270 -0
- package/src/node/ZipCompressNode.ts +127 -84
- package/src/node/ZipDecompressNode.ts +93 -67
- package/src/node/ZipkitNode.ts +230 -42
- package/src/node/ZstdNode.ts +155 -0
- package/src/node/index.ts +10 -0
- package/dist/core/ZstdManager.d.ts +0 -56
- package/dist/core/ZstdManager.d.ts.map +0 -1
- package/dist/core/ZstdManager.js +0 -144
- package/dist/core/ZstdManager.js.map +0 -1
- 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
|
-
|
|
142
|
-
entry.crc
|
|
143
|
-
|
|
144
|
-
|
|
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 === '
|
|
171
|
-
buffer = this.
|
|
168
|
+
else if (enc === 'aes256') {
|
|
169
|
+
buffer = this.encryptCompressedDataAes(buffer, entry, options.password);
|
|
172
170
|
}
|
|
173
171
|
else {
|
|
174
|
-
|
|
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
|
-
|
|
200
|
-
entry.crc
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
|
|
228
|
-
entry.crc
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
entry.sha256
|
|
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
|
-
|
|
295
|
-
|
|
296
|
-
entry.sha256
|
|
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
|
|
335
|
-
*
|
|
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 -
|
|
338
|
-
* @param entry - Optional ZIP entry for hash
|
|
339
|
-
* @param onOutputBuffer - Optional callback for streaming output
|
|
340
|
-
* @returns Compressed
|
|
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
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
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
|
-
|
|
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
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
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 =
|
|
423
|
+
entry.compressedSize = compressedSize;
|
|
393
424
|
}
|
|
394
425
|
if (onOutputBuffer) {
|
|
395
|
-
|
|
426
|
+
return Buffer.alloc(0);
|
|
396
427
|
}
|
|
397
|
-
return
|
|
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
|
-
//
|
|
546
|
-
|
|
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":";AAAA,yCAAyC;AACzC,sDAAsD;AACtD,yDAAyD;AACzD,yCAAyC;AACzC,EAAE;AACF,wBAAwB;AACxB,wBAAwB;AACxB,4EAA4E;AAC5E,sEAAsE;AACtE,uEAAuE;AACvE,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKF,sDAAmD;AACnD,uDAAkF;AAClF,sEAAmE;AACnE,4DAAyD;AACzD,4DAAyD;AACzD,4DAAyF;AACzF,sEAA8C;AAC9C,uCAAyB;AACzB,2CAA6B;AAC7B,yCAAsC;AAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAK7B;;;;;;;;;;;;GAYG;AACH,MAAa,eAAe;IAM1B;;OAEG;IACK,GAAG,CAAC,GAAG,IAAW;QACxB,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;YACnC,eAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,6DAA6D;QAC7D,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;YACnC,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,sBAAsB;IACtB,+EAA+E;IAE/E;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,KAAe,EAAE,IAAY,EAAE,OAAyB,EAAE,cAAgD;QAC3H,2CAA2C;QAC3C,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAE1E,+BAA+B;QAC/B,IAAI,iBAAyB,CAAC;QAE9B,IAAI,OAAO,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;YACzB,iBAAiB,GAAG,oBAAU,CAAC,MAAM,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YAC5B,4CAA4C;YAC5C,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;gBACpB,iBAAiB,GAAG,oBAAU,CAAC,MAAM,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,iBAAiB,GAAG,oBAAU,CAAC,IAAI,CAAC;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,oBAAU,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC;QAEpC,6BAA6B;QAC7B,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtG,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,+BAAc,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAErI,6BAA6B;QAC7B,IAAI,MAAM,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;gBAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC;gBACrC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aACnD,CAAC,CAAC;QACT,CAAC;QAED,2BAA2B;QAC3B,IAAI,iBAAiB,KAAK,oBAAU,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,CAAC;aAAM,IAAI,iBAAiB,KAAK,oBAAU,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,WAAW;YACX,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACxF,CAAC;QAED,yDAAyD;QACzD,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACvC,CAAC;QAED,2CAA2C;QAC3C,IAAI,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;YACrC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,8CAA8C;gBAC9C,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAGD;;;;;;;;OAQG;IACH,KAAK,CAAC,eAAe,CACnB,IAAkI,EAClI,OAAyB,EACzB,UAAmB,EACnB,KAAgB,EAChB,cAAgD;QAEhD,MAAM,mBAAmB,GAAG,UAAU,IAAI,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAEjG,iFAAiF;QACjF,MAAM,oBAAoB,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACjH,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,+BAAc,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAErI,IAAI,OAAO,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;YACzB,4BAA4B;YAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,yCAAyC;gBACzC,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;oBAC5B,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC5B,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;wBACjC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC;wBACrC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;qBACnD,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,IAAI,cAAc,GAAG,CAAC,CAAC;gBAEvB,OAAO,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;oBAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAEnD,wCAAwC;oBACxC,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/B,CAAC;oBAED,IAAI,cAAc,EAAE,CAAC;wBACnB,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC9B,CAAC;oBAED,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;oBAC/B,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC;gBAC3B,CAAC;gBAED,kBAAkB;gBAClB,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;oBAC5B,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;wBACjC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC;wBACrC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;qBACnD,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAA0D,CAAC;YAClF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1D,MAAM,gBAAgB,GAAa,EAAE,CAAC;YACtC,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAC5B,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,IAAI,QAAQ,EAAE,CAAC;gBACb,0BAA0B;gBAC1B,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;oBAC5B,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC5B,6EAA6E;oBAC7E,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;wBACnC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;qBACnD,CAAC,CAAC;gBACH,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEpF,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;gBACnC,CAAC;gBAED,OAAO,UAAU,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,qFAAqF;gBACrF,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpE,MAAM,gBAAgB,GAAa,EAAE,CAAC;gBACtC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,4DAA4D;gBAElF,OAAO,QAAQ,GAAG,SAAS,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;oBACrE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACnD,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,IAAI,SAAS,CAAC;oBAEhD,4BAA4B;oBAC5B,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/B,CAAC;oBAED,mEAAmE;oBACnE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAE7B,0CAA0C;oBAC1C,mFAAmF;oBACnF,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;wBAC7D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;wBAC1E,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBACrC,mBAAmB,IAAI,aAAa,CAAC,MAAM,CAAC;wBAC5C,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;wBAEtC,IAAI,cAAc,EAAE,CAAC;4BACnB,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC;oBAED,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;oBAC/B,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC;gBAC3B,CAAC;gBAED,4DAA4D;gBAC5D,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;oBAC5B,6EAA6E;oBAC7E,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;wBACnC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;qBACnD,CAAC,CAAC;gBACH,CAAC;gBAED,wFAAwF;gBACxF,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC;gBAC7C,CAAC;gBACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,eAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,gBAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAa,EAAE,OAAyB;QAC9C,IAAI,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,CAAC,4BAA4B;QAC5C,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAA0D,CAAC;YAClF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;gBACpC,KAAK,EAAE,KAAK,IAAI,CAAC;aAClB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gBAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,YAAY,CAChB,KAMK,EACL,OAAyB,EACzB,UAAmB,EACnB,KAAgB,EAChB,cAAgD;QAEhD,MAAM,mBAAmB,GAAG,UAAU,IAAI,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;QAE5D,MAAM,oBAAoB,GACxB,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACtF,MAAM,cAAc,GAAG,oBAAoB;YACzC,CAAC,CAAC,IAAI,+BAAc,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACrF,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;oBAC5B,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC7B,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;wBACjC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC;wBACrC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;qBACnD,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,CAAC;YAClD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,QAAQ,GAAG,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACnC,IAAI,cAAc,EAAE,CAAC;oBACnB,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;gBACD,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC;YAC3B,CAAC;YACD,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;gBAC5B,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;oBAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC;oBACrC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;iBACnD,CAAC,CAAC;YACP,CAAC;YACD,OAAO,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;YAElC,MAAM,IAAI,GAAG,QAAQ;gBACnB,CAAC,CAAC,CAAC,QAAgB,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;gBAC/E,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,QAAQ,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;gBACxC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;oBACjC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;iBACnD,CAAC,CAAC;YACL,CAAC;YAED,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,MAAM,mBAAQ,CAAC,cAAc,CAClD,IAAI,EACJ,SAAS,EACT,mBAAmB,EACnB,KAAK,EACL,QAAQ;gBACN,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;oBACR,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC,EACL,KAAK,EAAE,UAAU,EAAE,EAAE;gBACnB,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE;oBACjC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;iBACnD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;YACxC,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,eAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,gBAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB,CAAC,cAAsB,EAAE,KAAe,EAAE,QAAgB;QACrF,4BAA4B;QAC5B,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAElC,wEAAwE;QACxE,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QAE/E,gCAAgC;QAChC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACzB,KAAK,CAAC,QAAQ,IAAI,iBAAO,CAAC,SAAS,CAAC;QAEpC,iEAAiE;QACjE,KAAK,CAAC,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;QAE5C,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACK,wBAAwB,CAAC,cAAsB,EAAE,KAAe,EAAE,QAAgB;QACxF,MAAM,aAAa,GAAG,qBAAS,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC/E,KAAK,CAAC,uBAAuB,GAAG,CAAC,CAAC;QAClC,KAAK,CAAC,kBAAkB,GAAG,0CAA8B,CAAC;QAC1D,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACzB,KAAK,CAAC,QAAQ,IAAI,iBAAO,CAAC,SAAS,CAAC;QACpC,KAAK,CAAC,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;QAC5C,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,wBAAwB,CAAC,cAAsB,EAAE,KAAe,EAAE,QAAgB;QACxF,MAAM,aAAa,GAAG,qBAAS,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QAE/E,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,oBAAU,CAAC,WAAW,CAAC;QACzC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,sBAAsB;QAC5C,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,UAAU;QACjC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACzB,KAAK,CAAC,QAAQ,IAAI,iBAAO,CAAC,SAAS,CAAC;QACpC,KAAK,CAAC,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;QAE5C,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,iCAAiC;IACjC,+EAA+E;IAE/E;;;;;;;;;;OAUG;IACH,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,KAAe,EACf,OAAyB;QAEzB,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,qCAAqC;QACrC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC;QACpC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnD,iBAAiB;QACjB,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE3C,oEAAoE;QACpE,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,KAAe,EACf,OAAyB,EACzB,cAAgD;QAEhD,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,qCAAqC;QACrC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC;QACpC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnD,4CAA4C;QAC5C,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAE1E,kDAAkD;QAClD,kDAAkD;QAClD,MAAM,aAAa,GAAG;YACpB,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,WAAW,EAAE,CAAC,QAAgB,EAAE,IAAY,EAAU,EAAE;gBACtD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAC7D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBACvC,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,UAAU,EAAE,CAAC,KAAa,EAAQ,EAAE;gBAClC,uDAAuD;YACzD,CAAC;SACF,CAAC;QAEF,2DAA2D;QAC3D,MAAM,iBAAiB,GAAG,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;QAEjE,kDAAkD;QAClD,IAAI,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACnC,KAAK,CAAC,SAAS,GAAG,oBAAU,CAAC,MAAM,CAAC;QACtC,CAAC;aAAM,IAAI,iBAAiB,KAAK,MAAM,EAAE,CAAC;YACxC,KAAK,CAAC,SAAS,GAAG,oBAAU,CAAC,IAAI,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,SAAS,GAAG,oBAAU,CAAC,QAAQ,CAAC;QACxC,CAAC;QAED,IAAI,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACnC,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,iBAAiB,KAAK,MAAM,EAAE,CAAC;YACxC,qCAAqC;YACrC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,aAAa,CACjB,SAAmB,EACnB,UAAkB,EAClB,OAAyB;QAEzB,kDAAkD;QAClD,qCAAqC;QACrC,+BAA+B;QAC/B,2DAA2D;QAC3D,6BAA6B;QAC7B,2CAA2C;QAC3C,8FAA8F;QAE9F,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,SAAS,CAAC,mBAAmB;YAC/B,CAAC;YAED,eAAe;YACf,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAExD,gBAAgB;YAChB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,iCAAiC;QACjC,8DAA8D;QAC9D,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;;AA1oBH,0CA2oBC;AAxoBC,8DAA8D;AAC/C,8BAAc,GAAY,KAAK,CAAC"}
|
|
@@ -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
|
|
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":"
|
|
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
|
|
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
|
|
221
|
+
// WinZip AES / NeoEncrypt: stream decrypt (HMAC verified at end of ciphertext)
|
|
210
222
|
const dataStream = this.readCompressedDataStream(fileHandle, entry);
|
|
211
|
-
const
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
//
|
|
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
|
-
|
|
627
|
-
const
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
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
|
|
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
|
-
|
|
658
|
-
|
|
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
|
|
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}`);
|