@zip.js/zip.js 2.8.60 → 2.8.61
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/deno.json +1 -1
- package/dist/zip-core-external.js +29 -19
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +29 -19
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +35 -27
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +35 -27
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +35 -27
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +35 -27
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +35 -27
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +29 -19
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +29 -19
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +29 -19
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +35 -27
- package/index-native.min.js +1 -1
- package/index.cjs +35 -27
- package/index.min.js +1 -1
- package/lib/core/version.js +1 -1
- package/lib/core/zip-fs.js +5 -4
- package/lib/core/zip-writer.js +37 -31
- package/package.json +2 -1
- package/release.sh +47 -0
|
@@ -6705,6 +6705,13 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6705
6705
|
const { comment } = metadataInfo;
|
|
6706
6706
|
const extraField = options[PROPERTY_NAME_EXTRA_FIELD];
|
|
6707
6707
|
zipWriter.fileEntries.set(name, UNDEFINED_VALUE);
|
|
6708
|
+
const previousFileEntry = zipWriter.lastFileEntry;
|
|
6709
|
+
const pendingFileEntry = {};
|
|
6710
|
+
let releaseLockFileEntry;
|
|
6711
|
+
if (metadataInfo.resolvedOptions.keepOrder) {
|
|
6712
|
+
pendingFileEntry.lockFileEntry = new Promise(resolve => releaseLockFileEntry = resolve);
|
|
6713
|
+
}
|
|
6714
|
+
zipWriter.lastFileEntry = pendingFileEntry;
|
|
6708
6715
|
let fileEntry;
|
|
6709
6716
|
try {
|
|
6710
6717
|
const { resolvedOptions } = metadataInfo;
|
|
@@ -6726,10 +6733,21 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6726
6733
|
const headerInfo = getHeaderInfo(options);
|
|
6727
6734
|
const dataDescriptorInfo = getDataDescriptorInfo(options);
|
|
6728
6735
|
const metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray);
|
|
6729
|
-
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6736
|
+
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6737
|
+
headerInfo,
|
|
6738
|
+
dataDescriptorInfo,
|
|
6739
|
+
metadataSize,
|
|
6740
|
+
fileEntry: pendingFileEntry,
|
|
6741
|
+
previousFileEntry,
|
|
6742
|
+
releaseLockFileEntry
|
|
6743
|
+
}, options);
|
|
6730
6744
|
} catch (error) {
|
|
6731
6745
|
zipWriter.fileEntries.delete(name);
|
|
6732
6746
|
throw error;
|
|
6747
|
+
} finally {
|
|
6748
|
+
if (releaseLockFileEntry) {
|
|
6749
|
+
releaseLockFileEntry(previousFileEntry && previousFileEntry.lockFileEntry);
|
|
6750
|
+
}
|
|
6733
6751
|
}
|
|
6734
6752
|
Object.assign(fileEntry, {
|
|
6735
6753
|
name,
|
|
@@ -7117,7 +7135,6 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
7117
7135
|
}
|
|
7118
7136
|
const usdz = writerOptions[OPTION_USDZ];
|
|
7119
7137
|
const files = new Map();
|
|
7120
|
-
let layoutDependsOnWriteOrder = Boolean(usdz);
|
|
7121
7138
|
const initialOffset = writerOptions[OPTION_OFFSET] === UNDEFINED_VALUE ? 0 : writerOptions[OPTION_OFFSET];
|
|
7122
7139
|
let offset = initialOffset;
|
|
7123
7140
|
let minimumEntrySize = INFINITY_VALUE;
|
|
@@ -7163,9 +7180,7 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
7163
7180
|
minimumEntrySize = Math.min(minimumEntrySize, entrySize);
|
|
7164
7181
|
offset += entrySize;
|
|
7165
7182
|
}
|
|
7166
|
-
|
|
7167
|
-
layoutDependsOnWriteOrder = true;
|
|
7168
|
-
}
|
|
7183
|
+
const layoutDependsOnWriteOrder = files.size > 1 && (usdz || offset - minimumEntrySize >= MAX_32_BITS);
|
|
7169
7184
|
if (layoutDependsOnWriteOrder && !writeOrderGuaranteed) {
|
|
7170
7185
|
throw new Error(ERR_UNDETERMINED_SIZE);
|
|
7171
7186
|
}
|
|
@@ -7193,27 +7208,23 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7193
7208
|
signal
|
|
7194
7209
|
} = options;
|
|
7195
7210
|
const {
|
|
7196
|
-
headerInfo
|
|
7211
|
+
headerInfo,
|
|
7212
|
+
fileEntry: pendingFileEntry,
|
|
7213
|
+
previousFileEntry,
|
|
7214
|
+
releaseLockFileEntry
|
|
7197
7215
|
} = entryInfo;
|
|
7198
7216
|
const usdz = zipWriter.options[OPTION_USDZ];
|
|
7199
|
-
|
|
7200
|
-
let fileEntry = {};
|
|
7217
|
+
let fileEntry = pendingFileEntry;
|
|
7201
7218
|
let bufferedWrite;
|
|
7202
7219
|
let releaseLockWriter;
|
|
7203
|
-
let releaseLockCurrentFileEntry;
|
|
7204
7220
|
let writingBufferedEntryData;
|
|
7205
7221
|
let writingEntryData;
|
|
7206
7222
|
let writerSizeBeforeEntry;
|
|
7207
7223
|
let flushedBufferedSize = 0;
|
|
7208
7224
|
let fileWriter;
|
|
7225
|
+
const lockPreviousFileEntry = keepOrder && previousFileEntry ? previousFileEntry.lockFileEntry : UNDEFINED_VALUE;
|
|
7209
7226
|
fileEntries.set(name, fileEntry);
|
|
7210
|
-
zipWriter.lastFileEntry = fileEntry;
|
|
7211
7227
|
try {
|
|
7212
|
-
let lockPreviousFileEntry;
|
|
7213
|
-
if (keepOrder) {
|
|
7214
|
-
lockPreviousFileEntry = previousFileEntry && previousFileEntry.lockFileEntry;
|
|
7215
|
-
requestLockCurrentFileEntry();
|
|
7216
|
-
}
|
|
7217
7228
|
if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || (!dataDescriptor && !emptyEntry)) {
|
|
7218
7229
|
bufferedWrite = true;
|
|
7219
7230
|
zipWriter.bufferedWrites++;
|
|
@@ -7226,6 +7237,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7226
7237
|
await initStream(writer);
|
|
7227
7238
|
} else {
|
|
7228
7239
|
fileWriter = writer;
|
|
7240
|
+
await lockPreviousFileEntry;
|
|
7229
7241
|
await requestLockWriter();
|
|
7230
7242
|
}
|
|
7231
7243
|
await initStream(fileWriter);
|
|
@@ -7238,7 +7250,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7238
7250
|
}
|
|
7239
7251
|
const { localHeaderArray } = headerInfo;
|
|
7240
7252
|
if (!bufferedWrite) {
|
|
7241
|
-
await lockPreviousFileEntry;
|
|
7242
7253
|
await skipDiskIfNeeded();
|
|
7243
7254
|
}
|
|
7244
7255
|
const diskNumberStart = getDiskNumber(writer);
|
|
@@ -7303,8 +7314,8 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7303
7314
|
if (bufferedWrite) {
|
|
7304
7315
|
zipWriter.bufferedWrites--;
|
|
7305
7316
|
}
|
|
7306
|
-
if (
|
|
7307
|
-
|
|
7317
|
+
if (releaseLockFileEntry) {
|
|
7318
|
+
releaseLockFileEntry(lockPreviousFileEntry);
|
|
7308
7319
|
}
|
|
7309
7320
|
if (releaseLockWriter) {
|
|
7310
7321
|
releaseLockWriter();
|
|
@@ -7318,10 +7329,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7318
7329
|
}
|
|
7319
7330
|
}
|
|
7320
7331
|
|
|
7321
|
-
function requestLockCurrentFileEntry() {
|
|
7322
|
-
fileEntry.lockFileEntry = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
|
|
7323
|
-
}
|
|
7324
|
-
|
|
7325
7332
|
async function requestLockWriter() {
|
|
7326
7333
|
zipWriter.writerLocked = true;
|
|
7327
7334
|
const { lockWriter } = zipWriter;
|
|
@@ -8641,7 +8648,7 @@ function formatSupported(StreamClass, format) {
|
|
|
8641
8648
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8642
8649
|
*/
|
|
8643
8650
|
|
|
8644
|
-
const VERSION = "2.8.
|
|
8651
|
+
const VERSION = "2.8.61";
|
|
8645
8652
|
|
|
8646
8653
|
/*
|
|
8647
8654
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9965,12 +9972,13 @@ class ZipDirectoryEntry extends ZipEntry {
|
|
|
9965
9972
|
if (options.bufferedWrite === UNDEFINED_VALUE) {
|
|
9966
9973
|
options.bufferedWrite = true;
|
|
9967
9974
|
}
|
|
9968
|
-
const
|
|
9969
|
-
(options.keepOrder !== false && zipEntry.children.every(child => !child.children.length));
|
|
9970
|
-
return getEntriesSize(options, zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9975
|
+
const entries = zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9971
9976
|
const { name, entryOptions } = getChildEntryOptions(child, zipEntry, options);
|
|
9972
9977
|
return { name, size: child.directory ? 0 : getDeterminedSize(child, isPassThrough(child, options)), options: entryOptions };
|
|
9973
|
-
})
|
|
9978
|
+
});
|
|
9979
|
+
const writeOrderGuaranteed = !options.bufferedWrite ||
|
|
9980
|
+
(entries.every(entry => entry.options.keepOrder !== false) && zipEntry.children.every(child => !child.children.length));
|
|
9981
|
+
return getEntriesSize(options, entries, writeOrderGuaranteed, options.globalComment);
|
|
9974
9982
|
}
|
|
9975
9983
|
|
|
9976
9984
|
getChildByName(name) {
|