@zip.js/zip.js 2.6.50 → 2.6.52
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 +38 -17
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +38 -17
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +38 -17
- 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 +38 -17
- package/dist/zip.min.js +1 -1
- package/index.cjs +38 -17
- package/index.d.ts +22 -8
- package/lib/core/io.js +14 -13
- package/lib/core/zip-writer.js +24 -4
- package/package.json +1 -1
package/dist/zip-fs-full.js
CHANGED
|
@@ -8168,7 +8168,7 @@
|
|
|
8168
8168
|
let diskSourceWriter, diskWritable, diskWriter;
|
|
8169
8169
|
const writable = new WritableStream({
|
|
8170
8170
|
async write(chunk) {
|
|
8171
|
-
|
|
8171
|
+
const { availableSize } = zipWriter;
|
|
8172
8172
|
if (!diskWriter) {
|
|
8173
8173
|
const { value, done } = await writerGenerator.next();
|
|
8174
8174
|
if (done && !value) {
|
|
@@ -8179,24 +8179,21 @@
|
|
|
8179
8179
|
if (diskSourceWriter.maxSize) {
|
|
8180
8180
|
zipWriter.maxSize = diskSourceWriter.maxSize;
|
|
8181
8181
|
}
|
|
8182
|
+
zipWriter.availableSize = zipWriter.maxSize;
|
|
8182
8183
|
await initStream(diskSourceWriter);
|
|
8183
8184
|
diskWritable = value.writable;
|
|
8184
8185
|
diskWriter = diskWritable.getWriter();
|
|
8185
8186
|
}
|
|
8186
8187
|
await this.write(chunk);
|
|
8187
|
-
} else if (
|
|
8188
|
-
|
|
8189
|
-
await writeChunk(chunk.slice(0, chunkLength));
|
|
8188
|
+
} else if (chunk.length >= availableSize) {
|
|
8189
|
+
await writeChunk(chunk.slice(0, availableSize));
|
|
8190
8190
|
await closeDisk();
|
|
8191
8191
|
zipWriter.diskOffset += diskSourceWriter.size;
|
|
8192
8192
|
zipWriter.diskNumber++;
|
|
8193
8193
|
diskWriter = null;
|
|
8194
|
-
await this.write(chunk.slice(
|
|
8194
|
+
await this.write(chunk.slice(availableSize));
|
|
8195
8195
|
} else {
|
|
8196
|
-
|
|
8197
|
-
await writeChunk(chunk);
|
|
8198
|
-
}
|
|
8199
|
-
zipWriter.availableSize = maxSize - diskSourceWriter.size;
|
|
8196
|
+
await writeChunk(chunk);
|
|
8200
8197
|
}
|
|
8201
8198
|
},
|
|
8202
8199
|
async close() {
|
|
@@ -8211,10 +8208,14 @@
|
|
|
8211
8208
|
});
|
|
8212
8209
|
|
|
8213
8210
|
async function writeChunk(chunk) {
|
|
8214
|
-
|
|
8215
|
-
|
|
8216
|
-
|
|
8217
|
-
|
|
8211
|
+
const chunkLength = chunk.length;
|
|
8212
|
+
if (chunkLength) {
|
|
8213
|
+
await diskWriter.ready;
|
|
8214
|
+
await diskWriter.write(chunk);
|
|
8215
|
+
diskSourceWriter.size += chunkLength;
|
|
8216
|
+
zipWriter.size += chunkLength;
|
|
8217
|
+
zipWriter.availableSize -= chunkLength;
|
|
8218
|
+
}
|
|
8218
8219
|
}
|
|
8219
8220
|
|
|
8220
8221
|
async function closeDisk() {
|
|
@@ -9277,6 +9278,9 @@
|
|
|
9277
9278
|
dataDescriptor,
|
|
9278
9279
|
signal
|
|
9279
9280
|
} = options;
|
|
9281
|
+
const {
|
|
9282
|
+
headerInfo
|
|
9283
|
+
} = entryInfo;
|
|
9280
9284
|
const previousFileEntry = Array.from(files.values()).pop();
|
|
9281
9285
|
let fileEntry = {};
|
|
9282
9286
|
let bufferedWrite;
|
|
@@ -9302,7 +9306,7 @@
|
|
|
9302
9306
|
initLockWriter();
|
|
9303
9307
|
}
|
|
9304
9308
|
await initStream(fileWriter);
|
|
9305
|
-
const { writable
|
|
9309
|
+
const { writable } = writer;
|
|
9306
9310
|
let { diskOffset } = writer;
|
|
9307
9311
|
if (zipWriter.addSplitZipSignature) {
|
|
9308
9312
|
delete zipWriter.addSplitZipSignature;
|
|
@@ -9314,7 +9318,9 @@
|
|
|
9314
9318
|
}
|
|
9315
9319
|
if (!bufferedWrite) {
|
|
9316
9320
|
await lockPreviousFileEntry;
|
|
9321
|
+
await skipDiskIfNeeded(writable);
|
|
9317
9322
|
}
|
|
9323
|
+
const { diskNumber } = writer;
|
|
9318
9324
|
writingEntryData = true;
|
|
9319
9325
|
fileEntry.diskNumberStart = diskNumber;
|
|
9320
9326
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
@@ -9330,6 +9336,7 @@
|
|
|
9330
9336
|
if (!dataDescriptor) {
|
|
9331
9337
|
blob = await writeMissingHeaderInfo(fileEntry, blob, writable, options);
|
|
9332
9338
|
}
|
|
9339
|
+
await skipDiskIfNeeded(writable);
|
|
9333
9340
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
9334
9341
|
diskOffset = writer.diskOffset;
|
|
9335
9342
|
await blob.stream().pipeTo(writable, { preventClose: true, signal });
|
|
@@ -9385,6 +9392,13 @@
|
|
|
9385
9392
|
zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = resolve);
|
|
9386
9393
|
}
|
|
9387
9394
|
}
|
|
9395
|
+
|
|
9396
|
+
async function skipDiskIfNeeded(writable) {
|
|
9397
|
+
if (headerInfo.localHeaderArray.length > writer.availableSize) {
|
|
9398
|
+
writer.availableSize = 0;
|
|
9399
|
+
await writeData(writable, new Uint8Array());
|
|
9400
|
+
}
|
|
9401
|
+
}
|
|
9388
9402
|
}
|
|
9389
9403
|
|
|
9390
9404
|
async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryInfo, config, options) {
|
|
@@ -9772,6 +9786,8 @@
|
|
|
9772
9786
|
}
|
|
9773
9787
|
const directoryArray = new Uint8Array(directoryDataLength);
|
|
9774
9788
|
const directoryView = getDataView(directoryArray);
|
|
9789
|
+
await initStream(writer);
|
|
9790
|
+
let directoryDiskOffset = 0;
|
|
9775
9791
|
for (const [indexFileEntry, fileEntry] of Array.from(files.values()).entries()) {
|
|
9776
9792
|
const {
|
|
9777
9793
|
offset: fileEntryOffset,
|
|
@@ -9824,7 +9840,13 @@
|
|
|
9824
9840
|
arraySet(directoryArray, rawExtraFieldNTFS, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp));
|
|
9825
9841
|
arraySet(directoryArray, rawExtraField, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS));
|
|
9826
9842
|
arraySet(directoryArray, rawComment, offset + 46 + getLength(rawFilename) + extraFieldLength);
|
|
9827
|
-
|
|
9843
|
+
const directoryEntryLength = 46 + getLength(rawFilename, rawComment) + extraFieldLength;
|
|
9844
|
+
if (offset - directoryDiskOffset > writer.availableSize) {
|
|
9845
|
+
writer.availableSize = 0;
|
|
9846
|
+
await writeData(writable, directoryArray.slice(directoryDiskOffset, offset));
|
|
9847
|
+
directoryDiskOffset = offset;
|
|
9848
|
+
}
|
|
9849
|
+
offset += directoryEntryLength;
|
|
9828
9850
|
if (options.onprogress) {
|
|
9829
9851
|
try {
|
|
9830
9852
|
await options.onprogress(indexFileEntry + 1, files.size, new Entry(fileEntry));
|
|
@@ -9833,8 +9855,7 @@
|
|
|
9833
9855
|
}
|
|
9834
9856
|
}
|
|
9835
9857
|
}
|
|
9836
|
-
await
|
|
9837
|
-
await writeData(writable, directoryArray);
|
|
9858
|
+
await writeData(writable, directoryDiskOffset ? directoryArray.slice(directoryDiskOffset) : directoryArray);
|
|
9838
9859
|
let lastDiskNumber = writer.diskNumber;
|
|
9839
9860
|
const { availableSize } = writer;
|
|
9840
9861
|
if (availableSize < END_OF_CENTRAL_DIR_LENGTH) {
|