@zip.js/zip.js 2.8.17 → 2.8.19

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
  }
@@ -96,6 +96,7 @@ const MAX_DATE = new Date(2107, 11, 31);
96
96
  const MIN_DATE = new Date(1980, 0, 1);
97
97
 
98
98
  const UNDEFINED_VALUE = undefined;
99
+ const INFINITY_VALUE = Infinity;
99
100
  const UNDEFINED_TYPE = "undefined";
100
101
  const FUNCTION_TYPE = "function";
101
102
  const OBJECT_TYPE = "object";
@@ -162,6 +163,7 @@ export {
162
163
  MIN_DATE,
163
164
  MAX_DATE,
164
165
  UNDEFINED_VALUE,
166
+ INFINITY_VALUE,
165
167
  UNDEFINED_TYPE,
166
168
  FUNCTION_TYPE,
167
169
  OBJECT_TYPE
package/lib/core/io.js CHANGED
@@ -31,6 +31,7 @@
31
31
 
32
32
  import {
33
33
  UNDEFINED_VALUE,
34
+ INFINITY_VALUE,
34
35
  FUNCTION_TYPE,
35
36
  END_OF_CENTRAL_DIR_LENGTH
36
37
  } from "./constants.js";
@@ -745,8 +746,8 @@ class GenericWriter {
745
746
  Object.assign(writer, {
746
747
  diskNumber: 0,
747
748
  diskOffset: 0,
748
- availableSize: Infinity,
749
- maxSize: Infinity
749
+ availableSize: INFINITY_VALUE,
750
+ maxSize: INFINITY_VALUE
750
751
  });
751
752
  }
752
753
  return writer;
@@ -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 {
@@ -87,6 +87,7 @@ import {
87
87
  MIN_DATE,
88
88
  MAX_DATE,
89
89
  UNDEFINED_VALUE,
90
+ INFINITY_VALUE,
90
91
  OBJECT_TYPE
91
92
  } from "./constants.js";
92
93
  import {
@@ -188,8 +189,8 @@ class ZipWriter {
188
189
  constructor(writer, options = {}) {
189
190
  writer = new GenericWriter(writer);
190
191
  const addSplitZipSignature =
191
- writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== Infinity &&
192
- writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== Infinity;
192
+ writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== INFINITY_VALUE &&
193
+ writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== INFINITY_VALUE;
193
194
  Object.assign(this, {
194
195
  writer,
195
196
  addSplitZipSignature,
@@ -701,7 +702,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
701
702
  let writingBufferedEntryData;
702
703
  let writingEntryData;
703
704
  let fileWriter;
704
- let blobPromise;
705
705
  files.set(name, fileEntry);
706
706
  try {
707
707
  let lockPreviousFileEntry;
@@ -710,7 +710,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
710
710
  requestLockCurrentFileEntry();
711
711
  }
712
712
  if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
713
- fileWriter = new TransformStream();
713
+ fileWriter = new TransformStream(UNDEFINED_VALUE, UNDEFINED_VALUE, { highWaterMark: INFINITY_VALUE });
714
714
  fileWriter.size = 0;
715
715
  bufferedWrite = true;
716
716
  zipWriter.bufferedWrites++;
@@ -741,20 +741,20 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
741
741
  await skipDiskIfNeeded(writable);
742
742
  }
743
743
  const { diskNumber } = writer;
744
- writingEntryData = true;
745
744
  fileEntry.diskNumberStart = diskNumber;
746
- if (bufferedWrite) {
747
- blobPromise = new Response(fileWriter.readable).blob();
748
- } else {
745
+ if (!bufferedWrite) {
746
+ writingEntryData = true;
749
747
  await writeData(fileWriter, localHeaderArray);
750
748
  }
751
749
  fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
752
750
  const { zip64 } = fileEntry;
753
- writingEntryData = false;
751
+ if (!bufferedWrite) {
752
+ writingEntryData = false;
753
+ }
754
754
  files.set(name, fileEntry);
755
755
  fileEntry.filename = name;
756
756
  if (bufferedWrite) {
757
- const [blob] = await Promise.all([blobPromise, fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
757
+ await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
758
758
  await requestLockWriter();
759
759
  writingBufferedEntryData = true;
760
760
  fileEntry.diskNumberStart = writer.diskNumber;
@@ -765,7 +765,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
765
765
  updateLocalHeader(fileEntry, localHeaderView, options);
766
766
  await skipDiskIfNeeded(writable);
767
767
  await writeData(writer, localHeaderArray);
768
- await blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal });
768
+ await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
769
769
  writer.size += fileWriter.size;
770
770
  writingBufferedEntryData = false;
771
771
  } else {
@@ -780,7 +780,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
780
780
  zipWriter.offset += fileEntry.size;
781
781
  return fileEntry;
782
782
  } catch (error) {
783
- if ((bufferedWrite && writingBufferedEntryData) || (!bufferedWrite && writingEntryData)) {
783
+ if (writingBufferedEntryData || writingEntryData) {
784
784
  zipWriter.hasCorruptedEntries = true;
785
785
  if (error) {
786
786
  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.19",
7
7
  "type": "module",
8
8
  "keywords": [
9
9
  "zip",
@@ -156,13 +156,10 @@
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"
164
- },
165
- "dependencies": {
166
- "web-worker": "^1.5.0"
163
+ "typedoc-plugin-markdown": "^4.10.0"
167
164
  }
168
165
  }