@zip.js/zip.js 2.6.5 → 2.6.8
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 +80 -55
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +81 -55
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +22 -22
- 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 +22 -22
- package/dist/zip.min.js +1 -1
- package/index.d.ts +1229 -247
- package/lib/core/io.js +7 -0
- package/lib/core/zip-fs-core.js +68 -35
- package/lib/core/zip-reader.js +8 -9
- package/lib/core/zip-writer.js +12 -14
- package/package.json +6 -3
- package/tests/all/test-fs-streams.js +22 -0
- package/tests/all/test-parallel-writes-ordered.js +4 -4
- package/tests/tests-data.js +1 -0
- package/tests/web-runner.js +1 -1
- package/tsconfig.json +6 -0
package/dist/zip-full.js
CHANGED
|
@@ -6939,6 +6939,12 @@
|
|
|
6939
6939
|
return protocol == "http:" || protocol == "https:";
|
|
6940
6940
|
}
|
|
6941
6941
|
|
|
6942
|
+
async function initStream(stream) {
|
|
6943
|
+
if (stream.init && !stream.initialized) {
|
|
6944
|
+
await stream.init();
|
|
6945
|
+
}
|
|
6946
|
+
}
|
|
6947
|
+
|
|
6942
6948
|
/*
|
|
6943
6949
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
6944
6950
|
|
|
@@ -7183,9 +7189,7 @@
|
|
|
7183
7189
|
const zipReader = this;
|
|
7184
7190
|
let { reader } = zipReader;
|
|
7185
7191
|
const { config } = zipReader;
|
|
7186
|
-
|
|
7187
|
-
await reader.init();
|
|
7188
|
-
}
|
|
7192
|
+
await initStream(reader);
|
|
7189
7193
|
if (reader.size === undefined || !reader.readUint8Array) {
|
|
7190
7194
|
const blob = await new Response(reader.readable).blob();
|
|
7191
7195
|
reader = new BlobReader(blob);
|
|
@@ -7251,7 +7255,7 @@
|
|
|
7251
7255
|
throw new Error(ERR_BAD_FORMAT);
|
|
7252
7256
|
}
|
|
7253
7257
|
const filenameEncoding = getOptionValue$1(zipReader, options, "filenameEncoding");
|
|
7254
|
-
const commentEncoding = getOptionValue$1(zipReader, options, "commentEncoding");
|
|
7258
|
+
const commentEncoding = getOptionValue$1(zipReader, options, "commentEncoding");
|
|
7255
7259
|
for (let indexFile = 0; indexFile < filesLength; indexFile++) {
|
|
7256
7260
|
const fileEntry = new ZipEntry(reader, config, zipReader.options);
|
|
7257
7261
|
if (getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE) {
|
|
@@ -7272,7 +7276,7 @@
|
|
|
7272
7276
|
commentLength: getUint16(directoryView, offset + 32),
|
|
7273
7277
|
directory: msDosCompatible && ((getUint8(directoryView, offset + 38) & FILE_ATTR_MSDOS_DIR_MASK) == FILE_ATTR_MSDOS_DIR_MASK),
|
|
7274
7278
|
offset: getUint32(directoryView, offset + 42) + prependedDataLength,
|
|
7275
|
-
internalFileAttribute:
|
|
7279
|
+
internalFileAttribute: getUint16(directoryView, offset + 36),
|
|
7276
7280
|
externalFileAttribute: getUint32(directoryView, offset + 38),
|
|
7277
7281
|
rawFilename: directoryArray.subarray(filenameOffset, extraFieldOffset),
|
|
7278
7282
|
filenameUTF8: languageEncodingFlag,
|
|
@@ -7389,9 +7393,7 @@
|
|
|
7389
7393
|
readable.size = size;
|
|
7390
7394
|
const { writable } = writer;
|
|
7391
7395
|
const signal = getOptionValue$1(zipEntry, options, "signal");
|
|
7392
|
-
|
|
7393
|
-
await writer.init();
|
|
7394
|
-
}
|
|
7396
|
+
await initStream(writer);
|
|
7395
7397
|
const { onstart, onprogress, onend } = options;
|
|
7396
7398
|
const workerOptions = {
|
|
7397
7399
|
options: {
|
|
@@ -7851,9 +7853,7 @@
|
|
|
7851
7853
|
const internalFileAttribute = getOptionValue(zipWriter, options, "internalFileAttribute") || 0;
|
|
7852
7854
|
const externalFileAttribute = getOptionValue(zipWriter, options, "externalFileAttribute") || 0;
|
|
7853
7855
|
if (reader) {
|
|
7854
|
-
|
|
7855
|
-
await reader.init();
|
|
7856
|
-
}
|
|
7856
|
+
await initStream(reader);
|
|
7857
7857
|
if (reader.size === undefined) {
|
|
7858
7858
|
options.dataDescriptor = true;
|
|
7859
7859
|
} else {
|
|
@@ -7950,9 +7950,7 @@
|
|
|
7950
7950
|
bufferedWrite = true;
|
|
7951
7951
|
} else {
|
|
7952
7952
|
zipWriter.lockWriter = Promise.resolve();
|
|
7953
|
-
|
|
7954
|
-
await writer.init();
|
|
7955
|
-
}
|
|
7953
|
+
await initStream(writer);
|
|
7956
7954
|
fileWriter = writer;
|
|
7957
7955
|
}
|
|
7958
7956
|
fileEntry = await createFileEntry(reader, fileEntry, fileWriter.writable, zipWriter.config, options);
|
|
@@ -7978,7 +7976,7 @@
|
|
|
7978
7976
|
setUint32(arrayBufferView, 18, fileEntry.compressedSize);
|
|
7979
7977
|
setUint32(arrayBufferView, 22, fileEntry.uncompressedSize);
|
|
7980
7978
|
}
|
|
7981
|
-
await
|
|
7979
|
+
await writeData(writable, new Uint8Array(arrayBuffer));
|
|
7982
7980
|
blob = blob.slice(headerLength);
|
|
7983
7981
|
}
|
|
7984
7982
|
await blob.stream().pipeTo(writable, { preventClose: true, signal });
|
|
@@ -8098,6 +8096,7 @@
|
|
|
8098
8096
|
rawExtraFieldNTFS = rawExtraFieldExtendedTimestamp = new Uint8Array();
|
|
8099
8097
|
}
|
|
8100
8098
|
const fileEntry = {
|
|
8099
|
+
lock: pendingFileEntry.lock,
|
|
8101
8100
|
version: version || VERSION_DEFLATE,
|
|
8102
8101
|
versionMadeBy,
|
|
8103
8102
|
zip64,
|
|
@@ -8174,7 +8173,7 @@
|
|
|
8174
8173
|
let compressedSize = 0;
|
|
8175
8174
|
if (reader) {
|
|
8176
8175
|
reader.chunkSize = getChunkSize(config);
|
|
8177
|
-
await
|
|
8176
|
+
await writeData(writable, localHeaderArray);
|
|
8178
8177
|
fileEntry.dataWritten = pendingFileEntry.dataWritten = true;
|
|
8179
8178
|
const size = () => reader.size;
|
|
8180
8179
|
const readable = reader.readable;
|
|
@@ -8201,7 +8200,7 @@
|
|
|
8201
8200
|
uncompressedSize = fileEntry.uncompressedSize = reader.size = readable.size();
|
|
8202
8201
|
compressedSize = result.size;
|
|
8203
8202
|
} else {
|
|
8204
|
-
await
|
|
8203
|
+
await writeData(writable, localHeaderArray);
|
|
8205
8204
|
fileEntry.dataWritten = pendingFileEntry.dataWritten = true;
|
|
8206
8205
|
}
|
|
8207
8206
|
let dataDescriptorArray = new Uint8Array();
|
|
@@ -8245,7 +8244,7 @@
|
|
|
8245
8244
|
}
|
|
8246
8245
|
}
|
|
8247
8246
|
if (dataDescriptor) {
|
|
8248
|
-
await
|
|
8247
|
+
await writeData(writable, dataDescriptorArray);
|
|
8249
8248
|
}
|
|
8250
8249
|
const length = localHeaderArray.length + compressedSize + dataDescriptorArray.length;
|
|
8251
8250
|
Object.assign(fileEntry, {
|
|
@@ -8320,7 +8319,7 @@
|
|
|
8320
8319
|
arraySet(directoryArray, headerArray, offset + 6);
|
|
8321
8320
|
setUint16(directoryView, offset + 30, extraFieldLength);
|
|
8322
8321
|
setUint16(directoryView, offset + 32, rawComment.length);
|
|
8323
|
-
|
|
8322
|
+
setUint16(directoryView, offset + 36, internalFileAttribute);
|
|
8324
8323
|
if (externalFileAttribute) {
|
|
8325
8324
|
setUint32(directoryView, offset + 38, externalFileAttribute);
|
|
8326
8325
|
} else if (directory && msDosCompatible) {
|
|
@@ -8377,9 +8376,9 @@
|
|
|
8377
8376
|
}
|
|
8378
8377
|
}
|
|
8379
8378
|
const { writable } = zipWriter.writer;
|
|
8380
|
-
await
|
|
8379
|
+
await writeData(writable, directoryArray);
|
|
8381
8380
|
if (comment && comment.length) {
|
|
8382
|
-
await
|
|
8381
|
+
await writeData(writable, comment);
|
|
8383
8382
|
}
|
|
8384
8383
|
}
|
|
8385
8384
|
|
|
@@ -8391,7 +8390,7 @@
|
|
|
8391
8390
|
}
|
|
8392
8391
|
}
|
|
8393
8392
|
|
|
8394
|
-
async function
|
|
8393
|
+
async function writeData(writable, array) {
|
|
8395
8394
|
const streamWriter = writable.getWriter();
|
|
8396
8395
|
await streamWriter.ready;
|
|
8397
8396
|
await streamWriter.write(array);
|
|
@@ -8512,6 +8511,7 @@
|
|
|
8512
8511
|
exports.configure = configure;
|
|
8513
8512
|
exports.getMimeType = getMimeType;
|
|
8514
8513
|
exports.initShimAsyncCodec = streamCodecShim;
|
|
8514
|
+
exports.initStream = initStream;
|
|
8515
8515
|
exports.terminateWorkers = terminateWorkers;
|
|
8516
8516
|
|
|
8517
8517
|
Object.defineProperty(exports, '__esModule', { value: true });
|