@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.cjs
CHANGED
|
@@ -6674,6 +6674,13 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6674
6674
|
const { comment } = metadataInfo;
|
|
6675
6675
|
const extraField = options[PROPERTY_NAME_EXTRA_FIELD];
|
|
6676
6676
|
zipWriter.fileEntries.set(name, UNDEFINED_VALUE);
|
|
6677
|
+
const previousFileEntry = zipWriter.lastFileEntry;
|
|
6678
|
+
const pendingFileEntry = {};
|
|
6679
|
+
let releaseLockFileEntry;
|
|
6680
|
+
if (metadataInfo.resolvedOptions.keepOrder) {
|
|
6681
|
+
pendingFileEntry.lockFileEntry = new Promise(resolve => releaseLockFileEntry = resolve);
|
|
6682
|
+
}
|
|
6683
|
+
zipWriter.lastFileEntry = pendingFileEntry;
|
|
6677
6684
|
let fileEntry;
|
|
6678
6685
|
try {
|
|
6679
6686
|
const { resolvedOptions } = metadataInfo;
|
|
@@ -6695,10 +6702,21 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6695
6702
|
const headerInfo = getHeaderInfo(options);
|
|
6696
6703
|
const dataDescriptorInfo = getDataDescriptorInfo(options);
|
|
6697
6704
|
const metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray);
|
|
6698
|
-
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6705
|
+
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6706
|
+
headerInfo,
|
|
6707
|
+
dataDescriptorInfo,
|
|
6708
|
+
metadataSize,
|
|
6709
|
+
fileEntry: pendingFileEntry,
|
|
6710
|
+
previousFileEntry,
|
|
6711
|
+
releaseLockFileEntry
|
|
6712
|
+
}, options);
|
|
6699
6713
|
} catch (error) {
|
|
6700
6714
|
zipWriter.fileEntries.delete(name);
|
|
6701
6715
|
throw error;
|
|
6716
|
+
} finally {
|
|
6717
|
+
if (releaseLockFileEntry) {
|
|
6718
|
+
releaseLockFileEntry(previousFileEntry && previousFileEntry.lockFileEntry);
|
|
6719
|
+
}
|
|
6702
6720
|
}
|
|
6703
6721
|
Object.assign(fileEntry, {
|
|
6704
6722
|
name,
|
|
@@ -7086,7 +7104,6 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
7086
7104
|
}
|
|
7087
7105
|
const usdz = writerOptions[OPTION_USDZ];
|
|
7088
7106
|
const files = new Map();
|
|
7089
|
-
let layoutDependsOnWriteOrder = Boolean(usdz);
|
|
7090
7107
|
const initialOffset = writerOptions[OPTION_OFFSET] === UNDEFINED_VALUE ? 0 : writerOptions[OPTION_OFFSET];
|
|
7091
7108
|
let offset = initialOffset;
|
|
7092
7109
|
let minimumEntrySize = INFINITY_VALUE;
|
|
@@ -7132,9 +7149,7 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
7132
7149
|
minimumEntrySize = Math.min(minimumEntrySize, entrySize);
|
|
7133
7150
|
offset += entrySize;
|
|
7134
7151
|
}
|
|
7135
|
-
|
|
7136
|
-
layoutDependsOnWriteOrder = true;
|
|
7137
|
-
}
|
|
7152
|
+
const layoutDependsOnWriteOrder = files.size > 1 && (usdz || offset - minimumEntrySize >= MAX_32_BITS);
|
|
7138
7153
|
if (layoutDependsOnWriteOrder && !writeOrderGuaranteed) {
|
|
7139
7154
|
throw new Error(ERR_UNDETERMINED_SIZE);
|
|
7140
7155
|
}
|
|
@@ -7162,27 +7177,23 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7162
7177
|
signal
|
|
7163
7178
|
} = options;
|
|
7164
7179
|
const {
|
|
7165
|
-
headerInfo
|
|
7180
|
+
headerInfo,
|
|
7181
|
+
fileEntry: pendingFileEntry,
|
|
7182
|
+
previousFileEntry,
|
|
7183
|
+
releaseLockFileEntry
|
|
7166
7184
|
} = entryInfo;
|
|
7167
7185
|
const usdz = zipWriter.options[OPTION_USDZ];
|
|
7168
|
-
|
|
7169
|
-
let fileEntry = {};
|
|
7186
|
+
let fileEntry = pendingFileEntry;
|
|
7170
7187
|
let bufferedWrite;
|
|
7171
7188
|
let releaseLockWriter;
|
|
7172
|
-
let releaseLockCurrentFileEntry;
|
|
7173
7189
|
let writingBufferedEntryData;
|
|
7174
7190
|
let writingEntryData;
|
|
7175
7191
|
let writerSizeBeforeEntry;
|
|
7176
7192
|
let flushedBufferedSize = 0;
|
|
7177
7193
|
let fileWriter;
|
|
7194
|
+
const lockPreviousFileEntry = keepOrder && previousFileEntry ? previousFileEntry.lockFileEntry : UNDEFINED_VALUE;
|
|
7178
7195
|
fileEntries.set(name, fileEntry);
|
|
7179
|
-
zipWriter.lastFileEntry = fileEntry;
|
|
7180
7196
|
try {
|
|
7181
|
-
let lockPreviousFileEntry;
|
|
7182
|
-
if (keepOrder) {
|
|
7183
|
-
lockPreviousFileEntry = previousFileEntry && previousFileEntry.lockFileEntry;
|
|
7184
|
-
requestLockCurrentFileEntry();
|
|
7185
|
-
}
|
|
7186
7197
|
if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || (!dataDescriptor && !emptyEntry)) {
|
|
7187
7198
|
bufferedWrite = true;
|
|
7188
7199
|
zipWriter.bufferedWrites++;
|
|
@@ -7195,6 +7206,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7195
7206
|
await initStream(writer);
|
|
7196
7207
|
} else {
|
|
7197
7208
|
fileWriter = writer;
|
|
7209
|
+
await lockPreviousFileEntry;
|
|
7198
7210
|
await requestLockWriter();
|
|
7199
7211
|
}
|
|
7200
7212
|
await initStream(fileWriter);
|
|
@@ -7207,7 +7219,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7207
7219
|
}
|
|
7208
7220
|
const { localHeaderArray } = headerInfo;
|
|
7209
7221
|
if (!bufferedWrite) {
|
|
7210
|
-
await lockPreviousFileEntry;
|
|
7211
7222
|
await skipDiskIfNeeded();
|
|
7212
7223
|
}
|
|
7213
7224
|
const diskNumberStart = getDiskNumber(writer);
|
|
@@ -7272,8 +7283,8 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7272
7283
|
if (bufferedWrite) {
|
|
7273
7284
|
zipWriter.bufferedWrites--;
|
|
7274
7285
|
}
|
|
7275
|
-
if (
|
|
7276
|
-
|
|
7286
|
+
if (releaseLockFileEntry) {
|
|
7287
|
+
releaseLockFileEntry(lockPreviousFileEntry);
|
|
7277
7288
|
}
|
|
7278
7289
|
if (releaseLockWriter) {
|
|
7279
7290
|
releaseLockWriter();
|
|
@@ -7287,10 +7298,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
7287
7298
|
}
|
|
7288
7299
|
}
|
|
7289
7300
|
|
|
7290
|
-
function requestLockCurrentFileEntry() {
|
|
7291
|
-
fileEntry.lockFileEntry = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
|
|
7292
|
-
}
|
|
7293
|
-
|
|
7294
7301
|
async function requestLockWriter() {
|
|
7295
7302
|
zipWriter.writerLocked = true;
|
|
7296
7303
|
const { lockWriter } = zipWriter;
|
|
@@ -8610,7 +8617,7 @@ function formatSupported(StreamClass, format) {
|
|
|
8610
8617
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8611
8618
|
*/
|
|
8612
8619
|
|
|
8613
|
-
const VERSION = "2.8.
|
|
8620
|
+
const VERSION = "2.8.61";
|
|
8614
8621
|
|
|
8615
8622
|
/*
|
|
8616
8623
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9962,12 +9969,13 @@ class ZipDirectoryEntry extends ZipEntry {
|
|
|
9962
9969
|
if (options.bufferedWrite === UNDEFINED_VALUE) {
|
|
9963
9970
|
options.bufferedWrite = true;
|
|
9964
9971
|
}
|
|
9965
|
-
const
|
|
9966
|
-
(options.keepOrder !== false && zipEntry.children.every(child => !child.children.length));
|
|
9967
|
-
return getEntriesSize(options, zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9972
|
+
const entries = zipEntry.getChildren({ recursive: true }).filter(child => !isImplicitDirectory(child)).map(child => {
|
|
9968
9973
|
const { name, entryOptions } = getChildEntryOptions(child, zipEntry, options);
|
|
9969
9974
|
return { name, size: child.directory ? 0 : getDeterminedSize(child, isPassThrough(child, options)), options: entryOptions };
|
|
9970
|
-
})
|
|
9975
|
+
});
|
|
9976
|
+
const writeOrderGuaranteed = !options.bufferedWrite ||
|
|
9977
|
+
(entries.every(entry => entry.options.keepOrder !== false) && zipEntry.children.every(child => !child.children.length));
|
|
9978
|
+
return getEntriesSize(options, entries, writeOrderGuaranteed, options.globalComment);
|
|
9971
9979
|
}
|
|
9972
9980
|
|
|
9973
9981
|
getChildByName(name) {
|