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