@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/dist/zip-fs.js
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
const MAX_32_BITS = 0xffffffff;
|
|
39
39
|
const MAX_16_BITS = 0xffff;
|
|
40
40
|
const COMPRESSION_METHOD_DEFLATE = 0x08;
|
|
41
|
+
const COMPRESSION_METHOD_DEFLATE_64 = 0x09;
|
|
41
42
|
const COMPRESSION_METHOD_STORE = 0x00;
|
|
42
43
|
const COMPRESSION_METHOD_AES = 0x63;
|
|
43
44
|
|
|
@@ -2904,11 +2905,18 @@
|
|
|
2904
2905
|
if (eocdCache && index == size - END_OF_CENTRAL_DIR_LENGTH && length == END_OF_CENTRAL_DIR_LENGTH) {
|
|
2905
2906
|
return eocdCache;
|
|
2906
2907
|
}
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2908
|
+
if (index >= size) {
|
|
2909
|
+
return new Uint8Array();
|
|
2910
|
+
} else {
|
|
2911
|
+
if (index + length > size) {
|
|
2912
|
+
length = size - index;
|
|
2913
|
+
}
|
|
2914
|
+
const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, index, length));
|
|
2915
|
+
if (response.status != 206) {
|
|
2916
|
+
throw new Error(ERR_HTTP_RANGE);
|
|
2917
|
+
}
|
|
2918
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
2910
2919
|
}
|
|
2911
|
-
return new Uint8Array(await response.arrayBuffer());
|
|
2912
2920
|
} else {
|
|
2913
2921
|
const { data } = httpReader;
|
|
2914
2922
|
if (!data) {
|
|
@@ -4196,27 +4204,11 @@
|
|
|
4196
4204
|
if (this.filenames.size) {
|
|
4197
4205
|
throw new Error(ERR_ZIP_NOT_EMPTY);
|
|
4198
4206
|
}
|
|
4199
|
-
|
|
4200
|
-
const
|
|
4201
|
-
const zipReader = new ZipReader(new ReadableStream({
|
|
4202
|
-
async start(controller) {
|
|
4203
|
-
const reader = zipEntriesReader.getReader();
|
|
4204
|
-
await readChunk();
|
|
4205
|
-
|
|
4206
|
-
async function readChunk() {
|
|
4207
|
-
const { done, value } = await reader.read();
|
|
4208
|
-
if (done) {
|
|
4209
|
-
controller.close();
|
|
4210
|
-
} else {
|
|
4211
|
-
controller.enqueue(value);
|
|
4212
|
-
await readChunk();
|
|
4213
|
-
}
|
|
4214
|
-
}
|
|
4215
|
-
}
|
|
4216
|
-
}));
|
|
4207
|
+
reader = new GenericReader(reader);
|
|
4208
|
+
const zipReader = new ZipReader(reader.readable);
|
|
4217
4209
|
const entries = await zipReader.getEntries();
|
|
4218
4210
|
await zipReader.close();
|
|
4219
|
-
await
|
|
4211
|
+
await reader.readable.pipeTo(this.writer.writable, { preventClose: true, preventAbort: true });
|
|
4220
4212
|
this.writer.size = this.offset = reader.size;
|
|
4221
4213
|
this.filenames = new Set(entries.map(entry => entry.filename));
|
|
4222
4214
|
this.files = new Map(entries.map(entry => {
|
|
@@ -4256,7 +4248,7 @@
|
|
|
4256
4248
|
headerView
|
|
4257
4249
|
} = getHeaderArrayData({
|
|
4258
4250
|
version,
|
|
4259
|
-
bitFlag: getBitFlag(level, languageEncodingFlag, dataDescriptor, encrypted),
|
|
4251
|
+
bitFlag: getBitFlag(level, languageEncodingFlag, dataDescriptor, encrypted, compressionMethod),
|
|
4260
4252
|
compressionMethod,
|
|
4261
4253
|
uncompressedSize,
|
|
4262
4254
|
compressedSize,
|
|
@@ -5042,7 +5034,7 @@
|
|
|
5042
5034
|
rawLastModDate
|
|
5043
5035
|
} = getHeaderArrayData({
|
|
5044
5036
|
version,
|
|
5045
|
-
bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted),
|
|
5037
|
+
bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod),
|
|
5046
5038
|
compressionMethod,
|
|
5047
5039
|
uncompressedSize,
|
|
5048
5040
|
lastModDate: lastModDate < MIN_DATE ? MIN_DATE : lastModDate > MAX_DATE ? MAX_DATE : lastModDate,
|
|
@@ -5530,8 +5522,7 @@
|
|
|
5530
5522
|
};
|
|
5531
5523
|
}
|
|
5532
5524
|
|
|
5533
|
-
|
|
5534
|
-
function getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted) {
|
|
5525
|
+
function getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod) {
|
|
5535
5526
|
let bitFlag = 0;
|
|
5536
5527
|
if (useUnicodeFileNames) {
|
|
5537
5528
|
bitFlag = bitFlag | BITFLAG_LANG_ENCODING_FLAG;
|
|
@@ -5539,14 +5530,16 @@
|
|
|
5539
5530
|
if (dataDescriptor) {
|
|
5540
5531
|
bitFlag = bitFlag | BITFLAG_DATA_DESCRIPTOR;
|
|
5541
5532
|
}
|
|
5542
|
-
if (
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
|
|
5546
|
-
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
|
|
5533
|
+
if (compressionMethod == COMPRESSION_METHOD_DEFLATE || compressionMethod == COMPRESSION_METHOD_DEFLATE_64) {
|
|
5534
|
+
if (level >= 0 && level <= 3) {
|
|
5535
|
+
bitFlag = bitFlag | BITFLAG_LEVEL_SUPER_FAST_MASK;
|
|
5536
|
+
}
|
|
5537
|
+
if (level > 3 && level <= 5) {
|
|
5538
|
+
bitFlag = bitFlag | BITFLAG_LEVEL_FAST_MASK;
|
|
5539
|
+
}
|
|
5540
|
+
if (level == 9) {
|
|
5541
|
+
bitFlag = bitFlag | BITFLAG_LEVEL_MAX_MASK;
|
|
5542
|
+
}
|
|
5550
5543
|
}
|
|
5551
5544
|
if (encrypted) {
|
|
5552
5545
|
bitFlag = bitFlag | BITFLAG_ENCRYPTED;
|