@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-fs.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;
|
|
@@ -3239,7 +3264,6 @@
|
|
|
3239
3264
|
const HTTP_HEADER_CONTENT_RANGE = "Content-Range";
|
|
3240
3265
|
const HTTP_HEADER_ACCEPT_RANGES = "Accept-Ranges";
|
|
3241
3266
|
const HTTP_HEADER_RANGE = "Range";
|
|
3242
|
-
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
3243
3267
|
const HTTP_HEADER_ETAG = "Etag";
|
|
3244
3268
|
const HTTP_HEADER_LAST_MODIFIED = "Last-Modified";
|
|
3245
3269
|
const HTTP_METHOD_HEAD = "HEAD";
|
|
@@ -3444,10 +3468,6 @@
|
|
|
3444
3468
|
}
|
|
3445
3469
|
}
|
|
3446
3470
|
|
|
3447
|
-
function responseSupportsGlobalReadable() {
|
|
3448
|
-
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
3449
|
-
}
|
|
3450
|
-
|
|
3451
3471
|
class BlobWriter extends Stream {
|
|
3452
3472
|
|
|
3453
3473
|
constructor(contentType) {
|
|
@@ -3459,22 +3479,7 @@
|
|
|
3459
3479
|
return transformStream.writable;
|
|
3460
3480
|
}
|
|
3461
3481
|
});
|
|
3462
|
-
|
|
3463
|
-
const headers = [];
|
|
3464
|
-
if (contentType) {
|
|
3465
|
-
headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]);
|
|
3466
|
-
}
|
|
3467
|
-
writer.blob = new Response(transformStream.readable, { headers }).blob();
|
|
3468
|
-
} else {
|
|
3469
|
-
const chunks = [];
|
|
3470
|
-
writer.blob = transformStream.readable
|
|
3471
|
-
.pipeTo(new WritableStream({
|
|
3472
|
-
write(chunk) {
|
|
3473
|
-
chunks.push(chunk);
|
|
3474
|
-
}
|
|
3475
|
-
}))
|
|
3476
|
-
.then(() => new Blob(chunks, { type: contentType }));
|
|
3477
|
-
}
|
|
3482
|
+
writer.blob = streamToBlob(transformStream.readable, contentType);
|
|
3478
3483
|
writer.blob.catch(() => { });
|
|
3479
3484
|
}
|
|
3480
3485
|
|
|
@@ -4548,7 +4553,7 @@
|
|
|
4548
4553
|
const { config } = zipReader;
|
|
4549
4554
|
await initStream(reader);
|
|
4550
4555
|
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
4551
|
-
reader = new BlobReader(await
|
|
4556
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
4552
4557
|
await initStream(reader);
|
|
4553
4558
|
}
|
|
4554
4559
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
@@ -4817,7 +4822,7 @@
|
|
|
4817
4822
|
entry.arrayBuffer = async options => {
|
|
4818
4823
|
const writer = new TransformStream();
|
|
4819
4824
|
const [arrayBuffer] = await Promise.all([
|
|
4820
|
-
|
|
4825
|
+
streamToBlob(writer.readable).then(blob => blob.arrayBuffer()),
|
|
4821
4826
|
fileEntry.getData(writer, entry, zipReader.readRanges, options)]);
|
|
4822
4827
|
return arrayBuffer;
|
|
4823
4828
|
};
|
|
@@ -7625,7 +7630,7 @@
|
|
|
7625
7630
|
|
|
7626
7631
|
async function spillToFile() {
|
|
7627
7632
|
const directoryHandle = await getTempDirectory();
|
|
7628
|
-
fileName =
|
|
7633
|
+
fileName = getRandomFileName$1();
|
|
7629
7634
|
fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7630
7635
|
fileWriter = (await fileHandle.createWritable()).getWriter();
|
|
7631
7636
|
spilled = true;
|
|
@@ -7706,6 +7711,13 @@
|
|
|
7706
7711
|
};
|
|
7707
7712
|
}
|
|
7708
7713
|
|
|
7714
|
+
function getRandomFileName$1() {
|
|
7715
|
+
if (crypto.randomUUID) {
|
|
7716
|
+
return crypto.randomUUID();
|
|
7717
|
+
}
|
|
7718
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7719
|
+
}
|
|
7720
|
+
|
|
7709
7721
|
/*
|
|
7710
7722
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7711
7723
|
|
|
@@ -7749,7 +7761,7 @@
|
|
|
7749
7761
|
|
|
7750
7762
|
async function spillToBlob() {
|
|
7751
7763
|
const transformStream = new TransformStream();
|
|
7752
|
-
blobPromise =
|
|
7764
|
+
blobPromise = streamToBlob(transformStream.readable);
|
|
7753
7765
|
blobWriter = transformStream.writable.getWriter();
|
|
7754
7766
|
spilled = true;
|
|
7755
7767
|
for (const chunk of memoryChunks) {
|
|
@@ -7889,7 +7901,7 @@
|
|
|
7889
7901
|
|
|
7890
7902
|
async function spillToFile() {
|
|
7891
7903
|
const directoryHandle = await getTempDirectory();
|
|
7892
|
-
fileName =
|
|
7904
|
+
fileName = getRandomFileName();
|
|
7893
7905
|
const fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7894
7906
|
accessHandle = await fileHandle.createSyncAccessHandle();
|
|
7895
7907
|
spilled = true;
|
|
@@ -7969,6 +7981,13 @@
|
|
|
7969
7981
|
};
|
|
7970
7982
|
}
|
|
7971
7983
|
|
|
7984
|
+
function getRandomFileName() {
|
|
7985
|
+
if (crypto.randomUUID) {
|
|
7986
|
+
return crypto.randomUUID();
|
|
7987
|
+
}
|
|
7988
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7989
|
+
}
|
|
7990
|
+
|
|
7972
7991
|
/*
|
|
7973
7992
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7974
7993
|
|
|
@@ -8547,7 +8566,7 @@
|
|
|
8547
8566
|
await Promise.all([initStream(reader), initStream(writer, uncompressedSize)]);
|
|
8548
8567
|
const { readable } = reader;
|
|
8549
8568
|
zipEntry.uncompressedSize = reader.size;
|
|
8550
|
-
await readable.pipeTo(writer.writable);
|
|
8569
|
+
await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable));
|
|
8551
8570
|
return writer.getData ? writer.getData() : writer.writable;
|
|
8552
8571
|
}
|
|
8553
8572
|
}
|