@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.
@@ -4834,6 +4834,8 @@ const WARNING_APPENDED_DATA = "appended data";
4834
4834
  const WARNING_PREPENDED_DATA = "prepended data";
4835
4835
  const WARNING_PREPENDED_CENTRAL_DIRECTORY = "prepended central directory";
4836
4836
  const WARNING_TRAILING_CENTRAL_DIRECTORY_DATA = "trailing central directory data";
4837
+ const WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET = "mismatched central directory offset";
4838
+ const WARNING_MISSING_ZIP64_EXTRA_FIELD = "missing zip64 extra field";
4837
4839
  const WARNING_DUPLICATE_FILENAME = "duplicate filename";
4838
4840
  const WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY = "mismatched zip64 end of central directory record";
4839
4841
  const WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY = "multiple end of central directory records";
@@ -4996,6 +4998,8 @@ class ZipReader {
4996
4998
  reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
4997
4999
  }
4998
5000
  directoryDataOffset = getDiskOffset$1(reader, diskNumber) + getBigUint64(endOfDirectoryView, 48) + prependedDataLength;
5001
+ } else if (directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || diskNumber == MAX_16_BITS) {
5002
+ throw new Error(ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND);
4999
5003
  }
5000
5004
  }
5001
5005
  let declaredDirectoryDataLength = directoryDataLength;
@@ -5018,25 +5022,44 @@ class ZipReader {
5018
5022
  if (directoryArray.length < 4) {
5019
5023
  throw new Error(ERR_BAD_FORMAT);
5020
5024
  }
5021
- const expectedDirectoryDataOffset = centralDirectoryEndOffset - directoryDataLength;
5025
+ let expectedDirectoryDataOffset = centralDirectoryEndOffset - directoryDataLength;
5022
5026
  if (directoryDataOffset != expectedDirectoryDataOffset && diskNumber == lastDiskNumber) {
5023
5027
  const storedPointsAtDirectory = getUint32$1(directoryView, offset) == CENTRAL_FILE_HEADER_SIGNATURE ||
5024
5028
  Boolean(directoryEncryptionInfo && directoryEncryptionInfo.compressedSize) ||
5025
5029
  detectEncryptedCentralDirectory(directoryView);
5026
5030
  let reconcile = !storedPointsAtDirectory;
5027
- if (!reconcile && expectedDirectoryDataOffset >= 0 && expectedDirectoryDataOffset + 4 <= reader.size) {
5028
- const expectedSignatureArray = await readUint8Array(reader, expectedDirectoryDataOffset, 4);
5029
- reconcile = getUint32$1(getDataView(expectedSignatureArray), 0) == CENTRAL_FILE_HEADER_SIGNATURE;
5031
+ if (expectedDirectoryDataOffset >= 0 && expectedDirectoryDataOffset + 4 <= reader.size) {
5032
+ const expectedPointsAtDirectory = await pointsAtDirectory(reader, expectedDirectoryDataOffset);
5033
+ if (storedPointsAtDirectory) {
5034
+ reconcile = expectedPointsAtDirectory;
5035
+ } else if (!expectedPointsAtDirectory) {
5036
+ const signatureRecordOffset = await findDigitalSignatureRecordOffset(reader, centralDirectoryEndOffset);
5037
+ const signedDirectoryDataOffset = signatureRecordOffset - directoryDataLength;
5038
+ if (signatureRecordOffset !== UNDEFINED_VALUE && signedDirectoryDataOffset >= 0 &&
5039
+ await pointsAtDirectory(reader, signedDirectoryDataOffset)) {
5040
+ expectedDirectoryDataOffset = signedDirectoryDataOffset;
5041
+ }
5042
+ }
5030
5043
  }
5031
5044
  if (reconcile) {
5032
5045
  const originalDirectoryDataOffset = directoryDataOffset;
5033
5046
  directoryDataOffset = expectedDirectoryDataOffset;
5047
+ directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength);
5048
+ directoryView = getDataView(directoryArray);
5034
5049
  if (directoryDataOffset > originalDirectoryDataOffset) {
5035
5050
  prependedDataLength += directoryDataOffset - originalDirectoryDataOffset;
5036
5051
  prependedCentralDirectory = storedPointsAtDirectory;
5052
+ } else {
5053
+ reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET);
5054
+ const offsetDelta = directoryDataOffset - originalDirectoryDataOffset;
5055
+ if (directoryArray.length >= CENTRAL_FILE_HEADER_LENGTH) {
5056
+ const localHeaderOffset = getUint32$1(directoryView, 42);
5057
+ if (!await startsWithSignature(reader, localHeaderOffset, LOCAL_FILE_HEADER_SIGNATURE) &&
5058
+ await startsWithSignature(reader, localHeaderOffset + offsetDelta, LOCAL_FILE_HEADER_SIGNATURE)) {
5059
+ prependedDataLength += offsetDelta;
5060
+ }
5061
+ }
5037
5062
  }
5038
- directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength);
5039
- directoryView = getDataView(directoryArray);
5040
5063
  }
