@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/index-native.cjs
CHANGED
|
@@ -6670,6 +6670,13 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6670
6670
|
const { comment } = metadataInfo;
|
|
6671
6671
|
const extraField = options[PROPERTY_NAME_EXTRA_FIELD];
|
|
6672
6672
|
zipWriter.fileEntries.set(name, UNDEFINED_VALUE);
|
|
6673
|
+
const previousFileEntry = zipWriter.lastFileEntry;
|
|
6674
|
+
const pendingFileEntry = {};
|
|
6675
|
+
let releaseLockFileEntry;
|
|
6676
|
+
if (metadataInfo.resolvedOptions.keepOrder) {
|
|
6677
|
+
pendingFileEntry.lockFileEntry = new Promise(resolve => releaseLockFileEntry = resolve);
|
|
6678
|
+
}
|
|
6679
|
+
zipWriter.lastFileEntry = pendingFileEntry;
|
|
6673
6680
|
let fileEntry;
|
|
6674
6681
|
try {
|
|
6675
6682
|
const { resolvedOptions } = metadataInfo;
|
|
@@ -6691,10 +6698,21 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6691
6698
|
const headerInfo = getHeaderInfo(options);
|
|
6692
6699
|
const dataDescriptorInfo = getDataDescriptorInfo(options);
|
|
6693
6700
|
const metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray);
|
|
6694
|
-
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6701
|
+
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6702
|
+
headerInfo,
|
|
6703
|
+
dataDescriptorInfo,
|
|
6704
|
+
metadataSize,
|
|
6705
|
+
fileEntry: pendingFileEntry,
|
|
6706
|
+
previousFileEntry,
|
|
6707
|
+
releaseLockFileEntry
|
|
6708
|
+
}, options);
|
|
6695
6709
|
} catch (error) {
|
|
6696
6710
|
zipWriter.fileEntries.delete(name);
|
|
6697
6711
|
throw error;
|
|
6712
|
+
} finally {
|
|
6713
|
+
if (releaseLockFileEntry) {
|
|
6714
|
+
releaseLockFileEntry(previousFileEntry && previousFileEntry.lockFileEntry);
|
|
6715
|
+
}
|
|
6698
6716
|
}
|
|
6699
6717
|
Object.assign(fileEntry, {
|
|
6700
6718
|
name,
|
|
@@ -7082,7 +7100,6 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
7082
7100
|
}
|
|
7083
7101
|
const usdz = writerOptions[OPTION_USDZ];
|
|
7084
7102
|
const files = new Map();
|
|
7085
|
-
let layoutDependsOnWriteOrder = Boolean(usdz);
|
|
7086
7103
|
const initialOffset = writerOptions[OPTION_OFFSET] === UNDEFINED_VALUE ? 0 : writerOptions[OPTION_OFFSET];
|
|
7087
7104
|
let offset = initialOffset;
|
|
7088
7105
|
let minimumEntrySize = INFINITY_VALUE;
|
|
@@ -7128,9 +7145,7 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
7128
7145
|
minimumEntrySize = Math.min(minimumEntrySize, entrySize);
|
|
7129
7146
|
offset += entrySize;
|
|
7130
7147
|
}
|
|
7131
|
-
|
|
7132
|
-
layoutDependsOnWriteOrder = true;
|
|
7133
|
-
}
|
|
7148
|
+
const layoutDependsOnWriteOrder = files.size > 1 && (usdz || offset - minimumEntrySize >= MAX_32_BITS);
|
|
7134
7149
|
if (layoutDependsOnWriteOrder && !writeOrderGuaranteed) {
|
|
7135
7150
|
throw new Error(ERR_UNDETERMINED_SIZE);
|
|
7136
7151
|
}
|
|
@@ -7158,27 +7173,23 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7158
7173
|
signal
|
|
7159
7174
|
} = options;
|
|
7160
7175
|
const {
|
|
7161
|
-
headerInfo
|
|
7176
|
+
headerInfo,
|
|
7177
|
+
fileEntry: pendingFileEntry,
|
|
7178
|
+
previousFileEntry,
|
|
7179
|
+
releaseLockFileEntry
|
|
7162
7180
|
} = entryInfo;
|
|
7163
7181
|
const usdz = zipWriter.options[OPTION_USDZ];
|
|
7164
|
-
|
|
7165
|
-
let fileEntry = {};
|
|
7182
|
+
let fileEntry = pendingFileEntry;
|
|
7166
7183
|
let bufferedWrite;
|
|
7167
7184
|
let releaseLockWriter;
|
|
7168
|
-
let releaseLockCurrentFileEntry;
|
|
7169
7185
|
let writingBufferedEntryData;
|
|
7170
7186
|
let writingEntryData;
|
|
7171
7187
|
let writerSizeBeforeEntry;
|
|
7172
7188
|
let flushedBufferedSize = 0;
|
|
7173
7189
|
let fileWriter;
|
|
7190
|
+
const lockPreviousFileEntry = keepOrder && previousFileEntry ? previousFileEntry.lockFileEntry : UNDEFINED_VALUE;
|
|
7174
7191
|
fileEntries.set(name, fileEntry);
|
|
7175
|
-
zipWriter.lastFileEntry = fileEntry;
|
|
7176
7192
|
try {
|
|
7177
|
-
let lockPreviousFileEntry;
|
|
7178
|
-
if (keepOrder) {
|
|
7179
|
-
lockPreviousFileEntry = previousFileEntry && previousFileEntry.lockFileEntry;
|
|
7180
|
-
requestLockCurrentFileEntry();
|
|
7181
|
-
}
|
|
7182
7193
|
if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || (!dataDescriptor && !emptyEntry)) {
|
|
7183
7194
|
bufferedWrite = true;
|
|
7184
7195
|
zipWriter.bufferedWrites++;
|
|
@@ -7191,6 +7202,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7191
7202
|
await initStream(writer);
|
|
7192
7203
|
} else {
|
|
7193
7204
|
fileWriter = writer;
|
|
7205
|
+
await lockPreviousFileEntry;
|
|
7194
7206
|
await requestLockWriter();
|
|
7195
7207
|
}
|
|
7196
7208
|
await initStream(fileWriter);
|
|
@@ -7203,7 +7215,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7203
7215
|
}
|
|
7204
7216
|
const { localHeaderArray } = headerInfo;
|
|
7205
7217
|
if (!bufferedWrite) {
|
|
7206
|
-
await lockPreviousFileEntry;
|
|
7207
7218
|
await skipDiskIfNeeded();
|
|
7208
7219
|
}
|
|
7209
7220
|
const diskNumberStart = getDiskNumber(writer);
|
|
@@ -7268,8 +7279,8 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7268
7279
|
if (bufferedWrite) {
|
|
7269
7280
|
zipWriter.bufferedWrites--;
|
|
7270
7281
|
}
|
|
7271
|
-
if (
|
|
7272
|
-
|
|
7282
|
+
if (releaseLockFileEntry) {
|
|
7283
|
+
releaseLockFileEntry(lockPreviousFileEntry);
|
|
7273
7284
|
}
|
|
7274
7285
|
if (releaseLockWriter) {
|
|
7275
7286
|
releaseLockWriter();
|
|
@@ -7283,10 +7294,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7283
7294
|
}
|
|
7284
7295
|
}
|
|
7285
7296
|
|
|
7286
|
-
function requestLockCurrentFileEntry() {
|
|
7287
|
-
fileEntry.lockFileEntry = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
|
|
7288
|
-
}
|
|
7289
|
-
|
|
7290
7297
|
async function requestLockWriter() {
|
|
7291
7298
|
zipWriter.writerLocked = true;
|
|
7292
7299
|
const { lockWriter } = zipWriter;
|
|
@@ -8606,7 +8613,7 @@ function formatSupported(StreamClass, format) {
|
|
|
8606
8613
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8607
8614
|
*/
|
|
8608
8615
|
|
|
8609
|
-
const VERSION = "2.8.
|
|
8616
|
+
const VERSION = "2.8.61";
|
|
8610
8617
|
|
|
8611
8618
|
/*
|
|
8612
8619
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9583,12 +9590,13 @@ class ZipDirectoryEntry extends ZipEntry {
|
|
|
9583
9590
|
if (options.bufferedWrite === UNDEFINED_VALUE) {
|
|
9584
9591
|
options.bufferedWrite = true;
|
|
9585
9592
|
}
|
|
9586
|
-
const
|
|
9587
|
-
(options.keepOrder !== false && zipEntry.children.every(child => !child.children.length));
|
|
9588
|
-
return getEntriesSize(options, zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9593
|
+
const entries = zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9589
9594
|
const { name, entryOptions } = getChildEntryOptions(child, zipEntry, options);
|
|
9590
9595
|
return { name, size: child.directory ? 0 : getDeterminedSize(child, isPassThrough(child, options)), options: entryOptions };
|
|
9591
|
-
})
|
|
9596
|
+
});
|
|
9597
|
+
const writeOrderGuaranteed = !options.bufferedWrite ||
|
|
9598
|
+
(entries.every(entry => entry.options.keepOrder !== false) && zipEntry.children.every(child => !child.children.length));
|
|
9599
|
+
return getEntriesSize(options, entries, writeOrderGuaranteed, options.globalComment);
|
|
9592
9600
|
}
|
|
9593
9601
|
|
|
9594
9602
|
getChildByName(name) {
|