@zip.js/zip.js 2.8.17 → 2.8.18

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.
@@ -1964,6 +1964,8 @@
1964
1964
  */
1965
1965
 
1966
1966
 
1967
+ const MODULE_WORKER_OPTIONS = { type: "module" };
1968
+
1967
1969
  let webWorkerSupported, webWorkerURI, webWorkerOptions;
1968
1970
  let transferStreamsSupported = true;
1969
1971
  let initModule = () => { };
@@ -2172,11 +2174,8 @@
2172
2174
  return { writable, closed };
2173
2175
  }
2174
2176
 
2175
- function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI = true) {
2177
+ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
2176
2178
  let worker, resolvedURI, resolvedOptions;
2177
- if (isModuleType) {
2178
- resolvedOptions = { type: "module" };
2179
- }
2180
2179
  if (webWorkerURI === UNDEFINED_VALUE) {
2181
2180
  // deno-lint-ignore valid-typeof
2182
2181
  const isFunctionURI = typeof url == FUNCTION_TYPE;
@@ -2188,6 +2187,12 @@
2188
2187
  const isDataURI = resolvedURI.startsWith("data:");
2189
2188
  const isBlobURI = resolvedURI.startsWith("blob:");
2190
2189
  if (isDataURI || isBlobURI) {
2190
+ if (isModuleType === UNDEFINED_VALUE) {
2191
+ isModuleType = false;
2192
+ }
2193
+ if (isModuleType) {
2194
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2195
+ }
2191
2196
  try {
2192
2197
  worker = new Worker(resolvedURI, resolvedOptions);
2193
2198
  } catch (error) {
@@ -2207,6 +2212,12 @@
2207
2212
  }
2208
2213
  }
2209
2214
  } else {
2215
+ if (isModuleType === UNDEFINED_VALUE) {
2216
+ isModuleType = true;
2217
+ }
2218
+ if (isModuleType) {
2219
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2220
+ }
2210
2221
  try {
2211
2222
  resolvedURI = new URL(resolvedURI, baseURI);
2212
2223
  } catch {
@@ -2216,7 +2227,7 @@
2216
2227
  worker = new Worker(resolvedURI, resolvedOptions);
2217
2228
  } catch (error) {
2218
2229
  if (!isModuleType) {
2219
- return getWebWorker(url, baseURI, workerData, true, useBlobURI);
2230
+ return getWebWorker(url, baseURI, workerData, false, useBlobURI);
2220
2231
  } else {
2221
2232
  throw error;
2222
2233
  }
@@ -4890,7 +4901,6 @@
4890
4901
  let writingBufferedEntryData;
4891
4902
  let writingEntryData;
4892
4903
  let fileWriter;
4893
- let blobPromise;
4894
4904
  files.set(name, fileEntry);
4895
4905
  try {
4896
4906
  let lockPreviousFileEntry;
@@ -4899,7 +4909,7 @@
4899
4909
  requestLockCurrentFileEntry();
4900
4910
  }
4901
4911
  if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
4902
- fileWriter = new TransformStream();
4912
+ fileWriter = new TransformStream(undefined, undefined, { highWaterMark: Infinity });
4903
4913
  fileWriter.size = 0;
4904
4914
  bufferedWrite = true;
4905
4915
  zipWriter.bufferedWrites++;
@@ -4930,20 +4940,20 @@
4930
4940
  await skipDiskIfNeeded(writable);
4931
4941
  }
4932
4942
  const { diskNumber } = writer;
4933
- writingEntryData = true;
4934
4943
  fileEntry.diskNumberStart = diskNumber;
4935
- if (bufferedWrite) {
4936
- blobPromise = new Response(fileWriter.readable).blob();
4937
- } else {
4944
+ if (!bufferedWrite) {
4945
+ writingEntryData = true;
4938
4946
  await writeData(fileWriter, localHeaderArray);
4939
4947
  }
4940
4948
  fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
4941
4949
  const { zip64 } = fileEntry;
4942
- writingEntryData = false;
4950
+ if (!bufferedWrite) {
4951
+ writingEntryData = false;
4952
+ }
4943
4953
  files.set(name, fileEntry);
4944
4954
  fileEntry.filename = name;
4945
4955
  if (bufferedWrite) {
4946
- const [blob] = await Promise.all([blobPromise, fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4956
+ await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4947
4957
  await requestLockWriter();
4948
4958
  writingBufferedEntryData = true;
4949
4959
  fileEntry.diskNumberStart = writer.diskNumber;
@@ -4954,7 +4964,7 @@
4954
4964
  updateLocalHeader(fileEntry, localHeaderView, options);
4955
4965
  await skipDiskIfNeeded(writable);
4956
4966
  await writeData(writer, localHeaderArray);
4957
- await blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4967
+ await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4958
4968
  writer.size += fileWriter.size;
4959
4969
  writingBufferedEntryData = false;
4960
4970
  } else {
@@ -4969,7 +4979,7 @@
4969
4979
  zipWriter.offset += fileEntry.size;
4970
4980
  return fileEntry;
4971
4981
  } catch (error) {
4972
- if ((bufferedWrite && writingBufferedEntryData) || (!bufferedWrite && writingEntryData)) {
4982
+ if (writingBufferedEntryData || writingEntryData) {
4973
4983
  zipWriter.hasCorruptedEntries = true;
4974
4984
  if (error) {
4975
4985
  try {