@zip.js/zip.js 2.8.37 → 2.8.39
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/README.md +0 -12
- package/deno.json +3 -2
- package/dist/zip-core.js +161 -38
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +154 -38
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +163 -40
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +162 -39
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +163 -40
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +163 -40
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +162 -39
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +163 -40
- package/index-native.min.js +1 -1
- package/index.cjs +162 -39
- package/index.d.cts +22 -2
- package/index.d.ts +22 -2
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +2 -1
- package/lib/core/codec-worker.js +94 -18
- package/lib/core/configuration.js +2 -0
- package/lib/core/constants.js +4 -0
- package/lib/core/io.js +1 -1
- package/lib/core/streams/codec-stream.js +6 -2
- package/lib/core/streams/zip-crypto-stream.js +1 -1
- package/lib/core/streams/zip-entry-stream.js +29 -12
- package/lib/core/web-worker-base.js +26 -8
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-reader.js +23 -1
- package/lib/core/zip-writer.js +15 -7
- package/lib/zip-core-reader.js +2 -1
- package/package.json +1 -1
- package/worker-message-property-names.js +1 -1
package/index.cjs
CHANGED
|
@@ -40,6 +40,7 @@ const COMPRESSION_METHOD_AES = 0x63;
|
|
|
40
40
|
const LOCAL_FILE_HEADER_SIGNATURE = 0x04034b50;
|
|
41
41
|
const SPLIT_ZIP_FILE_SIGNATURE = 0x08074b50;
|
|
42
42
|
const DATA_DESCRIPTOR_RECORD_SIGNATURE = SPLIT_ZIP_FILE_SIGNATURE;
|
|
43
|
+
const ARCHIVE_EXTRA_DATA_SIGNATURE = 0x08064b50;
|
|
43
44
|
const CENTRAL_FILE_HEADER_SIGNATURE = 0x02014b50;
|
|
44
45
|
const END_OF_CENTRAL_DIR_SIGNATURE = 0x06054b50;
|
|
45
46
|
const ZIP64_END_OF_CENTRAL_DIR_SIGNATURE = 0x06064b50;
|
|
@@ -71,6 +72,7 @@ const BITFLAG_LEVEL_MAX_MASK = 0b010;
|
|
|
71
72
|
const BITFLAG_LEVEL_FAST_MASK = 0b100;
|
|
72
73
|
const BITFLAG_LEVEL_SUPER_FAST_MASK = 0b110;
|
|
73
74
|
const BITFLAG_DATA_DESCRIPTOR = 0b1000;
|
|
75
|
+
const BITFLAG_STRONG_ENCRYPTION = 0b1000000;
|
|
74
76
|
const BITFLAG_LANG_ENCODING_FLAG = 0b100000000000;
|
|
75
77
|
const FILE_ATTR_MSDOS_DIR_MASK = 0b10000;
|
|
76
78
|
const FILE_ATTR_MSDOS_READONLY_MASK = 0x01;
|
|
@@ -154,6 +156,7 @@ const DEFAULT_CONFIGURATION = {
|
|
|
154
156
|
maxWorkers,
|
|
155
157
|
terminateWorkerTimeout: 5000,
|
|
156
158
|
workerStarvationTimeout: 5000,
|
|
159
|
+
workerStartupTimeout: 5000,
|
|
157
160
|
useWebWorkers: true,
|
|
158
161
|
useCompressionStream: true,
|
|
159
162
|
transferStreams: true,
|
|
@@ -169,6 +172,7 @@ const CONFIGURABLE_PROPERTY_NAMES = [
|
|
|
169
172
|
"maxWorkers",
|
|
170
173
|
"terminateWorkerTimeout",
|
|
171
174
|
"workerStarvationTimeout",
|
|
175
|
+
"workerStartupTimeout",
|
|
172
176
|
"useCompressionStream",
|
|
173
177
|
"useWebWorkers",
|
|
174
178
|
"transferStreams",
|
|
@@ -214,7 +218,7 @@ function resetConfiguration() {
|
|
|
214
218
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
215
219
|
}
|
|
216
220
|
|
|
217
|
-
function t$1(t){const e='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:S}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)e=1&e?e>>>1^3988292384:e>>>1;C[0][t]=e}for(let t=0;256>t;t++)for(let e=1;8>e;e++){const n=C[e-1][t];C[e][t]=n>>>8^C[0][255&n]}const[A,I,x,P,D,R,U,M]=C;class _{constructor(t){this.o=t||-1}append(t){let e=0|this.o;const n=0|t.length;let s=0;if(n>=8&&t.buffer){const r=new l(t.buffer,t.byteOffset,n),o=n-8;for(;o>=s;s+=8){const t=e^r.getInt32(s,!0),n=r.getInt32(s+4,!0);e=M[255&t]^U[t>>>8&255]^R[t>>>16&255]^D[t>>>24&255]^P[255&n]^x[n>>>8&255]^I[n>>>16&255]^A[n>>>24&255]}}for(;n>s;s++)e=e>>>8^A[255&(e^t[s])];this.o=e}get(){return~this.o}}class B extends d{constructor(){let t;const e=new _;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}function V(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}const W={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=W.l(n);return 32===s?t.concat(e):W.h(e,s,0|n,t.slice(0,t.length-1))},m(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+W.l(n)},S(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,s.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=W.v(e,t[n-1]&2147483648>>e-1,1)),t},v:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r<t.length;r++)s.push(n|t[r]>>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=W.l(r);return s.push(W.v(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=W.m(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},A(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(W.v(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.P=[1518500249,1859775393,2400959708,3395469782],t?(e.D=t.D.slice(0),e.R=t.R.slice(0),e.U=t.U):e.reset()}reset(){const t=this;return t.D=t.I.slice(0),t.R=[],t.U=0,t}update(t){const e=this;"string"==typeof t&&(t=K.M.A(t));const n=e.R=W.concat(e.R,t),s=e.U,o=e.U=s+W.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e._(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}B(){const t=this;let e=t.R;const n=t.D;e=W.concat(e,[W.v(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.U/4294967296)),e.push(0|t.U);e.length;)t._(e.splice(0,16));return t.reset(),n}V(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}W(t,e){return e<<t|e>>>32-t}_(e){const n=this,r=n.D,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.W(5,i)+n.V(t,c,a,f)+l+o[t]+n.P[s.floor(t/20)]|0;l=f,f=a,a=n.W(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},L={importKey:t=>new L.K(K.bytes.A(t)),L(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let i,c,a,f,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=W;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),f=0;f<c.length;f++)i[f]^=c[f];for(a=0;(o||1)>p&&a<i.length;a++)h.setInt32(p,i[a]),p+=4}return w.slice(0,s/8)},K:class{constructor(t){const e=this,n=e.O=E,s=[[],[]];e.T=[new n,new n];const r=e.T[0].blockSize/32;t.length>r&&(t=(new n).update(t).B());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.T[0].update(s[0]),e.T[1].update(s[1]),e.j=new n(e.T[0])}reset(){const t=this;t.j=new t.O(t.T[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.B(),n=new t.O(t.T[1]).update(e).B();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},O=typeof h!=b&&typeof h.getRandomValues==k,T="Invalid password",j="Invalid signature",H="zipjs-abort-check-password";function Z(t){if(O)return h.getRandomValues(t);throw new r("Crypto API not supported")}const F=16,N={name:"PBKDF2"},q=e.assign({hash:{name:"HMAC"}},N),G=e.assign({iterations:1e3,hash:{name:"SHA-1"}},N),J=["deriveBits"],Q=[8,12,16],X=[16,24,32],Y=10,$=[0,0,0,0],tt=typeof h!=b,et=tt&&h.subtle,nt=tt&&typeof et!=b,st=K.bytes,rt=class{constructor(t){const e=this;e.Z=[[[],[],[],[],[]],[[],[],[],[],[]]],e.Z[0][0][0]||e.F();const n=e.Z[0][4],s=e.Z[1],o=t.length;let i,c,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.P=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}F(){const t=this.Z[0],e=this.Z[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[c=r[l]]];let u=16843009*f^65537*a^257*c^16843008*l,w=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][o]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}N(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.P[e],s=n.length/4-2,o=[0,0,0,0],i=this.Z[e],c=i[0],a=i[1],f=i[2],l=i[3],u=i[4];let w,h,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],S=4;for(let t=0;s>t;t++)w=c[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[S],h=c[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[S+1],p=c[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[S+2],g=c[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[S+3],S+=4,d=w,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[S++],w=d,d=y,y=m,m=g,g=w;return o}},ot=class{constructor(t,e){this.G=t,this.J=e,this.X=e}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}$(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}et(t){0===(t[0]=this.$(t[0]))&&(t[1]=this.$(t[1]))}Y(t,e,n){let s;if(!(s=e.length))return[];const r=W.m(e);for(let r=0;s>r;r+=4){this.et(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return W.S(e,r)}},it=L.K;let ct=tt&&nt&&typeof et.importKey==k,at=tt&&nt&&typeof et.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s}){super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:i,strength:c,nt:a,ready:f}=n;i?(await(async(t,e,n,s)=>{const o=await ht(t,e,n,dt(s,0,Q[e])),i=dt(s,Q[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(T)})(n,c,i,dt(t,0,Q[c]+2)),t=dt(t,Q[c]+2),s?e.error(new r(H)):a()):await f;const l=new o(t.length-Y-(t.length-Y)%F);e.enqueue(wt(n,t,l,0,Y,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=dt(s,0,s.length-Y),c=dt(s,s.length-Y);let a=z;if(i.length){const t=mt(st,i);n.update(t);const s=e.update(t);a=yt(st,s)}const f=dt(yt(st,n.digest()),0,Y);let l=s.length<Y?1:0;for(let t=0;Y>t;t++)l|=f[t]^c[t];if(l)throw new r(j);t.enqueue(a)}}})}}class lt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:i,ready:c}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=Z(new o(Q[e]));return V(s,await ht(t,e,n,s))})(n,r,s),i()):await c;const f=new o(a.length+t.length-t.length%F);f.set(a,0),e.enqueue(wt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:r,ready:o}=this;if(n&&e){await o;let i=z;if(r.length){const t=e.update(mt(st,r));n.update(t),i=yt(st,t)}s.signature=yt(st,n.digest()).slice(0,Y),t.enqueue(V(i,s.signature))}}}),s=this}}function ut(t,n,s,r){e.assign(t,{ready:new u(e=>t.nt=e),password:pt(n,s),strength:r-1,pending:z})}function wt(t,e,n,s,r,i){const{st:c,ot:a,pending:f}=t;f.length&&(e=V(f,e));const l=e.length-r;let u;for(n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,s+(l-l%F)),u=0;l-F>=u;u+=F){const t=mt(st,dt(e,u,u+F));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(yt(st,r),u+s)}return t.pending=dt(e,u),n}async function ht(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!ct)return L.importKey(e);try{return await et.importKey("raw",e,n,!1,r)}catch{return ct=!1,L.importKey(e)}})(0,r,q,0,J),a=await(async(t,e,n)=>{if(!at)return L.L(e,t.salt,G.iterations,n);try{return await et.deriveBits(t,e,n)}catch{return at=!1,L.L(e,t.salt,G.iterations,n)}})(e.assign({salt:i},G),c,8*(2*X[s]+2)),f=new o(a),l=mt(st,dt(f,0,X[s])),u=mt(st,dt(f,X[s],2*X[s])),w=dt(f,2*X[s]);return e.assign(n,{keys:{key:l,it:u,passwordVerification:w},st:new ot(new rt(l),t.from($)),ot:new it(u)}),w}function pt(t,e){return e===v?(t=>{if(typeof w==b){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new w).encode(t)})(t):e}function dt(t,e,n){return t.subarray(e,n)}function yt(t,e){return t.C(e)}function mt(t,e){return t.A(e)}class gt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=bt(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e.at(-1)^n.passwordVerification))throw new r(T);t=t.subarray(12)}s?e.error(new r(H)):e.enqueue(bt(n,t))}})}}class St extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;let s,r;if(n.password||n.rawPassword){n.password=n.rawPassword=null;const e=Z(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(kt(n,e),0),r=12}else s=new o(t.length),r=0;s.set(kt(n,t),r),e.enqueue(s)}})}}function vt(t,n,s,r){e.assign(t,{password:n,rawPassword:s,passwordVerification:r}),((t,n,s)=>{const r=[305419896,591751049,878082192];if(e.assign(t,{keys:r,ct:new _(r[0]),ft:new _(r[2])}),s)for(let e=0;e<s.length;e++)zt(t,s[e]);else for(let e=0;e<n.length;e++)zt(t,n.charCodeAt(e))})(t,n,s)}function bt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,n[s]);return n}function kt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,e[s]);return n}function zt(t,e){let[,n]=t.keys;t.ct.append([e]);const r=~t.ct.get();n=It(s.imul(It(n+At(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function Ct(t){const e=2|t.keys[2];return At(s.imul(e,1^e)>>>8)}function At(t){return 255&t}function It(t){return 4294967295&t}const xt=new f;function Pt(t){return xt.get(t)}class Dt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:f,deflate64:u,format:w}=t,h=this;let p,d,y,m=super.readable;const g=w&&Pt(w),S=a&&r&&!u&&!g&&(!o||c)&&!(!i||!s);o&&!c||!a||S||(p=new B,m=Vt(m,p)),r&&(g?m=Wt(m,_t(g.CompressionStream,w,{level:f,chunkSize:e})):S?(y=new Rt,m=Wt(m,new s("gzip")),m=Vt(m,y)):m=Bt(m,i,{level:f,chunkSize:e},s,n,s)),o&&(c?m=Vt(m,new St(t)):(d=new lt(t),m=Vt(m,d))),Mt(h,m,()=>{let t;o&&!c&&(t=d.signature),o&&!c||!a||(t=S?y.signature:new l(p.value.buffer).getUint32(0)),h.signature=t})}}class Rt extends d{constructor(){let t,e=10,n=new o(0);super({transform(t,r){if(e){const n=s.min(e,t.length);if(e-=n,!(t=t.subarray(n)).length)return}const o=n.length+t.length;if(8>=o)return void(n=V(n,t));const i=o-8,c=s.min(i,n.length);r.enqueue(V(n.subarray(0,c),t.subarray(0,i-c))),n=V(n.subarray(c),t.subarray(i-c))},flush(){const e=new l((s=n).buffer,s.byteOffset,s.byteLength);var s;t.signature=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Ut extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:f,useCompressionStream:u,deflate64:w,format:h}=t;let p,d,m=super.readable;if(i&&(o?m=Vt(m,new gt(t)):(d=new ft(t),m=Vt(m,d))),f){const t=h&&Pt(h);m=t?Wt(m,_t(t.DecompressionStream,h,{chunkSize:e})):Bt(m,u,{chunkSize:e,deflate64:w},s,n,s),m=(t=>{const e=t.getReader();return new y({async pull(t){let n;try{n=await e.read()}catch(t){if(t&&t.message)throw t;const e=new r("Invalid compressed data");throw e.cause=t,e}const{value:s,done:o}=n;o?t.close():t.enqueue(s)},cancel:t=>e.cancel(t)})})(m)}i&&!o||!c||(p=new B,m=Vt(m,p)),Mt(this,m,()=>{if((!i||o)&&c){const t=new l(p.value.buffer);if(a!=t.getUint32(0,!1))throw new r(j)}})}}function Mt(t,n,s){n=Vt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function _t(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Bt(t,e,n,s,r,o){const i=e&&s?s:r||o,c=n.deflate64?"deflate64-raw":"deflate-raw";let a;try{a=new i(c,n)}catch(t){if(!e)throw t;if(r)a=new r(c,n);else{if(!o)throw t;a=new o(c,n)}}return Wt(t,a)}function Vt(t,e){return t.pipeThrough(e)}function Wt(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 Kt="data",Et="close";class Lt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith("deflate")?i=Dt:o.startsWith("inflate")&&(i=Ut),s.outputSize=0;let c=0;const a=new i(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class Ot 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 Tt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Tt=navigator.hardwareConcurrency)}catch{}const jt=new f,Ht=new f;let Zt,Ft,Nt,qt,Gt,Jt=0;async function Qt(t){let e,o;try{const{options:i,config:c}=t;if(i.format&&await(async(t,e)=>{!xt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=k&&typeof s!=k)throw new r("Invalid codec module");xt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(i.format,i.codecURI),!i.useCompressionStream)try{await self.initModule(t.config)}catch{i.useCompressionStream=!0}c.CompressionStream=self.CompressionStream,c.DecompressionStream=self.DecompressionStream;const a={highWaterMark:1},f=t.readable||new y({async pull(t){const e=new u(t=>jt.set(Jt,t));Xt({type:"pull",messageId:Jt}),Jt=(Jt+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);Ht.set(Jt,e),Xt({type:Kt,value:t,messageId:Jt}),Jt=(Jt+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new Lt(i,c),Zt=new AbortController;const{signal:l}=Zt;await f.pipeThrough(e).pipeThrough(new Ot((t=>s.max(t.chunkSize,64))(c))).pipeTo(o,{signal:l,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:w,inputSize:h,outputSize:p}=e;Xt({type:Et,result:{signature:w,inputSize:h,outputSize:p}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}Yt(t)}}function Xt(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 Yt(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}function $t(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="number"==typeof n.outBuffer?n.outBuffer:65536,a="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new d({start(){try{let n;if(this.lt=Nt(c),this.in=Nt(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.ut=new o(c),t?(this.wt=Ft.deflate_process,this.ht=Ft.deflate_last_consumed,this.yt=Ft.deflate_end,this.gt=Ft.deflate_new(),n="gzip"===e?Ft.deflate_init_gzip(this.gt,i):"deflate-raw"===e?Ft.deflate_init_raw(this.gt,i):Ft.deflate_init(this.gt,i)):"deflate64-raw"===e?(this.wt=Ft.inflate9_process,this.ht=Ft.inflate9_last_consumed,this.yt=Ft.inflate9_end,this.gt=Ft.inflate9_new(),n=Ft.inflate9_init_raw(this.gt)):(this.wt=Ft.inflate_process,this.ht=Ft.inflate_last_consumed,this.yt=Ft.inflate_end,this.gt=Ft.inflate_new(),n="deflate-raw"===e?Ft.inflate_init_raw(this.gt):"gzip"===e?Ft.inflate_init_gzip(this.gt):Ft.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const i=e,a=new o(Gt.buffer),f=this.wt,l=this.ht,u=this.lt,w=this.ut;let h=0;for(;h<i.length;){const e=s.min(i.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&qt&&(qt(this.in),this.in=0),this.in=Nt(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(i.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,u,c,0),p=16777215&o;if(p&&(w.set(a.subarray(u,u+p),0),n.enqueue(w.slice(0,p))),!t){const t=o>>24&255,e=128&t?t-256:t;if(0>e)throw new r("process error:"+e)}const d=l(this.gt);if(0===d)break;h+=d}}catch(t){f(this),n.error(t)}},flush(e){try{const n=new o(Gt.buffer),s=this.wt,i=this.lt,a=this.ut;for(;;){const o=s(this.gt,0,0,i,c,4),f=16777215&o,l=o>>24&255;if(!t){const t=128&l?l-256:l;if(0>t)throw new r("process error:"+t)}if(f&&(a.set(n.subarray(i,i+f),0),e.enqueue(a.slice(0,f))),1===l||0===f)break}}catch(t){e.error(t)}finally{const t=f(this);0!==t&&e.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let e=0;return t.gt&&t.yt&&(e=t.yt(t.gt)),t.gt=0,t.in&&qt&&qt(t.in),t.in=0,t.lt&&qt&&qt(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&Qt(t),e==Kt){const t=jt.get(n);jt.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Ht.get(n);Ht.delete(n),t()}e==Et&&Zt.abort()}catch(t){Yt(t)}});class te{constructor(t="deflate",e){return $t(!0,t,e)}}class ee{constructor(t="deflate",e){return $t(!1,t,e)}}te.St=!0,ee.St=!0;let ne=!1;self.initModule=async t=>{try{const e=await(async(t,{baseURI:e})=>{if(!ne){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(Ft=t,({malloc:Nt,free:qt,memory:Gt}=Ft),"function"!=typeof Nt||"function"!=typeof qt||!Gt)throw Ft=Nt=qt=Gt=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports),ne=!0}})(t.wasmURI,t);return t.CompressionStreamZlib=te,t.DecompressionStreamZlib=ee,e}catch{}}});\n';t({workerURI:t=>{const n="text/javascript";if(t){const t=new Blob([e],{type:n});return URL.createObjectURL(t)}return "data:"+n+","+encodeURIComponent(e)}});}
|
|
221
|
+
function t$1(t){const e='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:S}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)e=1&e?e>>>1^3988292384:e>>>1;C[0][t]=e}for(let t=0;256>t;t++)for(let e=1;8>e;e++){const n=C[e-1][t];C[e][t]=n>>>8^C[0][255&n]}const[A,I,x,P,D,R,U,M]=C;class _{constructor(t){this.o=t||-1}append(t){let e=0|this.o;const n=0|t.length;let s=0;if(n>=8&&t.buffer){const r=new l(t.buffer,t.byteOffset,n),o=n-8;for(;o>=s;s+=8){const t=e^r.getInt32(s,!0),n=r.getInt32(s+4,!0);e=M[255&t]^U[t>>>8&255]^R[t>>>16&255]^D[t>>>24&255]^P[255&n]^x[n>>>8&255]^I[n>>>16&255]^A[n>>>24&255]}}for(;n>s;s++)e=e>>>8^A[255&(e^t[s])];this.o=e}get(){return~this.o}}class B extends d{constructor(){let t;const e=new _;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}function V(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}const W={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=W.l(n);return 32===s?t.concat(e):W.h(e,s,0|n,t.slice(0,t.length-1))},m(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+W.l(n)},S(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,s.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=W.v(e,t[n-1]&2147483648>>e-1,1)),t},v:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r<t.length;r++)s.push(n|t[r]>>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=W.l(r);return s.push(W.v(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=W.m(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},A(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(W.v(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.P=[1518500249,1859775393,2400959708,3395469782],t?(e.D=t.D.slice(0),e.R=t.R.slice(0),e.U=t.U):e.reset()}reset(){const t=this;return t.D=t.I.slice(0),t.R=[],t.U=0,t}update(t){const e=this;"string"==typeof t&&(t=K.M.A(t));const n=e.R=W.concat(e.R,t),s=e.U,o=e.U=s+W.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e._(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}B(){const t=this;let e=t.R;const n=t.D;e=W.concat(e,[W.v(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.U/4294967296)),e.push(0|t.U);e.length;)t._(e.splice(0,16));return t.reset(),n}V(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}W(t,e){return e<<t|e>>>32-t}_(e){const n=this,r=n.D,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.W(5,i)+n.V(t,c,a,f)+l+o[t]+n.P[s.floor(t/20)]|0;l=f,f=a,a=n.W(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},L={importKey:t=>new L.K(K.bytes.A(t)),L(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let i,c,a,f,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=W;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),f=0;f<c.length;f++)i[f]^=c[f];for(a=0;(o||1)>p&&a<i.length;a++)h.setInt32(p,i[a]),p+=4}return w.slice(0,s/8)},K:class{constructor(t){const e=this,n=e.O=E,s=[[],[]];e.T=[new n,new n];const r=e.T[0].blockSize/32;t.length>r&&(t=(new n).update(t).B());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.T[0].update(s[0]),e.T[1].update(s[1]),e.j=new n(e.T[0])}reset(){const t=this;t.j=new t.O(t.T[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.B(),n=new t.O(t.T[1]).update(e).B();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},O=typeof h!=b&&typeof h.getRandomValues==k,T="Invalid password",j="Invalid signature",H="zipjs-abort-check-password";function Z(t){if(O)return h.getRandomValues(t);throw new r("Crypto API not supported")}const F=16,N={name:"PBKDF2"},q=e.assign({hash:{name:"HMAC"}},N),G=e.assign({iterations:1e3,hash:{name:"SHA-1"}},N),J=["deriveBits"],Q=[8,12,16],X=[16,24,32],Y=10,$=[0,0,0,0],tt=typeof h!=b,et=tt&&h.subtle,nt=tt&&typeof et!=b,st=K.bytes,rt=class{constructor(t){const e=this;e.Z=[[[],[],[],[],[]],[[],[],[],[],[]]],e.Z[0][0][0]||e.F();const n=e.Z[0][4],s=e.Z[1],o=t.length;let i,c,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.P=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}F(){const t=this.Z[0],e=this.Z[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[c=r[l]]];let u=16843009*f^65537*a^257*c^16843008*l,w=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][o]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}N(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.P[e],s=n.length/4-2,o=[0,0,0,0],i=this.Z[e],c=i[0],a=i[1],f=i[2],l=i[3],u=i[4];let w,h,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],S=4;for(let t=0;s>t;t++)w=c[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[S],h=c[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[S+1],p=c[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[S+2],g=c[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[S+3],S+=4,d=w,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[S++],w=d,d=y,y=m,m=g,g=w;return o}},ot=class{constructor(t,e){this.G=t,this.J=e,this.X=e}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}$(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}et(t){0===(t[0]=this.$(t[0]))&&(t[1]=this.$(t[1]))}Y(t,e,n){let s;if(!(s=e.length))return[];const r=W.m(e);for(let r=0;s>r;r+=4){this.et(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return W.S(e,r)}},it=L.K;let ct=tt&&nt&&typeof et.importKey==k,at=tt&&nt&&typeof et.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s}){super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:i,strength:c,nt:a,ready:f}=n;i?(await(async(t,e,n,s)=>{const o=await ht(t,e,n,dt(s,0,Q[e])),i=dt(s,Q[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(T)})(n,c,i,dt(t,0,Q[c]+2)),t=dt(t,Q[c]+2),s?e.error(new r(H)):a()):await f;const l=new o(t.length-Y-(t.length-Y)%F);e.enqueue(wt(n,t,l,0,Y,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=dt(s,0,s.length-Y),c=dt(s,s.length-Y);let a=z;if(i.length){const t=mt(st,i);n.update(t);const s=e.update(t);a=yt(st,s)}const f=dt(yt(st,n.digest()),0,Y);let l=s.length<Y?1:0;for(let t=0;Y>t;t++)l|=f[t]^c[t];if(l)throw new r(j);t.enqueue(a)}}})}}class lt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:i,ready:c}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=Z(new o(Q[e]));return V(s,await ht(t,e,n,s))})(n,r,s),i()):await c;const f=new o(a.length+t.length-t.length%F);f.set(a,0),e.enqueue(wt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:r,ready:o}=this;if(n&&e){await o;let i=z;if(r.length){const t=e.update(mt(st,r));n.update(t),i=yt(st,t)}s.signature=yt(st,n.digest()).slice(0,Y),t.enqueue(V(i,s.signature))}}}),s=this}}function ut(t,n,s,r){e.assign(t,{ready:new u(e=>t.nt=e),password:pt(n,s),strength:r-1,pending:z})}function wt(t,e,n,s,r,i){const{st:c,ot:a,pending:f}=t;f.length&&(e=V(f,e));const l=e.length-r;let u;for(n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,s+(l-l%F)),u=0;l-F>=u;u+=F){const t=mt(st,dt(e,u,u+F));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(yt(st,r),u+s)}return t.pending=dt(e,u),n}async function ht(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!ct)return L.importKey(e);try{return await et.importKey("raw",e,n,!1,r)}catch{return ct=!1,L.importKey(e)}})(0,r,q,0,J),a=await(async(t,e,n)=>{if(!at)return L.L(e,t.salt,G.iterations,n);try{return await et.deriveBits(t,e,n)}catch{return at=!1,L.L(e,t.salt,G.iterations,n)}})(e.assign({salt:i},G),c,8*(2*X[s]+2)),f=new o(a),l=mt(st,dt(f,0,X[s])),u=mt(st,dt(f,X[s],2*X[s])),w=dt(f,2*X[s]);return e.assign(n,{keys:{key:l,it:u,passwordVerification:w},st:new ot(new rt(l),t.from($)),ot:new it(u)}),w}function pt(t,e){return e===v?(t=>{if(typeof w==b){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new w).encode(t)})(t):e}function dt(t,e,n){return t.subarray(e,n)}function yt(t,e){return t.C(e)}function mt(t,e){return t.A(e)}class gt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=bt(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e[11]^n.passwordVerification))throw new r(T);t=t.subarray(12)}s?e.error(new r(H)):e.enqueue(bt(n,t))}})}}class St extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;let s,r;if(n.password||n.rawPassword){n.password=n.rawPassword=null;const e=Z(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(kt(n,e),0),r=12}else s=new o(t.length),r=0;s.set(kt(n,t),r),e.enqueue(s)}})}}function vt(t,n,s,r){e.assign(t,{password:n,rawPassword:s,passwordVerification:r}),((t,n,s)=>{const r=[305419896,591751049,878082192];if(e.assign(t,{keys:r,ct:new _(r[0]),ft:new _(r[2])}),s)for(let e=0;e<s.length;e++)zt(t,s[e]);else for(let e=0;e<n.length;e++)zt(t,n.charCodeAt(e))})(t,n,s)}function bt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,n[s]);return n}function kt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,e[s]);return n}function zt(t,e){let[,n]=t.keys;t.ct.append([e]);const r=~t.ct.get();n=It(s.imul(It(n+At(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function Ct(t){const e=2|t.keys[2];return At(s.imul(e,1^e)>>>8)}function At(t){return 255&t}function It(t){return 4294967295&t}const xt=new f;function Pt(t){return xt.get(t)}const Dt="deflate-raw";class Rt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:f,deflate64:u,format:w}=t,h=this;let p,d,y,m=super.readable;const g=w&&Pt(w),S=a&&r&&!u&&!g&&(!o||c)&&!(!i||!s);o&&!c||!a||S||(p=new B,m=Kt(m,p)),r&&(g?m=Et(m,Vt(g.CompressionStream,w,{level:f,chunkSize:e})):S?(y=new Ut,m=Et(m,new s("gzip")),m=Kt(m,y)):m=Wt(m,i,{level:f,chunkSize:e},s,n)),o&&(c?m=Kt(m,new St(t)):(d=new lt(t),m=Kt(m,d))),Bt(h,m,()=>{let t;o&&!c&&(t=d.signature),o&&!c||!a||(t=S?y.signature:new l(p.value.buffer).getUint32(0)),h.signature=t})}}class Ut extends d{constructor(){let t,e=10,n=new o(0);super({transform(t,r){if(e){const n=s.min(e,t.length);if(e-=n,!(t=t.subarray(n)).length)return}const o=n.length+t.length;if(8>=o)return void(n=V(n,t));const i=o-8,c=s.min(i,n.length);r.enqueue(V(n.subarray(0,c),t.subarray(0,i-c))),n=V(n.subarray(c),t.subarray(i-c))},flush(){const e=new l((s=n).buffer,s.byteOffset,s.byteLength);var s;t.signature=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Mt extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:f,useCompressionStream:u,deflate64:w,format:h}=t;let p,d,m=super.readable;if(i&&(o?m=Kt(m,new gt(t)):(d=new ft(t),m=Kt(m,d))),f){const t=h&&Pt(h);m=t?Et(m,Vt(t.DecompressionStream,h,{chunkSize:e})):Wt(m,u,{chunkSize:e,deflate64:w},s,n),m=(t=>{const e=t.getReader();return new y({async pull(t){let n;try{n=await e.read()}catch(t){if(t&&t.message)throw t;const e=new r("Invalid compressed data");throw e.cause=t,e}const{value:s,done:o}=n;o?t.close():t.enqueue(s)},cancel:t=>e.cancel(t)})})(m)}i&&!o||!c||(p=new B,m=Kt(m,p)),Bt(this,m,()=>{if((!i||o)&&c){const t=new l(p.value.buffer);if(a!=t.getUint32(0,!1))throw new r(j)}})}}const _t=new f;function Bt(t,n,s){n=Kt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function Vt(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Wt(t,e,n,s,r){const o=e&&s?s:r||s,i=n.deflate64?"deflate64-raw":Dt;let c;try{c=new o(i,n)}catch(t){if(!e||!r||o==r)throw t;c=new r(i,n)}return Et(t,c)}function Kt(t,e){return t.pipeThrough(e)}function Et(t,e){const n=e.writable.getWriter(),s=t.getReader();return(async()=>{try{for(;;){await n.ready;const t=await s.read();if(t.done){await n.close();break}await n.write(t.value)}}catch(t){await(async(t,e)=>{try{await t.abort(e)}catch{}})(n,t),await(async(t,e)=>{try{await t.cancel(e)}catch{}})(s,t)}})(),e.readable}const Lt="data",Ot="close",Tt="deflate";class jt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith(Tt)?i=Rt:o.startsWith("inflate")&&(i=Mt),s.outputSize=0;let c=0;const a=new i(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class Ht extends d{constructor(t){const e=[];let s=0;function r(){const n=new o(t);let r=0;for(;t>r;){const s=e[0],o=t-r;s.length>o?(n.set(s.subarray(0,o),r),e[0]=s.subarray(o),r+=o):(n.set(s,r),r+=s.length,e.shift())}return s-=t,n}n.isFinite(t)&&t>=1||(t=65536),super({transform(n,o){for(e.push(n),s+=n.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(((t,e)=>{const n=new o(e);let s=0;for(const e of t)n.set(e,s),s+=e.length;return n})(e,s))}})}}let Zt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Zt=navigator.hardwareConcurrency)}catch{}const Ft=new f,Nt=new f;let qt,Gt,Jt,Qt,Xt,Yt=0;async function $t(t){let e,o;try{const{options:i,config:c}=t;if(i.format&&await(async(t,e)=>{!xt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=k&&typeof s!=k)throw new r("Invalid codec module");xt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(i.format,i.codecURI),c.CompressionStream=self.CompressionStream,c.DecompressionStream=self.DecompressionStream,i.compressed&&!i.format)if(i.useCompressionStream){if(!(t=>{if(!t)return!1;let e=_t.get(t);if(e===v){try{new t(Dt),e=!0}catch{e=!1}_t.set(t,e)}return e})(i.codecType.startsWith(Tt)?c.CompressionStream:c.DecompressionStream))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{i.useCompressionStream=!0}const a={highWaterMark:1},f=t.readable||new y({async pull(t){const e=new u(t=>Ft.set(Yt,t));te({type:"pull",messageId:Yt}),Yt=(Yt+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},a);o=t.writable||new m({async write(t){let e;const s=new u(t=>e=t);Nt.set(Yt,e),te({type:Lt,value:t,messageId:Yt}),Yt=(Yt+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new jt(i,c),qt=new AbortController;const{signal:l}=qt;await f.pipeThrough(e).pipeThrough(new Ht((t=>s.max(t.chunkSize,64))(c))).pipeTo(o,{signal:l,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:w,inputSize:h,outputSize:p}=e;te({type:Ot,result:{signature:w,inputSize:h,outputSize:p}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}ee(t)}}function te(t){const{value:e}=t;if(e)if(e.length)try{t.value=(n=e,n.byteOffset||n.byteLength!=n.buffer.byteLength?new o(n):n).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var n}function ee(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}function ne(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="number"==typeof n.outBuffer?n.outBuffer:65536,a="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new d({start(){try{let n;if(this.lt=Jt(c),this.in=Jt(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.ut=new o(c),t?(this.wt=Gt.deflate_process,this.ht=Gt.deflate_last_consumed,this.yt=Gt.deflate_end,this.gt=Gt.deflate_new(),n="gzip"===e?Gt.deflate_init_gzip(this.gt,i):"deflate-raw"===e?Gt.deflate_init_raw(this.gt,i):Gt.deflate_init(this.gt,i)):"deflate64-raw"===e?(this.wt=Gt.inflate9_process,this.ht=Gt.inflate9_last_consumed,this.yt=Gt.inflate9_end,this.gt=Gt.inflate9_new(),n=Gt.inflate9_init_raw(this.gt)):(this.wt=Gt.inflate_process,this.ht=Gt.inflate_last_consumed,this.yt=Gt.inflate_end,this.gt=Gt.inflate_new(),n="deflate-raw"===e?Gt.inflate_init_raw(this.gt):"gzip"===e?Gt.inflate_init_gzip(this.gt):Gt.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const i=e,a=new o(Xt.buffer),f=this.wt,l=this.ht,u=this.lt,w=this.ut;let h=0;for(;h<i.length;){const e=s.min(i.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&Qt&&(Qt(this.in),this.in=0),this.in=Jt(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(i.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,u,c,0),p=16777215&o;if(p&&(w.set(a.subarray(u,u+p),0),n.enqueue(w.slice(0,p))),!t){const t=o>>24&255,e=128&t?t-256:t;if(0>e)throw new r("process error:"+e)}const d=l(this.gt);if(0===d)break;h+=d}}catch(t){f(this),n.error(t)}},flush(e){try{const n=new o(Xt.buffer),s=this.wt,i=this.lt,a=this.ut;for(;;){const o=s(this.gt,0,0,i,c,4),f=16777215&o,l=o>>24&255;if(!t){const t=128&l?l-256:l;if(0>t)throw new r("process error:"+t)}if(f&&(a.set(n.subarray(i,i+f),0),e.enqueue(a.slice(0,f))),1===l||0===f)break}}catch(t){e.error(t)}finally{const t=f(this);0!==t&&e.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let e=0;return t.gt&&t.yt&&(e=t.yt(t.gt)),t.gt=0,t.in&&Qt&&Qt(t.in),t.in=0,t.lt&&Qt&&Qt(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&$t(t),e==Lt){const t=Ft.get(n);Ft.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Nt.get(n);Nt.delete(n),t()}e==Ot&&qt.abort()}catch(t){ee(t)}}),p({type:"ready"});class se{constructor(t="deflate",e){return ne(!0,t,e)}}class re{constructor(t="deflate",e){return ne(!1,t,e)}}se.St=!0,re.St=!0;let oe=!1;self.initModule=async t=>{try{const e=await(async(t,{baseURI:e})=>{if(!oe){let n,s;try{try{s=new URL(t,e)}catch{}const r=await fetch(s);n=await r.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;n=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}(t=>{if(Gt=t,({malloc:Jt,free:Qt,memory:Xt}=Gt),"function"!=typeof Jt||"function"!=typeof Qt||!Xt)throw Gt=Jt=Qt=Xt=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports),oe=!0}})(t.wasmURI,t);return t.CompressionStreamZlib=se,t.DecompressionStreamZlib=re,e}catch{}}});\n';t({workerURI:t=>{const n="text/javascript";if(t){const t=new Blob([e],{type:n});return URL.createObjectURL(t)}return "data:"+n+","+encodeURIComponent(e)}});}
|
|
218
222
|
|
|
219
223
|
/*
|
|
220
224
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -1706,7 +1710,7 @@ class ZipCryptoDecryptionStream extends TransformStream {
|
|
|
1706
1710
|
if (zipCrypto.password || zipCrypto.rawPassword) {
|
|
1707
1711
|
const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));
|
|
1708
1712
|
zipCrypto.password = zipCrypto.rawPassword = null;
|
|
1709
|
-
if ((decryptedHeader
|
|
1713
|
+
if ((decryptedHeader[HEADER_LENGTH - 1] ^ zipCrypto.passwordVerification) != 0) {
|
|
1710
1714
|
throw new Error(ERR_INVALID_PASSWORD);
|
|
1711
1715
|
}
|
|
1712
1716
|
chunk = chunk.subarray(HEADER_LENGTH);
|
|
@@ -1879,7 +1883,7 @@ class DeflateStream extends TransformStream {
|
|
|
1879
1883
|
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
|
|
1880
1884
|
readable = pipeThrough(readable, gzipCrc32Stream);
|
|
1881
1885
|
} else {
|
|
1882
|
-
readable =
|
|
1886
|
+
readable = pipeThroughCompressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStream, CompressionStreamZlib);
|
|
1883
1887
|
}
|
|
1884
1888
|
}
|
|
1885
1889
|
if (encrypted) {
|
|
@@ -1964,7 +1968,7 @@ class InflateStream extends TransformStream {
|
|
|
1964
1968
|
if (codecStreams) {
|
|
1965
1969
|
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize }));
|
|
1966
1970
|
} else {
|
|
1967
|
-
readable =
|
|
1971
|
+
readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamZlib);
|
|
1968
1972
|
}
|
|
1969
1973
|
readable = mapInflateStreamError(readable);
|
|
1970
1974
|
}
|
|
@@ -1983,6 +1987,25 @@ class InflateStream extends TransformStream {
|
|
|
1983
1987
|
}
|
|
1984
1988
|
}
|
|
1985
1989
|
|
|
1990
|
+
const deflateRawSupportByStream = new Map();
|
|
1991
|
+
|
|
1992
|
+
function supportsDeflateRaw(StreamClass) {
|
|
1993
|
+
if (!StreamClass) {
|
|
1994
|
+
return false;
|
|
1995
|
+
}
|
|
1996
|
+
let supported = deflateRawSupportByStream.get(StreamClass);
|
|
1997
|
+
if (supported === UNDEFINED_VALUE) {
|
|
1998
|
+
try {
|
|
1999
|
+
new StreamClass(FORMAT_DEFLATE_RAW);
|
|
2000
|
+
supported = true;
|
|
2001
|
+
} catch {
|
|
2002
|
+
supported = false;
|
|
2003
|
+
}
|
|
2004
|
+
deflateRawSupportByStream.set(StreamClass, supported);
|
|
2005
|
+
}
|
|
2006
|
+
return supported;
|
|
2007
|
+
}
|
|
2008
|
+
|
|
1986
2009
|
function setReadable(stream, readable, flush) {
|
|
1987
2010
|
readable = pipeThrough(readable, new TransformStream({ flush }));
|
|
1988
2011
|
Object.defineProperty(stream, "readable", {
|
|
@@ -1999,21 +2022,17 @@ function createCodecStream(CodecStreamClass, format, options) {
|
|
|
1999
2022
|
return new CodecStreamClass(format, options);
|
|
2000
2023
|
}
|
|
2001
2024
|
|
|
2002
|
-
function
|
|
2003
|
-
const Stream = useCompressionStream && CompressionStreamNative ?
|
|
2025
|
+
function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamZlib) {
|
|
2026
|
+
const Stream = useCompressionStream && CompressionStreamNative ?
|
|
2027
|
+
CompressionStreamNative :
|
|
2028
|
+
CompressionStreamZlib || CompressionStreamNative;
|
|
2004
2029
|
const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
|
|
2005
2030
|
let codecStream;
|
|
2006
2031
|
try {
|
|
2007
2032
|
codecStream = new Stream(format, options);
|
|
2008
2033
|
} catch (error) {
|
|
2009
|
-
if (useCompressionStream) {
|
|
2010
|
-
|
|
2011
|
-
codecStream = new CompressionStreamZlib(format, options);
|
|
2012
|
-
} else if (CompressionStream) {
|
|
2013
|
-
codecStream = new CompressionStream(format, options);
|
|
2014
|
-
} else {
|
|
2015
|
-
throw error;
|
|
2016
|
-
}
|
|
2034
|
+
if (useCompressionStream && CompressionStreamZlib && Stream != CompressionStreamZlib) {
|
|
2035
|
+
codecStream = new CompressionStreamZlib(format, options);
|
|
2017
2036
|
} else {
|
|
2018
2037
|
throw error;
|
|
2019
2038
|
}
|
|
@@ -2274,6 +2293,7 @@ class ChunkStream extends TransformStream {
|
|
|
2274
2293
|
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
2275
2294
|
const ERROR_EVENT_TYPE = "error";
|
|
2276
2295
|
const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
|
|
2296
|
+
const ERR_WORKER_STARTUP_TIMEOUT = "Worker startup timeout";
|
|
2277
2297
|
|
|
2278
2298
|
let webWorkerSupported, webWorkerSource, webWorkerURI, webWorkerOptions;
|
|
2279
2299
|
let transferStreamsSupported = true;
|
|
@@ -2288,6 +2308,10 @@ function configureWorker({ initModule: initModuleFunction }) {
|
|
|
2288
2308
|
initModule$1 = initModuleFunction;
|
|
2289
2309
|
}
|
|
2290
2310
|
|
|
2311
|
+
function resetWebWorkerSupport() {
|
|
2312
|
+
webWorkerSupported = UNDEFINED_VALUE;
|
|
2313
|
+
}
|
|
2314
|
+
|
|
2291
2315
|
class CodecWorker {
|
|
2292
2316
|
|
|
2293
2317
|
constructor(workerData, { readable, writable }, { options, config, streamOptions, useWebWorkers, transferStreams, workerURI }, onTaskFinished) {
|
|
@@ -2381,7 +2405,7 @@ function createWorkerInterface(workerData, config) {
|
|
|
2381
2405
|
}
|
|
2382
2406
|
|
|
2383
2407
|
function createWebWorkerInterface(workerData, config) {
|
|
2384
|
-
const { baseURI, chunkSize } = config;
|
|
2408
|
+
const { baseURI, chunkSize, workerStartupTimeout } = config;
|
|
2385
2409
|
let { wasmURI } = config;
|
|
2386
2410
|
|
|
2387
2411
|
if (!workerData.interface) {
|
|
@@ -2398,9 +2422,26 @@ function createWebWorkerInterface(workerData, config) {
|
|
|
2398
2422
|
}
|
|
2399
2423
|
Object.assign(workerData, {
|
|
2400
2424
|
worker,
|
|
2425
|
+
workerAlive: false,
|
|
2401
2426
|
terminated: false,
|
|
2402
2427
|
interface: {
|
|
2403
|
-
run: () =>
|
|
2428
|
+
run: async () => {
|
|
2429
|
+
try {
|
|
2430
|
+
return await runWebWorker(workerData, { chunkSize, wasmURI, baseURI, workerStartupTimeout });
|
|
2431
|
+
} catch (error) {
|
|
2432
|
+
if (error && error.workerStartupFailed) {
|
|
2433
|
+
webWorkerSupported = false;
|
|
2434
|
+
const { reader } = workerData;
|
|
2435
|
+
if (reader) {
|
|
2436
|
+
reader.releaseLock();
|
|
2437
|
+
}
|
|
2438
|
+
workerData.reader = null;
|
|
2439
|
+
workerData.writer = null;
|
|
2440
|
+
return runWorker$1(workerData, config);
|
|
2441
|
+
}
|
|
2442
|
+
throw error;
|
|
2443
|
+
}
|
|
2444
|
+
}
|
|
2404
2445
|
}
|
|
2405
2446
|
});
|
|
2406
2447
|
}
|
|
@@ -2410,15 +2451,23 @@ function createWebWorkerInterface(workerData, config) {
|
|
|
2410
2451
|
async function runWorker$1({ options, readable, writable, onTaskFinished }, config) {
|
|
2411
2452
|
let codecStream;
|
|
2412
2453
|
try {
|
|
2413
|
-
if (!options.
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
config
|
|
2420
|
-
|
|
2421
|
-
|
|
2454
|
+
if (options.compressed && !options.format) {
|
|
2455
|
+
const deflate = options.codecType.startsWith(CODEC_DEFLATE);
|
|
2456
|
+
const ZlibStream = deflate ? config.CompressionStreamZlib : config.DecompressionStreamZlib;
|
|
2457
|
+
const NativeStream = deflate ? config.CompressionStream : config.DecompressionStream;
|
|
2458
|
+
if (!options.useCompressionStream) {
|
|
2459
|
+
try {
|
|
2460
|
+
await initModule$1(config);
|
|
2461
|
+
} catch {
|
|
2462
|
+
if (!ZlibStream || ZlibStream.requiresModule) {
|
|
2463
|
+
options.useCompressionStream = true;
|
|
2464
|
+
}
|
|
2465
|
+
}
|
|
2466
|
+
} else if (ZlibStream && ZlibStream.requiresModule && !supportsDeflateRaw(NativeStream)) {
|
|
2467
|
+
try {
|
|
2468
|
+
await initModule$1(config);
|
|
2469
|
+
} catch {
|
|
2470
|
+
// ignored
|
|
2422
2471
|
}
|
|
2423
2472
|
}
|
|
2424
2473
|
}
|
|
@@ -2487,6 +2536,10 @@ async function runWebWorker(workerData, config) {
|
|
|
2487
2536
|
writer: writable.getWriter()
|
|
2488
2537
|
});
|
|
2489
2538
|
}
|
|
2539
|
+
const { workerStartupTimeout } = config;
|
|
2540
|
+
if (!workerData.workerAlive && Number.isFinite(workerStartupTimeout) && workerStartupTimeout >= 0) {
|
|
2541
|
+
workerData.startupTimeout = setTimeout(() => onStartupTimeout(workerData), workerStartupTimeout);
|
|
2542
|
+
}
|
|
2490
2543
|
try {
|
|
2491
2544
|
const resultValue = await result;
|
|
2492
2545
|
await closeWritable();
|
|
@@ -2599,28 +2652,68 @@ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true)
|
|
|
2599
2652
|
} else {
|
|
2600
2653
|
worker = new Worker(webWorkerURI, webWorkerOptions);
|
|
2601
2654
|
}
|
|
2602
|
-
worker.addEventListener(MESSAGE_EVENT_TYPE, event =>
|
|
2655
|
+
worker.addEventListener(MESSAGE_EVENT_TYPE, event => {
|
|
2656
|
+
workerData.workerAlive = true;
|
|
2657
|
+
clearStartupTimeout(workerData);
|
|
2658
|
+
onMessage(event, workerData);
|
|
2659
|
+
});
|
|
2603
2660
|
worker.addEventListener(ERROR_EVENT_TYPE, event => onWorkerError(event, workerData));
|
|
2604
2661
|
worker.addEventListener(MESSAGE_ERROR_EVENT_TYPE, event => onWorkerError(event, workerData));
|
|
2605
2662
|
return worker;
|
|
2606
2663
|
}
|
|
2607
2664
|
|
|
2665
|
+
function onStartupTimeout(workerData) {
|
|
2666
|
+
workerData.startupTimeout = null;
|
|
2667
|
+
if (workerData.workerAlive) {
|
|
2668
|
+
return;
|
|
2669
|
+
}
|
|
2670
|
+
const { rejectResult, writer } = workerData;
|
|
2671
|
+
terminateWorker$1(workerData);
|
|
2672
|
+
workerData.worker = null;
|
|
2673
|
+
if (rejectResult) {
|
|
2674
|
+
const error = new Error(ERR_WORKER_STARTUP_TIMEOUT);
|
|
2675
|
+
error.workerStartupFailed = true;
|
|
2676
|
+
rejectResult(error);
|
|
2677
|
+
if (writer) {
|
|
2678
|
+
writer.releaseLock();
|
|
2679
|
+
}
|
|
2680
|
+
}
|
|
2681
|
+
}
|
|
2682
|
+
|
|
2683
|
+
function clearStartupTimeout(workerData) {
|
|
2684
|
+
const { startupTimeout } = workerData;
|
|
2685
|
+
if (startupTimeout) {
|
|
2686
|
+
clearTimeout(startupTimeout);
|
|
2687
|
+
workerData.startupTimeout = null;
|
|
2688
|
+
}
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2608
2691
|
function onWorkerError(event, workerData) {
|
|
2609
2692
|
if (event.preventDefault) {
|
|
2610
2693
|
event.preventDefault();
|
|
2611
2694
|
}
|
|
2612
|
-
|
|
2695
|
+
clearStartupTimeout(workerData);
|
|
2696
|
+
const { workerAlive, rejectResult, writer, onTaskFinished } = workerData;
|
|
2613
2697
|
terminateWorker$1(workerData);
|
|
2698
|
+
if (!workerAlive) {
|
|
2699
|
+
workerData.worker = null;
|
|
2700
|
+
}
|
|
2614
2701
|
if (rejectResult) {
|
|
2615
|
-
|
|
2702
|
+
let error = event.error || new Error(event.message || ERROR_EVENT_TYPE);
|
|
2703
|
+
if (!workerAlive) {
|
|
2704
|
+
error = Object.assign(new Error(error.message || ERROR_EVENT_TYPE), { workerStartupFailed: true });
|
|
2705
|
+
}
|
|
2706
|
+
rejectResult(error);
|
|
2616
2707
|
if (writer) {
|
|
2617
2708
|
writer.releaseLock();
|
|
2618
2709
|
}
|
|
2619
|
-
|
|
2710
|
+
if (workerAlive) {
|
|
2711
|
+
onTaskFinished();
|
|
2712
|
+
}
|
|
2620
2713
|
}
|
|
2621
2714
|
}
|
|
2622
2715
|
|
|
2623
|
-
function sendMessage(message, { worker, writer, transferStreams }) {
|
|
2716
|
+
function sendMessage(message, { worker, writer, transferStreams, workerAlive }) {
|
|
2624
2717
|
try {
|
|
2625
2718
|
const { value, readable, writable } = message;
|
|
2626
2719
|
const transferables = [];
|
|
@@ -2628,7 +2721,7 @@ function sendMessage(message, { worker, writer, transferStreams }) {
|
|
|
2628
2721
|
message.value = toExactUint8Array(value);
|
|
2629
2722
|
transferables.push(message.value.buffer);
|
|
2630
2723
|
}
|
|
2631
|
-
if (transferStreams && transferStreamsSupported) {
|
|
2724
|
+
if (transferStreams && transferStreamsSupported && workerAlive) {
|
|
2632
2725
|
if (readable) {
|
|
2633
2726
|
transferables.push(readable);
|
|
2634
2727
|
}
|
|
@@ -2866,6 +2959,7 @@ async function terminateWorkers() {
|
|
|
2866
2959
|
clearTerminateTimeout(workerData);
|
|
2867
2960
|
return workerData.terminate();
|
|
2868
2961
|
}));
|
|
2962
|
+
resetWebWorkerSupport();
|
|
2869
2963
|
}
|
|
2870
2964
|
|
|
2871
2965
|
/*
|
|
@@ -3642,7 +3736,7 @@ class SplitDataReader extends Reader {
|
|
|
3642
3736
|
|
|
3643
3737
|
getDiskOffset(diskNumber) {
|
|
3644
3738
|
const { diskOffsets, size } = this;
|
|
3645
|
-
const diskOffset = diskOffsets
|
|
3739
|
+
const diskOffset = diskOffsets[diskNumber];
|
|
3646
3740
|
return diskOffset === UNDEFINED_VALUE ? size : diskOffset;
|
|
3647
3741
|
}
|
|
3648
3742
|
|
|
@@ -4149,6 +4243,7 @@ const ERR_UNSUPPORTED_COMPRESSION$1 = "Compression method not supported";
|
|
|
4149
4243
|
const ERR_SPLIT_ZIP_FILE = "Split zip file";
|
|
4150
4244
|
const ERR_OVERLAPPING_ENTRY = "Overlapping entry found";
|
|
4151
4245
|
const ERR_AMBIGUOUS_ARCHIVE = "Ambiguous archive";
|
|
4246
|
+
const ERR_ENCRYPTED_CENTRAL_DIRECTORY = "Encrypted central directory is not supported";
|
|
4152
4247
|
const CHARSET_UTF8 = "utf-8";
|
|
4153
4248
|
const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
|
|
4154
4249
|
const CHARSET_CP437 = "cp437";
|
|
@@ -4226,6 +4321,7 @@ class ZipReader {
|
|
|
4226
4321
|
let prependedDataLength = 0;
|
|
4227
4322
|
let startOffset;
|
|
4228
4323
|
let zip64EndOfDirectory;
|
|
4324
|
+
let zip64EndOfDirectoryVersion2;
|
|
4229
4325
|
const requiresZip64 = directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || filesLength == MAX_16_BITS || diskNumber == MAX_16_BITS;
|
|
4230
4326
|
if (directoryDataOffset != MAX_32_BITS && diskNumber != MAX_16_BITS) {
|
|
4231
4327
|
directoryDataOffset += getDiskOffset$1(reader, diskNumber);
|
|
@@ -4255,6 +4351,7 @@ class ZipReader {
|
|
|
4255
4351
|
throw new Error(ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND);
|
|
4256
4352
|
}
|
|
4257
4353
|
zip64EndOfDirectory = true;
|
|
4354
|
+
zip64EndOfDirectoryVersion2 = getBigUint64(endOfDirectoryView, 4) > ZIP64_END_OF_CENTRAL_DIR_LENGTH - 12;
|
|
4258
4355
|
if (lastDiskNumber == MAX_16_BITS) {
|
|
4259
4356
|
lastDiskNumber = getUint32(endOfDirectoryView, 16);
|
|
4260
4357
|
} else if (checkAmbiguity && lastDiskNumber != getUint32(endOfDirectoryView, 16)) {
|
|
@@ -4334,6 +4431,9 @@ class ZipReader {
|
|
|
4334
4431
|
for (let indexFile = 0; indexFile < filesLength; indexFile++) {
|
|
4335
4432
|
const fileEntry = new ZipEntry$1(reader, config, zipReader.options);
|
|
4336
4433
|
if (offset + CENTRAL_FILE_HEADER_LENGTH > directoryArray.length || getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE) {
|
|
4434
|
+
if (indexFile == 0 && (zip64EndOfDirectoryVersion2 || detectEncryptedCentralDirectory(directoryView))) {
|
|
4435
|
+
throw new Error(ERR_ENCRYPTED_CENTRAL_DIRECTORY);
|
|
4436
|
+
}
|
|
4337
4437
|
throw new Error(ERR_CENTRAL_DIRECTORY_NOT_FOUND);
|
|
4338
4438
|
}
|
|
4339
4439
|
readCommonHeader(fileEntry, directoryView, offset + 6);
|
|
@@ -4601,6 +4701,9 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
4601
4701
|
fileEntry.zipCrypto = zipCrypto;
|
|
4602
4702
|
}
|
|
4603
4703
|
if (encrypted) {
|
|
4704
|
+
if ((localDirectory.rawBitFlag & BITFLAG_STRONG_ENCRYPTION) == BITFLAG_STRONG_ENCRYPTION) {
|
|
4705
|
+
throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
|
|
4706
|
+
}
|
|
4604
4707
|
if (!zipCrypto && (extraFieldAES.strength < 1 || extraFieldAES.strength > 3)) {
|
|
4605
4708
|
throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
|
|
4606
4709
|
} else if (!password && !rawPassword) {
|
|
@@ -4694,6 +4797,16 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
4694
4797
|
}
|
|
4695
4798
|
};
|
|
4696
4799
|
|
|
4800
|
+
function detectEncryptedCentralDirectory(directoryView) {
|
|
4801
|
+
const maxOffset = Math.min(directoryView.byteLength, 1024) - 3;
|
|
4802
|
+
for (let offset = 0; offset < maxOffset; offset++) {
|
|
4803
|
+
if (getUint32(directoryView, offset) == ARCHIVE_EXTRA_DATA_SIGNATURE) {
|
|
4804
|
+
return true;
|
|
4805
|
+
}
|
|
4806
|
+
}
|
|
4807
|
+
return false;
|
|
4808
|
+
}
|
|
4809
|
+
|
|
4697
4810
|
function readCommonHeader(directory, dataView, offset) {
|
|
4698
4811
|
const rawBitFlag = directory.rawBitFlag = getUint16(dataView, offset + 2);
|
|
4699
4812
|
const encrypted = (rawBitFlag & BITFLAG_ENCRYPTED) == BITFLAG_ENCRYPTED;
|
|
@@ -5208,6 +5321,7 @@ var zipReader = /*#__PURE__*/Object.freeze({
|
|
|
5208
5321
|
ERR_BAD_FORMAT: ERR_BAD_FORMAT,
|
|
5209
5322
|
ERR_CENTRAL_DIRECTORY_NOT_FOUND: ERR_CENTRAL_DIRECTORY_NOT_FOUND,
|
|
5210
5323
|
ERR_ENCRYPTED: ERR_ENCRYPTED,
|
|
5324
|
+
ERR_ENCRYPTED_CENTRAL_DIRECTORY: ERR_ENCRYPTED_CENTRAL_DIRECTORY,
|
|
5211
5325
|
ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND: ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND,
|
|
5212
5326
|
ERR_EOCDR_NOT_FOUND: ERR_EOCDR_NOT_FOUND,
|
|
5213
5327
|
ERR_EXTRAFIELD_ZIP64_NOT_FOUND: ERR_EXTRAFIELD_ZIP64_NOT_FOUND,
|
|
@@ -5620,7 +5734,11 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5620
5734
|
if (versionMadeBy > MAX_16_BITS) {
|
|
5621
5735
|
throw new Error(ERR_INVALID_VERSION);
|
|
5622
5736
|
}
|
|
5623
|
-
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES
|
|
5737
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES);
|
|
5738
|
+
const externalFileAttributesProvided = externalFileAttributes !== UNDEFINED_VALUE;
|
|
5739
|
+
if (!externalFileAttributesProvided) {
|
|
5740
|
+
externalFileAttributes = 0;
|
|
5741
|
+
}
|
|
5624
5742
|
if (!options[PROPERTY_NAME_DIRECTORY] && name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
5625
5743
|
options[PROPERTY_NAME_DIRECTORY] = true;
|
|
5626
5744
|
}
|
|
@@ -5629,13 +5747,13 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5629
5747
|
if (!name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
5630
5748
|
name += DIRECTORY_SIGNATURE;
|
|
5631
5749
|
}
|
|
5632
|
-
if (
|
|
5750
|
+
if (!externalFileAttributesProvided) {
|
|
5633
5751
|
externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
|
|
5634
5752
|
if (!msDosCompatible) {
|
|
5635
5753
|
externalFileAttributes |= (FILE_ATTR_UNIX_TYPE_DIR | FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
5636
5754
|
}
|
|
5637
5755
|
}
|
|
5638
|
-
} else if (!msDosCompatible &&
|
|
5756
|
+
} else if (!msDosCompatible && !externalFileAttributesProvided) {
|
|
5639
5757
|
if (executable) {
|
|
5640
5758
|
externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
5641
5759
|
} else {
|
|
@@ -5644,6 +5762,7 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5644
5762
|
}
|
|
5645
5763
|
let unixExternalUpper;
|
|
5646
5764
|
if (!msDosCompatible) {
|
|
5765
|
+
const unixModeProvided = unixMode !== UNDEFINED_VALUE || Boolean(setuid || setgid || sticky);
|
|
5647
5766
|
unixExternalUpper = (externalFileAttributes >> 16) & MAX_16_BITS;
|
|
5648
5767
|
unixMode = unixMode === UNDEFINED_VALUE ? unixExternalUpper : (unixMode & MAX_16_BITS);
|
|
5649
5768
|
if (setuid) {
|
|
@@ -5661,10 +5780,12 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5661
5780
|
} else {
|
|
5662
5781
|
sticky = Boolean(unixMode & FILE_ATTR_UNIX_STICKY_MASK);
|
|
5663
5782
|
}
|
|
5664
|
-
if (
|
|
5665
|
-
|
|
5783
|
+
if (!externalFileAttributesProvided || unixModeProvided) {
|
|
5784
|
+
if (directory) {
|
|
5785
|
+
unixMode |= FILE_ATTR_UNIX_TYPE_DIR;
|
|
5786
|
+
}
|
|
5787
|
+
externalFileAttributes = ((unixMode & MAX_16_BITS) << 16) | (externalFileAttributes & MAX_16_BITS);
|
|
5666
5788
|
}
|
|
5667
|
-
externalFileAttributes = ((unixMode & MAX_16_BITS) << 16) | (externalFileAttributes & MAX_8_BITS);
|
|
5668
5789
|
}
|
|
5669
5790
|
({ msdosAttributesRaw, msdosAttributes } = normalizeMsdosAttributes(msdosAttributesRaw, msdosAttributes));
|
|
5670
5791
|
if (hasMsDosProvided) {
|
|
@@ -6387,6 +6508,7 @@ function getHeaderInfo(options) {
|
|
|
6387
6508
|
if (extraFieldLength > MAX_16_BITS) {
|
|
6388
6509
|
throw new Error(ERR_INVALID_EXTRAFIELD_DATA);
|
|
6389
6510
|
}
|
|
6511
|
+
const dosLastModDate = new Date(Math.ceil(lastModDate.getTime() / 2000) * 2000);
|
|
6390
6512
|
const {
|
|
6391
6513
|
headerArray,
|
|
6392
6514
|
headerView,
|
|
@@ -6396,7 +6518,7 @@ function getHeaderInfo(options) {
|
|
|
6396
6518
|
bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod),
|
|
6397
6519
|
compressionMethod,
|
|
6398
6520
|
uncompressedSize,
|
|
6399
|
-
lastModDate:
|
|
6521
|
+
lastModDate: dosLastModDate < MIN_DATE ? MIN_DATE : dosLastModDate > MAX_DATE ? MAX_DATE : dosLastModDate,
|
|
6400
6522
|
rawFilename,
|
|
6401
6523
|
zip64CompressedSize,
|
|
6402
6524
|
zip64UncompressedSize,
|
|
@@ -10526,6 +10648,7 @@ exports.ERR_BAD_FORMAT = ERR_BAD_FORMAT;
|
|
|
10526
10648
|
exports.ERR_CENTRAL_DIRECTORY_NOT_FOUND = ERR_CENTRAL_DIRECTORY_NOT_FOUND;
|
|
10527
10649
|
exports.ERR_DUPLICATED_NAME = ERR_DUPLICATED_NAME;
|
|
10528
10650
|
exports.ERR_ENCRYPTED = ERR_ENCRYPTED;
|
|
10651
|
+
exports.ERR_ENCRYPTED_CENTRAL_DIRECTORY = ERR_ENCRYPTED_CENTRAL_DIRECTORY;
|
|
10529
10652
|
exports.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND = ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND;
|
|
10530
10653
|
exports.ERR_EOCDR_NOT_FOUND = ERR_EOCDR_NOT_FOUND;
|
|
10531
10654
|
exports.ERR_EXTRAFIELD_ZIP64_NOT_FOUND = ERR_EXTRAFIELD_ZIP64_NOT_FOUND;
|
package/index.d.cts
CHANGED
|
@@ -280,6 +280,14 @@ export interface Configuration extends WorkerConfiguration {
|
|
|
280
280
|
* @defaultValue 5000
|
|
281
281
|
*/
|
|
282
282
|
workerStarvationTimeout?: number;
|
|
283
|
+
/**
|
|
284
|
+
* The delay in milliseconds before a newly created web worker which has not sent any message is considered dead, terminated, and replaced with inline processing.
|
|
285
|
+
*
|
|
286
|
+
* It allows recovering from environments where web workers fail silently, e.g. extension pages blocking worker scripts via their Content Security Policy.
|
|
287
|
+
*
|
|
288
|
+
* @defaultValue 5000
|
|
289
|
+
*/
|
|
290
|
+
workerStartupTimeout?: number;
|
|
283
291
|
/**
|
|
284
292
|
* The URI of the web worker.
|
|
285
293
|
*
|
|
@@ -1481,7 +1489,9 @@ export interface EntryMetaData {
|
|
|
1481
1489
|
*
|
|
1482
1490
|
* - Writer vs Reader:
|
|
1483
1491
|
* - The writer composes `externalFileAttributes` from the provided options (`externalFileAttributes`,
|
|
1484
|
-
* `unixMode`/special flags, `msdosAttributesRaw`/`msdosAttributes`).
|
|
1492
|
+
* `unixMode`/special flags, `msdosAttributesRaw`/`msdosAttributes`). An explicitly provided
|
|
1493
|
+
* `externalFileAttributes` value is written verbatim (including `0`) unless mode-affecting options
|
|
1494
|
+
* are also set.
|
|
1485
1495
|
* - The reader decodes the stored `externalFileAttributes` and exposes convenience fields such as
|
|
1486
1496
|
* `msdosAttributesRaw`, `msdosAttributes`, `unixExternalUpper`, and `unixMode`.
|
|
1487
1497
|
*
|
|
@@ -2105,7 +2115,10 @@ export interface ZipWriterConstructorOptions extends WorkerConfiguration {
|
|
|
2105
2115
|
/**
|
|
2106
2116
|
* The external file attribute.
|
|
2107
2117
|
*
|
|
2108
|
-
*
|
|
2118
|
+
* When set explicitly, the value is written verbatim (including `0`), unless `unixMode`, `setuid`, `setgid`
|
|
2119
|
+
* or `sticky` is also set, in which case these options override the upper 16 bits while the lower 16 bits
|
|
2120
|
+
* are preserved. When omitted, the value is derived from the other options (e.g. the MS-DOS directory
|
|
2121
|
+
* attribute for folder entries, Unix default permissions when `msDosCompatible` is `false`).
|
|
2109
2122
|
*/
|
|
2110
2123
|
externalFileAttributes?: number;
|
|
2111
2124
|
/**
|
|
@@ -2994,6 +3007,13 @@ export const ERR_OVERLAPPING_ENTRY: string;
|
|
|
2994
3007
|
* @remarks The thrown error carries a `reason` property describing the ambiguity: `"appended data"`, `"prepended data"`, `"trailing central directory data"`, `"mismatched zip64 end of central directory record"`, or `"duplicate filename"`.
|
|
2995
3008
|
*/
|
|
2996
3009
|
export const ERR_AMBIGUOUS_ARCHIVE: string;
|
|
3010
|
+
/**
|
|
3011
|
+
* Encrypted central directory error
|
|
3012
|
+
*
|
|
3013
|
+
* @remarks Thrown when reading an archive using the Central Directory Encryption feature of the PKWARE Strong
|
|
3014
|
+
* Encryption Specification, which is not supported.
|
|
3015
|
+
*/
|
|
3016
|
+
export const ERR_ENCRYPTED_CENTRAL_DIRECTORY: string;
|
|
2997
3017
|
/**
|
|
2998
3018
|
* Iteration completed too soon error
|
|
2999
3019
|
*/
|
package/index.d.ts
CHANGED
|
@@ -280,6 +280,14 @@ export interface Configuration extends WorkerConfiguration {
|
|
|
280
280
|
* @defaultValue 5000
|
|
281
281
|
*/
|
|
282
282
|
workerStarvationTimeout?: number;
|
|
283
|
+
/**
|
|
284
|
+
* The delay in milliseconds before a newly created web worker which has not sent any message is considered dead, terminated, and replaced with inline processing.
|
|
285
|
+
*
|
|
286
|
+
* It allows recovering from environments where web workers fail silently, e.g. extension pages blocking worker scripts via their Content Security Policy.
|
|
287
|
+
*
|
|
288
|
+
* @defaultValue 5000
|
|
289
|
+
*/
|
|
290
|
+
workerStartupTimeout?: number;
|
|
283
291
|
/**
|
|
284
292
|
* The URI of the web worker.
|
|
285
293
|
*
|
|
@@ -1481,7 +1489,9 @@ export interface EntryMetaData {
|
|
|
1481
1489
|
*
|
|
1482
1490
|
* - Writer vs Reader:
|
|
1483
1491
|
* - The writer composes `externalFileAttributes` from the provided options (`externalFileAttributes`,
|
|
1484
|
-
* `unixMode`/special flags, `msdosAttributesRaw`/`msdosAttributes`).
|
|
1492
|
+
* `unixMode`/special flags, `msdosAttributesRaw`/`msdosAttributes`). An explicitly provided
|
|
1493
|
+
* `externalFileAttributes` value is written verbatim (including `0`) unless mode-affecting options
|
|
1494
|
+
* are also set.
|
|
1485
1495
|
* - The reader decodes the stored `externalFileAttributes` and exposes convenience fields such as
|
|
1486
1496
|
* `msdosAttributesRaw`, `msdosAttributes`, `unixExternalUpper`, and `unixMode`.
|
|
1487
1497
|
*
|
|
@@ -2105,7 +2115,10 @@ export interface ZipWriterConstructorOptions extends WorkerConfiguration {
|
|
|
2105
2115
|
/**
|
|
2106
2116
|
* The external file attribute.
|
|
2107
2117
|
*
|
|
2108
|
-
*
|
|
2118
|
+
* When set explicitly, the value is written verbatim (including `0`), unless `unixMode`, `setuid`, `setgid`
|
|
2119
|
+
* or `sticky` is also set, in which case these options override the upper 16 bits while the lower 16 bits
|
|
2120
|
+
* are preserved. When omitted, the value is derived from the other options (e.g. the MS-DOS directory
|
|
2121
|
+
* attribute for folder entries, Unix default permissions when `msDosCompatible` is `false`).
|
|
2109
2122
|
*/
|
|
2110
2123
|
externalFileAttributes?: number;
|
|
2111
2124
|
/**
|
|
@@ -2994,6 +3007,13 @@ export const ERR_OVERLAPPING_ENTRY: string;
|
|
|
2994
3007
|
* @remarks The thrown error carries a `reason` property describing the ambiguity: `"appended data"`, `"prepended data"`, `"trailing central directory data"`, `"mismatched zip64 end of central directory record"`, or `"duplicate filename"`.
|
|
2995
3008
|
*/
|
|
2996
3009
|
export const ERR_AMBIGUOUS_ARCHIVE: string;
|
|
3010
|
+
/**
|
|
3011
|
+
* Encrypted central directory error
|
|
3012
|
+
*
|
|
3013
|
+
* @remarks Thrown when reading an archive using the Central Directory Encryption feature of the PKWARE Strong
|
|
3014
|
+
* Encryption Specification, which is not supported.
|
|
3015
|
+
*/
|
|
3016
|
+
export const ERR_ENCRYPTED_CENTRAL_DIRECTORY: string;
|
|
2997
3017
|
/**
|
|
2998
3018
|
* Iteration completed too soon error
|
|
2999
3019
|
*/
|