5041
5064
  }
5042
5065
  }
@@ -5147,7 +5170,16 @@ class ZipReader {
5147
5170
  filename,
5148
5171
  comment
5149
5172
  });
5150
- const malformedExtraField = readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6);
5173
+ let malformedExtraField;
5174
+ try {
5175
+ malformedExtraField = readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6);
5176
+ } catch (error) {
5177
+ if (checkAmbiguity || error.message != ERR_EXTRAFIELD_ZIP64_NOT_FOUND) {
5178
+ throw error;
5179
+ }
5180
+ fileEntry.zip64ExtraFieldMissing = true;
5181
+ addWarning(warnings, WARNING_MISSING_ZIP64_EXTRA_FIELD, fileEntry.filename);
5182
+ }
5151
5183
  filename = fileEntry.filename;
5152
5184
  if (normalizeFilename) {
5153
5185
  const normalizedFilename = normalizeFilename(filename);
@@ -5189,11 +5221,12 @@ class ZipReader {
5189
5221
  const sticky = Boolean(fileEntry.unixMode & FILE_ATTR_UNIX_STICKY_MASK);
5190
5222
  const unixType = fileEntry.unixMode === UNDEFINED_VALUE ? unixExternalUpper : fileEntry.unixMode;
5191
5223
  const symlink = (unixType & FILE_ATTR_UNIX_TYPE_MASK) == FILE_ATTR_UNIX_TYPE_SYMLINK;
5192
- const executable = !symlink && ((fileEntry.unixMode !== UNDEFINED_VALUE)
5193
- ? ((fileEntry.unixMode & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)
5194
- : (unixCompatible && ((unixExternalUpper & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)));
5195
5224
  const modeIsDir = fileEntry.unixMode !== UNDEFINED_VALUE && ((fileEntry.unixMode & FILE_ATTR_UNIX_TYPE_MASK) == FILE_ATTR_UNIX_TYPE_DIR);
5196
5225
  const upperIsDir = ((unixExternalUpper & FILE_ATTR_UNIX_TYPE_MASK) == FILE_ATTR_UNIX_TYPE_DIR);
5226
+ const directory = modeIsDir || upperIsDir || (msDosCompatible && msdosAttributes.directory) || fileEntry.filename.endsWith(DIRECTORY_SIGNATURE);
5227
+ const executable = !symlink && !directory && ((fileEntry.unixMode !== UNDEFINED_VALUE)
5228
+ ? ((fileEntry.unixMode & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)
5229
+ : (unixCompatible && ((unixExternalUpper & FILE_ATTR_UNIX_EXECUTABLE_MASK) != 0)));
5197
5230
  Object.assign(fileEntry, {
5198
5231
  setuid,
5199
5232
  setgid,
@@ -5201,7 +5234,7 @@ class ZipReader {
5201
5234
  symlink,
5202
5235
  unixExternalUpper,
5203
5236
  executable,
5204
- directory: modeIsDir || upperIsDir || (msDosCompatible && msdosAttributes.directory) || fileEntry.filename.endsWith(DIRECTORY_SIGNATURE),
5237
+ directory,
5205
5238
  zipCrypto: fileEntry.encrypted && !fileEntry.extraFieldAES
5206
5239
  });
5207
5240
  const entry = new Entry(fileEntry);
@@ -5257,10 +5290,10 @@ class ZipReader {
5257
5290
  const extractAppendedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_APPENDED_DATA);
5258
5291
  const splitZipSignatureLength = (checkAmbiguity || extractPrependedData) && filesLength &&
5259
5292
  startOffset == SPLIT_ZIP_FILE_SIGNATURE_LENGTH && await startsWithSplitZipMarker(reader) ? SPLIT_ZIP_FILE_SIGNATURE_LENGTH : 0;
5260
- if (checkAmbiguity && (prependedDataLength || (filesLength && startOffset > splitZipSignatureLength))) {
5293
+ if (checkAmbiguity && (prependedDataLength > 0 || (filesLength && startOffset > splitZipSignatureLength))) {
5261
5294
  throwAmbiguousArchive(WARNING_PREPENDED_DATA);
5262
5295
  }
5263
- if (prependedDataLength || (filesLength && startOffset > SPLIT_ZIP_FILE_SIGNATURE_LENGTH)) {
5296
+ if (prependedDataLength > 0 || (filesLength && startOffset > SPLIT_ZIP_FILE_SIGNATURE_LENGTH)) {
5264
5297
  addWarning(warnings, WARNING_PREPENDED_DATA);
5265
5298
  }
5266
5299
  if (prependedCentralDirectory) {
@@ -5420,6 +5453,9 @@ let ZipEntry$1 = class ZipEntry {
5420
5453
 
5421
5454
  async getData(writer, fileEntry, readRanges, options = {}) {
5422
5455
  const zipEntry = this;
5456
+ if (zipEntry.zip64ExtraFieldMissing) {
5457
+ throw new Error(ERR_EXTRAFIELD_ZIP64_NOT_FOUND);
5458
+ }
5423
5459
  const config = getConfiguration();
5424
5460
  const {
5425
5461
  reader,
@@ -5657,6 +5693,30 @@ function getWrappedFilesLength(directoryView, directoryArray, offset) {
5657
5693
  return wrappedFilesLength % (MAX_16_BITS + 1) ? 0 : wrappedFilesLength;
5658
5694
  }
5659
5695
 
5696
+ function pointsAtDirectory(reader, offset) {
5697
+ return startsWithSignature(reader, offset, CENTRAL_FILE_HEADER_SIGNATURE);
5698
+ }
5699
+
5700
+ async function startsWithSignature(reader, offset, signature) {
5701
+ if (offset < 0 || offset + 4 > reader.size) {
5702
+ return false;
5703
+ }
5704
+ const signatureArray = await readUint8Array(reader, offset, 4);
5705
+ return getUint32$1(getDataView(signatureArray), 0) == signature;
5706
+ }
5707
+
5708
+ async function findDigitalSignatureRecordOffset(reader, endOffset) {
5709
+ const startOffset = Math.max(0, endOffset - (6 + MAX_16_BITS));
5710
+ const tailArray = await readUint8Array(reader, startOffset, endOffset - startOffset);
5711
+ const tailView = getDataView(tailArray);
5712
+ for (let indexByte = tailArray.length - 6; indexByte >= 0; indexByte--) {
5713
+ if (getUint32$1(tailView, indexByte) == DIGITAL_SIGNATURE_RECORD_SIGNATURE &&
5714
+ indexByte + 6 + getUint16$1(tailView, indexByte + 4) == tailArray.length) {
5715
+ return startOffset + indexByte;
5716
+ }
5717
+ }
5718
+ }
5719
+
5660
5720
  function readDigitalSignature(signatureRecordArray) {
5661
5721
  if (signatureRecordArray.length >= 6) {
5662
5722
  const signatureRecordView = getDataView(signatureRecordArray);
@@ -5788,6 +5848,11 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
5788
5848
  readExtraFieldUnixDates(extraFieldUnixType1, directory);
5789
5849
  directory.extraFieldUnixType1 = extraFieldUnixType1;
5790
5850
  }
5851
+ const extraFieldExtendedTimestamp = extraField.get(EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
5852
+ if (extraFieldExtendedTimestamp) {
5853
+ readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory);
5854
+ directory.extraFieldExtendedTimestamp = extraFieldExtendedTimestamp;
5855
+ }
5791
5856
  const extraFieldNTFS = extraField.get(EXTRAFIELD_TYPE_NTFS);
5792
5857
  if (extraFieldNTFS) {
5793
5858
  readExtraFieldNTFS(extraFieldNTFS, directory);
@@ -5804,11 +5869,6 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
5804
5869
  readExtraFieldUnix(extraFieldUnix, unixIdsRead ? {} : directory, false);
5805
5870
  directory.extraFieldUnix = extraFieldUnix;
5806
5871
  }
5807
- const extraFieldExtendedTimestamp = extraField.get(EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
5808
- if (extraFieldExtendedTimestamp) {
5809
- readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory);
5810
- directory.extraFieldExtendedTimestamp = extraFieldExtendedTimestamp;
5811
- }
5812
5872
  const extraFieldUSDZ = extraField.get(EXTRAFIELD_TYPE_USDZ);
5813
5873
  if (extraFieldUSDZ) {
5814
5874
  directory.extraFieldUSDZ = extraFieldUSDZ;
@@ -6447,11 +6507,13 @@ var zipReader = /*#__PURE__*/Object.freeze({
6447
6507
  WARNING_COMPRESSED_PATCHED_DATA: WARNING_COMPRESSED_PATCHED_DATA,
6448
6508
  WARNING_DUPLICATE_FILENAME: WARNING_DUPLICATE_FILENAME,
6449
6509
  WARNING_MALFORMED_EXTRA_FIELD: WARNING_MALFORMED_EXTRA_FIELD,
6510
+ WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET: WARNING_MISMATCHED_CENTRAL_DIRECTORY_OFFSET,
6450
6511
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG: WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG,
6451
6512
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD: WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD,
6452
6513
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES: WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES,
6453
6514
  WARNING_MISMATCHED_LOCAL_FILE_HEADER_FILENAME: WARNING_MISMATCHED_LOCAL_FILE_HEADER_FILENAME,
6454
6515
  WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY: WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY,
6516
+ WARNING_MISSING_ZIP64_EXTRA_FIELD: WARNING_MISSING_ZIP64_EXTRA_FIELD,
6455
6517
  WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY: WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY,
6456
6518
  WARNING_PREPENDED_CENTRAL_DIRECTORY: WARNING_PREPENDED_CENTRAL_DIRECTORY,
6457
6519
  WARNING_PREPENDED_DATA: WARNING_PREPENDED_DATA,
@@ -6584,13 +6646,14 @@ class ZipWriter {
6584
6646
  return watchPromiseError(this, prependZipEntries(this, reader));
6585
6647
  }
6586
6648
 
6587
- appendZip(reader) {
6588
- return watchPromiseError(this, this.appendZipEntries(reader));
6649
+ appendZip(reader, options = {}) {
6650
+ return watchPromiseError(this, this.appendZipEntries(reader, options));
6589
6651
  }
6590
6652
 
6591
- async appendZipEntries(reader) {
6653
+ async appendZipEntries(reader, options = {}) {
6592
6654
  const zipWriter = this;
6593
6655
  const { pendingAddFileCalls, filenames, fileEntries } = zipWriter;
6656
+ const filter = checkFunctionOption(options.filter);
6594
6657
  while (pendingAddFileCalls.size) {
6595
6658
  await Promise.allSettled(Array.from(pendingAddFileCalls));
6596
6659
  }
@@ -6609,10 +6672,16 @@ class ZipWriter {
6609
6672
  const { ZipReader } = await Promise.resolve().then(function () { return zipReader; });
6610
6673
  const zipReader$1 = new ZipReader(reader);
6611
6674
  const entries = await zipReader$1.getEntries();
6675
+ const keptEntries = [];
6676
+ for (const entry of entries) {
6677
+ if (!filter || await filter(entry)) {
6678
+ keptEntries.push(entry);
6679
+ }
6680
+ }
6612
6681
  await zipReader$1.close();
6613
6682
  await initStream(zipWriter.writer);
6614
6683
  const { directoryOffset } = zipReader$1;
6615
- entries.forEach(({ filename }) => {
6684
+ keptEntries.forEach(({ filename }) => {
6616
6685
  if (filenames.has(filename)) {
6617
6686
  throw new Error(ERR_DUPLICATED_NAME);
6618
6687
  }
@@ -6633,8 +6702,8 @@ class ZipWriter {
6633
6702
  zipWriter.offset += SPLIT_ZIP_FILE_SIGNATURE_LENGTH;
6634
6703
  }
6635
6704
  }
6636
- const entryPositions = await copyZipData(zipWriter, reader, entries, directoryOffset);
6637
- entries.forEach(entry => {
6705
+ const entryPositions = await copyZipData(zipWriter, reader, entries, keptEntries, directoryOffset, Boolean(filter));
6706
+ keptEntries.forEach(entry => {
6638
6707
  const {
6639
6708
  version,
6640
6709
  rawLastModDate,
@@ -8645,26 +8714,42 @@ function removeExtraFieldZip64(rawExtraField) {
8645
8714
  return rawExtraField;
8646
8715
  }
8647
8716
 
8648
- async function copyZipData(zipWriter, reader, entries, directoryOffset) {
8717
+ async function copyZipData(zipWriter, reader, entries, keptEntries, directoryOffset, compact) {
8649
8718
  const { writer } = zipWriter;
8650
8719
  const entryPositions = new Map();
8651
- if (writer.closeDisk) {
8720
+ if (writer.closeDisk || compact) {
8652
8721
  const sortedEntries = Array.from(entries).sort((firstEntry, secondEntry) =>
8653
8722
  getSourceOffset(reader, firstEntry) - getSourceOffset(reader, secondEntry));
8654
- let copiedLength = 0;
8655
- for (const entry of sortedEntries) {
8656
- const sourceOffset = getSourceOffset(reader, entry);
8657
- await copyData(zipWriter, reader, copiedLength, sourceOffset - copiedLength);
8658
- if (exceedsAvailableSize(writer, await getLocalHeaderLength(reader, sourceOffset))) {
8659
- await writer.closeDisk();
8660
- }
8661
- entryPositions.set(entry, {
8662
- offset: getSegmentOffset(zipWriter, writer),
8663
- diskNumberStart: getDiskNumber(writer)
8664
- });
8665
- copiedLength = sourceOffset;
8723
+ const regionEnds = getRegionEnds(reader, sortedEntries, directoryOffset);
8724
+ const keptEntrySet = new Set(keptEntries);
8725
+ let copiedOffset = 0;
8726
+ let lastPosition;
8727
+ for (let indexEntry = 0; indexEntry < sortedEntries.length; indexEntry++) {
8728
+ const entry = sortedEntries[indexEntry];
8729
+ if (keptEntrySet.has(entry)) {
8730
+ const sourceOffset = getSourceOffset(reader, entry);
8731
+ if (sourceOffset < copiedOffset) {
8732
+ entryPositions.set(entry, lastPosition);
8733
+ } else {
8734
+ if (!compact) {
8735
+ await copyData(zipWriter, reader, copiedOffset, sourceOffset - copiedOffset);
8736
+ }
8737
+ if (writer.closeDisk && exceedsAvailableSize(writer, await getLocalHeaderLength(reader, sourceOffset))) {
8738
+ await writer.closeDisk();
8739
+ }
8740
+ lastPosition = {
8741
+ offset: getSegmentOffset(zipWriter, writer),
8742
+ diskNumberStart: getDiskNumber(writer)
8743
+ };
8744
+ entryPositions.set(entry, lastPosition);
8745
+ await copyData(zipWriter, reader, sourceOffset, regionEnds[indexEntry] - sourceOffset);
8746
+ copiedOffset = regionEnds[indexEntry];
8747
+ }
8748
+ }
8749
+ }
8750
+ if (!compact) {
8751
+ await copyData(zipWriter, reader, copiedOffset, directoryOffset - copiedOffset);
8666
8752
  }
8667
- await copyData(zipWriter, reader, copiedLength, directoryOffset - copiedLength);
8668
8753
  } else {
8669
8754
  const baseOffset = zipWriter.offset;
8670
8755
  await copyData(zipWriter, reader, 0, directoryOffset);
@@ -8676,6 +8761,20 @@ async function copyZipData(zipWriter, reader, entries, directoryOffset) {
8676
8761
  return entryPositions;
8677
8762
  }
8678
8763
 
8764
+ function getRegionEnds(reader, sortedEntries, directoryOffset) {
8765
+ const regionEnds = new Array(sortedEntries.length);
8766
+ let regionEnd = directoryOffset;
8767
+ for (let indexEntry = sortedEntries.length - 1; indexEntry >= 0; indexEntry--) {
8768
+ const sourceOffset = getSourceOffset(reader, sortedEntries[indexEntry]);
8769
+ const nextEntry = sortedEntries[indexEntry + 1];
8770
+ if (nextEntry && getSourceOffset(reader, nextEntry) > sourceOffset) {
8771
+ regionEnd = getSourceOffset(reader, nextEntry);
8772
+ }
8773
+ regionEnds[indexEntry] = regionEnd;
8774
+ }
8775
+ return regionEnds;
8776
+ }
8777
+
8679
8778
  async function copyData(zipWriter, reader, offset, size) {
8680
8779
  if (size > 0) {
8681
8780
  const { writer } = zipWriter;
@@ -9053,7 +9152,7 @@ function formatSupported(StreamClass, format) {
9053
9152
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9054
9153
  */
9055
9154
 
9056
- const VERSION = "2.19.0";
9155
+ const VERSION = "2.20.0";
9057
9156
 
9058
9157
  /*
9059
9158
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
@@ -11557,4 +11656,4 @@ function getPathParent(parent, path, movedEntry) {
11557
11656
  return parent;
11558
11657
  }
11559
11658
 
11560
- export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_ANCESTOR_ENTRY, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_CODEC_OUT_OF_MEMORY, ERR_DUPLICATED_NAME, ERR_DUPLICATE_IMPORTED_ENTRY, 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_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_DUPLICATES, 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_PASSWORDS, ERR_INVALID_PASSWORD_TYPE, ERR_INVALID_PASS_THROUGH, ERR_INVALID_PASS_THROUGH_VALUE, ERR_INVALID_READER, ERR_INVALID_READER_OPTIONS, ERR_INVALID_REQUEST_PASSWORD, 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_PARENT_NOT_DIRECTORY, ERR_READABLE_CONSUMED, ERR_RESERVED_COMPRESSION_METHOD, ERR_ROOT_DIRECTORY_NOT_MOVABLE, ERR_SPLIT_ZIP_FILE, ERR_TARGET_NOT_DIRECTORY, 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_PASS_THROUGH_VALUE, 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, ZipDirectoryEntry, ZipEntry, ZipFS, ZipFileEntry, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, getRegisteredCodecs, getSupportedCompressionMethods, isZipFile, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };
11659
+ export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_ANCESTOR_ENTRY, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_CODEC_OUT_OF_MEMORY, ERR_DUPLICATED_NAME, ERR_DUPLICATE_IMPORTED_ENTRY, 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_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_DUPLICATES, 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_PASSWORDS, ERR_INVALID_PASSWORD_TYPE, ERR_INVALID_PASS_THROUGH, ERR_INVALID_PASS_THROUGH_VALUE, ERR_INVALID_READER, ERR_INVALID_READER_OPTIONS, ERR_INVALID_REQUEST_PASSWORD, 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_PARENT_NOT_DIRECTORY, ERR_READABLE_CONSUMED, ERR_RESERVED_COMPRESSION_METHOD, ERR_ROOT_DIRECTORY_NOT_MOVABLE, ERR_SPLIT_ZIP_FILE, ERR_TARGET_NOT_DIRECTORY, 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_PASS_THROUGH_VALUE, 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, ZipDirectoryEntry, ZipEntry, ZipFS, ZipFileEntry, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, getRegisteredCodecs, getSupportedCompressionMethods, isZipFile, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };