@zip.js/zip.js 2.8.17 → 2.8.19
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/deno.json +1 -1
- package/dist/zip-core.js +30 -19
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +30 -19
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +30 -19
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +30 -19
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +30 -19
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +30 -19
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +30 -19
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +30 -19
- package/index-native.min.js +1 -1
- package/index.cjs +30 -19
- package/index.d.ts +7 -0
- package/index.min.js +1 -1
- package/lib/core/codec-worker.js +16 -5
- package/lib/core/constants.js +2 -0
- package/lib/core/io.js +3 -2
- package/lib/core/options.js +2 -0
- package/lib/core/zip-writer.js +13 -13
- package/package.json +3 -6
package/lib/core/codec-worker.js
CHANGED
|
@@ -44,6 +44,8 @@ import {
|
|
|
44
44
|
MESSAGE_CLOSE
|
|
45
45
|
} from "./streams/codec-stream.js";
|
|
46
46
|
|
|
47
|
+
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
48
|
+
|
|
47
49
|
let webWorkerSupported, webWorkerURI, webWorkerOptions;
|
|
48
50
|
let transferStreamsSupported = true;
|
|
49
51
|
let initModule = () => { };
|
|
@@ -261,11 +263,8 @@ function watchClosedStream(writableSource) {
|
|
|
261
263
|
return { writable, closed };
|
|
262
264
|
}
|
|
263
265
|
|
|
264
|
-
function getWebWorker(url, baseURI, workerData, isModuleType
|
|
266
|
+
function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
|
|
265
267
|
let worker, resolvedURI, resolvedOptions;
|
|
266
|
-
if (isModuleType) {
|
|
267
|
-
resolvedOptions = { type: "module" };
|
|
268
|
-
}
|
|
269
268
|
if (webWorkerURI === UNDEFINED_VALUE) {
|
|
270
269
|
// deno-lint-ignore valid-typeof
|
|
271
270
|
const isFunctionURI = typeof url == FUNCTION_TYPE;
|
|
@@ -277,6 +276,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
277
276
|
const isDataURI = resolvedURI.startsWith("data:");
|
|
278
277
|
const isBlobURI = resolvedURI.startsWith("blob:");
|
|
279
278
|
if (isDataURI || isBlobURI) {
|
|
279
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
280
|
+
isModuleType = false;
|
|
281
|
+
}
|
|
282
|
+
if (isModuleType) {
|
|
283
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
284
|
+
}
|
|
280
285
|
try {
|
|
281
286
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
282
287
|
} catch (error) {
|
|
@@ -296,6 +301,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
296
301
|
}
|
|
297
302
|
}
|
|
298
303
|
} else {
|
|
304
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
305
|
+
isModuleType = true;
|
|
306
|
+
}
|
|
307
|
+
if (isModuleType) {
|
|
308
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
309
|
+
}
|
|
299
310
|
try {
|
|
300
311
|
resolvedURI = new URL(resolvedURI, baseURI);
|
|
301
312
|
} catch {
|
|
@@ -305,7 +316,7 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
305
316
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
306
317
|
} catch (error) {
|
|
307
318
|
if (!isModuleType) {
|
|
308
|
-
return getWebWorker(url, baseURI, workerData,
|
|
319
|
+
return getWebWorker(url, baseURI, workerData, false, useBlobURI);
|
|
309
320
|
} else {
|
|
310
321
|
throw error;
|
|
311
322
|
}
|
package/lib/core/constants.js
CHANGED
|
@@ -96,6 +96,7 @@ const MAX_DATE = new Date(2107, 11, 31);
|
|
|
96
96
|
const MIN_DATE = new Date(1980, 0, 1);
|
|
97
97
|
|
|
98
98
|
const UNDEFINED_VALUE = undefined;
|
|
99
|
+
const INFINITY_VALUE = Infinity;
|
|
99
100
|
const UNDEFINED_TYPE = "undefined";
|
|
100
101
|
const FUNCTION_TYPE = "function";
|
|
101
102
|
const OBJECT_TYPE = "object";
|
|
@@ -162,6 +163,7 @@ export {
|
|
|
162
163
|
MIN_DATE,
|
|
163
164
|
MAX_DATE,
|
|
164
165
|
UNDEFINED_VALUE,
|
|
166
|
+
INFINITY_VALUE,
|
|
165
167
|
UNDEFINED_TYPE,
|
|
166
168
|
FUNCTION_TYPE,
|
|
167
169
|
OBJECT_TYPE
|
package/lib/core/io.js
CHANGED
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
import {
|
|
33
33
|
UNDEFINED_VALUE,
|
|
34
|
+
INFINITY_VALUE,
|
|
34
35
|
FUNCTION_TYPE,
|
|
35
36
|
END_OF_CENTRAL_DIR_LENGTH
|
|
36
37
|
} from "./constants.js";
|
|
@@ -745,8 +746,8 @@ class GenericWriter {
|
|
|
745
746
|
Object.assign(writer, {
|
|
746
747
|
diskNumber: 0,
|
|
747
748
|
diskOffset: 0,
|
|
748
|
-
availableSize:
|
|
749
|
-
maxSize:
|
|
749
|
+
availableSize: INFINITY_VALUE,
|
|
750
|
+
maxSize: INFINITY_VALUE
|
|
750
751
|
});
|
|
751
752
|
}
|
|
752
753
|
return writer;
|
package/lib/core/options.js
CHANGED
|
@@ -48,6 +48,7 @@ const OPTION_EXTENDED_TIMESTAMP = "extendedTimestamp";
|
|
|
48
48
|
const OPTION_KEEP_ORDER = "keepOrder";
|
|
49
49
|
const OPTION_LEVEL = "level";
|
|
50
50
|
const OPTION_BUFFERED_WRITE = "bufferedWrite";
|
|
51
|
+
const OPTION_CREATE_TEMP_STREAM = "createTempStream";
|
|
51
52
|
const OPTION_DATA_DESCRIPTOR_SIGNATURE = "dataDescriptorSignature";
|
|
52
53
|
const OPTION_USE_UNICODE_FILE_NAMES = "useUnicodeFileNames";
|
|
53
54
|
const OPTION_DATA_DESCRIPTOR = "dataDescriptor";
|
|
@@ -80,6 +81,7 @@ export {
|
|
|
80
81
|
OPTION_KEEP_ORDER,
|
|
81
82
|
OPTION_LEVEL,
|
|
82
83
|
OPTION_BUFFERED_WRITE,
|
|
84
|
+
OPTION_CREATE_TEMP_STREAM,
|
|
83
85
|
OPTION_DATA_DESCRIPTOR_SIGNATURE,
|
|
84
86
|
OPTION_USE_UNICODE_FILE_NAMES,
|
|
85
87
|
OPTION_DATA_DESCRIPTOR,
|
package/lib/core/zip-writer.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/* global TransformStream
|
|
29
|
+
/* global TransformStream */
|
|
30
30
|
// deno-lint-ignore-file no-this-alias
|
|
31
31
|
|
|
32
32
|
import {
|
|
@@ -87,6 +87,7 @@ import {
|
|
|
87
87
|
MIN_DATE,
|
|
88
88
|
MAX_DATE,
|
|
89
89
|
UNDEFINED_VALUE,
|
|
90
|
+
INFINITY_VALUE,
|
|
90
91
|
OBJECT_TYPE
|
|
91
92
|
} from "./constants.js";
|
|
92
93
|
import {
|
|
@@ -188,8 +189,8 @@ class ZipWriter {
|
|
|
188
189
|
constructor(writer, options = {}) {
|
|
189
190
|
writer = new GenericWriter(writer);
|
|
190
191
|
const addSplitZipSignature =
|
|
191
|
-
writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !==
|
|
192
|
-
writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !==
|
|
192
|
+
writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== INFINITY_VALUE &&
|
|
193
|
+
writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== INFINITY_VALUE;
|
|
193
194
|
Object.assign(this, {
|
|
194
195
|
writer,
|
|
195
196
|
addSplitZipSignature,
|
|
@@ -701,7 +702,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
701
702
|
let writingBufferedEntryData;
|
|
702
703
|
let writingEntryData;
|
|
703
704
|
let fileWriter;
|
|
704
|
-
let blobPromise;
|
|
705
705
|
files.set(name, fileEntry);
|
|
706
706
|
try {
|
|
707
707
|
let lockPreviousFileEntry;
|
|
@@ -710,7 +710,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
710
710
|
requestLockCurrentFileEntry();
|
|
711
711
|
}
|
|
712
712
|
if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
|
|
713
|
-
fileWriter = new TransformStream();
|
|
713
|
+
fileWriter = new TransformStream(UNDEFINED_VALUE, UNDEFINED_VALUE, { highWaterMark: INFINITY_VALUE });
|
|
714
714
|
fileWriter.size = 0;
|
|
715
715
|
bufferedWrite = true;
|
|
716
716
|
zipWriter.bufferedWrites++;
|
|
@@ -741,20 +741,20 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
741
741
|
await skipDiskIfNeeded(writable);
|
|
742
742
|
}
|
|
743
743
|
const { diskNumber } = writer;
|
|
744
|
-
writingEntryData = true;
|
|
745
744
|
fileEntry.diskNumberStart = diskNumber;
|
|
746
|
-
if (bufferedWrite) {
|
|
747
|
-
|
|
748
|
-
} else {
|
|
745
|
+
if (!bufferedWrite) {
|
|
746
|
+
writingEntryData = true;
|
|
749
747
|
await writeData(fileWriter, localHeaderArray);
|
|
750
748
|
}
|
|
751
749
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
752
750
|
const { zip64 } = fileEntry;
|
|
753
|
-
|
|
751
|
+
if (!bufferedWrite) {
|
|
752
|
+
writingEntryData = false;
|
|
753
|
+
}
|
|
754
754
|
files.set(name, fileEntry);
|
|
755
755
|
fileEntry.filename = name;
|
|
756
756
|
if (bufferedWrite) {
|
|
757
|
-
|
|
757
|
+
await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
|
|
758
758
|
await requestLockWriter();
|
|
759
759
|
writingBufferedEntryData = true;
|
|
760
760
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
@@ -765,7 +765,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
765
765
|
updateLocalHeader(fileEntry, localHeaderView, options);
|
|
766
766
|
await skipDiskIfNeeded(writable);
|
|
767
767
|
await writeData(writer, localHeaderArray);
|
|
768
|
-
await
|
|
768
|
+
await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
|
|
769
769
|
writer.size += fileWriter.size;
|
|
770
770
|
writingBufferedEntryData = false;
|
|
771
771
|
} else {
|
|
@@ -780,7 +780,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
780
780
|
zipWriter.offset += fileEntry.size;
|
|
781
781
|
return fileEntry;
|
|
782
782
|
} catch (error) {
|
|
783
|
-
if (
|
|
783
|
+
if (writingBufferedEntryData || writingEntryData) {
|
|
784
784
|
zipWriter.hasCorruptedEntries = true;
|
|
785
785
|
if (error) {
|
|
786
786
|
try {
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "A JavaScript library to zip and unzip files in the browser, Deno and Node.js",
|
|
4
4
|
"author": "Gildas Lormeau",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
|
-
"version": "2.8.
|
|
6
|
+
"version": "2.8.19",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"zip",
|
|
@@ -156,13 +156,10 @@
|
|
|
156
156
|
"devDependencies": {
|
|
157
157
|
"@rollup/plugin-replace": "^6.0.3",
|
|
158
158
|
"@rollup/plugin-terser": "^0.4.4",
|
|
159
|
-
"eslint": "^
|
|
159
|
+
"eslint": "^10.0.0",
|
|
160
160
|
"http-server": "^14.1.1",
|
|
161
161
|
"rollup": "^4.57.1",
|
|
162
162
|
"typedoc": "^0.28.16",
|
|
163
|
-
"typedoc-plugin-markdown": "^4.
|
|
164
|
-
},
|
|
165
|
-
"dependencies": {
|
|
166
|
-
"web-worker": "^1.5.0"
|
|
163
|
+
"typedoc-plugin-markdown": "^4.10.0"
|
|
167
164
|
}
|
|
168
165
|
}
|