@zip.js/zip.js 2.8.58 → 2.8.60
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/deno.json +2 -2
- package/dist/zip-core-external.js +295 -57
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +286 -40
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +295 -58
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +5867 -4360
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +295 -58
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +288 -43
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +313 -58
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +288 -42
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +288 -42
- 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 +313 -57
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +288 -43
- package/index-native.min.js +1 -1
- package/index.cjs +313 -58
- package/index.d.cts +318 -2
- package/index.d.ts +318 -2
- package/index.min.js +1 -1
- package/lib/core/codec-registry.js +5 -0
- package/lib/core/compression-methods.js +93 -0
- package/lib/core/constants.js +2 -0
- package/lib/core/options.js +2 -0
- package/lib/core/streams/zip-entry-stream.js +7 -3
- package/lib/core/streams/zlib-wasm/zlib-streams.js +18 -8
- package/lib/core/version.js +31 -0
- 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 +143 -33
- package/lib/core/zip-writer.js +14 -6
- package/lib/zip-core-base.js +7 -0
- package/lib/zip-core-reader.js +16 -1
- package/lib/zip-fs-core.js +32 -0
- package/package.json +3 -3
- package/sync-versions.js +26 -0
package/dist/zip-fs.js
CHANGED
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
const BITFLAG_LEVEL_FAST_MASK = 0b100;
|
|
84
84
|
const BITFLAG_LEVEL_SUPER_FAST_MASK = 0b110;
|
|
85
85
|
const BITFLAG_DATA_DESCRIPTOR = 0b1000;
|
|
86
|
+
const BITFLAG_COMPRESSED_PATCHED_DATA = 0b100000;
|
|
86
87
|
const BITFLAG_STRONG_ENCRYPTION = 0b1000000;
|
|
87
88
|
const BITFLAG_LANG_ENCODING_FLAG = 0b100000000000;
|
|
88
89
|
const BITFLAG_MASKED_LOCAL_HEADERS = 0b10000000000000;
|
|
@@ -200,6 +201,7 @@
|
|
|
200
201
|
const OPTION_USDZ = "usdz";
|
|
201
202
|
const OPTION_UNIX_EXTRA_FIELD_TYPE = "unixExtraFieldType";
|
|
202
203
|
const OPTION_LOCAL_EXTRA_FIELD = "localExtraField";
|
|
204
|
+
const OPTION_CENTRAL_EXTRA_FIELD = "centralExtraField";
|
|
203
205
|
const OPTION_STRICTNESS = "strictness";
|
|
204
206
|
const OPTION_FILENAME_VALIDATION = "filenameValidation";
|
|
205
207
|
const OPTION_NORMALIZE_FILENAME = "normalizeFilename";
|
|
@@ -412,7 +414,7 @@
|
|
|
412
414
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
413
415
|
}
|
|
414
416
|
|
|
415
|
-
const t$1=new Uint8Array(288);t$1.fill(8,0,144),t$1.fill(9,144,256),t$1.fill(7,256,280),t$1.fill(8,280,288),new Uint8Array(30).fill(5);const e$1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n$1=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="Invalid signature",H=j,N="zipjs-abort-check-password";function q(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const G=16,J={name:"PBKDF2"},Q=n.assign({hash:{name:"HMAC"}},J),X=n.assign({iterations:1e3,hash:{name:"SHA-1"}},J),Y=["deriveBits"],Z=[8,12,16],$=[16,24,32],tt=10,nt=[0,0,0,0],et=typeof h!=b,st=et&&h.subtle,rt=et&&typeof st!=b,ot=V.bytes,ct=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}},it=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)}},at=E._;let ft=et&&rt&&typeof st.importKey==k,ut=et&&rt&&typeof st.deriveBits==k;class lt extends d{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){ht(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 dt(t,n,e,mt(s,0,Z[n])),c=mt(s,Z[n]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)}(e,i,c,mt(t,0,Z[i]+2)),t=mt(t,Z[i]+2),s?n.error(new r(N)):a()):await f;const u=new o(t.length-tt-(t.length-tt)%G);n.enqueue(pt(e,t,u,0,tt,!0))},async flush(t){const{et:n,st:e,ot:s,ready:o}=this;if(e&&n){await o;const i=mt(s,0,s.length-tt),a=mt(s,s.length-tt);let f=z;if(i.length){const t=gt(ot,i);e.update(t);const s=n.update(t);f=St(ot,s)}const u=mt(St(ot,e.digest()),0,tt);let l=s.length<tt?1:0;for(let t=0;t<tt;t++)l|=u[t]^a[t];if(l&&c)throw new r(H);t.enqueue(f)}}})}}class wt extends d{constructor({password:t,rawPassword:n,encryptionStrength:e}){super({start(){ht(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=q(new o(Z[n]));return W(s,await dt(t,n,e,s))}(e,r,s),c()):await i;const f=new o(a.length+t.length-t.length%G);f.set(a,0),n.enqueue(pt(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(gt(ot,s));e.update(t),o=St(ot,t)}const c=St(ot,e.digest()).slice(0,tt);t.enqueue(W(o,c))}}})}}function ht(t,e,s,r){n.assign(t,{ready:new l(n=>t.nt=n),password:yt(e,s),strength:r-1,ot:z})}function pt(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%G)),l=0;l<=u-G;l+=G){const t=gt(ot,mt(n,l,l+G));c&&a.update(t);const r=i.update(t);c||a.update(r),e.set(St(ot,r),l+s)}return t.ot=mt(n,l),e}async function dt(e,s,r,c){e.password=null;const i=await async function(t,n,e,s,r){if(!ft)return E.importKey(n);try{return await st.importKey("raw",n,e,!1,r)}catch{return ft=!1,E.importKey(n)}}(0,r,Q,0,Y),a=await async function(t,n,e){if(!ut)return E.T(n,t.salt,X.iterations,e);try{return await st.deriveBits(t,n,e)}catch{return ut=!1,E.T(n,t.salt,X.iterations,e)}}(n.assign({salt:c},X),i,8*(2*$[s]+2)),f=new o(a),u=gt(ot,mt(f,0,$[s])),l=gt(ot,mt(f,$[s],2*$[s])),w=mt(f,2*$[s]);return n.assign(e,{keys:{key:u,ct:l,passwordVerification:w},et:new it(new ct(u),t.from(nt)),st:new at(l)}),w}function yt(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 mt(t,n,e){return t.subarray(n,e)}function St(t,n){return t.v(n)}function gt(t,n){return t.C(n)}class vt extends d{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:s}){super({start(){kt(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=zt(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(N)):n.enqueue(zt(e,t))}})}}class bt extends d{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){kt(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=q(new o(12));n[11]=e.passwordVerification,s=new o(t.length+n.length),s.set(Ct(e,n),0),r=12}else s=new o(t.length),r=0;s.set(Ct(e,t),r),n.enqueue(s)}})}}function kt(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++)It(t,s[n]);else for(let n=0;n<e.length;n++)It(t,e.charCodeAt(n))}(t,e,s)}function zt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=At(t)^n[s],It(t,e[s]);return e}function Ct(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=At(t)^n[s],It(t,n[s]);return e}function It(t,n){let[,e]=t.keys;t.it.append([n]);const r=~t.it.get();e=Mt(s.imul(Mt(e+xt(r)),134775813)+1),t.ft.append([e>>>24]);const o=~t.ft.get();t.keys=[r,e,o]}function At(t){const n=2|t.keys[2];return xt(s.imul(n,1^n)>>>8)}function xt(t){return 255&t}function Mt(t){return 4294967295&t}function Pt(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 Bt=new f;function Dt(t){return Bt.get(t)}const Ft="Invalid uncompressed size",Rt=j,Ut="deflate-raw",Wt="gzip",_t=[31,139,8];class Tt 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}=t,p=this;let d,y,m,S=super.readable;const g=w&&Dt(w),v=a&&r&&!l&&!g&&(!o||i)&&Boolean(c&&s);if(o&&!i||!a||v||(d=new U,S=Ht(S,d)),r)if(g)S=Nt(S,Ot(g.CompressionStream,w,{level:f,chunkSize:n,compressionMethod:h}));else if(v)m=new Vt,S=Nt(S,new s(Wt)),S=Ht(S,m);else try{S=jt(S,c,{level:f,chunkSize:n},s,e)}catch(t){let n;try{n=new s(Wt)}catch{throw t}S=Nt(S,n),S=Ht(S,new Vt)}o&&(i?S=Ht(S,new bt(t)):(y=new wt(t),S=Ht(S,y))),Lt(p,S,()=>{o&&!i||!a||(p.crc32=v?m.crc32:new u(d.value.buffer).getUint32(0))})}}class Vt 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 Kt 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=Ht(C,new vt(t)):(z=new lt(t),C=Ht(C,z))),w){const t=m&&Dt(m);if(t)C=Nt(C,Ot(t.DecompressionStream,m,{chunkSize:n,compressionMethod:S,rawBitFlag:g,uncompressedSize:b}));else try{C=jt(C,h,{chunkSize:n,deflate64:p},s,e)}catch(t){if(p||b===v)throw t;let n;try{n=new s(Wt)}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(_t),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=Ht(t,h),Ht(t=Nt(t,n),p);function y(){m(),c=setTimeout(()=>a(new r(Ft)),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=Ht(C,k)),Lt(this,C,()=>{if(a){const t=new u(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r(Rt)}})}}const Et=new f;function Lt(t,e,s){e=Ht(e,new d({flush:s})),n.defineProperty(t,"readable",{get:()=>e})}function Ot(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function jt(t,n,e,s,r){const o=n&&s?s:r||s,c=e.deflate64?"deflate64-raw":Ut;let i;try{i=new o(c,e)}catch(t){if(!n||!r||o==r)throw t;i=new r(c,e)}return Nt(t,i)}function Ht(t,n){return Pt(t).pipeThrough(n)}function Nt(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 qt="data",Gt="close",Jt="deflate";class Qt extends d{constructor(t,e){super({});const s=this,{codecType:o}=t;let c;o.startsWith(Jt)?c=Tt:o.startsWith("inflate")&&(c=Kt),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(Ft)},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 Xt 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 Yt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Yt=navigator.hardwareConcurrency)}catch{}const Zt=new f,$t=new f;let tn,nn,en,sn,rn,on,cn=0;async function an(t){let n,o;try{const{options:c,config:i}=t;if(c.format)try{await async function(t,n){!Bt.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");Bt.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=Et.get(t);e||(e=new f,Et.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(Jt)?i.CompressionStream:i.DecompressionStream,Ut))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?Pt(t.readable):new y({async pull(t){const n=new l(t=>Zt.set(cn,t));fn({type:"pull",messageId:cn}),cn=(cn+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);$t.set(cn,n),fn({type:qt,value:t,messageId:cn}),cn=(cn+1)%e.MAX_SAFE_INTEGER,await s}},a),n=new Qt(c,i),tn=new AbortController;const{signal:w}=tn;await u.pipeThrough(n).pipeThrough(new Xt(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;fn({type:Gt,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{}un(t)}}function fn(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 un(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})}function ln(t,n,e={}){if(!nn){const t=new r("WASM module not loaded");throw t.cause=on,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=en(i),this.in=en(a),this.inBufferSize=a,!this.ut||!this.in)throw new r("allocation failed");if(this.lt=new o(i),t?(this.wt=nn.deflate_process,this.ht=nn.deflate_last_consumed,this.yt=nn.deflate_end,this.St=nn.deflate_new(),e="gzip"===n?nn.deflate_init_gzip(this.St,c):"deflate-raw"===n?nn.deflate_init_raw(this.St,c):nn.deflate_init(this.St,c)):"deflate64-raw"===n?(this.wt=nn.inflate9_process,this.ht=nn.inflate9_last_consumed,this.yt=nn.inflate9_end,this.St=nn.inflate9_new(),e=nn.inflate9_init_raw(this.St)):(this.wt=nn.inflate_process,this.ht=nn.inflate_last_consumed,this.yt=nn.inflate_end,this.St=nn.inflate_new(),e="deflate-raw"===n?nn.inflate_init_raw(this.St):"gzip"===n?nn.inflate_init_gzip(this.St):nn.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(rn.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&&sn&&(sn(this.in),this.in=0),this.in=en(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)break;h+=d}}catch(t){f(this),e.error(t)}},flush(n){try{const e=new o(rn.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&&sn&&sn(t.in),t.in=0,t.ut&&sn&&sn(t.ut),t.ut=0,n}}addEventListener("message",({data:t})=>{const{type:n,messageId:e,value:s,done:r}=t;try{if("start"==n&&an(t),n==qt){const t=Zt.get(e);Zt.delete(e),t({value:s||new o,done:r})}if("ack"==n){const t=$t.get(e);$t.delete(e),t()}n==Gt&&tn.abort()}catch(t){un(t)}}),p({type:"ready"});class wn{constructor(t="deflate",n){return ln(!0,t,n)}}class hn{constructor(t="deflate",n){return ln(!1,t,n)}}wn.gt=!0,hn.gt=!0;let pn=!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:wn,DecompressionStreamFallback:hn,init:t=>async function(t,{baseURI:n}){if(!pn)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(nn=t,({malloc:en,free:sn,memory:rn}=nn),"function"!=typeof en||"function"!=typeof sn||!rn)throw nn=en=sn=rn=null,new r("Invalid WASM module")}((await WebAssembly.instantiate(e)).instance.exports)}(t,n),pn=!0}catch(t){throw function(t){on=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$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+e$1[63&s];}const o=s-r;if(1===o){const s=t[r]<<16;n+=e$1[s>>18&63]+e$1[s>>12&63]+"==";}else if(2===o){const s=t[r]<<16|t[r+1]<<8;n+=e$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+"=";}return n}(s)}});
|
|
417
|
+
const t$1=new Uint8Array(288);t$1.fill(8,0,144),t$1.fill(9,144,256),t$1.fill(7,256,280),t$1.fill(8,280,288),new Uint8Array(30).fill(5);const e$1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n$1=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="Invalid signature",H=j,N="zipjs-abort-check-password";function q(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const G=16,J={name:"PBKDF2"},Q=n.assign({hash:{name:"HMAC"}},J),X=n.assign({iterations:1e3,hash:{name:"SHA-1"}},J),Y=["deriveBits"],Z=[8,12,16],$=[16,24,32],tt=10,nt=[0,0,0,0],et=typeof h!=b,st=et&&h.subtle,rt=et&&typeof st!=b,ot=V.bytes,ct=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}},it=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)}},at=E._;let ft=et&&rt&&typeof st.importKey==k,ut=et&&rt&&typeof st.deriveBits==k;class lt extends d{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){ht(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 dt(t,n,e,mt(s,0,Z[n])),c=mt(s,Z[n]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)}(e,i,c,mt(t,0,Z[i]+2)),t=mt(t,Z[i]+2),s?n.error(new r(N)):a()):await f;const u=new o(t.length-tt-(t.length-tt)%G);n.enqueue(pt(e,t,u,0,tt,!0))},async flush(t){const{et:n,st:e,ot:s,ready:o}=this;if(e&&n){await o;const i=mt(s,0,s.length-tt),a=mt(s,s.length-tt);let f=z;if(i.length){const t=gt(ot,i);e.update(t);const s=n.update(t);f=St(ot,s)}const u=mt(St(ot,e.digest()),0,tt);let l=s.length<tt?1:0;for(let t=0;t<tt;t++)l|=u[t]^a[t];if(l&&c)throw new r(H);t.enqueue(f)}}})}}class wt extends d{constructor({password:t,rawPassword:n,encryptionStrength:e}){super({start(){ht(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=q(new o(Z[n]));return W(s,await dt(t,n,e,s))}(e,r,s),c()):await i;const f=new o(a.length+t.length-t.length%G);f.set(a,0),n.enqueue(pt(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(gt(ot,s));e.update(t),o=St(ot,t)}const c=St(ot,e.digest()).slice(0,tt);t.enqueue(W(o,c))}}})}}function ht(t,e,s,r){n.assign(t,{ready:new l(n=>t.nt=n),password:yt(e,s),strength:r-1,ot:z})}function pt(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%G)),l=0;l<=u-G;l+=G){const t=gt(ot,mt(n,l,l+G));c&&a.update(t);const r=i.update(t);c||a.update(r),e.set(St(ot,r),l+s)}return t.ot=mt(n,l),e}async function dt(e,s,r,c){e.password=null;const i=await async function(t,n,e,s,r){if(!ft)return E.importKey(n);try{return await st.importKey("raw",n,e,!1,r)}catch{return ft=!1,E.importKey(n)}}(0,r,Q,0,Y),a=await async function(t,n,e){if(!ut)return E.T(n,t.salt,X.iterations,e);try{return await st.deriveBits(t,n,e)}catch{return ut=!1,E.T(n,t.salt,X.iterations,e)}}(n.assign({salt:c},X),i,8*(2*$[s]+2)),f=new o(a),u=gt(ot,mt(f,0,$[s])),l=gt(ot,mt(f,$[s],2*$[s])),w=mt(f,2*$[s]);return n.assign(e,{keys:{key:u,ct:l,passwordVerification:w},et:new it(new ct(u),t.from(nt)),st:new at(l)}),w}function yt(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 mt(t,n,e){return t.subarray(n,e)}function St(t,n){return t.v(n)}function gt(t,n){return t.C(n)}class vt extends d{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:s}){super({start(){kt(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=zt(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(N)):n.enqueue(zt(e,t))}})}}class bt extends d{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){kt(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=q(new o(12));n[11]=e.passwordVerification,s=new o(t.length+n.length),s.set(Ct(e,n),0),r=12}else s=new o(t.length),r=0;s.set(Ct(e,t),r),n.enqueue(s)}})}}function kt(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++)It(t,s[n]);else for(let n=0;n<e.length;n++)It(t,e.charCodeAt(n))}(t,e,s)}function zt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=At(t)^n[s],It(t,e[s]);return e}function Ct(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=At(t)^n[s],It(t,n[s]);return e}function It(t,n){let[,e]=t.keys;t.it.append([n]);const r=~t.it.get();e=Mt(s.imul(Mt(e+xt(r)),134775813)+1),t.ft.append([e>>>24]);const o=~t.ft.get();t.keys=[r,e,o]}function At(t){const n=2|t.keys[2];return xt(s.imul(n,1^n)>>>8)}function xt(t){return 255&t}function Mt(t){return 4294967295&t}function Pt(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 Bt=new f;function Dt(t){return Bt.get(t)}const Ft="Invalid uncompressed size",Rt=j,Ut="deflate-raw",Wt="gzip",_t=[31,139,8];class Tt 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&&Dt(w),b=a&&r&&!l&&!v&&(!o||i)&&Boolean(c&&s);if(o&&!i||!a||b||(y=new U,g=Ht(g,y)),r)if(v)g=Nt(g,Ot(v.CompressionStream,w,{level:f,chunkSize:n,compressionMethod:h,uncompressedSize:p}));else if(b)S=new Vt,g=Nt(g,new s(Wt)),g=Ht(g,S);else try{g=jt(g,c,{level:f,chunkSize:n},s,e)}catch(t){let n;try{n=new s(Wt)}catch{throw t}g=Nt(g,n),g=Ht(g,new Vt)}o&&(i?g=Ht(g,new bt(t)):(m=new wt(t),g=Ht(g,m))),Lt(d,g,()=>{o&&!i||!a||(d.crc32=b?S.crc32:new u(y.value.buffer).getUint32(0))})}}class Vt 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 Kt 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=Ht(C,new vt(t)):(z=new lt(t),C=Ht(C,z))),w){const t=m&&Dt(m);if(t)C=Nt(C,Ot(t.DecompressionStream,m,{chunkSize:n,compressionMethod:S,rawBitFlag:g,uncompressedSize:b}));else try{C=jt(C,h,{chunkSize:n,deflate64:p},s,e)}catch(t){if(p||b===v)throw t;let n;try{n=new s(Wt)}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(_t),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=Ht(t,h),Ht(t=Nt(t,n),p);function y(){m(),c=setTimeout(()=>a(new r(Ft)),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=Ht(C,k)),Lt(this,C,()=>{if(a){const t=new u(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r(Rt)}})}}const Et=new f;function Lt(t,e,s){e=Ht(e,new d({flush:s})),n.defineProperty(t,"readable",{get:()=>e})}function Ot(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function jt(t,n,e,s,r){const o=n&&s?s:r||s,c=e.deflate64?"deflate64-raw":Ut;let i;try{i=new o(c,e)}catch(t){if(!n||!r||o==r)throw t;i=new r(c,e)}return Nt(t,i)}function Ht(t,n){return Pt(t).pipeThrough(n)}function Nt(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 qt="data",Gt="close",Jt="deflate";class Qt extends d{constructor(t,e){super({});const s=this,{codecType:o}=t;let c;o.startsWith(Jt)?c=Tt:o.startsWith("inflate")&&(c=Kt),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(Ft)},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 Xt 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 Yt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Yt=navigator.hardwareConcurrency)}catch{}const Zt=new f,$t=new f;let tn,nn=0;async function en(t){let n,o;try{const{options:c,config:i}=t;if(c.format)try{await async function(t,n){!Bt.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");Bt.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=Et.get(t);e||(e=new f,Et.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(Jt)?i.CompressionStream:i.DecompressionStream,Ut))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?Pt(t.readable):new y({async pull(t){const n=new l(t=>Zt.set(nn,t));sn({type:"pull",messageId:nn}),nn=(nn+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);$t.set(nn,n),sn({type:qt,value:t,messageId:nn}),nn=(nn+1)%e.MAX_SAFE_INTEGER,await s}},a),n=new Qt(c,i),tn=new AbortController;const{signal:w}=tn;await u.pipeThrough(n).pipeThrough(new Xt(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;sn({type:Gt,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{}rn(t)}}function sn(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 rn(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&&en(t),n==qt){const t=Zt.get(e);Zt.delete(e),t({value:s||new o,done:r})}if("ack"==n){const t=$t.get(e);$t.delete(e),t()}n==Gt&&tn.abort()}catch(t){rn(t)}}),p({type:"ready"});const on="deflate",cn="deflate-raw",an="deflate64-raw",fn="gzip";let un,ln,wn,hn,pn;function dn(t,n,e={}){if(!un){const t=new r("WASM module not loaded");throw t.cause=pn,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=ln(i),this.in=ln(a),this.inBufferSize=a,!this.ut||!this.in)throw new r("allocation failed");if(this.lt=new o(i),t?(this.wt=un.deflate_process,this.ht=un.deflate_last_consumed,this.yt=un.deflate_end,this.St=un.deflate_new(),e=n===fn?un.deflate_init_gzip(this.St,c):n===cn?un.deflate_init_raw(this.St,c):un.deflate_init(this.St,c)):n===an?(this.wt=un.inflate9_process,this.ht=un.inflate9_last_consumed,this.yt=un.inflate9_end,this.St=un.inflate9_new(),e=un.inflate9_init_raw(this.St)):(this.wt=un.inflate_process,this.ht=un.inflate_last_consumed,this.yt=un.inflate_end,this.St=un.inflate_new(),e=n===cn?un.inflate_init_raw(this.St):n===fn?un.inflate_init_gzip(this.St):un.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(hn.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&&wn&&(wn(this.in),this.in=0),this.in=ln(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)break;h+=d}}catch(t){f(this),e.error(t)}},flush(n){try{const e=new o(hn.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&&wn&&wn(t.in),t.in=0,t.ut&&wn&&wn(t.ut),t.ut=0,n}}class yn{constructor(t=on,n){return dn(!0,t,n)}}class mn{constructor(t=on,n){return dn(!1,t,n)}}yn.gt=!0,mn.gt=!0,yn.vt=[on,cn,fn],mn.vt=[on,cn,fn,an];let Sn=!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:yn,DecompressionStreamFallback:mn,init:t=>async function(t,{baseURI:n}){if(!Sn)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(un=t,({malloc:ln,free:wn,memory:hn}=un),"function"!=typeof ln||"function"!=typeof wn||!hn)throw un=ln=wn=hn=null,new r("Invalid WASM module")}((await WebAssembly.instantiate(e)).instance.exports)}(t,n),Sn=!0}catch(t){throw function(t){pn=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$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+e$1[63&s];}const o=s-r;if(1===o){const s=t[r]<<16;n+=e$1[s>>18&63]+e$1[s>>12&63]+"==";}else if(2===o){const s=t[r]<<16|t[r+1]<<8;n+=e$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+"=";}return n}(s)}});
|
|
416
418
|
|
|
417
419
|
/*
|
|
418
420
|
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
@@ -2082,6 +2084,10 @@
|
|
|
2082
2084
|
return registeredCodecs.get(compressionMethod);
|
|
2083
2085
|
}
|
|
2084
2086
|
|
|
2087
|
+
function getRegisteredCodecs() {
|
|
2088
|
+
return Array.from(registeredCodecs.values(), codec => Object.assign({}, codec, codecStreams.get(codec.format)));
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2085
2091
|
function getCodecStreams(format) {
|
|
2086
2092
|
return codecStreams.get(format);
|
|
2087
2093
|
}
|
|
@@ -2133,9 +2139,9 @@
|
|
|
2133
2139
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
2134
2140
|
const ERR_INVALID_CRC32 = ERR_INVALID_SIGNATURE;
|
|
2135
2141
|
const ERR_UNSUPPORTED_COMPRESSION$2 = "Compression method not supported";
|
|
2136
|
-
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
2137
|
-
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
2138
|
-
const FORMAT_GZIP = "gzip";
|
|
2142
|
+
const FORMAT_DEFLATE_RAW$1 = "deflate-raw";
|
|
2143
|
+
const FORMAT_DEFLATE64_RAW$1 = "deflate64-raw";
|
|
2144
|
+
const FORMAT_GZIP$1 = "gzip";
|
|
2139
2145
|
const GZIP_HEADER_LENGTH = 10;
|
|
2140
2146
|
const GZIP_TRAILER_LENGTH = 8;
|
|
2141
2147
|
const GZIP_HEADER_BYTES = [0x1f, 0x8b, 0x08];
|
|
@@ -2145,7 +2151,7 @@
|
|
|
2145
2151
|
|
|
2146
2152
|
constructor(options, { chunkSize, CompressionStreamFallback, CompressionStream }) {
|
|
2147
2153
|
super({});
|
|
2148
|
-
const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod } = options;
|
|
2154
|
+
const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod, inputSize } = options;
|
|
2149
2155
|
const stream = this;
|
|
2150
2156
|
let crc32Stream, encryptionStream, gzipCrc32Stream;
|
|
2151
2157
|
let readable = super.readable;
|
|
@@ -2158,10 +2164,10 @@
|
|
|
2158
2164
|
}
|
|
2159
2165
|
if (compressed) {
|
|
2160
2166
|
if (codecStreams) {
|
|
2161
|
-
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod }));
|
|
2167
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod, uncompressedSize: inputSize }));
|
|
2162
2168
|
} else if (useGzipCrc32) {
|
|
2163
2169
|
gzipCrc32Stream = new GzipToRawDeflateStream();
|
|
2164
|
-
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
|
|
2170
|
+
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP$1));
|
|
2165
2171
|
readable = pipeThrough(readable, gzipCrc32Stream);
|
|
2166
2172
|
} else {
|
|
2167
2173
|
try {
|
|
@@ -2169,7 +2175,7 @@
|
|
|
2169
2175
|
} catch (error) {
|
|
2170
2176
|
let gzipStream;
|
|
2171
2177
|
try {
|
|
2172
|
-
gzipStream = new CompressionStream(FORMAT_GZIP);
|
|
2178
|
+
gzipStream = new CompressionStream(FORMAT_GZIP$1);
|
|
2173
2179
|
} catch {
|
|
2174
2180
|
throw error;
|
|
2175
2181
|
}
|
|
@@ -2333,7 +2339,7 @@
|
|
|
2333
2339
|
}
|
|
2334
2340
|
let gzipStream;
|
|
2335
2341
|
try {
|
|
2336
|
-
gzipStream = new DecompressionStream(FORMAT_GZIP);
|
|
2342
|
+
gzipStream = new DecompressionStream(FORMAT_GZIP$1);
|
|
2337
2343
|
} catch {
|
|
2338
2344
|
throw error;
|
|
2339
2345
|
}
|
|
@@ -2382,11 +2388,11 @@
|
|
|
2382
2388
|
}
|
|
2383
2389
|
|
|
2384
2390
|
function supportsDeflateRaw(StreamClass) {
|
|
2385
|
-
return supportsFormat(StreamClass, FORMAT_DEFLATE_RAW);
|
|
2391
|
+
return supportsFormat(StreamClass, FORMAT_DEFLATE_RAW$1);
|
|
2386
2392
|
}
|
|
2387
2393
|
|
|
2388
2394
|
function supportsGzip(StreamClass) {
|
|
2389
|
-
return supportsFormat(StreamClass, FORMAT_GZIP);
|
|
2395
|
+
return supportsFormat(StreamClass, FORMAT_GZIP$1);
|
|
2390
2396
|
}
|
|
2391
2397
|
|
|
2392
2398
|
function setReadable(stream, readable, flush) {
|
|
@@ -2409,7 +2415,7 @@
|
|
|
2409
2415
|
const Stream = useCompressionStream && CompressionStreamNative ?
|
|
2410
2416
|
CompressionStreamNative :
|
|
2411
2417
|
CompressionStreamFallback || CompressionStreamNative;
|
|
2412
|
-
const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
|
|
2418
|
+
const format = options.deflate64 ? FORMAT_DEFLATE64_RAW$1 : FORMAT_DEFLATE_RAW$1;
|
|
2413
2419
|
let codecStream;
|
|
2414
2420
|
try {
|
|
2415
2421
|
codecStream = new Stream(format, options);
|
|
@@ -4735,6 +4741,21 @@
|
|
|
4735
4741
|
const ERR_INVALID_FILENAME_VALIDATION = "Invalid filenameValidation (must be 'strict', 'balanced' or 'tolerant')";
|
|
4736
4742
|
const ERR_INVALID_MAX_APPENDED_DATA_SIZE = "Invalid maxAppendedDataSize (must be a number greater than or equal to 0)";
|
|
4737
4743
|
const ERR_UNSUPPORTED_UINT64 = "64-bit value exceeds Number.MAX_SAFE_INTEGER";
|
|
4744
|
+
const WARNING_UNSORTED_CENTRAL_DIRECTORY = "unsorted central directory";
|
|
4745
|
+
const WARNING_UNKNOWN_VERSION = "unknown version needed to extract";
|
|
4746
|
+
const WARNING_COMPRESSED_PATCHED_DATA = "compressed patched data";
|
|
4747
|
+
const WARNING_MALFORMED_EXTRA_FIELD = "malformed extra field";
|
|
4748
|
+
const WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA = "unknown zip64 extensible data";
|
|
4749
|
+
const WARNING_WRAPPED_ENTRIES_COUNT = "wrapped entries count";
|
|
4750
|
+
const WARNING_APPENDED_DATA = "appended data";
|
|
4751
|
+
const WARNING_PREPENDED_DATA = "prepended data";
|
|
4752
|
+
const WARNING_TRAILING_CENTRAL_DIRECTORY_DATA = "trailing central directory data";
|
|
4753
|
+
const WARNING_DUPLICATE_FILENAME = "duplicate filename";
|
|
4754
|
+
const WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY = "mismatched zip64 end of central directory record";
|
|
4755
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG = "mismatched local file header (general purpose bit flag)";
|
|
4756
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD = "mismatched local file header (compression method)";
|
|
4757
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES = "mismatched local file header (crc32 or sizes)";
|
|
4758
|
+
const MAX_KNOWN_VERSION = 63;
|
|
4738
4759
|
const DRIVE_LETTER_REGEXP = /^[a-zA-Z]:/;
|
|
4739
4760
|
const CHARSET_UTF8 = "utf-8";
|
|
4740
4761
|
const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
|
|
@@ -4785,6 +4806,7 @@
|
|
|
4785
4806
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
4786
4807
|
throw new Error(ERR_BAD_FORMAT);
|
|
4787
4808
|
}
|
|
4809
|
+
const warnings = zipReader.warnings = [];
|
|
4788
4810
|
const strictness = getStrictness(options, zipReader.options);
|
|
4789
4811
|
const checkAmbiguity = strictness == STRICTNESS_STRICT;
|
|
4790
4812
|
const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
|
|
@@ -4808,8 +4830,12 @@
|
|
|
4808
4830
|
const commentOffset = endOfDirectoryInfo.offset;
|
|
4809
4831
|
const commentLength = getUint16$1(endOfDirectoryView, 20);
|
|
4810
4832
|
const appendedDataOffset = commentOffset + END_OF_CENTRAL_DIR_LENGTH + commentLength;
|
|
4811
|
-
|
|
4812
|
-
|
|
4833
|
+
const appendedDataLength = reader.size - appendedDataOffset;
|
|
4834
|
+
if (appendedDataLength > maxAppendedDataSize) {
|
|
4835
|
+
throwAmbiguousArchive(WARNING_APPENDED_DATA);
|
|
4836
|
+
}
|
|
4837
|
+
if (appendedDataLength > 0) {
|
|
4838
|
+
addWarning(warnings, WARNING_APPENDED_DATA);
|
|
4813
4839
|
}
|
|
4814
4840
|
let lastDiskNumber = getUint16$1(endOfDirectoryView, 4);
|
|
4815
4841
|
const expectedLastDiskNumber = reader.lastDiskNumber || 0;
|
|
@@ -4863,23 +4889,23 @@
|
|
|
4863
4889
|
}
|
|
4864
4890
|
if (lastDiskNumber == MAX_16_BITS) {
|
|
4865
4891
|
lastDiskNumber = getUint32$1(endOfDirectoryView, 16);
|
|
4866
|
-
} else if (
|
|
4867
|
-
|
|
4892
|
+
} else if (lastDiskNumber != getUint32$1(endOfDirectoryView, 16)) {
|
|
4893
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4868
4894
|
}
|
|
4869
4895
|
if (diskNumber == MAX_16_BITS) {
|
|
4870
4896
|
diskNumber = getUint32$1(endOfDirectoryView, 20);
|
|
4871
|
-
} else if (
|
|
4872
|
-
|
|
4897
|
+
} else if (diskNumber != getUint32$1(endOfDirectoryView, 20)) {
|
|
4898
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4873
4899
|
}
|
|
4874
4900
|
if (filesLength == MAX_16_BITS) {
|
|
4875
4901
|
filesLength = getBigUint64(endOfDirectoryView, 32);
|
|
4876
|
-
} else if (
|
|
4877
|
-
|
|
4902
|
+
} else if (filesLength != getBigUint64(endOfDirectoryView, 32)) {
|
|
4903
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4878
4904
|
}
|
|
4879
4905
|
if (directoryDataLength == MAX_32_BITS) {
|
|
4880
4906
|
directoryDataLength = getBigUint64(endOfDirectoryView, 40);
|
|
4881
|
-
} else if (
|
|
4882
|
-
|
|
4907
|
+
} else if (directoryDataLength != getBigUint64(endOfDirectoryView, 40)) {
|
|
4908
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4883
4909
|
}
|
|
4884
4910
|
directoryDataOffset = getDiskOffset$1(reader, diskNumber) + getBigUint64(endOfDirectoryView, 48) + prependedDataLength;
|
|
4885
4911
|
}
|
|
@@ -4948,14 +4974,22 @@
|
|
|
4948
4974
|
declaredDirectoryDataLength = directoryArray.length;
|
|
4949
4975
|
decryptedDirectory = true;
|
|
4950
4976
|
}
|
|
4977
|
+
if (directoryEncryptionInfo && !decryptedDirectory &&
|
|
4978
|
+
(directoryArray.length < 4 || getUint32$1(directoryView, 0) == CENTRAL_FILE_HEADER_SIGNATURE)) {
|
|
4979
|
+
addWarning(warnings, WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA);
|
|
4980
|
+
}
|
|
4951
4981
|
startOffset = directoryDataOffset;
|
|
4952
4982
|
const filenameEncoding = getOptionValue$1(zipReader, options, OPTION_FILENAME_ENCODING);
|
|
4953
4983
|
const commentEncoding = getOptionValue$1(zipReader, options, OPTION_COMMENT_ENCODING);
|
|
4954
|
-
const filenames =
|
|
4984
|
+
const filenames = new Set();
|
|
4955
4985
|
let duplicateFilename;
|
|
4986
|
+
let previousEntryPosition = -1;
|
|
4956
4987
|
const recoverWrappedFilesLength = !checkAmbiguity && !zip64EndOfDirectory;
|
|
4957
4988
|
if (!filesLength && recoverWrappedFilesLength) {
|
|
4958
4989
|
filesLength = getWrappedFilesLength(directoryView, directoryArray, offset);
|
|
4990
|
+
if (filesLength) {
|
|
4991
|
+
addWarning(warnings, WARNING_WRAPPED_ENTRIES_COUNT);
|
|
4992
|
+
}
|
|
4959
4993
|
}
|
|
4960
4994
|
for (let indexFile = 0; indexFile < filesLength; indexFile++) {
|
|
4961
4995
|
const fileEntry = new ZipEntry$1(reader, zipReader.options);
|
|
@@ -5034,15 +5068,26 @@
|
|
|
5034
5068
|
filename,
|
|
5035
5069
|
comment
|
|
5036
5070
|
});
|
|
5037
|
-
readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6)
|
|
5071
|
+
if (readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6)) {
|
|
5072
|
+
addWarning(warnings, WARNING_MALFORMED_EXTRA_FIELD, filename);
|
|
5073
|
+
}
|
|
5038
5074
|
fileEntry.offset += prependedDataLength;
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5075
|
+
const entryPosition = getDiskOffset$1(reader, fileEntry.diskNumberStart) + fileEntry.offset;
|
|
5076
|
+
startOffset = Math.min(entryPosition, startOffset);
|
|
5077
|
+
if (entryPosition < previousEntryPosition) {
|
|
5078
|
+
addWarning(warnings, WARNING_UNSORTED_CENTRAL_DIRECTORY, filename);
|
|
5079
|
+
}
|
|
5080
|
+
previousEntryPosition = entryPosition;
|
|
5081
|
+
if ((fileEntry.version & MAX_8_BITS) > MAX_KNOWN_VERSION) {
|
|
5082
|
+
addWarning(warnings, WARNING_UNKNOWN_VERSION, filename);
|
|
5045
5083
|
}
|
|
5084
|
+
if ((fileEntry.rawBitFlag & BITFLAG_COMPRESSED_PATCHED_DATA) == BITFLAG_COMPRESSED_PATCHED_DATA) {
|
|
5085
|
+
addWarning(warnings, WARNING_COMPRESSED_PATCHED_DATA, filename);
|
|
5086
|
+
}
|
|
5087
|
+
if (filenames.has(fileEntry.filename)) {
|
|
5088
|
+
duplicateFilename = true;
|
|
5089
|
+
}
|
|
5090
|
+
filenames.add(fileEntry.filename);
|
|
5046
5091
|
const unixExternalUpper = (fileEntry.externalFileAttributes >> 16) & MAX_16_BITS;
|
|
5047
5092
|
if (fileEntry.unixMode === UNDEFINED_VALUE && (unixExternalUpper & (FILE_ATTR_UNIX_DEFAULT_MASK | FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_TYPE_DIR)) != 0) {
|
|
5048
5093
|
fileEntry.unixMode = unixExternalUpper;
|
|
@@ -5080,7 +5125,11 @@
|
|
|
5080
5125
|
};
|
|
5081
5126
|
offset = endOffset;
|
|
5082
5127
|
if (indexFile == filesLength - 1 && recoverWrappedFilesLength) {
|
|
5083
|
-
|
|
5128
|
+
const wrappedFilesLength = getWrappedFilesLength(directoryView, directoryArray, offset);
|
|
5129
|
+
if (wrappedFilesLength) {
|
|
5130
|
+
filesLength += wrappedFilesLength;
|
|
5131
|
+
addWarning(warnings, WARNING_WRAPPED_ENTRIES_COUNT);
|
|
5132
|
+
}
|
|
5084
5133
|
}
|
|
5085
5134
|
const { onprogress } = options;
|
|
5086
5135
|
if (onprogress) {
|
|
@@ -5106,18 +5155,22 @@
|
|
|
5106
5155
|
zipReader.digitalSignature = digitalSignature;
|
|
5107
5156
|
offsetAfterSignature = offset + 6 + digitalSignature.length;
|
|
5108
5157
|
}
|
|
5109
|
-
if (
|
|
5110
|
-
|
|
5158
|
+
if ((offset != declaredDirectoryDataLength && offsetAfterSignature != declaredDirectoryDataLength) ||
|
|
5159
|
+
(!decryptedDirectory && offset != directoryDataLength && offsetAfterSignature != directoryDataLength)) {
|
|
5160
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_TRAILING_CENTRAL_DIRECTORY_DATA);
|
|
5111
5161
|
}
|
|
5112
5162
|
if (duplicateFilename) {
|
|
5113
|
-
|
|
5163
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_DUPLICATE_FILENAME);
|
|
5114
5164
|
}
|
|
5115
5165
|
const extractPrependedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_PREPENDED_DATA);
|
|
5116
5166
|
const extractAppendedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_APPENDED_DATA);
|
|
5117
5167
|
const splitZipSignatureLength = (checkAmbiguity || extractPrependedData) && filesLength &&
|
|
5118
5168
|
startOffset == SPLIT_ZIP_FILE_SIGNATURE_LENGTH && await startsWithSplitZipMarker(reader) ? SPLIT_ZIP_FILE_SIGNATURE_LENGTH : 0;
|
|
5119
5169
|
if (checkAmbiguity && (prependedDataLength || (filesLength && startOffset > splitZipSignatureLength))) {
|
|
5120
|
-
throwAmbiguousArchive(
|
|
5170
|
+
throwAmbiguousArchive(WARNING_PREPENDED_DATA);
|
|
5171
|
+
}
|
|
5172
|
+
if (prependedDataLength || (filesLength && startOffset > SPLIT_ZIP_FILE_SIGNATURE_LENGTH)) {
|
|
5173
|
+
addWarning(warnings, WARNING_PREPENDED_DATA);
|
|
5121
5174
|
}
|
|
5122
5175
|
if (extractPrependedData) {
|
|
5123
5176
|
zipReader.prependedData = startOffset > splitZipSignatureLength ?
|
|
@@ -5187,6 +5240,28 @@
|
|
|
5187
5240
|
}
|
|
5188
5241
|
}
|
|
5189
5242
|
|
|
5243
|
+
async function isZipFile(reader, options = {}) {
|
|
5244
|
+
reader = new GenericReader(reader);
|
|
5245
|
+
await initStream(reader);
|
|
5246
|
+
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
5247
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
5248
|
+
await initStream(reader);
|
|
5249
|
+
}
|
|
5250
|
+
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
5251
|
+
return false;
|
|
5252
|
+
}
|
|
5253
|
+
const strictness = getStrictness(options, {});
|
|
5254
|
+
const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
|
|
5255
|
+
const maxAppendedDataSize = getMaxAppendedDataSize(options[OPTION_MAX_APPENDED_DATA_SIZE], strictness);
|
|
5256
|
+
const { endOfDirectoryInfo, endOfDirectoryReachingEndCount } = await findEndOfCentralDirectory(reader, rejectAmbiguousEndOfDirectory, maxAppendedDataSize);
|
|
5257
|
+
if (!endOfDirectoryInfo || (strictness == STRICTNESS_STRICT && endOfDirectoryReachingEndCount > 1)) {
|
|
5258
|
+
return false;
|
|
5259
|
+
}
|
|
5260
|
+
const commentLength = getUint16$1(getDataView(endOfDirectoryInfo), 20);
|
|
5261
|
+
const appendedDataOffset = endOfDirectoryInfo.offset + END_OF_CENTRAL_DIR_LENGTH + commentLength;
|
|
5262
|
+
return reader.size - appendedDataOffset <= maxAppendedDataSize;
|
|
5263
|
+
}
|
|
5264
|
+
|
|
5190
5265
|
let ZipEntry$1 = class ZipEntry {
|
|
5191
5266
|
|
|
5192
5267
|
constructor(reader, options) {
|
|
@@ -5218,6 +5293,7 @@
|
|
|
5218
5293
|
dataDescriptor
|
|
5219
5294
|
} = bitFlag;
|
|
5220
5295
|
const localDirectory = fileEntry.localDirectory = {};
|
|
5296
|
+
const warnings = fileEntry.warnings = [];
|
|
5221
5297
|
const localHeaderOffset = getDiskOffset$1(reader, diskNumberStart) + offset;
|
|
5222
5298
|
const dataArray = await readUint8Array(reader, localHeaderOffset, HEADER_SIZE);
|
|
5223
5299
|
const dataView = getDataView(dataArray);
|
|
@@ -5258,10 +5334,10 @@
|
|
|
5258
5334
|
if (checkLocalFilename) {
|
|
5259
5335
|
localDirectory.rawFilename = rawLocalFilename;
|
|
5260
5336
|
}
|
|
5261
|
-
readCommonFooter(zipEntry, localDirectory, dataView, 4, true)
|
|
5262
|
-
|
|
5263
|
-
validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename);
|
|
5337
|
+
if (readCommonFooter(zipEntry, localDirectory, dataView, 4, true)) {
|
|
5338
|
+
addWarning(warnings, WARNING_MALFORMED_EXTRA_FIELD);
|
|
5264
5339
|
}
|
|
5340
|
+
validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename, checkLocalDirectory ? UNDEFINED_VALUE : warnings);
|
|
5265
5341
|
const { lastAccessDate, creationDate, uid, gid } = localDirectory;
|
|
5266
5342
|
if (lastAccessDate) {
|
|
5267
5343
|
fileEntry.lastAccessDate = lastAccessDate;
|
|
@@ -5487,6 +5563,7 @@
|
|
|
5487
5563
|
const extraField = directory.extraField = new Map();
|
|
5488
5564
|
const rawExtraFieldView = getDataView(rawExtraField);
|
|
5489
5565
|
let offsetExtraField = 0;
|
|
5566
|
+
let malformedExtraField = false;
|
|
5490
5567
|
try {
|
|
5491
5568
|
while (offsetExtraField < rawExtraField.length) {
|
|
5492
5569
|
const type = getUint16$1(rawExtraFieldView, offsetExtraField);
|
|
@@ -5498,7 +5575,10 @@
|
|
|
5498
5575
|
offsetExtraField += 4 + size;
|
|
5499
5576
|
}
|
|
5500
5577
|
} catch {
|
|
5501
|
-
|
|
5578
|
+
malformedExtraField = true;
|
|
5579
|
+
}
|
|
5580
|
+
if (offsetExtraField > rawExtraField.length) {
|
|
5581
|
+
malformedExtraField = true;
|
|
5502
5582
|
}
|
|
5503
5583
|
const compressionMethod = getUint16$1(dataView, offset + 4);
|
|
5504
5584
|
Object.assign(directory, {
|
|
@@ -5566,6 +5646,7 @@
|
|
|
5566
5646
|
if (extraFieldUSDZ) {
|
|
5567
5647
|
directory.extraFieldUSDZ = extraFieldUSDZ;
|
|
5568
5648
|
}
|
|
5649
|
+
return malformedExtraField;
|
|
5569
5650
|
}
|
|
5570
5651
|
|
|
5571
5652
|
function readExtraFieldZip64(extraFieldZip64, directory) {
|
|
@@ -6027,27 +6108,46 @@
|
|
|
6027
6108
|
return UNDEFINED_VALUE;
|
|
6028
6109
|
}
|
|
6029
6110
|
|
|
6030
|
-
function validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename) {
|
|
6111
|
+
function validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename, warnings) {
|
|
6031
6112
|
const { rawFilename } = zipEntry;
|
|
6113
|
+
const reject = !warnings;
|
|
6032
6114
|
const maskedLocalDirectory = zipEntry.decryptedDirectory &&
|
|
6033
6115
|
(localDirectory.rawBitFlag & BITFLAG_MASKED_LOCAL_HEADERS) == BITFLAG_MASKED_LOCAL_HEADERS;
|
|
6034
6116
|
if (checkLocalFilename && !maskedLocalDirectory &&
|
|
6035
6117
|
(rawLocalFilename.length != rawFilename.length ||
|
|
6036
6118
|
rawLocalFilename.some((byteValue, indexByte) => byteValue != rawFilename[indexByte]))) {
|
|
6037
|
-
|
|
6119
|
+
reportAmbiguity(reject, warnings, "mismatched local file header (filename)");
|
|
6038
6120
|
}
|
|
6039
6121
|
if ((localDirectory.rawBitFlag & BITFLAG_AMBIGUITY_MASK) != (zipEntry.rawBitFlag & BITFLAG_AMBIGUITY_MASK)) {
|
|
6040
|
-
|
|
6122
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG);
|
|
6041
6123
|
}
|
|
6042
6124
|
if (localDirectory.compressionMethod != zipEntry.compressionMethod) {
|
|
6043
|
-
|
|
6125
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD);
|
|
6044
6126
|
}
|
|
6045
6127
|
if (!localDirectory.bitFlag.dataDescriptor && !maskedLocalDirectory &&
|
|
6046
6128
|
(localDirectory.crc32 || localDirectory.compressedSize || localDirectory.uncompressedSize) &&
|
|
6047
6129
|
(localDirectory.crc32 != zipEntry.crc32 ||
|
|
6048
6130
|
localDirectory.compressedSize != zipEntry.compressedSize ||
|
|
6049
6131
|
localDirectory.uncompressedSize != zipEntry.uncompressedSize)) {
|
|
6050
|
-
|
|
6132
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES);
|
|
6133
|
+
}
|
|
6134
|
+
}
|
|
6135
|
+
|
|
6136
|
+
function reportAmbiguity(reject, warnings, reason) {
|
|
6137
|
+
if (reject) {
|
|
6138
|
+
throwAmbiguousArchive(reason);
|
|
6139
|
+
} else {
|
|
6140
|
+
addWarning(warnings, reason);
|
|
6141
|
+
}
|
|
6142
|
+
}
|
|
6143
|
+
|
|
6144
|
+
function addWarning(warnings, reason, filename) {
|
|
6145
|
+
if (!warnings.some(warning => warning.reason == reason)) {
|
|
6146
|
+
const warning = { reason };
|
|
6147
|
+
if (filename !== UNDEFINED_VALUE) {
|
|
6148
|
+
warning.filename = filename;
|
|
6149
|
+
}
|
|
6150
|
+
warnings.push(warning);
|
|
6051
6151
|
}
|
|
6052
6152
|
}
|
|
6053
6153
|
|
|
@@ -6124,8 +6224,23 @@
|
|
|
6124
6224
|
ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
|
|
6125
6225
|
ERR_UNSUPPORTED_UINT64: ERR_UNSUPPORTED_UINT64,
|
|
6126
6226
|
ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
|
|
6227
|
+
WARNING_APPENDED_DATA: WARNING_APPENDED_DATA,
|
|
6228
|
+
WARNING_COMPRESSED_PATCHED_DATA: WARNING_COMPRESSED_PATCHED_DATA,
|
|
6229
|
+
WARNING_DUPLICATE_FILENAME: WARNING_DUPLICATE_FILENAME,
|
|
6230
|
+
WARNING_MALFORMED_EXTRA_FIELD: WARNING_MALFORMED_EXTRA_FIELD,
|
|
6231
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG: WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG,
|
|
6232
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD: WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD,
|
|
6233
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES: WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES,
|
|
6234
|
+
WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY: WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY,
|
|
6235
|
+
WARNING_PREPENDED_DATA: WARNING_PREPENDED_DATA,
|
|
6236
|
+
WARNING_TRAILING_CENTRAL_DIRECTORY_DATA: WARNING_TRAILING_CENTRAL_DIRECTORY_DATA,
|
|
6237
|
+
WARNING_UNKNOWN_VERSION: WARNING_UNKNOWN_VERSION,
|
|
6238
|
+
WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA: WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA,
|
|
6239
|
+
WARNING_UNSORTED_CENTRAL_DIRECTORY: WARNING_UNSORTED_CENTRAL_DIRECTORY,
|
|
6240
|
+
WARNING_WRAPPED_ENTRIES_COUNT: WARNING_WRAPPED_ENTRIES_COUNT,
|
|
6127
6241
|
ZipReader: ZipReader,
|
|
6128
|
-
ZipReaderStream: ZipReaderStream
|
|
6242
|
+
ZipReaderStream: ZipReaderStream,
|
|
6243
|
+
isZipFile: isZipFile
|
|
6129
6244
|
});
|
|
6130
6245
|
|
|
6131
6246
|
/*
|
|
@@ -6338,6 +6453,7 @@
|
|
|
6338
6453
|
rawExtraFieldNTFS: EMPTY_UINT8_ARRAY,
|
|
6339
6454
|
rawExtraFieldUnix: EMPTY_UINT8_ARRAY,
|
|
6340
6455
|
rawExtraField,
|
|
6456
|
+
rawCentralExtraField: EMPTY_UINT8_ARRAY,
|
|
6341
6457
|
extendedTimestamp: false,
|
|
6342
6458
|
headerArray,
|
|
6343
6459
|
headerView
|
|
@@ -6511,7 +6627,6 @@
|
|
|
6511
6627
|
|
|
6512
6628
|
async function addFileEntry(zipWriter, name, reader, options) {
|
|
6513
6629
|
options = Object.assign({}, options);
|
|
6514
|
-
name = name.trim();
|
|
6515
6630
|
if (getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY) && !name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
6516
6631
|
name += DIRECTORY_SIGNATURE;
|
|
6517
6632
|
}
|
|
@@ -6602,7 +6717,6 @@
|
|
|
6602
6717
|
}
|
|
6603
6718
|
|
|
6604
6719
|
function resolveAttributes(zipWriter, name, options) {
|
|
6605
|
-
name = name.trim();
|
|
6606
6720
|
let msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
6607
6721
|
let versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? VERSION_MADE_BY_MSDOS : VERSION_MADE_BY_UNIX);
|
|
6608
6722
|
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
@@ -6807,6 +6921,7 @@
|
|
|
6807
6921
|
}
|
|
6808
6922
|
const rawExtraField = serializeExtraField(options[PROPERTY_NAME_EXTRA_FIELD]);
|
|
6809
6923
|
const rawLocalExtraField = serializeExtraField(options[OPTION_LOCAL_EXTRA_FIELD]);
|
|
6924
|
+
const rawCentralExtraField = serializeExtraField(options[OPTION_CENTRAL_EXTRA_FIELD]);
|
|
6810
6925
|
return {
|
|
6811
6926
|
comment,
|
|
6812
6927
|
resolvedOptions: {
|
|
@@ -6842,7 +6957,8 @@
|
|
|
6842
6957
|
dataDescriptor,
|
|
6843
6958
|
zip64,
|
|
6844
6959
|
rawExtraField,
|
|
6845
|
-
rawLocalExtraField
|
|
6960
|
+
rawLocalExtraField,
|
|
6961
|
+
rawCentralExtraField
|
|
6846
6962
|
}
|
|
6847
6963
|
};
|
|
6848
6964
|
}
|
|
@@ -6984,7 +7100,6 @@
|
|
|
6984
7100
|
let { name } = entry;
|
|
6985
7101
|
const { size } = entry;
|
|
6986
7102
|
const options = Object.assign({}, entry.options);
|
|
6987
|
-
name = name.trim();
|
|
6988
7103
|
if (getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY) && !name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
6989
7104
|
name += DIRECTORY_SIGNATURE;
|
|
6990
7105
|
}
|
|
@@ -7240,6 +7355,7 @@
|
|
|
7240
7355
|
versionMadeBy,
|
|
7241
7356
|
rawComment,
|
|
7242
7357
|
rawExtraField,
|
|
7358
|
+
rawCentralExtraField,
|
|
7243
7359
|
useWebWorkers,
|
|
7244
7360
|
transferStreams,
|
|
7245
7361
|
onstart,
|
|
@@ -7283,6 +7399,7 @@
|
|
|
7283
7399
|
rawExtraFieldUnix,
|
|
7284
7400
|
rawExtraFieldAES,
|
|
7285
7401
|
rawExtraField,
|
|
7402
|
+
rawCentralExtraField,
|
|
7286
7403
|
extendedTimestamp,
|
|
7287
7404
|
msDosCompatible,
|
|
7288
7405
|
internalFileAttributes,
|
|
@@ -7314,6 +7431,7 @@
|
|
|
7314
7431
|
const workerOptions = {
|
|
7315
7432
|
options: {
|
|
7316
7433
|
codecType: CODEC_DEFLATE,
|
|
7434
|
+
inputSize: size,
|
|
7317
7435
|
level,
|
|
7318
7436
|
rawPassword,
|
|
7319
7437
|
password,
|
|
@@ -7783,6 +7901,7 @@
|
|
|
7783
7901
|
rawExtraFieldNTFS,
|
|
7784
7902
|
rawExtraFieldUnix,
|
|
7785
7903
|
rawExtraField,
|
|
7904
|
+
rawCentralExtraField,
|
|
7786
7905
|
extendedTimestamp,
|
|
7787
7906
|
extraFieldExtendedTimestampFlag,
|
|
7788
7907
|
lastModDate,
|
|
@@ -7837,7 +7956,8 @@
|
|
|
7837
7956
|
rawExtraFieldNTFS,
|
|
7838
7957
|
rawExtraFieldUnix,
|
|
7839
7958
|
rawExtraFieldTimestamp,
|
|
7840
|
-
rawExtraField
|
|
7959
|
+
rawExtraField,
|
|
7960
|
+
rawCentralExtraField);
|
|
7841
7961
|
if (extraFieldLength > MAX_16_BITS) {
|
|
7842
7962
|
throw new Error(ERR_INVALID_EXTRAFIELD_DATA);
|
|
7843
7963
|
}
|
|
@@ -7865,6 +7985,7 @@
|
|
|
7865
7985
|
rawExtraFieldNTFS,
|
|
7866
7986
|
rawExtraFieldUnix,
|
|
7867
7987
|
rawExtraField,
|
|
7988
|
+
rawCentralExtraField,
|
|
7868
7989
|
rawComment,
|
|
7869
7990
|
versionMadeBy,
|
|
7870
7991
|
headerArray,
|
|
@@ -7879,7 +8000,7 @@
|
|
|
7879
8000
|
uncompressedSize,
|
|
7880
8001
|
compressedSize
|
|
7881
8002
|
} = fileEntry;
|
|
7882
|
-
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField);
|
|
8003
|
+
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField, rawCentralExtraField);
|
|
7883
8004
|
const directoryRecordLength = CENTRAL_FILE_HEADER_LENGTH + getLength(rawFilename, rawComment) + extraFieldLength;
|
|
7884
8005
|
if (exceedsAvailableSize(writer, offset + directoryRecordLength - directoryDiskOffset)) {
|
|
7885
8006
|
await writeData(writer, directoryArray.slice(directoryDiskOffset, offset));
|
|
@@ -7917,6 +8038,7 @@
|
|
|
7917
8038
|
directoryRecord.writeBytes(rawExtraFieldNTFS);
|
|
7918
8039
|
directoryRecord.writeBytes(rawExtraFieldUnix);
|
|
7919
8040
|
directoryRecord.writeBytes(rawExtraField);
|
|
8041
|
+
directoryRecord.writeBytes(rawCentralExtraField);
|
|
7920
8042
|
directoryRecord.writeBytes(rawComment);
|
|
7921
8043
|
arraySet(directoryArray, directoryRecord.array, offset);
|
|
7922
8044
|
offset += directoryRecordLength;
|
|
@@ -8420,6 +8542,111 @@
|
|
|
8420
8542
|
*/
|
|
8421
8543
|
|
|
8422
8544
|
|
|
8545
|
+
function getSupportedCompressionMethods() {
|
|
8546
|
+
const { CompressionStream, DecompressionStream, CompressionStreamFallback, DecompressionStreamFallback } = getConfiguration();
|
|
8547
|
+
const supportedMethods = [{
|
|
8548
|
+
compressionMethod: COMPRESSION_METHOD_STORE,
|
|
8549
|
+
compression: true,
|
|
8550
|
+
decompression: true,
|
|
8551
|
+
registered: false
|
|
8552
|
+
}, {
|
|
8553
|
+
compressionMethod: COMPRESSION_METHOD_DEFLATE,
|
|
8554
|
+
compression: formatSupported(CompressionStreamFallback, FORMAT_DEFLATE_RAW$1) ||
|
|
8555
|
+
formatSupported(CompressionStream, FORMAT_DEFLATE_RAW$1) || formatSupported(CompressionStream, FORMAT_GZIP$1),
|
|
8556
|
+
decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE_RAW$1) ||
|
|
8557
|
+
formatSupported(DecompressionStream, FORMAT_DEFLATE_RAW$1) || formatSupported(DecompressionStream, FORMAT_GZIP$1),
|
|
8558
|
+
registered: false
|
|
8559
|
+
}, {
|
|
8560
|
+
compressionMethod: COMPRESSION_METHOD_DEFLATE_64,
|
|
8561
|
+
compression: false,
|
|
8562
|
+
decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE64_RAW$1) ||
|
|
8563
|
+
formatSupported(DecompressionStream, FORMAT_DEFLATE64_RAW$1),
|
|
8564
|
+
registered: false
|
|
8565
|
+
}];
|
|
8566
|
+
for (const codec of getRegisteredCodecs()) {
|
|
8567
|
+
const codecStreams = getCodecStreams(codec.format);
|
|
8568
|
+
supportedMethods.push({
|
|
8569
|
+
compressionMethod: codec.compressionMethod,
|
|
8570
|
+
// deno-lint-ignore valid-typeof
|
|
8571
|
+
compression: codecStreams ? typeof codecStreams.CompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
|
|
8572
|
+
// deno-lint-ignore valid-typeof
|
|
8573
|
+
decompression: codecStreams ? typeof codecStreams.DecompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
|
|
8574
|
+
registered: true
|
|
8575
|
+
});
|
|
8576
|
+
}
|
|
8577
|
+
return supportedMethods;
|
|
8578
|
+
}
|
|
8579
|
+
|
|
8580
|
+
function formatSupported(StreamClass, format) {
|
|
8581
|
+
if (!StreamClass) {
|
|
8582
|
+
return false;
|
|
8583
|
+
}
|
|
8584
|
+
const { supportedFormats } = StreamClass;
|
|
8585
|
+
if (supportedFormats) {
|
|
8586
|
+
return supportedFormats.includes(format);
|
|
8587
|
+
}
|
|
8588
|
+
return supportsFormat(StreamClass, format);
|
|
8589
|
+
}
|
|
8590
|
+
|
|
8591
|
+
/*
|
|
8592
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
8593
|
+
|
|
8594
|
+
Redistribution and use in source and binary forms, with or without
|
|
8595
|
+
modification, are permitted provided that the following conditions are met:
|
|
8596
|
+
|
|
8597
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
8598
|
+
this list of conditions and the following disclaimer.
|
|
8599
|
+
|
|
8600
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
8601
|
+
notice, this list of conditions and the following disclaimer in
|
|
8602
|
+
the documentation and/or other materials provided with the distribution.
|
|
8603
|
+
|
|
8604
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
8605
|
+
derived from this software without specific prior written permission.
|
|
8606
|
+
|
|
8607
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
8608
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
8609
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
8610
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
8611
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
8612
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
8613
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
8614
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
8615
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
8616
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8617
|
+
*/
|
|
8618
|
+
|
|
8619
|
+
const VERSION = "2.8.60";
|
|
8620
|
+
|
|
8621
|
+
/*
|
|
8622
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
8623
|
+
|
|
8624
|
+
Redistribution and use in source and binary forms, with or without
|
|
8625
|
+
modification, are permitted provided that the following conditions are met:
|
|
8626
|
+
|
|
8627
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
8628
|
+
this list of conditions and the following disclaimer.
|
|
8629
|
+
|
|
8630
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
8631
|
+
notice, this list of conditions and the following disclaimer in
|
|
8632
|
+
the documentation and/or other materials provided with the distribution.
|
|
8633
|
+
|
|
8634
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
8635
|
+
derived from this software without specific prior written permission.
|
|
8636
|
+
|
|
8637
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
8638
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
8639
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
8640
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
8641
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
8642
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
8643
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
8644
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
8645
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
8646
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8647
|
+
*/
|
|
8648
|
+
|
|
8649
|
+
|
|
8423
8650
|
const DEFAULT_THRESHOLD$2 = 1024 * 1024;
|
|
8424
8651
|
const DEFAULT_DIRECTORY_NAME$1 = ".zip.js-temp";
|
|
8425
8652
|
|
|
@@ -8870,6 +9097,11 @@
|
|
|
8870
9097
|
|
|
8871
9098
|
/* global TransformStream */
|
|
8872
9099
|
|
|
9100
|
+
const FORMAT_DEFLATE = "deflate";
|
|
9101
|
+
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
9102
|
+
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
9103
|
+
const FORMAT_GZIP = "gzip";
|
|
9104
|
+
|
|
8873
9105
|
let wasm, malloc, free, memory, initError;
|
|
8874
9106
|
|
|
8875
9107
|
function setWasmExports(wasmAPI) {
|
|
@@ -8915,15 +9147,15 @@
|
|
|
8915
9147
|
this._last_consumed = wasm.deflate_last_consumed;
|
|
8916
9148
|
this._end = wasm.deflate_end;
|
|
8917
9149
|
this.streamHandle = wasm.deflate_new();
|
|
8918
|
-
if (type ===
|
|
9150
|
+
if (type === FORMAT_GZIP) {
|
|
8919
9151
|
result = wasm.deflate_init_gzip(this.streamHandle, level);
|
|
8920
|
-
} else if (type ===
|
|
9152
|
+
} else if (type === FORMAT_DEFLATE_RAW) {
|
|
8921
9153
|
result = wasm.deflate_init_raw(this.streamHandle, level);
|
|
8922
9154
|
} else {
|
|
8923
9155
|
result = wasm.deflate_init(this.streamHandle, level);
|
|
8924
9156
|
}
|
|
8925
9157
|
} else {
|
|
8926
|
-
if (type ===
|
|
9158
|
+
if (type === FORMAT_DEFLATE64_RAW) {
|
|
8927
9159
|
this._process = wasm.inflate9_process;
|
|
8928
9160
|
this._last_consumed = wasm.inflate9_last_consumed;
|
|
8929
9161
|
this._end = wasm.inflate9_end;
|
|
@@ -8934,9 +9166,9 @@
|
|
|
8934
9166
|
this._last_consumed = wasm.inflate_last_consumed;
|
|
8935
9167
|
this._end = wasm.inflate_end;
|
|
8936
9168
|
this.streamHandle = wasm.inflate_new();
|
|
8937
|
-
if (type ===
|
|
9169
|
+
if (type === FORMAT_DEFLATE_RAW) {
|
|
8938
9170
|
result = wasm.inflate_init_raw(this.streamHandle);
|
|
8939
|
-
} else if (type ===
|
|
9171
|
+
} else if (type === FORMAT_GZIP) {
|
|
8940
9172
|
result = wasm.inflate_init_gzip(this.streamHandle);
|
|
8941
9173
|
} else {
|
|
8942
9174
|
result = wasm.inflate_init(this.streamHandle);
|
|
@@ -9057,12 +9289,12 @@
|
|
|
9057
9289
|
}
|
|
9058
9290
|
|
|
9059
9291
|
class CompressionStreamZlib {
|
|
9060
|
-
constructor(type =
|
|
9292
|
+
constructor(type = FORMAT_DEFLATE, options) {
|
|
9061
9293
|
return _make(true, type, options);
|
|
9062
9294
|
}
|
|
9063
9295
|
}
|
|
9064
9296
|
class DecompressionStreamZlib {
|
|
9065
|
-
constructor(type =
|
|
9297
|
+
constructor(type = FORMAT_DEFLATE, options) {
|
|
9066
9298
|
return _make(false, type, options);
|
|
9067
9299
|
}
|
|
9068
9300
|
}
|
|
@@ -9071,6 +9303,11 @@
|
|
|
9071
9303
|
// module fails to load, rather than discarding a self-contained codec supplied through config.
|
|
9072
9304
|
CompressionStreamZlib.requiresModule = true;
|
|
9073
9305
|
DecompressionStreamZlib.requiresModule = true;
|
|
9306
|
+
// Constructing these classes before the module is loaded throws, so capability probes cannot rely
|
|
9307
|
+
// on trying the constructor; the formats are declared instead, next to the branches implementing
|
|
9308
|
+
// them in _make().
|
|
9309
|
+
CompressionStreamZlib.supportedFormats = [FORMAT_DEFLATE, FORMAT_DEFLATE_RAW, FORMAT_GZIP];
|
|
9310
|
+
DecompressionStreamZlib.supportedFormats = [FORMAT_DEFLATE, FORMAT_DEFLATE_RAW, FORMAT_GZIP, FORMAT_DEFLATE64_RAW];
|
|
9074
9311
|
|
|
9075
9312
|
/*
|
|
9076
9313
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -10741,6 +10978,21 @@
|
|
|
10741
10978
|
exports.TextWriter = TextWriter;
|
|
10742
10979
|
exports.Uint8ArrayReader = Uint8ArrayReader;
|
|
10743
10980
|
exports.Uint8ArrayWriter = Uint8ArrayWriter;
|
|
10981
|
+
exports.VERSION = VERSION;
|
|
10982
|
+
exports.WARNING_APPENDED_DATA = WARNING_APPENDED_DATA;
|
|
10983
|
+
exports.WARNING_COMPRESSED_PATCHED_DATA = WARNING_COMPRESSED_PATCHED_DATA;
|
|
10984
|
+
exports.WARNING_DUPLICATE_FILENAME = WARNING_DUPLICATE_FILENAME;
|
|
10985
|
+
exports.WARNING_MALFORMED_EXTRA_FIELD = WARNING_MALFORMED_EXTRA_FIELD;
|
|
10986
|
+
exports.WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG = WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG;
|
|
10987
|
+
exports.WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD = WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD;
|
|
10988
|
+
exports.WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES = WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES;
|
|
10989
|
+
exports.WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY = WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY;
|
|
10990
|
+
exports.WARNING_PREPENDED_DATA = WARNING_PREPENDED_DATA;
|
|
10991
|
+
exports.WARNING_TRAILING_CENTRAL_DIRECTORY_DATA = WARNING_TRAILING_CENTRAL_DIRECTORY_DATA;
|
|
10992
|
+
exports.WARNING_UNKNOWN_VERSION = WARNING_UNKNOWN_VERSION;
|
|
10993
|
+
exports.WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA = WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA;
|
|
10994
|
+
exports.WARNING_UNSORTED_CENTRAL_DIRECTORY = WARNING_UNSORTED_CENTRAL_DIRECTORY;
|
|
10995
|
+
exports.WARNING_WRAPPED_ENTRIES_COUNT = WARNING_WRAPPED_ENTRIES_COUNT;
|
|
10744
10996
|
exports.Writer = Writer;
|
|
10745
10997
|
exports.ZipDirectoryEntry = ZipDirectoryEntry;
|
|
10746
10998
|
exports.ZipEntry = ZipEntry;
|
|
@@ -10756,6 +11008,9 @@
|
|
|
10756
11008
|
exports.createSyncAccessHandleTempStream = createSyncAccessHandleTempStream;
|
|
10757
11009
|
exports.fs = fs;
|
|
10758
11010
|
exports.getMimeType = getMimeType;
|
|
11011
|
+
exports.getRegisteredCodecs = getRegisteredCodecs;
|
|
11012
|
+
exports.getSupportedCompressionMethods = getSupportedCompressionMethods;
|
|
11013
|
+
exports.isZipFile = isZipFile;
|
|
10759
11014
|
exports.registerCodec = registerCodec;
|
|
10760
11015
|
exports.resetConfiguration = resetConfiguration;
|
|
10761
11016
|
exports.terminateWorkers = terminateWorkersAndModule;
|