@zip.js/zip.js 2.9.0 → 2.11.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.
Files changed (50) hide show
  1. package/README.md +40 -0
  2. package/deno.json +1 -1
  3. package/dist/zip-core-external.js +17 -46
  4. package/dist/zip-core-external.min.js +1 -1
  5. package/dist/zip-core.js +16 -46
  6. package/dist/zip-core.min.js +1 -1
  7. package/dist/zip-fs-core-external.js +170 -88
  8. package/dist/zip-fs-core-external.min.js +1 -1
  9. package/dist/zip-fs-core.js +171 -88
  10. package/dist/zip-fs-core.min.js +1 -1
  11. package/dist/zip-fs-external.js +170 -88
  12. package/dist/zip-fs-external.min.js +1 -1
  13. package/dist/zip-fs-native.js +174 -91
  14. package/dist/zip-fs-native.min.js +1 -1
  15. package/dist/zip-fs.js +175 -92
  16. package/dist/zip-fs.min.js +1 -1
  17. package/dist/zip-legacy.js +18 -48
  18. package/dist/zip-legacy.min.js +1 -1
  19. package/dist/zip-module.wasm +0 -0
  20. package/dist/zip-native.js +19 -49
  21. package/dist/zip-native.min.js +1 -1
  22. package/dist/zip-web-worker-native.js +1 -1
  23. package/dist/zip-web-worker.js +1 -1
  24. package/dist/zip.js +20 -50
  25. package/dist/zip.min.js +1 -1
  26. package/index-native.cjs +174 -91
  27. package/index-native.min.js +1 -1
  28. package/index.cjs +175 -92
  29. package/index.d.cts +92 -44
  30. package/index.d.ts +92 -44
  31. package/index.min.js +1 -1
  32. package/lib/core/codec-pool.js +0 -2
  33. package/lib/core/codec-registry.js +2 -0
  34. package/lib/core/streams/codec-stream.js +0 -2
  35. package/lib/core/streams/common-crypto.js +1 -3
  36. package/lib/core/streams/zip-entry-stream.js +2 -5
  37. package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
  38. package/lib/core/streams/zlib-wasm/zlib-streams.js +1 -1
  39. package/lib/core/streams/zlib-wasm/zlib-streams.wasm +0 -0
  40. package/lib/core/util/decode-cp437.js +4 -11
  41. package/lib/core/version.js +1 -1
  42. package/lib/core/web-worker-inline-native.js +1 -1
  43. package/lib/core/web-worker-inline-wasm.js +1 -1
  44. package/lib/core/zip-entry.js +0 -6
  45. package/lib/core/zip-fs.js +155 -44
  46. package/lib/core/zip-reader.js +1 -6
  47. package/lib/core/zip-writer.js +4 -19
  48. package/lib/core/zlib-streams-inline.js +1 -1
  49. package/lib/zip-core-reader.js +0 -1
  50. package/package.json +1 -1
package/dist/zip-core.js CHANGED
@@ -1461,8 +1461,7 @@
1461
1461
  const GET_RANDOM_VALUES_SUPPORTED = typeof crypto != UNDEFINED_TYPE && typeof crypto.getRandomValues == FUNCTION_TYPE;
1462
1462
 
1463
1463
  const ERR_INVALID_PASSWORD = "Invalid password";
1464
- const ERR_INVALID_SIGNATURE = "Invalid signature";
1465
- const ERR_INVALID_AUTHENTICATION_CODE = ERR_INVALID_SIGNATURE;
1464
+ const ERR_INVALID_AUTHENTICATION_CODE = "Invalid authentication code";
1466
1465
  const ERR_ABORT_CHECK_PASSWORD = "zipjs-abort-check-password";
1467
1466
  const ERR_UNSUPPORTED_CRYPTO_API = "Crypto API not supported";
1468
1467
 
@@ -2036,6 +2035,7 @@
2036
2035
  const ERR_INVALID_CODEC_DEFINITION = "Invalid codec definition";
2037
2036
  const ERR_RESERVED_COMPRESSION_METHOD = "Reserved compression method";
2038
2037
  const ERR_INVALID_CODEC_MODULE = "Invalid codec module";
2038
+ const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
2039
2039
 
