@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.js
CHANGED
|
@@ -2944,7 +2944,7 @@
|
|
|
2944
2944
|
let diskSourceWriter, diskWritable, diskWriter;
|
|
2945
2945
|
const writable = new WritableStream({
|
|
2946
2946
|
async write(chunk) {
|
|
2947
|
-
|
|
2947
|
+
const { availableSize } = zipWriter;
|
|
2948
2948
|
if (!diskWriter) {
|
|
2949
2949
|
const { value, done } = await writerGenerator.next();
|
|
2950
2950
|
if (done && !value) {
|
|
@@ -2955,24 +2955,21 @@
|
|
|
2955
2955
|
if (diskSourceWriter.maxSize) {
|
|
2956
2956
|
zipWriter.maxSize = diskSourceWriter.maxSize;
|
|
2957
2957
|
}
|
|
2958
|
+
zipWriter.availableSize = zipWriter.maxSize;
|
|
2958
2959
|
await initStream(diskSourceWriter);
|
|
2959
2960
|
diskWritable = value.writable;
|
|
2960
2961
|
diskWriter = diskWritable.getWriter();
|
|
2961
2962
|
}
|
|
2962
2963
|
await this.write(chunk);
|
|
2963
|
-
} else if (
|
|
2964
|
-
|
|
2965
|
-
await writeChunk(chunk.slice(0, chunkLength));
|
|
2964
|
+
} else if (chunk.length >= availableSize) {
|
|
2965
|
+
await writeChunk(chunk.slice(0, availableSize));
|
|
2966
2966
|
await closeDisk();
|
|
2967
2967
|
zipWriter.diskOffset += diskSourceWriter.size;
|
|
2968
2968
|
zipWriter.diskNumber++;
|
|
2969
2969
|
diskWriter = null;
|
|
2970
|
-
await this.write(chunk.slice(
|
|
2970
|
+
await this.write(chunk.slice(availableSize));
|
|
2971
2971
|
} else {
|
|
2972
|
-
|
|
2973
|
-
await writeChunk(chunk);
|
|
2974
|
-
}
|
|
2975
|
-
zipWriter.availableSize = maxSize - diskSourceWriter.size;
|
|
2972
|
+
await writeChunk(chunk);
|
|
2976
2973
|
}
|
|
2977
2974
|
},
|
|
2978
2975
|
async close() {
|
|
@@ -2987,10 +2984,14 @@
|
|
|
2987
2984
|
});
|
|
2988
2985
|
|
|
2989
2986
|
async function writeChunk(chunk) {
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2987
|
+
const chunkLength = chunk.length;
|
|
2988
|
+
if (chunkLength) {
|
|
2989
|
+
await diskWriter.ready;
|
|
2990
|
+
await diskWriter.write(chunk);
|
|
2991
|
+
diskSourceWriter.size += chunkLength;
|
|
2992
|
+
zipWriter.size += chunkLength;
|
|
2993
|
+
zipWriter.availableSize -= chunkLength;
|
|
2994
|
+
}
|
|
2994
2995
|
}
|
|
2995
2996
|
|
|
2996
2997
|
async function closeDisk() {
|
|
@@ -4053,6 +4054,9 @@
|
|
|
4053
4054
|
dataDescriptor,
|
|
4054
4055
|
signal
|
|
4055
4056
|
} = options;
|
|
4057
|
+
const {
|
|
4058
|
+
headerInfo
|
|
4059
|
+
} = entryInfo;
|
|
4056
4060
|
const previousFileEntry = Array.from(files.values()).pop();
|
|
4057
4061
|
let fileEntry = {};
|
|
4058
4062
|
let bufferedWrite;
|
|
@@ -4078,7 +4082,7 @@
|
|
|
4078
4082
|
initLockWriter();
|
|
4079
4083
|
}
|
|
4080
4084
|
await initStream(fileWriter);
|
|
4081
|
-
const { writable
|
|
4085
|
+
const { writable } = writer;
|
|
4082
4086
|
let { diskOffset } = writer;
|
|
4083
4087
|
if (zipWriter.addSplitZipSignature) {
|
|
4084
4088
|
delete zipWriter.addSplitZipSignature;
|
|
@@ -4090,7 +4094,9 @@
|
|
|
4090
4094
|
}
|
|
4091
4095
|
if (!bufferedWrite) {
|
|
4092
4096
|
await lockPreviousFileEntry;
|
|
4097
|
+
await skipDiskIfNeeded(writable);
|
|
4093
4098
|
}
|
|
4099
|
+
const { diskNumber } = writer;
|
|
4094
4100
|
writingEntryData = true;
|
|
4095
4101
|
fileEntry.diskNumberStart = diskNumber;
|
|
4096
4102
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
@@ -4106,6 +4112,7 @@
|
|
|
4106
4112
|
if (!dataDescriptor) {
|
|
4107
4113
|
blob = await writeMissingHeaderInfo(fileEntry, blob, writable, options);
|
|
4108
4114
|
}
|
|
4115
|
+
await skipDiskIfNeeded(writable);
|
|
4109
4116
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
4110
4117
|
diskOffset = writer.diskOffset;
|
|
4111
4118
|
await blob.stream().pipeTo(writable, { preventClose: true, signal });
|
|
@@ -4161,6 +4168,13 @@
|
|
|
4161
4168
|
zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = resolve);
|
|
4162
4169
|
}
|
|
4163
4170
|
}
|
|
4171
|
+
|
|
4172
|
+
async function skipDiskIfNeeded(writable) {
|
|
4173
|
+
if (headerInfo.localHeaderArray.length > writer.availableSize) {
|
|
4174
|
+
writer.availableSize = 0;
|
|
4175
|
+
await writeData(writable, new Uint8Array());
|
|
4176
|
+
}
|
|
4177
|
+
}
|
|
4164
4178
|
}
|
|
4165
4179
|
|
|
4166
4180
|
async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryInfo, config, options) {
|
|
@@ -4548,6 +4562,8 @@
|
|
|
4548
4562
|
}
|
|
4549
4563
|
const directoryArray = new Uint8Array(directoryDataLength);
|
|
4550
4564
|
const directoryView = getDataView(directoryArray);
|
|
4565
|
+
await initStream(writer);
|
|
4566
|
+
let directoryDiskOffset = 0;
|
|
4551
4567
|
for (const [indexFileEntry, fileEntry] of Array.from(files.values()).entries()) {
|
|
4552
4568
|
const {
|
|
4553
4569
|
offset: fileEntryOffset,
|
|
@@ -4600,7 +4616,13 @@
|
|
|
4600
4616
|
arraySet(directoryArray, rawExtraFieldNTFS, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp));
|
|
4601
4617
|
arraySet(directoryArray, rawExtraField, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS));
|
|
4602
4618
|
arraySet(directoryArray, rawComment, offset + 46 + getLength(rawFilename) + extraFieldLength);
|
|
4603
|
-
|
|
4619
|
+
const directoryEntryLength = 46 + getLength(rawFilename, rawComment) + extraFieldLength;
|
|
4620
|
+
if (offset - directoryDiskOffset > writer.availableSize) {
|
|
4621
|
+
writer.availableSize = 0;
|
|
4622
|
+
await writeData(writable, directoryArray.slice(directoryDiskOffset, offset));
|
|
4623
|
+
directoryDiskOffset = offset;
|
|
4624
|
+
}
|
|
4625
|
+
offset += directoryEntryLength;
|
|
4604
4626
|
if (options.onprogress) {
|
|
4605
4627
|
try {
|
|
4606
4628
|
await options.onprogress(indexFileEntry + 1, files.size, new Entry(fileEntry));
|
|
@@ -4609,8 +4631,7 @@
|
|
|
4609
4631
|
}
|
|
4610
4632
|
}
|
|
4611
4633
|
}
|
|
4612
|
-
await
|
|
4613
|
-
await writeData(writable, directoryArray);
|
|
4634
|
+
await writeData(writable, directoryDiskOffset ? directoryArray.slice(directoryDiskOffset) : directoryArray);
|
|
4614
4635
|
let lastDiskNumber = writer.diskNumber;
|
|
4615
4636
|
const { availableSize } = writer;
|
|
4616
4637
|
if (availableSize < END_OF_CENTRAL_DIR_LENGTH) {
|