@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-full.js CHANGED
@@ -8090,7 +8090,8 @@
8090
8090
  filenames: new Set(),
8091
8091
  offset: writer.writable.size,
8092
8092
  pendingEntriesSize: 0,
8093
- pendingAddFileCalls: new Set()
8093
+ pendingAddFileCalls: new Set(),
8094
+ bufferedWrites: 0
8094
8095
  });
8095
8096
  }
8096
8097
 
@@ -8308,14 +8309,15 @@
8308
8309
  lockPreviousFileEntry = previousFileEntry && previousFileEntry.lock;
8309
8310
  requestLockCurrentFileEntry();
8310
8311
  }
8311
- if (options.bufferedWrite || zipWriter.lockWriter || !dataDescriptor) {
8312
+ if (options.bufferedWrite || zipWriter.writerLocked || zipWriter.bufferedWrites || !dataDescriptor) {
8312
8313
  fileWriter = new BlobWriter();
8313
8314
  fileWriter.writable.size = 0;
8314
8315
  bufferedWrite = true;
8316
+ zipWriter.bufferedWrites++;
8315
8317
  await initStream(writer);
8316
8318
  } else {
8317
8319
  fileWriter = writer;
8318
- initLockWriter();
8320
+ requestLockWriter();
8319
8321
  }
8320
8322
  await initStream(fileWriter);
8321
8323
  const { writable } = writer;
@@ -8378,6 +8380,9 @@
8378
8380
  files.delete(name);
8379
8381
  throw error;
8380
8382
  } finally {
8383
+ if (bufferedWrite) {
8384
+ zipWriter.bufferedWrites--;
8385
+ }
8381
8386
  if (releaseLockCurrentFileEntry) {
8382
8387
  releaseLockCurrentFileEntry();
8383
8388
  }
@@ -8390,19 +8395,14 @@
8390
8395
  fileEntry.lock = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
8391
8396
  }
8392
8397
 
8393
- function initLockWriter() {
8394
- zipWriter.lockWriter = Promise.resolve();
8395
- releaseLockWriter = () => delete zipWriter.lockWriter;
8396
- }
8397
-
8398
8398
  async function requestLockWriter() {
8399
- const { lockWriter } = zipWriter;
8400
- if (lockWriter) {
8401
- await lockWriter.then(() => delete zipWriter.lockWriter);
8402
- return requestLockWriter();
8403
- } else {
8404
- zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = resolve);
8405
- }
8399
+ zipWriter.writerLocked = true;
8400
+ let { lockWriter } = zipWriter;
8401
+ zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = () => {
8402
+ zipWriter.writerLocked = false;
8403
+ resolve();
8404
+ });
8405
+ await lockWriter;
8406
8406
  }
8407
8407
 
8408
8408
  async function skipDiskIfNeeded(writable) {