@zip.js/zip.js 2.8.17 → 2.8.18

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.
@@ -44,6 +44,8 @@ import {
44
44
  MESSAGE_CLOSE
45
45
  } from "./streams/codec-stream.js";
46
46
 
47
+ const MODULE_WORKER_OPTIONS = { type: "module" };
48
+
47
49
  let webWorkerSupported, webWorkerURI, webWorkerOptions;
48
50
  let transferStreamsSupported = true;
49
51
  let initModule = () => { };
@@ -261,11 +263,8 @@ function watchClosedStream(writableSource) {
261
263
  return { writable, closed };
262
264
  }
263
265
 
264
- function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI = true) {
266
+ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
265
267
  let worker, resolvedURI, resolvedOptions;
266
- if (isModuleType) {
267
- resolvedOptions = { type: "module" };
268
- }
269
268
  if (webWorkerURI === UNDEFINED_VALUE) {
270
269
  // deno-lint-ignore valid-typeof
271
270
  const isFunctionURI = typeof url == FUNCTION_TYPE;
@@ -277,6 +276,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
277
276
  const isDataURI = resolvedURI.startsWith("data:");
278
277
  const isBlobURI = resolvedURI.startsWith("blob:");
279
278
  if (isDataURI || isBlobURI) {
279
+ if (isModuleType === UNDEFINED_VALUE) {
280
+ isModuleType = false;
281
+ }
282
+ if (isModuleType) {
283
+ resolvedOptions = MODULE_WORKER_OPTIONS;
284
+ }
280
285
  try {
281
286
  worker = new Worker(resolvedURI, resolvedOptions);
282
287
  } catch (error) {
@@ -296,6 +301,12 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
296
301
  }
297
302
  }
298
303
  } else {
304
+ if (isModuleType === UNDEFINED_VALUE) {
305
+ isModuleType = true;
306
+ }
307
+ if (isModuleType) {
308
+ resolvedOptions = MODULE_WORKER_OPTIONS;
309
+ }
299
310
  try {
300
311
  resolvedURI = new URL(resolvedURI, baseURI);
301
312
  } catch {
@@ -305,7 +316,7 @@ function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI
305
316
  worker = new Worker(resolvedURI, resolvedOptions);
306
317
  } catch (error) {
307
318
  if (!isModuleType) {
308
- return getWebWorker(url, baseURI, workerData, true, useBlobURI);
319
+ return getWebWorker(url, baseURI, workerData, false, useBlobURI);
309
320
  } else {
310
321
  throw error;
311
322
  }
@@ -48,6 +48,7 @@ const OPTION_EXTENDED_TIMESTAMP = "extendedTimestamp";
48
48
  const OPTION_KEEP_ORDER = "keepOrder";
49
49
  const OPTION_LEVEL = "level";
50
50
  const OPTION_BUFFERED_WRITE = "bufferedWrite";
51
+ const OPTION_CREATE_TEMP_STREAM = "createTempStream";
51
52
  const OPTION_DATA_DESCRIPTOR_SIGNATURE = "dataDescriptorSignature";
52
53
  const OPTION_USE_UNICODE_FILE_NAMES = "useUnicodeFileNames";
53
54
  const OPTION_DATA_DESCRIPTOR = "dataDescriptor";
@@ -80,6 +81,7 @@ export {
80
81
  OPTION_KEEP_ORDER,
81
82
  OPTION_LEVEL,
82
83
  OPTION_BUFFERED_WRITE,
84
+ OPTION_CREATE_TEMP_STREAM,
83
85
  OPTION_DATA_DESCRIPTOR_SIGNATURE,
84
86
  OPTION_USE_UNICODE_FILE_NAMES,
85
87
  OPTION_DATA_DESCRIPTOR,
@@ -26,7 +26,7 @@
26
26
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
28
 
29
- /* global TransformStream, Response */
29
+ /* global TransformStream */
30
30
  // deno-lint-ignore-file no-this-alias
31
31
 
32
32
  import {
@@ -701,7 +701,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
701
701
  let writingBufferedEntryData;
702
702
  let writingEntryData;
703
703
  let fileWriter;
704
- let blobPromise;
705
704
  files.set(name, fileEntry);
706
705
  try {
707
706
  let lockPreviousFileEntry;
@@ -710,7 +709,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
710
709
  requestLockCurrentFileEntry();
711
710
  }
712
711
  if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
713
- fileWriter = new TransformStream();
712
+ fileWriter = new TransformStream(undefined, undefined, { highWaterMark: Infinity });
714
713
  fileWriter.size = 0;
715
714
  bufferedWrite = true;
716
715
  zipWriter.bufferedWrites++;
@@ -741,20 +740,20 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
741
740
  await skipDiskIfNeeded(writable);
742
741
  }
743
742
  const { diskNumber } = writer;
744
- writingEntryData = true;
745
743
  fileEntry.diskNumberStart = diskNumber;
746
- if (bufferedWrite) {
747
- blobPromise = new Response(fileWriter.readable).blob();
748
- } else {
744
+ if (!bufferedWrite) {
745
+ writingEntryData = true;
749
746
  await writeData(fileWriter, localHeaderArray);
750
747
  }
751
748
  fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
752
749
  const { zip64 } = fileEntry;
753
- writingEntryData = false;
750
+ if (!bufferedWrite) {
751
+ writingEntryData = false;
752
+ }
754
753
  files.set(name, fileEntry);
755
754
  fileEntry.filename = name;
756
755
  if (bufferedWrite) {
757
- const [blob] = await Promise.all([blobPromise, fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
756
+ await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
758
757
  await requestLockWriter();
759
758
  writingBufferedEntryData = true;
760
759
  fileEntry.diskNumberStart = writer.diskNumber;
@@ -765,7 +764,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
765
764
  updateLocalHeader(fileEntry, localHeaderView, options);
766
765
  await skipDiskIfNeeded(writable);
767
766
  await writeData(writer, localHeaderArray);
768
- await blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal });
767
+ await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
769
768
  writer.size += fileWriter.size;
770
769
  writingBufferedEntryData = false;
771
770
  } else {
@@ -780,7 +779,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
780
779
  zipWriter.offset += fileEntry.size;
781
780
  return fileEntry;
782
781
  } catch (error) {
783
- if ((bufferedWrite && writingBufferedEntryData) || (!bufferedWrite && writingEntryData)) {
782
+ if (writingBufferedEntryData || writingEntryData) {
784
783
  zipWriter.hasCorruptedEntries = true;
785
784
  if (error) {
786
785
  try {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "A JavaScript library to zip and unzip files in the browser, Deno and Node.js",
4
4
  "author": "Gildas Lormeau",
5
5
  "license": "BSD-3-Clause",
6
- "version": "2.8.17",
6
+ "version": "2.8.18",
7
7
  "type": "module",
8
8
  "keywords": [
9
9
  "zip",
@@ -156,11 +156,11 @@
156
156
  "devDependencies": {
157
157
  "@rollup/plugin-replace": "^6.0.3",
158
158
  "@rollup/plugin-terser": "^0.4.4",
159
- "eslint": "^9.39.2",
159
+ "eslint": "^10.0.0",
160
160
  "http-server": "^14.1.1",
161
161
  "rollup": "^4.57.1",
162
162
  "typedoc": "^0.28.16",
163
- "typedoc-plugin-markdown": "^4.9.0"
163
+ "typedoc-plugin-markdown": "^4.10.0"
164
164
  },
165
165
  "dependencies": {
166
166
  "web-worker": "^1.5.0"