@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/.github/workflows/publish.yml +19 -2
- package/deno.json +1 -1
- package/dist/zip-fs-full.js +28 -35
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +28 -35
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +28 -35
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker-inflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +28 -35
- package/dist/zip.min.js +1 -1
- package/index.cjs +28 -35
- package/index.min.js +1 -1
- package/lib/core/constants.js +2 -0
- package/lib/core/io.js +11 -4
- package/lib/core/zip-writer.js +18 -32
- package/package.json +2 -2
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
|
-
|
|
8749
|
-
|
|
8750
|
-
|
|
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
|
-
|
|
10041
|
-
const
|
|
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
|
|
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 (
|
|
11384
|
-
|
|
11385
|
-
|
|
11386
|
-
|
|
11387
|
-
|
|
11388
|
-
|
|
11389
|
-
|
|
11390
|
-
|
|
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;
|