@zip.js/zip.js 2.8.59 → 2.8.61

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 (43) hide show
  1. package/deno.json +2 -2
  2. package/dist/zip-core-external.js +167 -37
  3. package/dist/zip-core-external.min.js +1 -1
  4. package/dist/zip-core.js +143 -20
  5. package/dist/zip-core.min.js +1 -1
  6. package/dist/zip-fs-core-external.js +173 -45
  7. package/dist/zip-fs-core-external.min.js +1 -1
  8. package/dist/zip-fs-core.js +5326 -3928
  9. package/dist/zip-fs-core.min.js +1 -1
  10. package/dist/zip-fs-external.js +173 -45
  11. package/dist/zip-fs-external.min.js +1 -1
  12. package/dist/zip-fs-native.js +151 -30
  13. package/dist/zip-fs-native.min.js +1 -1
  14. package/dist/zip-fs.js +176 -45
  15. package/dist/zip-fs.min.js +1 -1
  16. package/dist/zip-legacy.js +145 -22
  17. package/dist/zip-legacy.min.js +1 -1
  18. package/dist/zip-native.js +145 -22
  19. package/dist/zip-native.min.js +1 -1
  20. package/dist/zip-web-worker-native.js +1 -1
  21. package/dist/zip-web-worker.js +1 -1
  22. package/dist/zip.js +170 -37
  23. package/dist/zip.min.js +1 -1
  24. package/index-native.cjs +151 -30
  25. package/index-native.min.js +1 -1
  26. package/index.cjs +176 -45
  27. package/index.d.cts +134 -1
  28. package/index.d.ts +134 -1
  29. package/index.min.js +1 -1
  30. package/lib/core/codec-registry.js +5 -0
  31. package/lib/core/compression-methods.js +93 -0
  32. package/lib/core/streams/zip-entry-stream.js +7 -3
  33. package/lib/core/streams/zlib-wasm/zlib-streams.js +18 -8
  34. package/lib/core/version.js +31 -0
  35. package/lib/core/web-worker-inline-native.js +1 -1
  36. package/lib/core/web-worker-inline-wasm.js +1 -1
  37. package/lib/core/zip-fs.js +5 -4
  38. package/lib/core/zip-writer.js +38 -31
  39. package/lib/zip-core-base.js +7 -0
  40. package/lib/zip-fs-core.js +32 -0
  41. package/package.json +4 -3
  42. package/release.sh +47 -0
  43. package/sync-versions.js +26 -0
@@ -2109,6 +2109,10 @@ function getRegisteredCodec(compressionMethod) {
2109
2109
  return registeredCodecs.get(compressionMethod);
2110
2110
  }
2111
2111
 
2112
+ function getRegisteredCodecs() {
2113
+ return Array.from(registeredCodecs.values(), codec => Object.assign({}, codec, codecStreams.get(codec.format)));
2114
+ }
2115
+
2112
2116
  function getCodecStreams(format) {
2113
2117
  return codecStreams.get(format);
2114
2118
  }
@@ -2160,9 +2164,9 @@ const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
2160
2164
  const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
2161
2165
  const ERR_INVALID_CRC32 = ERR_INVALID_SIGNATURE;
2162
2166
  const ERR_UNSUPPORTED_COMPRESSION$2 = "Compression method not supported";
2163
- const FORMAT_DEFLATE_RAW = "deflate-raw";
2164
- const FORMAT_DEFLATE64_RAW = "deflate64-raw";
2165
- const FORMAT_GZIP = "gzip";
2167
+ const FORMAT_DEFLATE_RAW$1 = "deflate-raw";
2168
+ const FORMAT_DEFLATE64_RAW$1 = "deflate64-raw";
2169
+ const FORMAT_GZIP$1 = "gzip";
2166
2170
  const GZIP_HEADER_LENGTH = 10;
2167
2171
  const GZIP_TRAILER_LENGTH = 8;
2168
2172
  const GZIP_HEADER_BYTES = [0x1f, 0x8b, 0x08];
@@ -2172,7 +2176,7 @@ class DeflateStream extends TransformStream {
2172
2176
 
2173
2177
  constructor(options, { chunkSize, CompressionStreamFallback, CompressionStream }) {
2174
2178
  super({});
2175
- const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod } = options;
2179
+ const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod, inputSize } = options;
2176
2180
  const stream = this;
2177
2181
  let crc32Stream, encryptionStream, gzipCrc32Stream;
