@zip.js/zip.js 2.8.39 → 2.8.41

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.
@@ -111,6 +111,6 @@ function setCodecStreams(format, streams) {
111
111
 
112
112
  async function ensureCodecStreams(format, codecURI) {
113
113
  if (!codecStreams.has(format) && codecURI) {
114
- setCodecStreams(format, await import(codecURI));
114
+ setCodecStreams(format, await import(/* webpackIgnore: true */ /* @vite-ignore */ codecURI));
115
115
  }
116
116
  }
package/lib/core/io.js CHANGED
@@ -37,6 +37,7 @@ import {
37
37
  } from "./constants.js";
38
38
  import { getConfiguration, getChunkSize } from "./configuration.js";
39
39
  import { concat, toExactUint8Array } from "./util/array.js";
40
+ import { toCompatibleReadable, toCompatibleWritable } from "./util/compatible-streams.js";
40
41
 
41
42
  const ERR_HTTP_STATUS = "HTTP error ";
42
43
  const ERR_HTTP_RANGE = "HTTP Range not supported";
@@ -233,10 +234,10 @@ class BlobReader extends Reader {
233
234
  const { blob, size } = reader;
234
235
  const { offset = 0, size: readSize = size - offset } = options || {};
235
236
  if (!offset && readSize >= size) {
236
- return blob.stream();
237
+ return toCompatibleReadable(blob.stream());
237
238
  }
238
239
  if (blobSliceReliable) {
239
- return blob.slice(offset, offset + readSize).stream();
240
+ return toCompatibleReadable(blob.slice(offset, offset + readSize).stream());
240
241
  }
241
242
  return super.createReadable(options);
242
243
  }
@@ -255,22 +256,37 @@ class BlobReader extends Reader {
255
256
  }
256
257
  }
257
258
 
259
+ function responseSupportsGlobalReadable() {
260
+ return typeof Blob.prototype.stream != FUNCTION_TYPE || new Blob([]).stream() instanceof ReadableStream;
261
+ }
262
+
258
263
  class BlobWriter extends Stream {
259
264
 
260
265
  constructor(contentType) {
261
266
  super();
262
267
  const writer = this;
263
268
  const transformStream = new TransformStream();
264
- const headers = [];
265
- if (contentType) {
266
- headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]);
267
- }
268
269
  Object.defineProperty(writer, PROPERTY_NAME_WRITABLE, {
269
270
  get() {
270
271
  return transformStream.writable;
271
272
  }
272
273
  });
273
- writer.blob = new Response(transformStream.readable, { headers }).blob();
274
+ if (responseSupportsGlobalReadable()) {
275
+ const headers = [];
276
+ if (contentType) {
277
+ headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]);
278
+ }
279
+ writer.blob = new Response(transformStream.readable, { headers }).blob();
280
+ } else {
281
+ const chunks = [];
282
+ writer.blob = transformStream.readable
283
+ .pipeTo(new WritableStream({
284
+ write(chunk) {
285
+ chunks.push(chunk);
286
+ }
287
+ }))
288
+ .then(() => new Blob(chunks, { type: contentType }));
289
+ }
274
290
  writer.blob.catch(() => { });
275
291
  }
276
292
 
@@ -922,9 +938,9 @@ class GenericReader {
922
938
  if (Array.isArray(reader)) {
923
939
  reader = new SplitDataReader(reader);
924
940
  }
925
- if (reader instanceof ReadableStream) {
941
+ if (reader instanceof ReadableStream || typeof reader.getReader == FUNCTION_TYPE) {
926
942
  reader = {
927
- readable: reader
943
+ readable: toCompatibleReadable(reader)
928
944
  };
929
945
  }
930
946
  return reader;
@@ -937,9 +953,9 @@ class GenericWriter {
937
953
  if (writer.writable === UNDEFINED_VALUE && typeof writer.next == FUNCTION_TYPE) {
938
954
  writer = new SplitDataWriter(writer);
939
955
  }
940
- if (writer instanceof WritableStream) {
956
+ if (writer instanceof WritableStream || typeof writer.getWriter == FUNCTION_TYPE) {
941
957
  writer = {
942
- writable: writer
958
+ writable: toCompatibleWritable(writer)
943
959
  };
944
960
  }
945
961
  if (writer.size === UNDEFINED_VALUE) {
@@ -45,6 +45,7 @@ import {
45
45
  } from "./common-crypto.js";
46
46
  import { UNDEFINED_VALUE } from "../constants.js";
47
47
  import { concat, getDataView } from "../util/array.js";
48
+ import { toCompatibleReadable } from "../util/compatible-streams.js";
48
49
  import { getCodecStreams } from "../codec-registry.js";
49
50
 
50
51
  const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
@@ -60,7 +61,7 @@ class DeflateStream extends TransformStream {
60
61
 
61
62
  constructor(options, { chunkSize, CompressionStreamZlib, CompressionStream }) {
62
63
  super({});
63
- const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level, deflate64, format } = options;
64
+ const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level, deflate64, format, compressionMethod } = options;
64
65
  const stream = this;
65
66
  let crc32Stream, encryptionStream, gzipCrc32Stream;
66
67
  let readable = super.readable;
@@ -73,7 +74,7 @@ class DeflateStream extends TransformStream {
73
74
  }
74
75
  if (compressed) {
75
76
  if (codecStreams) {
76
- readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize }));
77
+ readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod }));
77
78
  } else if (useGzipCrc32) {
78
79
  gzipCrc32Stream = new GzipToRawDeflateStream();
79
80
  readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
@@ -148,7 +149,7 @@ class InflateStream extends TransformStream {
148
149
 
149
150
  constructor(options, { chunkSize, DecompressionStreamZlib, DecompressionStream }) {
150
151
  super({});
151
- const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream, deflate64, format } = options;
152
+ const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream, deflate64, format, compressionMethod, rawBitFlag, outputSize } = options;
152
153
  let crc32Stream, decryptionStream;
153
154
  let readable = super.readable;
154
155
  if (encrypted) {
@@ -162,7 +163,7 @@ class InflateStream extends TransformStream {
162
163
  if (compressed) {
163
164
  const codecStreams = format && getCodecStreams(format);
164
165
  if (codecStreams) {
165
- readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize }));
166
+ readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize, compressionMethod, rawBitFlag, uncompressedSize: outputSize }));
166
167
  } else {
167
168
  readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamZlib);
168
169
  }
