@zip.js/zip.js 2.19.0 → 2.20.0

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.
@@ -4814,6 +4814,8 @@ const WARNING_APPENDED_DATA = "appended data";
4814
4814
  const WARNING_PREPENDED_DATA = "prepended data";
4815
4815
  const WARNING_PREPENDED_CENTRAL_DIRECTORY = "prepended central directory";
4816
4816
  const WARNING_TRAILING_CENTRAL_DIRECTORY_DATA = "trailing central directory data";
4817
+ const WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET = "mismatched central directory offset";
4818
+ const WARNING_MISSING_ZIP64_EXTRA_FIELD = "missing zip64 extra field";
4817
4819
  const WARNING_DUPLICATE_FILENAME = "duplicate filename";
4818
4820
  const WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY = "mismatched zip64 end of central directory record";
4819
4821
  const WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY = "multiple end of central directory records";
@@ -4976,6 +4978,8 @@ class ZipReader {
4976
4978
  reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
4977
4979
  }
4978
4980
  directoryDataOffset = getDiskOffset$1(reader, diskNumber) + getBigUint64(endOfDirectoryView, 48) + prependedDataLength;
4981
+ } else if (directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || diskNumber == MAX_16_BITS) {
4982
+ throw new Error(ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND);
4979
4983
  }
4980
4984
  }
4981
4985
  let declaredDirectoryDataLength = directoryDataLength;
@@ -4998,25 +5002,44 @@ class ZipReader {
4998
5002
  if (directoryArray.length < 4) {
4999
5003
  throw new Error(ERR_BAD_FORMAT);
5000
5004
  }
5001
- const expectedDirectoryDataOffset = centralDirectoryEndOffset - directoryDataLength;
5005
+ let expectedDirectoryDataOffset = centralDirectoryEndOffset - directoryDataLength;
5002
5006
  if (directoryDataOffset != expectedDirectoryDataOffset && diskNumber == lastDiskNumber) {
5003
5007
  const storedPointsAtDirectory = getUint32$1(directoryView, offset) == CENTRAL_FILE_HEADER_SIGNATURE ||
5004
5008
  Boolean(directoryEncryptionInfo && directoryEncryptionInfo.compressedSize) ||
5005
5009
  detectEncryptedCentralDirectory(directoryView);
5006
5010
  let reconcile = !storedPointsAtDirectory;
5007
- if (!reconcile && expectedDirectoryDataOffset >= 0 && expectedDirectoryDataOffset + 4 <= reader.size) {
5008
- const expectedSignatureArray = await readUint8Array(reader, expectedDirectoryDataOffset, 4);
5009
- reconcile = getUint32$1(getDataView(expectedSignatureArray), 0) == CENTRAL_FILE_HEADER_SIGNATURE;
5011
+ if (expectedDirectoryDataOffset >= 0 && expectedDirectoryDataOffset + 4 <= reader.size) {
5012
+ const expectedPointsAtDirectory = await pointsAtDirectory(reader, expectedDirectoryDataOffset);
5013
+ if (storedPointsAtDirectory) {
5014
+ reconcile = expectedPointsAtDirectory;
5015
+ } else if (!expectedPointsAtDirectory) {
5016
+ const signatureRecordOffset = await findDigitalSignatureRecordOffset(reader, centralDirectoryEndOffset);
5017
+ const signedDirectoryDataOffset = signatureRecordOffset - directoryDataLength;
5018
+ if (signatureRecordOffset !== UNDEFINED_VALUE && signedDirectoryDataOffset >= 0 &&
5019
+ await pointsAtDirectory(reader, signedDirectoryDataOffset)) {
5020
+ expectedDirectoryDataOffset = signedDirectoryDataOffset;
5021
+ }
5022
+ }
5010
5023
  }
5011
5024
  if (reconcile) {
5012
5025
  const originalDirectoryDataOffset = directoryDataOffset;
5013
5026
  directoryDataOffset = expectedDirectoryDataOffset;
5027
+ directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength);
5028
+ directoryView = getDataView(directoryArray);
5014
5029
  if (directoryDataOffset > originalDirectoryDataOffset) {
5015
5030
  prependedDataLength += directoryDataOffset - originalDirectoryDataOffset;
5016
5031
  prependedCentralDirectory = storedPointsAtDirectory;
5032
+ } else {
5033
+ reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET);
5034
+ const offsetDelta = directoryDataOffset - originalDirectoryDataOffset;
5035
+ if (directoryArray.length >= CENTRAL_FILE_HEADER_LENGTH) {
5036
+ const localHeaderOffset = getUint32$1(directoryView, 42);
5037
+ if (!await startsWithSignature(reader, localHeaderOffset, LOCAL_FILE_HEADER_SIGNATURE) &&
5038
+ await startsWithSignature(reader, localHeaderOffset + offsetDelta, LOCAL_FILE_HEADER_SIGNATURE)) {
5039
+ prependedDataLength += offsetDelta;
5040
+ }
5041
+ }
5017
5042
  }
5018
- directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength);
5019
- directoryView = getDataView(directoryArray);
5020
5043
  }
