@zip.js/zip.js 2.8.47 → 2.8.48
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-external.js +45 -26
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +45 -26
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +46 -27
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +29 -24
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +46 -27
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +46 -27
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +46 -27
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +45 -26
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +45 -26
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +45 -26
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +46 -27
- package/index-native.min.js +1 -1
- package/index.cjs +46 -27
- package/index.min.js +1 -1
- package/lib/core/io.js +3 -23
- package/lib/core/util/blob-temp-stream.js +4 -2
- package/lib/core/util/compatible-streams.js +30 -2
- package/lib/core/util/opfs-temp-stream.js +8 -1
- package/lib/core/util/sync-access-handle-temp-stream.js +8 -1
- package/lib/core/zip-fs.js +2 -1
- package/lib/core/zip-reader.js +4 -4
- package/package.json +2 -1
package/dist/zip-legacy.js
CHANGED
|
@@ -1876,6 +1876,8 @@
|
|
|
1876
1876
|
*/
|
|
1877
1877
|
|
|
1878
1878
|
|
|
1879
|
+
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
1880
|
+
|
|
1879
1881
|
function toCompatibleReadable(readable) {
|
|
1880
1882
|
if (readable instanceof ReadableStream) {
|
|
1881
1883
|
return readable;
|
|
@@ -1896,6 +1898,29 @@
|
|
|
1896
1898
|
});
|
|
1897
1899
|
}
|
|
1898
1900
|
|
|
1901
|
+
function streamToBlob(readable, contentType) {
|
|
1902
|
+
readable = toCompatibleReadable(readable);
|
|
1903
|
+
if (responseSupportsGlobalReadable()) {
|
|
1904
|
+
const options = {};
|
|
1905
|
+
if (contentType) {
|
|
1906
|
+
options.headers = [[HTTP_HEADER_CONTENT_TYPE, contentType]];
|
|
1907
|
+
}
|
|
1908
|
+
return new Response(readable, options).blob();
|
|
1909
|
+
}
|
|
1910
|
+
const chunks = [];
|
|
1911
|
+
return readable
|
|
1912
|
+
.pipeTo(new WritableStream({
|
|
1913
|
+
write(chunk) {
|
|
1914
|
+
chunks.push(chunk);
|
|
1915
|
+
}
|
|
1916
|
+
}))
|
|
1917
|
+
.then(() => new Blob(chunks, contentType ? { type: contentType } : {}));
|
|
1918
|
+
}
|
|
1919
|
+
|
|
1920
|
+
function responseSupportsGlobalReadable() {
|
|
1921
|
+
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1899
1924
|
function toCompatibleWritable(writable) {
|
|
1900
1925
|
if (writable instanceof WritableStream) {
|
|
1901
1926
|
return writable;
|
|
@@ -3235,7 +3260,6 @@
|
|
|
3235
3260
|
const HTTP_HEADER_CONTENT_RANGE = "Content-Range";
|
|
3236
3261
|
const HTTP_HEADER_ACCEPT_RANGES = "Accept-Ranges";
|
|
3237
3262
|
const HTTP_HEADER_RANGE = "Range";
|
|
3238
|
-
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
3239
3263
|
const HTTP_HEADER_ETAG = "Etag";
|
|
3240
3264
|
const HTTP_HEADER_LAST_MODIFIED = "Last-Modified";
|
|
3241
3265
|
const HTTP_METHOD_HEAD = "HEAD";
|
|
@@ -3440,10 +3464,6 @@
|
|
|
3440
3464
|
}
|
|
3441
3465
|
}
|
|
3442
3466
|
|
|
3443
|
-
function responseSupportsGlobalReadable() {
|
|
3444
|
-
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
3445
|
-
}
|
|
3446
|
-
|
|
3447
3467
|
class BlobWriter extends Stream {
|
|
3448
3468
|
|
|
3449
3469
|
constructor(contentType) {
|
|
@@ -3455,22 +3475,7 @@
|
|
|
3455
3475
|
return transformStream.writable;
|
|
3456
3476
|
}
|
|
3457
3477
|
});
|
|
3458
|
-
|
|
3459
|
-
const headers = [];
|
|
3460
|
-
if (contentType) {
|
|
3461
|
-
headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]);
|
|
3462
|
-
}
|
|
3463
|
-
writer.blob = new Response(transformStream.readable, { headers }).blob();
|
|
3464
|
-
} else {
|
|
3465
|
-
const chunks = [];
|
|
3466
|
-
writer.blob = transformStream.readable
|
|
3467
|
-
.pipeTo(new WritableStream({
|
|
3468
|
-
write(chunk) {
|
|
3469
|
-
chunks.push(chunk);
|
|
3470
|
-
}
|
|
3471
|
-
}))
|
|
3472
|
-
.then(() => new Blob(chunks, { type: contentType }));
|
|
3473
|
-
}
|
|
3478
|
+
writer.blob = streamToBlob(transformStream.readable, contentType);
|
|
3474
3479
|
writer.blob.catch(() => { });
|
|
3475
3480
|
}
|
|
3476
3481
|
|
|
@@ -4544,7 +4549,7 @@
|
|
|
4544
4549
|
const { config } = zipReader;
|
|
4545
4550
|
await initStream(reader);
|
|
4546
4551
|
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
4547
|
-
reader = new BlobReader(await
|
|
4552
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
4548
4553
|
await initStream(reader);
|
|
4549
4554
|
}
|
|
4550
4555
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
@@ -4813,7 +4818,7 @@
|
|
|
4813
4818
|
entry.arrayBuffer = async options => {
|
|
4814
4819
|
const writer = new TransformStream();
|
|
4815
4820
|
const [arrayBuffer] = await Promise.all([
|
|
4816
|
-
|
|
4821
|
+
streamToBlob(writer.readable).then(blob => blob.arrayBuffer()),
|
|
4817
4822
|
fileEntry.getData(writer, entry, zipReader.readRanges, options)]);
|
|
4818
4823
|
return arrayBuffer;
|
|
4819
4824
|
};
|
|
@@ -7621,7 +7626,7 @@
|
|
|
7621
7626
|
|
|
7622
7627
|
async function spillToFile() {
|
|
7623
7628
|
const directoryHandle = await getTempDirectory();
|
|
7624
|
-
fileName =
|
|
7629
|
+
fileName = getRandomFileName$1();
|
|
7625
7630
|
fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7626
7631
|
fileWriter = (await fileHandle.createWritable()).getWriter();
|
|
7627
7632
|
spilled = true;
|
|
@@ -7702,6 +7707,13 @@
|
|
|
7702
7707
|
};
|
|
7703
7708
|
}
|
|
7704
7709
|
|
|
7710
|
+
function getRandomFileName$1() {
|
|
7711
|
+
if (crypto.randomUUID) {
|
|
7712
|
+
return crypto.randomUUID();
|
|
7713
|
+
}
|
|
7714
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7715
|
+
}
|
|
7716
|
+
|
|
7705
7717
|
/*
|
|
7706
7718
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7707
7719
|
|
|
@@ -7745,7 +7757,7 @@
|
|
|
7745
7757
|
|
|
7746
7758
|
async function spillToBlob() {
|
|
7747
7759
|
const transformStream = new TransformStream();
|
|
7748
|
-
blobPromise =
|
|
7760
|
+
blobPromise = streamToBlob(transformStream.readable);
|
|
7749
7761
|
blobWriter = transformStream.writable.getWriter();
|
|
7750
7762
|
spilled = true;
|
|
7751
7763
|
for (const chunk of memoryChunks) {
|
|
@@ -7885,7 +7897,7 @@
|
|
|
7885
7897
|
|
|
7886
7898
|
async function spillToFile() {
|
|
7887
7899
|
const directoryHandle = await getTempDirectory();
|
|
7888
|
-
fileName =
|
|
7900
|
+
fileName = getRandomFileName();
|
|
7889
7901
|
const fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7890
7902
|
accessHandle = await fileHandle.createSyncAccessHandle();
|
|
7891
7903
|
spilled = true;
|
|
@@ -7965,6 +7977,13 @@
|
|
|
7965
7977
|
};
|
|
7966
7978
|
}
|
|
7967
7979
|
|
|
7980
|
+
function getRandomFileName() {
|
|
7981
|
+
if (crypto.randomUUID) {
|
|
7982
|
+
return crypto.randomUUID();
|
|
7983
|
+
}
|
|
7984
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7985
|
+
}
|
|
7986
|
+
|
|
7968
7987
|
/*
|
|
7969
7988
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7970
7989
|
|