@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/index.cjs CHANGED
@@ -4247,6 +4247,7 @@ function ZipInflate(options) {
4247
4247
  const MAX_32_BITS = 0xffffffff;
4248
4248
  const MAX_16_BITS = 0xffff;
4249
4249
  const COMPRESSION_METHOD_DEFLATE = 0x08;
4250
+ const COMPRESSION_METHOD_DEFLATE_64 = 0x09;
4250
4251
  const COMPRESSION_METHOD_STORE = 0x00;
4251
4252
  const COMPRESSION_METHOD_AES = 0x63;
4252
4253
 
@@ -8745,11 +8746,18 @@ async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest,
8745
8746
  if (eocdCache && index == size - END_OF_CENTRAL_DIR_LENGTH && length == END_OF_CENTRAL_DIR_LENGTH) {
8746
8747
  return eocdCache;
8747
8748
  }
8748
- const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, index, length));
8749
- if (response.status != 206) {
8750
- throw new Error(ERR_HTTP_RANGE);
8749
+ if (index >= size) {
8750
+ return new Uint8Array();
8751
+ } else {
8752
+ if (index + length > size) {
8753
+ length = size - index;
8754
+ }
8755
+ const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, index, length));
8756
+ if (response.status != 206) {
8757
+ throw new Error(ERR_HTTP_RANGE);
8758
+ }
8759
+ return new Uint8Array(await response.arrayBuffer());
8751
8760
  }
8752
- return new Uint8Array(await response.arrayBuffer());
8753
8761
  } else {
8754
8762
  const { data } = httpReader;
8755
8763
  if (!data) {
@@ -10037,27 +10045,11 @@ class ZipWriter {
10037
10045
  if (this.filenames.size) {
10038
10046
  throw new Error(ERR_ZIP_NOT_EMPTY);
10039
10047
  }
10040
- ({ reader } = new GenericReader(reader));
10041
- const [zipEntriesReader, zipDataReader] = reader.readable.tee();
10042
- const zipReader = new ZipReader(new ReadableStream({
10043
- async start(controller) {
10044
- const reader = zipEntriesReader.getReader();
10045
- await readChunk();
10046
-
10047
- async function readChunk() {
10048
- const { done, value } = await reader.read();
10049
- if (done) {
10050
- controller.close();
10051
- } else {
10052
- controller.enqueue(value);
10053
- await readChunk();
10054
- }
10055
- }
10056
- }
10057
- }));
10048
+ reader = new GenericReader(reader);
10049
+ const zipReader = new ZipReader(reader.readable);
10058
10050
  const entries = await zipReader.getEntries();
10059
10051
  await zipReader.close();
10060
- await zipDataReader.pipeTo(this.writer.writable, { preventClose: true, preventAbort: true });
10052
+ await reader.readable.pipeTo(this.writer.writable, { preventClose: true, preventAbort: true });
10061
10053
  this.writer.size = this.offset = reader.size;
10062
10054
  this.filenames = new Set(entries.map(entry => entry.filename));
10063
10055
  this.files = new Map(entries.map(entry => {
@@ -10097,7 +10089,7 @@ class ZipWriter {
10097
10089
  headerView
10098
10090
  } = getHeaderArrayData({
10099
10091
  version,
10100
- bitFlag: getBitFlag(level, languageEncodingFlag, dataDescriptor, encrypted),
10092
+ bitFlag: getBitFlag(level, languageEncodingFlag, dataDescriptor, encrypted, compressionMethod),
10101
10093
  compressionMethod,
10102
10094
  uncompressedSize,
10103
10095
  compressedSize,
@@ -10883,7 +10875,7 @@ function getHeaderInfo(options) {
10883
10875
  rawLastModDate
10884
10876
  } = getHeaderArrayData({
10885
10877
  version,
10886
- bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted),
10878
+ bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod),
10887
10879
  compressionMethod,
10888
10880
  uncompressedSize,
10889
10881
  lastModDate: lastModDate < MIN_DATE ? MIN_DATE : lastModDate > MAX_DATE ? MAX_DATE : lastModDate,
@@ -11371,8 +11363,7 @@ function getHeaderArrayData({
11371
11363
  };
11372
11364
  }
11373
11365
 
11374
-
11375
- function getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted) {
11366
+ function getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod) {
11376
11367
  let bitFlag = 0;
11377
11368
  if (useUnicodeFileNames) {
11378
11369
  bitFlag = bitFlag | BITFLAG_LANG_ENCODING_FLAG;
@@ -11380,14 +11371,16 @@ function getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted) {
11380
11371
  if (dataDescriptor) {
11381
11372
  bitFlag = bitFlag | BITFLAG_DATA_DESCRIPTOR;
11382
11373
  }
11383
- if (level > 0 && level <= 3) {
11384
- bitFlag = bitFlag | BITFLAG_LEVEL_SUPER_FAST_MASK;
11385
- }
11386
- if (level > 3 && level <= 5) {
11387
- bitFlag = bitFlag | BITFLAG_LEVEL_FAST_MASK;
11388
- }
11389
- if (level == 9) {
11390
- bitFlag = bitFlag | BITFLAG_LEVEL_MAX_MASK;
11374
+ if (compressionMethod == COMPRESSION_METHOD_DEFLATE || compressionMethod == COMPRESSION_METHOD_DEFLATE_64) {
11375
+ if (level >= 0 && level <= 3) {
11376
+ bitFlag = bitFlag | BITFLAG_LEVEL_SUPER_FAST_MASK;
11377
+ }
11378
+ if (level > 3 && level <= 5) {
11379
+ bitFlag = bitFlag | BITFLAG_LEVEL_FAST_MASK;
11380
+ }
11381
+ if (level == 9) {
11382
+ bitFlag = bitFlag | BITFLAG_LEVEL_MAX_MASK;
11383
+ }
11391
11384
  }
11392
11385
  if (encrypted) {
11393
11386
  bitFlag = bitFlag | BITFLAG_ENCRYPTED;