@zip.js/zip.js 2.7.56 → 2.7.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/zip-full.js CHANGED
@@ -4284,6 +4284,7 @@
4284
4284
  const FILE_ATTR_MSDOS_DIR_MASK = 0x10;
4285
4285
  const FILE_ATTR_UNIX_DIR_MASK = 0x4000;
4286
4286
  const FILE_ATTR_UNIX_EXECUTABLE_MASK = 0o111;
4287
+ const FILE_ATTR_UNIX_DEFAULT_MASK = 0o644;
4287
4288
 
4288
4289
  const VERSION_DEFLATE = 0x14;
4289
4290
  const VERSION_ZIP64 = 0x2D;
@@ -6773,6 +6774,7 @@
6773
6774
  const ERR_HTTP_STATUS = "HTTP error ";
6774
6775
  const ERR_HTTP_RANGE = "HTTP Range not supported";
6775
6776
  const ERR_ITERATOR_COMPLETED_TOO_SOON = "Writer iterator completed too soon";
6777
+ const ERR_WRITER_NOT_INITIALIZED = "Writer not initialized";
6776
6778
 
6777
6779
  const CONTENT_TYPE_TEXT_PLAIN = "text/plain";
6778
6780
  const HTTP_HEADER_CONTENT_LENGTH = "Content-Length";
@@ -6810,8 +6812,10 @@
6810
6812
  async pull(controller) {
6811
6813
  const { offset = 0, size, diskNumberStart } = readable;
6812
6814
  const { chunkOffset } = this;
6813
- controller.enqueue(await readUint8Array(reader, offset + chunkOffset, Math.min(chunkSize, size - chunkOffset), diskNumberStart));
6814
- if (chunkOffset + chunkSize > size) {
6815
+ const dataSize = size === UNDEFINED_VALUE ? chunkSize : Math.min(chunkSize, size - chunkOffset);
6816
+ const data = await readUint8Array(reader, offset + chunkOffset, dataSize, diskNumberStart);
6817
+ controller.enqueue(data);
6818
+ if ((chunkOffset + chunkSize > size) || (size === UNDEFINED_VALUE && !data.length && dataSize)) {
6815
6819
  controller.close();
6816
6820
  } else {
6817
6821
  this.chunkOffset += chunkSize;
@@ -6829,6 +6833,9 @@
6829
6833
  const writer = this;
6830
6834
  const writable = new WritableStream({
6831
6835
  write(chunk) {
6836
+ if (!writer.initialized) {
6837
+ throw new Error(ERR_WRITER_NOT_INITIALIZED);
6838
+ }
6832
6839
  return writer.writeUint8Array(chunk);
6833
6840
  }
6834
6841
  });
@@ -7591,12 +7598,14 @@
7591
7598
  const PROPERTY_NAME_VERSION = "version";
7592
7599
  const PROPERTY_NAME_VERSION_MADE_BY = "versionMadeBy";
7593
7600
  const PROPERTY_NAME_ZIPCRYPTO = "zipCrypto";
7601
+ const PROPERTY_NAME_DIRECTORY = "directory";
7602
+ const PROPERTY_NAME_EXECUTABLE = "executable";
7594
7603
 
7595
7604
  const PROPERTY_NAMES = [
7596
7605
  PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, PROPERTY_NAME_COMPPRESSED_SIZE, PROPERTY_NAME_UNCOMPPRESSED_SIZE,
7597
7606
  PROPERTY_NAME_LAST_MODIFICATION_DATE, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT,
7598
7607
  PROPERTY_NAME_LAST_ACCESS_DATE, PROPERTY_NAME_CREATION_DATE, PROPERTY_NAME_OFFSET, PROPERTY_NAME_DISK_NUMBER_START,
7599
- PROPERTY_NAME_DISK_NUMBER_START, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_MS_DOS_COMPATIBLE, PROPERTY_NAME_ZIP64, PROPERTY_NAME_ENCRYPTED, PROPERTY_NAME_VERSION, PROPERTY_NAME_VERSION_MADE_BY, PROPERTY_NAME_ZIPCRYPTO, "directory", "executable", "bitFlag", "signature", "filenameUTF8", "commentUTF8", "compressionMethod", "extraField", "rawExtraField", "extraFieldZip64", "extraFieldUnicodePath", "extraFieldUnicodeComment", "extraFieldAES", "extraFieldNTFS", "extraFieldExtendedTimestamp"];
7608
+ PROPERTY_NAME_DISK_NUMBER_START, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_MS_DOS_COMPATIBLE, PROPERTY_NAME_ZIP64, PROPERTY_NAME_ENCRYPTED, PROPERTY_NAME_VERSION, PROPERTY_NAME_VERSION_MADE_BY, PROPERTY_NAME_ZIPCRYPTO, PROPERTY_NAME_DIRECTORY, PROPERTY_NAME_EXECUTABLE, "bitFlag", "signature", "filenameUTF8", "commentUTF8", "compressionMethod", "extraField", "rawExtraField", "extraFieldZip64", "extraFieldUnicodePath", "extraFieldUnicodeComment", "extraFieldAES", "extraFieldNTFS", "extraFieldExtendedTimestamp"];
7600
7609
 
7601
7610
  class Entry {
7602
7611
 
@@ -8441,10 +8450,37 @@
8441
8450
 
8442
8451
  async function addFile(zipWriter, name, reader, options) {
8443
8452
  name = name.trim();
8444
- if (options.directory && (!name.endsWith(DIRECTORY_SIGNATURE))) {
8445
- name += DIRECTORY_SIGNATURE;
8446
- } else {
8447
- options.directory = name.endsWith(DIRECTORY_SIGNATURE);
8453
+ const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
8454
+ const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
8455
+ const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
8456
+ if (versionMadeBy > MAX_16_BITS) {
8457
+ throw new Error(ERR_INVALID_VERSION);
8458
+ }
8459
+ let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
8460
+ if (externalFileAttributes === 0) {
8461
+ externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
8462
+ }
8463
+ if (!options.directory && name.endsWith(DIRECTORY_SIGNATURE)) {
8464
+ options.directory = true;
8465
+ }
8466
+ const directory = getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY);
8467
+ if (directory) {
8468
+ if (!name.endsWith(DIRECTORY_SIGNATURE)) {
8469
+ name += DIRECTORY_SIGNATURE;
8470
+ }
8471
+ if (externalFileAttributes === 0) {
8472
+ if (msDosCompatible) {
8473
+ externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
8474
+ } else {
8475
+ externalFileAttributes = FILE_ATTR_UNIX_DIR_MASK << 16;
8476
+ }
8477
+ }
8478
+ } else if (!msDosCompatible && externalFileAttributes === 0) {
8479
+ if (executable) {
8480
+ externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
8481
+ } else {
8482
+ externalFileAttributes = FILE_ATTR_UNIX_DEFAULT_MASK << 16;
8483
+ }
8448
8484
  }
8449
8485
  const encode = getOptionValue(zipWriter, options, "encodeText", encodeText);
8450
8486
  let rawFilename = encode(name);
@@ -8466,22 +8502,13 @@
8466
8502
  if (version > MAX_16_BITS) {
8467
8503
  throw new Error(ERR_INVALID_VERSION);
8468
8504
  }
8469
- const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, 20);
8470
- if (versionMadeBy > MAX_16_BITS) {
8471
- throw new Error(ERR_INVALID_VERSION);
8472
- }
8473
8505
  const lastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, new Date());
8474
8506
  const lastAccessDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
8475
8507
  const creationDate = getOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
8476
- const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true);
8477
8508
  let internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
8478
8509
  if (internalFileAttributes === 0) {
8479
8510
  internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0);
8480
8511
  }
