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