@zip.js/zip.js 2.6.46 → 2.6.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.cjs CHANGED
@@ -7920,7 +7920,6 @@ async function initHttpReader(httpReader, sendRequest, getRequestData) {
7920
7920
 
7921
7921
  async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest, getRequestData) {
7922
7922
  const {
7923
- data,
7924
7923
  useRangeHeader,
7925
7924
  forceRangeRequests,
7926
7925
  options
@@ -7932,10 +7931,11 @@ async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest,
7932
7931
  }
7933
7932
  return new Uint8Array(await response.arrayBuffer());
7934
7933
  } else {
7934
+ const { data } = httpReader;
7935
7935
  if (!data) {
7936
7936
  await getRequestData(httpReader, options);
7937
7937
  }
7938
- return new Uint8Array(data.subarray(index, index + length));
7938
+ return new Uint8Array(httpReader.data.subarray(index, index + length));
7939
7939
  }
7940
7940
  }
7941
7941
 
@@ -8228,6 +8228,43 @@ async function initStream(stream, initSize) {
8228
8228
  }
8229
8229
  }
8230
8230
 
8231
+ function initReader(reader) {
8232
+ if (Array.isArray(reader)) {
8233
+ reader = new SplitDataReader(reader);
8234
+ }
8235
+ if (reader instanceof ReadableStream) {
8236
+ reader = {
8237
+ readable: reader
8238
+ };
8239
+ }
8240
+ return reader;
8241
+ }
8242
+
8243
+ function initWriter(writer) {
8244
+ if (writer.writable === UNDEFINED_VALUE && typeof writer.next == FUNCTION_TYPE$1) {
8245
+ writer = new SplitDataWriter(writer);
8246
+ }
8247
+ if (writer instanceof WritableStream) {
8248
+ writer = {
8249
+ writable: writer
8250
+ };
8251
+ }
8252
+ const { writable } = writer;
8253
+ if (writable.size === UNDEFINED_VALUE) {
8254
+ writable.size = 0;
8255
+ }
8256
+ const splitZipFile = writer instanceof SplitDataWriter;
8257
+ if (!splitZipFile) {
8258
+ Object.assign(writer, {
8259
+ diskNumber: 0,
8260
+ diskOffset: 0,
8261
+ availableSize: Infinity,
8262
+ maxSize: Infinity
8263
+ });
8264
+ }
8265
+ return writer;
8266
+ }
8267
+
8231
8268
  function readUint8Array(reader, offset, size, diskNumber) {
8232
8269
  return reader.readUint8Array(offset, size, diskNumber);
8233
8270
  }
