@zip.js/zip.js 2.11.0 → 2.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/core/io.js CHANGED
@@ -91,11 +91,10 @@ class Reader extends Stream {
91
91
  const data = await readUint8Array(reader, offset + chunkOffset, dataSize);
92
92
  if (data.length) {
93
93
  controller.enqueue(data);
94
+ chunkOffset += data.length;
94
95
  }
95
- if ((chunkOffset + chunkSize >= size) || (!data.length && dataSize)) {
96
+ if ((size !== UNDEFINED_VALUE && chunkOffset >= size) || (!data.length && dataSize)) {
96
97
  controller.close();
97
- } else {
98
- chunkOffset += chunkSize;
99
98
  }
100
99
  }
101
100
  });
@@ -138,18 +138,17 @@ function _make(isCompress, type, options = {}) {
138
138
  }
139
139
  heap.set(buffer.subarray(offset, offset + toRead), this.in);
140
140
  const result = process(this.streamHandle, this.in, toRead, out, outBufferSize, 0);
141
+ // checked before the byte count is used, so a status code can never be read as one
142
+ const code = (result >> 24) & 0xff;
143
+ const signedCode = (code & 0x80) ? code - 256 : code;
144
+ if (signedCode < 0) {
145
+ throw new Error("process error:" + signedCode);
146
+ }
141
147
  const prod = result & 0x00ffffff;
142
148
  if (prod) {
143
149
  scratch.set(heap.subarray(out, out + prod), 0);
144
150
  controller.enqueue(scratch.slice(0, prod));
145
151
  }
146
- if (!isCompress) {
147
- const code = (result >> 24) & 0xff;
148
- const signedCode = (code & 0x80) ? code - 256 : code;
149
- if (signedCode < 0) {
150
- throw new Error("process error:" + signedCode);
151
- }
152
- }
153
152
  const consumed = last_consumed(this.streamHandle);
