@zip.js/zip.js 2.8.44 → 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 (61) hide show
  1. package/README.md +28 -2
  2. package/deno.json +32 -2
  3. package/dist/zip-core-external.js +199 -149
  4. package/dist/zip-core-external.min.js +1 -1
  5. package/dist/zip-core.js +196 -120
  6. package/dist/zip-core.min.js +1 -1
  7. package/dist/zip-fs-core-external.js +251 -157
  8. package/dist/zip-fs-core-external.min.js +1 -1
  9. package/dist/zip-fs-core.js +227 -126
  10. package/dist/zip-fs-core.min.js +1 -1
  11. package/dist/zip-fs-external.js +272 -1751
  12. package/dist/zip-fs-external.min.js +1 -1
  13. package/dist/zip-fs-native.js +273 -1726
  14. package/dist/zip-fs-native.min.js +1 -1
  15. package/dist/zip-fs.js +273 -1726
  16. package/dist/zip-fs.min.js +1 -1
  17. package/dist/zip-legacy.js +198 -122
  18. package/dist/zip-legacy.min.js +1 -1
  19. package/dist/zip-native.js +200 -124
  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 +200 -124
  24. package/dist/zip.min.js +1 -1
  25. package/eslint.config.mjs +31 -2
  26. package/index-native.cjs +273 -1726
  27. package/index-native.min.js +1 -1
  28. package/index.cjs +273 -1726
  29. package/index.d.cts +140 -2
  30. package/index.d.ts +140 -2
  31. package/index.min.js +1 -1
  32. package/lib/core/codec-pool.js +3 -2
  33. package/lib/core/codec-worker.js +30 -14
  34. package/lib/core/configuration.js +20 -2
  35. package/lib/core/constants.js +4 -0
  36. package/lib/core/options.js +2 -0
  37. package/lib/core/streams/aes-crypto-stream.js +15 -18
  38. package/lib/core/streams/codec-stream.js +2 -2
  39. package/lib/core/streams/zip-entry-stream.js +13 -18
  40. package/lib/core/util/mime-type-data.js +3 -0
  41. package/lib/core/util/mime-type.js +23 -1596
  42. package/lib/core/web-worker-base.js +29 -2
  43. package/lib/core/web-worker-inline-native.js +1 -1
  44. package/lib/core/web-worker-inline-wasm.js +1 -1
  45. package/lib/core/web-worker-native.js +7 -9
  46. package/lib/core/web-worker-wasm.js +9 -12
  47. package/lib/core/zip-entry.js +8 -1
  48. package/lib/core/zip-fs.js +62 -5
  49. package/lib/core/zip-reader.js +45 -17
  50. package/lib/core/zip-writer.js +58 -44
  51. package/lib/{core/web-worker-inline-template.js → zip-core-custom.js} +13 -20
  52. package/lib/zip-core-external.js +2 -0
  53. package/lib/zip-fs-core-external.js +2 -0
  54. package/lib/zip-fs-external.js +2 -0
  55. package/lib/zip-mime-types.js +2 -0
  56. package/lib/zip-module-native.js +3 -3
  57. package/lib/zip-module-wasm-base.js +3 -3
  58. package/package.json +28 -4
  59. package/worker-message-property-names.js +1 -1
  60. package/lib/core/web-worker-inline-template-native.js +0 -48
  61. package/lib/core/zlib-streams-inline-template.js +0 -45
@@ -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) {
@@ -137,14 +164,14 @@ async function init(message) {
137
164
  .pipeTo(writable, { signal, preventClose: true, preventAbort: true });
138
165
  await writable.getWriter().close();
139
166
  const {
140
- signature,
167
+ crc32,
141
168
  inputSize,
142
169
  outputSize
143
170
  } = codecStream;
144
171
  sendMessage({
145
172
  type: MESSAGE_CLOSE,
146
173
  result: {
147
- signature,
174
+ crc32,
148
175
  inputSize,
149
176
  outputSize
150
177
  }
@@ -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],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],o=[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],n=[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],h=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],r=new Uint8Array(288);r.fill(8,0,144),r.fill(9,144,256),r.fill(7,256,280),r.fill(8,280,288);const s=new Uint8Array(30).fill(5);function u(t){const e=new Uint16Array(16);for(const o of t)e[o]++;e[0]=0;const o=new Uint16Array(17);for(let t=1;15>=t;t++)o[t+1]=o[t]+e[t];const n=new Uint16Array(t.length);for(let e=0;e<t.length;e++)t[e]&&(n[o[t[e]]++]=e);return{o:e,symbols:n}}const b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function f(f){f({workerURI:f=>{const i="text/javascript",w=(b=>{let f=0,i=0,w=0,M=new Uint8Array(1024),c=0,z=0;for(;!z;){z=V(1);const t=V(2);if(0==t)a();else if(1==t)W(u(r),u(s));else{if(2!=t)throw Error("invalid deflate block type");W(...m())}}return M.subarray(0,c);function F(){if(f>=b.length)throw Error("unexpected end of deflate data");return b[f++]}function V(t){for(;t>w;)i|=F()<<w,w+=8;const e=i&(1<<t)-1;return i>>>=t,w-=t,e}function a(){i=0,w=0;const t=F()|F()<<8;f+=2,G(c+t);for(let e=0;t>e;e++)M[c++]=F()}function W(h,r){let s=Z(h);for(;256!=s;){if(256>s)G(c+1),M[c++]=s;else{const h=s-257,u=t[h]+V(e[h]),b=Z(r),f=o[b]+V(n[b]);G(c+u);const i=c-f;for(let t=0;u>t;t++)M[c++]=M[i+t]}s=Z(h)}}function m(){const t=V(5)+257,e=V(5)+1,o=V(4)+4,n=new Uint8Array(19);for(let t=0;o>t;t++)n[h[t]]=V(3);const r=u(n),s=new Uint8Array(t+e);let b=0;for(;b<s.length;){const t=Z(r);if(16>t)s[b++]=t;else if(16==t){const t=s[b-1];let e=V(2)+3;for(;e--;)s[b++]=t}else b+=17==t?V(3)+3:V(7)+11}return[u(s.subarray(0,t)),u(s.subarray(t))]}function Z(t){const{o:e,symbols:o}=t;let n=0,h=0,r=0;for(let t=1;15>=t;t++){n|=V(1);const s=e[t];if(s>n-h)return o[r+(n-h)];r+=s,h=h+s<<1,n<<=1}throw Error("invalid huffman code")}function G(t){if(M.length<t){let e=2*M.length;for(;t>e;)e*=2;const o=new Uint8Array(e);o.set(M.subarray(0,c)),M=o}}})((t=>{const e=(t=(t+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,o=[];for(let n=0;e>n;n+=4){const e=b.indexOf(t[n])<<18|b.indexOf(t[n+1])<<12|(63&b.indexOf(t[n+2]))<<6|63&b.indexOf(t[n+3]);o.push(e>>16&255),"="!==t[n+2]&&o.push(e>>8&255),"="!==t[n+3]&&o.push(255&e)}return new Uint8Array(o)})("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"));if(f){const t=new Blob([w],{type:i});return URL.createObjectURL(t)}return"data:"+i+";base64,"+(t=>{let e="";const o=t.length;let n=0;for(;o>n+2;n+=3){const o=t[n]<<16|t[n+1]<<8|t[n+2];e+=b[o>>18&63]+b[o>>12&63]+b[o>>6&63]+b[63&o]}const h=o-n;if(1===h){const o=t[n]<<16;e+=b[o>>18&63]+b[o>>12&63]+"=="}else if(2===h){const o=t[n]<<16|t[n+1]<<8;e+=b[o>>18&63]+b[o>>12&63]+b[o>>6&63]+"="}return e})(w)}})}export{f 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: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,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,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=V;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(c=i=t.encrypt(d.concat(e,[u])),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 w.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 u=16843009*f^65537*a^257*i^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.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],u=c[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=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=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}},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 ut 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 u=s.length<tt?1:0;for(let t=0;tt>t;t++)u|=l[t]^a[t];if(u&&c)throw new r(H);t.enqueue(f)}}})}}class wt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;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:r,ready:o}=this;if(n&&e){await o;let c=z;if(r.length){const t=e.update(St(ot,r));n.update(t),c=gt(ot,t)}s.signature=gt(ot,n.digest()).slice(0,tt),t.enqueue(_(c,s.signature))}}}),s=this}}function ht(t,n,s,r){e.assign(t,{ready:new u(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 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%q)),u=0;l-q>=u;u+=q){const t=St(ot,mt(e,u,u+q));c&&a.update(t);const r=i.update(t);c||a.update(r),n.set(gt(ot,r),u+s)}return t.pending=mt(e,u),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])),u=St(ot,mt(f,$[s],2*$[s])),w=mt(f,2*$[s]);return e.assign(n,{keys:{key:l,ct:u,passwordVerification:w},st:new it(new ct(l),t.from(et)),ot:new at(u)}),w}function yt(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 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:u,format:w,compressionMethod:h}=t,p=this;let d,y,m,g=super.readable;const S=w&&Bt(w),v=a&&r&&!u&&!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,w,{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 wt(t),g=jt(g,y))),Ft(p,g,()=>{let t;o&&!i&&(t=y.signature),o&&!i||!a||(t=v?m.signature:new l(d.value.buffer).getUint32(0)),p.signature=t})}}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.signature=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,signature:f,compressed:w,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 ut(t),C=jt(C,z))),w){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 w=new u((t,e)=>{i=t,a=e});w.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 w}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})}}),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(Dt)},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:i})}});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 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 u(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 u(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:w}=$t;await l.pipeThrough(e).pipeThrough(new Jt((t=>s.max(t.chunkSize,64))(i))).pipeTo(o,{signal:w,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:h,inputSize:p,outputSize:d}=e;ie({type:Nt,result:{signature: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.ut=new o(i),t?(this.wt=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.wt=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.wt=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.wt,l=this.ht,u=this.lt,w=this.ut;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,u,i,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(se.buffer),s=this.wt,c=this.lt,a=this.ut;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 ue{constructor(t="deflate",e){return fe(!1,t,e)}}le.St=!0,ue.St=!0;let we=!1;self.initModule=async t=>{const e=await(async(t,{baseURI:e})=>{if(!we)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),we=!0}catch(t){throw(t=>{re=t})(t),t}})(t.wasmURI,t);return t.CompressionStreamZlib=le,t.DecompressionStreamZlib=ue,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
+ });
@@ -58,6 +58,8 @@ const PROPERTY_NAME_CRC32 = "crc32";
58
58
  const PROPERTY_NAME_EXTRA_FIELD = "extraField";
59
59
  const PROPERTY_NAME_EXTRA_FIELD_INFOZIP = "extraFieldInfoZip";
60
60
  const PROPERTY_NAME_EXTRA_FIELD_UNIX = "extraFieldUnix";
61
+ const PROPERTY_NAME_EXTRA_FIELD_UNIX_TYPE1 = "extraFieldUnixType1";
62
+ const PROPERTY_NAME_EXTRA_FIELD_PKWARE_UNIX = "extraFieldPkwareUnix";
61
63
  const PROPERTY_NAME_UID = "uid";
62
64
  const PROPERTY_NAME_GID = "gid";
63
65
  const PROPERTY_NAME_UNIX_MODE = "unixMode";
@@ -74,6 +76,7 @@ const PROPERTY_NAME_EXTRA_FIELD_UNICODE_COMMENT = "extraFieldUnicodeComment";
74
76
  const PROPERTY_NAME_EXTRA_FIELD_AES = "extraFieldAES";
75
77
  const PROPERTY_NAME_EXTRA_FIELD_NTFS = "extraFieldNTFS";
76
78
  const PROPERTY_NAME_EXTRA_FIELD_EXTENDED_TIMESTAMP = "extraFieldExtendedTimestamp";
79
+ const PROPERTY_NAME_EXTRA_FIELD_USDZ = "extraFieldUSDZ";
77
80
 
78
81
  const PROPERTY_NAMES = [
79
82
  PROPERTY_NAME_FILENAME,
@@ -85,6 +88,7 @@ const PROPERTY_NAMES = [
85
88
  PROPERTY_NAME_COMMENT,
86
89
  PROPERTY_NAME_RAW_COMMENT,
87
90
  PROPERTY_NAME_LAST_ACCESS_DATE,
91
+ PROPERTY_NAME_RAW_LAST_ACCESS_DATE,
88
92
  PROPERTY_NAME_CREATION_DATE,
89
93
  PROPERTY_NAME_RAW_CREATION_DATE,
90
94
  PROPERTY_NAME_OFFSET,
@@ -107,6 +111,8 @@ const PROPERTY_NAMES = [
107
111
  PROPERTY_NAME_EXTRA_FIELD,
108
112
  PROPERTY_NAME_EXTRA_FIELD_UNIX,
109
113
  PROPERTY_NAME_EXTRA_FIELD_INFOZIP,
114
+ PROPERTY_NAME_EXTRA_FIELD_UNIX_TYPE1,
115
+ PROPERTY_NAME_EXTRA_FIELD_PKWARE_UNIX,
110
116
  PROPERTY_NAME_UID,
111
117
  PROPERTY_NAME_GID,
112
118
  PROPERTY_NAME_UNIX_MODE,
@@ -122,7 +128,8 @@ const PROPERTY_NAMES = [
122
128
  PROPERTY_NAME_EXTRA_FIELD_UNICODE_COMMENT,
123
129
  PROPERTY_NAME_EXTRA_FIELD_AES,
124
130
  PROPERTY_NAME_EXTRA_FIELD_NTFS,
125
- PROPERTY_NAME_EXTRA_FIELD_EXTENDED_TIMESTAMP
131
+ PROPERTY_NAME_EXTRA_FIELD_EXTENDED_TIMESTAMP,
132
+ PROPERTY_NAME_EXTRA_FIELD_USDZ
126
133
  ];
127
134
 
128
135
  class Entry {
@@ -52,11 +52,38 @@ import {
52
52
  import {
53
53
  Entry
54
54
  } from "./zip-entry.js";
55
- import { UNDEFINED_VALUE } from "./constants.js";
55
+ import {
56
+ UNDEFINED_VALUE,
57
+ EXTRAFIELD_TYPE_ZIP64,
58
+ EXTRAFIELD_TYPE_AES,
59
+ EXTRAFIELD_TYPE_NTFS,
60
+ EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP,
61
+ EXTRAFIELD_TYPE_UNICODE_PATH,
62
+ EXTRAFIELD_TYPE_UNICODE_COMMENT,
63
+ EXTRAFIELD_TYPE_USDZ,
64
+ EXTRAFIELD_TYPE_INFOZIP,
65
+ EXTRAFIELD_TYPE_UNIX,
66
+ EXTRAFIELD_TYPE_UNIX_TYPE1,
67
+ EXTRAFIELD_TYPE_PKWARE_UNIX
68
+ } from "./constants.js";
56
69
  import { toExactUint8Array } from "./util/array.js";
57
70
 
58
71
  const ERR_ENTRY_EXISTS = "Entry filename already exists";
59
72
  const ERR_READABLE_CONSUMED = "Readable stream already consumed";
73
+ const INFOZIP_EXTRA_FIELD_TYPE = "infozip";
74
+ const INTERPRETED_EXTRA_FIELD_TYPES = new Set([
75
+ EXTRAFIELD_TYPE_ZIP64,
76
+ EXTRAFIELD_TYPE_AES,
77
+ EXTRAFIELD_TYPE_NTFS,
78
+ EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP,
79
+ EXTRAFIELD_TYPE_UNICODE_PATH,
80
+ EXTRAFIELD_TYPE_UNICODE_COMMENT,
81
+ EXTRAFIELD_TYPE_USDZ,
82
+ EXTRAFIELD_TYPE_INFOZIP,
83
+ EXTRAFIELD_TYPE_UNIX,
84
+ EXTRAFIELD_TYPE_UNIX_TYPE1,
85
+ EXTRAFIELD_TYPE_PKWARE_UNIX
86
+ ]);
60
87
 
61
88
  class ZipEntry {
62
89
 
@@ -795,6 +822,20 @@ function detach(entry) {
795
822
  }
796
823
  }
797
824
 
825
+ function getUserExtraField(extraField) {
826
+ if (extraField) {
827
+ const userExtraField = new Map();
828
+ extraField.forEach((field, type) => {
829
+ if (!INTERPRETED_EXTRA_FIELD_TYPES.has(type)) {
830
+ userExtraField.set(type, field.data);
831
+ }
832
+ });
833
+ if (userExtraField.size) {
834
+ return userExtraField;
835
+ }
836
+ }
837
+ }
838
+
798
839
  async function exportZip(zipWriter, entry, totalSize, options, readers) {
799
840
  const selectedEntry = entry;
800
841
  const entryOffsets = new Map();
@@ -832,9 +873,13 @@ async function exportZip(zipWriter, entry, totalSize, options, readers) {
832
873
  uncompressedSize,
833
874
  encrypted,
834
875
  zipCrypto,
835
- signature,
876
+ crc32,
836
877
  compressionMethod,
837
- extraFieldAES
878
+ extraFieldAES,
879
+ internalFileAttributes,
880
+ extraField,
881
+ uid,
882
+ gid
838
883
  } = child.data;
839
884
  zipEntryOptions = {
840
885
  externalFileAttributes,
@@ -842,8 +887,20 @@ async function exportZip(zipWriter, entry, totalSize, options, readers) {
842
887
  comment,
843
888
  lastModDate,
844
889
  creationDate,
845
- lastAccessDate
890
+ lastAccessDate,
891
+ internalFileAttributes
846
892
  };
893
+ const userExtraField = getUserExtraField(extraField);
894
+ if (userExtraField) {
895
+ zipEntryOptions.extraField = userExtraField;
896
+ }
897
+ if (uid !== UNDEFINED_VALUE || gid !== UNDEFINED_VALUE) {
898
+ Object.assign(zipEntryOptions, {
899
+ uid,
900
+ gid,
901
+ unixExtraFieldType: options.unixExtraFieldType || INFOZIP_EXTRA_FIELD_TYPE
902
+ });
903
+ }
847
904
  if (child.passThrough) {
848
905
  let level, encryptionStrength;
849
906
  if (compressionMethod === 0) {
@@ -856,7 +913,7 @@ async function exportZip(zipWriter, entry, totalSize, options, readers) {
856
913
  passThrough: true,
857
914
  encrypted,
858
915
  zipCrypto,
859
- signature,
916
+ crc32,
860
917
  uncompressedSize,
861
918
  level,
862
919
  encryptionStrength,