@@ -8442,13 +8479,8 @@ const ZIP64_EXTRACTION = {
8442
8479
  class ZipReader {
8443
8480
 
8444
8481
  constructor(reader, options = {}) {
8445
- if (reader instanceof ReadableStream) {
8446
- reader = {
8447
- readable: reader
8448
- };
8449
- }
8450
8482
  Object.assign(this, {
8451
- reader,
8483
+ reader: initReader(reader),
8452
8484
  options,
8453
8485
  config: getConfiguration()
8454
8486
  });
@@ -8460,11 +8492,7 @@ class ZipReader {
8460
8492
  const { config } = zipReader;
8461
8493
  await initStream(reader);
8462
8494
  if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
8463
- if (Array.isArray(reader)) {
8464
- reader = new SplitDataReader(reader);
8465
- } else {
8466
- reader = new BlobReader(await new Response(reader.readable).blob());
8467
- }
8495
+ reader = new BlobReader(await new Response(reader.readable).blob());
8468
8496
  await initStream(reader);
8469
8497
  }
8470
8498
  if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
@@ -8697,17 +8725,10 @@ class ZipEntry$1 {
8697
8725
  readable.diskNumberStart = diskNumberStart;
8698
8726
  readable.offset = dataOffset;
8699
8727
  const size = readable.size = compressedSize;
8700
- if (writer instanceof WritableStream) {
8701
- writer = {
8702
- writable: writer
8703
- };
8704
- }
8705
- const { writable } = writer;
8706
- if (writable.size === UNDEFINED_VALUE) {
8707
- writable.size = 0;
8708
- }
8709
8728
  const signal = getOptionValue$1(zipEntry, options, "signal");
8729
+ writer = initWriter(writer);
8710
8730
  await initStream(writer, uncompressedSize);
8731
+ const { writable } = writer;
8711
8732
  const { onstart, onprogress, onend } = options;
8712
8733
  const workerOptions = {
8713
8734
  options: {
@@ -9038,27 +9059,10 @@ const pendingEntries = [];
9038
9059
  class ZipWriter {
9039
9060
 
9040
9061
  constructor(writer, options = {}) {
9041
- if (writer.writable === UNDEFINED_VALUE && typeof writer.next == FUNCTION_TYPE$1) {
9042
- writer = new SplitDataWriter(writer);
9043
- }
9044
- if (writer instanceof WritableStream) {
9045
- writer = { writable: writer };
9046
- }
9047
- if (writer.writable.size === UNDEFINED_VALUE) {
9048
- writer.writable.size = 0;
9049
- }
9050
- const splitZipFile = writer instanceof SplitDataWriter;
9051
- if (!splitZipFile) {
9052
- Object.assign(writer, {
9053
- diskNumber: 0,
9054
- diskOffset: 0,
9055
- availableSize: Infinity,
9056
- maxSize: Infinity
9057
- });
9058
- }
9062
+ writer = initWriter(writer);
9059
9063
  Object.assign(this, {
9060
9064
  writer,
9061
- addSplitZipSignature: splitZipFile,
9065
+ addSplitZipSignature: writer instanceof SplitDataWriter,
9062
9066
  options,
9063
9067
  config: getConfiguration(),
9064
9068
  files: new Map(),
@@ -9190,11 +9194,7 @@ async function addFile(zipWriter, name, reader, options) {
9190
9194
  let maximumEntrySize = 0;
9191
9195
  let uncompressedSize = 0;
9192
9196
  if (reader) {
9193
- if (reader instanceof ReadableStream) {
9194
- reader = {
9195
- readable: reader
9196
- };
9197
- }
9197
+ reader = initReader(reader);
9198
9198
  await initStream(reader);
9199
9199
  if (reader.size === UNDEFINED_VALUE) {
9200
9200
  dataDescriptor = true;
package/index.d.ts CHANGED
@@ -854,7 +854,7 @@ export interface Entry {
854
854
  * @param options The options.
855
855
  * @returns A promise resolving to the type to data associated to `writer`.
856
856
  */
857
- getData?<Type>(writer: Writer<Type> | WritableWriter | WritableStream, options?: EntryGetDataOptions): Promise<Type>
857
+ getData?<Type>(writer: Writer<Type> | WritableWriter | WritableStream | AsyncGenerator<Writer<unknown> | WritableWriter | WritableStream, boolean>, options?: EntryGetDataOptions): Promise<Type>
858
858
  }
859
859
 
860
860
  /**
@@ -902,7 +902,7 @@ export class ZipWriter<Type> {
902
902
  * @param options The options.
903
903
  * @returns A promise resolving to an `Entry` instance.
904
904
  */
905
- add<ReaderType>(filename: string, reader?: Reader<ReaderType> | ReadableReader | ReadableStream, options?: ZipWriterAddDataOptions): Promise<Entry>
905
+ add<ReaderType>(filename: string, reader?: Reader<ReaderType> | ReadableReader | ReadableStream | Reader<unknown>[] | ReadableReader[] | ReadableStream[], options?: ZipWriterAddDataOptions): Promise<Entry>
906
906
  /**
907
907
  * Writes the entries directory, writes the global comment, and returns the content of the zip file
908
908
  *
package/lib/core/io.js CHANGED
@@ -46,7 +46,10 @@ const DEFAULT_CHUNK_SIZE = 64 * 1024;
46
46
 
47
47
  const PROPERTY_NAME_WRITABLE = "writable";
48
48
 
49
- import { UNDEFINED_VALUE } from "./constants.js";
49
+ import {
50
+ UNDEFINED_VALUE,
51
+ FUNCTION_TYPE
52
+ } from "./constants.js";
50
53
  import { getConfiguration } from "./configuration.js";
51
54
 
52
55
  class Stream {
@@ -338,7 +341,6 @@ async function initHttpReader(httpReader, sendRequest, getRequestData) {
338
341
 
339
342
  async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest, getRequestData) {
340
343
  const {
341
- data,
342
344
  useRangeHeader,
343
345
  forceRangeRequests,
344
346
  options
@@ -350,10 +352,11 @@ async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest,
350
352
  }
351
353
  return new Uint8Array(await response.arrayBuffer());
352
354
  } else {
355
+ const { data } = httpReader;
353
356
  if (!data) {
354
357
  await getRequestData(httpReader, options);
355
358
  }
356
- return new Uint8Array(data.subarray(index, index + length));
359
+ return new Uint8Array(httpReader.data.subarray(index, index + length));
357
360
  }
358
361
  }
359
362
 
@@ -646,6 +649,43 @@ async function initStream(stream, initSize) {
646
649
  }
647
650
  }
648
651
 
652
+ function initReader(reader) {
653
+ if (Array.isArray(reader)) {
654
+ reader = new SplitDataReader(reader);
655
+ }
656
+ if (reader instanceof ReadableStream) {
657
+ reader = {
658
+ readable: reader
659
+ };
660
+ }
661
+ return reader;
662
+ }
663
+
664
+ function initWriter(writer) {
665
+ if (writer.writable === UNDEFINED_VALUE && typeof writer.next == FUNCTION_TYPE) {
666
+ writer = new SplitDataWriter(writer);
667
+ }
668
+ if (writer instanceof WritableStream) {
669
+ writer = {
670
+ writable: writer
671
+ };
672
+ }
673
+ const { writable } = writer;
674
+ if (writable.size === UNDEFINED_VALUE) {
675
+ writable.size = 0;
676
+ }
677
+ const splitZipFile = writer instanceof SplitDataWriter;
678
+ if (!splitZipFile) {
679
+ Object.assign(writer, {
680
+ diskNumber: 0,
681
+ diskOffset: 0,
682
+ availableSize: Infinity,
683
+ maxSize: Infinity
684
+ });
685
+ }
686
+ return writer;
687
+ }
688
+
649
689
  function readUint8Array(reader, offset, size, diskNumber) {
650
690
  return reader.readUint8Array(offset, size, diskNumber);
651
691
  }
@@ -655,6 +695,8 @@ const SplitZipWriter = SplitDataWriter;
655
695
 
656
696
  export {
657
697
  initStream,
698
+ initReader,
699
+ initWriter,
658
700
  readUint8Array,
659
701
  Reader,
660
702
  Writer,
@@ -26,7 +26,7 @@
26
26
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
28
 
29
- /* global BigInt, Response, ReadableStream, WritableStream */
29
+ /* global BigInt, Response */
30
30
  // deno-lint-ignore-file no-this-alias
31
31
 
32
32
  import {
@@ -71,9 +71,10 @@ import {
71
71
  } from "./codec-pool.js";
72
72
  import {
73
73
  initStream,
74
+ initReader,
75
+ initWriter,
74
76
  readUint8Array,
75
- BlobReader,
76
- SplitDataReader
77
+ BlobReader
77
78
  } from "./io.js";
78
79
  import { decodeText } from "./util/decode-text.js";
79
80
  import { Crc32 } from "./streams/codecs/crc32.js";
@@ -128,13 +129,8 @@ const ZIP64_EXTRACTION = {
128
129
  class ZipReader {
129
130
 
130
131
  constructor(reader, options = {}) {
131
- if (reader instanceof ReadableStream) {
132
- reader = {
133
- readable: reader
134
- };
135
- }
136
132
  Object.assign(this, {
137
- reader,
133
+ reader: initReader(reader),
138
134
  options,
139
135
  config: getConfiguration()
140
136
  });
@@ -146,11 +142,7 @@ class ZipReader {
146
142
  const { config } = zipReader;
147
143
  await initStream(reader);
148
144
  if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
149
- if (Array.isArray(reader)) {
150
- reader = new SplitDataReader(reader);
151
- } else {
152
- reader = new BlobReader(await new Response(reader.readable).blob());
153
- }
145
+ reader = new BlobReader(await new Response(reader.readable).blob());
154
146
  await initStream(reader);
155
147
  }
156
148
  if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
@@ -400,17 +392,10 @@ class ZipEntry {
400
392
  readable.diskNumberStart = diskNumberStart;
401
393
  readable.offset = dataOffset;
402
394
  const size = readable.size = compressedSize;
403
- if (writer instanceof WritableStream) {
404
- writer = {
405
- writable: writer
406
- };
407
- }
408
- const { writable } = writer;
409
- if (writable.size === UNDEFINED_VALUE) {
410
- writable.size = 0;
411
- }
412
395
  const signal = getOptionValue(zipEntry, options, "signal");
396
+ writer = initWriter(writer);
413
397
  await initStream(writer, uncompressedSize);
398
+ const { writable } = writer;
414
399
  const { onstart, onprogress, onend } = options;
415
400
  const workerOptions = {
416
401
  options: {
@@ -26,7 +26,7 @@
26
26
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
28
 
29
- /* global BigInt, ReadableStream, WritableStream */
29
+ /* global BigInt */
30
30
  // deno-lint-ignore-file no-this-alias
31
31
 
32
32
  import {
@@ -61,8 +61,7 @@ import {
61
61
  DIRECTORY_SIGNATURE,
62
62
  MIN_DATE,
63
63
  MAX_DATE,
64
- UNDEFINED_VALUE,
65
- FUNCTION_TYPE
64
+ UNDEFINED_VALUE
66
65
  } from "./constants.js";
67
66
  import {
68
67
  getConfiguration,
@@ -74,6 +73,8 @@ import {
74
73
  } from "./codec-pool.js";
75
74
  import {
76
75
  initStream,
76
+ initReader,
77
+ initWriter,
77
78
  BlobWriter,
78
79
  SplitDataWriter
79
80
  } from "./io.js";
@@ -108,27 +109,10 @@ const pendingEntries = [];
108
109
  class ZipWriter {
109
110
 
110
111
  constructor(writer, options = {}) {
111
- if (writer.writable === UNDEFINED_VALUE && typeof writer.next == FUNCTION_TYPE) {
112
- writer = new SplitDataWriter(writer);
113
- }
114
- if (writer instanceof WritableStream) {
115
- writer = { writable: writer };
116
- }
117
- if (writer.writable.size === UNDEFINED_VALUE) {
118
- writer.writable.size = 0;
119
- }
120
- const splitZipFile = writer instanceof SplitDataWriter;
121
- if (!splitZipFile) {
122
- Object.assign(writer, {
123
- diskNumber: 0,
124
- diskOffset: 0,
125
- availableSize: Infinity,
126
- maxSize: Infinity
127
- });
128
- }
112
+ writer = initWriter(writer);
129
113
  Object.assign(this, {
130
114
  writer,
131
- addSplitZipSignature: splitZipFile,
115
+ addSplitZipSignature: writer instanceof SplitDataWriter,
132
116
  options,
133
117
  config: getConfiguration(),
134
118
  files: new Map(),
@@ -273,11 +257,7 @@ async function addFile(zipWriter, name, reader, options) {
273
257
  let maximumEntrySize = 0;
274
258
  let uncompressedSize = 0;
275
259
  if (reader) {
276
- if (reader instanceof ReadableStream) {
277
- reader = {
278
- readable: reader
279
- };
280
- }
260
+ reader = initReader(reader);
281
261
  await initStream(reader);
282
262
  if (reader.size === UNDEFINED_VALUE) {
283
263
  dataDescriptor = true;
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.6.46",
6
+ "version": "2.6.48",
7
7
  "type": "module",
8
8
  "keywords": [
9
9
  "zip",
@@ -51,12 +51,12 @@
51
51
  },
52
52
  "homepage": "https://gildas-lormeau.github.io/zip.js",
53
53
  "devDependencies": {
54
- "@rollup/plugin-node-resolve": "^14.1.0",
54
+ "@rollup/plugin-node-resolve": "^15.0.0",
55
55
  "@rollup/plugin-replace": "^4.0.0",
56
56
  "http-server": "^14.1.1",
57
57
  "rollup": "^2.79.1",
58
58
  "rollup-plugin-terser": "^7.0.2",
59
- "typedoc": "^0.23.15"
59
+ "typedoc": "^0.23.16"
60
60
  },
61
61
  "overrides": {
62
62
  "terser": "^5.15.0"
@@ -24,7 +24,7 @@ async function test() {
24
24
  new zip.TextReader(TEXT_CONTENT),
25
25
  new zip.BlobReader(BLOB_CONTENT)
26
26
  ];
27
- await zipWriter.add("loremx2.txt", new zip.SplitDataReader(readers));
27
+ await zipWriter.add("loremx2.txt", readers);
28
28
  const blob = await zipWriter.close();
29
29
  const zipReader = new zip.ZipReader(new zip.BlobReader(blob));
30
30
  const firstEntry = (await zipReader.getEntries()).shift();