@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/dist/zip-fs-full.js +46 -46
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +48 -46
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +48 -46
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker-inflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +48 -46
- package/dist/zip.min.js +1 -1
- package/index.cjs +46 -46
- package/index.d.ts +2 -2
- package/lib/core/io.js +45 -3
- package/lib/core/zip-reader.js +8 -23
- package/lib/core/zip-writer.js +7 -27
- package/package.json +3 -3
- package/tests/all/test-split-data.js +1 -1
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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 {
|
|
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,
|
package/lib/core/zip-reader.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/* global BigInt, Response
|
|
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
|
-
|
|
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: {
|
package/lib/core/zip-writer.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/* global BigInt
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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.
|
|
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": "^
|
|
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.
|
|
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",
|
|
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();
|