8481
- let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
8482
- if (externalFileAttributes === 0) {
8483
- externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
8484
- }
8485
8512
  const passThrough = getOptionValue(zipWriter, options, "passThrough");
8486
8513
  let password, rawPassword;
8487
8514
  if (!passThrough) {
@@ -8804,6 +8831,7 @@
8804
8831
  zipCrypto,
8805
8832
  dataDescriptor,
8806
8833
  directory,
8834
+ executable,
8807
8835
  versionMadeBy,
8808
8836
  rawComment,
8809
8837
  rawExtraField,
@@ -8825,6 +8853,7 @@
8825
8853
  versionMadeBy,
8826
8854
  zip64,
8827
8855
  directory: Boolean(directory),
8856
+ executable: Boolean(executable),
8828
8857
  filenameUTF8: true,
8829
8858
  rawFilename,
8830
8859
  commentUTF8: true,
@@ -9285,13 +9314,11 @@
9285
9314
  rawComment,
9286
9315
  versionMadeBy,
9287
9316
  headerArray,
9288
- directory,
9289
9317
  zip64,
9290
9318
  zip64UncompressedSize,
9291
9319
  zip64CompressedSize,
9292
9320
  zip64DiskNumberStart,
9293
9321
  zip64Offset,
9294
- msDosCompatible,
9295
9322
  internalFileAttributes,
9296
9323
  externalFileAttributes,
9297
9324
  diskNumberStart,
@@ -9315,8 +9342,6 @@
9315
9342
  setUint16(directoryView, offset + 36, internalFileAttributes);
9316
9343
  if (externalFileAttributes) {
9317
9344
  setUint32(directoryView, offset + 38, externalFileAttributes);
9318
- } else if (directory && msDosCompatible) {
9319
- setUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK);
9320
9345
  }
9321
9346
  setUint32(directoryView, offset + 42, zip64 && zip64Offset ? MAX_32_BITS : fileEntryOffset);
9322
9347
  arraySet(directoryArray, rawFilename, offset + 46);
@@ -9527,6 +9552,7 @@
9527
9552
  exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION;
9528
9553
  exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;
9529
9554
  exports.ERR_UNSUPPORTED_FORMAT = ERR_UNSUPPORTED_FORMAT;
9555
+ exports.ERR_WRITER_NOT_INITIALIZED = ERR_WRITER_NOT_INITIALIZED;
9530
9556
  exports.HttpRangeReader = HttpRangeReader;
9531
9557
  exports.HttpReader = HttpReader;
9532
9558
  exports.Reader = Reader;