@zip.js/zip.js 2.6.16 → 2.6.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.
- package/.eslintrc.json +0 -0
- package/README.md +2 -0
- package/cli-deno/mc-zip.js +0 -0
- package/dist/README.md +0 -0
- package/dist/z-worker-fflate.js +1 -1
- package/dist/z-worker-pako.js +1 -1
- package/dist/z-worker.js +1 -1
- package/dist/zip-fs-full.js +78 -70
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +78 -70
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +73 -70
- 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 +73 -70
- package/dist/zip.min.js +1 -1
- package/index-fflate.js +0 -0
- package/index.d.ts +17 -18
- package/index.js +0 -0
- package/lib/core/codec-interface.js +12 -1
- package/lib/core/codec-pool-worker.js +1 -0
- package/lib/core/codec-pool.js +0 -0
- package/lib/core/configuration.js +0 -0
- package/lib/core/constants.js +0 -0
- package/lib/core/io.js +27 -42
- package/lib/core/streams/aes-crypto-stream.js +0 -0
- package/lib/core/streams/codec-stream.js +0 -0
- package/lib/core/streams/codecs/crc32.js +0 -0
- package/lib/core/streams/codecs/deflate.js +0 -0
- package/lib/core/streams/codecs/inflate.js +0 -0
- package/lib/core/streams/codecs/sjcl.js +0 -0
- package/lib/core/streams/common-crypto.js +0 -0
- package/lib/core/streams/crc32-stream.js +0 -0
- package/lib/core/streams/zip-crypto-stream.js +0 -0
- package/lib/core/streams/zip-entry-stream.js +1 -9
- package/lib/core/util/cp437-decode.js +0 -0
- package/lib/core/util/decode-text.js +0 -0
- package/lib/core/util/default-mime-type.js +0 -0
- package/lib/core/util/encode-text.js +0 -0
- package/lib/core/util/mime-type.js +0 -0
- package/lib/core/util/stream-codec-shim.js +0 -0
- package/lib/core/z-worker-core.js +0 -0
- package/lib/core/zip-entry.js +0 -0
- package/lib/core/zip-fs-core.js +5 -0
- package/lib/core/zip-reader.js +2 -1
- package/lib/core/zip-writer.js +30 -16
- package/lib/z-worker-bootstrap-fflate.js +0 -0
- package/lib/z-worker-bootstrap-pako.js +0 -0
- package/lib/z-worker-fflate.js +0 -0
- package/lib/z-worker-inline-template-base64.js +0 -0
- package/lib/z-worker-inline-template.js +0 -0
- package/lib/z-worker-inline.js +1 -1
- package/lib/z-worker.js +0 -0
- package/lib/zip-fflate-shim.js +0 -0
- package/lib/zip-fs.js +0 -0
- package/lib/zip-full-fflate.js +0 -0
- package/lib/zip-full.js +0 -0
- package/lib/zip-no-worker-deflate.js +0 -0
- package/lib/zip-no-worker-fflate-deflate.js +0 -0
- package/lib/zip-no-worker-fflate-inflate.js +0 -0
- package/lib/zip-no-worker-fflate.js +0 -0
- package/lib/zip-no-worker-inflate.js +0 -0
- package/lib/zip-no-worker.js +0 -0
- package/lib/zip.js +0 -0
- package/package.json +1 -1
- package/rollup-fflate.config.dev.js +0 -0
- package/rollup-fflate.config.js +0 -0
- package/rollup.config.dev.js +0 -0
- package/rollup.config.js +0 -0
- package/tests/all/loader.html +0 -0
- package/tests/all/test-abort-signal-read.js +1 -1
- package/tests/all/test-abort-signal-write.js +0 -0
- package/tests/all/test-array.js +1 -1
- package/tests/all/test-base64.js +1 -1
- package/tests/all/test-blob.js +1 -1
- package/tests/all/test-codecs-interoperability.js +1 -1
- package/tests/all/test-crc.js +1 -1
- package/tests/all/test-crypto.js +1 -1
- package/tests/all/test-custom-io.js +1 -2
- package/tests/all/test-data-descriptor-signature.js +1 -1
- package/tests/all/test-data-descriptor.js +1 -1
- package/tests/all/test-duplicated-filename.js +0 -0
- package/tests/all/test-empty.js +1 -1
- package/tests/all/test-extended-timestamp.js +1 -1
- package/tests/all/test-extra-field.js +1 -1
- package/tests/all/test-fflate-no-worker.js +1 -1
- package/tests/all/test-fflate.js +1 -1
- package/tests/all/test-fs-base64.js +0 -0
- package/tests/all/test-fs-export-options.js +0 -0
- package/tests/all/test-fs-http-import.js +0 -0
- package/tests/all/test-fs-http-reader.js +0 -0
- package/tests/all/test-fs-replace.js +0 -0
- package/tests/all/test-fs-streams.js +0 -0
- package/tests/all/test-fs-text.js +0 -0
- package/tests/all/test-fs-unzip-store.js +0 -0
- package/tests/all/test-fs.js +0 -0
- package/tests/all/test-http-crypto.js +0 -0
- package/tests/all/test-http-range.js +0 -0
- package/tests/all/test-http-zip64.js +0 -0
- package/tests/all/test-invalid-crc.js +0 -0
- package/tests/all/test-multiple-writers.js +19 -0
- package/tests/all/test-no-worker.js +1 -1
- package/tests/all/test-pako-no-worker.js +1 -1
- package/tests/all/test-pako.js +1 -1
- package/tests/all/test-parallel-reads.js +1 -1
- package/tests/all/test-parallel-writes-auto-buffered.js +1 -1
- package/tests/all/test-parallel-writes-ordered.js +1 -1
- package/tests/all/test-parallel-writes.js +1 -1
- package/tests/all/test-readable-stream.js +1 -1
- package/tests/all/test-readable-zip-stream.js +0 -0
- package/tests/all/test-safe-closing.js +1 -1
- package/tests/all/test-store.js +1 -1
- package/tests/all/test-sw-worker.js +0 -0
- package/tests/all/test-sw.js +0 -0
- package/tests/all/test-worker-timeout.js +1 -1
- package/tests/all/test-wrapped.js +45 -3
- package/tests/all/test-writable-stream.js +1 -1
- package/tests/all/test-zip64-auto.js +47 -4
- package/tests/all/test-zip64-crypto.js +1 -1
- package/tests/all/test-zip64.js +1 -1
- package/tests/all/test-zipcrypto.js +1 -1
- package/tests/data/lorem-encrypted.zip +0 -0
- package/tests/data/lorem-invalid-crc.zip +0 -0
- package/tests/data/lorem-store.zip +0 -0
- package/tests/data/lorem-zip64.zip +0 -0
- package/tests/data/lorem.txt +0 -0
- package/tests/data/lorem.zip +0 -0
- package/tests/deno-runner.js +0 -0
- package/tests/index.html +0 -0
- package/tests/node-runner.js +0 -0
- package/tests/tests-data.js +1 -0
- package/tests/vendor/fflate-es2019.min.js +0 -0
- package/tests/vendor/fflate.min.js +0 -0
- package/tests/vendor/pako.min.js +0 -0
- package/tests/vendor/pako_deflate.min.js +0 -0
- package/tests/vendor/pako_inflate.min.js +0 -0
- package/tests/web-runner.js +1 -1
- package/tsconfig.json +0 -0
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
29
|
// deno-lint-ignore-file no-this-alias
|
|
30
|
+
/* global TransformStream */
|
|
30
31
|
|
|
31
32
|
import {
|
|
32
33
|
InflateStream,
|
|
@@ -68,7 +69,17 @@ class Codec {
|
|
|
68
69
|
|
|
69
70
|
async function run(StreamConstructor) {
|
|
70
71
|
const stream = new StreamConstructor(codecConstructor, options, config);
|
|
71
|
-
await readable
|
|
72
|
+
await readable
|
|
73
|
+
.pipeThrough(stream)
|
|
74
|
+
.pipeThrough(new TransformStream({
|
|
75
|
+
transform(chunk, controller) {
|
|
76
|
+
if (chunk && chunk.length) {
|
|
77
|
+
writable.size += chunk.length;
|
|
78
|
+
controller.enqueue(chunk);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}))
|
|
82
|
+
.pipeTo(writable, { preventClose: true, preventAbort: true });
|
|
72
83
|
const { size, signature } = stream;
|
|
73
84
|
return { size, signature };
|
|
74
85
|
}
|
|
@@ -208,6 +208,7 @@ function createWebWorkerInterface(workerData, { baseURL, chunkSize }) {
|
|
|
208
208
|
}
|
|
209
209
|
if (type == MESSAGE_DATA) {
|
|
210
210
|
await writer.ready;
|
|
211
|
+
workerData.writable.size += data.byteLength;
|
|
211
212
|
await writer.write(new Uint8Array(data));
|
|
212
213
|
}
|
|
213
214
|
if (type == MESSAGE_CLOSE) {
|
package/lib/core/codec-pool.js
CHANGED
|
File without changes
|
|
File without changes
|
package/lib/core/constants.js
CHANGED
|
File without changes
|
package/lib/core/io.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/* global Blob, atob, btoa, XMLHttpRequest, URL, fetch, ReadableStream, WritableStream, FileReader */
|
|
29
|
+
/* global Blob, atob, btoa, XMLHttpRequest, URL, fetch, ReadableStream, WritableStream, FileReader, TransformStream, Response */
|
|
30
30
|
|
|
31
31
|
const ERR_HTTP_STATUS = "HTTP error ";
|
|
32
32
|
const ERR_HTTP_RANGE = "HTTP Range not supported";
|
|
@@ -78,7 +78,7 @@ class Reader extends Stream {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
class
|
|
81
|
+
class Writer extends Stream {
|
|
82
82
|
|
|
83
83
|
constructor() {
|
|
84
84
|
super();
|
|
@@ -88,18 +88,15 @@ class WriterStream extends Stream {
|
|
|
88
88
|
return writer.writeUint8Array(chunk);
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
|
-
Object.defineProperty(
|
|
91
|
+
Object.defineProperty(writer, "writable", {
|
|
92
92
|
get() {
|
|
93
93
|
return writable;
|
|
94
94
|
}
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
class Writer extends WriterStream {
|
|
100
97
|
|
|
101
|
-
writeUint8Array(
|
|
102
|
-
|
|
98
|
+
writeUint8Array() {
|
|
99
|
+
// abstract
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
102
|
|
|
@@ -131,7 +128,6 @@ class TextWriter extends Writer {
|
|
|
131
128
|
}
|
|
132
129
|
|
|
133
130
|
writeUint8Array(array) {
|
|
134
|
-
super.writeUint8Array(array);
|
|
135
131
|
this.blob = new Blob([this.blob, array.buffer], { type: CONTENT_TYPE_TEXT_PLAIN });
|
|
136
132
|
}
|
|
137
133
|
|
|
@@ -186,7 +182,6 @@ class Data64URIWriter extends Writer {
|
|
|
186
182
|
}
|
|
187
183
|
|
|
188
184
|
writeUint8Array(array) {
|
|
189
|
-
super.writeUint8Array(array);
|
|
190
185
|
const writer = this;
|
|
191
186
|
let indexArray = 0;
|
|
192
187
|
let dataString = writer.pending;
|
|
@@ -224,48 +219,35 @@ class BlobReader extends Reader {
|
|
|
224
219
|
}
|
|
225
220
|
}
|
|
226
221
|
|
|
227
|
-
class BlobWriter extends
|
|
222
|
+
class BlobWriter extends Stream {
|
|
228
223
|
|
|
229
224
|
constructor(contentType) {
|
|
230
225
|
super();
|
|
231
226
|
const writer = this;
|
|
232
227
|
writer.contentType = contentType;
|
|
233
|
-
writer.
|
|
234
|
-
|
|
228
|
+
writer.transformStream = new TransformStream();
|
|
229
|
+
Object.defineProperty(this, "writable", {
|
|
230
|
+
get() {
|
|
231
|
+
return writer.transformStream.writable;
|
|
232
|
+
}
|
|
233
|
+
});
|
|
235
234
|
}
|
|
236
235
|
|
|
237
|
-
|
|
238
|
-
super.
|
|
236
|
+
init() {
|
|
237
|
+
super.init();
|
|
239
238
|
const writer = this;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
writer
|
|
239
|
+
const {
|
|
240
|
+
transformStream,
|
|
241
|
+
contentType
|
|
242
|
+
} = writer;
|
|
243
|
+
writer.blob = new Response(transformStream.readable).blob({ type: contentType });
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
getData() {
|
|
247
|
-
|
|
248
|
-
if (!writer.blob) {
|
|
249
|
-
if (writer.arrayBuffers.length) {
|
|
250
|
-
flushArrayBuffers(writer);
|
|
251
|
-
}
|
|
252
|
-
writer.blob = writer.pendingBlob;
|
|
253
|
-
initArrayBuffers(writer);
|
|
254
|
-
}
|
|
255
|
-
return writer.blob;
|
|
247
|
+
return this.blob;
|
|
256
248
|
}
|
|
257
249
|
}
|
|
258
250
|
|
|
259
|
-
function initArrayBuffers(blobWriter) {
|
|
260
|
-
blobWriter.pendingBlob = new Blob([], { type: blobWriter.contentType });
|
|
261
|
-
blobWriter.arrayBuffers = [];
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
function flushArrayBuffers(blobWriter) {
|
|
265
|
-
blobWriter.pendingBlob = new Blob([blobWriter.pendingBlob, ...blobWriter.arrayBuffers], { type: blobWriter.contentType });
|
|
266
|
-
blobWriter.arrayBuffers = [];
|
|
267
|
-
}
|
|
268
|
-
|
|
269
251
|
class FetchReader extends Reader {
|
|
270
252
|
|
|
271
253
|
constructor(url, options) {
|
|
@@ -495,18 +477,21 @@ class Uint8ArrayReader extends Reader {
|
|
|
495
477
|
class Uint8ArrayWriter extends Writer {
|
|
496
478
|
|
|
497
479
|
init(initSize = 0) {
|
|
498
|
-
|
|
480
|
+
super.init();
|
|
481
|
+
const writer = this;
|
|
482
|
+
writer.offset = 0;
|
|
483
|
+
writer.array = new Uint8Array(initSize);
|
|
499
484
|
}
|
|
500
485
|
|
|
501
486
|
writeUint8Array(array) {
|
|
502
487
|
const writer = this;
|
|
503
|
-
if (writer.
|
|
488
|
+
if (writer.offset + array.length > writer.array.length) {
|
|
504
489
|
const previousArray = writer.array;
|
|
505
490
|
writer.array = new Uint8Array(previousArray.length + array.length);
|
|
506
491
|
writer.array.set(previousArray);
|
|
507
492
|
}
|
|
508
|
-
writer.array.set(array, writer.
|
|
509
|
-
|
|
493
|
+
writer.array.set(array, writer.offset);
|
|
494
|
+
writer.offset += array.length;
|
|
510
495
|
}
|
|
511
496
|
|
|
512
497
|
getData() {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -167,15 +167,7 @@ function filterEmptyChunks(readable) {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
function setReadable(stream, readable, flush) {
|
|
170
|
-
|
|
171
|
-
readable = readable.pipeThrough(new TransformStream({
|
|
172
|
-
transform(chunk, controller) {
|
|
173
|
-
if (chunk && chunk.length) {
|
|
174
|
-
stream.size += chunk.length;
|
|
175
|
-
controller.enqueue(chunk);
|
|
176
|
-
}
|
|
177
|
-
}, flush
|
|
178
|
-
}));
|
|
170
|
+
readable = readable.pipeThrough(new TransformStream({ flush }));
|
|
179
171
|
Object.defineProperty(stream, "readable", {
|
|
180
172
|
get() {
|
|
181
173
|
return readable;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/core/zip-entry.js
CHANGED
|
File without changes
|
package/lib/core/zip-fs-core.js
CHANGED
|
@@ -437,6 +437,11 @@ class FS {
|
|
|
437
437
|
await this.root.importData64URI(dataURI, options);
|
|
438
438
|
}
|
|
439
439
|
|
|
440
|
+
async importUint8Array(array, options) {
|
|
441
|
+
resetFS(this);
|
|
442
|
+
await this.root.importUint8Array(array, options);
|
|
443
|
+
}
|
|
444
|
+
|
|
440
445
|
async importHttpContent(url, options) {
|
|
441
446
|
resetFS(this);
|
|
442
447
|
await this.root.importHttpContent(url, options);
|
package/lib/core/zip-reader.js
CHANGED
|
@@ -344,7 +344,8 @@ class ZipEntry {
|
|
|
344
344
|
codecConstructor: config.Inflate
|
|
345
345
|
};
|
|
346
346
|
await runWorker({ readable, writable }, workerOptions);
|
|
347
|
-
|
|
347
|
+
const preventClose = getOptionValue(zipEntry, options, "preventClose");
|
|
348
|
+
if (!preventClose) {
|
|
348
349
|
await writable.getWriter().close();
|
|
349
350
|
}
|
|
350
351
|
return writer.getData ? writer.getData() : writable;
|
package/lib/core/zip-writer.js
CHANGED
|
@@ -93,13 +93,16 @@ const pendingEntries = [];
|
|
|
93
93
|
class ZipWriter {
|
|
94
94
|
|
|
95
95
|
constructor(writer, options = {}) {
|
|
96
|
+
if (writer.writable.size == undefined) {
|
|
97
|
+
writer.writable.size = 0;
|
|
98
|
+
}
|
|
96
99
|
Object.assign(this, {
|
|
97
100
|
writer,
|
|
98
101
|
options,
|
|
99
102
|
config: getConfiguration(),
|
|
100
103
|
files: new Map(),
|
|
101
104
|
filenames: new Set(),
|
|
102
|
-
offset: writer.size
|
|
105
|
+
offset: writer.writable.size,
|
|
103
106
|
pendingCompressedSize: 0,
|
|
104
107
|
pendingAddFileCalls: new Set()
|
|
105
108
|
});
|
|
@@ -321,7 +324,6 @@ async function getFileEntry(zipWriter, name, reader, options) {
|
|
|
321
324
|
let releaseLockCurrentFileEntry;
|
|
322
325
|
let writingBufferedData;
|
|
323
326
|
let fileWriter;
|
|
324
|
-
let fileWriterSize;
|
|
325
327
|
files.set(name, fileEntry);
|
|
326
328
|
try {
|
|
327
329
|
let lockPreviousFileEntry;
|
|
@@ -331,26 +333,30 @@ async function getFileEntry(zipWriter, name, reader, options) {
|
|
|
331
333
|
}
|
|
332
334
|
if (options.bufferedWrite || zipWriter.lockWriter || !dataDescriptor) {
|
|
333
335
|
fileWriter = new BlobWriter();
|
|
334
|
-
fileWriter.
|
|
336
|
+
fileWriter.writable.size = 0;
|
|
335
337
|
bufferedWrite = true;
|
|
336
|
-
} else {
|
|
337
|
-
zipWriter.lockWriter = Promise.resolve();
|
|
338
338
|
await initStream(writer);
|
|
339
|
+
} else {
|
|
339
340
|
fileWriter = writer;
|
|
341
|
+
zipWriter.lockWriter = Promise.resolve();
|
|
342
|
+
releaseLockWriter = () => delete zipWriter.lockWriter;
|
|
340
343
|
}
|
|
341
|
-
|
|
342
|
-
|
|
344
|
+
await initStream(fileWriter);
|
|
345
|
+
if (!bufferedWrite) {
|
|
346
|
+
await lockPreviousFileEntry;
|
|
347
|
+
}
|
|
348
|
+
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, zipWriter.config, options);
|
|
343
349
|
files.set(name, fileEntry);
|
|
344
350
|
fileEntry.filename = name;
|
|
345
351
|
if (bufferedWrite) {
|
|
346
|
-
|
|
352
|
+
await fileWriter.writable.getWriter().close();
|
|
353
|
+
let blob = await fileWriter.getData();
|
|
347
354
|
await lockPreviousFileEntry;
|
|
348
355
|
await requestLockWriter();
|
|
349
356
|
writingBufferedData = true;
|
|
350
357
|
const { writable } = writer;
|
|
351
358
|
if (!dataDescriptor) {
|
|
352
|
-
const
|
|
353
|
-
const arrayBuffer = await sliceAsArrayBuffer(blob, 0, headerLength);
|
|
359
|
+
const arrayBuffer = await sliceAsArrayBuffer(blob, 0, 26);
|
|
354
360
|
const arrayBufferView = new DataView(arrayBuffer);
|
|
355
361
|
if (!fileEntry.encrypted || zipCrypto) {
|
|
356
362
|
setUint32(arrayBufferView, 14, fileEntry.signature);
|
|
@@ -363,7 +369,7 @@ async function getFileEntry(zipWriter, name, reader, options) {
|
|
|
363
369
|
setUint32(arrayBufferView, 22, fileEntry.uncompressedSize);
|
|
364
370
|
}
|
|
365
371
|
await writeData(writable, new Uint8Array(arrayBuffer));
|
|
366
|
-
blob = blob.slice(
|
|
372
|
+
blob = blob.slice(arrayBuffer.byteLength);
|
|
367
373
|
}
|
|
368
374
|
await blob.stream().pipeTo(writable, { preventClose: true, signal });
|
|
369
375
|
writingBufferedData = false;
|
|
@@ -383,7 +389,11 @@ async function getFileEntry(zipWriter, name, reader, options) {
|
|
|
383
389
|
if (error) {
|
|
384
390
|
error.corruptedEntry = true;
|
|
385
391
|
}
|
|
386
|
-
|
|
392
|
+
if (bufferedWrite) {
|
|
393
|
+
zipWriter.offset += fileWriter.writable.size;
|
|
394
|
+
} else {
|
|
395
|
+
zipWriter.offset = fileWriter.writable.size;
|
|
396
|
+
}
|
|
387
397
|
}
|
|
388
398
|
files.delete(name);
|
|
389
399
|
throw error;
|
|
@@ -411,7 +421,7 @@ async function getFileEntry(zipWriter, name, reader, options) {
|
|
|
411
421
|
}
|
|
412
422
|
}
|
|
413
423
|
|
|
414
|
-
async function createFileEntry(reader,
|
|
424
|
+
async function createFileEntry(reader, writer, pendingFileEntry, config, options) {
|
|
415
425
|
const {
|
|
416
426
|
rawFilename,
|
|
417
427
|
lastAccessDate,
|
|
@@ -504,7 +514,7 @@ async function createFileEntry(reader, pendingFileEntry, writable, config, optio
|
|
|
504
514
|
internalFileAttribute,
|
|
505
515
|
externalFileAttribute
|
|
506
516
|
};
|
|
507
|
-
let uncompressedSize =
|
|
517
|
+
let uncompressedSize = 0;
|
|
508
518
|
let bitFlag = BITFLAG_LANG_ENCODING_FLAG;
|
|
509
519
|
if (dataDescriptor) {
|
|
510
520
|
bitFlag = bitFlag | BITFLAG_DATA_DESCRIPTOR;
|
|
@@ -560,6 +570,7 @@ async function createFileEntry(reader, pendingFileEntry, writable, config, optio
|
|
|
560
570
|
arraySet(localHeaderArray, rawExtraField, 30 + rawFilename.length + rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length);
|
|
561
571
|
let result;
|
|
562
572
|
let compressedSize = 0;
|
|
573
|
+
const { writable } = writer;
|
|
563
574
|
fileEntry.writingData = pendingFileEntry.writingData = true;
|
|
564
575
|
if (reader) {
|
|
565
576
|
reader.chunkSize = getChunkSize(config);
|
|
@@ -585,9 +596,10 @@ async function createFileEntry(reader, pendingFileEntry, writable, config, optio
|
|
|
585
596
|
streamOptions: { signal, size, onstart, onprogress, onend },
|
|
586
597
|
codecConstructor: config.Deflate
|
|
587
598
|
};
|
|
599
|
+
const previousSize = writable.size;
|
|
588
600
|
result = await runWorker({ readable, writable }, workerOptions);
|
|
589
|
-
uncompressedSize =
|
|
590
|
-
compressedSize =
|
|
601
|
+
uncompressedSize = reader.size = readable.size();
|
|
602
|
+
compressedSize = writable.size - previousSize;
|
|
591
603
|
} else {
|
|
592
604
|
await writeData(writable, localHeaderArray);
|
|
593
605
|
}
|
|
@@ -765,6 +777,7 @@ async function closeFile(zipWriter, comment, options) {
|
|
|
765
777
|
}
|
|
766
778
|
}
|
|
767
779
|
const { writable } = zipWriter.writer;
|
|
780
|
+
await initStream(zipWriter.writer);
|
|
768
781
|
await writeData(writable, directoryArray);
|
|
769
782
|
if (comment && comment.length) {
|
|
770
783
|
await writeData(writable, comment);
|
|
@@ -782,6 +795,7 @@ function sliceAsArrayBuffer(blob, start, end) {
|
|
|
782
795
|
async function writeData(writable, array) {
|
|
783
796
|
const streamWriter = writable.getWriter();
|
|
784
797
|
await streamWriter.ready;
|
|
798
|
+
writable.size += array.length;
|
|
785
799
|
await streamWriter.write(array);
|
|
786
800
|
streamWriter.releaseLock();
|
|
787
801
|
}
|
|
File without changes
|
|
File without changes
|
package/lib/z-worker-fflate.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|