@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/index.cjs
CHANGED
|
@@ -99,6 +99,7 @@ const MAX_DATE = new Date(2107, 11, 31);
|
|
|
99
99
|
const MIN_DATE = new Date(1980, 0, 1);
|
|
100
100
|
|
|
101
101
|
const UNDEFINED_VALUE = undefined;
|
|
102
|
+
const INFINITY_VALUE = Infinity;
|
|
102
103
|
const UNDEFINED_TYPE = "undefined";
|
|
103
104
|
const FUNCTION_TYPE = "function";
|
|
104
105
|
const OBJECT_TYPE = "object";
|
|
@@ -1958,6 +1959,8 @@ class ChunkStream extends TransformStream {
|
|
|
1958
1959
|
*/
|
|
1959
1960
|
|
|
1960
1961
|
|
|
1962
|
+
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
1963
|
+
|
|
1961
1964
|
let webWorkerSupported, webWorkerURI, webWorkerOptions;
|
|
1962
1965
|
let transferStreamsSupported = true;
|
|
1963
1966
|
let initModule$1 = () => { };
|
|
@@ -2170,11 +2173,8 @@ function watchClosedStream(writableSource) {
|
|
|
2170
2173
|
return { writable, closed };
|
|
2171
2174
|
}
|
|
2172
2175
|
|
|
2173
|
-
function getWebWorker(url, baseURI, workerData, isModuleType
|
|
2176
|
+
function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
|
|
2174
2177
|
let worker, resolvedURI, resolvedOptions;
|
|
2175
|
-
if (isModuleType) {
|
|
2176
|
-
resolvedOptions = { type: "module" };
|
|
2177
|
-
}
|
|
2178
2178
|
if (webWorkerURI === UNDEFINED_VALUE) {
|
|
2179
2179
|
// deno-lint-ignore valid-typeof
|
|
2180
2180
|
const isFunctionURI = typeof url == FUNCTION_TYPE;
|
|
@@ -2186,6 +2186,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
2186
2186
|
const isDataURI = resolvedURI.startsWith("data:");
|
|
2187
2187
|
const isBlobURI = resolvedURI.startsWith("blob:");
|
|
2188
2188
|
if (isDataURI || isBlobURI) {
|
|
2189
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2190
|
+
isModuleType = false;
|
|
2191
|
+
}
|
|
2192
|
+
if (isModuleType) {
|
|
2193
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2194
|
+
}
|
|
2189
2195
|
try {
|
|
2190
2196
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2191
2197
|
} catch (error) {
|
|
@@ -2205,6 +2211,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
2205
2211
|
}
|
|
2206
2212
|
}
|
|
2207
2213
|
} else {
|
|
2214
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2215
|
+
isModuleType = true;
|
|
2216
|
+
}
|
|
2217
|
+
if (isModuleType) {
|
|
2218
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2219
|
+
}
|
|
2208
2220
|
try {
|
|
2209
2221
|
resolvedURI = new URL(resolvedURI, baseURI);
|
|
2210
2222
|
} catch {
|
|
@@ -2214,7 +2226,7 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
2214
2226
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2215
2227
|
} catch (error) {
|
|
2216
2228
|
if (!isModuleType) {
|
|
2217
|
-
return getWebWorker(url, baseURI, workerData,
|
|
2229
|
+
return getWebWorker(url, baseURI, workerData, false, useBlobURI);
|
|
2218
2230
|
} else {
|
|
2219
2231
|
throw error;
|
|
2220
2232
|
}
|
|
@@ -3155,8 +3167,8 @@ class GenericWriter {
|
|
|
3155
3167
|
Object.assign(writer, {
|
|
3156
3168
|
diskNumber: 0,
|
|
3157
3169
|
diskOffset: 0,
|
|
3158
|
-
availableSize:
|
|
3159
|
-
maxSize:
|
|
3170
|
+
availableSize: INFINITY_VALUE,
|
|
3171
|
+
maxSize: INFINITY_VALUE
|
|
3160
3172
|
});
|
|
3161
3173
|
}
|
|
3162
3174
|
return writer;
|
|
@@ -4391,8 +4403,8 @@ class ZipWriter {
|
|
|
4391
4403
|
constructor(writer, options = {}) {
|
|
4392
4404
|
writer = new GenericWriter(writer);
|
|
4393
4405
|
const addSplitZipSignature =
|
|
4394
|
-
writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !==
|
|
4395
|
-
writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !==
|
|
4406
|
+
writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== INFINITY_VALUE &&
|
|
4407
|
+
writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== INFINITY_VALUE;
|
|
4396
4408
|
Object.assign(this, {
|
|
4397
4409
|
writer,
|
|
4398
4410
|
addSplitZipSignature,
|
|
@@ -4888,7 +4900,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4888
4900
|
let writingBufferedEntryData;
|
|
4889
4901
|
let writingEntryData;
|
|
4890
4902
|
let fileWriter;
|
|
4891
|
-
let blobPromise;
|
|
4892
4903
|
files.set(name, fileEntry);
|
|
4893
4904
|
try {
|
|
4894
4905
|
let lockPreviousFileEntry;
|
|
@@ -4897,7 +4908,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4897
4908
|
requestLockCurrentFileEntry();
|
|
4898
4909
|
}
|
|
4899
4910
|
if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
|
|
4900
|
-
fileWriter = new TransformStream();
|
|
4911
|
+
fileWriter = new TransformStream(UNDEFINED_VALUE, UNDEFINED_VALUE, { highWaterMark: INFINITY_VALUE });
|
|
4901
4912
|
fileWriter.size = 0;
|
|
4902
4913
|
bufferedWrite = true;
|
|
4903
4914
|
zipWriter.bufferedWrites++;
|
|
@@ -4928,20 +4939,20 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4928
4939
|
await skipDiskIfNeeded(writable);
|
|
4929
4940
|
}
|
|
4930
4941
|
const { diskNumber } = writer;
|
|
4931
|
-
writingEntryData = true;
|
|
4932
4942
|
fileEntry.diskNumberStart = diskNumber;
|
|
4933
|
-
if (bufferedWrite) {
|
|
4934
|
-
|
|
4935
|
-
} else {
|
|
4943
|
+
if (!bufferedWrite) {
|
|
4944
|
+
writingEntryData = true;
|
|
4936
4945
|
await writeData(fileWriter, localHeaderArray);
|
|
4937
4946
|
}
|
|
4938
4947
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
4939
4948
|
const { zip64 } = fileEntry;
|
|
4940
|
-
|
|
4949
|
+
if (!bufferedWrite) {
|
|
4950
|
+
writingEntryData = false;
|
|
4951
|
+
}
|
|
4941
4952
|
files.set(name, fileEntry);
|
|
4942
4953
|
fileEntry.filename = name;
|
|
4943
4954
|
if (bufferedWrite) {
|
|
4944
|
-
|
|
4955
|
+
await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
|
|
4945
4956
|
await requestLockWriter();
|
|
4946
4957
|
writingBufferedEntryData = true;
|
|
4947
4958
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
@@ -4952,7 +4963,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4952
4963
|
updateLocalHeader(fileEntry, localHeaderView, options);
|
|
4953
4964
|
await skipDiskIfNeeded(writable);
|
|
4954
4965
|
await writeData(writer, localHeaderArray);
|
|
4955
|
-
await
|
|
4966
|
+
await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
|
|
4956
4967
|
writer.size += fileWriter.size;
|
|
4957
4968
|
writingBufferedEntryData = false;
|
|
4958
4969
|
} else {
|
|
@@ -4967,7 +4978,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4967
4978
|
zipWriter.offset += fileEntry.size;
|
|
4968
4979
|
return fileEntry;
|
|
4969
4980
|
} catch (error) {
|
|
4970
|
-
if (
|
|
4981
|
+
if (writingBufferedEntryData || writingEntryData) {
|
|
4971
4982
|
zipWriter.hasCorruptedEntries = true;
|
|
4972
4983
|
if (error) {
|
|
4973
4984
|
try {
|
package/index.d.ts
CHANGED
|
@@ -1438,6 +1438,13 @@ export interface ZipWriterConstructorOptions extends WorkerConfiguration {
|
|
|
1438
1438
|
* @defaultValue false
|
|
1439
1439
|
*/
|
|
1440
1440
|
bufferedWrite?: boolean;
|
|
1441
|
+
/**
|
|
1442
|
+
* An async factory function that returns a `TransformStream`-like object (`{ writable, readable }`) used as a temporary buffer when entries are written in parallel.
|
|
1443
|
+
*
|
|
1444
|
+
* When provided, this replaces the default in-memory `TransformStream` buffer, allowing data to be stored externally (e.g. filesystem, OPFS, network).
|
|
1445
|
+
* The `writable` side receives compressed entry data. The `readable` side is consumed when the entry is replayed into the final zip stream.
|
|
1446
|
+
*/
|
|
1447
|
+
createTempStream?: () => Promise<{ writable: WritableStream; readable: ReadableStream }>;
|
|
1441
1448
|
/**
|
|
1442
1449
|
* `true` to keep the order of the entry physically in the zip file.
|
|
1443
1450
|
*
|