@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/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
- if (responseSupportsGlobalReadable()) {
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 new Response(reader.readable).blob());
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
- new Response(writer.readable).arrayBuffer(),
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 = crypto.randomUUID();
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 = new Response(transformStream.readable).blob();
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 = crypto.randomUUID();
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
  }