@zip.js/zip.js 2.8.18 → 2.8.20

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.cjs CHANGED
@@ -99,6 +99,7 @@ const MAX_DATE = new Date(2107, 11, 31);
99
99
  const MIN_DATE = new Date(1980, 0, 1);
100
100
 
101
101
  const UNDEFINED_VALUE = undefined;
102
+ const INFINITY_VALUE = Infinity;
102
103
  const UNDEFINED_TYPE = "undefined";
103
104
  const FUNCTION_TYPE = "function";
104
105
  const OBJECT_TYPE = "object";
@@ -2152,23 +2153,8 @@ async function runWebWorker(workerData, config) {
2152
2153
  }
2153
2154
 
2154
2155
  function watchClosedStream(writableSource) {
2155
- let resolveStreamClosed;
2156
- const closed = new Promise(resolve => resolveStreamClosed = resolve);
2157
- const writable = new WritableStream({
2158
- async write(chunk) {
2159
- const writer = writableSource.getWriter();
2160
- await writer.ready;
2161
- await writer.write(chunk);
2162
- writer.releaseLock();
2163
- },
2164
- close() {
2165
- resolveStreamClosed();
2166
- },
2167
- abort(reason) {
2168
- const writer = writableSource.getWriter();
2169
- return writer.abort(reason);
2170
- }
2171
- });
2156
+ const { writable, readable } = new TransformStream();
2157
+ const closed = readable.pipeTo(writableSource, { preventClose: true });
2172
2158
  return { writable, closed };
2173
2159
  }
2174
2160
 
@@ -3166,8 +3152,8 @@ class GenericWriter {
3166
3152
  Object.assign(writer, {
3167
3153
  diskNumber: 0,
3168
3154
  diskOffset: 0,
3169
- availableSize: Infinity,
3170
- maxSize: Infinity
3155
+ availableSize: INFINITY_VALUE,
3156
+ maxSize: INFINITY_VALUE
3171
3157
  });
3172
3158
  }
3173
3159
  return writer;
@@ -3457,6 +3443,7 @@ const OPTION_EXTENDED_TIMESTAMP = "extendedTimestamp";
3457
3443
  const OPTION_KEEP_ORDER = "keepOrder";
3458
3444
  const OPTION_LEVEL = "level";
3459
3445
  const OPTION_BUFFERED_WRITE = "bufferedWrite";
3446
+ const OPTION_CREATE_TEMP_STREAM = "createTempStream";
3460
3447
  const OPTION_DATA_DESCRIPTOR_SIGNATURE = "dataDescriptorSignature";
3461
3448
  const OPTION_USE_UNICODE_FILE_NAMES = "useUnicodeFileNames";
3462
3449
  const OPTION_DATA_DESCRIPTOR = "dataDescriptor";
@@ -4402,8 +4389,8 @@ class ZipWriter {
4402
4389
  constructor(writer, options = {}) {
4403
4390
  writer = new GenericWriter(writer);
4404
4391
  const addSplitZipSignature =
4405
- writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== Infinity &&
4406
- writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== Infinity;
4392
+ writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== INFINITY_VALUE &&
4393
+ writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== INFINITY_VALUE;
4407
4394
  Object.assign(this, {
4408
4395
  writer,
4409
4396
  addSplitZipSignature,
@@ -4721,7 +4708,9 @@ async function addFile(zipWriter, name, reader, options) {
4721
4708
  const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
4722
4709
  const keepOrder = getOptionValue(zipWriter, options, OPTION_KEEP_ORDER, true);
4723
4710
  const useWebWorkers = getOptionValue(zipWriter, options, OPTION_USE_WEB_WORKERS);
4711
+ const transferStreams = getOptionValue(zipWriter, options, OPTION_TRANSFER_STREAMS, true);
4724
4712
  const bufferedWrite = getOptionValue(zipWriter, options, OPTION_BUFFERED_WRITE);
4713
+ const createTempStream = getOptionValue(zipWriter, options, OPTION_CREATE_TEMP_STREAM);
4725
4714
  const dataDescriptorSignature = getOptionValue(zipWriter, options, OPTION_DATA_DESCRIPTOR_SIGNATURE, false);
4726
4715
  const signal = getOptionValue(zipWriter, options, OPTION_SIGNAL);
4727
4716
  const useUnicodeFileNames = getOptionValue(zipWriter, options, OPTION_USE_UNICODE_FILE_NAMES, true);
@@ -4827,10 +4816,12 @@ async function addFile(zipWriter, name, reader, options) {
4827
4816
  rawPassword,
4828
4817
  level,
4829
4818
  useWebWorkers,
4819
+ transferStreams,
4830
4820
  encryptionStrength,
4831
4821
  extendedTimestamp,
4832
4822
  zipCrypto,
4833
4823
  bufferedWrite,
4824
+ createTempStream,
4834
4825
  keepOrder,
4835
4826
  useUnicodeFileNames,
4836
4827
  dataDescriptor,
@@ -4907,7 +4898,11 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
4907
4898
  requestLockCurrentFileEntry();
4908
4899
  }
4909
4900
  if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
4910
- fileWriter = new TransformStream(undefined, undefined, { highWaterMark: Infinity });
4901
+ if (options.createTempStream) {
4902
+ fileWriter = await options.createTempStream();
4903
+ } else {
4904
+ fileWriter = new TransformStream(UNDEFINED_VALUE, UNDEFINED_VALUE, { highWaterMark: INFINITY_VALUE });
4905
+ }
4911
4906
  fileWriter.size = 0;
4912
4907
  bufferedWrite = true;
4913
4908
  zipWriter.bufferedWrites++;
@@ -5072,6 +5067,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
5072
5067
  rawComment,
5073
5068
  rawExtraField,
5074
5069
  useWebWorkers,
5070
+ transferStreams,
5075
5071
  onstart,
5076
5072
  onprogress,
5077
5073
  onend,
@@ -5152,7 +5148,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
5152
5148
  encrypted: encrypted && !passThrough,
5153
5149
  useWebWorkers,
5154
5150
  useCompressionStream,
5155
- transferStreams: false
5151
+ transferStreams
5156
5152
  },
5157
5153
  config,
5158
5154
  streamOptions: { signal, size, onstart, onprogress, onend }
package/index.d.ts CHANGED
@@ -293,6 +293,12 @@ export interface WorkerConfiguration {
293
293
  * @defaultValue true
294
294
  */
295
295
  useCompressionStream?: boolean;
296
+ /**
297
+ * `true` to transfer stream ownership to web workers.
298
+ *
299
+ * @defaultValue true
300
+ */
301
+ transferStreams?: boolean;
296
302
  }
297
303
 
298
304
  /**
@@ -885,12 +891,6 @@ export interface ZipReaderOptions {
885
891
  * @defaultValue false
886
892
  */
887
893
  preventClose?: boolean;
888
- /**
889
- * `true` to transfer streams to web workers when decompressing data.
890
- *
891
- * @defaultValue true
892
- */
893
- transferStreams?: boolean;
894
894
  }
895
895
 
896
896
  /**