@zip.js/zip.js 2.8.45 → 2.8.46

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.
Files changed (45) hide show
  1. package/README.md +28 -2
  2. package/deno.json +13 -3
  3. package/dist/zip-core-external.js +61 -26
  4. package/dist/zip-core-external.min.js +1 -1
  5. package/dist/zip-core.js +59 -24
  6. package/dist/zip-core.min.js +1 -1
  7. package/dist/zip-fs-core-external.js +61 -26
  8. package/dist/zip-fs-core-external.min.js +1 -1
  9. package/dist/zip-fs-core.js +38 -22
  10. package/dist/zip-fs-core.min.js +1 -1
  11. package/dist/zip-fs-external.js +61 -26
  12. package/dist/zip-fs-external.min.js +1 -1
  13. package/dist/zip-fs-native.js +63 -28
  14. package/dist/zip-fs-native.min.js +1 -1
  15. package/dist/zip-fs.js +63 -28
  16. package/dist/zip-fs.min.js +1 -1
  17. package/dist/zip-legacy.js +61 -26
  18. package/dist/zip-legacy.min.js +1 -1
  19. package/dist/zip-native.js +63 -28
  20. package/dist/zip-native.min.js +1 -1
  21. package/dist/zip-web-worker-native.js +1 -1
  22. package/dist/zip-web-worker.js +1 -1
  23. package/dist/zip.js +63 -28
  24. package/dist/zip.min.js +1 -1
  25. package/index-native.cjs +63 -28
  26. package/index-native.min.js +1 -1
  27. package/index.cjs +63 -28
  28. package/index.d.cts +91 -1
  29. package/index.d.ts +91 -1
  30. package/index.min.js +1 -1
  31. package/lib/core/codec-pool.js +3 -2
  32. package/lib/core/codec-worker.js +28 -12
  33. package/lib/core/configuration.js +20 -2
  34. package/lib/core/streams/zip-entry-stream.js +8 -8
  35. package/lib/core/web-worker-base.js +27 -0
  36. package/lib/core/web-worker-inline-native.js +1 -1
  37. package/lib/core/web-worker-inline-wasm.js +1 -1
  38. package/lib/core/web-worker-native.js +7 -9
  39. package/lib/core/web-worker-wasm.js +9 -12
  40. package/lib/{core/web-worker-inline-template.js → zip-core-custom.js} +13 -20
  41. package/lib/zip-module-native.js +3 -3
  42. package/lib/zip-module-wasm-base.js +3 -3
  43. package/package.json +20 -2
  44. package/lib/core/web-worker-inline-template-native.js +0 -48
  45. package/lib/core/zlib-streams-inline-template.js +0 -45
