@zip.js/zip.js 2.8.17 → 2.8.18
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 +25 -15
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +25 -15
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +25 -15
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +25 -15
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +25 -15
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +25 -15
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +25 -15
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +25 -15
- package/index-native.min.js +1 -1
- package/index.cjs +25 -15
- package/index.d.ts +7 -0
- package/index.min.js +1 -1
- package/lib/core/codec-worker.js +16 -5
- package/lib/core/options.js +2 -0
- package/lib/core/zip-writer.js +10 -11
- package/package.json +3 -3
package/index.cjs
CHANGED
|
@@ -1958,6 +1958,8 @@ class ChunkStream extends TransformStream {
|
|
|
1958
1958
|
*/
|
|
1959
1959
|
|
|
1960
1960
|
|
|
1961
|
+
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
1962
|
+
|
|
1961
1963
|
let webWorkerSupported, webWorkerURI, webWorkerOptions;
|
|
1962
1964
|
let transferStreamsSupported = true;
|
|
1963
1965
|
let initModule$1 = () => { };
|
|
@@ -2170,11 +2172,8 @@ function watchClosedStream(writableSource) {
|
|
|
2170
2172
|
return { writable, closed };
|
|
2171
2173
|
}
|
|
2172
2174
|
|
|
2173
|
-
function getWebWorker(url, baseURI, workerData, isModuleType
|
|
2175
|
+
function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
|
|
2174
2176
|
let worker, resolvedURI, resolvedOptions;
|
|
2175
|
-
if (isModuleType) {
|
|
2176
|
-
resolvedOptions = { type: "module" };
|
|
2177
|
-
}
|
|
2178
2177
|
if (webWorkerURI === UNDEFINED_VALUE) {
|
|
2179
2178
|
// deno-lint-ignore valid-typeof
|
|
2180
2179
|
const isFunctionURI = typeof url == FUNCTION_TYPE;
|
|
@@ -2186,6 +2185,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
2186
2185
|
const isDataURI = resolvedURI.startsWith("data:");
|
|
2187
2186
|
const isBlobURI = resolvedURI.startsWith("blob:");
|
|
2188
2187
|
if (isDataURI || isBlobURI) {
|
|
2188
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2189
|
+
isModuleType = false;
|
|
2190
|
+
}
|
|
2191
|
+
if (isModuleType) {
|
|
2192
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2193
|
+
}
|
|
2189
2194
|
try {
|
|
2190
2195
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2191
2196
|
} catch (error) {
|
|
@@ -2205,6 +2210,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
2205
2210
|
}
|
|
2206
2211
|
}
|
|
2207
2212
|
} else {
|
|
2213
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2214
|
+
isModuleType = true;
|
|
2215
|
+
}
|
|
2216
|
+
if (isModuleType) {
|
|
2217
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2218
|
+
}
|
|
2208
2219
|
try {
|
|
2209
2220
|
resolvedURI = new URL(resolvedURI, baseURI);
|
|
2210
2221
|
} catch {
|
|
@@ -2214,7 +2225,7 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
|
|
|
2214
2225
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2215
2226
|
} catch (error) {
|
|
2216
2227
|
if (!isModuleType) {
|
|
2217
|
-
return getWebWorker(url, baseURI, workerData,
|
|
2228
|
+
return getWebWorker(url, baseURI, workerData, false, useBlobURI);
|
|
2218
2229
|
} else {
|
|
2219
2230
|
throw error;
|
|
2220
2231
|
}
|
|
@@ -4888,7 +4899,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4888
4899
|
let writingBufferedEntryData;
|
|
4889
4900
|
let writingEntryData;
|
|
4890
4901
|
let fileWriter;
|
|
4891
|
-
let blobPromise;
|
|
4892
4902
|
files.set(name, fileEntry);
|
|
4893
4903
|
try {
|
|
4894
4904
|
let lockPreviousFileEntry;
|
|
@@ -4897,7 +4907,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4897
4907
|
requestLockCurrentFileEntry();
|
|
4898
4908
|
}
|
|
4899
4909
|
if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
|
|
4900
|
-
fileWriter = new TransformStream();
|
|
4910
|
+
fileWriter = new TransformStream(undefined, undefined, { highWaterMark: Infinity });
|
|
4901
4911
|
fileWriter.size = 0;
|
|
4902
4912
|
bufferedWrite = true;
|
|
4903
4913
|
zipWriter.bufferedWrites++;
|
|
@@ -4928,20 +4938,20 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4928
4938
|
await skipDiskIfNeeded(writable);
|
|
4929
4939
|
}
|
|
4930
4940
|
const { diskNumber } = writer;
|
|
4931
|
-
writingEntryData = true;
|
|
4932
4941
|
fileEntry.diskNumberStart = diskNumber;
|
|
4933
|
-
if (bufferedWrite) {
|
|
4934
|
-
|
|
4935
|
-
} else {
|
|
4942
|
+
if (!bufferedWrite) {
|
|
4943
|
+
writingEntryData = true;
|
|
4936
4944
|
await writeData(fileWriter, localHeaderArray);
|
|
4937
4945
|
}
|
|
4938
4946
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
4939
4947
|
const { zip64 } = fileEntry;
|
|
4940
|
-
|
|
4948
|
+
if (!bufferedWrite) {
|
|
4949
|
+
writingEntryData = false;
|
|
4950
|
+
}
|
|
4941
4951
|
files.set(name, fileEntry);
|
|
4942
4952
|
fileEntry.filename = name;
|
|
4943
4953
|
if (bufferedWrite) {
|
|
4944
|
-
|
|
4954
|
+
await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
|
|
4945
4955
|
await requestLockWriter();
|
|
4946
4956
|
writingBufferedEntryData = true;
|
|
4947
4957
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
@@ -4952,7 +4962,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4952
4962
|
updateLocalHeader(fileEntry, localHeaderView, options);
|
|
4953
4963
|
await skipDiskIfNeeded(writable);
|
|
4954
4964
|
await writeData(writer, localHeaderArray);
|
|
4955
|
-
await
|
|
4965
|
+
await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
|
|
4956
4966
|
writer.size += fileWriter.size;
|
|
4957
4967
|
writingBufferedEntryData = false;
|
|
4958
4968
|
} else {
|
|
@@ -4967,7 +4977,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
4967
4977
|
zipWriter.offset += fileEntry.size;
|
|
4968
4978
|
return fileEntry;
|
|
4969
4979
|
} catch (error) {
|
|
4970
|
-
if (
|
|
4980
|
+
if (writingBufferedEntryData || writingEntryData) {
|
|
4971
4981
|
zipWriter.hasCorruptedEntries = true;
|
|
4972
4982
|
if (error) {
|
|
4973
4983
|
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
|
*
|