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