@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-native.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;
|
|
@@ -3229,7 +3254,6 @@ const HTTP_HEADER_CONTENT_ENCODING = "Content-Encoding";
|
|
|
3229
3254
|
const HTTP_HEADER_CONTENT_RANGE = "Content-Range";
|
|
3230
3255
|
const HTTP_HEADER_ACCEPT_RANGES = "Accept-Ranges";
|
|
3231
3256
|
const HTTP_HEADER_RANGE = "Range";
|
|
3232
|
-
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
3233
3257
|
const HTTP_HEADER_ETAG = "Etag";
|
|
3234
3258
|
const HTTP_HEADER_LAST_MODIFIED = "Last-Modified";
|
|
3235
3259
|
const HTTP_METHOD_HEAD = "HEAD";
|
|
@@ -3434,10 +3458,6 @@ class BlobReader extends Reader {
|
|
|
3434
3458
|
}
|
|
3435
3459
|
}
|
|
3436
3460
|
|
|
3437
|
-
function responseSupportsGlobalReadable() {
|
|
3438
|
-
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
3439
|
-
}
|
|
3440
|
-
|
|
3441
3461
|
class BlobWriter extends Stream {
|
|
3442
3462
|
|
|
3443
3463
|
constructor(contentType) {
|
|
@@ -3449,22 +3469,7 @@ class BlobWriter extends Stream {
|
|
|
3449
3469
|
return transformStream.writable;
|
|
3450
3470
|
}
|
|
3451
3471
|
});
|
|
3452
|
-
|
|
3453
|
-
const headers = [];
|
|
3454
|
-
if (contentType) {
|
|
3455
|
-
headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]);
|
|
3456
|
-
}
|
|
3457
|
-
writer.blob = new Response(transformStream.readable, { headers }).blob();
|
|
3458
|
-
} else {
|
|
3459
|
-
const chunks = [];
|
|
3460
|
-
writer.blob = transformStream.readable
|
|
3461
|
-
.pipeTo(new WritableStream({
|
|
3462
|
-
write(chunk) {
|
|
3463
|
-
chunks.push(chunk);
|
|
3464
|
-
}
|
|
3465
|
-
}))
|
|
3466
|
-
.then(() => new Blob(chunks, { type: contentType }));
|
|
3467
|
-
}
|
|
3472
|
+
writer.blob = streamToBlob(transformStream.readable, contentType);
|
|
3468
3473
|
writer.blob.catch(() => { });
|
|
3469
3474
|
}
|
|
3470
3475
|
|
|
@@ -4538,7 +4543,7 @@ class ZipReader {
|
|
|
4538
4543
|
const { config } = zipReader;
|
|
4539
4544
|
await initStream(reader);
|
|
4540
4545
|
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
4541
|
-
reader = new BlobReader(await
|
|
4546
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
4542
4547
|
await initStream(reader);
|
|
4543
4548
|
}
|
|
4544
4549
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
@@ -4807,7 +4812,7 @@ class ZipReader {
|
|
|
4807
4812
|
entry.arrayBuffer = async options => {
|
|
4808
4813
|
const writer = new TransformStream();
|
|
4809
4814
|
const [arrayBuffer] = await Promise.all([
|
|
4810
|
-
|
|
4815
|
+
streamToBlob(writer.readable).then(blob => blob.arrayBuffer()),
|
|
4811
4816
|
fileEntry.getData(writer, entry, zipReader.readRanges, options)]);
|
|
4812
4817
|
return arrayBuffer;
|
|
4813
4818
|
};
|
|
@@ -7615,7 +7620,7 @@ function createOPFSTempStream(options = {}) {
|
|
|
7615
7620
|
|
|
7616
7621
|
async function spillToFile() {
|
|
7617
7622
|
const directoryHandle = await getTempDirectory();
|
|
7618
|
-
fileName =
|
|
7623
|
+
fileName = getRandomFileName$1();
|
|
7619
7624
|
fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7620
7625
|
fileWriter = (await fileHandle.createWritable()).getWriter();
|
|
7621
7626
|
spilled = true;
|
|
@@ -7696,6 +7701,13 @@ function createOPFSTempStream(options = {}) {
|
|
|
7696
7701
|
};
|
|
7697
7702
|
}
|
|
7698
7703
|
|
|
7704
|
+
function getRandomFileName$1() {
|
|
7705
|
+
if (crypto.randomUUID) {
|
|
7706
|
+
return crypto.randomUUID();
|
|
7707
|
+
}
|
|
7708
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7709
|
+
}
|
|
7710
|
+
|
|
7699
7711
|
/*
|
|
7700
7712
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7701
7713
|
|
|
@@ -7739,7 +7751,7 @@ function createBlobTempStream(options = {}) {
|
|
|
7739
7751
|
|
|
7740
7752
|
async function spillToBlob() {
|
|
7741
7753
|
const transformStream = new TransformStream();
|
|
7742
|
-
blobPromise =
|
|
7754
|
+
blobPromise = streamToBlob(transformStream.readable);
|
|
7743
7755
|
blobWriter = transformStream.writable.getWriter();
|
|
7744
7756
|
spilled = true;
|
|
7745
7757
|
for (const chunk of memoryChunks) {
|
|
@@ -7879,7 +7891,7 @@ function createSyncAccessHandleTempStream(options = {}) {
|
|
|
7879
7891
|
|
|
7880
7892
|
async function spillToFile() {
|
|
7881
7893
|
const directoryHandle = await getTempDirectory();
|
|
7882
|
-
fileName =
|
|
7894
|
+
fileName = getRandomFileName();
|
|
7883
7895
|
const fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7884
7896
|
accessHandle = await fileHandle.createSyncAccessHandle();
|
|
7885
7897
|
spilled = true;
|
|
@@ -7959,6 +7971,13 @@ function createSyncAccessHandleTempStream(options = {}) {
|
|
|
7959
7971
|
};
|
|
7960
7972
|
}
|
|
7961
7973
|
|
|
7974
|
+
function getRandomFileName() {
|
|
7975
|
+
if (crypto.randomUUID) {
|
|
7976
|
+
return crypto.randomUUID();
|
|
7977
|
+
}
|
|
7978
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7979
|
+
}
|
|
7980
|
+
|
|
7962
7981
|
/*
|
|
7963
7982
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7964
7983
|
|
|
@@ -8172,7 +8191,7 @@ class ZipFileEntry extends ZipEntry {
|
|
|
8172
8191
|
await Promise.all([initStream(reader), initStream(writer, uncompressedSize)]);
|
|
8173
8192
|
const { readable } = reader;
|
|
8174
8193
|
zipEntry.uncompressedSize = reader.size;
|
|
8175
|
-
await readable.pipeTo(writer.writable);
|
|
8194
|
+
await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable));
|
|
8176
8195
|
return writer.getData ? writer.getData() : writer.writable;
|
|
8177
8196
|
}
|
|
8178
8197
|
}
|