@@ -67,7 +67,7 @@ let indexWorker = 0;
67
67
  async function runWorker(stream, workerOptions) {
68
68
  const { options, config } = workerOptions;
69
69
  const { transferStreams, useWebWorkers, useCompressionStream, compressed, checkCrc32, computeCrc32, encrypted, format, codecURI } = options;
70
- const { workerURI, maxWorkers } = config;
70
+ const { workerURI, createWorker, maxWorkers } = config;
71
71
  if (format) {
72
72
  if (codecURI) {
73
73
  options.codecURI = resolveCodecURI(codecURI, config.baseURI);
@@ -79,6 +79,7 @@ async function runWorker(stream, workerOptions) {
79
79
  const workerSupported = format === UNDEFINED_VALUE || Boolean(options.codecURI);
80
80
  workerOptions.useWebWorkers = !streamCopy && workerSupported && (useWebWorkers || (useWebWorkers === UNDEFINED_VALUE && config.useWebWorkers));
81
81
  workerOptions.workerURI = workerOptions.useWebWorkers && workerURI ? workerURI : UNDEFINED_VALUE;
82
+ workerOptions.createWorker = workerOptions.useWebWorkers && createWorker ? createWorker : UNDEFINED_VALUE;
82
83
  options.useCompressionStream = useCompressionStream || (useCompressionStream === UNDEFINED_VALUE && config.useCompressionStream);
83
84
  return (await getWorker()).run();
84
85
 
@@ -142,7 +143,7 @@ function onWorkerStarvation() {
142
143
  starvationTimeout = null;
143
144
  if (pendingRequests.length) {
144
145
  const [{ resolve, stream, workerOptions }] = pendingRequests.splice(0, 1);
145
- const inlineWorkerOptions = Object.assign({}, workerOptions, { useWebWorkers: false, workerURI: UNDEFINED_VALUE });
146
+ const inlineWorkerOptions = Object.assign({}, workerOptions, { useWebWorkers: false, workerURI: UNDEFINED_VALUE, createWorker: UNDEFINED_VALUE });
146
147
  resolve(new CodecWorker({}, stream, inlineWorkerOptions, onInlineTaskFinished));
147
148
  armStarvationTimeout();
148
149
  }
@@ -54,7 +54,7 @@ const ERROR_EVENT_TYPE = "error";
54
54
  const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
55
55
  const ERR_WORKER_STARTUP_TIMEOUT = "Worker startup timeout";
56
56
 
57
- let webWorkerSupported, webWorkerSource, webWorkerURI, webWorkerOptions;
57
+ let webWorkerSupported, webWorkerSource, webWorkerURI, webWorkerOptions, createWorkerFailed;
58
58
  let transferStreamsSupported = true;
59
59
  try {
60
60
  transferStreamsSupported = typeof structuredClone == FUNCTION_TYPE && structuredClone(new DOMException("", "AbortError")).code !== UNDEFINED_VALUE;
@@ -75,14 +75,14 @@ function configureWorker({ initModule: initModuleFunction }) {
75
75
  }
76
76
 
77
77
  async function supportsDeflate(config) {
78
- const { CompressionStream: NativeStream, CompressionStreamZlib: ZlibStream } = config;
79
- if (ZlibStream && !ZlibStream.requiresModule) {
78
+ const { CompressionStream: NativeStream, CompressionStreamFallback: FallbackStream } = config;
79
+ if (FallbackStream && !FallbackStream.requiresModule) {
80
80
  return true;
81
81
  }
82
82
  if (supportsDeflateRaw(NativeStream) || supportsGzip(NativeStream)) {
83
83
  return true;
84
84
  }
85
- if (ZlibStream) {
85
+ if (FallbackStream) {
86
86
  try {
87
87
  await initModule(config);
88
88
  return true;
@@ -95,12 +95,16 @@ async function supportsDeflate(config) {
95
95
 
96
96
  function resetWebWorkerSupport() {
97
97
  webWorkerSupported = UNDEFINED_VALUE;
98
+ createWorkerFailed = false;
98
99
  }
99
100
 
100
101
  class CodecWorker {
101
102
 
102
- constructor(workerData, { readable, writable }, { options, config, streamOptions, useWebWorkers, transferStreams, workerURI }, onTaskFinished) {
103
+ constructor(workerData, { readable, writable }, { options, config, streamOptions, useWebWorkers, transferStreams, workerURI, createWorker }, onTaskFinished) {
103
104
  const { signal } = streamOptions;
105
+ if (createWorkerFailed) {
106
+ createWorker = UNDEFINED_VALUE;
107
+ }
104
108
  Object.assign(workerData, {
105
109
  busy: true,
106
110
  generation: (workerData.generation || 0) + 1,
@@ -110,6 +114,7 @@ class CodecWorker {
110
114
  writable,
111
115
  options: Object.assign({}, options),
112
116
  workerURI,
117
+ createWorker,
113
118
  transferStreams,
114
119
  terminate() {
115
120
  return new Promise(resolve => {
@@ -145,7 +150,7 @@ class CodecWorker {
145
150
  // deno-lint-ignore valid-typeof
146
151
  webWorkerSupported = typeof Worker != UNDEFINED_TYPE;
147
152
  }
148
- return (useWebWorkers && webWorkerSupported ? createWebWorkerInterface : createWorkerInterface)(workerData, config);
153
+ return (useWebWorkers && ((webWorkerSupported && workerURI) || createWorker) ? createWebWorkerInterface : createWorkerInterface)(workerData, config);
149
154
  }
150
155
  }
151
156
 
@@ -202,7 +207,11 @@ function createWebWorkerInterface(workerData, config) {
202
207
  try {
203
208
  worker = getWebWorker(workerData.workerURI, baseURI, workerData);
204
209
  } catch {
205
- webWorkerSupported = false;
210
+ if (workerData.createWorker) {
211
+ createWorkerFailed = true;
212
+ } else {
213
+ webWorkerSupported = false;
214
+ }
206
215
  return createWorkerInterface(workerData, config);
207
216
  }
208
217
  Object.assign(workerData, {
@@ -215,7 +224,11 @@ function createWebWorkerInterface(workerData, config) {
215
224
  return await runWebWorker(workerData, { chunkSize, wasmURI, baseURI, workerStartupTimeout });
216
225
  } catch (error) {
217
226
  if (error && error.workerStartupFailed) {
218
- webWorkerSupported = false;
227
+ if (workerData.createWorker) {
228
+ createWorkerFailed = true;
229
+ } else {
230
+ webWorkerSupported = false;
231
+ }
219
232
  const { reader } = workerData;
220
233
  if (reader) {
221
234
  reader.releaseLock();
@@ -238,17 +251,17 @@ async function runWorker({ options, readable, writable, onTaskFinished }, config
238
251
  try {
239
252
  if (options.compressed && !options.format) {
240
253
  const deflate = options.codecType.startsWith(CODEC_DEFLATE);
241
- const ZlibStream = deflate ? config.CompressionStreamZlib : config.DecompressionStreamZlib;
254
+ const FallbackStream = deflate ? config.CompressionStreamFallback : config.DecompressionStreamFallback;
242
255
  const NativeStream = deflate ? config.CompressionStream : config.DecompressionStream;
243
256
  if (!options.useCompressionStream) {
244
257
  try {
245
258
  await initModule(config);
246
259
  } catch {
247
- if (!ZlibStream || ZlibStream.requiresModule) {
260
+ if (!FallbackStream || FallbackStream.requiresModule) {
248
261
  options.useCompressionStream = true;
249
262
  }
250
263
  }
251
- } else if (ZlibStream && ZlibStream.requiresModule && !supportsDeflateRaw(NativeStream)) {
264
+ } else if (FallbackStream && FallbackStream.requiresModule && !supportsDeflateRaw(NativeStream)) {
252
265
  try {
253
266
  await initModule(config);
254
267
  } catch {
@@ -373,8 +386,11 @@ function terminateWorker(workerData) {
373
386
  }
374
387
 
375
388
  function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
389
+ const { createWorker } = workerData;
376
390
  let worker, resolvedURI, resolvedOptions;
377
- if (webWorkerURI === UNDEFINED_VALUE || webWorkerSource !== url) {
391
+ if (createWorker) {
392
+ worker = createWorker();
393
+ } else if (webWorkerURI === UNDEFINED_VALUE || webWorkerSource !== url) {
378
394
  // deno-lint-ignore valid-typeof
379
395
  const isFunctionURI = typeof url == FUNCTION_TYPE;
380
396
  if (isFunctionURI) {
@@ -61,6 +61,7 @@ const CONFIGURABLE_PROPERTY_NAMES = [
61
61
  "baseURI",
62
62
  "wasmURI",
63
63
  "workerURI",
64
+ "createWorker",
64
65
  "chunkSize",
65
66
  "maxWorkers",
66
67
  "terminateWorkerTimeout",
@@ -71,8 +72,8 @@ const CONFIGURABLE_PROPERTY_NAMES = [
71
72
  "transferStreams",
72
73
  "CompressionStream",
73
74
  "DecompressionStream",
74
- "CompressionStreamZlib",
75
- "DecompressionStreamZlib"
75
+ "CompressionStreamFallback",
76
+ "DecompressionStreamFallback"
76
77
  ];
77
78
 
78
79
  const config = { ...DEFAULT_CONFIGURATION };
@@ -94,6 +95,7 @@ function getChunkSize(config) {
94
95
  }
95
96
 
96
97
  function configure(configuration) {
98
+ configuration = normalizeConfiguration(configuration);
97
99
  for (const propertyName of CONFIGURABLE_PROPERTY_NAMES) {
98
100
  const propertyValue = configuration[propertyName];
99
101
  if (propertyValue !== UNDEFINED_VALUE) {
@@ -102,7 +104,23 @@ function configure(configuration) {
102
104
  }
103
105
  }
104
106
 
107
+ function normalizeConfiguration(configuration) {
108
+ const { CompressionStreamZlib, DecompressionStreamZlib } = configuration;
109
+ if (CompressionStreamZlib === UNDEFINED_VALUE && DecompressionStreamZlib === UNDEFINED_VALUE) {
110
+ return configuration;
111
+ }
112
+ const normalizedConfiguration = Object.assign({}, configuration);
113
+ if (normalizedConfiguration.CompressionStreamFallback === UNDEFINED_VALUE) {
114
+ normalizedConfiguration.CompressionStreamFallback = CompressionStreamZlib;
115
+ }
116
+ if (normalizedConfiguration.DecompressionStreamFallback === UNDEFINED_VALUE) {
117
+ normalizedConfiguration.DecompressionStreamFallback = DecompressionStreamZlib;
118
+ }
119
+ return normalizedConfiguration;
120
+ }
121
+
105
122
  function setDefaultConfiguration(configuration) {
123
+ configuration = normalizeConfiguration(configuration);
106
124
  for (const propertyName of CONFIGURABLE_PROPERTY_NAMES) {
107
125
  const propertyValue = configuration[propertyName];
108
126
  if (propertyValue !== UNDEFINED_VALUE) {
@@ -64,7 +64,7 @@ const GZIP_OUTPUT_STALL_TIMEOUT = 5000;
64
64
 
65
65
  class DeflateStream extends TransformStream {
66
66
 
67
- constructor(options, { chunkSize, CompressionStreamZlib, CompressionStream }) {
67
+ constructor(options, { chunkSize, CompressionStreamFallback, CompressionStream }) {
68
68
  super({});
69
69
  const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod } = options;
70
70
  const stream = this;
@@ -86,7 +86,7 @@ class DeflateStream extends TransformStream {
86
86
  readable = pipeThrough(readable, gzipCrc32Stream);
87
87
  } else {
88
88
  try {
89
- readable = pipeThroughCompressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStream, CompressionStreamZlib);
89
+ readable = pipeThroughCompressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStream, CompressionStreamFallback);
90
90
  } catch (error) {
91
91
  let gzipStream;
92
92
  try {
@@ -228,7 +228,7 @@ function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize) {
228
228
 
229
229
  class InflateStream extends TransformStream {
230
230
 
231
- constructor(options, { chunkSize, DecompressionStreamZlib, DecompressionStream }) {
231
+ constructor(options, { chunkSize, DecompressionStreamFallback, DecompressionStream }) {
232
232
  super({});
233
233
  const { zipCrypto, encrypted, checkCrc32, crc32, compressed, useCompressionStream, deflate64, format, compressionMethod, rawBitFlag, outputSize } = options;
234
234
  let crc32Stream, decryptionStream;
@@ -247,7 +247,7 @@ class InflateStream extends TransformStream {
247
247
  readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize, compressionMethod, rawBitFlag, uncompressedSize: outputSize }));
248
248
  } else {
249
249
  try {
250
- readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamZlib);
250
+ readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamFallback);
251
251
  } catch (error) {
252
252
  if (deflate64 || outputSize === UNDEFINED_VALUE) {
253
253
  throw error;
@@ -340,17 +340,17 @@ function createCodecStream(CodecStreamClass, format, options) {
340
340
  return new CodecStreamClass(format, options);
341
341
  }
342
342
 
343
- function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamZlib) {
343
+ function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamFallback) {
344
344
  const Stream = useCompressionStream && CompressionStreamNative ?
345
345
  CompressionStreamNative :
346
- CompressionStreamZlib || CompressionStreamNative;
346
+ CompressionStreamFallback || CompressionStreamNative;
347
347
  const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
348
348
  let codecStream;
349
349
  try {
350
350
  codecStream = new Stream(format, options);
351
351
  } catch (error) {
352
- if (useCompressionStream && CompressionStreamZlib && Stream != CompressionStreamZlib) {
353
- codecStream = new CompressionStreamZlib(format, options);
352
+ if (useCompressionStream && CompressionStreamFallback && Stream != CompressionStreamFallback) {
353
+ codecStream = new CompressionStreamFallback(format, options);
354
354
  } else {
355
355
  throw error;
356
356
  }
@@ -1,3 +1,5 @@
1
+ /// <reference types="../../index.d.ts" />
2
+
1
3
  /*
2
4
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
3
5
 
@@ -50,6 +52,25 @@ const pendingDataMessages = new Map();
50
52
 
51
53
  let abortController, messageId = 0;
52
54
 
55
+ export { initWorker };
56
+
57
+ function initWorker(options = {}) {
58
+ const { init } = options;
59
+ const CompressionStreamFallback = options.CompressionStreamFallback || options.CompressionStreamZlib;
60
+ const DecompressionStreamFallback = options.DecompressionStreamFallback || options.DecompressionStreamZlib;
61
+ self.initModule = async config => {
62
+ if (init) {
63
+ await init(config);
64
+ }
65
+ if (CompressionStreamFallback) {
66
+ config.CompressionStreamFallback = CompressionStreamFallback;
67
+ }
68
+ if (DecompressionStreamFallback) {
69
+ config.DecompressionStreamFallback = DecompressionStreamFallback;
70
+ }
71
+ };
72
+ }
73
+
53
74
  addEventListener(MESSAGE_EVENT_TYPE, ({ data }) => {
54
75
  const { type, messageId, value, done } = data;
55
76
  try {
@@ -105,6 +126,12 @@ async function init(message) {
105
126
  }
106
127
  }
107
128
  }
129
+ if (!config.CompressionStreamFallback && config.CompressionStreamZlib) {
130
+ config.CompressionStreamFallback = config.CompressionStreamZlib;
131
+ }
132
+ if (!config.DecompressionStreamFallback && config.DecompressionStreamZlib) {
133
+ config.DecompressionStreamFallback = config.DecompressionStreamZlib;
134
+ }
108
135
  const strategy = { highWaterMark: 1 };
109
136
  const readable = message.readable || new ReadableStream({
110
137
  async pull(controller) {
@@ -1 +1 @@
1
- const n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],i=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],r=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],o=new Uint8Array(288);o.fill(8,0,144),o.fill(9,144,256),o.fill(7,256,280),o.fill(8,280,288);const a=new Uint8Array(30).fill(5);function e(n){const i=new Uint16Array(16);for(const t of n)i[t]++;i[0]=0;const t=new Uint16Array(17);for(let n=1;15>=n;n++)t[n+1]=t[n]+i[n];const r=new Uint16Array(n.length);for(let i=0;i<n.length;i++)n[i]&&(r[t[n[i]]++]=i);return{o:i,symbols:r}}const f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function h(h){h({workerURI:h=>{const b="text/javascript",u=(f=>{let h=0,b=0,u=0,Z=new Uint8Array(1024),j=0,R=0;for(;!R;){R=C(1);const n=C(2);if(0==n)O();else if(1==n)Y(e(o),e(a));else{if(2!=n)throw Error("invalid deflate block type");Y(...m())}}return Z.subarray(0,j);function z(){if(h>=f.length)throw Error("unexpected end of deflate data");return f[h++]}function C(n){for(;n>u;)b|=z()<<u,u+=8;const i=b&(1<<n)-1;return b>>>=n,u-=n,i}function O(){b=0,u=0;const n=z()|z()<<8;h+=2,G(j+n);for(let i=0;n>i;i++)Z[j++]=z()}function Y(s,o){let a=v(s);for(;256!=a;){if(256>a)G(j+1),Z[j++]=a;else{const s=a-257,e=n[s]+C(i[s]),f=v(o),h=t[f]+C(r[f]);G(j+e);const b=j-h;for(let n=0;e>n;n++)Z[j++]=Z[b+n]}a=v(s)}}function m(){const n=C(5)+257,i=C(5)+1,t=C(4)+4,r=new Uint8Array(19);for(let n=0;t>n;n++)r[s[n]]=C(3);const o=e(r),a=new Uint8Array(n+i);let f=0;for(;f<a.length;){const n=v(o);if(16>n)a[f++]=n;else if(16==n){const n=a[f-1];let i=C(2)+3;for(;i--;)a[f++]=n}else f+=17==n?C(3)+3:C(7)+11}return[e(a.subarray(0,n)),e(a.subarray(n))]}function v(n){const{o:i,symbols:t}=n;let r=0,s=0,o=0;for(let n=1;15>=n;n++){r|=C(1);const a=i[n];if(a>r-s)return t[o+(r-s)];o+=a,s=s+a<<1,r<<=1}throw Error("invalid huffman code")}function G(n){if(Z.length<n){let i=2*Z.length;for(;n>i;)i*=2;const t=new Uint8Array(i);t.set(Z.subarray(0,j)),Z=t}}})((n=>{const i=(n=(n+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let r=0;i>r;r+=4){const i=f.indexOf(n[r])<<18|f.indexOf(n[r+1])<<12|(63&f.indexOf(n[r+2]))<<6|63&f.indexOf(n[r+3]);t.push(i>>16&255),"="!==n[r+2]&&t.push(i>>8&255),"="!==n[r+3]&&t.push(255&i)}return new Uint8Array(t)})("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"));if(h){const n=new Blob([u],{type:b});return URL.createObjectURL(n)}return"data:"+b+";base64,"+(n=>{let i="";const t=n.length;let r=0;for(;t>r+2;r+=3){const t=n[r]<<16|n[r+1]<<8|n[r+2];i+=f[t>>18&63]+f[t>>12&63]+f[t>>6&63]+f[63&t]}const s=t-r;if(1===s){const t=n[r]<<16;i+=f[t>>18&63]+f[t>>12&63]+"=="}else if(2===s){const t=n[r]<<16|n[r+1]<<8;i+=f[t>>18&63]+f[t>>12&63]+f[t>>6&63]+"="}return i})(u)}})}export{h as configureWebWorker};
1
+ const t=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],u=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],l=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],e=new Uint8Array(288);e.fill(8,0,144),e.fill(9,144,256),e.fill(7,256,280),e.fill(8,280,288);const n=new Uint8Array(30).fill(5);function f(t){const o=new Uint16Array(16);for(const u of t)o[u]++;o[0]=0;const u=new Uint16Array(17);for(let t=1;15>=t;t++)u[t+1]=u[t]+o[t];const l=new Uint16Array(t.length);for(let o=0;o<t.length;o++)t[o]&&(l[u[t[o]]++]=o);return{o:o,symbols:l}}const v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",P=(H=()=>(v=>{let P=0,H=0,s=0,a=new Uint8Array(1024),i=0,K=0;for(;!K;){K=V(1);const t=V(2);if(0==t)c();else if(1==t)z(f(e),f(n));else{if(2!=t)throw Error("invalid deflate block type");z(...Z())}}return a.subarray(0,i);function h(){if(P>=v.length)throw Error("unexpected end of deflate data");return v[P++]}function V(t){for(;t>s;)H|=h()<<s,s+=8;const o=H&(1<<t)-1;return H>>>=t,s-=t,o}function c(){H=0,s=0;const t=h()|h()<<8;P+=2,q(i+t);for(let o=0;t>o;o++)a[i++]=h()}function z(r,e){let n=T(r);for(;256!=n;){if(256>n)q(i+1),a[i++]=n;else{const r=n-257,f=t[r]+V(o[r]),v=T(e),P=u[v]+V(l[v]);q(i+f);const H=i-P;for(let t=0;f>t;t++)a[i++]=a[H+t]}n=T(r)}}function Z(){const t=V(5)+257,o=V(5)+1,u=V(4)+4,l=new Uint8Array(19);for(let t=0;u>t;t++)l[r[t]]=V(3);const e=f(l),n=new Uint8Array(t+o);let v=0;for(;v<n.length;){const t=T(e);if(16>t)n[v++]=t;else if(16==t){const t=n[v-1];let o=V(2)+3;for(;o--;)n[v++]=t}else v+=17==t?V(3)+3:V(7)+11}return[f(n.subarray(0,t)),f(n.subarray(t))]}function T(t){const{o:o,symbols:u}=t;let l=0,r=0,e=0;for(let t=1;15>=t;t++){l|=V(1);const n=o[t];if(n>l-r)return u[e+(l-r)];e+=n,r=r+n<<1,l<<=1}throw Error("invalid huffman code")}function q(t){if(a.length<t){let o=2*a.length;for(;t>o;)o*=2;const u=new Uint8Array(o);u.set(a.subarray(0,i)),a=u}}})((t=>{const o=(t=(t+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,u=[];for(let l=0;o>l;l+=4){const o=v.indexOf(t[l])<<18|v.indexOf(t[l+1])<<12|(63&v.indexOf(t[l+2]))<<6|63&v.indexOf(t[l+3]);u.push(o>>16&255),"="!==t[l+2]&&u.push(o>>8&255),"="!==t[l+3]&&u.push(255&o)}return new Uint8Array(u)})("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")),t=>t({workerURI:t=>{const o="text/javascript";let u=H();if("string"==typeof u&&(u=(new TextEncoder).encode(u)),t){const t=new Blob([u],{type:o});return URL.createObjectURL(t)}return"data:"+o+";base64,"+(t=>{let o="";const u=t.length;let l=0;for(;u>l+2;l+=3){const u=t[l]<<16|t[l+1]<<8|t[l+2];o+=v[u>>18&63]+v[u>>12&63]+v[u>>6&63]+v[63&u]}const r=u-l;if(1===r){const u=t[l]<<16;o+=v[u>>18&63]+v[u>>12&63]+"=="}else if(2===r){const u=t[l]<<16|t[l+1]<<8;o+=v[u>>18&63]+v[u>>12&63]+v[u>>6&63]+"="}return o})(u)}}));var H;export{P as configureWebWorker};
@@ -1 +1 @@
1
- function t(t){const e='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:c,Uint32Array:i,Int32Array:a,Map:f,DataView:l,Promise:w,TextEncoder:u,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:S}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)e=1&e?e>>>1^3988292384:e>>>1;C[0][t]=e}for(let t=0;256>t;t++)for(let e=1;8>e;e++){const n=C[e-1][t];C[e][t]=n>>>8^C[0][255&n]}const[A,I,x,M,P,B,D,R]=C;class U{constructor(t){this.o=t||-1}append(t){let e=0|this.o;const n=0|t.length;let s=0;if(n>=8&&t.buffer){const r=new l(t.buffer,t.byteOffset,n),o=n-8;for(;o>=s;s+=8){const t=e^r.getInt32(s,!0),n=r.getInt32(s+4,!0);e=R[255&t]^D[t>>>8&255]^B[t>>>16&255]^P[t>>>24&255]^M[255&n]^x[n>>>8&255]^I[n>>>16&255]^A[n>>>24&255]}}for(;n>s;s++)e=e>>>8^A[255&(e^t[s])];this.o=e}get(){return~this.o}}class W extends d{constructor(){let t;const e=new U;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}function _(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}function T(t){return new l(t.buffer,t.byteOffset,t.byteLength)}const V={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=V.l(n);return 32===s?t.concat(e):V.h(e,s,0|n,t.slice(0,t.length-1))},m(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+V.l(n)},S(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,s.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=V.v(e,t[n-1]&2147483648>>e-1,1)),t},v:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r<t.length;r++)s.push(n|t[r]>>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=V.l(r);return s.push(V.v(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=V.m(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},A(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(V.v(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.M=[1518500249,1859775393,2400959708,3395469782],t?(e.P=t.P.slice(0),e.B=t.B.slice(0),e.D=t.D):e.reset()}reset(){const t=this;return t.P=t.I.slice(0),t.B=[],t.D=0,t}update(t){const e=this;"string"==typeof t&&(t=K.R.A(t));const n=e.B=V.concat(e.B,t),s=e.D,o=e.D=s+V.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const c=new i(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e.U(c.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}W(){const t=this;let e=t.B;const n=t.P;e=V.concat(e,[V.v(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.D/4294967296)),e.push(0|t.D);e.length;)t.U(e.splice(0,16));return t.reset(),n}_(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}T(t,e){return e<<t|e>>>32-t}U(e){const n=this,r=n.P,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let c=r[0],i=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.T(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.T(5,c)+n._(t,i,a,f)+l+o[t]+n.M[s.floor(t/20)]|0;l=f,f=a,a=n.T(30,i),i=c,c=e}r[0]=r[0]+c|0,r[1]=r[1]+i|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},F={importKey:t=>new F.V(K.bytes.A(t)),K(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let c,i,a,f,w;const u=new ArrayBuffer(o),h=new l(u);let p=0;const d=V;for(e=K.bytes.A(e),w=1;(o||1)>p;w++){for(c=i=t.encrypt(d.concat(e,[w])),a=1;n>a;a++)for(i=t.encrypt(i),f=0;f<i.length;f++)c[f]^=i[f];for(a=0;(o||1)>p&&a<c.length;a++)h.setInt32(p,c[a]),p+=4}return u.slice(0,s/8)},V:class{constructor(t){const e=this,n=e.F=E,s=[[],[]];e.L=[new n,new n];const r=e.L[0].blockSize/32;t.length>r&&(t=(new n).update(t).W());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.L[0].update(s[0]),e.L[1].update(s[1]),e.O=new n(e.L[0])}reset(){const t=this;t.O=new t.F(t.L[0]),t.j=!1}update(t){this.j=!0,this.O.update(t)}digest(){const t=this,e=t.O.W(),n=new t.F(t.L[1]).update(e).W();return t.reset(),n}encrypt(t){if(this.j)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},L=typeof h!=b&&typeof h.getRandomValues==k,O="Invalid password",j="Invalid signature",H=j,Z="zipjs-abort-check-password";function N(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const q=16,G={name:"PBKDF2"},J=e.assign({hash:{name:"HMAC"}},G),Q=e.assign({iterations:1e3,hash:{name:"SHA-1"}},G),X=["deriveBits"],Y=[8,12,16],$=[16,24,32],tt=10,et=[0,0,0,0],nt=typeof h!=b,st=nt&&h.subtle,rt=nt&&typeof st!=b,ot=K.bytes,ct=class{constructor(t){const e=this;e.H=[[[],[],[],[],[]],[[],[],[],[],[]]],e.H[0][0][0]||e.Z();const n=e.H[0][4],s=e.H[1],o=t.length;let c,i,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.M=[i=t.slice(0),a=[]],c=o;4*o+28>c;c++){let t=i[c-1];(c%o===0||8===o&&c%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],c%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),i[c]=i[c-o]^t}for(let t=0;c;t++,c--){const e=i[3&t?c:c-4];a[t]=4>=c||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}Z(){const t=this.H[0],e=this.H[1],n=t[4],s=e[4],r=[],o=[];let c,i,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=c=0;!n[l];l^=i||1,c=o[c]||1){let o=c^c<<1^c<<2^c<<3^c<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[i=r[l]]];let w=16843009*f^65537*a^257*i^16843008*l,u=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=u=u<<24^u>>>8,e[n][o]=w=w<<24^w>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}N(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.M[e],s=n.length/4-2,o=[0,0,0,0],c=this.H[e],i=c[0],a=c[1],f=c[2],l=c[3],w=c[4];let u,h,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],S=4;for(let t=0;s>t;t++)u=i[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[S],h=i[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[S+1],p=i[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[S+2],g=i[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[S+3],S+=4,d=u,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=w[d>>>24]<<24^w[y>>16&255]<<16^w[m>>8&255]<<8^w[255&g]^n[S++],u=d,d=y,y=m,m=g,g=u;return o}},it=class{constructor(t,e){this.G=t,this.J=e,this.X=e}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}$(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}et(t){0===(t[0]=this.$(t[0]))&&(t[1]=this.$(t[1]))}Y(t,e,n){let s;if(!(s=e.length))return[];const r=V.m(e);for(let r=0;s>r;r+=4){this.et(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return V.S(e,r)}},at=F.V;let ft=nt&&rt&&typeof st.importKey==k,lt=nt&&rt&&typeof st.deriveBits==k;class wt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){ht(this,t,e,n)},async transform(t,e){const n=this,{password:c,strength:i,nt:a,ready:f}=n;c?(await(async(t,e,n,s)=>{const o=await dt(t,e,n,mt(s,0,Y[e])),c=mt(s,Y[e]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)})(n,i,c,mt(t,0,Y[i]+2)),t=mt(t,Y[i]+2),s?e.error(new r(Z)):a()):await f;const l=new o(t.length-tt-(t.length-tt)%q);e.enqueue(pt(n,t,l,0,tt,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=mt(s,0,s.length-tt),a=mt(s,s.length-tt);let f=z;if(i.length){const t=St(ot,i);n.update(t);const s=e.update(t);f=gt(ot,s)}const l=mt(gt(ot,n.digest()),0,tt);let w=s.length<tt?1:0;for(let t=0;tt>t;t++)w|=l[t]^a[t];if(w&&c)throw new r(H);t.enqueue(f)}}})}}class ut extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){super({start(){ht(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:c,ready:i}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=N(new o(Y[e]));return _(s,await dt(t,e,n,s))})(n,r,s),c()):await i;const f=new o(a.length+t.length-t.length%q);f.set(a,0),e.enqueue(pt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:s,ready:r}=this;if(n&&e){await r;let o=z;if(s.length){const t=e.update(St(ot,s));n.update(t),o=gt(ot,t)}const c=gt(ot,n.digest()).slice(0,tt);t.enqueue(_(o,c))}}})}}function ht(t,n,s,r){e.assign(t,{ready:new w(e=>t.nt=e),password:yt(n,s),strength:r-1,pending:z})}function pt(t,e,n,s,r,c){const{st:i,ot:a,pending:f}=t;f.length&&(e=_(f,e));const l=e.length-r;let w;for(n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,s+(l-l%q)),w=0;l-q>=w;w+=q){const t=St(ot,mt(e,w,w+q));c&&a.update(t);const r=i.update(t);c||a.update(r),n.set(gt(ot,r),w+s)}return t.pending=mt(e,w),n}async function dt(n,s,r,c){n.password=null;const i=await(async(t,e,n,s,r)=>{if(!ft)return F.importKey(e);try{return await st.importKey("raw",e,n,!1,r)}catch{return ft=!1,F.importKey(e)}})(0,r,J,0,X),a=await(async(t,e,n)=>{if(!lt)return F.K(e,t.salt,Q.iterations,n);try{return await st.deriveBits(t,e,n)}catch{return lt=!1,F.K(e,t.salt,Q.iterations,n)}})(e.assign({salt:c},Q),i,8*(2*$[s]+2)),f=new o(a),l=St(ot,mt(f,0,$[s])),w=St(ot,mt(f,$[s],2*$[s])),u=mt(f,2*$[s]);return e.assign(n,{keys:{key:l,ct:w,passwordVerification:u},st:new it(new ct(l),t.from(et)),ot:new at(w)}),u}function yt(t,e){return e===v?(t=>{if(typeof u==b){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new u).encode(t)})(t):e}function mt(t,e,n){return t.subarray(e,n)}function gt(t,e){return t.C(e)}function St(t,e){return t.A(e)}class vt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){kt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=zt(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e[11]^n.passwordVerification))throw new r(O);t=t.subarray(12)}s?e.error(new r(Z)):e.enqueue(zt(n,t))}})}}class bt extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){kt(this,t,e,n)},transform(t,e){const n=this;let s,r;if(n.password||n.rawPassword){n.password=n.rawPassword=null;const e=N(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(Ct(n,e),0),r=12}else s=new o(t.length),r=0;s.set(Ct(n,t),r),e.enqueue(s)}})}}function kt(t,n,s,r){e.assign(t,{password:n,rawPassword:s,passwordVerification:r}),((t,n,s)=>{const r=[305419896,591751049,878082192];if(e.assign(t,{keys:r,it:new U(r[0]),ft:new U(r[2])}),s)for(let e=0;e<s.length;e++)At(t,s[e]);else for(let e=0;e<n.length;e++)At(t,n.charCodeAt(e))})(t,n,s)}function zt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=It(t)^e[s],At(t,n[s]);return n}function Ct(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=It(t)^e[s],At(t,e[s]);return n}function At(t,e){let[,n]=t.keys;t.it.append([e]);const r=~t.it.get();n=Mt(s.imul(Mt(n+xt(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function It(t){const e=2|t.keys[2];return xt(s.imul(e,1^e)>>>8)}function xt(t){return 255&t}function Mt(t){return 4294967295&t}const Pt=new f;function Bt(t){return Pt.get(t)}const Dt="Invalid uncompressed size",Rt=j,Ut="deflate-raw",Wt="gzip",_t=[31,139,8];class Tt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:c,zipCrypto:i,computeCrc32:a,level:f,deflate64:w,format:u,compressionMethod:h}=t,p=this;let d,y,m,g=super.readable;const S=u&&Bt(u),v=a&&r&&!w&&!S&&(!o||i)&&!(!c||!s);if(o&&!i||!a||v||(d=new W,g=jt(g,d)),r)if(S)g=Ht(g,Lt(S.CompressionStream,u,{level:f,chunkSize:e,compressionMethod:h}));else if(v)m=new Vt,g=Ht(g,new s(Wt)),g=jt(g,m);else try{g=Ot(g,c,{level:f,chunkSize:e},s,n)}catch(t){let e;try{e=new s(Wt)}catch{throw t}g=Ht(g,e),g=jt(g,new Vt)}o&&(i?g=jt(g,new bt(t)):(y=new ut(t),g=jt(g,y))),Ft(p,g,()=>{o&&!i||!a||(p.crc32=v?m.crc32:new l(d.value.buffer).getUint32(0))})}}class Vt extends d{constructor(){let t,e=10,n=new o(0);super({transform(t,r){if(e){const n=s.min(e,t.length);if(e-=n,!(t=t.subarray(n)).length)return}const o=n.length+t.length;if(8>=o)return void(n=_(n,t));const c=o-8,i=s.min(c,n.length);r.enqueue(_(n.subarray(0,i),t.subarray(0,c-i))),n=_(n.subarray(i),t.subarray(c-i))},flush(){const e=T(n);t.crc32=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Kt extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:c,encrypted:i,checkCrc32:a,crc32:f,compressed:u,useCompressionStream:h,deflate64:p,format:m,compressionMethod:g,rawBitFlag:S,outputSize:b}=t;let k,z,C=super.readable;if(i&&(c?C=jt(C,new vt(t)):(z=new wt(t),C=jt(C,z))),u){const t=m&&Bt(m);if(t)C=Ht(C,Lt(t.DecompressionStream,m,{chunkSize:e,compressionMethod:g,rawBitFlag:S,uncompressedSize:b}));else try{C=Ot(C,h,{chunkSize:e,deflate64:p},s,n)}catch(t){if(p||b===v)throw t;let e;try{e=new s(Wt)}catch{throw t}C=((t,e,n)=>{const s=new U;let c,i,a,f=0,l=!1;const u=new w((t,e)=>{i=t,a=e});u.catch(()=>{}),n||i();const h=new d({start(t){const e=new o(10);e.set(_t),t.enqueue(e)},transform(t,e){e.enqueue(t)},async flush(t){l=!0,y();try{await u}finally{m()}const e=new o(8),r=T(e);r.setUint32(0,s.get(),!0),r.setUint32(4,n,!0),t.enqueue(e)},cancel(t){a(t)}}),p=new d({transform(t,e){s.append(t),f+=t.length,n>f?l&&y():i(),e.enqueue(t)},cancel(t){a(t)}});return t=jt(t,h),jt(t=Ht(t,e),p);function y(){m(),c=setTimeout(()=>a(new r(Dt)),5e3)}function m(){clearTimeout(c)}})(C,e,b)}C=(t=>{const e=t.getReader();return new y({async pull(t){let n;try{n=await e.read()}catch(t){if(t&&t.message)throw t;const e=new r("Invalid compressed data");throw e.cause=t,e}const{value:s,done:o}=n;o?t.close():t.enqueue(s)},cancel:t=>e.cancel(t)})})(C)}a&&(k=new W,C=jt(C,k)),Ft(this,C,()=>{if(a){const t=new l(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r(Rt)}})}}const Et=new f;function Ft(t,n,s){n=jt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function Lt(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Ot(t,e,n,s,r){const o=e&&s?s:r||s,c=n.deflate64?"deflate64-raw":Ut;let i;try{i=new o(c,n)}catch(t){if(!e||!r||o==r)throw t;i=new r(c,n)}return Ht(t,i)}function jt(t,e){return(t=>{if(t instanceof y)return t;const e=t.getReader();return new y({async pull(t){const{value:n,done:s}=await e.read();s?t.close():t.enqueue(n)},cancel:t=>e.cancel(t)})})(t).pipeThrough(e)}function Ht(t,e){const n=e.writable.getWriter(),s=t.getReader();return(async()=>{try{for(;;){await n.ready;const t=await s.read();if(t.done){await n.close();break}await n.write(t.value)}}catch(t){await(async(t,e)=>{try{await t.abort(e)}catch{}})(n,t),await(async(t,e)=>{try{await t.cancel(e)}catch{}})(s,t)}})(),e.readable}const Zt="data",Nt="close",qt="deflate";class Gt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let c;o.startsWith(qt)?c=Tt:o.startsWith("inflate")&&(c=Kt),s.outputSize=0;let i=0;const a=new c(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(i+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:i})}}),w=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r(Dt)},flush(){const{crc32:t}=a;e.assign(s,{crc32:t,inputSize:i})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(w)})}}class Jt extends d{constructor(t){const e=[];let s=0;function r(){const n=new o(t);let r=0;for(;t>r;){const s=e[0],o=t-r;s.length>o?(n.set(s.subarray(0,o),r),e[0]=s.subarray(o),r+=o):(n.set(s,r),r+=s.length,e.shift())}return s-=t,n}n.isFinite(t)&&t>=1||(t=65536),super({transform(n,o){for(e.push(n),s+=n.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(((t,e)=>{const n=new o(e);let s=0;for(const e of t)n.set(e,s),s+=e.length;return n})(e,s))}})}}let Qt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Qt=navigator.hardwareConcurrency)}catch{}const Xt=new f,Yt=new f;let $t,te,ee,ne,se,re,oe=0;async function ce(t){let e,o;try{const{options:c,config:i}=t;if(c.format&&await(async(t,e)=>{!Pt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=k&&typeof s!=k)throw new r("Invalid codec module");Pt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(c.format,c.codecURI),i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,c.compressed&&!c.format)if(c.useCompressionStream){if(!((t,e)=>{if(!t)return!1;let n=Et.get(t);n||(n=new f,Et.set(t,n));let s=n.get(e);if(s===v){try{new t(e),s=!0}catch{s=!1}n.set(e,s)}return s})(c.codecType.startsWith(qt)?i.CompressionStream:i.DecompressionStream,Ut))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{c.useCompressionStream=!0}const a={highWaterMark:1},l=t.readable||new y({async pull(t){const e=new w(t=>Xt.set(oe,t));ie({type:"pull",messageId:oe}),oe=(oe+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},a);o=t.writable||new m({async write(t){let e;const s=new w(t=>e=t);Yt.set(oe,e),ie({type:Zt,value:t,messageId:oe}),oe=(oe+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new Gt(c,i),$t=new AbortController;const{signal:u}=$t;await l.pipeThrough(e).pipeThrough(new Jt((t=>s.max(t.chunkSize,64))(i))).pipeTo(o,{signal:u,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{crc32:h,inputSize:p,outputSize:d}=e;ie({type:Nt,result:{crc32:h,inputSize:p,outputSize:d}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}ae(t)}}function ie(t){const{value:e}=t;if(e)if(e.length)try{t.value=(n=e,n.byteOffset||n.byteLength!=n.buffer.byteLength?new o(n):n).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var n}function ae(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:c,cause:i}=t,a={message:e,stack:n,code:s,name:o,outputSize:c};i&&(a.cause={name:i.name,message:i.message}),p({error:a})}function fe(t,e,n={}){if(!te){const t=new r("WASM module not loaded");throw t.cause=re,t}const c="number"==typeof n.level?n.level:-1,i="number"==typeof n.outBuffer?n.outBuffer:65536,a="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new d({start(){try{let n;if(this.lt=ee(i),this.in=ee(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.wt=new o(i),t?(this.ut=te.deflate_process,this.ht=te.deflate_last_consumed,this.yt=te.deflate_end,this.gt=te.deflate_new(),n="gzip"===e?te.deflate_init_gzip(this.gt,c):"deflate-raw"===e?te.deflate_init_raw(this.gt,c):te.deflate_init(this.gt,c)):"deflate64-raw"===e?(this.ut=te.inflate9_process,this.ht=te.inflate9_last_consumed,this.yt=te.inflate9_end,this.gt=te.inflate9_new(),n=te.inflate9_init_raw(this.gt)):(this.ut=te.inflate_process,this.ht=te.inflate_last_consumed,this.yt=te.inflate_end,this.gt=te.inflate_new(),n="deflate-raw"===e?te.inflate_init_raw(this.gt):"gzip"===e?te.inflate_init_gzip(this.gt):te.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const c=e,a=new o(se.buffer),f=this.ut,l=this.ht,w=this.lt,u=this.wt;let h=0;for(;h<c.length;){const e=s.min(c.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&ne&&(ne(this.in),this.in=0),this.in=ee(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(c.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,w,i,0),p=16777215&o;if(p&&(u.set(a.subarray(w,w+p),0),n.enqueue(u.slice(0,p))),!t){const t=o>>24&255,e=128&t?t-256:t;if(0>e)throw new r("process error:"+e)}const d=l(this.gt);if(0===d)break;h+=d}}catch(t){f(this),n.error(t)}},flush(e){try{const n=new o(se.buffer),s=this.ut,c=this.lt,a=this.wt;for(;;){const o=s(this.gt,0,0,c,i,4),f=16777215&o,l=o>>24&255;if(!t){const t=128&l?l-256:l;if(0>t)throw new r("process error:"+t)}if(f&&(a.set(n.subarray(c,c+f),0),e.enqueue(a.slice(0,f))),1===l||0===f)break}}catch(t){e.error(t)}finally{const t=f(this);0!==t&&e.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let e=0;return t.gt&&t.yt&&(e=t.yt(t.gt)),t.gt=0,t.in&&ne&&ne(t.in),t.in=0,t.lt&&ne&&ne(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&ce(t),e==Zt){const t=Xt.get(n);Xt.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Yt.get(n);Yt.delete(n),t()}e==Nt&&$t.abort()}catch(t){ae(t)}}),p({type:"ready"});class le{constructor(t="deflate",e){return fe(!0,t,e)}}class we{constructor(t="deflate",e){return fe(!1,t,e)}}le.St=!0,we.St=!0;let ue=!1;self.initModule=async t=>{const e=await(async(t,{baseURI:e})=>{if(!ue)try{await(async(t,e)=>{let n,s;try{try{s=new URL(t,e)}catch{}const r=await fetch(s);n=await r.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;n=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}(t=>{if(te=t,({malloc:ee,free:ne,memory:se}=te),"function"!=typeof ee||"function"!=typeof ne||!se)throw te=ee=ne=se=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports)})(t,e),ue=!0}catch(t){throw(t=>{re=t})(t),t}})(t.wasmURI,t);return t.CompressionStreamZlib=le,t.DecompressionStreamZlib=we,e}});\n';t({workerURI:t=>{const n="text/javascript";if(t){const t=new Blob([e],{type:n});return URL.createObjectURL(t)}return"data:"+n+","+encodeURIComponent(e)}})}export{t as configureWebWorker};
1
+ const t=new Uint8Array(288);t.fill(8,0,144),t.fill(9,144,256),t.fill(7,256,280),t.fill(8,280,288),new Uint8Array(30).fill(5);const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=t=>t({workerURI:t=>{const n="text/javascript";let s='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:c,Uint32Array:i,Int32Array:a,Map:f,DataView:l,Promise:w,TextEncoder:u,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:S,DecompressionStream:g}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)e=1&e?e>>>1^3988292384:e>>>1;C[0][t]=e}for(let t=0;256>t;t++)for(let e=1;8>e;e++){const n=C[e-1][t];C[e][t]=n>>>8^C[0][255&n]}const[A,I,x,M,P,D,B,F]=C;class R{constructor(t){this.o=t||-1}append(t){let e=0|this.o;const n=0|t.length;let s=0;if(n>=8&&t.buffer){const r=new l(t.buffer,t.byteOffset,n),o=n-8;for(;o>=s;s+=8){const t=e^r.getInt32(s,!0),n=r.getInt32(s+4,!0);e=F[255&t]^B[t>>>8&255]^D[t>>>16&255]^P[t>>>24&255]^M[255&n]^x[n>>>8&255]^I[n>>>16&255]^A[n>>>24&255]}}for(;n>s;s++)e=e>>>8^A[255&(e^t[s])];this.o=e}get(){return~this.o}}class U extends d{constructor(){let t;const e=new R;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}function W(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}function _(t){return new l(t.buffer,t.byteOffset,t.byteLength)}const T={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=T.l(n);return 32===s?t.concat(e):T.h(e,s,0|n,t.slice(0,t.length-1))},m(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+T.l(n)},S(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,s.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=T.v(e,t[n-1]&2147483648>>e-1,1)),t},v:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r<t.length;r++)s.push(n|t[r]>>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=T.l(r);return s.push(T.v(e+o&31,e+o>32?n:s.pop(),1)),s}},V={bytes:{C(t){const e=T.m(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},A(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(T.v(8*(3&n),s)),e}}},K=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.M=[1518500249,1859775393,2400959708,3395469782],t?(e.P=t.P.slice(0),e.D=t.D.slice(0),e.B=t.B):e.reset()}reset(){const t=this;return t.P=t.I.slice(0),t.D=[],t.B=0,t}update(t){const e=this;"string"==typeof t&&(t=V.F.A(t));const n=e.D=T.concat(e.D,t),s=e.B,o=e.B=s+T.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const c=new i(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e.R(c.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}U(){const t=this;let e=t.D;const n=t.P;e=T.concat(e,[T.v(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.B/4294967296)),e.push(0|t.B);e.length;)t.R(e.splice(0,16));return t.reset(),n}W(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}_(t,e){return e<<t|e>>>32-t}R(e){const n=this,r=n.P,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let c=r[0],i=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n._(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n._(5,c)+n.W(t,i,a,f)+l+o[t]+n.M[s.floor(t/20)]|0;l=f,f=a,a=n._(30,i),i=c,c=e}r[0]=r[0]+c|0,r[1]=r[1]+i|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},E={importKey:t=>new E.T(V.bytes.A(t)),V(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let c,i,a,f,w;const u=new ArrayBuffer(o),h=new l(u);let p=0;const d=T;for(e=V.bytes.A(e),w=1;(o||1)>p;w++){for(c=i=t.encrypt(d.concat(e,[w])),a=1;n>a;a++)for(i=t.encrypt(i),f=0;f<i.length;f++)c[f]^=i[f];for(a=0;(o||1)>p&&a<c.length;a++)h.setInt32(p,c[a]),p+=4}return u.slice(0,s/8)},T:class{constructor(t){const e=this,n=e.K=K,s=[[],[]];e.L=[new n,new n];const r=e.L[0].blockSize/32;t.length>r&&(t=(new n).update(t).U());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.L[0].update(s[0]),e.L[1].update(s[1]),e.O=new n(e.L[0])}reset(){const t=this;t.O=new t.K(t.L[0]),t.j=!1}update(t){this.j=!0,this.O.update(t)}digest(){const t=this,e=t.O.U(),n=new t.K(t.L[1]).update(e).U();return t.reset(),n}encrypt(t){if(this.j)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},L=typeof h!=b&&typeof h.getRandomValues==k,O="Invalid password",j="Invalid signature",H=j,N="zipjs-abort-check-password";function q(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const G=16,J={name:"PBKDF2"},Q=e.assign({hash:{name:"HMAC"}},J),X=e.assign({iterations:1e3,hash:{name:"SHA-1"}},J),Y=["deriveBits"],Z=[8,12,16],$=[16,24,32],tt=10,et=[0,0,0,0],nt=typeof h!=b,st=nt&&h.subtle,rt=nt&&typeof st!=b,ot=V.bytes,ct=class{constructor(t){const e=this;e.H=[[[],[],[],[],[]],[[],[],[],[],[]]],e.H[0][0][0]||e.N();const n=e.H[0][4],s=e.H[1],o=t.length;let c,i,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.M=[i=t.slice(0),a=[]],c=o;4*o+28>c;c++){let t=i[c-1];(c%o===0||8===o&&c%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],c%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),i[c]=i[c-o]^t}for(let t=0;c;t++,c--){const e=i[3&t?c:c-4];a[t]=4>=c||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.G(t,0)}decrypt(t){return this.G(t,1)}N(){const t=this.H[0],e=this.H[1],n=t[4],s=e[4],r=[],o=[];let c,i,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=c=0;!n[l];l^=i||1,c=o[c]||1){let o=c^c<<1^c<<2^c<<3^c<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[i=r[l]]];let w=16843009*f^65537*a^257*i^16843008*l,u=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=u=u<<24^u>>>8,e[n][o]=w=w<<24^w>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}G(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.M[e],s=n.length/4-2,o=[0,0,0,0],c=this.H[e],i=c[0],a=c[1],f=c[2],l=c[3],w=c[4];let u,h,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],S=t[e?1:3]^n[3],g=4;for(let t=0;s>t;t++)u=i[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&S]^n[g],h=i[y>>>24]^a[m>>16&255]^f[S>>8&255]^l[255&d]^n[g+1],p=i[m>>>24]^a[S>>16&255]^f[d>>8&255]^l[255&y]^n[g+2],S=i[S>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[g+3],g+=4,d=u,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=w[d>>>24]<<24^w[y>>16&255]<<16^w[m>>8&255]<<8^w[255&S]^n[g++],u=d,d=y,y=m,m=S,S=u;return o}},it=class{constructor(t,e){this.J=t,this.X=e,this.Y=e}reset(){this.Y=this.X}update(t){return this.Z(this.J,t,this.Y)}$(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}et(t){0===(t[0]=this.$(t[0]))&&(t[1]=this.$(t[1]))}Z(t,e,n){let s;if(!(s=e.length))return[];const r=T.m(e);for(let r=0;s>r;r+=4){this.et(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return T.S(e,r)}},at=E.T;let ft=nt&&rt&&typeof st.importKey==k,lt=nt&&rt&&typeof st.deriveBits==k;class wt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){ht(this,t,e,n)},async transform(t,e){const n=this,{password:c,strength:i,nt:a,ready:f}=n;c?(await(async(t,e,n,s)=>{const o=await dt(t,e,n,mt(s,0,Z[e])),c=mt(s,Z[e]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)})(n,i,c,mt(t,0,Z[i]+2)),t=mt(t,Z[i]+2),s?e.error(new r(N)):a()):await f;const l=new o(t.length-tt-(t.length-tt)%G);e.enqueue(pt(n,t,l,0,tt,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=mt(s,0,s.length-tt),a=mt(s,s.length-tt);let f=z;if(i.length){const t=gt(ot,i);n.update(t);const s=e.update(t);f=St(ot,s)}const l=mt(St(ot,n.digest()),0,tt);let w=s.length<tt?1:0;for(let t=0;tt>t;t++)w|=l[t]^a[t];if(w&&c)throw new r(H);t.enqueue(f)}}})}}class ut extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){super({start(){ht(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:c,ready:i}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=q(new o(Z[e]));return W(s,await dt(t,e,n,s))})(n,r,s),c()):await i;const f=new o(a.length+t.length-t.length%G);f.set(a,0),e.enqueue(pt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:s,ready:r}=this;if(n&&e){await r;let o=z;if(s.length){const t=e.update(gt(ot,s));n.update(t),o=St(ot,t)}const c=St(ot,n.digest()).slice(0,tt);t.enqueue(W(o,c))}}})}}function ht(t,n,s,r){e.assign(t,{ready:new w(e=>t.nt=e),password:yt(n,s),strength:r-1,pending:z})}function pt(t,e,n,s,r,c){const{st:i,ot:a,pending:f}=t;f.length&&(e=W(f,e));const l=e.length-r;let w;for(n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,s+(l-l%G)),w=0;l-G>=w;w+=G){const t=gt(ot,mt(e,w,w+G));c&&a.update(t);const r=i.update(t);c||a.update(r),n.set(St(ot,r),w+s)}return t.pending=mt(e,w),n}async function dt(n,s,r,c){n.password=null;const i=await(async(t,e,n,s,r)=>{if(!ft)return E.importKey(e);try{return await st.importKey("raw",e,n,!1,r)}catch{return ft=!1,E.importKey(e)}})(0,r,Q,0,Y),a=await(async(t,e,n)=>{if(!lt)return E.V(e,t.salt,X.iterations,n);try{return await st.deriveBits(t,e,n)}catch{return lt=!1,E.V(e,t.salt,X.iterations,n)}})(e.assign({salt:c},X),i,8*(2*$[s]+2)),f=new o(a),l=gt(ot,mt(f,0,$[s])),w=gt(ot,mt(f,$[s],2*$[s])),u=mt(f,2*$[s]);return e.assign(n,{keys:{key:l,ct:w,passwordVerification:u},st:new it(new ct(l),t.from(et)),ot:new at(w)}),u}function yt(t,e){return e===v?(t=>{if(typeof u==b){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new u).encode(t)})(t):e}function mt(t,e,n){return t.subarray(e,n)}function St(t,e){return t.C(e)}function gt(t,e){return t.A(e)}class vt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){kt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=zt(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e[11]^n.passwordVerification))throw new r(O);t=t.subarray(12)}s?e.error(new r(N)):e.enqueue(zt(n,t))}})}}class bt extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){kt(this,t,e,n)},transform(t,e){const n=this;let s,r;if(n.password||n.rawPassword){n.password=n.rawPassword=null;const e=q(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(Ct(n,e),0),r=12}else s=new o(t.length),r=0;s.set(Ct(n,t),r),e.enqueue(s)}})}}function kt(t,n,s,r){e.assign(t,{password:n,rawPassword:s,passwordVerification:r}),((t,n,s)=>{const r=[305419896,591751049,878082192];if(e.assign(t,{keys:r,it:new R(r[0]),ft:new R(r[2])}),s)for(let e=0;e<s.length;e++)At(t,s[e]);else for(let e=0;e<n.length;e++)At(t,n.charCodeAt(e))})(t,n,s)}function zt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=It(t)^e[s],At(t,n[s]);return n}function Ct(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=It(t)^e[s],At(t,e[s]);return n}function At(t,e){let[,n]=t.keys;t.it.append([e]);const r=~t.it.get();n=Mt(s.imul(Mt(n+xt(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function It(t){const e=2|t.keys[2];return xt(s.imul(e,1^e)>>>8)}function xt(t){return 255&t}function Mt(t){return 4294967295&t}const Pt=new f;function Dt(t){return Pt.get(t)}const Bt="Invalid uncompressed size",Ft=j,Rt="deflate-raw",Ut="gzip",Wt=[31,139,8];class _t extends d{constructor(t,{chunkSize:e,CompressionStreamFallback:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:c,zipCrypto:i,computeCrc32:a,level:f,deflate64:w,format:u,compressionMethod:h}=t,p=this;let d,y,m,S=super.readable;const g=u&&Dt(u),v=a&&r&&!w&&!g&&(!o||i)&&!(!c||!s);if(o&&!i||!a||v||(d=new U,S=jt(S,d)),r)if(g)S=Ht(S,Lt(g.CompressionStream,u,{level:f,chunkSize:e,compressionMethod:h}));else if(v)m=new Tt,S=Ht(S,new s(Ut)),S=jt(S,m);else try{S=Ot(S,c,{level:f,chunkSize:e},s,n)}catch(t){let e;try{e=new s(Ut)}catch{throw t}S=Ht(S,e),S=jt(S,new Tt)}o&&(i?S=jt(S,new bt(t)):(y=new ut(t),S=jt(S,y))),Et(p,S,()=>{o&&!i||!a||(p.crc32=v?m.crc32:new l(d.value.buffer).getUint32(0))})}}class Tt extends d{constructor(){let t,e=10,n=new o(0);super({transform(t,r){if(e){const n=s.min(e,t.length);if(e-=n,!(t=t.subarray(n)).length)return}const o=n.length+t.length;if(8>=o)return void(n=W(n,t));const c=o-8,i=s.min(c,n.length);r.enqueue(W(n.subarray(0,i),t.subarray(0,c-i))),n=W(n.subarray(i),t.subarray(c-i))},flush(){const e=_(n);t.crc32=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Vt extends d{constructor(t,{chunkSize:e,DecompressionStreamFallback:n,DecompressionStream:s}){super({});const{zipCrypto:c,encrypted:i,checkCrc32:a,crc32:f,compressed:u,useCompressionStream:h,deflate64:p,format:m,compressionMethod:S,rawBitFlag:g,outputSize:b}=t;let k,z,C=super.readable;if(i&&(c?C=jt(C,new vt(t)):(z=new wt(t),C=jt(C,z))),u){const t=m&&Dt(m);if(t)C=Ht(C,Lt(t.DecompressionStream,m,{chunkSize:e,compressionMethod:S,rawBitFlag:g,uncompressedSize:b}));else try{C=Ot(C,h,{chunkSize:e,deflate64:p},s,n)}catch(t){if(p||b===v)throw t;let e;try{e=new s(Ut)}catch{throw t}C=((t,e,n)=>{const s=new R;let c,i,a,f=0,l=!1;const u=new w((t,e)=>{i=t,a=e});u.catch(()=>{}),n||i();const h=new d({start(t){const e=new o(10);e.set(Wt),t.enqueue(e)},transform(t,e){e.enqueue(t)},async flush(t){l=!0,y();try{await u}finally{m()}const e=new o(8),r=_(e);r.setUint32(0,s.get(),!0),r.setUint32(4,n,!0),t.enqueue(e)},cancel(t){a(t)}}),p=new d({transform(t,e){s.append(t),f+=t.length,n>f?l&&y():i(),e.enqueue(t)},cancel(t){a(t)}});return t=jt(t,h),jt(t=Ht(t,e),p);function y(){m(),c=setTimeout(()=>a(new r(Bt)),5e3)}function m(){clearTimeout(c)}})(C,e,b)}C=(t=>{const e=t.getReader();return new y({async pull(t){let n;try{n=await e.read()}catch(t){if(t&&t.message)throw t;const e=new r("Invalid compressed data");throw e.cause=t,e}const{value:s,done:o}=n;o?t.close():t.enqueue(s)},cancel:t=>e.cancel(t)})})(C)}a&&(k=new U,C=jt(C,k)),Et(this,C,()=>{if(a){const t=new l(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r(Ft)}})}}const Kt=new f;function Et(t,n,s){n=jt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function Lt(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Ot(t,e,n,s,r){const o=e&&s?s:r||s,c=n.deflate64?"deflate64-raw":Rt;let i;try{i=new o(c,n)}catch(t){if(!e||!r||o==r)throw t;i=new r(c,n)}return Ht(t,i)}function jt(t,e){return(t=>{if(t instanceof y)return t;const e=t.getReader();return new y({async pull(t){const{value:n,done:s}=await e.read();s?t.close():t.enqueue(n)},cancel:t=>e.cancel(t)})})(t).pipeThrough(e)}function Ht(t,e){const n=e.writable.getWriter(),s=t.getReader();return(async()=>{try{for(;;){await n.ready;const t=await s.read();if(t.done){await n.close();break}await n.write(t.value)}}catch(t){await(async(t,e)=>{try{await t.abort(e)}catch{}})(n,t),await(async(t,e)=>{try{await t.cancel(e)}catch{}})(s,t)}})(),e.readable}const Nt="data",qt="close",Gt="deflate";class Jt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let c;o.startsWith(Gt)?c=_t:o.startsWith("inflate")&&(c=Vt),s.outputSize=0;let i=0;const a=new c(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(i+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:i})}}),w=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r(Bt)},flush(){const{crc32:t}=a;e.assign(s,{crc32:t,inputSize:i})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(w)})}}class Qt extends d{constructor(t){const e=[];let s=0;function r(){const n=new o(t);let r=0;for(;t>r;){const s=e[0],o=t-r;s.length>o?(n.set(s.subarray(0,o),r),e[0]=s.subarray(o),r+=o):(n.set(s,r),r+=s.length,e.shift())}return s-=t,n}n.isFinite(t)&&t>=1||(t=65536),super({transform(n,o){for(e.push(n),s+=n.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(((t,e)=>{const n=new o(e);let s=0;for(const e of t)n.set(e,s),s+=e.length;return n})(e,s))}})}}let Xt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Xt=navigator.hardwareConcurrency)}catch{}const Yt=new f,Zt=new f;let $t,te,ee,ne,se,re,oe=0;async function ce(t){let e,o;try{const{options:c,config:i}=t;if(c.format&&await(async(t,e)=>{!Pt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=k&&typeof s!=k)throw new r("Invalid codec module");Pt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(c.format,c.codecURI),i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,c.compressed&&!c.format)if(c.useCompressionStream){if(!((t,e)=>{if(!t)return!1;let n=Kt.get(t);n||(n=new f,Kt.set(t,n));let s=n.get(e);if(s===v){try{new t(e),s=!0}catch{s=!1}n.set(e,s)}return s})(c.codecType.startsWith(Gt)?i.CompressionStream:i.DecompressionStream,Rt))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{c.useCompressionStream=!0}!i.CompressionStreamFallback&&i.CompressionStreamZlib&&(i.CompressionStreamFallback=i.CompressionStreamZlib),!i.DecompressionStreamFallback&&i.DecompressionStreamZlib&&(i.DecompressionStreamFallback=i.DecompressionStreamZlib);const a={highWaterMark:1},l=t.readable||new y({async pull(t){const e=new w(t=>Yt.set(oe,t));ie({type:"pull",messageId:oe}),oe=(oe+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},a);o=t.writable||new m({async write(t){let e;const s=new w(t=>e=t);Zt.set(oe,e),ie({type:Nt,value:t,messageId:oe}),oe=(oe+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new Jt(c,i),$t=new AbortController;const{signal:u}=$t;await l.pipeThrough(e).pipeThrough(new Qt((t=>s.max(t.chunkSize,64))(i))).pipeTo(o,{signal:u,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{crc32:h,inputSize:p,outputSize:d}=e;ie({type:qt,result:{crc32:h,inputSize:p,outputSize:d}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}ae(t)}}function ie(t){const{value:e}=t;if(e)if(e.length)try{t.value=(n=e,n.byteOffset||n.byteLength!=n.buffer.byteLength?new o(n):n).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var n}function ae(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:c,cause:i}=t,a={message:e,stack:n,code:s,name:o,outputSize:c};i&&(a.cause={name:i.name,message:i.message}),p({error:a})}function fe(t,e,n={}){if(!te){const t=new r("WASM module not loaded");throw t.cause=re,t}const c="number"==typeof n.level?n.level:-1,i="number"==typeof n.outBuffer?n.outBuffer:65536,a="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new d({start(){try{let n;if(this.lt=ee(i),this.in=ee(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.wt=new o(i),t?(this.ut=te.deflate_process,this.ht=te.deflate_last_consumed,this.yt=te.deflate_end,this.St=te.deflate_new(),n="gzip"===e?te.deflate_init_gzip(this.St,c):"deflate-raw"===e?te.deflate_init_raw(this.St,c):te.deflate_init(this.St,c)):"deflate64-raw"===e?(this.ut=te.inflate9_process,this.ht=te.inflate9_last_consumed,this.yt=te.inflate9_end,this.St=te.inflate9_new(),n=te.inflate9_init_raw(this.St)):(this.ut=te.inflate_process,this.ht=te.inflate_last_consumed,this.yt=te.inflate_end,this.St=te.inflate_new(),n="deflate-raw"===e?te.inflate_init_raw(this.St):"gzip"===e?te.inflate_init_gzip(this.St):te.inflate_init(this.St)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const c=e,a=new o(se.buffer),f=this.ut,l=this.ht,w=this.lt,u=this.wt;let h=0;for(;h<c.length;){const e=s.min(c.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&ne&&(ne(this.in),this.in=0),this.in=ee(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(c.subarray(h,h+e),this.in);const o=f(this.St,this.in,e,w,i,0),p=16777215&o;if(p&&(u.set(a.subarray(w,w+p),0),n.enqueue(u.slice(0,p))),!t){const t=o>>24&255,e=128&t?t-256:t;if(0>e)throw new r("process error:"+e)}const d=l(this.St);if(0===d)break;h+=d}}catch(t){f(this),n.error(t)}},flush(e){try{const n=new o(se.buffer),s=this.ut,c=this.lt,a=this.wt;for(;;){const o=s(this.St,0,0,c,i,4),f=16777215&o,l=o>>24&255;if(!t){const t=128&l?l-256:l;if(0>t)throw new r("process error:"+t)}if(f&&(a.set(n.subarray(c,c+f),0),e.enqueue(a.slice(0,f))),1===l||0===f)break}}catch(t){e.error(t)}finally{const t=f(this);0!==t&&e.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let e=0;return t.St&&t.yt&&(e=t.yt(t.St)),t.St=0,t.in&&ne&&ne(t.in),t.in=0,t.lt&&ne&&ne(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&ce(t),e==Nt){const t=Yt.get(n);Yt.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Zt.get(n);Zt.delete(n),t()}e==qt&&$t.abort()}catch(t){ae(t)}}),p({type:"ready"});class le{constructor(t="deflate",e){return fe(!0,t,e)}}class we{constructor(t="deflate",e){return fe(!1,t,e)}}le.gt=!0,we.gt=!0;let ue=!1;((t={})=>{const{init:e}=t,n=t.CompressionStreamFallback||t.CompressionStreamZlib,s=t.DecompressionStreamFallback||t.DecompressionStreamZlib;self.initModule=async t=>{e&&await e(t),n&&(t.CompressionStreamFallback=n),s&&(t.DecompressionStreamFallback=s)}})({CompressionStreamFallback:le,DecompressionStreamFallback:we,init:t=>(async(t,{baseURI:e})=>{if(!ue)try{await(async(t,e)=>{let n,s;try{try{s=new URL(t,e)}catch{}const r=await fetch(s);n=await r.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;n=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}(t=>{if(te=t,({malloc:ee,free:ne,memory:se}=te),"function"!=typeof ee||"function"!=typeof ne||!se)throw te=ee=ne=se=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports)})(t,e),ue=!0}catch(t){throw(t=>{re=t})(t),t}})(t.wasmURI,t)})});\n';if("string"==typeof s&&(s=(new TextEncoder).encode(s)),t){const t=new Blob([s],{type:n});return URL.createObjectURL(t)}return"data:"+n+";base64,"+(t=>{let n="";const s=t.length;let r=0;for(;s>r+2;r+=3){const s=t[r]<<16|t[r+1]<<8|t[r+2];n+=e[s>>18&63]+e[s>>12&63]+e[s>>6&63]+e[63&s]}const o=s-r;if(1===o){const s=t[r]<<16;n+=e[s>>18&63]+e[s>>12&63]+"=="}else if(2===o){const s=t[r]<<16|t[r+1]<<8;n+=e[s>>18&63]+e[s>>12&63]+e[s>>6&63]+"="}return n})(s)}});export{n as configureWebWorker};
@@ -26,15 +26,13 @@
26
26
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
28
 
29
- /* global self */
30
-
31
- import "./web-worker-base.js";
29
+ import { initWorker } from "./web-worker-base.js";
32
30
  import {
33
- CompressionStreamZlib,
34
- DecompressionStreamZlib,
31
+ CompressionStreamZlib as CompressionStreamFallback,
32
+ DecompressionStreamZlib as DecompressionStreamFallback
35
33
  } from "./streams/zlib-js/zlib-streams.min.js";
36
34
 
37
- self.initModule = config => {
38
- config.CompressionStreamZlib = CompressionStreamZlib;
39
- config.DecompressionStreamZlib = DecompressionStreamZlib;
40
- };
35
+ initWorker({
36
+ CompressionStreamFallback,
37
+ DecompressionStreamFallback
38
+ });
@@ -26,18 +26,15 @@
26
26
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
28
 
29
- /* global self */
30
-
31
- import "./web-worker-base.js";
29
+ import { initWorker } from "./web-worker-base.js";
32
30
  import {
33
- CompressionStreamZlib,
34
- DecompressionStreamZlib,
35
- initModule as init
31
+ CompressionStreamZlib as CompressionStreamFallback,
32
+ DecompressionStreamZlib as DecompressionStreamFallback,
33
+ initModule
36
34
  } from "./streams/zlib-wasm/zlib-streams-loader.js";
37
35
 
38
- self.initModule = async config => {
39
- const result = await init(config.wasmURI, config);
40
- config.CompressionStreamZlib = CompressionStreamZlib;
41
- config.DecompressionStreamZlib = DecompressionStreamZlib;
42
- return result;
43
- };
36
+ initWorker({
37
+ CompressionStreamFallback,
38
+ DecompressionStreamFallback,
39
+ init: config => initModule(config.wasmURI, config)
40
+ });