2040
2040
  const RESERVED_COMPRESSION_METHODS = [
2041
2041
  COMPRESSION_METHOD_STORE,
@@ -2135,8 +2135,7 @@
2135
2135
 
2136
2136
  const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
2137
2137
  const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
2138
- const ERR_INVALID_CRC32 = ERR_INVALID_SIGNATURE;
2139
- const ERR_UNSUPPORTED_COMPRESSION$2 = "Compression method not supported";
2138
+ const ERR_INVALID_CRC32 = "Invalid CRC32";
2140
2139
  const FORMAT_DEFLATE_RAW = "deflate-raw";
2141
2140
  const FORMAT_DEFLATE64_RAW = "deflate64-raw";
2142
2141
  const FORMAT_GZIP = "gzip";
@@ -2404,7 +2403,7 @@
2404
2403
 
2405
2404
  function createCodecStream(CodecStreamClass, format, options) {
2406
2405
  if (!CodecStreamClass) {
2407
- throw new Error(ERR_UNSUPPORTED_COMPRESSION$2);
2406
+ throw new Error(ERR_UNSUPPORTED_COMPRESSION);
2408
2407
  }
2409
2408
  return new CodecStreamClass(format, options);
2410
2409
  }
@@ -3475,21 +3474,14 @@
3475
3474
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3476
3475
  */
3477
3476
 
3478
- /* global TextDecoder */
3479
-
3480
3477
  const CP437 = "\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\u00B6\u00A7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0".split("");
3481
- const VALID_CP437 = CP437.length == 256;
3482
3478
 
3483
3479
  function decodeCP437(stringValue) {
3484
- if (VALID_CP437) {
3485
- let result = "";
3486
- for (let indexCharacter = 0; indexCharacter < stringValue.length; indexCharacter++) {
3487
- result += CP437[stringValue[indexCharacter]];
3488
- }
3489
- return result;
3490
- } else {
3491
- return new TextDecoder().decode(stringValue);
3480
+ let result = "";
3481
+ for (let indexCharacter = 0; indexCharacter < stringValue.length; indexCharacter++) {
3482
+ result += CP437[stringValue[indexCharacter]];
3492
3483
  }
3484
+ return result;
3493
3485
  }
3494
3486
 
3495
3487
  /*
@@ -4555,8 +4547,6 @@
4555
4547
  const PROPERTY_NAME_RAW_CREATION_DATE = "rawCreationDate";
4556
4548
  const PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES = "internalFileAttributes";
4557
4549
  const PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES = "externalFileAttributes";
4558
- const PROPERTY_NAME_DEPRECATED_INTERNAL_FILE_ATTRIBUTES = "internalFileAttribute";
4559
- const PROPERTY_NAME_DEPRECATED_EXTERNAL_FILE_ATTRIBUTES = "externalFileAttribute";
4560
4550
  const PROPERTY_NAME_MSDOS_ATTRIBUTES_RAW = "msdosAttributesRaw";
4561
4551
  const PROPERTY_NAME_MSDOS_ATTRIBUTES = "msdosAttributes";
4562
4552
  const PROPERTY_NAME_MS_DOS_COMPATIBLE = "msDosCompatible";
@@ -4615,8 +4605,6 @@
4615
4605
  PROPERTY_NAME_DISK_NUMBER_START,
4616
4606
  PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES,
4617
4607
  PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES,
4618
- PROPERTY_NAME_DEPRECATED_INTERNAL_FILE_ATTRIBUTES,
4619
- PROPERTY_NAME_DEPRECATED_EXTERNAL_FILE_ATTRIBUTES,
4620
4608
  PROPERTY_NAME_MSDOS_ATTRIBUTES_RAW,
4621
4609
  PROPERTY_NAME_MSDOS_ATTRIBUTES,
4622
4610
  PROPERTY_NAME_MS_DOS_COMPATIBLE,
@@ -4704,7 +4692,6 @@
4704
4692
  const ERR_EXTRAFIELD_ZIP64_NOT_FOUND = "Zip64 extra field not found";
4705
4693
  const ERR_ENCRYPTED = "File contains encrypted entry";
4706
4694
  const ERR_UNSUPPORTED_ENCRYPTION = "Encryption method not supported";
4707
- const ERR_UNSUPPORTED_COMPRESSION$1 = "Compression method not supported";
4708
4695
  const ERR_SPLIT_ZIP_FILE = "Split zip file";
4709
4696
  const ERR_OVERLAPPING_ENTRY = "Overlapping entry found";
4710
4697
  const ERR_ENTRY_DATA_OUT_OF_BOUNDS = "Entry data out of bounds";
@@ -5085,8 +5072,6 @@
5085
5072
  sticky,
5086
5073
  symlink,
5087
5074
  unixExternalUpper,
5088
- internalFileAttribute: fileEntry.internalFileAttributes,
5089
- externalFileAttribute: fileEntry.externalFileAttributes,
5090
5075
  executable,
5091
5076
  directory: modeIsDir || upperIsDir || (msDosCompatible && msdosAttributes.directory) || fileEntry.filename.endsWith(DIRECTORY_SIGNATURE),
5092
5077
  zipCrypto: fileEntry.encrypted && !fileEntry.extraFieldAES
@@ -5285,7 +5270,7 @@
5285
5270
  rawPassword = rawPassword && rawPassword.length && rawPassword;
5286
5271
  if (extraFieldAES) {
5287
5272
  if (extraFieldAES.originalCompressionMethod != COMPRESSION_METHOD_AES) {
5288
- throw new Error(ERR_UNSUPPORTED_COMPRESSION$1);
5273
+ throw new Error(ERR_UNSUPPORTED_COMPRESSION);
5289
5274
  }
5290
5275
  }
5291
5276
  if (dataArray.length < HEADER_SIZE || getUint32$1(dataView, 0) != LOCAL_FILE_HEADER_SIGNATURE) {
@@ -5341,7 +5326,7 @@
5341
5326
  }
5342
5327
  const registeredCodec = passThrough ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
5343
5328
  if (compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE && compressionMethod != COMPRESSION_METHOD_DEFLATE_64 && !registeredCodec && !passThrough) {
5344
- throw new Error(ERR_UNSUPPORTED_COMPRESSION$1);
5329
+ throw new Error(ERR_UNSUPPORTED_COMPRESSION);
5345
5330
  }
5346
5331
  if (encrypted) {
5347
5332
  if (!zipCrypto && (extraFieldAES.strength < 1 || extraFieldAES.strength > 3)) {
@@ -6193,14 +6178,13 @@
6193
6178
  ERR_INVALID_FILENAME_VALIDATION: ERR_INVALID_FILENAME_VALIDATION,
6194
6179
  ERR_INVALID_MAX_APPENDED_DATA_SIZE: ERR_INVALID_MAX_APPENDED_DATA_SIZE,
6195
6180
  ERR_INVALID_PASSWORD: ERR_INVALID_PASSWORD,
6196
- ERR_INVALID_SIGNATURE: ERR_INVALID_SIGNATURE,
6197
6181
  ERR_INVALID_STRICTNESS: ERR_INVALID_STRICTNESS,
6198
6182
  ERR_INVALID_UNCOMPRESSED_SIZE: ERR_INVALID_UNCOMPRESSED_SIZE,
6199
6183
  ERR_LOCAL_FILE_HEADER_NOT_FOUND: ERR_LOCAL_FILE_HEADER_NOT_FOUND,
6200
6184
  ERR_OVERLAPPING_ENTRY: ERR_OVERLAPPING_ENTRY,
6201
6185
  ERR_SPLIT_ZIP_FILE: ERR_SPLIT_ZIP_FILE,
6202
6186
  ERR_UNSAFE_FILENAME: ERR_UNSAFE_FILENAME,
6203
- ERR_UNSUPPORTED_COMPRESSION: ERR_UNSUPPORTED_COMPRESSION$1,
6187
+ ERR_UNSUPPORTED_COMPRESSION: ERR_UNSUPPORTED_COMPRESSION,
6204
6188
  ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
6205
6189
  ERR_UNSUPPORTED_UINT64: ERR_UNSUPPORTED_UINT64,
6206
6190
  ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
@@ -6268,7 +6252,6 @@
6268
6252
  const ERR_INVALID_EXTRAFIELD_TYPE = "Invalid extra field type (must be integer 0..65535)";
6269
6253
  const ERR_INVALID_EXTRAFIELD_DATA_TYPE = "Invalid extra field data (must be a Uint8Array)";
6270
6254
  const ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB";
6271
- const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
6272
6255
  const MIN_UNIX_TIME = -2147483648;
6273
6256
  const MAX_UNIX_TIME = 2147483647;
6274
6257
  const MIN_NTFS_TIME = BigInt(0);
@@ -6708,9 +6691,7 @@
6708
6691
  Object.assign(fileEntry, {
6709
6692
  name,
6710
6693
  comment,
6711
- extraField,
6712
- [PROPERTY_NAME_DEPRECATED_INTERNAL_FILE_ATTRIBUTES]: fileEntry.internalFileAttributes,
6713
- [PROPERTY_NAME_DEPRECATED_EXTERNAL_FILE_ATTRIBUTES]: fileEntry.externalFileAttributes
6694
+ extraField
6714
6695
  });
6715
6696
  return new Entry(fileEntry);
6716
6697
  }
@@ -6757,7 +6738,7 @@
6757
6738
  if (versionMadeBy > MAX_16_BITS) {
6758
6739
  throw new Error(ERR_INVALID_VERSION);
6759
6740
  }
6760
- let externalFileAttributes = getAliasedOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_DEPRECATED_EXTERNAL_FILE_ATTRIBUTES);
6741
+ let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES);
6761
6742
  const externalFileAttributesProvided = externalFileAttributes !== UNDEFINED_VALUE;
6762
6743
  if (!externalFileAttributesProvided) {
6763
6744
  externalFileAttributes = 0;
@@ -6867,7 +6848,7 @@
6867
6848
  const rawLastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE);
6868
6849
  const lastAccessDate = getDateOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
6869
6850
  const creationDate = getDateOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
6870
- const internalFileAttributes = getAliasedOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_DEPRECATED_INTERNAL_FILE_ATTRIBUTES, 0);
6851
+ const internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
6871
6852
  const passThrough = getOptionValue(zipWriter, options, OPTION_PASS_THROUGH);
6872
6853
  const password = getOptionValue(zipWriter, options, OPTION_PASSWORD);
6873
6854
  const rawPassword = getOptionValue(zipWriter, options, OPTION_RAW_PASSWORD);
@@ -8261,16 +8242,6 @@
8261
8242
  return checkFunctionOption(getOptionValue(zipWriter, options, name));
8262
8243
  }
8263
8244
 
8264
- function getAliasedOptionValue(zipWriter, options, name, deprecatedName, defaultValue) {
8265
- const value = getAliasedValue(options, name, deprecatedName);
8266
- const result = value === UNDEFINED_VALUE ? getAliasedValue(zipWriter.options, name, deprecatedName) : value;
8267
- return result === UNDEFINED_VALUE ? defaultValue : result;
8268
- }
8269
-
8270
- function getAliasedValue(options, name, deprecatedName) {
8271
- return options[name] === UNDEFINED_VALUE ? options[deprecatedName] : options[name];
8272
- }
8273
-
8274
8245
  function getNumberOptionValue(zipWriter, options, name, defaultValue) {
8275
8246
  return toNumber(getOptionValue(zipWriter, options, name, defaultValue));
8276
8247
  }
@@ -8529,7 +8500,7 @@
8529
8500
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8530
8501
  */
8531
8502
 
8532
- const VERSION = "2.9.0";
8503
+ const VERSION = "2.11.0";
8533
8504
 
8534
8505
  /*
8535
8506
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
@@ -9021,7 +8992,6 @@
9021
8992
  exports.ERR_INVALID_PASSWORD = ERR_INVALID_PASSWORD;
9022
8993
  exports.ERR_INVALID_PASSWORD_TYPE = ERR_INVALID_PASSWORD_TYPE;
9023
8994
  exports.ERR_INVALID_SIGNAL = ERR_INVALID_SIGNAL;
9024
- exports.ERR_INVALID_SIGNATURE = ERR_INVALID_SIGNATURE;
9025
8995
  exports.ERR_INVALID_SIGNATURE_DATA = ERR_INVALID_SIGNATURE_DATA;
9026
8996
  exports.ERR_INVALID_STRICTNESS = ERR_INVALID_STRICTNESS;
9027
8997
  exports.ERR_INVALID_UID = ERR_INVALID_UID;
@@ -9040,7 +9010,7 @@
9040
9010
  exports.ERR_UNDEFINED_UNCOMPRESSED_SIZE = ERR_UNDEFINED_UNCOMPRESSED_SIZE;
9041
9011
  exports.ERR_UNDETERMINED_SIZE = ERR_UNDETERMINED_SIZE;
9042
9012
  exports.ERR_UNSAFE_FILENAME = ERR_UNSAFE_FILENAME;
9043
- exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION$1;
9013
+ exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION;
9044
9014
  exports.ERR_UNSUPPORTED_CONTEXT = ERR_UNSUPPORTED_CONTEXT;
9045
9015
  exports.ERR_UNSUPPORTED_CRYPTO_API = ERR_UNSUPPORTED_CRYPTO_API;
9046
9016
  exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;