154
153
  if (consumed === 0 && prod === 0) {
155
154
  break;
@@ -169,14 +168,12 @@ function _make(isCompress, type, options = {}) {
169
168
  const scratch = this._scratch;
170
169
  while (true) {
171
170
  const result = process(this.streamHandle, 0, 0, out, outBufferSize, 4);
172
- const produced = result & 0x00ffffff;
173
171
  const code = (result >> 24) & 0xff;
174
- if (!isCompress) {
175
- const signedCode = (code & 0x80) ? code - 256 : code;
176
- if (signedCode < 0) {
177
- throw new Error("process error:" + signedCode);
178
- }
172
+ const signedCode = (code & 0x80) ? code - 256 : code;
173
+ if (signedCode < 0) {
174
+ throw new Error("process error:" + signedCode);
179
175
  }
176
+ const produced = result & 0x00ffffff;
180
177
  if (produced) {
181
178
  scratch.set(heap.subarray(out, out + produced), 0);
182
179
  controller.enqueue(scratch.slice(0, produced));
@@ -26,6 +26,6 @@
26
26
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
28
 
29
- const VERSION = "2.11.0";
29
+ const VERSION = "2.11.2";
30
30
 
31
31
  export { VERSION };
@@ -1 +1 @@
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='!function(t){"function"==typeof define&&define.amd?define(t):t()}(function(){"use strict";const{Array:t,Object:n,Number:e,Math:s,Error:r,Uint8Array:o,Uint16Array:c,Uint32Array:i,Int32Array:a,Map:f,DataView:u,Promise:l,TextEncoder:w,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;t<256;t++){let n=t;for(let t=0;t<8;t++)n=1&n?n>>>1^3988292384:n>>>1;C[0][t]=n}for(let t=0;t<256;t++)for(let n=1;n<8;n++){const e=C[n-1][t];C[n][t]=e>>>8^C[0][255&e]}const[I,A,x,M,P,B,D,F]=C;class R{constructor(t){this.o=t||-1}append(t){let n=0|this.o;const e=0|t.length;let s=0;if(e>=8&&t.buffer){const r=new u(t.buffer,t.byteOffset,e),o=e-8;for(;s<=o;s+=8){const t=n^r.getInt32(s,!0),e=r.getInt32(s+4,!0);n=F[255&t]^D[t>>>8&255]^B[t>>>16&255]^P[t>>>24&255]^M[255&e]^x[e>>>8&255]^A[e>>>16&255]^I[e>>>24&255]}}for(;s<e;s++)n=n>>>8^I[255&(n^t[s])];this.o=n}get(){return~this.o}}class U extends d{constructor(){let t;const n=new R;super({transform(t,e){n.append(t),e.enqueue(t)},flush(){const e=new o(4);new u(e.buffer).setUint32(0,n.get()),t.value=e}}),t=this}}function W(t,n){const e=new o(t.length+n.length);return e.set(t),e.set(n,t.length),e}function _(t){return new u(t.buffer,t.byteOffset,t.byteLength)}const T={concat(t,n){if(0===t.length||0===n.length)return t.concat(n);const e=t[t.length-1],s=T.l(e);return 32===s?t.concat(n):T.h(n,s,0|e,t.slice(0,t.length-1))},bitLength(t){const n=t.length;if(0===n)return 0;const e=t[n-1];return 32*(n-1)+T.l(e)},m(t,n){if(32*t.length<n)return t;const e=(t=t.slice(0,s.ceil(n/32))).length;return n&=31,e>0&&n&&(t[e-1]=T.S(n,t[e-1]&2147483648>>n-1,1)),t},S:(t,n,e)=>32===t?n:(e?0|n:n<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,n,e,s){for(void 0===s&&(s=[]);n>=32;n-=32)s.push(e),e=0;if(0===n)return s.concat(t);for(let r=0;r<t.length;r++)s.push(e|t[r]>>>n),e=t[r]<<32-n;const r=t.length?t[t.length-1]:0,o=T.l(r);return s.push(T.S(n+o&31,n+o>32?e:s.pop(),1)),s}},V={bytes:{v(t){const n=T.bitLength(t)/8,e=new o(n);let s;for(let r=0;r<n;r++)3&r||(s=t[r/4]),e[r]=s>>>24,s<<=8;return e},C(t){const n=[];let e,s=0;for(e=0;e<t.length;e++)s=s<<8|t[e],3&~e||(n.push(s),s=0);return 3&e&&n.push(T.S(8*(3&e),s)),n}}},K=class{constructor(t){const n=this;n.blockSize=512,n.I=[1732584193,4023233417,2562383102,271733878,3285377520],n.A=[1518500249,1859775393,2400959708,3395469782],t?(n.M=t.M.slice(0),n.P=t.P.slice(0),n.B=t.B):n.reset()}reset(){const t=this;return t.M=t.I.slice(0),t.P=[],t.B=0,t}update(t){const n=this;"string"==typeof t&&(t=V.D.C(t));const e=n.P=T.concat(n.P,t),s=n.B,o=n.B=s+T.bitLength(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const c=new i(e);let a=0;for(let t=n.blockSize+s-(n.blockSize+s&n.blockSize-1);t<=o;t+=n.blockSize)n.F(c.subarray(16*a,16*(a+1))),a+=1;return e.splice(0,16*a),n}R(){const t=this;let n=t.P;const e=t.M;n=T.concat(n,[T.S(1,1)]);for(let t=n.length+2;15&t;t++)n.push(0);for(n.push(s.floor(t.B/4294967296)),n.push(0|t.B);n.length;)t.F(n.splice(0,16));return t.reset(),e}U(t,n,e,s){return t<=19?n&e|~n&s:t<=39?n^e^s:t<=59?n&e|n&s|e&s:t<=79?n^e^s:void 0}W(t,n){return n<<t|n>>>32-t}F(n){const e=this,r=e.M,o=t(80);for(let t=0;t<16;t++)o[t]=n[t];let c=r[0],i=r[1],a=r[2],f=r[3],u=r[4];for(let t=0;t<=79;t++){t>=16&&(o[t]=e.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const n=e.W(5,c)+e.U(t,i,a,f)+u+o[t]+e.A[s.floor(t/20)]|0;u=f,f=a,a=e.W(30,i),i=c,c=n}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]+u|0}},E={importKey:t=>new E._(V.bytes.C(t)),T(t,n,e,s){if(e=e||1e4,s<0||e<0)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let c,i,a,f,l;const w=new ArrayBuffer(o),h=new u(w);let p=0;const d=T;for(n=V.bytes.C(n),l=1;p<(o||1);l++){for(c=i=t.encrypt(d.concat(n,[l])),a=1;a<e;a++)for(i=t.encrypt(i),f=0;f<i.length;f++)c[f]^=i[f];for(a=0;p<(o||1)&&a<c.length;a++)h.setInt32(p,c[a]),p+=4}return w.slice(0,s/8)},_:class{constructor(t){const n=this,e=n.V=K,s=[[],[]];n.K=[new e,new e];const r=n.K[0].blockSize/32;t.length>r&&(t=(new e).update(t).R());for(let n=0;n<r;n++)s[0][n]=909522486^t[n],s[1][n]=1549556828^t[n];n.K[0].update(s[0]),n.K[1].update(s[1]),n.L=new e(n.K[0])}reset(){const t=this;t.L=new t.V(t.K[0]),t.O=!1}update(t){this.O=!0,this.L.update(t)}digest(){const t=this,n=t.L.R(),e=new t.V(t.K[1]).update(n).R();return t.reset(),e}encrypt(t){if(this.O)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="zipjs-abort-check-password";function H(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const N=16,q={name:"PBKDF2"},G=n.assign({hash:{name:"HMAC"}},q),J=n.assign({iterations:1e3,hash:{name:"SHA-1"}},q),Q=["deriveBits"],X=[8,12,16],Y=[16,24,32],Z=10,$=[0,0,0,0],tt=typeof h!=b,nt=tt&&h.subtle,et=tt&&typeof nt!=b,st=V.bytes,rt=class{constructor(t){const n=this;n.j=[[[],[],[],[],[]],[[],[],[],[],[]]],n.j[0][0][0]||n.H();const e=n.j[0][4],s=n.j[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(n.A=[i=t.slice(0),a=[]],c=o;c<4*o+28;c++){let t=i[c-1];(c%o===0||8===o&&c%o===4)&&(t=e[t>>>24]<<24^e[t>>16&255]<<16^e[t>>8&255]<<8^e[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 n=i[3&t?c:c-4];a[t]=c<=4||t<4?n:s[0][e[n>>>24]]^s[1][e[n>>16&255]]^s[2][e[n>>8&255]]^s[3][e[255&n]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}H(){const t=this.j[0],n=this.j[1],e=t[4],s=n[4],r=[],o=[];let c,i,a,f;for(let t=0;t<256;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let u=c=0;!e[u];u^=i||1,c=o[c]||1){let o=c^c<<1^c<<2^c<<3^c<<4;o=o>>8^255&o^99,e[u]=o,s[o]=u,f=r[a=r[i=r[u]]];let l=16843009*f^65537*a^257*i^16843008*u,w=257*r[o]^16843008*o;for(let e=0;e<4;e++)t[e][u]=w=w<<24^w>>>8,n[e][o]=l=l<<24^l>>>8}for(let e=0;e<5;e++)t[e]=t[e].slice(0),n[e]=n[e].slice(0)}N(t,n){if(4!==t.length)throw new r("invalid aes block size");const e=this.A[n],s=e.length/4-2,o=[0,0,0,0],c=this.j[n],i=c[0],a=c[1],f=c[2],u=c[3],l=c[4];let w,h,p,d=t[0]^e[0],y=t[n?3:1]^e[1],m=t[2]^e[2],S=t[n?1:3]^e[3],g=4;for(let t=0;t<s;t++)w=i[d>>>24]^a[y>>16&255]^f[m>>8&255]^u[255&S]^e[g],h=i[y>>>24]^a[m>>16&255]^f[S>>8&255]^u[255&d]^e[g+1],p=i[m>>>24]^a[S>>16&255]^f[d>>8&255]^u[255&y]^e[g+2],S=i[S>>>24]^a[d>>16&255]^f[y>>8&255]^u[255&m]^e[g+3],g+=4,d=w,y=h,m=p;for(let t=0;t<4;t++)o[n?3&-t:t]=l[d>>>24]<<24^l[y>>16&255]<<16^l[m>>8&255]<<8^l[255&S]^e[g++],w=d,d=y,y=m,m=S,S=w;return o}},ot=class{constructor(t,n){this.G=t,this.J=n,this.X=n}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}Z(t){if(255&~(t>>24))t+=1<<24;else{let n=t>>16&255,e=t>>8&255,s=255&t;255===n?(n=0,255===e?(e=0,255===s?s=0:++s):++e):++n,t=0,t+=n<<16,t+=e<<8,t+=s}return t}$(t){0===(t[0]=this.Z(t[0]))&&(t[1]=this.Z(t[1]))}Y(t,n,e){let s;if(!(s=n.length))return[];const r=T.bitLength(n);for(let r=0;r<s;r+=4){this.$(e);const s=t.encrypt(e);n[r]^=s[0],n[r+1]^=s[1],n[r+2]^=s[2],n[r+3]^=s[3]}return T.m(n,r)}},ct=E._;let it=tt&&et&&typeof nt.importKey==k,at=tt&&et&&typeof nt.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){lt(this,t,n,e)},async transform(t,n){const e=this,{password:c,strength:i,nt:a,ready:f}=e;c?(await async function(t,n,e,s){const o=await ht(t,n,e,dt(s,0,X[n])),c=dt(s,X[n]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)}(e,i,c,dt(t,0,X[i]+2)),t=dt(t,X[i]+2),s?n.error(new r(j)):a()):await f;const u=new o(t.length-Z-(t.length-Z)%N);n.enqueue(wt(e,t,u,0,Z,!0))},async flush(t){const{et:n,st:e,ot:s,ready:o}=this;if(e&&n){await o;const i=dt(s,0,s.length-Z),a=dt(s,s.length-Z);let f=z;if(i.length){const t=mt(st,i);e.update(t);const s=n.update(t);f=yt(st,s)}const u=dt(yt(st,e.digest()),0,Z);let l=s.length<Z?1:0;for(let t=0;t<Z;t++)l|=u[t]^a[t];if(l&&c)throw new r("Invalid authentication code");t.enqueue(f)}}})}}class ut extends d{constructor({password:t,rawPassword:n,encryptionStrength:e}){super({start(){lt(this,t,n,e)},async transform(t,n){const e=this,{password:s,strength:r,nt:c,ready:i}=e;let a=z;s?(a=await async function(t,n,e){const s=H(new o(X[n]));return W(s,await ht(t,n,e,s))}(e,r,s),c()):await i;const f=new o(a.length+t.length-t.length%N);f.set(a,0),n.enqueue(wt(e,t,f,a.length,0))},async flush(t){const{et:n,st:e,ot:s,ready:r}=this;if(e&&n){await r;let o=z;if(s.length){const t=n.update(mt(st,s));e.update(t),o=yt(st,t)}const c=yt(st,e.digest()).slice(0,Z);t.enqueue(W(o,c))}}})}}function lt(t,e,s,r){n.assign(t,{ready:new l(n=>t.nt=n),password:pt(e,s),strength:r-1,ot:z})}function wt(t,n,e,s,r,c){const{et:i,st:a,ot:f}=t;f.length&&(n=W(f,n));const u=n.length-r;let l;for(e=function(t,n){if(n&&n>t.length){const e=t;(t=new o(n)).set(e,0)}return t}(e,s+(u-u%N)),l=0;l<=u-N;l+=N){const t=mt(st,dt(n,l,l+N));c&&a.update(t);const r=i.update(t);c||a.update(r),e.set(yt(st,r),l+s)}return t.ot=dt(n,l),e}async function ht(e,s,r,c){e.password=null;const i=await async function(t,n,e,s,r){if(!it)return E.importKey(n);try{return await nt.importKey("raw",n,e,!1,r)}catch{return it=!1,E.importKey(n)}}(0,r,G,0,Q),a=await async function(t,n,e){if(!at)return E.T(n,t.salt,J.iterations,e);try{return await nt.deriveBits(t,n,e)}catch{return at=!1,E.T(n,t.salt,J.iterations,e)}}(n.assign({salt:c},J),i,8*(2*Y[s]+2)),f=new o(a),u=mt(st,dt(f,0,Y[s])),l=mt(st,dt(f,Y[s],2*Y[s])),w=dt(f,2*Y[s]);return n.assign(e,{keys:{key:u,ct:l,passwordVerification:w},et:new ot(new rt(u),t.from($)),st:new ct(l)}),w}function pt(t,n){return n===v?function(t){if(typeof w==b){t=unescape(encodeURIComponent(t));const n=new o(t.length);for(let e=0;e<n.length;e++)n[e]=t.charCodeAt(e);return n}return(new w).encode(t)}(t):n}function dt(t,n,e){return t.subarray(n,e)}function yt(t,n){return t.v(n)}function mt(t,n){return t.C(n)}class St extends d{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:s}){super({start(){vt(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=bt(e,t.subarray(0,12));if(e.password=e.rawPassword=null,0!=(n[11]^e.passwordVerification))throw new r(O);t=t.subarray(12)}s?n.error(new r(j)):n.enqueue(bt(e,t))}})}}class gt extends d{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){vt(this,t,n,e)},transform(t,n){const e=this;let s,r;if(e.password||e.rawPassword){e.password=e.rawPassword=null;const n=H(new o(12));n[11]=e.passwordVerification,s=new o(t.length+n.length),s.set(kt(e,n),0),r=12}else s=new o(t.length),r=0;s.set(kt(e,t),r),n.enqueue(s)}})}}function vt(t,e,s,r){n.assign(t,{password:e,rawPassword:s,passwordVerification:r}),function(t,e,s){const r=[305419896,591751049,878082192];if(n.assign(t,{keys:r,it:new R(r[0]),ft:new R(r[2])}),s)for(let n=0;n<s.length;n++)zt(t,s[n]);else for(let n=0;n<e.length;n++)zt(t,e.charCodeAt(n))}(t,e,s)}function bt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=Ct(t)^n[s],zt(t,e[s]);return e}function kt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=Ct(t)^n[s],zt(t,n[s]);return e}function zt(t,n){let[,e]=t.keys;t.it.append([n]);const r=~t.it.get();e=At(s.imul(At(e+It(r)),134775813)+1),t.ft.append([e>>>24]);const o=~t.ft.get();t.keys=[r,e,o]}function Ct(t){const n=2|t.keys[2];return It(s.imul(n,1^n)>>>8)}function It(t){return 255&t}function At(t){return 4294967295&t}function xt(t){if(t instanceof y)return t;const n=t.getReader();return new y({async pull(t){const{value:e,done:s}=await n.read();s?t.close():t.enqueue(e)},cancel:t=>n.cancel(t)})}const Mt=new f;function Pt(t){return Mt.get(t)}const Bt="Invalid uncompressed size",Dt="deflate-raw",Ft="gzip",Rt=[31,139,8];class Ut extends d{constructor(t,{chunkSize:n,CompressionStreamFallback:e,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:c,zipCrypto:i,computeCrc32:a,level:f,deflate64:l,format:w,compressionMethod:h,inputSize:p}=t,d=this;let y,m,S,g=super.readable;const v=w&&Pt(w),b=a&&r&&!l&&!v&&(!o||i)&&Boolean(c&&s);if(o&&!i||!a||b||(y=new U,g=Lt(g,y)),r)if(v)g=Ot(g,Kt(v.CompressionStream,w,{level:f,chunkSize:n,compressionMethod:h,uncompressedSize:p}));else if(b)S=new Wt,g=Ot(g,new s(Ft)),g=Lt(g,S);else try{g=Et(g,c,{level:f,chunkSize:n},s,e)}catch(t){let n;try{n=new s(Ft)}catch{throw t}g=Ot(g,n),g=Lt(g,new Wt)}o&&(i?g=Lt(g,new gt(t)):(m=new ut(t),g=Lt(g,m))),Vt(d,g,()=>{o&&!i||!a||(d.crc32=b?S.crc32:new u(y.value.buffer).getUint32(0))})}}class Wt extends d{constructor(){let t,n=10,e=new o(0);super({transform(t,r){if(n){const e=s.min(n,t.length);if(n-=e,!(t=t.subarray(e)).length)return}const o=e.length+t.length;if(o<=8)return void(e=W(e,t));const c=o-8,i=s.min(c,e.length);r.enqueue(W(e.subarray(0,i),t.subarray(0,c-i))),e=W(e.subarray(i),t.subarray(c-i))},flush(){const n=_(e);t.crc32=n.getUint32(0,!0),t.uncompressedSize=n.getUint32(4,!0)}}),t=this}}class _t extends d{constructor(t,{chunkSize:n,DecompressionStreamFallback:e,DecompressionStream:s}){super({});const{zipCrypto:c,encrypted:i,checkCrc32:a,crc32:f,compressed:w,useCompressionStream:h,deflate64:p,format:m,compressionMethod:S,rawBitFlag:g,outputSize:b}=t;let k,z,C=super.readable;if(i&&(c?C=Lt(C,new St(t)):(z=new ft(t),C=Lt(C,z))),w){const t=m&&Pt(m);if(t)C=Ot(C,Kt(t.DecompressionStream,m,{chunkSize:n,compressionMethod:S,rawBitFlag:g,uncompressedSize:b}));else try{C=Et(C,h,{chunkSize:n,deflate64:p},s,e)}catch(t){if(p||b===v)throw t;let n;try{n=new s(Ft)}catch{throw t}C=function(t,n,e){const s=new R;let c,i,a,f=0,u=!1;const w=new l((t,n)=>{i=t,a=n});w.catch(()=>{}),e||i();const h=new d({start(t){const n=new o(10);n.set(Rt),t.enqueue(n)},transform(t,n){n.enqueue(t)},async flush(t){u=!0,y();try{await w}finally{m()}const n=new o(8),r=_(n);r.setUint32(0,s.get(),!0),r.setUint32(4,e,!0),t.enqueue(n)},cancel(t){a(t)}}),p=new d({transform(t,n){s.append(t),f+=t.length,f>=e?i():u&&y(),n.enqueue(t)},cancel(t){a(t)}});return t=Lt(t,h),Lt(t=Ot(t,n),p);function y(){m(),c=setTimeout(()=>a(new r(Bt)),5e3)}function m(){clearTimeout(c)}}(C,n,b)}C=function(t){const n=t.getReader();return new y({async pull(t){let e;try{e=await n.read()}catch(t){if(t&&t.message)throw t;const n=new r("Invalid compressed data");throw n.cause=t,n}const{value:s,done:o}=e;o?t.close():t.enqueue(s)},cancel:t=>n.cancel(t)})}(C)}a&&(k=new U,C=Lt(C,k)),Vt(this,C,()=>{if(a){const t=new u(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r("Invalid CRC32")}})}}const Tt=new f;function Vt(t,e,s){e=Lt(e,new d({flush:s})),n.defineProperty(t,"readable",{get:()=>e})}function Kt(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function Et(t,n,e,s,r){const o=n&&s?s:r||s,c=e.deflate64?"deflate64-raw":Dt;let i;try{i=new o(c,e)}catch(t){if(!n||!r||o==r)throw t;i=new r(c,e)}return Ot(t,i)}function Lt(t,n){return xt(t).pipeThrough(n)}function Ot(t,n){const e=n.writable.getWriter(),s=t.getReader();return async function(){try{for(;;){await e.ready;const t=await s.read();if(t.done){await e.close();break}await e.write(t.value)}}catch(t){await async function(t,n){try{await t.abort(n)}catch{}}(e,t),await async function(t,n){try{await t.cancel(n)}catch{}}(s,t)}}(),n.readable}const jt="data",Ht="close",Nt="deflate";class qt extends d{constructor(t,e){super({});const s=this,{codecType:o}=t;let c;o.startsWith(Nt)?c=Ut:o.startsWith("inflate")&&(c=_t),s.outputSize=0;let i=0;const a=new c(t,e),f=super.readable,u=new d({transform(t,n){t&&t.length&&(i+=t.length,n.enqueue(t))},flush(){n.assign(s,{inputSize:i})}}),l=new d({transform(n,e){if(n&&n.length&&(e.enqueue(n),s.outputSize+=n.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r(Bt)},flush(){const{crc32:t}=a;n.assign(s,{crc32:t,inputSize:i})}});n.defineProperty(s,"readable",{get:()=>f.pipeThrough(u).pipeThrough(a).pipeThrough(l)})}}class Gt extends d{constructor(t){const n=[];let s=0;function r(){const e=new o(t);let r=0;for(;r<t;){const s=n[0],o=t-r;s.length<=o?(e.set(s,r),r+=s.length,n.shift()):(e.set(s.subarray(0,o),r),n[0]=s.subarray(o),r+=o)}return s-=t,e}(!e.isFinite(t)||t<1)&&(t=65536),super({transform(e,o){for(n.push(e),s+=e.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(function(t,n){const e=new o(n);let s=0;for(const n of t)e.set(n,s),s+=n.length;return e}(n,s))}})}}let Jt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Jt=navigator.hardwareConcurrency)}catch{}const Qt=new f,Xt=new f;let Yt,Zt=0;async function $t(t){let n,o;try{const{options:c,config:i}=t;if(c.format)try{await async function(t,n){!Mt.has(t)&&n&&function(t,n){const{CompressionStream:e,DecompressionStream:s}=n;if(typeof e!=k&&typeof s!=k)throw new r("Invalid codec module");Mt.set(t,{CompressionStream:e,DecompressionStream:s})}(t,await(import(n)))}(c.format,c.codecURI)}catch(t){throw t.codecImportFailed=!0,t}if(i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,c.compressed&&!c.format)if(c.useCompressionStream){if(!function(t,n){if(!t)return!1;let e=Tt.get(t);e||(e=new f,Tt.set(t,e));let s=e.get(n);if(s===v){try{new t(n),s=!0}catch{s=!1}e.set(n,s)}return s}(c.codecType.startsWith(Nt)?i.CompressionStream:i.DecompressionStream,Dt))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},u=t.readable?xt(t.readable):new y({async pull(t){const n=new l(t=>Qt.set(Zt,t));tn({type:"pull",messageId:Zt}),Zt=(Zt+1)%e.MAX_SAFE_INTEGER;const{value:s,done:r}=await n;t.enqueue(s),r&&t.close()}},a);o=t.writable?function(t){if(t instanceof m)return t;const n=t.getWriter();return new m({write:t=>n.write(t),close:()=>n.close(),abort:t=>n.abort(t)})}(t.writable):new m({async write(t){let n;const s=new l(t=>n=t);Xt.set(Zt,n),tn({type:jt,value:t,messageId:Zt}),Zt=(Zt+1)%e.MAX_SAFE_INTEGER,await s}},a),n=new qt(c,i),Yt=new AbortController;const{signal:w}=Yt;await u.pipeThrough(n).pipeThrough(new Gt(function(t){return r="string"==typeof(n=r=t.chunkSize)&&n.trim()?e(n):n,e.isInteger(r)&&r>=1?s.max(r,64):65536;var n,r}(i))).pipeTo(o,{signal:w,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{crc32:h,inputSize:p,outputSize:d}=n;tn({type:Ht,result:{crc32:h,inputSize:p,outputSize:d}})}catch(t){if(t.outputSize=n?n.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}nn(t)}}function tn(t){const{value:n}=t;if(n)if(n.length)try{t.value=(e=n,e.byteOffset||e.byteLength!=e.buffer.byteLength?new o(e):e).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var e}function nn(t=new r("Unknown error")){const{message:n,stack:e,code:s,name:o,outputSize:c,cause:i,codecImportFailed:a}=t,f={message:n,stack:e,code:s,name:o,outputSize:c};i&&(f.cause={name:i.name,message:i.message}),a&&(f.codecImportFailed=!0),p({error:f})}addEventListener("message",({data:t})=>{const{type:n,messageId:e,value:s,done:r}=t;try{if("start"==n&&$t(t),n==jt){const t=Qt.get(e);Qt.delete(e),t({value:s||new o,done:r})}if("ack"==n){const t=Xt.get(e);Xt.delete(e),t()}n==Ht&&Yt.abort()}catch(t){nn(t)}}),p({type:"ready"});const en="deflate",sn="deflate-raw",rn="deflate64-raw",on="gzip";let cn,an,fn,un,ln;function wn(t,n,e={}){if(!cn){const t=new r("WASM module not loaded");throw t.cause=ln,t}const c="number"==typeof e.level?e.level:-1,i="number"==typeof e.outBuffer?e.outBuffer:65536,a="number"==typeof e.inBufferSize?e.inBufferSize:65536;return new d({start(){try{let e;if(this.ut=an(i),this.in=an(a),this.inBufferSize=a,!this.ut||!this.in)throw new r("allocation failed");if(this.lt=new o(i),t?(this.wt=cn.deflate_process,this.ht=cn.deflate_last_consumed,this.yt=cn.deflate_end,this.St=cn.deflate_new(),e=n===on?cn.deflate_init_gzip(this.St,c):n===sn?cn.deflate_init_raw(this.St,c):cn.deflate_init(this.St,c)):n===rn?(this.wt=cn.inflate9_process,this.ht=cn.inflate9_last_consumed,this.yt=cn.inflate9_end,this.St=cn.inflate9_new(),e=cn.inflate9_init_raw(this.St)):(this.wt=cn.inflate_process,this.ht=cn.inflate_last_consumed,this.yt=cn.inflate_end,this.St=cn.inflate_new(),e=n===sn?cn.inflate_init_raw(this.St):n===on?cn.inflate_init_gzip(this.St):cn.inflate_init(this.St)),0!==e)throw new r("init failed:"+e)}catch(t){throw f(this),t}},transform(n,e){try{const c=n,a=new o(un.buffer),f=this.wt,u=this.ht,l=this.ut,w=this.lt;let h=0;for(;h<c.length;){const n=s.min(c.length-h,32768);if((!this.in||this.inBufferSize<n)&&(this.in&&fn&&(fn(this.in),this.in=0),this.in=an(n),this.inBufferSize=n,!this.in))throw new r("allocation failed");a.set(c.subarray(h,h+n),this.in);const o=f(this.St,this.in,n,l,i,0),p=16777215&o;if(p&&(w.set(a.subarray(l,l+p),0),e.enqueue(w.slice(0,p))),!t){const t=o>>24&255,n=128&t?t-256:t;if(n<0)throw new r("process error:"+n)}const d=u(this.St);if(0===d&&0===p)break;h+=d}}catch(t){f(this),e.error(t)}},flush(n){try{const e=new o(un.buffer),s=this.wt,c=this.ut,a=this.lt;for(;;){const o=s(this.St,0,0,c,i,4),f=16777215&o,u=o>>24&255;if(!t){const t=128&u?u-256:u;if(t<0)throw new r("process error:"+t)}if(f&&(a.set(e.subarray(c,c+f),0),n.enqueue(a.slice(0,f))),1===u||0===f)break}}catch(t){n.error(t)}finally{const t=f(this);0!==t&&n.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let n=0;return t.St&&t.yt&&(n=t.yt(t.St)),t.St=0,t.in&&fn&&fn(t.in),t.in=0,t.ut&&fn&&fn(t.ut),t.ut=0,n}}class hn{constructor(t=en,n){return wn(!0,t,n)}}class pn{constructor(t=en,n){return wn(!1,t,n)}}hn.gt=!0,pn.gt=!0,hn.vt=[en,sn,on],pn.vt=[en,sn,on,rn];let dn=!1;!function(t={}){const{init:n}=t,e=t.CompressionStreamFallback||t.CompressionStreamZlib,s=t.DecompressionStreamFallback||t.DecompressionStreamZlib;self.initModule=async t=>{n&&await n(t),e&&(t.CompressionStreamFallback=e),s&&(t.DecompressionStreamFallback=s)}}({CompressionStreamFallback:hn,DecompressionStreamFallback:pn,init:t=>async function(t,{baseURI:n}){if(!dn)try{await async function(t,n){let e,s;try{try{s=new URL(t,n)}catch{}const r=await fetch(s);e=await r.arrayBuffer()}catch(n){if(!t.startsWith("data:application/wasm;base64,"))throw n;e=function(t){const n=t.split(",")[1],e=atob(n),s=e.length,r=new o(s);for(let t=0;t<s;++t)r[t]=e.charCodeAt(t);return r.buffer}(t)}!function(t){if(cn=t,({malloc:an,free:fn,memory:un}=cn),"function"!=typeof an||"function"!=typeof fn||!un)throw cn=an=fn=un=null,new r("Invalid WASM module")}((await WebAssembly.instantiate(e)).instance.exports)}(t,n),dn=!0}catch(t){throw function(t){ln=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,"+function(t){let n="";const s=t.length;let r=0;for(;r+2<s;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};
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='!function(t){"function"==typeof define&&define.amd?define(t):t()}(function(){"use strict";const{Array:t,Object:n,Number:e,Math:s,Error:r,Uint8Array:o,Uint16Array:c,Uint32Array:i,Int32Array:a,Map:f,DataView:u,Promise:l,TextEncoder:w,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;t<256;t++){let n=t;for(let t=0;t<8;t++)n=1&n?n>>>1^3988292384:n>>>1;C[0][t]=n}for(let t=0;t<256;t++)for(let n=1;n<8;n++){const e=C[n-1][t];C[n][t]=e>>>8^C[0][255&e]}const[I,A,x,M,P,B,D,F]=C;class R{constructor(t){this.o=t||-1}append(t){let n=0|this.o;const e=0|t.length;let s=0;if(e>=8&&t.buffer){const r=new u(t.buffer,t.byteOffset,e),o=e-8;for(;s<=o;s+=8){const t=n^r.getInt32(s,!0),e=r.getInt32(s+4,!0);n=F[255&t]^D[t>>>8&255]^B[t>>>16&255]^P[t>>>24&255]^M[255&e]^x[e>>>8&255]^A[e>>>16&255]^I[e>>>24&255]}}for(;s<e;s++)n=n>>>8^I[255&(n^t[s])];this.o=n}get(){return~this.o}}class U extends d{constructor(){let t;const n=new R;super({transform(t,e){n.append(t),e.enqueue(t)},flush(){const e=new o(4);new u(e.buffer).setUint32(0,n.get()),t.value=e}}),t=this}}function W(t,n){const e=new o(t.length+n.length);return e.set(t),e.set(n,t.length),e}function _(t){return new u(t.buffer,t.byteOffset,t.byteLength)}const T={concat(t,n){if(0===t.length||0===n.length)return t.concat(n);const e=t[t.length-1],s=T.l(e);return 32===s?t.concat(n):T.h(n,s,0|e,t.slice(0,t.length-1))},bitLength(t){const n=t.length;if(0===n)return 0;const e=t[n-1];return 32*(n-1)+T.l(e)},m(t,n){if(32*t.length<n)return t;const e=(t=t.slice(0,s.ceil(n/32))).length;return n&=31,e>0&&n&&(t[e-1]=T.S(n,t[e-1]&2147483648>>n-1,1)),t},S:(t,n,e)=>32===t?n:(e?0|n:n<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,n,e,s){for(void 0===s&&(s=[]);n>=32;n-=32)s.push(e),e=0;if(0===n)return s.concat(t);for(let r=0;r<t.length;r++)s.push(e|t[r]>>>n),e=t[r]<<32-n;const r=t.length?t[t.length-1]:0,o=T.l(r);return s.push(T.S(n+o&31,n+o>32?e:s.pop(),1)),s}},V={bytes:{v(t){const n=T.bitLength(t)/8,e=new o(n);let s;for(let r=0;r<n;r++)3&r||(s=t[r/4]),e[r]=s>>>24,s<<=8;return e},C(t){const n=[];let e,s=0;for(e=0;e<t.length;e++)s=s<<8|t[e],3&~e||(n.push(s),s=0);return 3&e&&n.push(T.S(8*(3&e),s)),n}}},K=class{constructor(t){const n=this;n.blockSize=512,n.I=[1732584193,4023233417,2562383102,271733878,3285377520],n.A=[1518500249,1859775393,2400959708,3395469782],t?(n.M=t.M.slice(0),n.P=t.P.slice(0),n.B=t.B):n.reset()}reset(){const t=this;return t.M=t.I.slice(0),t.P=[],t.B=0,t}update(t){const n=this;"string"==typeof t&&(t=V.D.C(t));const e=n.P=T.concat(n.P,t),s=n.B,o=n.B=s+T.bitLength(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const c=new i(e);let a=0;for(let t=n.blockSize+s-(n.blockSize+s&n.blockSize-1);t<=o;t+=n.blockSize)n.F(c.subarray(16*a,16*(a+1))),a+=1;return e.splice(0,16*a),n}R(){const t=this;let n=t.P;const e=t.M;n=T.concat(n,[T.S(1,1)]);for(let t=n.length+2;15&t;t++)n.push(0);for(n.push(s.floor(t.B/4294967296)),n.push(0|t.B);n.length;)t.F(n.splice(0,16));return t.reset(),e}U(t,n,e,s){return t<=19?n&e|~n&s:t<=39?n^e^s:t<=59?n&e|n&s|e&s:t<=79?n^e^s:void 0}W(t,n){return n<<t|n>>>32-t}F(n){const e=this,r=e.M,o=t(80);for(let t=0;t<16;t++)o[t]=n[t];let c=r[0],i=r[1],a=r[2],f=r[3],u=r[4];for(let t=0;t<=79;t++){t>=16&&(o[t]=e.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const n=e.W(5,c)+e.U(t,i,a,f)+u+o[t]+e.A[s.floor(t/20)]|0;u=f,f=a,a=e.W(30,i),i=c,c=n}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]+u|0}},E={importKey:t=>new E._(V.bytes.C(t)),T(t,n,e,s){if(e=e||1e4,s<0||e<0)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let c,i,a,f,l;const w=new ArrayBuffer(o),h=new u(w);let p=0;const d=T;for(n=V.bytes.C(n),l=1;p<(o||1);l++){for(c=i=t.encrypt(d.concat(n,[l])),a=1;a<e;a++)for(i=t.encrypt(i),f=0;f<i.length;f++)c[f]^=i[f];for(a=0;p<(o||1)&&a<c.length;a++)h.setInt32(p,c[a]),p+=4}return w.slice(0,s/8)},_:class{constructor(t){const n=this,e=n.V=K,s=[[],[]];n.K=[new e,new e];const r=n.K[0].blockSize/32;t.length>r&&(t=(new e).update(t).R());for(let n=0;n<r;n++)s[0][n]=909522486^t[n],s[1][n]=1549556828^t[n];n.K[0].update(s[0]),n.K[1].update(s[1]),n.L=new e(n.K[0])}reset(){const t=this;t.L=new t.V(t.K[0]),t.O=!1}update(t){this.O=!0,this.L.update(t)}digest(){const t=this,n=t.L.R(),e=new t.V(t.K[1]).update(n).R();return t.reset(),e}encrypt(t){if(this.O)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="zipjs-abort-check-password";function H(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const N=16,q={name:"PBKDF2"},G=n.assign({hash:{name:"HMAC"}},q),J=n.assign({iterations:1e3,hash:{name:"SHA-1"}},q),Q=["deriveBits"],X=[8,12,16],Y=[16,24,32],Z=10,$=[0,0,0,0],tt=typeof h!=b,nt=tt&&h.subtle,et=tt&&typeof nt!=b,st=V.bytes,rt=class{constructor(t){const n=this;n.j=[[[],[],[],[],[]],[[],[],[],[],[]]],n.j[0][0][0]||n.H();const e=n.j[0][4],s=n.j[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(n.A=[i=t.slice(0),a=[]],c=o;c<4*o+28;c++){let t=i[c-1];(c%o===0||8===o&&c%o===4)&&(t=e[t>>>24]<<24^e[t>>16&255]<<16^e[t>>8&255]<<8^e[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 n=i[3&t?c:c-4];a[t]=c<=4||t<4?n:s[0][e[n>>>24]]^s[1][e[n>>16&255]]^s[2][e[n>>8&255]]^s[3][e[255&n]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}H(){const t=this.j[0],n=this.j[1],e=t[4],s=n[4],r=[],o=[];let c,i,a,f;for(let t=0;t<256;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let u=c=0;!e[u];u^=i||1,c=o[c]||1){let o=c^c<<1^c<<2^c<<3^c<<4;o=o>>8^255&o^99,e[u]=o,s[o]=u,f=r[a=r[i=r[u]]];let l=16843009*f^65537*a^257*i^16843008*u,w=257*r[o]^16843008*o;for(let e=0;e<4;e++)t[e][u]=w=w<<24^w>>>8,n[e][o]=l=l<<24^l>>>8}for(let e=0;e<5;e++)t[e]=t[e].slice(0),n[e]=n[e].slice(0)}N(t,n){if(4!==t.length)throw new r("invalid aes block size");const e=this.A[n],s=e.length/4-2,o=[0,0,0,0],c=this.j[n],i=c[0],a=c[1],f=c[2],u=c[3],l=c[4];let w,h,p,d=t[0]^e[0],y=t[n?3:1]^e[1],m=t[2]^e[2],S=t[n?1:3]^e[3],g=4;for(let t=0;t<s;t++)w=i[d>>>24]^a[y>>16&255]^f[m>>8&255]^u[255&S]^e[g],h=i[y>>>24]^a[m>>16&255]^f[S>>8&255]^u[255&d]^e[g+1],p=i[m>>>24]^a[S>>16&255]^f[d>>8&255]^u[255&y]^e[g+2],S=i[S>>>24]^a[d>>16&255]^f[y>>8&255]^u[255&m]^e[g+3],g+=4,d=w,y=h,m=p;for(let t=0;t<4;t++)o[n?3&-t:t]=l[d>>>24]<<24^l[y>>16&255]<<16^l[m>>8&255]<<8^l[255&S]^e[g++],w=d,d=y,y=m,m=S,S=w;return o}},ot=class{constructor(t,n){this.G=t,this.J=n,this.X=n}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}Z(t){if(255&~(t>>24))t+=1<<24;else{let n=t>>16&255,e=t>>8&255,s=255&t;255===n?(n=0,255===e?(e=0,255===s?s=0:++s):++e):++n,t=0,t+=n<<16,t+=e<<8,t+=s}return t}$(t){0===(t[0]=this.Z(t[0]))&&(t[1]=this.Z(t[1]))}Y(t,n,e){let s;if(!(s=n.length))return[];const r=T.bitLength(n);for(let r=0;r<s;r+=4){this.$(e);const s=t.encrypt(e);n[r]^=s[0],n[r+1]^=s[1],n[r+2]^=s[2],n[r+3]^=s[3]}return T.m(n,r)}},ct=E._;let it=tt&&et&&typeof nt.importKey==k,at=tt&&et&&typeof nt.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){lt(this,t,n,e)},async transform(t,n){const e=this,{password:c,strength:i,nt:a,ready:f}=e;c?(await async function(t,n,e,s){const o=await ht(t,n,e,dt(s,0,X[n])),c=dt(s,X[n]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)}(e,i,c,dt(t,0,X[i]+2)),t=dt(t,X[i]+2),s?n.error(new r(j)):a()):await f;const u=new o(t.length-Z-(t.length-Z)%N);n.enqueue(wt(e,t,u,0,Z,!0))},async flush(t){const{et:n,st:e,ot:s,ready:o}=this;if(e&&n){await o;const i=dt(s,0,s.length-Z),a=dt(s,s.length-Z);let f=z;if(i.length){const t=mt(st,i);e.update(t);const s=n.update(t);f=yt(st,s)}const u=dt(yt(st,e.digest()),0,Z);let l=s.length<Z?1:0;for(let t=0;t<Z;t++)l|=u[t]^a[t];if(l&&c)throw new r("Invalid authentication code");t.enqueue(f)}}})}}class ut extends d{constructor({password:t,rawPassword:n,encryptionStrength:e}){super({start(){lt(this,t,n,e)},async transform(t,n){const e=this,{password:s,strength:r,nt:c,ready:i}=e;let a=z;s?(a=await async function(t,n,e){const s=H(new o(X[n]));return W(s,await ht(t,n,e,s))}(e,r,s),c()):await i;const f=new o(a.length+t.length-t.length%N);f.set(a,0),n.enqueue(wt(e,t,f,a.length,0))},async flush(t){const{et:n,st:e,ot:s,ready:r}=this;if(e&&n){await r;let o=z;if(s.length){const t=n.update(mt(st,s));e.update(t),o=yt(st,t)}const c=yt(st,e.digest()).slice(0,Z);t.enqueue(W(o,c))}}})}}function lt(t,e,s,r){n.assign(t,{ready:new l(n=>t.nt=n),password:pt(e,s),strength:r-1,ot:z})}function wt(t,n,e,s,r,c){const{et:i,st:a,ot:f}=t;f.length&&(n=W(f,n));const u=n.length-r;let l;for(e=function(t,n){if(n&&n>t.length){const e=t;(t=new o(n)).set(e,0)}return t}(e,s+(u-u%N)),l=0;l<=u-N;l+=N){const t=mt(st,dt(n,l,l+N));c&&a.update(t);const r=i.update(t);c||a.update(r),e.set(yt(st,r),l+s)}return t.ot=dt(n,l),e}async function ht(e,s,r,c){e.password=null;const i=await async function(t,n,e,s,r){if(!it)return E.importKey(n);try{return await nt.importKey("raw",n,e,!1,r)}catch{return it=!1,E.importKey(n)}}(0,r,G,0,Q),a=await async function(t,n,e){if(!at)return E.T(n,t.salt,J.iterations,e);try{return await nt.deriveBits(t,n,e)}catch{return at=!1,E.T(n,t.salt,J.iterations,e)}}(n.assign({salt:c},J),i,8*(2*Y[s]+2)),f=new o(a),u=mt(st,dt(f,0,Y[s])),l=mt(st,dt(f,Y[s],2*Y[s])),w=dt(f,2*Y[s]);return n.assign(e,{keys:{key:u,ct:l,passwordVerification:w},et:new ot(new rt(u),t.from($)),st:new ct(l)}),w}function pt(t,n){return n===v?function(t){if(typeof w==b){t=unescape(encodeURIComponent(t));const n=new o(t.length);for(let e=0;e<n.length;e++)n[e]=t.charCodeAt(e);return n}return(new w).encode(t)}(t):n}function dt(t,n,e){return t.subarray(n,e)}function yt(t,n){return t.v(n)}function mt(t,n){return t.C(n)}class St extends d{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:s}){super({start(){vt(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=bt(e,t.subarray(0,12));if(e.password=e.rawPassword=null,0!=(n[11]^e.passwordVerification))throw new r(O);t=t.subarray(12)}s?n.error(new r(j)):n.enqueue(bt(e,t))}})}}class gt extends d{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){vt(this,t,n,e)},transform(t,n){const e=this;let s,r;if(e.password||e.rawPassword){e.password=e.rawPassword=null;const n=H(new o(12));n[11]=e.passwordVerification,s=new o(t.length+n.length),s.set(kt(e,n),0),r=12}else s=new o(t.length),r=0;s.set(kt(e,t),r),n.enqueue(s)}})}}function vt(t,e,s,r){n.assign(t,{password:e,rawPassword:s,passwordVerification:r}),function(t,e,s){const r=[305419896,591751049,878082192];if(n.assign(t,{keys:r,it:new R(r[0]),ft:new R(r[2])}),s)for(let n=0;n<s.length;n++)zt(t,s[n]);else for(let n=0;n<e.length;n++)zt(t,e.charCodeAt(n))}(t,e,s)}function bt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=Ct(t)^n[s],zt(t,e[s]);return e}function kt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=Ct(t)^n[s],zt(t,n[s]);return e}function zt(t,n){let[,e]=t.keys;t.it.append([n]);const r=~t.it.get();e=At(s.imul(At(e+It(r)),134775813)+1),t.ft.append([e>>>24]);const o=~t.ft.get();t.keys=[r,e,o]}function Ct(t){const n=2|t.keys[2];return It(s.imul(n,1^n)>>>8)}function It(t){return 255&t}function At(t){return 4294967295&t}function xt(t){if(t instanceof y)return t;const n=t.getReader();return new y({async pull(t){const{value:e,done:s}=await n.read();s?t.close():t.enqueue(e)},cancel:t=>n.cancel(t)})}const Mt=new f;function Pt(t){return Mt.get(t)}const Bt="Invalid uncompressed size",Dt="deflate-raw",Ft="gzip",Rt=[31,139,8];class Ut extends d{constructor(t,{chunkSize:n,CompressionStreamFallback:e,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:c,zipCrypto:i,computeCrc32:a,level:f,deflate64:l,format:w,compressionMethod:h,inputSize:p}=t,d=this;let y,m,S,g=super.readable;const v=w&&Pt(w),b=a&&r&&!l&&!v&&(!o||i)&&Boolean(c&&s);if(o&&!i||!a||b||(y=new U,g=Lt(g,y)),r)if(v)g=Ot(g,Kt(v.CompressionStream,w,{level:f,chunkSize:n,compressionMethod:h,uncompressedSize:p}));else if(b)S=new Wt,g=Ot(g,new s(Ft)),g=Lt(g,S);else try{g=Et(g,c,{level:f,chunkSize:n},s,e)}catch(t){let n;try{n=new s(Ft)}catch{throw t}g=Ot(g,n),g=Lt(g,new Wt)}o&&(i?g=Lt(g,new gt(t)):(m=new ut(t),g=Lt(g,m))),Vt(d,g,()=>{o&&!i||!a||(d.crc32=b?S.crc32:new u(y.value.buffer).getUint32(0))})}}class Wt extends d{constructor(){let t,n=10,e=new o(0);super({transform(t,r){if(n){const e=s.min(n,t.length);if(n-=e,!(t=t.subarray(e)).length)return}const o=e.length+t.length;if(o<=8)return void(e=W(e,t));const c=o-8,i=s.min(c,e.length);r.enqueue(W(e.subarray(0,i),t.subarray(0,c-i))),e=W(e.subarray(i),t.subarray(c-i))},flush(){const n=_(e);t.crc32=n.getUint32(0,!0),t.uncompressedSize=n.getUint32(4,!0)}}),t=this}}class _t extends d{constructor(t,{chunkSize:n,DecompressionStreamFallback:e,DecompressionStream:s}){super({});const{zipCrypto:c,encrypted:i,checkCrc32:a,crc32:f,compressed:w,useCompressionStream:h,deflate64:p,format:m,compressionMethod:S,rawBitFlag:g,outputSize:b}=t;let k,z,C=super.readable;if(i&&(c?C=Lt(C,new St(t)):(z=new ft(t),C=Lt(C,z))),w){const t=m&&Pt(m);if(t)C=Ot(C,Kt(t.DecompressionStream,m,{chunkSize:n,compressionMethod:S,rawBitFlag:g,uncompressedSize:b}));else try{C=Et(C,h,{chunkSize:n,deflate64:p},s,e)}catch(t){if(p||b===v)throw t;let n;try{n=new s(Ft)}catch{throw t}C=function(t,n,e){const s=new R;let c,i,a,f=0,u=!1;const w=new l((t,n)=>{i=t,a=n});w.catch(()=>{}),e||i();const h=new d({start(t){const n=new o(10);n.set(Rt),t.enqueue(n)},transform(t,n){n.enqueue(t)},async flush(t){u=!0,y();try{await w}finally{m()}const n=new o(8),r=_(n);r.setUint32(0,s.get(),!0),r.setUint32(4,e,!0),t.enqueue(n)},cancel(t){a(t)}}),p=new d({transform(t,n){s.append(t),f+=t.length,f>=e?i():u&&y(),n.enqueue(t)},cancel(t){a(t)}});return t=Lt(t,h),Lt(t=Ot(t,n),p);function y(){m(),c=setTimeout(()=>a(new r(Bt)),5e3)}function m(){clearTimeout(c)}}(C,n,b)}C=function(t){const n=t.getReader();return new y({async pull(t){let e;try{e=await n.read()}catch(t){if(t&&t.message)throw t;const n=new r("Invalid compressed data");throw n.cause=t,n}const{value:s,done:o}=e;o?t.close():t.enqueue(s)},cancel:t=>n.cancel(t)})}(C)}a&&(k=new U,C=Lt(C,k)),Vt(this,C,()=>{if(a){const t=new u(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r("Invalid CRC32")}})}}const Tt=new f;function Vt(t,e,s){e=Lt(e,new d({flush:s})),n.defineProperty(t,"readable",{get:()=>e})}function Kt(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function Et(t,n,e,s,r){const o=n&&s?s:r||s,c=e.deflate64?"deflate64-raw":Dt;let i;try{i=new o(c,e)}catch(t){if(!n||!r||o==r)throw t;i=new r(c,e)}return Ot(t,i)}function Lt(t,n){return xt(t).pipeThrough(n)}function Ot(t,n){const e=n.writable.getWriter(),s=t.getReader();return async function(){try{for(;;){await e.ready;const t=await s.read();if(t.done){await e.close();break}await e.write(t.value)}}catch(t){await async function(t,n){try{await t.abort(n)}catch{}}(e,t),await async function(t,n){try{await t.cancel(n)}catch{}}(s,t)}}(),n.readable}const jt="data",Ht="close",Nt="deflate";class qt extends d{constructor(t,e){super({});const s=this,{codecType:o}=t;let c;o.startsWith(Nt)?c=Ut:o.startsWith("inflate")&&(c=_t),s.outputSize=0;let i=0;const a=new c(t,e),f=super.readable,u=new d({transform(t,n){t&&t.length&&(i+=t.length,n.enqueue(t))},flush(){n.assign(s,{inputSize:i})}}),l=new d({transform(n,e){if(n&&n.length&&(e.enqueue(n),s.outputSize+=n.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r(Bt)},flush(){const{crc32:t}=a;n.assign(s,{crc32:t,inputSize:i})}});n.defineProperty(s,"readable",{get:()=>f.pipeThrough(u).pipeThrough(a).pipeThrough(l)})}}class Gt extends d{constructor(t){const n=[];let s=0;function r(){const e=new o(t);let r=0;for(;r<t;){const s=n[0],o=t-r;s.length<=o?(e.set(s,r),r+=s.length,n.shift()):(e.set(s.subarray(0,o),r),n[0]=s.subarray(o),r+=o)}return s-=t,e}(!e.isFinite(t)||t<1)&&(t=65536),super({transform(e,o){for(n.push(e),s+=e.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(function(t,n){const e=new o(n);let s=0;for(const n of t)e.set(n,s),s+=n.length;return e}(n,s))}})}}let Jt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Jt=navigator.hardwareConcurrency)}catch{}const Qt=new f,Xt=new f;let Yt,Zt=0;async function $t(t){let n,o;try{const{options:c,config:i}=t;if(c.format)try{await async function(t,n){!Mt.has(t)&&n&&function(t,n){const{CompressionStream:e,DecompressionStream:s}=n;if(typeof e!=k&&typeof s!=k)throw new r("Invalid codec module");Mt.set(t,{CompressionStream:e,DecompressionStream:s})}(t,await(import(n)))}(c.format,c.codecURI)}catch(t){throw t.codecImportFailed=!0,t}if(i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,c.compressed&&!c.format)if(c.useCompressionStream){if(!function(t,n){if(!t)return!1;let e=Tt.get(t);e||(e=new f,Tt.set(t,e));let s=e.get(n);if(s===v){try{new t(n),s=!0}catch{s=!1}e.set(n,s)}return s}(c.codecType.startsWith(Nt)?i.CompressionStream:i.DecompressionStream,Dt))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},u=t.readable?xt(t.readable):new y({async pull(t){const n=new l(t=>Qt.set(Zt,t));tn({type:"pull",messageId:Zt}),Zt=(Zt+1)%e.MAX_SAFE_INTEGER;const{value:s,done:r}=await n;t.enqueue(s),r&&t.close()}},a);o=t.writable?function(t){if(t instanceof m)return t;const n=t.getWriter();return new m({write:t=>n.write(t),close:()=>n.close(),abort:t=>n.abort(t)})}(t.writable):new m({async write(t){let n;const s=new l(t=>n=t);Xt.set(Zt,n),tn({type:jt,value:t,messageId:Zt}),Zt=(Zt+1)%e.MAX_SAFE_INTEGER,await s}},a),n=new qt(c,i),Yt=new AbortController;const{signal:w}=Yt;await u.pipeThrough(n).pipeThrough(new Gt(function(t){return r="string"==typeof(n=r=t.chunkSize)&&n.trim()?e(n):n,e.isInteger(r)&&r>=1?s.max(r,64):65536;var n,r}(i))).pipeTo(o,{signal:w,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{crc32:h,inputSize:p,outputSize:d}=n;tn({type:Ht,result:{crc32:h,inputSize:p,outputSize:d}})}catch(t){if(t.outputSize=n?n.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}nn(t)}}function tn(t){const{value:n}=t;if(n)if(n.length)try{t.value=(e=n,e.byteOffset||e.byteLength!=e.buffer.byteLength?new o(e):e).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var e}function nn(t=new r("Unknown error")){const{message:n,stack:e,code:s,name:o,outputSize:c,cause:i,codecImportFailed:a}=t,f={message:n,stack:e,code:s,name:o,outputSize:c};i&&(f.cause={name:i.name,message:i.message}),a&&(f.codecImportFailed=!0),p({error:f})}addEventListener("message",({data:t})=>{const{type:n,messageId:e,value:s,done:r}=t;try{if("start"==n&&$t(t),n==jt){const t=Qt.get(e);Qt.delete(e),t({value:s||new o,done:r})}if("ack"==n){const t=Xt.get(e);Xt.delete(e),t()}n==Ht&&Yt.abort()}catch(t){nn(t)}}),p({type:"ready"});const en="deflate",sn="deflate-raw",rn="deflate64-raw",on="gzip";let cn,an,fn,un,ln;function wn(t,n,e={}){if(!cn){const t=new r("WASM module not loaded");throw t.cause=ln,t}const c="number"==typeof e.level?e.level:-1,i="number"==typeof e.outBuffer?e.outBuffer:65536,a="number"==typeof e.inBufferSize?e.inBufferSize:65536;return new d({start(){try{let e;if(this.ut=an(i),this.in=an(a),this.inBufferSize=a,!this.ut||!this.in)throw new r("allocation failed");if(this.lt=new o(i),t?(this.wt=cn.deflate_process,this.ht=cn.deflate_last_consumed,this.yt=cn.deflate_end,this.St=cn.deflate_new(),e=n===on?cn.deflate_init_gzip(this.St,c):n===sn?cn.deflate_init_raw(this.St,c):cn.deflate_init(this.St,c)):n===rn?(this.wt=cn.inflate9_process,this.ht=cn.inflate9_last_consumed,this.yt=cn.inflate9_end,this.St=cn.inflate9_new(),e=cn.inflate9_init_raw(this.St)):(this.wt=cn.inflate_process,this.ht=cn.inflate_last_consumed,this.yt=cn.inflate_end,this.St=cn.inflate_new(),e=n===sn?cn.inflate_init_raw(this.St):n===on?cn.inflate_init_gzip(this.St):cn.inflate_init(this.St)),0!==e)throw new r("init failed:"+e)}catch(t){throw f(this),t}},transform(t,n){try{const e=t,c=new o(un.buffer),a=this.wt,f=this.ht,u=this.ut,l=this.lt;let w=0;for(;w<e.length;){const t=s.min(e.length-w,32768);if((!this.in||this.inBufferSize<t)&&(this.in&&fn&&(fn(this.in),this.in=0),this.in=an(t),this.inBufferSize=t,!this.in))throw new r("allocation failed");c.set(e.subarray(w,w+t),this.in);const o=a(this.St,this.in,t,u,i,0),h=o>>24&255,p=128&h?h-256:h;if(p<0)throw new r("process error:"+p);const d=16777215&o;d&&(l.set(c.subarray(u,u+d),0),n.enqueue(l.slice(0,d)));const y=f(this.St);if(0===y&&0===d)break;w+=y}}catch(t){f(this),n.error(t)}},flush(t){try{const n=new o(un.buffer),e=this.wt,s=this.ut,c=this.lt;for(;;){const o=e(this.St,0,0,s,i,4),a=o>>24&255,f=128&a?a-256:a;if(f<0)throw new r("process error:"+f);const u=16777215&o;if(u&&(c.set(n.subarray(s,s+u),0),t.enqueue(c.slice(0,u))),1===a||0===u)break}}catch(n){t.error(n)}finally{const n=f(this);0!==n&&t.error(new r("end error:"+n))}},cancel(){f(this)}});function f(t){let n=0;return t.St&&t.yt&&(n=t.yt(t.St)),t.St=0,t.in&&fn&&fn(t.in),t.in=0,t.ut&&fn&&fn(t.ut),t.ut=0,n}}class hn{constructor(t=en,n){return wn(!0,t,n)}}class pn{constructor(t=en,n){return wn(!1,t,n)}}hn.gt=!0,pn.gt=!0,hn.vt=[en,sn,on],pn.vt=[en,sn,on,rn];let dn=!1;!function(t={}){const{init:n}=t,e=t.CompressionStreamFallback||t.CompressionStreamZlib,s=t.DecompressionStreamFallback||t.DecompressionStreamZlib;self.initModule=async t=>{n&&await n(t),e&&(t.CompressionStreamFallback=e),s&&(t.DecompressionStreamFallback=s)}}({CompressionStreamFallback:hn,DecompressionStreamFallback:pn,init:t=>async function(t,{baseURI:n}){if(!dn)try{await async function(t,n){let e,s;try{try{s=new URL(t,n)}catch{}const r=await fetch(s);e=await r.arrayBuffer()}catch(n){if(!t.startsWith("data:application/wasm;base64,"))throw n;e=function(t){const n=t.split(",")[1],e=atob(n),s=e.length,r=new o(s);for(let t=0;t<s;++t)r[t]=e.charCodeAt(t);return r.buffer}(t)}!function(t){if(cn=t,({malloc:an,free:fn,memory:un}=cn),"function"!=typeof an||"function"!=typeof fn||!un)throw cn=an=fn=un=null,new r("Invalid WASM module")}((await WebAssembly.instantiate(e)).instance.exports)}(t,n),dn=!0}catch(t){throw function(t){ln=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,"+function(t){let n="";const s=t.length;let r=0;for(;r+2<s;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};
@@ -63,6 +63,10 @@
63
63
  * failing before they reach getFileEntry().
64
64
  * - `zipWriter.lockWriter`/`writerLocked` is the mutex over the writer; only the holder may write
65
65
  * into it or read the position variables above.
66
+ * - At most one entry is written directly into the writer at a time, every other one is buffered.
67
+ * `bufferedWrites`/`directWrites` record the choice in the same synchronous block that makes it,
68
+ * because `writerLocked` is only raised an await later: concurrent add() calls all decide before
69
+ * that, and would all pick the direct path and then serialize on the previous entry's lock.
66
70
  * - Both write paths await the lock of the previous entry before requesting the writer lock.
67
71
  * Requesting it first would deadlock an entry written directly into the writer (i.e. without
68
72
  * being buffered) against a buffered predecessor, which needs that same lock to be flushed.
@@ -306,6 +310,7 @@ class ZipWriter {
306
310
  pendingAddFileCalls: new Set(),
307
311
  pendingErrors: [],
308
312
  bufferedWrites: 0,
313
+ directWrites: 0,
309
314
  lastFileEntry: UNDEFINED_VALUE
310
315
  });
311
316
  }
@@ -1194,6 +1199,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
1194
1199
  const usdz = zipWriter.options[OPTION_USDZ];
1195
1200
  let fileEntry = pendingFileEntry;
1196
1201
  let bufferedWrite;
1202
+ let directWrite;
1197
1203
  let releaseLockWriter;
1198
1204
  let writingBufferedEntryData;
1199
1205
  let writingEntryData;
@@ -1203,7 +1209,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
1203
1209
  const lockPreviousFileEntry = keepOrder && previousFileEntry ? previousFileEntry.lockFileEntry : UNDEFINED_VALUE;
1204
1210
  fileEntries.set(name, fileEntry);
1205
1211
  try {
1206
- if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || (!dataDescriptor && !emptyEntry)) {
1212
+ if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || zipWriter.directWrites || (!dataDescriptor && !emptyEntry)) {
1207
1213
  bufferedWrite = true;
1208
1214
  zipWriter.bufferedWrites++;
1209
1215
  if (options.createTempStream) {
@@ -1214,6 +1220,8 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
1214
1220
  fileWriter.size = 0;
1215
1221
  await initStream(writer);
1216
1222
  } else {
1223
+ directWrite = true;
1224
+ zipWriter.directWrites++;
1217
1225
  fileWriter = writer;
1218
1226
  await lockPreviousFileEntry;
1219
1227
  await requestLockWriter();
@@ -1292,6 +1300,9 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
1292
1300
  if (bufferedWrite) {
1293
1301
  zipWriter.bufferedWrites--;
1294
1302
  }
1303
+ if (directWrite) {
1304
+ zipWriter.directWrites--;
1305
+ }
1295
1306
  if (releaseLockFileEntry) {
1296
1307
  releaseLockFileEntry(lockPreviousFileEntry);
1297
1308
  }
@@ -1436,8 +1447,8 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
1436
1447
  }
1437
1448
  const { writable } = writer;
1438
1449
  if (reader) {
1439
- const readable = toCompatibleReadable(createReadable(reader));
1440
1450
  const size = reader.size;
1451
+ const readable = toCompatibleReadable(createReadable(reader, { size }));
1441
1452
  const workerOptions = {
1442
1453
  options: {
1443
1454
  codecType: CODEC_DEFLATE,
@@ -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],f=[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],n=[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],c=[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 Z=new Uint8Array(30).fill(5);function s(t){const f=new Uint16Array(16);for(const n of t)f[n]++;f[0]=0;const n=new Uint16Array(17);for(let t=1;t<=15;t++)n[t+1]=n[t]+f[t];const r=new Uint16Array(t.length);for(let f=0;f<t.length;f++)t[f]&&(r[n[t[f]]++]=f);return{l:f,symbols:r}}const X="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function e(e){let y;e({wasmURI:()=>(y||(y="data:application/wasm;base64,"+function(t){let f="";const n=t.length;let r=0;for(;r+2<n;r+=3){const n=t[r]<<16|t[r+1]<<8|t[r+2];f+=X[n>>18&63]+X[n>>12&63]+X[n>>6&63]+X[63&n]}const c=n-r;if(1===c){const n=t[r]<<16;f+=X[n>>18&63]+X[n>>12&63]+"=="}else if(2===c){const n=t[r]<<16|t[r+1]<<8;f+=X[n>>18&63]+X[n>>12&63]+X[n>>6&63]+"="}return f}(function(X){let e=0,y=0,u=0,o=new Uint8Array(1024),v=0,q=0;for(;!q;){q=m(1);const t=m(2);if(0==t)T();else if(1==t)V(s(l),s(Z));else{if(2!=t)throw new Error("invalid deflate block type");V(...U())}}return o.subarray(0,v);function a(){if(e>=X.length)throw new Error("unexpected end of deflate data");return X[e++]}function m(t){for(;u<t;)y|=a()<<u,u+=8;const f=y&(1<<t)-1;return y>>>=t,u-=t,f}function T(){y=0,u=0;const t=a()|a()<<8;e+=2,M(v+t);for(let f=0;f<t;f++)o[v++]=a()}function V(c,l){let Z=S(c);for(;256!=Z;){if(Z<256)M(v+1),o[v++]=Z;else{const c=Z-257,s=t[c]+m(f[c]),X=S(l),e=n[X]+m(r[X]);M(v+s);const y=v-e;for(let t=0;t<s;t++)o[v++]=o[y+t]}Z=S(c)}}function U(){const t=m(5)+257,f=m(5)+1,n=m(4)+4,r=new Uint8Array(19);for(let t=0;t<n;t++)r[c[t]]=m(3);const l=s(r),Z=new Uint8Array(t+f);let X=0;for(;X<Z.length;){const t=S(l);if(t<16)Z[X++]=t;else if(16==t){const t=Z[X-1];let f=m(2)+3;for(;f--;)Z[X++]=t}else X+=17==t?m(3)+3:m(7)+11}return[s(Z.subarray(0,t)),s(Z.subarray(t))]}function S(t){const{l:f,symbols:n}=t;let r=0,c=0,l=0;for(let t=1;t<=15;t++){r|=m(1);const Z=f[t];if(r-c<Z)return n[l+(r-c)];l+=Z,c=c+Z<<1,r<<=1}throw new Error("invalid huffman code")}function M(t){if(o.length<t){let f=2*o.length;for(;f<t;)f*=2;const n=new Uint8Array(f);n.set(o.subarray(0,v)),o=n}}}(function(t){const f=(t=String(t).replace(/[^A-Za-z0-9+/=]/g,"")).length,n=[];for(let r=0;r<f;r+=4){const f=X.indexOf(t[r])<<18|X.indexOf(t[r+1])<<12|(63&X.indexOf(t[r+2]))<<6|63&X.indexOf(t[r+3]);n.push(f>>16&255),"="!==t[r+2]&&n.push(f>>8&255),"="!==t[r+3]&&n.push(255&f)}return new Uint8Array(n)}("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")))),y)})}export{e as configureZlibModule};
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],n=[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],r=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],V=new Uint8Array(288);V.fill(8,0,144),V.fill(9,144,256),V.fill(7,256,280),V.fill(8,280,288);const l=new Uint8Array(30).fill(5);function a(t){const e=new Uint16Array(16);for(const n of t)e[n]++;e[0]=0;const n=new Uint16Array(17);for(let t=1;t<=15;t++)n[t+1]=n[t]+e[t];const o=new Uint16Array(t.length);for(let e=0;e<t.length;e++)t[e]&&(o[n[t[e]]++]=e);return{o:e,symbols:o}}const f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function s(s){let m;s({wasmURI:()=>(m||(m="data:application/wasm;base64,"+function(t){let e="";const n=t.length;let o=0;for(;o+2<n;o+=3){const n=t[o]<<16|t[o+1]<<8|t[o+2];e+=f[n>>18&63]+f[n>>12&63]+f[n>>6&63]+f[63&n]}const r=n-o;if(1===r){const n=t[o]<<16;e+=f[n>>18&63]+f[n>>12&63]+"=="}else if(2===r){const n=t[o]<<16|t[o+1]<<8;e+=f[n>>18&63]+f[n>>12&63]+f[n>>6&63]+"="}return e}(function(f){let s=0,m=0,q=0,i=new Uint8Array(1024),K=0,y=0;for(;!y;){y=W(1);const t=W(2);if(0==t)Y();else if(1==t)c(a(V),a(l));else{if(2!=t)throw new Error("invalid deflate block type");c(...p())}}return i.subarray(0,K);function z(){if(s>=f.length)throw new Error("unexpected end of deflate data");return f[s++]}function W(t){for(;q<t;)m|=z()<<q,q+=8;const e=m&(1<<t)-1;return m>>>=t,q-=t,e}function Y(){m=0,q=0;const t=z()|z()<<8;s+=2,Z(K+t);for(let e=0;e<t;e++)i[K++]=z()}function c(r,V){let l=u(r);for(;256!=l;){if(l<256)Z(K+1),i[K++]=l;else{const r=l-257,a=t[r]+W(e[r]),f=u(V),s=n[f]+W(o[f]);Z(K+a);const m=K-s;for(let t=0;t<a;t++)i[K++]=i[m+t]}l=u(r)}}function p(){const t=W(5)+257,e=W(5)+1,n=W(4)+4,o=new Uint8Array(19);for(let t=0;t<n;t++)o[r[t]]=W(3);const V=a(o),l=new Uint8Array(t+e);let f=0;for(;f<l.length;){const t=u(V);if(t<16)l[f++]=t;else if(16==t){const t=l[f-1];let e=W(2)+3;for(;e--;)l[f++]=t}else f+=17==t?W(3)+3:W(7)+11}return[a(l.subarray(0,t)),a(l.subarray(t))]}function u(t){const{o:e,symbols:n}=t;let o=0,r=0,V=0;for(let t=1;t<=15;t++){o|=W(1);const l=e[t];if(o-r<l)return n[V+(o-r)];V+=l,r=r+l<<1,o<<=1}throw new Error("invalid huffman code")}function Z(t){if(i.length<t){let e=2*i.length;for(;e<t;)e*=2;const n=new Uint8Array(e);n.set(i.subarray(0,K)),i=n}}}(function(t){const e=(t=String(t).replace(/[^A-Za-z0-9+/=]/g,"")).length,n=[];for(let o=0;o<e;o+=4){const e=f.indexOf(t[o])<<18|f.indexOf(t[o+1])<<12|(63&f.indexOf(t[o+2]))<<6|63&f.indexOf(t[o+3]);n.push(e>>16&255),"="!==t[o+2]&&n.push(e>>8&255),"="!==t[o+3]&&n.push(255&e)}return new Uint8Array(n)}("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")))),m)})}export{s as configureZlibModule};
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.11.0",
6
+ "version": "2.11.2",
7
7
  "type": "module",
8
8
  "keywords": [
9
9
  "zip",
@@ -41,7 +41,8 @@
41
41
  "bump-commit": "npm run build && git commit -m \"bump up version\" package.json package-lock.json deno.json lib/core/version.js dist index.cjs index-native.cjs index.min.js index-native.min.js lib/core/web-worker-inline-wasm.js lib/core/web-worker-inline-native.js",
42
42
  "release": "sh ./release.sh",
43
43
  "lint": "npx eslint . && deno lint",
44
- "test": "npm run test-node && npm run test-deno && npm run test-bun && npm run test-node-dist && npm run test-deno-dist && npm run test-bun-dist && npm run test-web-streams-polyfill && npm run test-types && npm run test-api-symmetry && npm run test-api-shape && npm run test-api-mangling",
44
+ "test": "npm run test-ci && npm run test-bun && npm run test-bun-dist",
45
+ "test-ci": "npm run test-registration && npm run test-node && npm run test-deno && npm run test-node-dist && npm run test-deno-dist && npm run test-web-streams-polyfill && npm run test-types && npm run test-api-symmetry && npm run test-api-shape && npm run test-api-mangling",
45
46
  "test-browsers": "npm run test-chrome && npm run test-firefox && npm run test-safari",
46
47
  "serve-tests": "http-server -p 8888 -c-1 .",
47
48
  "test-all": "npm run lint && npm run test && npm run test-browsers",
@@ -57,6 +58,7 @@
57
58
  "test-node-dist": "./tests/dist-runner.sh node",
58
59
  "test-bun-dist": "./tests/dist-runner.sh bun",
59
60
  "test-types": "tsc -p ./tests/types/tsconfig.json",
61
+ "test-registration": "node ./tests/registration.js",
60
62
  "test-api-symmetry": "node ./tests/api-symmetry/audit.js",
61
63
  "test-api-shape": "node ./tests/api-symmetry/shape.js",
62
64
  "test-api-mangling": "node ./tests/api-symmetry/mangling.js",