5021
5044
  }
5022
5045
  }
@@ -5127,7 +5150,16 @@ class ZipReader {
5127
5150
  filename,
5128
5151
  comment
5129
5152
  });
5130
- const malformedExtraField = readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6);
5153
+ let malformedExtraField;
5154
+ try {
5155
+ malformedExtraField = readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6);
5156
+ } catch (error) {
5157
+ if (checkAmbiguity || error.message != ERR_EXTRAFIELD_ZIP64_NOT_FOUND) {
5158
+ throw error;
5159
+ }
5160
+ fileEntry.zip64ExtraFieldMissing = true;
5161
+ addWarning(warnings, WARNING_MISSING_ZIP64_EXTRA_FIELD, fileEntry.filename);
5162
+ }
5131
5163
  filename = fileEntry.filename;
5132
5164
  if (normalizeFilename) {
5133
5165
  const normalizedFilename = normalizeFilename(filename);
@@ -5169,11 +5201,12 @@ class ZipReader {
5169
5201
  const sticky = Boolean(fileEntry.unixMode & FILE_ATTR_UNIX_STICKY_MASK);
5170
5202
  const unixType = fileEntry.unixMode === UNDEFINED_VALUE ? unixExternalUpper : fileEntry.unixMode;
5171
5203
  const symlink = (unixType & FILE_ATTR_UNIX_TYPE_MASK) == FILE_ATTR_UNIX_TYPE_SYMLINK;
5172
- const executable = !symlink && ((fileEntry.unixMode !== UNDEFINED_VALUE)
5173
- ? ((fileEntry.unixMode & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)
5174
- : (unixCompatible && ((unixExternalUpper & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)));
5175
5204
  const modeIsDir = fileEntry.unixMode !== UNDEFINED_VALUE && ((fileEntry.unixMode & FILE_ATTR_UNIX_TYPE_MASK) == FILE_ATTR_UNIX_TYPE_DIR);
5176
5205
  const upperIsDir = ((unixExternalUpper & FILE_ATTR_UNIX_TYPE_MASK) == FILE_ATTR_UNIX_TYPE_DIR);
5206
+ const directory = modeIsDir || upperIsDir || (msDosCompatible && msdosAttributes.directory) || fileEntry.filename.endsWith(DIRECTORY_SIGNATURE);
5207
+ const executable = !symlink && !directory && ((fileEntry.unixMode !== UNDEFINED_VALUE)
5208
+ ? ((fileEntry.unixMode & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)
5209
+ : (unixCompatible && ((unixExternalUpper & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)));
5177
5210
  Object.assign(fileEntry, {
5178
5211
  setuid,
5179
5212
  setgid,
@@ -5181,7 +5214,7 @@ class ZipReader {
5181
5214
  symlink,
5182
5215
  unixExternalUpper,
5183
5216
  executable,
5184
- directory: modeIsDir || upperIsDir || (msDosCompatible && msdosAttributes.directory) || fileEntry.filename.endsWith(DIRECTORY_SIGNATURE),
5217
+ directory,
5185
5218
  zipCrypto: fileEntry.encrypted && !fileEntry.extraFieldAES
5186
5219
  });
5187
5220
  const entry = new Entry(fileEntry);
@@ -5237,10 +5270,10 @@ class ZipReader {
5237
5270
  const extractAppendedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_APPENDED_DATA);
5238
5271
  const splitZipSignatureLength = (checkAmbiguity || extractPrependedData) && filesLength &&
5239
5272
  startOffset == SPLIT_ZIP_FILE_SIGNATURE_LENGTH && await startsWithSplitZipMarker(reader) ? SPLIT_ZIP_FILE_SIGNATURE_LENGTH : 0;
5240
- if (checkAmbiguity && (prependedDataLength || (filesLength && startOffset > splitZipSignatureLength))) {
5273
+ if (checkAmbiguity && (prependedDataLength > 0 || (filesLength && startOffset > splitZipSignatureLength))) {
5241
5274
  throwAmbiguousArchive(WARNING_PREPENDED_DATA);
5242
5275
  }
5243
- if (prependedDataLength || (filesLength && startOffset > SPLIT_ZIP_FILE_SIGNATURE_LENGTH)) {
5276
+ if (prependedDataLength > 0 || (filesLength && startOffset > SPLIT_ZIP_FILE_SIGNATURE_LENGTH)) {
5244
5277
  addWarning(warnings, WARNING_PREPENDED_DATA);
5245
5278
  }
5246
5279
  if (prependedCentralDirectory) {
@@ -5400,6 +5433,9 @@ class ZipEntry {
5400
5433
 
5401
5434
  async getData(writer, fileEntry, readRanges, options = {}) {
5402
5435
  const zipEntry = this;
5436
+ if (zipEntry.zip64ExtraFieldMissing) {
5437
+ throw new Error(ERR_EXTRAFIELD_ZIP64_NOT_FOUND);
5438
+ }
5403
5439
  const config = getConfiguration();
5404
5440
  const {
5405
5441
  reader,
@@ -5637,6 +5673,30 @@ function getWrappedFilesLength(directoryView, directoryArray, offset) {
5637
5673
  return wrappedFilesLength % (MAX_16_BITS + 1) ? 0 : wrappedFilesLength;
5638
5674
  }
5639
5675
 
5676
+ function pointsAtDirectory(reader, offset) {
5677
+ return startsWithSignature(reader, offset, CENTRAL_FILE_HEADER_SIGNATURE);
5678
+ }
5679
+
5680
+ async function startsWithSignature(reader, offset, signature) {
5681
+ if (offset < 0 || offset + 4 > reader.size) {
5682
+ return false;
5683
+ }
5684
+ const signatureArray = await readUint8Array(reader, offset, 4);
5685
+ return getUint32$1(getDataView(signatureArray), 0) == signature;
5686
+ }
5687
+
5688
+ async function findDigitalSignatureRecordOffset(reader, endOffset) {
5689
+ const startOffset = Math.max(0, endOffset - (6 + MAX_16_BITS));
5690
+ const tailArray = await readUint8Array(reader, startOffset, endOffset - startOffset);
5691
+ const tailView = getDataView(tailArray);
5692
+ for (let indexByte = tailArray.length - 6; indexByte >= 0; indexByte--) {
5693
+ if (getUint32$1(tailView, indexByte) == DIGITAL_SIGNATURE_RECORD_SIGNATURE &&
5694
+ indexByte + 6 + getUint16$1(tailView, indexByte + 4) == tailArray.length) {
5695
+ return startOffset + indexByte;
5696
+ }
5697
+ }
5698
+ }
5699
+
5640
5700
  function readDigitalSignature(signatureRecordArray) {
5641
5701
  if (signatureRecordArray.length >= 6) {
5642
5702
  const signatureRecordView = getDataView(signatureRecordArray);
@@ -5768,6 +5828,11 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
5768
5828
  readExtraFieldUnixDates(extraFieldUnixType1, directory);
5769
5829
  directory.extraFieldUnixType1 = extraFieldUnixType1;
5770
5830
  }
5831
+ const extraFieldExtendedTimestamp = extraField.get(EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
5832
+ if (extraFieldExtendedTimestamp) {
5833
+ readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory);
5834
+ directory.extraFieldExtendedTimestamp = extraFieldExtendedTimestamp;
5835
+ }
5771
5836
  const extraFieldNTFS = extraField.get(EXTRAFIELD_TYPE_NTFS);
5772
5837
  if (extraFieldNTFS) {
5773
5838
  readExtraFieldNTFS(extraFieldNTFS, directory);
@@ -5784,11 +5849,6 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
5784
5849
  readExtraFieldUnix(extraFieldUnix, unixIdsRead ? {} : directory, false);
5785
5850
  directory.extraFieldUnix = extraFieldUnix;
5786
5851
  }
5787
- const extraFieldExtendedTimestamp = extraField.get(EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
5788
- if (extraFieldExtendedTimestamp) {
5789
- readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory);
5790
- directory.extraFieldExtendedTimestamp = extraFieldExtendedTimestamp;
5791
- }
5792
5852
  const extraFieldUSDZ = extraField.get(EXTRAFIELD_TYPE_USDZ);
5793
5853
  if (extraFieldUSDZ) {
5794
5854
  directory.extraFieldUSDZ = extraFieldUSDZ;
@@ -6427,11 +6487,13 @@ var zipReader = /*#__PURE__*/Object.freeze({
6427
6487
  WARNING_COMPRESSED_PATCHED_DATA: WARNING_COMPRESSED_PATCHED_DATA,
6428
6488
  WARNING_DUPLICATE_FILENAME: WARNING_DUPLICATE_FILENAME,
6429
6489
  WARNING_MALFORMED_EXTRA_FIELD: WARNING_MALFORMED_EXTRA_FIELD,
6490
+ WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET: WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET,
6430
6491
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG: WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG,
6431
6492
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD: WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD,
6432
6493
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES: WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES,
6433
6494
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_FILENAME: WARNING_MISMATCHED_LOCAL_FILE_HEADER_FILENAME,
6434
6495
  WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY: WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY,
6496
+ WARNING_MISSING_ZIP64_EXTRA_FIELD: WARNING_MISSING_ZIP64_EXTRA_FIELD,
6435
6497
  WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY: WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY,
6436
6498
  WARNING_PREPENDED_CENTRAL_DIRECTORY: WARNING_PREPENDED_CENTRAL_DIRECTORY,
6437
6499
  WARNING_PREPENDED_DATA: WARNING_PREPENDED_DATA,
@@ -6564,13 +6626,14 @@ class ZipWriter {
6564
6626
  return watchPromiseError(this, prependZipEntries(this, reader));
6565
6627
  }
6566
6628
 
6567
- appendZip(reader) {
6568
- return watchPromiseError(this, this.appendZipEntries(reader));
6629
+ appendZip(reader, options = {}) {
6630
+ return watchPromiseError(this, this.appendZipEntries(reader, options));
6569
6631
  }
6570
6632
 
6571
- async appendZipEntries(reader) {
6633
+ async appendZipEntries(reader, options = {}) {
6572
6634
  const zipWriter = this;
6573
6635
  const { pendingAddFileCalls, filenames, fileEntries } = zipWriter;
6636
+ const filter = checkFunctionOption(options.filter);
6574
6637
  while (pendingAddFileCalls.size) {
6575
6638
  await Promise.allSettled(Array.from(pendingAddFileCalls));
6576
6639
  }
@@ -6589,10 +6652,16 @@ class ZipWriter {
6589
6652
  const { ZipReader } = await Promise.resolve().then(function () { return zipReader; });
6590
6653
  const zipReader$1 = new ZipReader(reader);
6591
6654
  const entries = await zipReader$1.getEntries();
6655
+ const keptEntries = [];
6656
+ for (const entry of entries) {
6657
+ if (!filter || await filter(entry)) {
6658
+ keptEntries.push(entry);
6659
+ }
6660
+ }
6592
6661
  await zipReader$1.close();
6593
6662
  await initStream(zipWriter.writer);
6594
6663
  const { directoryOffset } = zipReader$1;
6595
- entries.forEach(({ filename }) => {
6664
+ keptEntries.forEach(({ filename }) => {
6596
6665
  if (filenames.has(filename)) {
6597
6666
  throw new Error(ERR_DUPLICATED_NAME);
6598
6667
  }
@@ -6613,8 +6682,8 @@ class ZipWriter {
6613
6682
  zipWriter.offset += SPLIT_ZIP_FILE_SIGNATURE_LENGTH;
6614
6683
  }
6615
6684
  }
6616
- const entryPositions = await copyZipData(zipWriter, reader, entries, directoryOffset);
6617
- entries.forEach(entry => {
6685
+ const entryPositions = await copyZipData(zipWriter, reader, entries, keptEntries, directoryOffset, Boolean(filter));
6686
+ keptEntries.forEach(entry => {
6618
6687
  const {
6619
6688
  version,
6620
6689
  rawLastModDate,
@@ -8527,26 +8596,42 @@ function removeExtraFieldZip64(rawExtraField) {
8527
8596
  return rawExtraField;
8528
8597
  }
8529
8598
 
8530
- async function copyZipData(zipWriter, reader, entries, directoryOffset) {
8599
+ async function copyZipData(zipWriter, reader, entries, keptEntries, directoryOffset, compact) {
8531
8600
  const { writer } = zipWriter;
8532
8601
  const entryPositions = new Map();
8533
- if (writer.closeDisk) {
8602
+ if (writer.closeDisk || compact) {
8534
8603
  const sortedEntries = Array.from(entries).sort((firstEntry, secondEntry) =>
8535
8604
  getSourceOffset(reader, firstEntry) - getSourceOffset(reader, secondEntry));
8536
- let copiedLength = 0;
8537
- for (const entry of sortedEntries) {
8538
- const sourceOffset = getSourceOffset(reader, entry);
8539
- await copyData(zipWriter, reader, copiedLength, sourceOffset - copiedLength);
8540
- if (exceedsAvailableSize(writer, await getLocalHeaderLength(reader, sourceOffset))) {
8541
- await writer.closeDisk();
8542
- }
8543
- entryPositions.set(entry, {
8544
- offset: getSegmentOffset(zipWriter, writer),
8545
- diskNumberStart: getDiskNumber(writer)
8546
- });
8547
- copiedLength = sourceOffset;
8605
+ const regionEnds = getRegionEnds(reader, sortedEntries, directoryOffset);
8606
+ const keptEntrySet = new Set(keptEntries);
8607
+ let copiedOffset = 0;
8608
+ let lastPosition;
8609
+ for (let indexEntry = 0; indexEntry < sortedEntries.length; indexEntry++) {
8610
+ const entry = sortedEntries[indexEntry];
8611
+ if (keptEntrySet.has(entry)) {
8612
+ const sourceOffset = getSourceOffset(reader, entry);
8613
+ if (sourceOffset < copiedOffset) {
8614
+ entryPositions.set(entry, lastPosition);
8615
+ } else {
8616
+ if (!compact) {
8617
+ await copyData(zipWriter, reader, copiedOffset, sourceOffset - copiedOffset);
8618
+ }
8619
+ if (writer.closeDisk && exceedsAvailableSize(writer, await getLocalHeaderLength(reader, sourceOffset))) {
8620
+ await writer.closeDisk();
8621
+ }
8622
+ lastPosition = {
8623
+ offset: getSegmentOffset(zipWriter, writer),
8624
+ diskNumberStart: getDiskNumber(writer)
8625
+ };
8626
+ entryPositions.set(entry, lastPosition);
8627
+ await copyData(zipWriter, reader, sourceOffset, regionEnds[indexEntry] - sourceOffset);
8628
+ copiedOffset = regionEnds[indexEntry];
8629
+ }
8630
+ }
8631
+ }
8632
+ if (!compact) {
8633
+ await copyData(zipWriter, reader, copiedOffset, directoryOffset - copiedOffset);
8548
8634
  }
8549
- await copyData(zipWriter, reader, copiedLength, directoryOffset - copiedLength);
8550
8635
  } else {
8551
8636
  const baseOffset = zipWriter.offset;
8552
8637
  await copyData(zipWriter, reader, 0, directoryOffset);
@@ -8558,6 +8643,20 @@ async function copyZipData(zipWriter, reader, entries, directoryOffset) {
8558
8643
  return entryPositions;
8559
8644
  }
8560
8645
 
8646
+ function getRegionEnds(reader, sortedEntries, directoryOffset) {
8647
+ const regionEnds = new Array(sortedEntries.length);
8648
+ let regionEnd = directoryOffset;
8649
+ for (let indexEntry = sortedEntries.length - 1; indexEntry >= 0; indexEntry--) {
8650
+ const sourceOffset = getSourceOffset(reader, sortedEntries[indexEntry]);
8651
+ const nextEntry = sortedEntries[indexEntry + 1];
8652
+ if (nextEntry && getSourceOffset(reader, nextEntry) > sourceOffset) {
8653
+ regionEnd = getSourceOffset(reader, nextEntry);
8654
+ }
8655
+ regionEnds[indexEntry] = regionEnd;
8656
+ }
8657
+ return regionEnds;
8658
+ }
8659
+
8561
8660
  async function copyData(zipWriter, reader, offset, size) {
8562
8661
  if (size > 0) {
8563
8662
  const { writer } = zipWriter;
@@ -8935,7 +9034,7 @@ function formatSupported(StreamClass, format) {
8935
9034
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8936
9035
  */
8937
9036
 
8938
- const VERSION = "2.19.0";
9037
+ const VERSION = "2.20.0";
8939
9038
 
8940
9039
  /*
8941
9040
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
@@ -9940,4 +10039,4 @@ async function terminateWorkersAndModule() {
9940
10039
 
9941
10040
  configureExternalAssets();
9942
10041
 
9943
- export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_CODEC_OUT_OF_MEMORY, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_DATA_OUT_OF_BOUNDS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_HTTP_STATUS, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_BASE_URI, 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, 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_VALUE, ERR_INVALID_READER, ERR_INVALID_SIGNAL, 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_URI, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_COMPRESSION_METHOD, ERR_UNDEFINED_CRC32, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNDETERMINED_SIZE, ERR_UNSAFE_FILENAME, 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_SPLIT_USDZ, ERR_UNSUPPORTED_UINT64, ERR_WORKER_STARTUP_TIMEOUT, ERR_WRITER_NOT_INITIALIZED, ERR_WRITER_SIZE_NOT_WRITABLE, ERR_ZIP_CRYPTO_LAST_MOD_DATE, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, VERSION, WARNING_APPENDED_DATA, WARNING_CLAMPED_LAST_MODIFICATION_DATE, WARNING_COMPRESSED_PATCHED_DATA, WARNING_COMPRESSION_UNAVAILABLE, 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_LOCAL_FILE_HEADER_FILENAME, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY, WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY, WARNING_PREPENDED_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, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, getMimeType, getRegisteredCodecs, getSupportedCompressionMethods, isZipFile, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };
10042
+ export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_CODEC_OUT_OF_MEMORY, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_DATA_OUT_OF_BOUNDS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_HTTP_STATUS, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_BASE_URI, 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, 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_VALUE, ERR_INVALID_READER, ERR_INVALID_SIGNAL, 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_URI, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_COMPRESSION_METHOD, ERR_UNDEFINED_CRC32, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNDETERMINED_SIZE, ERR_UNSAFE_FILENAME, 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_SPLIT_USDZ, ERR_UNSUPPORTED_UINT64, ERR_WORKER_STARTUP_TIMEOUT, ERR_WRITER_NOT_INITIALIZED, ERR_WRITER_SIZE_NOT_WRITABLE, ERR_ZIP_CRYPTO_LAST_MOD_DATE, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, VERSION, WARNING_APPENDED_DATA, WARNING_CLAMPED_LAST_MODIFICATION_DATE, WARNING_COMPRESSED_PATCHED_DATA, WARNING_COMPRESSION_UNAVAILABLE, WARNING_DUPLICATE_FILENAME, WARNING_MALFORMED_EXTRA_FIELD, WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET, WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG, WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD, WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES, WARNING_MISMATCHED_LOCAL_FILE_HEADER_FILENAME, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY, WARNING_MISSING_ZIP64_EXTRA_FIELD, WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY, WARNING_PREPENDED_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, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, getMimeType, getRegisteredCodecs, getSupportedCompressionMethods, isZipFile, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };