@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-full.js
CHANGED
|
@@ -7167,7 +7167,7 @@
|
|
|
7167
7167
|
let diskSourceWriter, diskWritable, diskWriter;
|
|
7168
7168
|
const writable = new WritableStream({
|
|
7169
7169
|
async write(chunk) {
|
|
7170
|
-
|
|
7170
|
+
const { availableSize } = zipWriter;
|
|
7171
7171
|
if (!diskWriter) {
|
|
7172
7172
|
const { value, done } = await writerGenerator.next();
|
|
7173
7173
|
if (done && !value) {
|
|
@@ -7178,24 +7178,21 @@
|
|
|
7178
7178
|
if (diskSourceWriter.maxSize) {
|
|
7179
7179
|
zipWriter.maxSize = diskSourceWriter.maxSize;
|
|
7180
7180
|
}
|
|
7181
|
+
zipWriter.availableSize = zipWriter.maxSize;
|
|
7181
7182
|
await initStream(diskSourceWriter);
|
|
7182
7183
|
diskWritable = value.writable;
|
|
7183
7184
|
diskWriter = diskWritable.getWriter();
|
|
7184
7185
|
}
|
|
7185
7186
|
await this.write(chunk);
|
|
7186
|
-
} else if (
|
|
7187
|
-
|
|
7188
|
-
await writeChunk(chunk.slice(0, chunkLength));
|
|
7187
|
+
} else if (chunk.length >= availableSize) {
|
|
7188
|
+
await writeChunk(chunk.slice(0, availableSize));
|
|
7189
7189
|
await closeDisk();
|
|
7190
7190
|
zipWriter.diskOffset += diskSourceWriter.size;
|
|
7191
7191
|
zipWriter.diskNumber++;
|
|
7192
7192
|
diskWriter = null;
|
|
7193
|
-
await this.write(chunk.slice(
|
|
7193
|
+
await this.write(chunk.slice(availableSize));
|
|
7194
7194
|
} else {
|
|
7195
|
-
|
|
7196
|
-
await writeChunk(chunk);
|
|
7197
|
-
}
|
|
7198
|
-
zipWriter.availableSize = maxSize - diskSourceWriter.size;
|
|
7195
|
+
await writeChunk(chunk);
|
|
7199
7196
|
}
|
|
7200
7197
|
},
|
|
7201
7198
|
async close() {
|
|
@@ -7210,10 +7207,14 @@
|
|
|
7210
7207
|
});
|
|
7211
7208
|
|
|
7212
7209
|
async function writeChunk(chunk) {
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
|
|
7216
|
-
|
|
7210
|
+
const chunkLength = chunk.length;
|
|
7211
|
+
if (chunkLength) {
|
|
7212
|
+
await diskWriter.ready;
|
|
7213
|
+
await diskWriter.write(chunk);
|
|
7214
|
+
diskSourceWriter.size += chunkLength;
|
|
7215
|
+
zipWriter.size += chunkLength;
|
|
7216
|
+
zipWriter.availableSize -= chunkLength;
|
|
7217
|
+
}
|
|
7217
7218
|
}
|
|
7218
7219
|
|
|
7219
7220
|
async function closeDisk() {
|
|
@@ -8276,6 +8277,9 @@
|
|
|
8276
8277
|
dataDescriptor,
|
|
8277
8278
|
signal
|
|
8278
8279
|
} = options;
|
|
8280
|
+
const {
|
|
8281
|
+
headerInfo
|
|
8282
|
+
} = entryInfo;
|
|
8279
8283
|
const previousFileEntry = Array.from(files.values()).pop();
|
|
8280
8284
|
let fileEntry = {};
|
|
8281
8285
|
let bufferedWrite;
|
|
@@ -8301,7 +8305,7 @@
|
|
|
8301
8305
|
initLockWriter();
|
|
8302
8306
|
}
|
|
8303
8307
|
await initStream(fileWriter);
|
|
8304
|
-
const { writable
|
|
8308
|
+
const { writable } = writer;
|
|
8305
8309
|
let { diskOffset } = writer;
|
|
8306
8310
|
if (zipWriter.addSplitZipSignature) {
|
|
8307
8311
|
delete zipWriter.addSplitZipSignature;
|
|
@@ -8313,7 +8317,9 @@
|
|
|
8313
8317
|
}
|
|
8314
8318
|
if (!bufferedWrite) {
|
|
8315
8319
|
await lockPreviousFileEntry;
|
|
8320
|
+
await skipDiskIfNeeded(writable);
|
|
8316
8321
|
}
|
|
8322
|
+
const { diskNumber } = writer;
|
|
8317
8323
|
writingEntryData = true;
|
|
8318
8324
|
fileEntry.diskNumberStart = diskNumber;
|
|
8319
8325
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
@@ -8329,6 +8335,7 @@
|
|
|
8329
8335
|
if (!dataDescriptor) {
|
|
8330
8336
|
blob = await writeMissingHeaderInfo(fileEntry, blob, writable, options);
|
|
8331
8337
|
}
|
|
8338
|
+
await skipDiskIfNeeded(writable);
|
|
8332
8339
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
8333
8340
|
diskOffset = writer.diskOffset;
|
|
8334
8341
|
await blob.stream().pipeTo(writable, { preventClose: true, signal });
|
|
@@ -8384,6 +8391,13 @@
|
|
|
8384
8391
|
zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = resolve);
|
|
8385
8392
|
}
|
|
8386
8393
|
}
|
|
8394
|
+
|
|
8395
|
+
async function skipDiskIfNeeded(writable) {
|
|
8396
|
+
if (headerInfo.localHeaderArray.length > writer.availableSize) {
|
|
8397
|
+
writer.availableSize = 0;
|
|
8398
|
+
await writeData(writable, new Uint8Array());
|
|
8399
|
+
}
|
|
8400
|
+
}
|
|
8387
8401
|
}
|
|
8388
8402
|
|
|
8389
8403
|
async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryInfo, config, options) {
|
|
@@ -8771,6 +8785,8 @@
|
|
|
8771
8785
|
}
|
|
8772
8786
|
const directoryArray = new Uint8Array(directoryDataLength);
|
|
8773
8787
|
const directoryView = getDataView(directoryArray);
|
|
8788
|
+
await initStream(writer);
|
|
8789
|
+
let directoryDiskOffset = 0;
|
|
8774
8790
|
for (const [indexFileEntry, fileEntry] of Array.from(files.values()).entries()) {
|
|
8775
8791
|
const {
|
|
8776
8792
|
offset: fileEntryOffset,
|
|
@@ -8823,7 +8839,13 @@
|
|
|
8823
8839
|
arraySet(directoryArray, rawExtraFieldNTFS, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp));
|
|
8824
8840
|
arraySet(directoryArray, rawExtraField, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS));
|
|
8825
8841
|
arraySet(directoryArray, rawComment, offset + 46 + getLength(rawFilename) + extraFieldLength);
|
|
8826
|
-
|
|
8842
|
+
const directoryEntryLength = 46 + getLength(rawFilename, rawComment) + extraFieldLength;
|
|
8843
|
+
if (offset - directoryDiskOffset > writer.availableSize) {
|
|
8844
|
+
writer.availableSize = 0;
|
|
8845
|
+
await writeData(writable, directoryArray.slice(directoryDiskOffset, offset));
|
|
8846
|
+
directoryDiskOffset = offset;
|
|
8847
|
+
}
|
|
8848
|
+
offset += directoryEntryLength;
|
|
8827
8849
|
if (options.onprogress) {
|
|
8828
8850
|
try {
|
|
8829
8851
|
await options.onprogress(indexFileEntry + 1, files.size, new Entry(fileEntry));
|
|
@@ -8832,8 +8854,7 @@
|
|
|
8832
8854
|
}
|
|
8833
8855
|
}
|
|
8834
8856
|
}
|
|
8835
|
-
await
|
|
8836
|
-
await writeData(writable, directoryArray);
|
|
8857
|
+
await writeData(writable, directoryDiskOffset ? directoryArray.slice(directoryDiskOffset) : directoryArray);
|
|
8837
8858
|
let lastDiskNumber = writer.diskNumber;
|
|
8838
8859
|
const { availableSize } = writer;
|
|
8839
8860
|
if (availableSize < END_OF_CENTRAL_DIR_LENGTH) {
|