@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/index.cjs
CHANGED
|
@@ -77,6 +77,7 @@ const BITFLAG_LEVEL_MAX_MASK = 0b010;
|
|
|
77
77
|
const BITFLAG_LEVEL_FAST_MASK = 0b100;
|
|
78
78
|
const BITFLAG_LEVEL_SUPER_FAST_MASK = 0b110;
|
|
79
79
|
const BITFLAG_DATA_DESCRIPTOR = 0b1000;
|
|
80
|
+
const BITFLAG_COMPRESSED_PATCHED_DATA = 0b100000;
|
|
80
81
|
const BITFLAG_STRONG_ENCRYPTION = 0b1000000;
|
|
81
82
|
const BITFLAG_LANG_ENCODING_FLAG = 0b100000000000;
|
|
82
83
|
const BITFLAG_MASKED_LOCAL_HEADERS = 0b10000000000000;
|
|
@@ -194,6 +195,7 @@ const OPTION_OFFSET = "offset";
|
|
|
194
195
|
const OPTION_USDZ = "usdz";
|
|
195
196
|
const OPTION_UNIX_EXTRA_FIELD_TYPE = "unixExtraFieldType";
|
|
196
197
|
const OPTION_LOCAL_EXTRA_FIELD = "localExtraField";
|
|
198
|
+
const OPTION_CENTRAL_EXTRA_FIELD = "centralExtraField";
|
|
197
199
|
const OPTION_STRICTNESS = "strictness";
|
|
198
200
|
const OPTION_FILENAME_VALIDATION = "filenameValidation";
|
|
199
201
|
const OPTION_NORMALIZE_FILENAME = "normalizeFilename";
|
|
@@ -406,7 +408,7 @@ function resetConfiguration() {
|
|
|
406
408
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
407
409
|
}
|
|
408
410
|
|
|
409
|
-
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)}});
|
|
411
|
+
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)}});
|
|
410
412
|
|
|
411
413
|
/*
|
|
412
414
|
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
@@ -2076,6 +2078,10 @@ function getRegisteredCodec(compressionMethod) {
|
|
|
2076
2078
|
return registeredCodecs.get(compressionMethod);
|
|
2077
2079
|
}
|
|
2078
2080
|
|
|
2081
|
+
function getRegisteredCodecs() {
|
|
2082
|
+
return Array.from(registeredCodecs.values(), codec => Object.assign({}, codec, codecStreams.get(codec.format)));
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2079
2085
|
function getCodecStreams(format) {
|
|
2080
2086
|
return codecStreams.get(format);
|
|
2081
2087
|
}
|
|
@@ -2127,9 +2133,9 @@ const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
|
|
|
2127
2133
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
2128
2134
|
const ERR_INVALID_CRC32 = ERR_INVALID_SIGNATURE;
|
|
2129
2135
|
const ERR_UNSUPPORTED_COMPRESSION$2 = "Compression method not supported";
|
|
2130
|
-
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
2131
|
-
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
2132
|
-
const FORMAT_GZIP = "gzip";
|
|
2136
|
+
const FORMAT_DEFLATE_RAW$1 = "deflate-raw";
|
|
2137
|
+
const FORMAT_DEFLATE64_RAW$1 = "deflate64-raw";
|
|
2138
|
+
const FORMAT_GZIP$1 = "gzip";
|
|
2133
2139
|
const GZIP_HEADER_LENGTH = 10;
|
|
2134
2140
|
const GZIP_TRAILER_LENGTH = 8;
|
|
2135
2141
|
const GZIP_HEADER_BYTES = [0x1f, 0x8b, 0x08];
|
|
@@ -2139,7 +2145,7 @@ class DeflateStream extends TransformStream {
|
|
|
2139
2145
|
|
|
2140
2146
|
constructor(options, { chunkSize, CompressionStreamFallback, CompressionStream }) {
|
|
2141
2147
|
super({});
|
|
2142
|
-
const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod } = options;
|
|
2148
|
+
const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod, inputSize } = options;
|
|
2143
2149
|
const stream = this;
|
|
2144
2150
|
let crc32Stream, encryptionStream, gzipCrc32Stream;
|
|
2145
2151
|
let readable = super.readable;
|
|
@@ -2152,10 +2158,10 @@ class DeflateStream extends TransformStream {
|
|
|
2152
2158
|
}
|
|
2153
2159
|
if (compressed) {
|
|
2154
2160
|
if (codecStreams) {
|
|
2155
|
-
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod }));
|
|
2161
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod, uncompressedSize: inputSize }));
|
|
2156
2162
|
} else if (useGzipCrc32) {
|
|
2157
2163
|
gzipCrc32Stream = new GzipToRawDeflateStream();
|
|
2158
|
-
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
|
|
2164
|
+
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP$1));
|
|
2159
2165
|
readable = pipeThrough(readable, gzipCrc32Stream);
|
|
2160
2166
|
} else {
|
|
2161
2167
|
try {
|
|
@@ -2163,7 +2169,7 @@ class DeflateStream extends TransformStream {
|
|
|
2163
2169
|
} catch (error) {
|
|
2164
2170
|
let gzipStream;
|
|
2165
2171
|
try {
|
|
2166
|
-
gzipStream = new CompressionStream(FORMAT_GZIP);
|
|
2172
|
+
gzipStream = new CompressionStream(FORMAT_GZIP$1);
|
|
2167
2173
|
} catch {
|
|
2168
2174
|
throw error;
|
|
2169
2175
|
}
|
|
@@ -2327,7 +2333,7 @@ class InflateStream extends TransformStream {
|
|
|
2327
2333
|
}
|
|
2328
2334
|
let gzipStream;
|
|
2329
2335
|
try {
|
|
2330
|
-
gzipStream = new DecompressionStream(FORMAT_GZIP);
|
|
2336
|
+
gzipStream = new DecompressionStream(FORMAT_GZIP$1);
|
|
2331
2337
|
} catch {
|
|
2332
2338
|
throw error;
|
|
2333
2339
|
}
|
|
@@ -2376,11 +2382,11 @@ function supportsFormat(StreamClass, format) {
|
|
|
2376
2382
|
}
|
|
2377
2383
|
|
|
2378
2384
|
function supportsDeflateRaw(StreamClass) {
|
|
2379
|
-
return supportsFormat(StreamClass, FORMAT_DEFLATE_RAW);
|
|
2385
|
+
return supportsFormat(StreamClass, FORMAT_DEFLATE_RAW$1);
|
|
2380
2386
|
}
|
|
2381
2387
|
|
|
2382
2388
|
function supportsGzip(StreamClass) {
|
|
2383
|
-
return supportsFormat(StreamClass, FORMAT_GZIP);
|
|
2389
|
+
return supportsFormat(StreamClass, FORMAT_GZIP$1);
|
|
2384
2390
|
}
|
|
2385
2391
|
|
|
2386
2392
|
function setReadable(stream, readable, flush) {
|
|
@@ -2403,7 +2409,7 @@ function pipeThroughCompressionStream(readable, useCompressionStream, options, C
|
|
|
2403
2409
|
const Stream = useCompressionStream && CompressionStreamNative ?
|
|
2404
2410
|
CompressionStreamNative :
|
|
2405
2411
|
CompressionStreamFallback || CompressionStreamNative;
|
|
2406
|
-
const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
|
|
2412
|
+
const format = options.deflate64 ? FORMAT_DEFLATE64_RAW$1 : FORMAT_DEFLATE_RAW$1;
|
|
2407
2413
|
let codecStream;
|
|
2408
2414
|
try {
|
|
2409
2415
|
codecStream = new Stream(format, options);
|
|
@@ -4729,6 +4735,21 @@ const ERR_INVALID_STRICTNESS = "Invalid strictness (must be 'strict', 'balanced'
|
|
|
4729
4735
|
const ERR_INVALID_FILENAME_VALIDATION = "Invalid filenameValidation (must be 'strict', 'balanced' or 'tolerant')";
|
|
4730
4736
|
const ERR_INVALID_MAX_APPENDED_DATA_SIZE = "Invalid maxAppendedDataSize (must be a number greater than or equal to 0)";
|
|
4731
4737
|
const ERR_UNSUPPORTED_UINT64 = "64-bit value exceeds Number.MAX_SAFE_INTEGER";
|
|
4738
|
+
const WARNING_UNSORTED_CENTRAL_DIRECTORY = "unsorted central directory";
|
|
4739
|
+
const WARNING_UNKNOWN_VERSION = "unknown version needed to extract";
|
|
4740
|
+
const WARNING_COMPRESSED_PATCHED_DATA = "compressed patched data";
|
|
4741
|
+
const WARNING_MALFORMED_EXTRA_FIELD = "malformed extra field";
|
|
4742
|
+
const WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA = "unknown zip64 extensible data";
|
|
4743
|
+
const WARNING_WRAPPED_ENTRIES_COUNT = "wrapped entries count";
|
|
4744
|
+
const WARNING_APPENDED_DATA = "appended data";
|
|
4745
|
+
const WARNING_PREPENDED_DATA = "prepended data";
|
|
4746
|
+
const WARNING_TRAILING_CENTRAL_DIRECTORY_DATA = "trailing central directory data";
|
|
4747
|
+
const WARNING_DUPLICATE_FILENAME = "duplicate filename";
|
|
4748
|
+
const WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY = "mismatched zip64 end of central directory record";
|
|
4749
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG = "mismatched local file header (general purpose bit flag)";
|
|
4750
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD = "mismatched local file header (compression method)";
|
|
4751
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES = "mismatched local file header (crc32 or sizes)";
|
|
4752
|
+
const MAX_KNOWN_VERSION = 63;
|
|
4732
4753
|
const DRIVE_LETTER_REGEXP = /^[a-zA-Z]:/;
|
|
4733
4754
|
const CHARSET_UTF8 = "utf-8";
|
|
4734
4755
|
const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
|
|
@@ -4779,6 +4800,7 @@ class ZipReader {
|
|
|
4779
4800
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
4780
4801
|
throw new Error(ERR_BAD_FORMAT);
|
|
4781
4802
|
}
|
|
4803
|
+
const warnings = zipReader.warnings = [];
|
|
4782
4804
|
const strictness = getStrictness(options, zipReader.options);
|
|
4783
4805
|
const checkAmbiguity = strictness == STRICTNESS_STRICT;
|
|
4784
4806
|
const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
|
|
@@ -4802,8 +4824,12 @@ class ZipReader {
|
|
|
4802
4824
|
const commentOffset = endOfDirectoryInfo.offset;
|
|
4803
4825
|
const commentLength = getUint16$1(endOfDirectoryView, 20);
|
|
4804
4826
|
const appendedDataOffset = commentOffset + END_OF_CENTRAL_DIR_LENGTH + commentLength;
|
|
4805
|
-
|
|
4806
|
-
|
|
4827
|
+
const appendedDataLength = reader.size - appendedDataOffset;
|
|
4828
|
+
if (appendedDataLength > maxAppendedDataSize) {
|
|
4829
|
+
throwAmbiguousArchive(WARNING_APPENDED_DATA);
|
|
4830
|
+
}
|
|
4831
|
+
if (appendedDataLength > 0) {
|
|
4832
|
+
addWarning(warnings, WARNING_APPENDED_DATA);
|
|
4807
4833
|
}
|
|
4808
4834
|
let lastDiskNumber = getUint16$1(endOfDirectoryView, 4);
|
|
4809
4835
|
const expectedLastDiskNumber = reader.lastDiskNumber || 0;
|
|
@@ -4857,23 +4883,23 @@ class ZipReader {
|
|
|
4857
4883
|
}
|
|
4858
4884
|
if (lastDiskNumber == MAX_16_BITS) {
|
|
4859
4885
|
lastDiskNumber = getUint32$1(endOfDirectoryView, 16);
|
|
4860
|
-
} else if (
|
|
4861
|
-
|
|
4886
|
+
} else if (lastDiskNumber != getUint32$1(endOfDirectoryView, 16)) {
|
|
4887
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4862
4888
|
}
|
|
4863
4889
|
if (diskNumber == MAX_16_BITS) {
|
|
4864
4890
|
diskNumber = getUint32$1(endOfDirectoryView, 20);
|
|
4865
|
-
} else if (
|
|
4866
|
-
|
|
4891
|
+
} else if (diskNumber != getUint32$1(endOfDirectoryView, 20)) {
|
|
4892
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4867
4893
|
}
|
|
4868
4894
|
if (filesLength == MAX_16_BITS) {
|
|
4869
4895
|
filesLength = getBigUint64(endOfDirectoryView, 32);
|
|
4870
|
-
} else if (
|
|
4871
|
-
|
|
4896
|
+
} else if (filesLength != getBigUint64(endOfDirectoryView, 32)) {
|
|
4897
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4872
4898
|
}
|
|
4873
4899
|
if (directoryDataLength == MAX_32_BITS) {
|
|
4874
4900
|
directoryDataLength = getBigUint64(endOfDirectoryView, 40);
|
|
4875
|
-
} else if (
|
|
4876
|
-
|
|
4901
|
+
} else if (directoryDataLength != getBigUint64(endOfDirectoryView, 40)) {
|
|
4902
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4877
4903
|
}
|
|
4878
4904
|
directoryDataOffset = getDiskOffset$1(reader, diskNumber) + getBigUint64(endOfDirectoryView, 48) + prependedDataLength;
|
|
4879
4905
|
}
|
|
@@ -4942,14 +4968,22 @@ class ZipReader {
|
|
|
4942
4968
|
declaredDirectoryDataLength = directoryArray.length;
|
|
4943
4969
|
decryptedDirectory = true;
|
|
4944
4970
|
}
|
|
4971
|
+
if (directoryEncryptionInfo && !decryptedDirectory &&
|
|
4972
|
+
(directoryArray.length < 4 || getUint32$1(directoryView, 0) == CENTRAL_FILE_HEADER_SIGNATURE)) {
|
|
4973
|
+
addWarning(warnings, WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA);
|
|
4974
|
+
}
|
|
4945
4975
|
startOffset = directoryDataOffset;
|
|
4946
4976
|
const filenameEncoding = getOptionValue$1(zipReader, options, OPTION_FILENAME_ENCODING);
|
|
4947
4977
|
const commentEncoding = getOptionValue$1(zipReader, options, OPTION_COMMENT_ENCODING);
|
|
4948
|
-
const filenames =
|
|
4978
|
+
const filenames = new Set();
|
|
4949
4979
|
let duplicateFilename;
|
|
4980
|
+
let previousEntryPosition = -1;
|
|
4950
4981
|
const recoverWrappedFilesLength = !checkAmbiguity && !zip64EndOfDirectory;
|
|
4951
4982
|
if (!filesLength && recoverWrappedFilesLength) {
|
|
4952
4983
|
filesLength = getWrappedFilesLength(directoryView, directoryArray, offset);
|
|
4984
|
+
if (filesLength) {
|
|
4985
|
+
addWarning(warnings, WARNING_WRAPPED_ENTRIES_COUNT);
|
|
4986
|
+
}
|
|
4953
4987
|
}
|
|
4954
4988
|
for (let indexFile = 0; indexFile < filesLength; indexFile++) {
|
|
4955
4989
|
const fileEntry = new ZipEntry$1(reader, zipReader.options);
|
|
@@ -5028,15 +5062,26 @@ class ZipReader {
|
|
|
5028
5062
|
filename,
|
|
5029
5063
|
comment
|
|
5030
5064
|
});
|
|
5031
|
-
readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6)
|
|
5065
|
+
if (readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6)) {
|
|
5066
|
+
addWarning(warnings, WARNING_MALFORMED_EXTRA_FIELD, filename);
|
|
5067
|
+
}
|
|
5032
5068
|
fileEntry.offset += prependedDataLength;
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5069
|
+
const entryPosition = getDiskOffset$1(reader, fileEntry.diskNumberStart) + fileEntry.offset;
|
|
5070
|
+
startOffset = Math.min(entryPosition, startOffset);
|
|
5071
|
+
if (entryPosition < previousEntryPosition) {
|
|
5072
|
+
addWarning(warnings, WARNING_UNSORTED_CENTRAL_DIRECTORY, filename);
|
|
5073
|
+
}
|
|
5074
|
+
previousEntryPosition = entryPosition;
|
|
5075
|
+
if ((fileEntry.version & MAX_8_BITS) > MAX_KNOWN_VERSION) {
|
|
5076
|
+
addWarning(warnings, WARNING_UNKNOWN_VERSION, filename);
|
|
5039
5077
|
}
|
|
5078
|
+
if ((fileEntry.rawBitFlag & BITFLAG_COMPRESSED_PATCHED_DATA) == BITFLAG_COMPRESSED_PATCHED_DATA) {
|
|
5079
|
+
addWarning(warnings, WARNING_COMPRESSED_PATCHED_DATA, filename);
|
|
5080
|
+
}
|
|
5081
|
+
if (filenames.has(fileEntry.filename)) {
|
|
5082
|
+
duplicateFilename = true;
|
|
5083
|
+
}
|
|
5084
|
+
filenames.add(fileEntry.filename);
|
|
5040
5085
|
const unixExternalUpper = (fileEntry.externalFileAttributes >> 16) & MAX_16_BITS;
|
|
5041
5086
|
if (fileEntry.unixMode === UNDEFINED_VALUE && (unixExternalUpper & (FILE_ATTR_UNIX_DEFAULT_MASK | FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_TYPE_DIR)) != 0) {
|
|
5042
5087
|
fileEntry.unixMode = unixExternalUpper;
|
|
@@ -5074,7 +5119,11 @@ class ZipReader {
|
|
|
5074
5119
|
};
|
|
5075
5120
|
offset = endOffset;
|
|
5076
5121
|
if (indexFile == filesLength - 1 && recoverWrappedFilesLength) {
|
|
5077
|
-
|
|
5122
|
+
const wrappedFilesLength = getWrappedFilesLength(directoryView, directoryArray, offset);
|
|
5123
|
+
if (wrappedFilesLength) {
|
|
5124
|
+
filesLength += wrappedFilesLength;
|
|
5125
|
+
addWarning(warnings, WARNING_WRAPPED_ENTRIES_COUNT);
|
|
5126
|
+
}
|
|
5078
5127
|
}
|
|
5079
5128
|
const { onprogress } = options;
|
|
5080
5129
|
if (onprogress) {
|
|
@@ -5100,18 +5149,22 @@ class ZipReader {
|
|
|
5100
5149
|
zipReader.digitalSignature = digitalSignature;
|
|
5101
5150
|
offsetAfterSignature = offset + 6 + digitalSignature.length;
|
|
5102
5151
|
}
|
|
5103
|
-
if (
|
|
5104
|
-
|
|
5152
|
+
if ((offset != declaredDirectoryDataLength && offsetAfterSignature != declaredDirectoryDataLength) ||
|
|
5153
|
+
(!decryptedDirectory && offset != directoryDataLength && offsetAfterSignature != directoryDataLength)) {
|
|
5154
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_TRAILING_CENTRAL_DIRECTORY_DATA);
|
|
5105
5155
|
}
|
|
5106
5156
|
if (duplicateFilename) {
|
|
5107
|
-
|
|
5157
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_DUPLICATE_FILENAME);
|
|
5108
5158
|
}
|
|
5109
5159
|
const extractPrependedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_PREPENDED_DATA);
|
|
5110
5160
|
const extractAppendedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_APPENDED_DATA);
|
|
5111
5161
|
const splitZipSignatureLength = (checkAmbiguity || extractPrependedData) && filesLength &&
|
|
5112
5162
|
startOffset == SPLIT_ZIP_FILE_SIGNATURE_LENGTH && await startsWithSplitZipMarker(reader) ? SPLIT_ZIP_FILE_SIGNATURE_LENGTH : 0;
|
|
5113
5163
|
if (checkAmbiguity && (prependedDataLength || (filesLength && startOffset > splitZipSignatureLength))) {
|
|
5114
|
-
throwAmbiguousArchive(
|
|
5164
|
+
throwAmbiguousArchive(WARNING_PREPENDED_DATA);
|
|
5165
|
+
}
|
|
5166
|
+
if (prependedDataLength || (filesLength && startOffset > SPLIT_ZIP_FILE_SIGNATURE_LENGTH)) {
|
|
5167
|
+
addWarning(warnings, WARNING_PREPENDED_DATA);
|
|
5115
5168
|
}
|
|
5116
5169
|
if (extractPrependedData) {
|
|
5117
5170
|
zipReader.prependedData = startOffset > splitZipSignatureLength ?
|
|
@@ -5181,6 +5234,28 @@ class ZipReaderStream {
|
|
|
5181
5234
|
}
|
|
5182
5235
|
}
|
|
5183
5236
|
|
|
5237
|
+
async function isZipFile(reader, options = {}) {
|
|
5238
|
+
reader = new GenericReader(reader);
|
|
5239
|
+
await initStream(reader);
|
|
5240
|
+
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
5241
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
5242
|
+
await initStream(reader);
|
|
5243
|
+
}
|
|
5244
|
+
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
5245
|
+
return false;
|
|
5246
|
+
}
|
|
5247
|
+
const strictness = getStrictness(options, {});
|
|
5248
|
+
const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
|
|
5249
|
+
const maxAppendedDataSize = getMaxAppendedDataSize(options[OPTION_MAX_APPENDED_DATA_SIZE], strictness);
|
|
5250
|
+
const { endOfDirectoryInfo, endOfDirectoryReachingEndCount } = await findEndOfCentralDirectory(reader, rejectAmbiguousEndOfDirectory, maxAppendedDataSize);
|
|
5251
|
+
if (!endOfDirectoryInfo || (strictness == STRICTNESS_STRICT && endOfDirectoryReachingEndCount > 1)) {
|
|
5252
|
+
return false;
|
|
5253
|
+
}
|
|
5254
|
+
const commentLength = getUint16$1(getDataView(endOfDirectoryInfo), 20);
|
|
5255
|
+
const appendedDataOffset = endOfDirectoryInfo.offset + END_OF_CENTRAL_DIR_LENGTH + commentLength;
|
|
5256
|
+
return reader.size - appendedDataOffset <= maxAppendedDataSize;
|
|
5257
|
+
}
|
|
5258
|
+
|
|
5184
5259
|
let ZipEntry$1 = class ZipEntry {
|
|
5185
5260
|
|
|
5186
5261
|
constructor(reader, options) {
|
|
@@ -5212,6 +5287,7 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5212
5287
|
dataDescriptor
|
|
5213
5288
|
} = bitFlag;
|
|
5214
5289
|
const localDirectory = fileEntry.localDirectory = {};
|
|
5290
|
+
const warnings = fileEntry.warnings = [];
|
|
5215
5291
|
const localHeaderOffset = getDiskOffset$1(reader, diskNumberStart) + offset;
|
|
5216
5292
|
const dataArray = await readUint8Array(reader, localHeaderOffset, HEADER_SIZE);
|
|
5217
5293
|
const dataView = getDataView(dataArray);
|
|
@@ -5252,10 +5328,10 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5252
5328
|
if (checkLocalFilename) {
|
|
5253
5329
|
localDirectory.rawFilename = rawLocalFilename;
|
|
5254
5330
|
}
|
|
5255
|
-
readCommonFooter(zipEntry, localDirectory, dataView, 4, true)
|
|
5256
|
-
|
|
5257
|
-
validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename);
|
|
5331
|
+
if (readCommonFooter(zipEntry, localDirectory, dataView, 4, true)) {
|
|
5332
|
+
addWarning(warnings, WARNING_MALFORMED_EXTRA_FIELD);
|
|
5258
5333
|
}
|
|
5334
|
+
validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename, checkLocalDirectory ? UNDEFINED_VALUE : warnings);
|
|
5259
5335
|
const { lastAccessDate, creationDate, uid, gid } = localDirectory;
|
|
5260
5336
|
if (lastAccessDate) {
|
|
5261
5337
|
fileEntry.lastAccessDate = lastAccessDate;
|
|
@@ -5481,6 +5557,7 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
|
|
|
5481
5557
|
const extraField = directory.extraField = new Map();
|
|
5482
5558
|
const rawExtraFieldView = getDataView(rawExtraField);
|
|
5483
5559
|
let offsetExtraField = 0;
|
|
5560
|
+
let malformedExtraField = false;
|
|
5484
5561
|
try {
|
|
5485
5562
|
while (offsetExtraField < rawExtraField.length) {
|
|
5486
5563
|
const type = getUint16$1(rawExtraFieldView, offsetExtraField);
|
|
@@ -5492,7 +5569,10 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
|
|
|
5492
5569
|
offsetExtraField += 4 + size;
|
|
5493
5570
|
}
|
|
5494
5571
|
} catch {
|
|
5495
|
-
|
|
5572
|
+
malformedExtraField = true;
|
|
5573
|
+
}
|
|
5574
|
+
if (offsetExtraField > rawExtraField.length) {
|
|
5575
|
+
malformedExtraField = true;
|
|
5496
5576
|
}
|
|
5497
5577
|
const compressionMethod = getUint16$1(dataView, offset + 4);
|
|
5498
5578
|
Object.assign(directory, {
|
|
@@ -5560,6 +5640,7 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
|
|
|
5560
5640
|
if (extraFieldUSDZ) {
|
|
5561
5641
|
directory.extraFieldUSDZ = extraFieldUSDZ;
|
|
5562
5642
|
}
|
|
5643
|
+
return malformedExtraField;
|
|
5563
5644
|
}
|
|
5564
5645
|
|
|
5565
5646
|
function readExtraFieldZip64(extraFieldZip64, directory) {
|
|
@@ -6021,27 +6102,46 @@ async function readSignature(reader, view, anchoredOffset, signatureOffset, size
|
|
|
6021
6102
|
return UNDEFINED_VALUE;
|
|
6022
6103
|
}
|
|
6023
6104
|
|
|
6024
|
-
function validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename) {
|
|
6105
|
+
function validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename, warnings) {
|
|
6025
6106
|
const { rawFilename } = zipEntry;
|
|
6107
|
+
const reject = !warnings;
|
|
6026
6108
|
const maskedLocalDirectory = zipEntry.decryptedDirectory &&
|
|
6027
6109
|
(localDirectory.rawBitFlag & BITFLAG_MASKED_LOCAL_HEADERS) == BITFLAG_MASKED_LOCAL_HEADERS;
|
|
6028
6110
|
if (checkLocalFilename && !maskedLocalDirectory &&
|
|
6029
6111
|
(rawLocalFilename.length != rawFilename.length ||
|
|
6030
6112
|
rawLocalFilename.some((byteValue, indexByte) => byteValue != rawFilename[indexByte]))) {
|
|
6031
|
-
|
|
6113
|
+
reportAmbiguity(reject, warnings, "mismatched local file header (filename)");
|
|
6032
6114
|
}
|
|
6033
6115
|
if ((localDirectory.rawBitFlag & BITFLAG_AMBIGUITY_MASK) != (zipEntry.rawBitFlag & BITFLAG_AMBIGUITY_MASK)) {
|
|
6034
|
-
|
|
6116
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG);
|
|
6035
6117
|
}
|
|
6036
6118
|
if (localDirectory.compressionMethod != zipEntry.compressionMethod) {
|
|
6037
|
-
|
|
6119
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD);
|
|
6038
6120
|
}
|
|
6039
6121
|
if (!localDirectory.bitFlag.dataDescriptor && !maskedLocalDirectory &&
|
|
6040
6122
|
(localDirectory.crc32 || localDirectory.compressedSize || localDirectory.uncompressedSize) &&
|
|
6041
6123
|
(localDirectory.crc32 != zipEntry.crc32 ||
|
|
6042
6124
|
localDirectory.compressedSize != zipEntry.compressedSize ||
|
|
6043
6125
|
localDirectory.uncompressedSize != zipEntry.uncompressedSize)) {
|
|
6044
|
-
|
|
6126
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES);
|
|
6127
|
+
}
|
|
6128
|
+
}
|
|
6129
|
+
|
|
6130
|
+
function reportAmbiguity(reject, warnings, reason) {
|
|
6131
|
+
if (reject) {
|
|
6132
|
+
throwAmbiguousArchive(reason);
|
|
6133
|
+
} else {
|
|
6134
|
+
addWarning(warnings, reason);
|
|
6135
|
+
}
|
|
6136
|
+
}
|
|
6137
|
+
|
|
6138
|
+
function addWarning(warnings, reason, filename) {
|
|
6139
|
+
if (!warnings.some(warning => warning.reason == reason)) {
|
|
6140
|
+
const warning = { reason };
|
|
6141
|
+
if (filename !== UNDEFINED_VALUE) {
|
|
6142
|
+
warning.filename = filename;
|
|
6143
|
+
}
|
|
6144
|
+
warnings.push(warning);
|
|
6045
6145
|
}
|
|
6046
6146
|
}
|
|
6047
6147
|
|
|
@@ -6118,8 +6218,23 @@ var zipReader = /*#__PURE__*/Object.freeze({
|
|
|
6118
6218
|
ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
|
|
6119
6219
|
ERR_UNSUPPORTED_UINT64: ERR_UNSUPPORTED_UINT64,
|
|
6120
6220
|
ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
|
|
6221
|
+
WARNING_APPENDED_DATA: WARNING_APPENDED_DATA,
|
|
6222
|
+
WARNING_COMPRESSED_PATCHED_DATA: WARNING_COMPRESSED_PATCHED_DATA,
|
|
6223
|
+
WARNING_DUPLICATE_FILENAME: WARNING_DUPLICATE_FILENAME,
|
|
6224
|
+
WARNING_MALFORMED_EXTRA_FIELD: WARNING_MALFORMED_EXTRA_FIELD,
|
|
6225
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG: WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG,
|
|
6226
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD: WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD,
|
|
6227
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES: WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES,
|
|
6228
|
+
WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY: WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY,
|
|
6229
|
+
WARNING_PREPENDED_DATA: WARNING_PREPENDED_DATA,
|
|
6230
|
+
WARNING_TRAILING_CENTRAL_DIRECTORY_DATA: WARNING_TRAILING_CENTRAL_DIRECTORY_DATA,
|
|
6231
|
+
WARNING_UNKNOWN_VERSION: WARNING_UNKNOWN_VERSION,
|
|
6232
|
+
WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA: WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA,
|
|
6233
|
+
WARNING_UNSORTED_CENTRAL_DIRECTORY: WARNING_UNSORTED_CENTRAL_DIRECTORY,
|
|
6234
|
+
WARNING_WRAPPED_ENTRIES_COUNT: WARNING_WRAPPED_ENTRIES_COUNT,
|
|
6121
6235
|
ZipReader: ZipReader,
|
|
6122
|
-
ZipReaderStream: ZipReaderStream
|
|
6236
|
+
ZipReaderStream: ZipReaderStream,
|
|
6237
|
+
isZipFile: isZipFile
|
|
6123
6238
|
});
|
|
6124
6239
|
|
|
6125
6240
|
/*
|
|
@@ -6332,6 +6447,7 @@ class ZipWriter {
|
|
|
6332
6447
|
rawExtraFieldNTFS: EMPTY_UINT8_ARRAY,
|
|
6333
6448
|
rawExtraFieldUnix: EMPTY_UINT8_ARRAY,
|
|
6334
6449
|
rawExtraField,
|
|
6450
|
+
rawCentralExtraField: EMPTY_UINT8_ARRAY,
|
|
6335
6451
|
extendedTimestamp: false,
|
|
6336
6452
|
headerArray,
|
|
6337
6453
|
headerView
|
|
@@ -6505,7 +6621,6 @@ async function prependZipEntries(zipWriter, reader) {
|
|
|
6505
6621
|
|
|
6506
6622
|
async function addFileEntry(zipWriter, name, reader, options) {
|
|
6507
6623
|
options = Object.assign({}, options);
|
|
6508
|
-
name = name.trim();
|
|
6509
6624
|
if (getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY) && !name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
6510
6625
|
name += DIRECTORY_SIGNATURE;
|
|
6511
6626
|
}
|
|
@@ -6596,7 +6711,6 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6596
6711
|
}
|
|
6597
6712
|
|
|
6598
6713
|
function resolveAttributes(zipWriter, name, options) {
|
|
6599
|
-
name = name.trim();
|
|
6600
6714
|
let msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
6601
6715
|
let versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? VERSION_MADE_BY_MSDOS : VERSION_MADE_BY_UNIX);
|
|
6602
6716
|
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
@@ -6801,6 +6915,7 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6801
6915
|
}
|
|
6802
6916
|
const rawExtraField = serializeExtraField(options[PROPERTY_NAME_EXTRA_FIELD]);
|
|
6803
6917
|
const rawLocalExtraField = serializeExtraField(options[OPTION_LOCAL_EXTRA_FIELD]);
|
|
6918
|
+
const rawCentralExtraField = serializeExtraField(options[OPTION_CENTRAL_EXTRA_FIELD]);
|
|
6804
6919
|
return {
|
|
6805
6920
|
comment,
|
|
6806
6921
|
resolvedOptions: {
|
|
@@ -6836,7 +6951,8 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6836
6951
|
dataDescriptor,
|
|
6837
6952
|
zip64,
|
|
6838
6953
|
rawExtraField,
|
|
6839
|
-
rawLocalExtraField
|
|
6954
|
+
rawLocalExtraField,
|
|
6955
|
+
rawCentralExtraField
|
|
6840
6956
|
}
|
|
6841
6957
|
};
|
|
6842
6958
|
}
|
|
@@ -6978,7 +7094,6 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
6978
7094
|
let { name } = entry;
|
|
6979
7095
|
const { size } = entry;
|
|
6980
7096
|
const options = Object.assign({}, entry.options);
|
|
6981
|
-
name = name.trim();
|
|
6982
7097
|
if (getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY) && !name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
6983
7098
|
name += DIRECTORY_SIGNATURE;
|
|
6984
7099
|
}
|
|
@@ -7234,6 +7349,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
|
|
|
7234
7349
|
versionMadeBy,
|
|
7235
7350
|
rawComment,
|
|
7236
7351
|
rawExtraField,
|
|
7352
|
+
rawCentralExtraField,
|
|
7237
7353
|
useWebWorkers,
|
|
7238
7354
|
transferStreams,
|
|
7239
7355
|
onstart,
|
|
@@ -7277,6 +7393,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
|
|
|
7277
7393
|
rawExtraFieldUnix,
|
|
7278
7394
|
rawExtraFieldAES,
|
|
7279
7395
|
rawExtraField,
|
|
7396
|
+
rawCentralExtraField,
|
|
7280
7397
|
extendedTimestamp,
|
|
7281
7398
|
msDosCompatible,
|
|
7282
7399
|
internalFileAttributes,
|
|
@@ -7308,6 +7425,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
|
|
|
7308
7425
|
const workerOptions = {
|
|
7309
7426
|
options: {
|
|
7310
7427
|
codecType: CODEC_DEFLATE,
|
|
7428
|
+
inputSize: size,
|
|
7311
7429
|
level,
|
|
7312
7430
|
rawPassword,
|
|
7313
7431
|
password,
|
|
@@ -7777,6 +7895,7 @@ function createDirectoryRecords(files) {
|
|
|
7777
7895
|
rawExtraFieldNTFS,
|
|
7778
7896
|
rawExtraFieldUnix,
|
|
7779
7897
|
rawExtraField,
|
|
7898
|
+
rawCentralExtraField,
|
|
7780
7899
|
extendedTimestamp,
|
|
7781
7900
|
extraFieldExtendedTimestampFlag,
|
|
7782
7901
|
lastModDate,
|
|
@@ -7831,7 +7950,8 @@ function createDirectoryRecords(files) {
|
|
|
7831
7950
|
rawExtraFieldNTFS,
|
|
7832
7951
|
rawExtraFieldUnix,
|
|
7833
7952
|
rawExtraFieldTimestamp,
|
|
7834
|
-
rawExtraField
|
|
7953
|
+
rawExtraField,
|
|
7954
|
+
rawCentralExtraField);
|
|
7835
7955
|
if (extraFieldLength > MAX_16_BITS) {
|
|
7836
7956
|
throw new Error(ERR_INVALID_EXTRAFIELD_DATA);
|
|
7837
7957
|
}
|
|
@@ -7859,6 +7979,7 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
|
|
|
7859
7979
|
rawExtraFieldNTFS,
|
|
7860
7980
|
rawExtraFieldUnix,
|
|
7861
7981
|
rawExtraField,
|
|
7982
|
+
rawCentralExtraField,
|
|
7862
7983
|
rawComment,
|
|
7863
7984
|
versionMadeBy,
|
|
7864
7985
|
headerArray,
|
|
@@ -7873,7 +7994,7 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
|
|
|
7873
7994
|
uncompressedSize,
|
|
7874
7995
|
compressedSize
|
|
7875
7996
|
} = fileEntry;
|
|
7876
|
-
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField);
|
|
7997
|
+
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField, rawCentralExtraField);
|
|
7877
7998
|
const directoryRecordLength = CENTRAL_FILE_HEADER_LENGTH + getLength(rawFilename, rawComment) + extraFieldLength;
|
|
7878
7999
|
if (exceedsAvailableSize(writer, offset + directoryRecordLength - directoryDiskOffset)) {
|
|
7879
8000
|
await writeData(writer, directoryArray.slice(directoryDiskOffset, offset));
|
|
@@ -7911,6 +8032,7 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
|
|
|
7911
8032
|
directoryRecord.writeBytes(rawExtraFieldNTFS);
|
|
7912
8033
|
directoryRecord.writeBytes(rawExtraFieldUnix);
|
|
7913
8034
|
directoryRecord.writeBytes(rawExtraField);
|
|
8035
|
+
directoryRecord.writeBytes(rawCentralExtraField);
|
|
7914
8036
|
directoryRecord.writeBytes(rawComment);
|
|
7915
8037
|
arraySet(directoryArray, directoryRecord.array, offset);
|
|
7916
8038
|
offset += directoryRecordLength;
|
|
@@ -8414,6 +8536,111 @@ function getMimeType$1() {
|
|
|
8414
8536
|
*/
|
|
8415
8537
|
|
|
8416
8538
|
|
|
8539
|
+
function getSupportedCompressionMethods() {
|
|
8540
|
+
const { CompressionStream, DecompressionStream, CompressionStreamFallback, DecompressionStreamFallback } = getConfiguration();
|
|
8541
|
+
const supportedMethods = [{
|
|
8542
|
+
compressionMethod: COMPRESSION_METHOD_STORE,
|
|
8543
|
+
compression: true,
|
|
8544
|
+
decompression: true,
|
|
8545
|
+
registered: false
|
|
8546
|
+
}, {
|
|
8547
|
+
compressionMethod: COMPRESSION_METHOD_DEFLATE,
|
|
8548
|
+
compression: formatSupported(CompressionStreamFallback, FORMAT_DEFLATE_RAW$1) ||
|
|
8549
|
+
formatSupported(CompressionStream, FORMAT_DEFLATE_RAW$1) || formatSupported(CompressionStream, FORMAT_GZIP$1),
|
|
8550
|
+
decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE_RAW$1) ||
|
|
8551
|
+
formatSupported(DecompressionStream, FORMAT_DEFLATE_RAW$1) || formatSupported(DecompressionStream, FORMAT_GZIP$1),
|
|
8552
|
+
registered: false
|
|
8553
|
+
}, {
|
|
8554
|
+
compressionMethod: COMPRESSION_METHOD_DEFLATE_64,
|
|
8555
|
+
compression: false,
|
|
8556
|
+
decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE64_RAW$1) ||
|
|
8557
|
+
formatSupported(DecompressionStream, FORMAT_DEFLATE64_RAW$1),
|
|
8558
|
+
registered: false
|
|
8559
|
+
}];
|
|
8560
|
+
for (const codec of getRegisteredCodecs()) {
|
|
8561
|
+
const codecStreams = getCodecStreams(codec.format);
|
|
8562
|
+
supportedMethods.push({
|
|
8563
|
+
compressionMethod: codec.compressionMethod,
|
|
8564
|
+
// deno-lint-ignore valid-typeof
|
|
8565
|
+
compression: codecStreams ? typeof codecStreams.CompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
|
|
8566
|
+
// deno-lint-ignore valid-typeof
|
|
8567
|
+
decompression: codecStreams ? typeof codecStreams.DecompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
|
|
8568
|
+
registered: true
|
|
8569
|
+
});
|
|
8570
|
+
}
|
|
8571
|
+
return supportedMethods;
|
|
8572
|
+
}
|
|
8573
|
+
|
|
8574
|
+
function formatSupported(StreamClass, format) {
|
|
8575
|
+
if (!StreamClass) {
|
|
8576
|
+
return false;
|
|
8577
|
+
}
|
|
8578
|
+
const { supportedFormats } = StreamClass;
|
|
8579
|
+
if (supportedFormats) {
|
|
8580
|
+
return supportedFormats.includes(format);
|
|
8581
|
+
}
|
|
8582
|
+
return supportsFormat(StreamClass, format);
|
|
8583
|
+
}
|
|
8584
|
+
|
|
8585
|
+
/*
|
|
8586
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
8587
|
+
|
|
8588
|
+
Redistribution and use in source and binary forms, with or without
|
|
8589
|
+
modification, are permitted provided that the following conditions are met:
|
|
8590
|
+
|
|
8591
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
8592
|
+
this list of conditions and the following disclaimer.
|
|
8593
|
+
|
|
8594
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
8595
|
+
notice, this list of conditions and the following disclaimer in
|
|
8596
|
+
the documentation and/or other materials provided with the distribution.
|
|
8597
|
+
|
|
8598
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
8599
|
+
derived from this software without specific prior written permission.
|
|
8600
|
+
|
|
8601
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
8602
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
8603
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
8604
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
8605
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
8606
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
8607
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
8608
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
8609
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
8610
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8611
|
+
*/
|
|
8612
|
+
|
|
8613
|
+
const VERSION = "2.8.60";
|
|
8614
|
+
|
|
8615
|
+
/*
|
|
8616
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
8617
|
+
|
|
8618
|
+
Redistribution and use in source and binary forms, with or without
|
|
8619
|
+
modification, are permitted provided that the following conditions are met:
|
|
8620
|
+
|
|
8621
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
8622
|
+
this list of conditions and the following disclaimer.
|
|
8623
|
+
|
|
8624
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
8625
|
+
notice, this list of conditions and the following disclaimer in
|
|
8626
|
+
the documentation and/or other materials provided with the distribution.
|
|
8627
|
+
|
|
8628
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
8629
|
+
derived from this software without specific prior written permission.
|
|
8630
|
+
|
|
8631
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
8632
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
8633
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
8634
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
8635
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
8636
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
8637
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
8638
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
8639
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
8640
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8641
|
+
*/
|
|
8642
|
+
|
|
8643
|
+
|
|
8417
8644
|
const DEFAULT_THRESHOLD$2 = 1024 * 1024;
|
|
8418
8645
|
const DEFAULT_DIRECTORY_NAME$1 = ".zip.js-temp";
|
|
8419
8646
|
|
|
@@ -8864,6 +9091,11 @@ const n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,1
|
|
|
8864
9091
|
|
|
8865
9092
|
/* global TransformStream */
|
|
8866
9093
|
|
|
9094
|
+
const FORMAT_DEFLATE = "deflate";
|
|
9095
|
+
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
9096
|
+
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
9097
|
+
const FORMAT_GZIP = "gzip";
|
|
9098
|
+
|
|
8867
9099
|
let wasm, malloc, free, memory, initError;
|
|
8868
9100
|
|
|
8869
9101
|
function setWasmExports(wasmAPI) {
|
|
@@ -8909,15 +9141,15 @@ function _make(isCompress, type, options = {}) {
|
|
|
8909
9141
|
this._last_consumed = wasm.deflate_last_consumed;
|
|
8910
9142
|
this._end = wasm.deflate_end;
|
|
8911
9143
|
this.streamHandle = wasm.deflate_new();
|
|
8912
|
-
if (type ===
|
|
9144
|
+
if (type === FORMAT_GZIP) {
|
|
8913
9145
|
result = wasm.deflate_init_gzip(this.streamHandle, level);
|
|
8914
|
-
} else if (type ===
|
|
9146
|
+
} else if (type === FORMAT_DEFLATE_RAW) {
|
|
8915
9147
|
result = wasm.deflate_init_raw(this.streamHandle, level);
|
|
8916
9148
|
} else {
|
|
8917
9149
|
result = wasm.deflate_init(this.streamHandle, level);
|
|
8918
9150
|
}
|
|
8919
9151
|
} else {
|
|
8920
|
-
if (type ===
|
|
9152
|
+
if (type === FORMAT_DEFLATE64_RAW) {
|
|
8921
9153
|
this._process = wasm.inflate9_process;
|
|
8922
9154
|
this._last_consumed = wasm.inflate9_last_consumed;
|
|
8923
9155
|
this._end = wasm.inflate9_end;
|
|
@@ -8928,9 +9160,9 @@ function _make(isCompress, type, options = {}) {
|
|
|
8928
9160
|
this._last_consumed = wasm.inflate_last_consumed;
|
|
8929
9161
|
this._end = wasm.inflate_end;
|
|
8930
9162
|
this.streamHandle = wasm.inflate_new();
|
|
8931
|
-
if (type ===
|
|
9163
|
+
if (type === FORMAT_DEFLATE_RAW) {
|
|
8932
9164
|
result = wasm.inflate_init_raw(this.streamHandle);
|
|
8933
|
-
} else if (type ===
|
|
9165
|
+
} else if (type === FORMAT_GZIP) {
|
|
8934
9166
|
result = wasm.inflate_init_gzip(this.streamHandle);
|
|
8935
9167
|
} else {
|
|
8936
9168
|
result = wasm.inflate_init(this.streamHandle);
|
|
@@ -9051,12 +9283,12 @@ function _make(isCompress, type, options = {}) {
|
|
|
9051
9283
|
}
|
|
9052
9284
|
|
|
9053
9285
|
class CompressionStreamZlib {
|
|
9054
|
-
constructor(type =
|
|
9286
|
+
constructor(type = FORMAT_DEFLATE, options) {
|
|
9055
9287
|
return _make(true, type, options);
|
|
9056
9288
|
}
|
|
9057
9289
|
}
|
|
9058
9290
|
class DecompressionStreamZlib {
|
|
9059
|
-
constructor(type =
|
|
9291
|
+
constructor(type = FORMAT_DEFLATE, options) {
|
|
9060
9292
|
return _make(false, type, options);
|
|
9061
9293
|
}
|
|
9062
9294
|
}
|
|
@@ -9065,6 +9297,11 @@ class DecompressionStreamZlib {
|
|
|
9065
9297
|
// module fails to load, rather than discarding a self-contained codec supplied through config.
|
|
9066
9298
|
CompressionStreamZlib.requiresModule = true;
|
|
9067
9299
|
DecompressionStreamZlib.requiresModule = true;
|
|
9300
|
+
// Constructing these classes before the module is loaded throws, so capability probes cannot rely
|
|
9301
|
+
// on trying the constructor; the formats are declared instead, next to the branches implementing
|
|
9302
|
+
// them in _make().
|
|
9303
|
+
CompressionStreamZlib.supportedFormats = [FORMAT_DEFLATE, FORMAT_DEFLATE_RAW, FORMAT_GZIP];
|
|
9304
|
+
DecompressionStreamZlib.supportedFormats = [FORMAT_DEFLATE, FORMAT_DEFLATE_RAW, FORMAT_GZIP, FORMAT_DEFLATE64_RAW];
|
|
9068
9305
|
|
|
9069
9306
|
/*
|
|
9070
9307
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -10735,6 +10972,21 @@ exports.TextReader = TextReader;
|
|
|
10735
10972
|
exports.TextWriter = TextWriter;
|
|
10736
10973
|
exports.Uint8ArrayReader = Uint8ArrayReader;
|
|
10737
10974
|
exports.Uint8ArrayWriter = Uint8ArrayWriter;
|
|
10975
|
+
exports.VERSION = VERSION;
|
|
10976
|
+
exports.WARNING_APPENDED_DATA = WARNING_APPENDED_DATA;
|
|
10977
|
+
exports.WARNING_COMPRESSED_PATCHED_DATA = WARNING_COMPRESSED_PATCHED_DATA;
|
|
10978
|
+
exports.WARNING_DUPLICATE_FILENAME = WARNING_DUPLICATE_FILENAME;
|
|
10979
|
+
exports.WARNING_MALFORMED_EXTRA_FIELD = WARNING_MALFORMED_EXTRA_FIELD;
|
|
10980
|
+
exports.WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG = WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG;
|
|
10981
|
+
exports.WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD = WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD;
|
|
10982
|
+
exports.WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES = WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES;
|
|
10983
|
+
exports.WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY = WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY;
|
|
10984
|
+
exports.WARNING_PREPENDED_DATA = WARNING_PREPENDED_DATA;
|
|
10985
|
+
exports.WARNING_TRAILING_CENTRAL_DIRECTORY_DATA = WARNING_TRAILING_CENTRAL_DIRECTORY_DATA;
|
|
10986
|
+
exports.WARNING_UNKNOWN_VERSION = WARNING_UNKNOWN_VERSION;
|
|
10987
|
+
exports.WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA = WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA;
|
|
10988
|
+
exports.WARNING_UNSORTED_CENTRAL_DIRECTORY = WARNING_UNSORTED_CENTRAL_DIRECTORY;
|
|
10989
|
+
exports.WARNING_WRAPPED_ENTRIES_COUNT = WARNING_WRAPPED_ENTRIES_COUNT;
|
|
10738
10990
|
exports.Writer = Writer;
|
|
10739
10991
|
exports.ZipDirectoryEntry = ZipDirectoryEntry;
|
|
10740
10992
|
exports.ZipEntry = ZipEntry;
|
|
@@ -10750,6 +11002,9 @@ exports.createOPFSTempStream = createOPFSTempStream;
|
|
|
10750
11002
|
exports.createSyncAccessHandleTempStream = createSyncAccessHandleTempStream;
|
|
10751
11003
|
exports.fs = fs;
|
|
10752
11004
|
exports.getMimeType = getMimeType;
|
|
11005
|
+
exports.getRegisteredCodecs = getRegisteredCodecs;
|
|
11006
|
+
exports.getSupportedCompressionMethods = getSupportedCompressionMethods;
|
|
11007
|
+
exports.isZipFile = isZipFile;
|
|
10753
11008
|
exports.registerCodec = registerCodec;
|
|
10754
11009
|
exports.resetConfiguration = resetConfiguration;
|
|
10755
11010
|
exports.terminateWorkers = terminateWorkersAndModule;
|