@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
package/dist/zip-fs.js
CHANGED
|
@@ -6680,6 +6680,13 @@
|
|
|
6680
6680
|
const { comment } = metadataInfo;
|
|
6681
6681
|
const extraField = options[PROPERTY_NAME_EXTRA_FIELD];
|
|
6682
6682
|
zipWriter.fileEntries.set(name, UNDEFINED_VALUE);
|
|
6683
|
+
const previousFileEntry = zipWriter.lastFileEntry;
|
|
6684
|
+
const pendingFileEntry = {};
|
|
6685
|
+
let releaseLockFileEntry;
|
|
6686
|
+
if (metadataInfo.resolvedOptions.keepOrder) {
|
|
6687
|
+
pendingFileEntry.lockFileEntry = new Promise(resolve => releaseLockFileEntry = resolve);
|
|
6688
|
+
}
|
|
6689
|
+
zipWriter.lastFileEntry = pendingFileEntry;
|
|
6683
6690
|
let fileEntry;
|
|
6684
6691
|
try {
|
|
6685
6692
|
const { resolvedOptions } = metadataInfo;
|
|
@@ -6701,10 +6708,21 @@
|
|
|
6701
6708
|
const headerInfo = getHeaderInfo(options);
|
|
6702
6709
|
const dataDescriptorInfo = getDataDescriptorInfo(options);
|
|
6703
6710
|
const metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray);
|
|
6704
|
-
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6711
|
+
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6712
|
+
headerInfo,
|
|
6713
|
+
dataDescriptorInfo,
|
|
6714
|
+
metadataSize,
|
|
6715
|
+
fileEntry: pendingFileEntry,
|
|
6716
|
+
previousFileEntry,
|
|
6717
|
+
releaseLockFileEntry
|
|
6718
|
+
}, options);
|
|
6705
6719
|
} catch (error) {
|
|
6706
6720
|
zipWriter.fileEntries.delete(name);
|
|
6707
6721
|
throw error;
|
|
6722
|
+
} finally {
|
|
6723
|
+
if (releaseLockFileEntry) {
|
|
6724
|
+
releaseLockFileEntry(previousFileEntry && previousFileEntry.lockFileEntry);
|
|
6725
|
+
}
|
|
6708
6726
|
}
|
|
6709
6727
|
Object.assign(fileEntry, {
|
|
6710
6728
|
name,
|
|
@@ -7092,7 +7110,6 @@
|
|
|
7092
7110
|
}
|
|
7093
7111
|
const usdz = writerOptions[OPTION_USDZ];
|
|
7094
7112
|
const files = new Map();
|
|
7095
|
-
let layoutDependsOnWriteOrder = Boolean(usdz);
|
|
7096
7113
|
const initialOffset = writerOptions[OPTION_OFFSET] === UNDEFINED_VALUE ? 0 : writerOptions[OPTION_OFFSET];
|
|
7097
7114
|
let offset = initialOffset;
|
|
7098
7115
|
let minimumEntrySize = INFINITY_VALUE;
|
|
@@ -7138,9 +7155,7 @@
|
|
|
7138
7155
|
minimumEntrySize = Math.min(minimumEntrySize, entrySize);
|
|
7139
7156
|
offset += entrySize;
|
|
7140
7157
|
}
|
|
7141
|
-
|
|
7142
|
-
layoutDependsOnWriteOrder = true;
|
|
7143
|
-
}
|
|
7158
|
+
const layoutDependsOnWriteOrder = files.size > 1 && (usdz || offset - minimumEntrySize >= MAX_32_BITS);
|
|
7144
7159
|
if (layoutDependsOnWriteOrder && !writeOrderGuaranteed) {
|
|
7145
7160
|
throw new Error(ERR_UNDETERMINED_SIZE);
|
|
7146
7161
|
}
|
|
@@ -7168,27 +7183,23 @@
|
|
|
7168
7183
|
signal
|
|
7169
7184
|
} = options;
|
|
7170
7185
|
const {
|
|
7171
|
-
headerInfo
|
|
7186
|
+
headerInfo,
|
|
7187
|
+
fileEntry: pendingFileEntry,
|
|
7188
|
+
previousFileEntry,
|
|
7189
|
+
releaseLockFileEntry
|
|
7172
7190
|
} = entryInfo;
|
|
7173
7191
|
const usdz = zipWriter.options[OPTION_USDZ];
|
|
7174
|
-
|
|
7175
|
-
let fileEntry = {};
|
|
7192
|
+
let fileEntry = pendingFileEntry;
|
|
7176
7193
|
let bufferedWrite;
|
|
7177
7194
|
let releaseLockWriter;
|
|
7178
|
-
let releaseLockCurrentFileEntry;
|
|
7179
7195
|
let writingBufferedEntryData;
|
|
7180
7196
|
let writingEntryData;
|
|
7181
7197
|
let writerSizeBeforeEntry;
|
|
7182
7198
|
let flushedBufferedSize = 0;
|
|
7183
7199
|
let fileWriter;
|
|
7200
|
+
const lockPreviousFileEntry = keepOrder && previousFileEntry ? previousFileEntry.lockFileEntry : UNDEFINED_VALUE;
|
|
7184
7201
|
fileEntries.set(name, fileEntry);
|
|
7185
|
-
zipWriter.lastFileEntry = fileEntry;
|
|
7186
7202
|
try {
|
|
7187
|
-
let lockPreviousFileEntry;
|
|
7188
|
-
if (keepOrder) {
|
|
7189
|
-
lockPreviousFileEntry = previousFileEntry && previousFileEntry.lockFileEntry;
|
|
7190
|
-
requestLockCurrentFileEntry();
|
|
7191
|
-
}
|
|
7192
7203
|
if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || (!dataDescriptor && !emptyEntry)) {
|
|
7193
7204
|
bufferedWrite = true;
|
|
7194
7205
|
zipWriter.bufferedWrites++;
|
|
@@ -7201,6 +7212,7 @@
|
|
|
7201
7212
|
await initStream(writer);
|
|
7202
7213
|
} else {
|
|
7203
7214
|
fileWriter = writer;
|
|
7215
|
+
await lockPreviousFileEntry;
|
|
7204
7216
|
await requestLockWriter();
|
|
7205
7217
|
}
|
|
7206
7218
|
await initStream(fileWriter);
|
|
@@ -7213,7 +7225,6 @@
|
|
|
7213
7225
|
}
|
|
7214
7226
|
const { localHeaderArray } = headerInfo;
|
|
7215
7227
|
if (!bufferedWrite) {
|
|
7216
|
-
await lockPreviousFileEntry;
|
|
7217
7228
|
await skipDiskIfNeeded();
|
|
7218
7229
|
}
|
|
7219
7230
|
const diskNumberStart = getDiskNumber(writer);
|
|
@@ -7278,8 +7289,8 @@
|
|
|
7278
7289
|
if (bufferedWrite) {
|
|
7279
7290
|
zipWriter.bufferedWrites--;
|
|
7280
7291
|
}
|
|
7281
|
-
if (
|
|
7282
|
-
|
|
7292
|
+
if (releaseLockFileEntry) {
|
|
7293
|
+
releaseLockFileEntry(lockPreviousFileEntry);
|
|
7283
7294
|
}
|
|
7284
7295
|
if (releaseLockWriter) {
|
|
7285
7296
|
releaseLockWriter();
|
|
@@ -7293,10 +7304,6 @@
|
|
|
7293
7304
|
}
|
|
7294
7305
|
}
|
|
7295
7306
|
|
|
7296
|
-
function requestLockCurrentFileEntry() {
|
|
7297
|
-
fileEntry.lockFileEntry = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
|
|
7298
|
-
}
|
|
7299
|
-
|
|
7300
7307
|
async function requestLockWriter() {
|
|
7301
7308
|
zipWriter.writerLocked = true;
|
|
7302
7309
|
const { lockWriter } = zipWriter;
|
|
@@ -8616,7 +8623,7 @@
|
|
|
8616
8623
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8617
8624
|
*/
|
|
8618
8625
|
|
|
8619
|
-
const VERSION = "2.8.
|
|
8626
|
+
const VERSION = "2.8.61";
|
|
8620
8627
|
|
|
8621
8628
|
/*
|
|
8622
8629
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9968,12 +9975,13 @@
|
|
|
9968
9975
|
if (options.bufferedWrite === UNDEFINED_VALUE) {
|
|
9969
9976
|
options.bufferedWrite = true;
|
|
9970
9977
|
}
|
|
9971
|
-
const
|
|
9972
|
-
(options.keepOrder !== false && zipEntry.children.every(child => !child.children.length));
|
|
9973
|
-
return getEntriesSize(options, zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9978
|
+
const entries = zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9974
9979
|
const { name, entryOptions } = getChildEntryOptions(child, zipEntry, options);
|
|
9975
9980
|
return { name, size: child.directory ? 0 : getDeterminedSize(child, isPassThrough(child, options)), options: entryOptions };
|
|
9976
|
-
})
|
|
9981
|
+
});
|
|
9982
|
+
const writeOrderGuaranteed = !options.bufferedWrite ||
|
|
9983
|
+
(entries.every(entry => entry.options.keepOrder !== false) && zipEntry.children.every(child => !child.children.length));
|
|
9984
|
+
return getEntriesSize(options, entries, writeOrderGuaranteed, options.globalComment);
|
|
9977
9985
|
}
|
|
9978
9986
|
|
|
9979
9987
|
getChildByName(name) {
|