@zip.js/zip.js 2.6.55 → 2.6.57
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 +15 -15
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +15 -15
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +15 -15
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +15 -15
- package/dist/zip.min.js +1 -1
- package/index.cjs +15 -15
- package/index.d.ts +1 -1
- package/lib/core/zip-writer.js +15 -15
- package/package.json +1 -1
package/lib/core/zip-writer.js
CHANGED
|
@@ -119,7 +119,8 @@ class ZipWriter {
|
|
|
119
119
|
filenames: new Set(),
|
|
120
120
|
offset: writer.writable.size,
|
|
121
121
|
pendingEntriesSize: 0,
|
|
122
|
-
pendingAddFileCalls: new Set()
|
|
122
|
+
pendingAddFileCalls: new Set(),
|
|
123
|
+
bufferedWrites: 0
|
|
123
124
|
});
|
|
124
125
|
}
|
|
125
126
|
|
|
@@ -350,14 +351,15 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
350
351
|
lockPreviousFileEntry = previousFileEntry && previousFileEntry.lock;
|
|
351
352
|
requestLockCurrentFileEntry();
|
|
352
353
|
}
|
|
353
|
-
if (options.bufferedWrite || zipWriter.
|
|
354
|
+
if (options.bufferedWrite || zipWriter.writerLocked || zipWriter.bufferedWrites || !dataDescriptor) {
|
|
354
355
|
fileWriter = new BlobWriter();
|
|
355
356
|
fileWriter.writable.size = 0;
|
|
356
357
|
bufferedWrite = true;
|
|
358
|
+
zipWriter.bufferedWrites++;
|
|
357
359
|
await initStream(writer);
|
|
358
360
|
} else {
|
|
359
361
|
fileWriter = writer;
|
|
360
|
-
|
|
362
|
+
requestLockWriter();
|
|
361
363
|
}
|
|
362
364
|
await initStream(fileWriter);
|
|
363
365
|
const { writable } = writer;
|
|
@@ -420,6 +422,9 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
420
422
|
files.delete(name);
|
|
421
423
|
throw error;
|
|
422
424
|
} finally {
|
|
425
|
+
if (bufferedWrite) {
|
|
426
|
+
zipWriter.bufferedWrites--;
|
|
427
|
+
}
|
|
423
428
|
if (releaseLockCurrentFileEntry) {
|
|
424
429
|
releaseLockCurrentFileEntry();
|
|
425
430
|
}
|
|
@@ -432,19 +437,14 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
|
|
|
432
437
|
fileEntry.lock = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
|
|
433
438
|
}
|
|
434
439
|
|
|
435
|
-
function initLockWriter() {
|
|
436
|
-
zipWriter.lockWriter = Promise.resolve();
|
|
437
|
-
releaseLockWriter = () => delete zipWriter.lockWriter;
|
|
438
|
-
}
|
|
439
|
-
|
|
440
440
|
async function requestLockWriter() {
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
441
|
+
zipWriter.writerLocked = true;
|
|
442
|
+
let { lockWriter } = zipWriter;
|
|
443
|
+
zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = () => {
|
|
444
|
+
zipWriter.writerLocked = false;
|
|
445
|
+
resolve();
|
|
446
|
+
});
|
|
447
|
+
await lockWriter;
|
|
448
448
|
}
|
|
449
449
|
|
|
450
450
|
async function skipDiskIfNeeded(writable) {
|
package/package.json
CHANGED