@@ -248,7 +249,7 @@ function pipeThroughCompressionStream(readable, useCompressionStream, options, C
248
249
  }
249
250
 
250
251
  function pipeThrough(readable, transformStream) {
251
- return readable.pipeThrough(transformStream);
252
+ return toCompatibleReadable(readable).pipeThrough(transformStream);
252
253
  }
253
254
 
254
255
  function pipeThroughBackpressured(readable, transformStream) {
@@ -0,0 +1,72 @@
1
+ /*
2
+ Copyright (c) 2026 Gildas Lormeau. All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright
11
+ notice, this list of conditions and the following disclaimer in
12
+ the documentation and/or other materials provided with the distribution.
13
+
14
+ 3. The names of the authors may not be used to endorse or promote products
15
+ derived from this software without specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
18
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
19
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
20
+ INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
21
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ */
28
+
29
+ /* global ReadableStream, WritableStream */
30
+
31
+ export {
32
+ toCompatibleReadable,
33
+ toCompatibleWritable
34
+ };
35
+
36
+ function toCompatibleReadable(readable) {
37
+ if (readable instanceof ReadableStream) {
38
+ return readable;
39
+ }
40
+ const reader = readable.getReader();
41
+ return new ReadableStream({
42
+ async pull(controller) {
43
+ const { value, done } = await reader.read();
44
+ if (done) {
45
+ controller.close();
46
+ } else {
47
+ controller.enqueue(value);
48
+ }
49
+ },
50
+ cancel(reason) {
51
+ return reader.cancel(reason);
52
+ }
53
+ });
54
+ }
55
+
56
+ function toCompatibleWritable(writable) {
57
+ if (writable instanceof WritableStream) {
58
+ return writable;
59
+ }
60
+ const writer = writable.getWriter();
61
+ return new WritableStream({
62
+ write(chunk) {
63
+ return writer.write(chunk);
64
+ },
65
+ close() {
66
+ return writer.close();
67
+ },
68
+ abort(reason) {
69
+ return writer.abort(reason);
70
+ }
71
+ });
72
+ }
@@ -1 +1 @@
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],n=[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],r=[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],o=[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],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],f=new Uint8Array(288);f.fill(8,0,144),f.fill(9,144,256),f.fill(7,256,280),f.fill(8,280,288);const i=new Uint8Array(30).fill(5);function e(t){const n=new Uint16Array(16);for(const r of t)n[r]++;n[0]=0;const r=new Uint16Array(17);for(let t=1;15>=t;t++)r[t+1]=r[t]+n[t];const o=new Uint16Array(t.length);for(let n=0;n<t.length;n++)t[n]&&(o[r[t[n]]++]=n);return{o:n,symbols:o}}const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function l(l){l({workerURI:l=>{const a="text/javascript",N=(s=>{let l=0,a=0,N=0,C=new Uint8Array(1024),W=0,V=0;for(;!V;){V=v(1);const t=v(2);if(0==t)x();else if(1==t)q(e(f),e(i));else{if(2!=t)throw Error("invalid deflate block type");q(...D())}}return C.subarray(0,W);function X(){if(l>=s.length)throw Error("unexpected end of deflate data");return s[l++]}function v(t){for(;t>N;)a|=X()<<N,N+=8;const n=a&(1<<t)-1;return a>>>=t,N-=t,n}function x(){a=0,N=0;const t=X()|X()<<8;l+=2,j(W+t);for(let n=0;t>n;n++)C[W++]=X()}function q(u,f){let i=U(u);for(;256!=i;){if(256>i)j(W+1),C[W++]=i;else{const u=i-257,e=t[u]+v(n[u]),s=U(f),l=r[s]+v(o[s]);j(W+e);const a=W-l;for(let t=0;e>t;t++)C[W++]=C[a+t]}i=U(u)}}function D(){const t=v(5)+257,n=v(5)+1,r=v(4)+4,o=new Uint8Array(19);for(let t=0;r>t;t++)o[u[t]]=v(3);const f=e(o),i=new Uint8Array(t+n);let s=0;for(;s<i.length;){const t=U(f);if(16>t)i[s++]=t;else if(16==t){const t=i[s-1];let n=v(2)+3;for(;n--;)i[s++]=t}else s+=17==t?v(3)+3:v(7)+11}return[e(i.subarray(0,t)),e(i.subarray(t))]}function U(t){const{o:n,symbols:r}=t;let o=0,u=0,f=0;for(let t=1;15>=t;t++){o|=v(1);const i=n[t];if(i>o-u)return r[f+(o-u)];f+=i,u=u+i<<1,o<<=1}throw Error("invalid huffman code")}function j(t){if(C.length<t){let n=2*C.length;for(;t>n;)n*=2;const r=new Uint8Array(n);r.set(C.subarray(0,W)),C=r}}})((t=>{const n=(t=(t+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,r=[];for(let o=0;n>o;o+=4){const n=s.indexOf(t[o])<<18|s.indexOf(t[o+1])<<12|(63&s.indexOf(t[o+2]))<<6|63&s.indexOf(t[o+3]);r.push(n>>16&255),"="!==t[o+2]&&r.push(n>>8&255),"="!==t[o+3]&&r.push(255&n)}return new Uint8Array(r)})("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"));if(l){const t=new Blob([N],{type:a});return URL.createObjectURL(t)}return"data:"+a+";base64,"+(t=>{let n="";const r=t.length;let o=0;for(;r>o+2;o+=3){const r=t[o]<<16|t[o+1]<<8|t[o+2];n+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+s[63&r]}const u=r-o;if(1===u){const r=t[o]<<16;n+=s[r>>18&63]+s[r>>12&63]+"=="}else if(2===u){const r=t[o]<<16|t[o+1]<<8;n+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+"="}return n})(N)}})}export{l 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],e=[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],f=[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],n=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=new Uint8Array(288);l.fill(8,0,144),l.fill(9,144,256),l.fill(7,256,280),l.fill(8,280,288);const o=new Uint8Array(30).fill(5);function i(t){const e=new Uint16Array(16);for(const f of t)e[f]++;e[0]=0;const f=new Uint16Array(17);for(let t=1;15>=t;t++)f[t+1]=f[t]+e[t];const r=new Uint16Array(t.length);for(let e=0;e<t.length;e++)t[e]&&(r[f[t[e]]++]=e);return{l:e,symbols:r}}const U="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function a(a){a({workerURI:a=>{const c="text/javascript",q=(U=>{let a=0,c=0,q=0,x=new Uint8Array(1024),W=0,h=0;for(;!h;){h=V(1);const t=V(2);if(0==t)s();else if(1==t)u(i(l),i(o));else{if(2!=t)throw Error("invalid deflate block type");u(...z())}}return x.subarray(0,W);function L(){if(a>=U.length)throw Error("unexpected end of deflate data");return U[a++]}function V(t){for(;t>q;)c|=L()<<q,q+=8;const e=c&(1<<t)-1;return c>>>=t,q-=t,e}function s(){c=0,q=0;const t=L()|L()<<8;a+=2,Y(W+t);for(let e=0;t>e;e++)x[W++]=L()}function u(n,l){let o=m(n);for(;256!=o;){if(256>o)Y(W+1),x[W++]=o;else{const n=o-257,i=t[n]+V(e[n]),U=m(l),a=f[U]+V(r[U]);Y(W+i);const c=W-a;for(let t=0;i>t;t++)x[W++]=x[c+t]}o=m(n)}}function z(){const t=V(5)+257,e=V(5)+1,f=V(4)+4,r=new Uint8Array(19);for(let t=0;f>t;t++)r[n[t]]=V(3);const l=i(r),o=new Uint8Array(t+e);let U=0;for(;U<o.length;){const t=m(l);if(16>t)o[U++]=t;else if(16==t){const t=o[U-1];let e=V(2)+3;for(;e--;)o[U++]=t}else U+=17==t?V(3)+3:V(7)+11}return[i(o.subarray(0,t)),i(o.subarray(t))]}function m(t){const{l:e,symbols:f}=t;let r=0,n=0,l=0;for(let t=1;15>=t;t++){r|=V(1);const o=e[t];if(o>r-n)return f[l+(r-n)];l+=o,n=n+o<<1,r<<=1}throw Error("invalid huffman code")}function Y(t){if(x.length<t){let e=2*x.length;for(;t>e;)e*=2;const f=new Uint8Array(e);f.set(x.subarray(0,W)),x=f}}})((t=>{const e=(t=(t+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,f=[];for(let r=0;e>r;r+=4){const e=U.indexOf(t[r])<<18|U.indexOf(t[r+1])<<12|(63&U.indexOf(t[r+2]))<<6|63&U.indexOf(t[r+3]);f.push(e>>16&255),"="!==t[r+2]&&f.push(e>>8&255),"="!==t[r+3]&&f.push(255&e)}return new Uint8Array(f)})("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"));if(a){const t=new Blob([q],{type:c});return URL.createObjectURL(t)}return"data:"+c+";base64,"+(t=>{let e="";const f=t.length;let r=0;for(;f>r+2;r+=3){const f=t[r]<<16|t[r+1]<<8|t[r+2];e+=U[f>>18&63]+U[f>>12&63]+U[f>>6&63]+U[63&f]}const n=f-r;if(1===n){const f=t[r]<<16;e+=U[f>>18&63]+U[f>>12&63]+"=="}else if(2===n){const f=t[r]<<16|t[r+1]<<8;e+=U[f>>18&63]+U[f>>12&63]+U[f>>6&63]+"="}return e})(q)}})}export{a 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:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,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,P,D,R,U,M]=C;class _{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=M[255&t]^U[t>>>8&255]^R[t>>>16&255]^D[t>>>24&255]^P[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 B extends d{constructor(){let t;const e=new _;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 V(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}const W={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=W.l(n);return 32===s?t.concat(e):W.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)+W.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]=W.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=W.l(r);return s.push(W.v(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=W.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(W.v(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.P=[1518500249,1859775393,2400959708,3395469782],t?(e.D=t.D.slice(0),e.R=t.R.slice(0),e.U=t.U):e.reset()}reset(){const t=this;return t.D=t.I.slice(0),t.R=[],t.U=0,t}update(t){const e=this;"string"==typeof t&&(t=K.M.A(t));const n=e.R=W.concat(e.R,t),s=e.U,o=e.U=s+W.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e._(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}B(){const t=this;let e=t.R;const n=t.D;e=W.concat(e,[W.v(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.U/4294967296)),e.push(0|t.U);e.length;)t._(e.splice(0,16));return t.reset(),n}V(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}W(t,e){return e<<t|e>>>32-t}_(e){const n=this,r=n.D,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.W(5,i)+n.V(t,c,a,f)+l+o[t]+n.P[s.floor(t/20)]|0;l=f,f=a,a=n.W(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},L={importKey:t=>new L.K(K.bytes.A(t)),L(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 i,c,a,f,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=W;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),f=0;f<c.length;f++)i[f]^=c[f];for(a=0;(o||1)>p&&a<i.length;a++)h.setInt32(p,i[a]),p+=4}return w.slice(0,s/8)},K:class{constructor(t){const e=this,n=e.O=E,s=[[],[]];e.T=[new n,new n];const r=e.T[0].blockSize/32;t.length>r&&(t=(new n).update(t).B());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.T[0].update(s[0]),e.T[1].update(s[1]),e.j=new n(e.T[0])}reset(){const t=this;t.j=new t.O(t.T[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.B(),n=new t.O(t.T[1]).update(e).B();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},O=typeof h!=b&&typeof h.getRandomValues==k,T="Invalid password",j="Invalid signature",H="zipjs-abort-check-password";function Z(t){if(O)return h.getRandomValues(t);throw new r("Crypto API not supported")}const F=16,N={name:"PBKDF2"},q=e.assign({hash:{name:"HMAC"}},N),G=e.assign({iterations:1e3,hash:{name:"SHA-1"}},N),J=["deriveBits"],Q=[8,12,16],X=[16,24,32],Y=10,$=[0,0,0,0],tt=typeof h!=b,et=tt&&h.subtle,nt=tt&&typeof et!=b,st=K.bytes,rt=class{constructor(t){const e=this;e.Z=[[[],[],[],[],[]],[[],[],[],[],[]]],e.Z[0][0][0]||e.F();const n=e.Z[0][4],s=e.Z[1],o=t.length;let i,c,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.P=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||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)}F(){const t=this.Z[0],e=this.Z[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[c=r[l]]];let u=16843009*f^65537*a^257*c^16843008*l,w=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][o]=u=u<<24^u>>>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.P[e],s=n.length/4-2,o=[0,0,0,0],i=this.Z[e],c=i[0],a=i[1],f=i[2],l=i[3],u=i[4];let w,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++)w=c[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[S],h=c[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[S+1],p=c[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[S+2],g=c[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[S+3],S+=4,d=w,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[S++],w=d,d=y,y=m,m=g,g=w;return o}},ot=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=W.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 W.S(e,r)}},it=L.K;let ct=tt&&nt&&typeof et.importKey==k,at=tt&&nt&&typeof et.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s}){super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:i,strength:c,nt:a,ready:f}=n;i?(await(async(t,e,n,s)=>{const o=await ht(t,e,n,dt(s,0,Q[e])),i=dt(s,Q[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(T)})(n,c,i,dt(t,0,Q[c]+2)),t=dt(t,Q[c]+2),s?e.error(new r(H)):a()):await f;const l=new o(t.length-Y-(t.length-Y)%F);e.enqueue(wt(n,t,l,0,Y,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=dt(s,0,s.length-Y),c=dt(s,s.length-Y);let a=z;if(i.length){const t=mt(st,i);n.update(t);const s=e.update(t);a=yt(st,s)}const f=dt(yt(st,n.digest()),0,Y);let l=s.length<Y?1:0;for(let t=0;Y>t;t++)l|=f[t]^c[t];if(l)throw new r(j);t.enqueue(a)}}})}}class lt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:i,ready:c}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=Z(new o(Q[e]));return V(s,await ht(t,e,n,s))})(n,r,s),i()):await c;const f=new o(a.length+t.length-t.length%F);f.set(a,0),e.enqueue(wt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:r,ready:o}=this;if(n&&e){await o;let i=z;if(r.length){const t=e.update(mt(st,r));n.update(t),i=yt(st,t)}s.signature=yt(st,n.digest()).slice(0,Y),t.enqueue(V(i,s.signature))}}}),s=this}}function ut(t,n,s,r){e.assign(t,{ready:new u(e=>t.nt=e),password:pt(n,s),strength:r-1,pending:z})}function wt(t,e,n,s,r,i){const{st:c,ot:a,pending:f}=t;f.length&&(e=V(f,e));const l=e.length-r;let u;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%F)),u=0;l-F>=u;u+=F){const t=mt(st,dt(e,u,u+F));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(yt(st,r),u+s)}return t.pending=dt(e,u),n}async function ht(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!ct)return L.importKey(e);try{return await et.importKey("raw",e,n,!1,r)}catch{return ct=!1,L.importKey(e)}})(0,r,q,0,J),a=await(async(t,e,n)=>{if(!at)return L.L(e,t.salt,G.iterations,n);try{return await et.deriveBits(t,e,n)}catch{return at=!1,L.L(e,t.salt,G.iterations,n)}})(e.assign({salt:i},G),c,8*(2*X[s]+2)),f=new o(a),l=mt(st,dt(f,0,X[s])),u=mt(st,dt(f,X[s],2*X[s])),w=dt(f,2*X[s]);return e.assign(n,{keys:{key:l,it:u,passwordVerification:w},st:new ot(new rt(l),t.from($)),ot:new it(u)}),w}function pt(t,e){return e===v?(t=>{if(typeof w==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 w).encode(t)})(t):e}function dt(t,e,n){return t.subarray(e,n)}function yt(t,e){return t.C(e)}function mt(t,e){return t.A(e)}class gt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=bt(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e[11]^n.passwordVerification))throw new r(T);t=t.subarray(12)}s?e.error(new r(H)):e.enqueue(bt(n,t))}})}}class St extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){vt(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=Z(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(kt(n,e),0),r=12}else s=new o(t.length),r=0;s.set(kt(n,t),r),e.enqueue(s)}})}}function vt(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,ct:new _(r[0]),ft:new _(r[2])}),s)for(let e=0;e<s.length;e++)zt(t,s[e]);else for(let e=0;e<n.length;e++)zt(t,n.charCodeAt(e))})(t,n,s)}function bt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,n[s]);return n}function kt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,e[s]);return n}function zt(t,e){let[,n]=t.keys;t.ct.append([e]);const r=~t.ct.get();n=It(s.imul(It(n+At(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function Ct(t){const e=2|t.keys[2];return At(s.imul(e,1^e)>>>8)}function At(t){return 255&t}function It(t){return 4294967295&t}const xt=new f;function Pt(t){return xt.get(t)}const Dt="deflate-raw";class Rt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:f,deflate64:u,format:w}=t,h=this;let p,d,y,m=super.readable;const g=w&&Pt(w),S=a&&r&&!u&&!g&&(!o||c)&&!(!i||!s);o&&!c||!a||S||(p=new B,m=Kt(m,p)),r&&(g?m=Et(m,Vt(g.CompressionStream,w,{level:f,chunkSize:e})):S?(y=new Ut,m=Et(m,new s("gzip")),m=Kt(m,y)):m=Wt(m,i,{level:f,chunkSize:e},s,n)),o&&(c?m=Kt(m,new St(t)):(d=new lt(t),m=Kt(m,d))),Bt(h,m,()=>{let t;o&&!c&&(t=d.signature),o&&!c||!a||(t=S?y.signature:new l(p.value.buffer).getUint32(0)),h.signature=t})}}class Ut 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=V(n,t));const i=o-8,c=s.min(i,n.length);r.enqueue(V(n.subarray(0,c),t.subarray(0,i-c))),n=V(n.subarray(c),t.subarray(i-c))},flush(){const e=new l((s=n).buffer,s.byteOffset,s.byteLength);var s;t.signature=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Mt extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:f,useCompressionStream:u,deflate64:w,format:h}=t;let p,d,m=super.readable;if(i&&(o?m=Kt(m,new gt(t)):(d=new ft(t),m=Kt(m,d))),f){const t=h&&Pt(h);m=t?Et(m,Vt(t.DecompressionStream,h,{chunkSize:e})):Wt(m,u,{chunkSize:e,deflate64:w},s,n),m=(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)})})(m)}i&&!o||!c||(p=new B,m=Kt(m,p)),Bt(this,m,()=>{if((!i||o)&&c){const t=new l(p.value.buffer);if(a!=t.getUint32(0,!1))throw new r(j)}})}}const _t=new f;function Bt(t,n,s){n=Kt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function Vt(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Wt(t,e,n,s,r){const o=e&&s?s:r||s,i=n.deflate64?"deflate64-raw":Dt;let c;try{c=new o(i,n)}catch(t){if(!e||!r||o==r)throw t;c=new r(i,n)}return Et(t,c)}function Kt(t,e){return t.pipeThrough(e)}function Et(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 Lt="data",Ot="close",Tt="deflate";class jt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith(Tt)?i=Rt:o.startsWith("inflate")&&(i=Mt),s.outputSize=0;let c=0;const a=new i(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=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("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class Ht 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 Zt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Zt=navigator.hardwareConcurrency)}catch{}const Ft=new f,Nt=new f;let qt,Gt,Jt,Qt,Xt,Yt=0;async function $t(t){let e,o;try{const{options:i,config:c}=t;if(i.format&&await(async(t,e)=>{!xt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=k&&typeof s!=k)throw new r("Invalid codec module");xt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(i.format,i.codecURI),c.CompressionStream=self.CompressionStream,c.DecompressionStream=self.DecompressionStream,i.compressed&&!i.format)if(i.useCompressionStream){if(!(t=>{if(!t)return!1;let e=_t.get(t);if(e===v){try{new t(Dt),e=!0}catch{e=!1}_t.set(t,e)}return e})(i.codecType.startsWith(Tt)?c.CompressionStream:c.DecompressionStream))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{i.useCompressionStream=!0}const a={highWaterMark:1},f=t.readable||new y({async pull(t){const e=new u(t=>Ft.set(Yt,t));te({type:"pull",messageId:Yt}),Yt=(Yt+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 u(t=>e=t);Nt.set(Yt,e),te({type:Lt,value:t,messageId:Yt}),Yt=(Yt+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new jt(i,c),qt=new AbortController;const{signal:l}=qt;await f.pipeThrough(e).pipeThrough(new Ht((t=>s.max(t.chunkSize,64))(c))).pipeTo(o,{signal:l,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:w,inputSize:h,outputSize:p}=e;te({type:Ot,result:{signature:w,inputSize:h,outputSize:p}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}ee(t)}}function te(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 ee(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}function ne(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="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=Jt(c),this.in=Jt(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.ut=new o(c),t?(this.wt=Gt.deflate_process,this.ht=Gt.deflate_last_consumed,this.yt=Gt.deflate_end,this.gt=Gt.deflate_new(),n="gzip"===e?Gt.deflate_init_gzip(this.gt,i):"deflate-raw"===e?Gt.deflate_init_raw(this.gt,i):Gt.deflate_init(this.gt,i)):"deflate64-raw"===e?(this.wt=Gt.inflate9_process,this.ht=Gt.inflate9_last_consumed,this.yt=Gt.inflate9_end,this.gt=Gt.inflate9_new(),n=Gt.inflate9_init_raw(this.gt)):(this.wt=Gt.inflate_process,this.ht=Gt.inflate_last_consumed,this.yt=Gt.inflate_end,this.gt=Gt.inflate_new(),n="deflate-raw"===e?Gt.inflate_init_raw(this.gt):"gzip"===e?Gt.inflate_init_gzip(this.gt):Gt.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const i=e,a=new o(Xt.buffer),f=this.wt,l=this.ht,u=this.lt,w=this.ut;let h=0;for(;h<i.length;){const e=s.min(i.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&Qt&&(Qt(this.in),this.in=0),this.in=Jt(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(i.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,u,c,0),p=16777215&o;if(p&&(w.set(a.subarray(u,u+p),0),n.enqueue(w.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(Xt.buffer),s=this.wt,i=this.lt,a=this.ut;for(;;){const o=s(this.gt,0,0,i,c,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(i,i+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&&Qt&&Qt(t.in),t.in=0,t.lt&&Qt&&Qt(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&$t(t),e==Lt){const t=Ft.get(n);Ft.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Nt.get(n);Nt.delete(n),t()}e==Ot&&qt.abort()}catch(t){ee(t)}}),p({type:"ready"});class se{constructor(t="deflate",e){return ne(!0,t,e)}}class re{constructor(t="deflate",e){return ne(!1,t,e)}}se.St=!0,re.St=!0;let oe=!1;self.initModule=async t=>{try{const e=await(async(t,{baseURI:e})=>{if(!oe){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(Gt=t,({malloc:Jt,free:Qt,memory:Xt}=Gt),"function"!=typeof Jt||"function"!=typeof Qt||!Xt)throw Gt=Jt=Qt=Xt=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports),oe=!0}})(t.wasmURI,t);return t.CompressionStreamZlib=se,t.DecompressionStreamZlib=re,e}catch{}}});\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
+ 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:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:S}=self,v=void 0,b="undefined",z="function",k=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,P,M,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]^M[t>>>24&255]^P[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 _ 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 V(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}const W={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=W.l(n);return 32===s?t.concat(e):W.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)+W.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]=W.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=W.l(r);return s.push(W.v(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=W.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(W.v(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.P=[1518500249,1859775393,2400959708,3395469782],t?(e.M=t.M.slice(0),e.B=t.B.slice(0),e.D=t.D):e.reset()}reset(){const t=this;return t.M=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=W.concat(e.B,t),s=e.D,o=e.D=s+W.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e.U(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}_(){const t=this;let e=t.B;const n=t.M;e=W.concat(e,[W.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}V(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}W(t,e){return e<<t|e>>>32-t}U(e){const n=this,r=n.M,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.W(5,i)+n.V(t,c,a,f)+l+o[t]+n.P[s.floor(t/20)]|0;l=f,f=a,a=n.W(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},F={importKey:t=>new F.K(K.bytes.A(t)),F(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 i,c,a,f,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=W;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),f=0;f<c.length;f++)i[f]^=c[f];for(a=0;(o||1)>p&&a<i.length;a++)h.setInt32(p,i[a]),p+=4}return w.slice(0,s/8)},K:class{constructor(t){const e=this,n=e.L=E,s=[[],[]];e.O=[new n,new n];const r=e.O[0].blockSize/32;t.length>r&&(t=(new n).update(t)._());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.O[0].update(s[0]),e.O[1].update(s[1]),e.T=new n(e.O[0])}reset(){const t=this;t.T=new t.L(t.O[0]),t.j=!1}update(t){this.j=!0,this.T.update(t)}digest(){const t=this,e=t.T._(),n=new t.L(t.O[1]).update(e)._();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==z,O="Invalid password",T="Invalid signature",j="zipjs-abort-check-password";function H(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const Z=16,N={name:"PBKDF2"},q=e.assign({hash:{name:"HMAC"}},N),G=e.assign({iterations:1e3,hash:{name:"SHA-1"}},N),J=["deriveBits"],Q=[8,12,16],X=[16,24,32],Y=10,$=[0,0,0,0],tt=typeof h!=b,et=tt&&h.subtle,nt=tt&&typeof et!=b,st=K.bytes,rt=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 i,c,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.P=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||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 i,c,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[c=r[l]]];let u=16843009*f^65537*a^257*c^16843008*l,w=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][o]=u=u<<24^u>>>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.P[e],s=n.length/4-2,o=[0,0,0,0],i=this.H[e],c=i[0],a=i[1],f=i[2],l=i[3],u=i[4];let w,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++)w=c[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[S],h=c[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[S+1],p=c[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[S+2],g=c[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[S+3],S+=4,d=w,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[S++],w=d,d=y,y=m,m=g,g=w;return o}},ot=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=W.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 W.S(e,r)}},it=F.K;let ct=tt&&nt&&typeof et.importKey==z,at=tt&&nt&&typeof et.deriveBits==z;class ft extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s}){super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:i,strength:c,nt:a,ready:f}=n;i?(await(async(t,e,n,s)=>{const o=await ht(t,e,n,dt(s,0,Q[e])),i=dt(s,Q[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(O)})(n,c,i,dt(t,0,Q[c]+2)),t=dt(t,Q[c]+2),s?e.error(new r(j)):a()):await f;const l=new o(t.length-Y-(t.length-Y)%Z);e.enqueue(wt(n,t,l,0,Y,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=dt(s,0,s.length-Y),c=dt(s,s.length-Y);let a=k;if(i.length){const t=mt(st,i);n.update(t);const s=e.update(t);a=yt(st,s)}const f=dt(yt(st,n.digest()),0,Y);let l=s.length<Y?1:0;for(let t=0;Y>t;t++)l|=f[t]^c[t];if(l)throw new r(T);t.enqueue(a)}}})}}class lt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:i,ready:c}=n;let a=k;s?(a=await(async(t,e,n)=>{const s=H(new o(Q[e]));return V(s,await ht(t,e,n,s))})(n,r,s),i()):await c;const f=new o(a.length+t.length-t.length%Z);f.set(a,0),e.enqueue(wt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:r,ready:o}=this;if(n&&e){await o;let i=k;if(r.length){const t=e.update(mt(st,r));n.update(t),i=yt(st,t)}s.signature=yt(st,n.digest()).slice(0,Y),t.enqueue(V(i,s.signature))}}}),s=this}}function ut(t,n,s,r){e.assign(t,{ready:new u(e=>t.nt=e),password:pt(n,s),strength:r-1,pending:k})}function wt(t,e,n,s,r,i){const{st:c,ot:a,pending:f}=t;f.length&&(e=V(f,e));const l=e.length-r;let u;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%Z)),u=0;l-Z>=u;u+=Z){const t=mt(st,dt(e,u,u+Z));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(yt(st,r),u+s)}return t.pending=dt(e,u),n}async function ht(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!ct)return F.importKey(e);try{return await et.importKey("raw",e,n,!1,r)}catch{return ct=!1,F.importKey(e)}})(0,r,q,0,J),a=await(async(t,e,n)=>{if(!at)return F.F(e,t.salt,G.iterations,n);try{return await et.deriveBits(t,e,n)}catch{return at=!1,F.F(e,t.salt,G.iterations,n)}})(e.assign({salt:i},G),c,8*(2*X[s]+2)),f=new o(a),l=mt(st,dt(f,0,X[s])),u=mt(st,dt(f,X[s],2*X[s])),w=dt(f,2*X[s]);return e.assign(n,{keys:{key:l,it:u,passwordVerification:w},st:new ot(new rt(l),t.from($)),ot:new it(u)}),w}function pt(t,e){return e===v?(t=>{if(typeof w==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 w).encode(t)})(t):e}function dt(t,e,n){return t.subarray(e,n)}function yt(t,e){return t.C(e)}function mt(t,e){return t.A(e)}class gt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=bt(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(j)):e.enqueue(bt(n,t))}})}}class St extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){vt(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=H(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(zt(n,e),0),r=12}else s=new o(t.length),r=0;s.set(zt(n,t),r),e.enqueue(s)}})}}function vt(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,ct:new U(r[0]),ft:new U(r[2])}),s)for(let e=0;e<s.length;e++)kt(t,s[e]);else for(let e=0;e<n.length;e++)kt(t,n.charCodeAt(e))})(t,n,s)}function bt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],kt(t,n[s]);return n}function zt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],kt(t,e[s]);return n}function kt(t,e){let[,n]=t.keys;t.ct.append([e]);const r=~t.ct.get();n=It(s.imul(It(n+At(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function Ct(t){const e=2|t.keys[2];return At(s.imul(e,1^e)>>>8)}function At(t){return 255&t}function It(t){return 4294967295&t}const xt=new f;function Pt(t){return xt.get(t)}const Mt="deflate-raw";class Bt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:f,deflate64:u,format:w,compressionMethod:h}=t,p=this;let d,y,m,g=super.readable;const S=w&&Pt(w),v=a&&r&&!u&&!S&&(!o||c)&&!(!i||!s);o&&!c||!a||v||(d=new _,g=Kt(g,d)),r&&(S?g=Et(g,Vt(S.CompressionStream,w,{level:f,chunkSize:e,compressionMethod:h})):v?(m=new Dt,g=Et(g,new s("gzip")),g=Kt(g,m)):g=Wt(g,i,{level:f,chunkSize:e},s,n)),o&&(c?g=Kt(g,new St(t)):(y=new lt(t),g=Kt(g,y))),_t(p,g,()=>{let t;o&&!c&&(t=y.signature),o&&!c||!a||(t=v?m.signature:new l(d.value.buffer).getUint32(0)),p.signature=t})}}class Dt 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=V(n,t));const i=o-8,c=s.min(i,n.length);r.enqueue(V(n.subarray(0,c),t.subarray(0,i-c))),n=V(n.subarray(c),t.subarray(i-c))},flush(){const e=new l((s=n).buffer,s.byteOffset,s.byteLength);var s;t.signature=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Rt extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:f,useCompressionStream:u,deflate64:w,format:h,compressionMethod:p,rawBitFlag:d,outputSize:m}=t;let g,S,v=super.readable;if(i&&(o?v=Kt(v,new gt(t)):(S=new ft(t),v=Kt(v,S))),f){const t=h&&Pt(h);v=t?Et(v,Vt(t.DecompressionStream,h,{chunkSize:e,compressionMethod:p,rawBitFlag:d,uncompressedSize:m})):Wt(v,u,{chunkSize:e,deflate64:w},s,n),v=(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)})})(v)}i&&!o||!c||(g=new _,v=Kt(v,g)),_t(this,v,()=>{if((!i||o)&&c){const t=new l(g.value.buffer);if(a!=t.getUint32(0,!1))throw new r(T)}})}}const Ut=new f;function _t(t,n,s){n=Kt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function Vt(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Wt(t,e,n,s,r){const o=e&&s?s:r||s,i=n.deflate64?"deflate64-raw":Mt;let c;try{c=new o(i,n)}catch(t){if(!e||!r||o==r)throw t;c=new r(i,n)}return Et(t,c)}function Kt(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 Et(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 Ft="data",Lt="close",Ot="deflate";class Tt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith(Ot)?i=Bt:o.startsWith("inflate")&&(i=Rt),s.outputSize=0;let c=0;const a=new i(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=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("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}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 Ht=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Ht=navigator.hardwareConcurrency)}catch{}const Zt=new f,Nt=new f;let qt,Gt,Jt,Qt,Xt,Yt=0;async function $t(t){let e,o;try{const{options:i,config:c}=t;if(i.format&&await(async(t,e)=>{!xt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=z&&typeof s!=z)throw new r("Invalid codec module");xt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(i.format,i.codecURI),c.CompressionStream=self.CompressionStream,c.DecompressionStream=self.DecompressionStream,i.compressed&&!i.format)if(i.useCompressionStream){if(!(t=>{if(!t)return!1;let e=Ut.get(t);if(e===v){try{new t(Mt),e=!0}catch{e=!1}Ut.set(t,e)}return e})(i.codecType.startsWith(Ot)?c.CompressionStream:c.DecompressionStream))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{i.useCompressionStream=!0}const a={highWaterMark:1},f=t.readable||new y({async pull(t){const e=new u(t=>Zt.set(Yt,t));te({type:"pull",messageId:Yt}),Yt=(Yt+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 u(t=>e=t);Nt.set(Yt,e),te({type:Ft,value:t,messageId:Yt}),Yt=(Yt+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new Tt(i,c),qt=new AbortController;const{signal:l}=qt;await f.pipeThrough(e).pipeThrough(new jt((t=>s.max(t.chunkSize,64))(c))).pipeTo(o,{signal:l,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:w,inputSize:h,outputSize:p}=e;te({type:Lt,result:{signature:w,inputSize:h,outputSize:p}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}ee(t)}}function te(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 ee(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}function ne(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="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=Jt(c),this.in=Jt(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.ut=new o(c),t?(this.wt=Gt.deflate_process,this.ht=Gt.deflate_last_consumed,this.yt=Gt.deflate_end,this.gt=Gt.deflate_new(),n="gzip"===e?Gt.deflate_init_gzip(this.gt,i):"deflate-raw"===e?Gt.deflate_init_raw(this.gt,i):Gt.deflate_init(this.gt,i)):"deflate64-raw"===e?(this.wt=Gt.inflate9_process,this.ht=Gt.inflate9_last_consumed,this.yt=Gt.inflate9_end,this.gt=Gt.inflate9_new(),n=Gt.inflate9_init_raw(this.gt)):(this.wt=Gt.inflate_process,this.ht=Gt.inflate_last_consumed,this.yt=Gt.inflate_end,this.gt=Gt.inflate_new(),n="deflate-raw"===e?Gt.inflate_init_raw(this.gt):"gzip"===e?Gt.inflate_init_gzip(this.gt):Gt.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const i=e,a=new o(Xt.buffer),f=this.wt,l=this.ht,u=this.lt,w=this.ut;let h=0;for(;h<i.length;){const e=s.min(i.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&Qt&&(Qt(this.in),this.in=0),this.in=Jt(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(i.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,u,c,0),p=16777215&o;if(p&&(w.set(a.subarray(u,u+p),0),n.enqueue(w.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(Xt.buffer),s=this.wt,i=this.lt,a=this.ut;for(;;){const o=s(this.gt,0,0,i,c,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(i,i+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&&Qt&&Qt(t.in),t.in=0,t.lt&&Qt&&Qt(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&$t(t),e==Ft){const t=Zt.get(n);Zt.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Nt.get(n);Nt.delete(n),t()}e==Lt&&qt.abort()}catch(t){ee(t)}}),p({type:"ready"});class se{constructor(t="deflate",e){return ne(!0,t,e)}}class re{constructor(t="deflate",e){return ne(!1,t,e)}}se.St=!0,re.St=!0;let oe=!1;self.initModule=async t=>{try{const e=await(async(t,{baseURI:e})=>{if(!oe){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(Gt=t,({malloc:Jt,free:Qt,memory:Xt}=Gt),"function"!=typeof Jt||"function"!=typeof Qt||!Xt)throw Gt=Jt=Qt=Xt=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports),oe=!0}})(t.wasmURI,t);return t.CompressionStreamZlib=se,t.DecompressionStreamZlib=re,e}catch{}}});\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};
@@ -107,6 +107,7 @@ import {
107
107
  } from "./io.js";
108
108
  import { decodeText } from "./util/decode-text.js";
109
109
  import { getDataView } from "./util/array.js";
110
+ import { toCompatibleReadable } from "./util/compatible-streams.js";
110
111
  import { Crc32 } from "./streams/codecs/crc32.js";
111
112
  import {
112
113
  PROPERTY_NAME_RAW_FILENAME,
@@ -581,6 +582,7 @@ class ZipEntry {
581
582
  compressionMethod,
582
583
  config,
583
584
  bitFlag,
585
+ rawBitFlag,
584
586
  signature,
585
587
  rawLastModDate,
586
588
  uncompressedSize,
@@ -603,10 +605,6 @@ class ZipEntry {
603
605
  throw new Error(ERR_UNSUPPORTED_COMPRESSION);
604
606
  }
605
607
  }
606
- const registeredCodec = passThrough ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
607
- if ((compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE && compressionMethod != COMPRESSION_METHOD_DEFLATE_64 && !registeredCodec) && !passThrough) {
608
- throw new Error(ERR_UNSUPPORTED_COMPRESSION);
609
- }
610
608
  if (dataArray.length < HEADER_SIZE || getUint32(dataView, 0) != LOCAL_FILE_HEADER_SIGNATURE) {
611
609
  throw new Error(ERR_LOCAL_FILE_HEADER_NOT_FOUND);
612
610
  }
@@ -642,10 +640,14 @@ class ZipEntry {
642
640
  if (!passThrough) {
643
641
  fileEntry.zipCrypto = zipCrypto;
644
642
  }
643
+ if (encrypted && (localDirectory.rawBitFlag & BITFLAG_STRONG_ENCRYPTION) == BITFLAG_STRONG_ENCRYPTION) {
644
+ throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
645
+ }
646
+ const registeredCodec = passThrough ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
647
+ if (compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE && compressionMethod != COMPRESSION_METHOD_DEFLATE_64 && !registeredCodec && !passThrough) {
648
+ throw new Error(ERR_UNSUPPORTED_COMPRESSION);
649
+ }
645
650
  if (encrypted) {
646
- if ((localDirectory.rawBitFlag & BITFLAG_STRONG_ENCRYPTION) == BITFLAG_STRONG_ENCRYPTION) {
647
- throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
648
- }
649
651
  if (!zipCrypto && (extraFieldAES.strength < 1 || extraFieldAES.strength > 3)) {
650
652
  throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
651
653
  } else if (!password && !rawPassword) {
@@ -654,7 +656,7 @@ class ZipEntry {
654
656
  }
655
657
  const dataOffset = localHeaderOffset + HEADER_SIZE + filenameLength + extraFieldLength;
656
658
  const size = compressedSize;
657
- const readable = reader.createReadable({ offset: dataOffset, size });
659
+ const readable = toCompatibleReadable(reader.createReadable({ offset: dataOffset, size }));
658
660
  const signal = getOptionValue(zipEntry, options, OPTION_SIGNAL);
659
661
  const checkPasswordOnly = getOptionValue(zipEntry, options, OPTION_CHECK_PASSWORD_ONLY);
660
662
  let checkOverlappingEntry = getOptionValue(zipEntry, options, OPTION_CHECK_OVERLAPPING_ENTRY);
@@ -687,6 +689,8 @@ class ZipEntry {
687
689
  deflate64,
688
690
  format: registeredCodec ? registeredCodec.format : UNDEFINED_VALUE,
689
691
  codecURI: registeredCodec ? registeredCodec.codecURI : UNDEFINED_VALUE,
692
+ compressionMethod,
693
+ rawBitFlag,
690
694
  checkPasswordOnly
691
695
  },
692
696
  config,
@@ -154,6 +154,7 @@ import {
154
154
  } from "./io.js";
155
155
  import { encodeText } from "./util/encode-text.js";
156
156
  import { getDataView } from "./util/array.js";
157
+ import { toCompatibleReadable } from "./util/compatible-streams.js";
157
158
  import {
158
159
  PROPERTY_NAME_LAST_MODIFICATION_DATE,
159
160
  PROPERTY_NAME_LAST_ACCESS_DATE,
@@ -1139,7 +1140,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
1139
1140
  }
1140
1141
  const { writable } = writer;
1141
1142
  if (reader) {
1142
- const readable = reader.createReadable ? reader.createReadable() : reader.readable;
1143
+ const readable = toCompatibleReadable(reader.createReadable ? reader.createReadable() : reader.readable);
1143
1144
  const size = reader.size;
1144
1145
  const workerOptions = {
1145
1146
  options: {
@@ -1157,7 +1158,8 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
1157
1158
  useCompressionStream,
1158
1159
  transferStreams,
1159
1160
  format,
1160
- codecURI
1161
+ codecURI,
1162
+ compressionMethod
1161
1163
  },
1162
1164
  config,
1163
1165
  streamOptions: { signal, size, onstart, onprogress, onend }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "A JavaScript library to zip and unzip files in the browser, Deno and Node.js",
4
4
  "author": "Gildas Lormeau",
5
5
  "license": "BSD-3-Clause",
6
- "version": "2.8.39",
6
+ "version": "2.8.41",
7
7
  "type": "module",
8
8
  "keywords": [
9
9
  "zip",
@@ -39,6 +39,7 @@
39
39
  "build-doc-api": "npx typedoc",
40
40
  "build-doc-markdown": "npx typedoc --plugin typedoc-plugin-markdown --out ./docs",
41
41
  "test-deno": "cd ./tests && deno test --allow-read ./deno-runner.js",
42
+ "test-web-streams-polyfill": "cd ./tests && deno run --allow-read ./web-streams-polyfill-runner.js",
42
43
  "test-node": "cd ./tests && node ./node-runner.js",
43
44
  "test-bun": "cd ./tests && bun test ./bun-runner.js --timeout 30000",
44
45
  "test-deno-dist": "./tests/dist-runner.sh deno",
@@ -177,6 +178,7 @@
177
178
  "http-server": "^14.1.1",
178
179
  "rollup": "^4.62.4",
179
180
  "typedoc": "^0.28.20",
180
- "typedoc-plugin-markdown": "^4.12.0"
181
+ "typedoc-plugin-markdown": "^4.12.0",
182
+ "web-streams-polyfill": "^4.3.0"
181
183
  }
182
184
  }
@@ -1,3 +1,3 @@
1
- const WORKER_MESSAGE_PROPERTY_NAMES = ["baseURI", "checkPasswordOnly", "chunkSize", "code", "codecType", "codecURI", "compressed", "config", "deflate64", "done", "encrypted", "encryptionStrength", "error", "format", "inputSize", "level", "message", "messageId", "name", "options", "outputSize", "password", "passwordVerification", "rawPassword", "readable", "result", "signature", "signed", "stack", "transferStreams", "type", "useCompressionStream", "useWebWorkers", "value", "wasmURI", "workerStartupTimeout", "writable", "zipCrypto"];
1
+ const WORKER_MESSAGE_PROPERTY_NAMES = ["baseURI", "checkPasswordOnly", "chunkSize", "code", "codecType", "codecURI", "compressed", "compressionMethod", "config", "deflate64", "done", "encrypted", "encryptionStrength", "error", "format", "inputSize", "level", "message", "messageId", "name", "options", "outputSize", "password", "passwordVerification", "rawBitFlag", "rawPassword", "readable", "result", "signature", "signed", "stack", "transferStreams", "type", "useCompressionStream", "useWebWorkers", "value", "wasmURI", "workerStartupTimeout", "writable", "zipCrypto"];
2
2
 
3
3
  export { WORKER_MESSAGE_PROPERTY_NAMES };