2178
2182
  let readable = super.readable;
@@ -2185,10 +2189,10 @@ class DeflateStream extends TransformStream {
2185
2189
  }
2186
2190
  if (compressed) {
2187
2191
  if (codecStreams) {
2188
- readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod }));
2192
+ readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod, uncompressedSize: inputSize }));
2189
2193
  } else if (useGzipCrc32) {
2190
2194
  gzipCrc32Stream = new GzipToRawDeflateStream();
2191
- readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
2195
+ readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP$1));
2192
2196
  readable = pipeThrough(readable, gzipCrc32Stream);
2193
2197
  } else {
2194
2198
  try {
@@ -2196,7 +2200,7 @@ class DeflateStream extends TransformStream {
2196
2200
  } catch (error) {
2197
2201
  let gzipStream;
2198
2202
  try {
2199
- gzipStream = new CompressionStream(FORMAT_GZIP);
2203
+ gzipStream = new CompressionStream(FORMAT_GZIP$1);
2200
2204
  } catch {
2201
2205
  throw error;
2202
2206
  }
@@ -2360,7 +2364,7 @@ class InflateStream extends TransformStream {
2360
2364
  }
2361
2365
  let gzipStream;
2362
2366
  try {
2363
- gzipStream = new DecompressionStream(FORMAT_GZIP);
2367
+ gzipStream = new DecompressionStream(FORMAT_GZIP$1);
2364
2368
  } catch {
2365
2369
  throw error;
2366
2370
  }
@@ -2409,11 +2413,11 @@ function supportsFormat(StreamClass, format) {
2409
2413
  }
2410
2414
 
2411
2415
  function supportsDeflateRaw(StreamClass) {
2412
- return supportsFormat(StreamClass, FORMAT_DEFLATE_RAW);
2416
+ return supportsFormat(StreamClass, FORMAT_DEFLATE_RAW$1);
2413
2417
  }
2414
2418
 
2415
2419
  function supportsGzip(StreamClass) {
2416
- return supportsFormat(StreamClass, FORMAT_GZIP);
2420
+ return supportsFormat(StreamClass, FORMAT_GZIP$1);
2417
2421
  }
2418
2422
 
2419
2423
  function setReadable(stream, readable, flush) {
@@ -2436,7 +2440,7 @@ function pipeThroughCompressionStream(readable, useCompressionStream, options, C
2436
2440
  const Stream = useCompressionStream && CompressionStreamNative ?
2437
2441
  CompressionStreamNative :
2438
2442
  CompressionStreamFallback || CompressionStreamNative;
2439
- const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
2443
+ const format = options.deflate64 ? FORMAT_DEFLATE64_RAW$1 : FORMAT_DEFLATE_RAW$1;
2440
2444
  let codecStream;
2441
2445
  try {
2442
2446
  codecStream = new Stream(format, options);
@@ -6701,6 +6705,13 @@ async function addFile(zipWriter, name, reader, options) {
6701
6705
  const { comment } = metadataInfo;
6702
6706
  const extraField = options[PROPERTY_NAME_EXTRA_FIELD];
6703
6707
  zipWriter.fileEntries.set(name, UNDEFINED_VALUE);
6708
+ const previousFileEntry = zipWriter.lastFileEntry;
6709
+ const pendingFileEntry = {};
6710
+ let releaseLockFileEntry;
6711
+ if (metadataInfo.resolvedOptions.keepOrder) {
6712
+ pendingFileEntry.lockFileEntry = new Promise(resolve => releaseLockFileEntry = resolve);
6713
+ }
6714
+ zipWriter.lastFileEntry = pendingFileEntry;
6704
6715
  let fileEntry;
6705
6716
  try {
6706
6717
  const { resolvedOptions } = metadataInfo;
@@ -6722,10 +6733,21 @@ async function addFile(zipWriter, name, reader, options) {
6722
6733
  const headerInfo = getHeaderInfo(options);
6723
6734
  const dataDescriptorInfo = getDataDescriptorInfo(options);
6724
6735
  const metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray);
6725
- fileEntry = await getFileEntry(zipWriter, name, reader, { headerInfo, dataDescriptorInfo, metadataSize }, options);
6736
+ fileEntry = await getFileEntry(zipWriter, name, reader, {
6737
+ headerInfo,
6738
+ dataDescriptorInfo,
6739
+ metadataSize,
6740
+ fileEntry: pendingFileEntry,
6741
+ previousFileEntry,
6742
+ releaseLockFileEntry
6743
+ }, options);
6726
6744
  } catch (error) {
6727
6745
  zipWriter.fileEntries.delete(name);
6728
6746
  throw error;
6747
+ } finally {
6748
+ if (releaseLockFileEntry) {
6749
+ releaseLockFileEntry(previousFileEntry && previousFileEntry.lockFileEntry);
6750
+ }
6729
6751
  }
6730
6752
  Object.assign(fileEntry, {
6731
6753
  name,
@@ -7113,7 +7135,6 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
7113
7135
  }
7114
7136
  const usdz = writerOptions[OPTION_USDZ];
7115
7137
  const files = new Map();
7116
- let layoutDependsOnWriteOrder = Boolean(usdz);
7117
7138
  const initialOffset = writerOptions[OPTION_OFFSET] === UNDEFINED_VALUE ? 0 : writerOptions[OPTION_OFFSET];
7118
7139
  let offset = initialOffset;
7119
7140
  let minimumEntrySize = INFINITY_VALUE;
@@ -7159,9 +7180,7 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
7159
7180
  minimumEntrySize = Math.min(minimumEntrySize, entrySize);
7160
7181
  offset += entrySize;
7161
7182
  }
7162
- if (files.size && offset - minimumEntrySize >= MAX_32_BITS) {
7163
- layoutDependsOnWriteOrder = true;
7164
- }
7183
+ const layoutDependsOnWriteOrder = files.size > 1 && (usdz || offset - minimumEntrySize >= MAX_32_BITS);
7165
7184
  if (layoutDependsOnWriteOrder && !writeOrderGuaranteed) {
7166
7185
  throw new Error(ERR_UNDETERMINED_SIZE);
7167
7186
  }
@@ -7189,27 +7208,23 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
7189
7208
  signal
7190
7209
  } = options;
7191
7210
  const {
7192
- headerInfo
7211
+ headerInfo,
7212
+ fileEntry: pendingFileEntry,
7213
+ previousFileEntry,
7214
+ releaseLockFileEntry
7193
7215
  } = entryInfo;
7194
7216
  const usdz = zipWriter.options[OPTION_USDZ];
7195
- const previousFileEntry = zipWriter.lastFileEntry;
7196
- let fileEntry = {};
7217
+ let fileEntry = pendingFileEntry;
7197
7218
  let bufferedWrite;
7198
7219
  let releaseLockWriter;
7199
- let releaseLockCurrentFileEntry;
7200
7220
  let writingBufferedEntryData;
7201
7221
  let writingEntryData;
7202
7222
  let writerSizeBeforeEntry;
7203
7223
  let flushedBufferedSize = 0;
7204
7224
  let fileWriter;
7225
+ const lockPreviousFileEntry = keepOrder && previousFileEntry ? previousFileEntry.lockFileEntry : UNDEFINED_VALUE;
7205
7226
  fileEntries.set(name, fileEntry);
7206
- zipWriter.lastFileEntry = fileEntry;
7207
7227
  try {
7208
- let lockPreviousFileEntry;
7209
- if (keepOrder) {
7210
- lockPreviousFileEntry = previousFileEntry && previousFileEntry.lockFileEntry;
7211
- requestLockCurrentFileEntry();
7212
- }
7213
7228
  if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || (!dataDescriptor && !emptyEntry)) {
7214
7229
  bufferedWrite = true;
7215
7230
  zipWriter.bufferedWrites++;
@@ -7222,6 +7237,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
7222
7237
  await initStream(writer);
7223
7238
  } else {
7224
7239
  fileWriter = writer;
7240
+ await lockPreviousFileEntry;
7225
7241
  await requestLockWriter();
7226
7242
  }
7227
7243
  await initStream(fileWriter);
@@ -7234,7 +7250,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
7234
7250
  }
7235
7251
  const { localHeaderArray } = headerInfo;
7236
7252
  if (!bufferedWrite) {
7237
- await lockPreviousFileEntry;
7238
7253
  await skipDiskIfNeeded();
7239
7254
  }
7240
7255
  const diskNumberStart = getDiskNumber(writer);
@@ -7299,8 +7314,8 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
7299
7314
  if (bufferedWrite) {
7300
7315
  zipWriter.bufferedWrites--;
7301
7316
  }
7302
- if (releaseLockCurrentFileEntry) {
7303
- releaseLockCurrentFileEntry();
7317
+ if (releaseLockFileEntry) {
7318
+ releaseLockFileEntry(lockPreviousFileEntry);
7304
7319
  }
7305
7320
  if (releaseLockWriter) {
7306
7321
  releaseLockWriter();
@@ -7314,10 +7329,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
7314
7329
  }
7315
7330
  }
7316
7331
 
7317
- function requestLockCurrentFileEntry() {
7318
- fileEntry.lockFileEntry = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
7319
- }
7320
-
7321
7332
  async function requestLockWriter() {
7322
7333
  zipWriter.writerLocked = true;
7323
7334
  const { lockWriter } = zipWriter;
@@ -7452,6 +7463,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
7452
7463
  const workerOptions = {
7453
7464
  options: {
7454
7465
  codecType: CODEC_DEFLATE,
7466
+ inputSize: size,
7455
7467
  level,
7456
7468
  rawPassword,
7457
7469
  password,
@@ -8562,6 +8574,111 @@ function getMimeType() {
8562
8574
  */
8563
8575
 
8564
8576
 
8577
+ function getSupportedCompressionMethods() {
8578
+ const { CompressionStream, DecompressionStream, CompressionStreamFallback, DecompressionStreamFallback } = getConfiguration();
8579
+ const supportedMethods = [{
8580
+ compressionMethod: COMPRESSION_METHOD_STORE,
8581
+ compression: true,
8582
+ decompression: true,
8583
+ registered: false
8584
+ }, {
8585
+ compressionMethod: COMPRESSION_METHOD_DEFLATE,
8586
+ compression: formatSupported(CompressionStreamFallback, FORMAT_DEFLATE_RAW$1) ||
8587
+ formatSupported(CompressionStream, FORMAT_DEFLATE_RAW$1) || formatSupported(CompressionStream, FORMAT_GZIP$1),
8588
+ decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE_RAW$1) ||
8589
+ formatSupported(DecompressionStream, FORMAT_DEFLATE_RAW$1) || formatSupported(DecompressionStream, FORMAT_GZIP$1),
8590
+ registered: false
8591
+ }, {
8592
+ compressionMethod: COMPRESSION_METHOD_DEFLATE_64,
8593
+ compression: false,
8594
+ decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE64_RAW$1) ||
8595
+ formatSupported(DecompressionStream, FORMAT_DEFLATE64_RAW$1),
8596
+ registered: false
8597
+ }];
8598
+ for (const codec of getRegisteredCodecs()) {
8599
+ const codecStreams = getCodecStreams(codec.format);
8600
+ supportedMethods.push({
8601
+ compressionMethod: codec.compressionMethod,
8602
+ // deno-lint-ignore valid-typeof
8603
+ compression: codecStreams ? typeof codecStreams.CompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
8604
+ // deno-lint-ignore valid-typeof
8605
+ decompression: codecStreams ? typeof codecStreams.DecompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
8606
+ registered: true
8607
+ });
8608
+ }
8609
+ return supportedMethods;
8610
+ }
8611
+
8612
+ function formatSupported(StreamClass, format) {
8613
+ if (!StreamClass) {
8614
+ return false;
8615
+ }
8616
+ const { supportedFormats } = StreamClass;
8617
+ if (supportedFormats) {
8618
+ return supportedFormats.includes(format);
8619
+ }
8620
+ return supportsFormat(StreamClass, format);
8621
+ }
8622
+
8623
+ /*
8624
+ Copyright (c) 2025 Gildas Lormeau. All rights reserved.
8625
+
8626
+ Redistribution and use in source and binary forms, with or without
8627
+ modification, are permitted provided that the following conditions are met:
8628
+
8629
+ 1. Redistributions of source code must retain the above copyright notice,
8630
+ this list of conditions and the following disclaimer.
8631
+
8632
+ 2. Redistributions in binary form must reproduce the above copyright
8633
+ notice, this list of conditions and the following disclaimer in
8634
+ the documentation and/or other materials provided with the distribution.
8635
+
8636
+ 3. The names of the authors may not be used to endorse or promote products
8637
+ derived from this software without specific prior written permission.
8638
+
8639
+ THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
8640
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
8641
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
8642
+ INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
8643
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8644
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
8645
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
8646
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
8647
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
8648
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8649
+ */
8650
+
8651
+ const VERSION = "2.8.61";
8652
+
8653
+ /*
8654
+ Copyright (c) 2025 Gildas Lormeau. All rights reserved.
8655
+
8656
+ Redistribution and use in source and binary forms, with or without
8657
+ modification, are permitted provided that the following conditions are met:
8658
+
8659
+ 1. Redistributions of source code must retain the above copyright notice,
8660
+ this list of conditions and the following disclaimer.
8661
+
8662
+ 2. Redistributions in binary form must reproduce the above copyright
8663
+ notice, this list of conditions and the following disclaimer in
8664
+ the documentation and/or other materials provided with the distribution.
8665
+
8666
+ 3. The names of the authors may not be used to endorse or promote products
8667
+ derived from this software without specific prior written permission.
8668
+
8669
+ THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
8670
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
8671
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
8672
+ INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
8673
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8674
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
8675
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
8676
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
8677
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
8678
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8679
+ */
8680
+
8681
+
8565
8682
  const DEFAULT_THRESHOLD$2 = 1024 * 1024;
8566
8683
  const DEFAULT_DIRECTORY_NAME$1 = ".zip.js-temp";
8567
8684
 
@@ -9010,6 +9127,11 @@ try {
9010
9127
 
9011
9128
  /* global TransformStream */
9012
9129
 
9130
+ const FORMAT_DEFLATE = "deflate";
9131
+ const FORMAT_DEFLATE_RAW = "deflate-raw";
9132
+ const FORMAT_DEFLATE64_RAW = "deflate64-raw";
9133
+ const FORMAT_GZIP = "gzip";
9134
+
9013
9135
  let wasm, malloc, free, memory, initError;
9014
9136
 
9015
9137
  function setWasmExports(wasmAPI) {
@@ -9055,15 +9177,15 @@ function _make(isCompress, type, options = {}) {
9055
9177
  this._last_consumed = wasm.deflate_last_consumed;
9056
9178
  this._end = wasm.deflate_end;
9057
9179
  this.streamHandle = wasm.deflate_new();
9058
- if (type === "gzip") {
9180
+ if (type === FORMAT_GZIP) {
9059
9181
  result = wasm.deflate_init_gzip(this.streamHandle, level);
9060
- } else if (type === "deflate-raw") {
9182
+ } else if (type === FORMAT_DEFLATE_RAW) {
9061
9183
  result = wasm.deflate_init_raw(this.streamHandle, level);
9062
9184
  } else {
9063
9185
  result = wasm.deflate_init(this.streamHandle, level);
9064
9186
  }
9065
9187
  } else {
9066
- if (type === "deflate64-raw") {
9188
+ if (type === FORMAT_DEFLATE64_RAW) {
9067
9189
  this._process = wasm.inflate9_process;
9068
9190
  this._last_consumed = wasm.inflate9_last_consumed;
9069
9191
  this._end = wasm.inflate9_end;
@@ -9074,9 +9196,9 @@ function _make(isCompress, type, options = {}) {
9074
9196
  this._last_consumed = wasm.inflate_last_consumed;
9075
9197
  this._end = wasm.inflate_end;
9076
9198
  this.streamHandle = wasm.inflate_new();
9077
- if (type === "deflate-raw") {
9199
+ if (type === FORMAT_DEFLATE_RAW) {
9078
9200
  result = wasm.inflate_init_raw(this.streamHandle);
9079
- } else if (type === "gzip") {
9201
+ } else if (type === FORMAT_GZIP) {
9080
9202
  result = wasm.inflate_init_gzip(this.streamHandle);
9081
9203
  } else {
9082
9204
  result = wasm.inflate_init(this.streamHandle);
@@ -9197,12 +9319,12 @@ function _make(isCompress, type, options = {}) {
9197
9319
  }
9198
9320
 
9199
9321
  class CompressionStreamZlib {
9200
- constructor(type = "deflate", options) {
9322
+ constructor(type = FORMAT_DEFLATE, options) {
9201
9323
  return _make(true, type, options);
9202
9324
  }
9203
9325
  }
9204
9326
  class DecompressionStreamZlib {
9205
- constructor(type = "deflate", options) {
9327
+ constructor(type = FORMAT_DEFLATE, options) {
9206
9328
  return _make(false, type, options);
9207
9329
  }
9208
9330
  }
@@ -9211,6 +9333,11 @@ class DecompressionStreamZlib {
9211
9333
  // module fails to load, rather than discarding a self-contained codec supplied through config.
9212
9334
  CompressionStreamZlib.requiresModule = true;
9213
9335
  DecompressionStreamZlib.requiresModule = true;
9336
+ // Constructing these classes before the module is loaded throws, so capability probes cannot rely
9337
+ // on trying the constructor; the formats are declared instead, next to the branches implementing
9338
+ // them in _make().
9339
+ CompressionStreamZlib.supportedFormats = [FORMAT_DEFLATE, FORMAT_DEFLATE_RAW, FORMAT_GZIP];
9340
+ DecompressionStreamZlib.supportedFormats = [FORMAT_DEFLATE, FORMAT_DEFLATE_RAW, FORMAT_GZIP, FORMAT_DEFLATE64_RAW];
9214
9341
 
9215
9342
  /*
9216
9343
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
@@ -9845,12 +9972,13 @@ class ZipDirectoryEntry extends ZipEntry {
9845
9972
  if (options.bufferedWrite === UNDEFINED_VALUE) {
9846
9973
  options.bufferedWrite = true;
9847
9974
  }
9848
- const writeOrderGuaranteed = !options.bufferedWrite ||
9849
- (options.keepOrder !== false && zipEntry.children.every(child => !child.children.length));
9850
- return getEntriesSize(options, zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
9975
+ const entries = zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
9851
9976
  const { name, entryOptions } = getChildEntryOptions(child, zipEntry, options);
9852
9977
  return { name, size: child.directory ? 0 : getDeterminedSize(child, isPassThrough(child, options)), options: entryOptions };
9853
- }), writeOrderGuaranteed, options.globalComment);
9978
+ });
9979
+ const writeOrderGuaranteed = !options.bufferedWrite ||
9980
+ (entries.every(entry => entry.options.keepOrder !== false) && zipEntry.children.every(child => !child.children.length));
9981
+ return getEntriesSize(options, entries, writeOrderGuaranteed, options.globalComment);
9854
9982
  }
9855
9983
 
9856
9984
  getChildByName(name) {
@@ -10672,4 +10800,4 @@ function addChild(parent, name, params, directory) {
10672
10800
  }
10673
10801
  }
10674
10802
 
10675
- export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_DATA_OUT_OF_BOUNDS, ERR_ENTRY_EXISTS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_CODEC_DEFINITION, ERR_INVALID_CODEC_MODULE, ERR_INVALID_COMMENT, ERR_INVALID_COMMENT_TYPE, ERR_INVALID_COMPRESSED_DATA, ERR_INVALID_CRC32, ERR_INVALID_DATE, ERR_INVALID_ENCRYPTION_STRENGTH, ERR_INVALID_ENTRY_COMMENT, ERR_INVALID_ENTRY_COMMENT_TYPE, ERR_INVALID_ENTRY_NAME, ERR_INVALID_EXTRAFIELD, ERR_INVALID_EXTRAFIELD_DATA, ERR_INVALID_EXTRAFIELD_DATA_TYPE, ERR_INVALID_EXTRAFIELD_TYPE, ERR_INVALID_FILENAME_VALIDATION, ERR_INVALID_FUNCTION_OPTION, ERR_INVALID_GID, ERR_INVALID_LEVEL, ERR_INVALID_MAX_APPENDED_DATA_SIZE, ERR_INVALID_MAX_WORKERS, ERR_INVALID_MSDOS_ATTRIBUTES, ERR_INVALID_MSDOS_DATA, ERR_INVALID_PASSWORD, ERR_INVALID_PASSWORD_TYPE, ERR_INVALID_PASS_THROUGH, ERR_INVALID_READER_OPTIONS, ERR_INVALID_SIGNAL, ERR_INVALID_SIGNATURE, ERR_INVALID_SIGNATURE_DATA, ERR_INVALID_STRICTNESS, ERR_INVALID_UID, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_UNIX_EXTRA_FIELD_TYPE, ERR_INVALID_UNIX_ID_SIZE, ERR_INVALID_UNIX_MODE, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_READABLE_CONSUMED, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_COMPRESSION_METHOD, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNDETERMINED_SIZE, ERR_UNSAFE_FILENAME, ERR_UNSUPPORTED_COMPRESSION$1 as ERR_UNSUPPORTED_COMPRESSION, ERR_UNSUPPORTED_CONTEXT, ERR_UNSUPPORTED_CRYPTO_API, ERR_UNSUPPORTED_ENCRYPTION, ERR_UNSUPPORTED_ENCRYPTION_PASS_THROUGH, ERR_UNSUPPORTED_ENCRYPTION_USDZ, ERR_UNSUPPORTED_FORMAT, ERR_UNSUPPORTED_UINT64, ERR_WORKER_STARTUP_TIMEOUT, ERR_WRITER_NOT_INITIALIZED, ERR_ZIP_CRYPTO_LAST_MOD_DATE, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, WARNING_APPENDED_DATA, WARNING_COMPRESSED_PATCHED_DATA, WARNING_DUPLICATE_FILENAME, WARNING_MALFORMED_EXTRA_FIELD, WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG, WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD, WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY, WARNING_PREPENDED_DATA, WARNING_TRAILING_CENTRAL_DIRECTORY_DATA, WARNING_UNKNOWN_VERSION, WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA, WARNING_UNSORTED_CENTRAL_DIRECTORY, WARNING_WRAPPED_ENTRIES_COUNT, Writer, ZipDirectoryEntry, ZipEntry, ZipFS, ZipFileEntry, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, isZipFile, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };
10803
+ export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_DATA_OUT_OF_BOUNDS, ERR_ENTRY_EXISTS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_CODEC_DEFINITION, ERR_INVALID_CODEC_MODULE, ERR_INVALID_COMMENT, ERR_INVALID_COMMENT_TYPE, ERR_INVALID_COMPRESSED_DATA, ERR_INVALID_CRC32, ERR_INVALID_DATE, ERR_INVALID_ENCRYPTION_STRENGTH, ERR_INVALID_ENTRY_COMMENT, ERR_INVALID_ENTRY_COMMENT_TYPE, ERR_INVALID_ENTRY_NAME, ERR_INVALID_EXTRAFIELD, ERR_INVALID_EXTRAFIELD_DATA, ERR_INVALID_EXTRAFIELD_DATA_TYPE, ERR_INVALID_EXTRAFIELD_TYPE, ERR_INVALID_FILENAME_VALIDATION, ERR_INVALID_FUNCTION_OPTION, ERR_INVALID_GID, ERR_INVALID_LEVEL, ERR_INVALID_MAX_APPENDED_DATA_SIZE, ERR_INVALID_MAX_WORKERS, ERR_INVALID_MSDOS_ATTRIBUTES, ERR_INVALID_MSDOS_DATA, ERR_INVALID_PASSWORD, ERR_INVALID_PASSWORD_TYPE, ERR_INVALID_PASS_THROUGH, ERR_INVALID_READER_OPTIONS, ERR_INVALID_SIGNAL, ERR_INVALID_SIGNATURE, ERR_INVALID_SIGNATURE_DATA, ERR_INVALID_STRICTNESS, ERR_INVALID_UID, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_UNIX_EXTRA_FIELD_TYPE, ERR_INVALID_UNIX_ID_SIZE, ERR_INVALID_UNIX_MODE, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_READABLE_CONSUMED, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_COMPRESSION_METHOD, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNDETERMINED_SIZE, ERR_UNSAFE_FILENAME, ERR_UNSUPPORTED_COMPRESSION$1 as ERR_UNSUPPORTED_COMPRESSION, ERR_UNSUPPORTED_CONTEXT, ERR_UNSUPPORTED_CRYPTO_API, ERR_UNSUPPORTED_ENCRYPTION, ERR_UNSUPPORTED_ENCRYPTION_PASS_THROUGH, ERR_UNSUPPORTED_ENCRYPTION_USDZ, ERR_UNSUPPORTED_FORMAT, ERR_UNSUPPORTED_UINT64, ERR_WORKER_STARTUP_TIMEOUT, ERR_WRITER_NOT_INITIALIZED, ERR_ZIP_CRYPTO_LAST_MOD_DATE, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, VERSION, WARNING_APPENDED_DATA, WARNING_COMPRESSED_PATCHED_DATA, WARNING_DUPLICATE_FILENAME, WARNING_MALFORMED_EXTRA_FIELD, WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG, WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD, WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY, WARNING_PREPENDED_DATA, WARNING_TRAILING_CENTRAL_DIRECTORY_DATA, WARNING_UNKNOWN_VERSION, WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA, WARNING_UNSORTED_CENTRAL_DIRECTORY, WARNING_WRAPPED_ENTRIES_COUNT, Writer, ZipDirectoryEntry, ZipEntry, ZipFS, ZipFileEntry, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, getRegisteredCodecs, getSupportedCompressionMethods, isZipFile, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };