@zip.js/zip.js 2.7.66 → 2.7.68

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
@@ -4253,6 +4253,7 @@
4253
4253
  const MAX_32_BITS = 0xffffffff;
4254
4254
  const MAX_16_BITS = 0xffff;
4255
4255
  const COMPRESSION_METHOD_DEFLATE = 0x08;
4256
+ const COMPRESSION_METHOD_DEFLATE_64 = 0x09;
4256
4257
  const COMPRESSION_METHOD_STORE = 0x00;
4257
4258
  const COMPRESSION_METHOD_AES = 0x63;
4258
4259
 
@@ -7119,11 +7120,18 @@
7119
7120
  if (eocdCache && index == size - END_OF_CENTRAL_DIR_LENGTH && length == END_OF_CENTRAL_DIR_LENGTH) {
7120
7121
  return eocdCache;
7121
7122
  }
7122
- const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, index, length));
7123
- if (response.status != 206) {
7124
- throw new Error(ERR_HTTP_RANGE);
7123
+ if (index >= size) {
7124
+ return new Uint8Array();
7125
+ } else {
7126
+ if (index + length > size) {
7127
+ length = size - index;
7128
+ }
7129
+ const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, index, length));
7130
+ if (response.status != 206) {
7131
+ throw new Error(ERR_HTTP_RANGE);
7132
+ }
7133
+ return new Uint8Array(await response.arrayBuffer());
7125
7134
  }
7126
- return new Uint8Array(await response.arrayBuffer());
7127
7135
  } else {
7128
7136
  const { data } = httpReader;
7129
7137
  if (!data) {
@@ -8411,27 +8419,11 @@
8411
8419
  if (this.filenames.size) {
8412
8420
  throw new Error(ERR_ZIP_NOT_EMPTY);
8413
8421
  }
8414
- ({ reader } = new GenericReader(reader));
8415
- const [zipEntriesReader, zipDataReader] = reader.readable.tee();
8416
- const zipReader = new ZipReader(new ReadableStream({
8417
- async start(controller) {
8418
- const reader = zipEntriesReader.getReader();
8419
- await readChunk();
8420
-
8421
- async function readChunk() {
8422
- const { done, value } = await reader.read();
8423
- if (done) {
8424
- controller.close();
8425
- } else {
8426
- controller.enqueue(value);
8427
- await readChunk();
8428
- }
8429
- }
8430
- }
8431
- }));
8422
+ reader = new GenericReader(reader);
8423
+ const zipReader = new ZipReader(reader.readable);
8432
8424
  const entries = await zipReader.getEntries();
8433
8425
  await zipReader.close();
8434
- await zipDataReader.pipeTo(this.writer.writable, { preventClose: true, preventAbort: true });
8426
+ await reader.readable.pipeTo(this.writer.writable, { preventClose: true, preventAbort: true });
8435
8427
  this.writer.size = this.offset = reader.size;
8436
8428
  this.filenames = new Set(entries.map(entry => entry.filename));
8437
8429
  this.files = new Map(entries.map(entry => {
@@ -8471,7 +8463,7 @@
8471
8463
  headerView
8472
8464
  } = getHeaderArrayData({
8473
8465
  version,
8474
- bitFlag: getBitFlag(level, languageEncodingFlag, dataDescriptor, encrypted),
8466
+ bitFlag: getBitFlag(level, languageEncodingFlag, dataDescriptor, encrypted, compressionMethod),
8475
8467
  compressionMethod,
8476
8468
  uncompressedSize,
8477
8469
  compressedSize,
@@ -9257,7 +9249,7 @@
9257
9249
  rawLastModDate
9258
9250
  } = getHeaderArrayData({
9259
9251
  version,
9260
- bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted),
9252
+ bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod),
9261
9253
  compressionMethod,
9262
9254
  uncompressedSize,
9263
9255
  lastModDate: lastModDate < MIN_DATE ? MIN_DATE : lastModDate > MAX_DATE ? MAX_DATE : lastModDate,
@@ -9745,8 +9737,7 @@
9745
9737
  };
9746
9738
  }
9747
9739
 
9748
-
9749
- function getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted) {
9740
+ function getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod) {
9750
9741
  let bitFlag = 0;
9751
9742
  if (useUnicodeFileNames) {
9752
9743
  bitFlag = bitFlag | BITFLAG_LANG_ENCODING_FLAG;
@@ -9754,14 +9745,16 @@
9754
9745
  if (dataDescriptor) {
9755
9746
  bitFlag = bitFlag | BITFLAG_DATA_DESCRIPTOR;
9756
9747
  }
9757
- if (level > 0 && level <= 3) {
9758
- bitFlag = bitFlag | BITFLAG_LEVEL_SUPER_FAST_MASK;
9759
- }
9760
- if (level > 3 && level <= 5) {
9761
- bitFlag = bitFlag | BITFLAG_LEVEL_FAST_MASK;
9762
- }
9763
- if (level == 9) {
9764
- bitFlag = bitFlag | BITFLAG_LEVEL_MAX_MASK;
9748
+ if (compressionMethod == COMPRESSION_METHOD_DEFLATE || compressionMethod == COMPRESSION_METHOD_DEFLATE_64) {
9749
+ if (level >= 0 && level <= 3) {
9750
+ bitFlag = bitFlag | BITFLAG_LEVEL_SUPER_FAST_MASK;
9751
+ }
9752
+ if (level > 3 && level <= 5) {
9753
+ bitFlag = bitFlag | BITFLAG_LEVEL_FAST_MASK;
9754
+ }
9755
+ if (level == 9) {
9756
+ bitFlag = bitFlag | BITFLAG_LEVEL_MAX_MASK;
9757
+ }
9765
9758
  }
9766
9759
  if (encrypted) {
9767
9760
  bitFlag = bitFlag | BITFLAG_ENCRYPTED;