@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.
@@ -9091,7 +9091,8 @@
9091
9091
  filenames: new Set(),
9092
9092
  offset: writer.writable.size,
9093
9093
  pendingEntriesSize: 0,
9094
- pendingAddFileCalls: new Set()
9094
+ pendingAddFileCalls: new Set(),
9095
+ bufferedWrites: 0
9095
9096
  });
9096
9097
  }
9097
9098
 
@@ -9309,14 +9310,15 @@
9309
9310
  lockPreviousFileEntry = previousFileEntry && previousFileEntry.lock;
9310
9311
  requestLockCurrentFileEntry();
9311
9312
  }
9312
- if (options.bufferedWrite || zipWriter.lockWriter || !dataDescriptor) {
9313
+ if (options.bufferedWrite || zipWriter.writerLocked || zipWriter.bufferedWrites || !dataDescriptor) {
9313
9314
  fileWriter = new BlobWriter();
9314
9315
  fileWriter.writable.size = 0;
9315
9316
  bufferedWrite = true;
9317
+ zipWriter.bufferedWrites++;
9316
9318
  await initStream(writer);
9317
9319
  } else {
9318
9320
  fileWriter = writer;
9319
- initLockWriter();
9321
+ requestLockWriter();
9320
9322
  }
9321
9323
  await initStream(fileWriter);
9322
9324
  const { writable } = writer;
@@ -9379,6 +9381,9 @@
9379
9381
  files.delete(name);
9380
9382
  throw error;
9381
9383
  } finally {
9384
+ if (bufferedWrite) {
9385
+ zipWriter.bufferedWrites--;
9386
+ }
9382
9387
  if (releaseLockCurrentFileEntry) {
9383
9388
  releaseLockCurrentFileEntry();
9384
9389
  }
@@ -9391,19 +9396,14 @@
9391
9396
  fileEntry.lock = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
9392
9397
  }
9393
9398
 
9394
- function initLockWriter() {
9395
- zipWriter.lockWriter = Promise.resolve();
9396
- releaseLockWriter = () => delete zipWriter.lockWriter;
9397
- }
9398
-
9399
9399
  async function requestLockWriter() {
9400
- const { lockWriter } = zipWriter;
9401
- if (lockWriter) {
9402
- await lockWriter.then(() => delete zipWriter.lockWriter);
9403
- return requestLockWriter();
9404
- } else {
9405
- zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = resolve);
9406
- }
9400
+ zipWriter.writerLocked = true;
9401
+ let { lockWriter } = zipWriter;
9402
+ zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = () => {
9403
+ zipWriter.writerLocked = false;
9404
+ resolve();
9405
+ });
9406
+ await lockWriter;
9407
9407
  }
9408
9408
 
9409
9409
  async function skipDiskIfNeeded(writable) {