@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/index.cjs
CHANGED
|
@@ -1870,6 +1870,8 @@ function getInt32(number) {
|
|
|
1870
1870
|
*/
|
|
1871
1871
|
|
|
1872
1872
|
|
|
1873
|
+
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
1874
|
+
|
|
1873
1875
|
function toCompatibleReadable(readable) {
|
|
1874
1876
|
if (readable instanceof ReadableStream) {
|
|
1875
1877
|
return readable;
|
|
@@ -1890,6 +1892,29 @@ function toCompatibleReadable(readable) {
|
|
|
1890
1892
|
});
|
|
1891
1893
|
}
|
|
1892
1894
|
|
|
1895
|
+
function streamToBlob(readable, contentType) {
|
|
1896
|
+
readable = toCompatibleReadable(readable);
|
|
1897
|
+
if (responseSupportsGlobalReadable()) {
|
|
1898
|
+
const options = {};
|
|
1899
|
+
if (contentType) {
|
|
1900
|
+
options.headers = [[HTTP_HEADER_CONTENT_TYPE, contentType]];
|
|
1901
|
+
}
|
|
1902
|
+
return new Response(readable, options).blob();
|
|
1903
|
+
}
|
|
1904
|
+
const chunks = [];
|
|
1905
|
+
return readable
|
|
1906
|
+
.pipeTo(new WritableStream({
|
|
1907
|
+
write(chunk) {
|
|
1908
|
+
chunks.push(chunk);
|
|
1909
|
+
}
|
|
1910
|
+
}))
|
|
1911
|
+
.then(() => new Blob(chunks, contentType ? { type: contentType } : {}));
|
|
1912
|
+
}
|
|
1913
|
+
|
|
1914
|
+
function responseSupportsGlobalReadable() {
|
|
1915
|
+
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1893
1918
|
function toCompatibleWritable(writable) {
|
|
1894
1919
|
if (writable instanceof WritableStream) {
|
|
1895
1920
|
return writable;
|
|
@@ -3233,7 +3258,6 @@ const HTTP_HEADER_CONTENT_ENCODING = "Content-Encoding";
|
|
|
3233
3258
|
const HTTP_HEADER_CONTENT_RANGE = "Content-Range";
|
|
3234
3259
|
const HTTP_HEADER_ACCEPT_RANGES = "Accept-Ranges";
|
|
3235
3260
|
const HTTP_HEADER_RANGE = "Range";
|
|
3236
|
-
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
3237
3261
|
const HTTP_HEADER_ETAG = "Etag";
|
|
3238
3262
|
const HTTP_HEADER_LAST_MODIFIED = "Last-Modified";
|
|
3239
3263
|
const HTTP_METHOD_HEAD = "HEAD";
|
|
@@ -3438,10 +3462,6 @@ class BlobReader extends Reader {
|
|
|
3438
3462
|
}
|
|
3439
3463
|
}
|
|
3440
3464
|
|
|
3441
|
-
function responseSupportsGlobalReadable() {
|
|
3442
|
-
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
3443
|
-
}
|
|
3444
|
-
|
|
3445
3465
|
class BlobWriter extends Stream {
|
|
3446
3466
|
|
|
3447
3467
|
constructor(contentType) {
|
|
@@ -3453,22 +3473,7 @@ class BlobWriter extends Stream {
|
|
|
3453
3473
|
return transformStream.writable;
|
|
3454
3474
|
}
|
|
3455
3475
|
});
|
|
3456
|
-
|
|
3457
|
-
const headers = [];
|
|
3458
|
-
if (contentType) {
|
|
3459
|
-
headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]);
|
|
3460
|
-
}
|
|
3461
|
-
writer.blob = new Response(transformStream.readable, { headers }).blob();
|
|
3462
|
-
} else {
|
|
3463
|
-
const chunks = [];
|
|
3464
|
-
writer.blob = transformStream.readable
|
|
3465
|
-
.pipeTo(new WritableStream({
|
|
3466
|
-
write(chunk) {
|
|
3467
|
-
chunks.push(chunk);
|
|
3468
|
-
}
|
|
3469
|
-
}))
|
|
3470
|
-
.then(() => new Blob(chunks, { type: contentType }));
|
|
3471
|
-
}
|
|
3476
|
+
writer.blob = streamToBlob(transformStream.readable, contentType);
|
|
3472
3477
|
writer.blob.catch(() => { });
|
|
3473
3478
|
}
|
|
3474
3479
|
|
|
@@ -4542,7 +4547,7 @@ class ZipReader {
|
|
|
4542
4547
|
const { config } = zipReader;
|
|
4543
4548
|
await initStream(reader);
|
|
4544
4549
|
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
4545
|
-
reader = new BlobReader(await
|
|
4550
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
4546
4551
|
await initStream(reader);
|
|
4547
4552
|
}
|
|
4548
4553
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
@@ -4811,7 +4816,7 @@ class ZipReader {
|
|
|
4811
4816
|
entry.arrayBuffer = async options => {
|
|
4812
4817
|
const writer = new TransformStream();
|
|
4813
4818
|
const [arrayBuffer] = await Promise.all([
|
|
4814
|
-
|
|
4819
|
+
streamToBlob(writer.readable).then(blob => blob.arrayBuffer()),
|
|
4815
4820
|
fileEntry.getData(writer, entry, zipReader.readRanges, options)]);
|
|
4816
4821
|
return arrayBuffer;
|
|
4817
4822
|
};
|
|
@@ -7619,7 +7624,7 @@ function createOPFSTempStream(options = {}) {
|
|
|
7619
7624
|
|
|
7620
7625
|
async function spillToFile() {
|
|
7621
7626
|
const directoryHandle = await getTempDirectory();
|
|
7622
|
-
fileName =
|
|
7627
|
+
fileName = getRandomFileName$1();
|
|
7623
7628
|
fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7624
7629
|
fileWriter = (await fileHandle.createWritable()).getWriter();
|
|
7625
7630
|
spilled = true;
|
|
@@ -7700,6 +7705,13 @@ function createOPFSTempStream(options = {}) {
|
|
|
7700
7705
|
};
|
|
7701
7706
|
}
|
|
7702
7707
|
|
|
7708
|
+
function getRandomFileName$1() {
|
|
7709
|
+
if (crypto.randomUUID) {
|
|
7710
|
+
return crypto.randomUUID();
|
|
7711
|
+
}
|
|
7712
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7713
|
+
}
|
|
7714
|
+
|
|
7703
7715
|
/*
|
|
7704
7716
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7705
7717
|
|
|
@@ -7743,7 +7755,7 @@ function createBlobTempStream(options = {}) {
|
|
|
7743
7755
|
|
|
7744
7756
|
async function spillToBlob() {
|
|
7745
7757
|
const transformStream = new TransformStream();
|
|
7746
|
-
blobPromise =
|
|
7758
|
+
blobPromise = streamToBlob(transformStream.readable);
|
|
7747
7759
|
blobWriter = transformStream.writable.getWriter();
|
|
7748
7760
|
spilled = true;
|
|
7749
7761
|
for (const chunk of memoryChunks) {
|
|
@@ -7883,7 +7895,7 @@ function createSyncAccessHandleTempStream(options = {}) {
|
|
|
7883
7895
|
|
|
7884
7896
|
async function spillToFile() {
|
|
7885
7897
|
const directoryHandle = await getTempDirectory();
|
|
7886
|
-
fileName =
|
|
7898
|
+
fileName = getRandomFileName();
|
|
7887
7899
|
const fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7888
7900
|
accessHandle = await fileHandle.createSyncAccessHandle();
|
|
7889
7901
|
spilled = true;
|
|
@@ -7963,6 +7975,13 @@ function createSyncAccessHandleTempStream(options = {}) {
|
|
|
7963
7975
|
};
|
|
7964
7976
|
}
|
|
7965
7977
|
|
|
7978
|
+
function getRandomFileName() {
|
|
7979
|
+
if (crypto.randomUUID) {
|
|
7980
|
+
return crypto.randomUUID();
|
|
7981
|
+
}
|
|
7982
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7983
|
+
}
|
|
7984
|
+
|
|
7966
7985
|
/*
|
|
7967
7986
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7968
7987
|
|
|
@@ -8541,7 +8560,7 @@ class ZipFileEntry extends ZipEntry {
|
|
|
8541
8560
|
await Promise.all([initStream(reader), initStream(writer, uncompressedSize)]);
|
|
8542
8561
|
const { readable } = reader;
|
|
8543
8562
|
zipEntry.uncompressedSize = reader.size;
|
|
8544
|
-
await readable.pipeTo(writer.writable);
|
|
8563
|
+
await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable));
|
|
8545
8564
|
return writer.getData ? writer.getData() : writer.writable;
|
|
8546
8565
|
}
|
|
8547
8566
|
}
|