@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
|
@@ -1901,6 +1901,8 @@ function getInt32(number) {
|
|
|
1901
1901
|
*/
|
|
1902
1902
|
|
|
1903
1903
|
|
|
1904
|
+
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
1905
|
+
|
|
1904
1906
|
function toCompatibleReadable(readable) {
|
|
1905
1907
|
if (readable instanceof ReadableStream) {
|
|
1906
1908
|
return readable;
|
|
@@ -1921,6 +1923,29 @@ function toCompatibleReadable(readable) {
|
|
|
1921
1923
|
});
|
|
1922
1924
|
}
|
|
1923
1925
|
|
|
1926
|
+
function streamToBlob(readable, contentType) {
|
|
1927
|
+
readable = toCompatibleReadable(readable);
|
|
1928
|
+
if (responseSupportsGlobalReadable()) {
|
|
1929
|
+
const options = {};
|
|
1930
|
+
if (contentType) {
|
|
1931
|
+
options.headers = [[HTTP_HEADER_CONTENT_TYPE, contentType]];
|
|
1932
|
+
}
|
|
1933
|
+
return new Response(readable, options).blob();
|
|
1934
|
+
}
|
|
1935
|
+
const chunks = [];
|
|
1936
|
+
return readable
|
|
1937
|
+
.pipeTo(new WritableStream({
|
|
1938
|
+
write(chunk) {
|
|
1939
|
+
chunks.push(chunk);
|
|
1940
|
+
}
|
|
1941
|
+
}))
|
|
1942
|
+
.then(() => new Blob(chunks, contentType ? { type: contentType } : {}));
|
|
1943
|
+
}
|
|
1944
|
+
|
|
1945
|
+
function responseSupportsGlobalReadable() {
|
|
1946
|
+
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
1947
|
+
}
|
|
1948
|
+
|
|
1924
1949
|
function toCompatibleWritable(writable) {
|
|
1925
1950
|
if (writable instanceof WritableStream) {
|
|
1926
1951
|
return writable;
|
|
@@ -3264,7 +3289,6 @@ const HTTP_HEADER_CONTENT_ENCODING = "Content-Encoding";
|
|
|
3264
3289
|
const HTTP_HEADER_CONTENT_RANGE = "Content-Range";
|
|
3265
3290
|
const HTTP_HEADER_ACCEPT_RANGES = "Accept-Ranges";
|
|
3266
3291
|
const HTTP_HEADER_RANGE = "Range";
|
|
3267
|
-
const HTTP_HEADER_CONTENT_TYPE = "Content-Type";
|
|
3268
3292
|
const HTTP_HEADER_ETAG = "Etag";
|
|
3269
3293
|
const HTTP_HEADER_LAST_MODIFIED = "Last-Modified";
|
|
3270
3294
|
const HTTP_METHOD_HEAD = "HEAD";
|
|
@@ -3469,10 +3493,6 @@ class BlobReader extends Reader {
|
|
|
3469
3493
|
}
|
|
3470
3494
|
}
|
|
3471
3495
|
|
|
3472
|
-
function responseSupportsGlobalReadable() {
|
|
3473
|
-
return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
|
|
3474
|
-
}
|
|
3475
|
-
|
|
3476
3496
|
class BlobWriter extends Stream {
|
|
3477
3497
|
|
|
3478
3498
|
constructor(contentType) {
|
|
@@ -3484,22 +3504,7 @@ class BlobWriter extends Stream {
|
|
|
3484
3504
|
return transformStream.writable;
|
|
3485
3505
|
}
|
|
3486
3506
|
});
|
|
3487
|
-
|
|
3488
|
-
const headers = [];
|
|
3489
|
-
if (contentType) {
|
|
3490
|
-
headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]);
|
|
3491
|
-
}
|
|
3492
|
-
writer.blob = new Response(transformStream.readable, { headers }).blob();
|
|
3493
|
-
} else {
|
|
3494
|
-
const chunks = [];
|
|
3495
|
-
writer.blob = transformStream.readable
|
|
3496
|
-
.pipeTo(new WritableStream({
|
|
3497
|
-
write(chunk) {
|
|
3498
|
-
chunks.push(chunk);
|
|
3499
|
-
}
|
|
3500
|
-
}))
|
|
3501
|
-
.then(() => new Blob(chunks, { type: contentType }));
|
|
3502
|
-
}
|
|
3507
|
+
writer.blob = streamToBlob(transformStream.readable, contentType);
|
|
3503
3508
|
writer.blob.catch(() => { });
|
|
3504
3509
|
}
|
|
3505
3510
|
|
|
@@ -4573,7 +4578,7 @@ class ZipReader {
|
|
|
4573
4578
|
const { config } = zipReader;
|
|
4574
4579
|
await initStream(reader);
|
|
4575
4580
|
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
4576
|
-
reader = new BlobReader(await
|
|
4581
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
4577
4582
|
await initStream(reader);
|
|
4578
4583
|
}
|
|
4579
4584
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
@@ -4842,7 +4847,7 @@ class ZipReader {
|
|
|
4842
4847
|
entry.arrayBuffer = async options => {
|
|
4843
4848
|
const writer = new TransformStream();
|
|
4844
4849
|
const [arrayBuffer] = await Promise.all([
|
|
4845
|
-
|
|
4850
|
+
streamToBlob(writer.readable).then(blob => blob.arrayBuffer()),
|
|
4846
4851
|
fileEntry.getData(writer, entry, zipReader.readRanges, options)]);
|
|
4847
4852
|
return arrayBuffer;
|
|
4848
4853
|
};
|
|
@@ -7650,7 +7655,7 @@ function createOPFSTempStream(options = {}) {
|
|
|
7650
7655
|
|
|
7651
7656
|
async function spillToFile() {
|
|
7652
7657
|
const directoryHandle = await getTempDirectory();
|
|
7653
|
-
fileName =
|
|
7658
|
+
fileName = getRandomFileName$1();
|
|
7654
7659
|
fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7655
7660
|
fileWriter = (await fileHandle.createWritable()).getWriter();
|
|
7656
7661
|
spilled = true;
|
|
@@ -7731,6 +7736,13 @@ function createOPFSTempStream(options = {}) {
|
|
|
7731
7736
|
};
|
|
7732
7737
|
}
|
|
7733
7738
|
|
|
7739
|
+
function getRandomFileName$1() {
|
|
7740
|
+
if (crypto.randomUUID) {
|
|
7741
|
+
return crypto.randomUUID();
|
|
7742
|
+
}
|
|
7743
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
7744
|
+
}
|
|
7745
|
+
|
|
7734
7746
|
/*
|
|
7735
7747
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7736
7748
|
|
|
@@ -7774,7 +7786,7 @@ function createBlobTempStream(options = {}) {
|
|
|
7774
7786
|
|
|
7775
7787
|
async function spillToBlob() {
|
|
7776
7788
|
const transformStream = new TransformStream();
|
|
7777
|
-
blobPromise =
|
|
7789
|
+
blobPromise = streamToBlob(transformStream.readable);
|
|
7778
7790
|
blobWriter = transformStream.writable.getWriter();
|
|
7779
7791
|
spilled = true;
|
|
7780
7792
|
for (const chunk of memoryChunks) {
|
|
@@ -7914,7 +7926,7 @@ function createSyncAccessHandleTempStream(options = {}) {
|
|
|
7914
7926
|
|
|
7915
7927
|
async function spillToFile() {
|
|
7916
7928
|
const directoryHandle = await getTempDirectory();
|
|
7917
|
-
fileName =
|
|
7929
|
+
fileName = getRandomFileName();
|
|
7918
7930
|
const fileHandle = await directoryHandle.getFileHandle(fileName, { create: true });
|
|
7919
7931
|
accessHandle = await fileHandle.createSyncAccessHandle();
|
|
7920
7932
|
spilled = true;
|
|
@@ -7994,6 +8006,13 @@ function createSyncAccessHandleTempStream(options = {}) {
|
|
|
7994
8006
|
};
|
|
7995
8007
|
}
|
|
7996
8008
|
|
|
8009
|
+
function getRandomFileName() {
|
|
8010
|
+
if (crypto.randomUUID) {
|
|
8011
|
+
return crypto.randomUUID();
|
|
8012
|
+
}
|
|
8013
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(16)), byteValue => byteValue.toString(16).padStart(2, "0")).join("");
|
|
8014
|
+
}
|
|
8015
|
+
|
|
7997
8016
|
/*
|
|
7998
8017
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
7999
8018
|
|
|
@@ -8544,7 +8563,7 @@ class ZipFileEntry extends ZipEntry {
|
|
|
8544
8563
|
await Promise.all([initStream(reader), initStream(writer, uncompressedSize)]);
|
|
8545
8564
|
const { readable } = reader;
|
|
8546
8565
|
zipEntry.uncompressedSize = reader.size;
|
|
8547
|
-
await readable.pipeTo(writer.writable);
|
|
8566
|
+
await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable));
|
|
8548
8567
|
return writer.getData ? writer.getData() : writer.writable;
|
|
8549
8568
|
}
|
|
8550
8569
|
}
|