@zip.js/zip.js 2.8.35 → 2.8.37
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 +3 -2
- package/dist/zip-core.js +246 -55
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +198 -55
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +249 -58
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +247 -56
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +248 -57
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +249 -58
- 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 +247 -56
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +249 -58
- package/index-native.min.js +1 -1
- package/index.cjs +247 -56
- package/index.d.cts +112 -2
- package/index.d.ts +112 -2
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +19 -3
- package/lib/core/codec-registry.js +116 -0
- package/lib/core/constants.js +1 -1
- package/lib/core/io.js +47 -26
- package/lib/core/options.js +2 -0
- package/lib/core/streams/codec-stream.js +1 -1
- package/lib/core/streams/zip-entry-stream.js +22 -5
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/web-worker-base.js +5 -1
- 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 +6 -2
- package/lib/core/zip-writer.js +53 -18
- package/lib/zip-core-base.js +7 -0
- package/lib/zip-core-writer.js +1 -0
- package/package.json +1 -1
- package/worker-message-property-names.js +1 -1
package/dist/zip.js
CHANGED
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
const HEADER_OFFSET_UNCOMPRESSED_SIZE = 18;
|
|
105
105
|
const LOCAL_HEADER_COMMON_OFFSET = 4;
|
|
106
106
|
|
|
107
|
-
const MAX_DATE = new Date(2107, 11, 31);
|
|
107
|
+
const MAX_DATE = new Date(2107, 11, 31, 23, 59, 58);
|
|
108
108
|
const MIN_DATE = new Date(1980, 0, 1);
|
|
109
109
|
|
|
110
110
|
const UNDEFINED_VALUE = undefined;
|
|
@@ -220,7 +220,104 @@
|
|
|
220
220
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
function t$1(t){const e='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:v}=self,b=void 0,S="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)e=1&e?e>>>1^3988292384:e>>>1;C[0][t]=e}for(let t=0;256>t;t++)for(let e=1;8>e;e++){const n=C[e-1][t];C[e][t]=n>>>8^C[0][255&n]}const[A,I,x,P,R,U,M,_]=C;class B{constructor(t){this.o=t||-1}append(t){let e=0|this.o;const n=0|t.length;let s=0;if(n>=8&&t.buffer){const r=new l(t.buffer,t.byteOffset,n),o=n-8;for(;o>=s;s+=8){const t=e^r.getInt32(s,!0),n=r.getInt32(s+4,!0);e=_[255&t]^M[t>>>8&255]^U[t>>>16&255]^R[t>>>24&255]^P[255&n]^x[n>>>8&255]^I[n>>>16&255]^A[n>>>24&255]}}for(;n>s;s++)e=e>>>8^A[255&(e^t[s])];this.o=e}get(){return~this.o}}class D extends d{constructor(){let t;const e=new B;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}function V(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}const W={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=W.l(n);return 32===s?t.concat(e):W.h(e,s,0|n,t.slice(0,t.length-1))},m(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+W.l(n)},v(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,s.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=W.S(e,t[n-1]&2147483648>>e-1,1)),t},S:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r<t.length;r++)s.push(n|t[r]>>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=W.l(r);return s.push(W.S(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=W.m(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},A(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(W.S(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.P=[1518500249,1859775393,2400959708,3395469782],t?(e.R=t.R.slice(0),e.U=t.U.slice(0),e.M=t.M):e.reset()}reset(){const t=this;return t.R=t.I.slice(0),t.U=[],t.M=0,t}update(t){const e=this;"string"==typeof t&&(t=K._.A(t));const n=e.U=W.concat(e.U,t),s=e.M,o=e.M=s+W.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e.B(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}D(){const t=this;let e=t.U;const n=t.R;e=W.concat(e,[W.S(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.M/4294967296)),e.push(0|t.M);e.length;)t.B(e.splice(0,16));return t.reset(),n}V(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}W(t,e){return e<<t|e>>>32-t}B(e){const n=this,r=n.R,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.W(5,i)+n.V(t,c,a,f)+l+o[t]+n.P[s.floor(t/20)]|0;l=f,f=a,a=n.W(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},L={importKey:t=>new L.K(K.bytes.A(t)),L(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let i,c,a,f,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=W;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),f=0;f<c.length;f++)i[f]^=c[f];for(a=0;(o||1)>p&&a<i.length;a++)h.setInt32(p,i[a]),p+=4}return w.slice(0,s/8)},K:class{constructor(t){const e=this,n=e.O=E,s=[[],[]];e.T=[new n,new n];const r=e.T[0].blockSize/32;t.length>r&&(t=(new n).update(t).D());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.T[0].update(s[0]),e.T[1].update(s[1]),e.j=new n(e.T[0])}reset(){const t=this;t.j=new t.O(t.T[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.D(),n=new t.O(t.T[1]).update(e).D();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},O=typeof h!=S&&typeof h.getRandomValues==k,T="Invalid password",j="Invalid signature",H="zipjs-abort-check-password";function Z(t){if(O)return h.getRandomValues(t);throw new r("Crypto API not supported")}const F=16,N={name:"PBKDF2"},q=e.assign({hash:{name:"HMAC"}},N),G=e.assign({iterations:1e3,hash:{name:"SHA-1"}},N),J=["deriveBits"],Q=[8,12,16],X=[16,24,32],Y=10,$=[0,0,0,0],tt=typeof h!=S,et=tt&&h.subtle,nt=tt&&typeof et!=S,st=K.bytes,rt=class{constructor(t){const e=this;e.Z=[[[],[],[],[],[]],[[],[],[],[],[]]],e.Z[0][0][0]||e.F();const n=e.Z[0][4],s=e.Z[1],o=t.length;let i,c,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.P=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}F(){const t=this.Z[0],e=this.Z[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[c=r[l]]];let u=16843009*f^65537*a^257*c^16843008*l,w=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][o]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}N(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.P[e],s=n.length/4-2,o=[0,0,0,0],i=this.Z[e],c=i[0],a=i[1],f=i[2],l=i[3],u=i[4];let w,h,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],v=4;for(let t=0;s>t;t++)w=c[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[v],h=c[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[v+1],p=c[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[v+2],g=c[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[v+3],v+=4,d=w,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[v++],w=d,d=y,y=m,m=g,g=w;return o}},ot=class{constructor(t,e){this.G=t,this.J=e,this.X=e}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}$(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}et(t){0===(t[0]=this.$(t[0]))&&(t[1]=this.$(t[1]))}Y(t,e,n){let s;if(!(s=e.length))return[];const r=W.m(e);for(let r=0;s>r;r+=4){this.et(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return W.v(e,r)}},it=L.K;let ct=tt&&nt&&typeof et.importKey==k,at=tt&&nt&&typeof et.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s}){super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:i,strength:c,nt:a,ready:f}=n;i?(await(async(t,e,n,s)=>{const o=await ht(t,e,n,dt(s,0,Q[e])),i=dt(s,Q[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(T)})(n,c,i,dt(t,0,Q[c]+2)),t=dt(t,Q[c]+2),s?e.error(new r(H)):a()):await f;const l=new o(t.length-Y-(t.length-Y)%F);e.enqueue(wt(n,t,l,0,Y,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=dt(s,0,s.length-Y),c=dt(s,s.length-Y);let a=z;if(i.length){const t=mt(st,i);n.update(t);const s=e.update(t);a=yt(st,s)}const f=dt(yt(st,n.digest()),0,Y);let l=s.length<Y?1:0;for(let t=0;Y>t;t++)l|=f[t]^c[t];if(l)throw new r(j);t.enqueue(a)}}})}}class lt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:i,ready:c}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=Z(new o(Q[e]));return V(s,await ht(t,e,n,s))})(n,r,s),i()):await c;const f=new o(a.length+t.length-t.length%F);f.set(a,0),e.enqueue(wt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:r,ready:o}=this;if(n&&e){await o;let i=z;if(r.length){const t=e.update(mt(st,r));n.update(t),i=yt(st,t)}s.signature=yt(st,n.digest()).slice(0,Y),t.enqueue(V(i,s.signature))}}}),s=this}}function ut(t,n,s,r){e.assign(t,{ready:new u(e=>t.nt=e),password:pt(n,s),strength:r-1,pending:z})}function wt(t,e,n,s,r,i){const{st:c,ot:a,pending:f}=t;f.length&&(e=V(f,e));const l=e.length-r;let u;for(n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,s+(l-l%F)),u=0;l-F>=u;u+=F){const t=mt(st,dt(e,u,u+F));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(yt(st,r),u+s)}return t.pending=dt(e,u),n}async function ht(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!ct)return L.importKey(e);try{return await et.importKey("raw",e,n,!1,r)}catch{return ct=!1,L.importKey(e)}})(0,r,q,0,J),a=await(async(t,e,n)=>{if(!at)return L.L(e,t.salt,G.iterations,n);try{return await et.deriveBits(t,e,n)}catch{return at=!1,L.L(e,t.salt,G.iterations,n)}})(e.assign({salt:i},G),c,8*(2*X[s]+2)),f=new o(a),l=mt(st,dt(f,0,X[s])),u=mt(st,dt(f,X[s],2*X[s])),w=dt(f,2*X[s]);return e.assign(n,{keys:{key:l,it:u,passwordVerification:w},st:new ot(new rt(l),t.from($)),ot:new it(u)}),w}function pt(t,e){return e===b?(t=>{if(typeof w==S){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new w).encode(t)})(t):e}function dt(t,e,n){return t.subarray(e,n)}function yt(t,e){return t.C(e)}function mt(t,e){return t.A(e)}class gt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){bt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=St(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e.at(-1)^n.passwordVerification))throw new r(T);t=t.subarray(12)}s?e.error(new r(H)):e.enqueue(St(n,t))}})}}class vt extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){bt(this,t,e,n)},transform(t,e){const n=this;let s,r;if(n.password||n.rawPassword){n.password=n.rawPassword=null;const e=Z(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(kt(n,e),0),r=12}else s=new o(t.length),r=0;s.set(kt(n,t),r),e.enqueue(s)}})}}function bt(t,n,s,r){e.assign(t,{password:n,rawPassword:s,passwordVerification:r}),((t,n,s)=>{const r=[305419896,591751049,878082192];if(e.assign(t,{keys:r,ct:new B(r[0]),ft:new B(r[2])}),s)for(let e=0;e<s.length;e++)zt(t,s[e]);else for(let e=0;e<n.length;e++)zt(t,n.charCodeAt(e))})(t,n,s)}function St(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,n[s]);return n}function kt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,e[s]);return n}function zt(t,e){let[,n]=t.keys;t.ct.append([e]);const r=~t.ct.get();n=It(s.imul(It(n+At(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function Ct(t){const e=2|t.keys[2];return At(s.imul(e,1^e)>>>8)}function At(t){return 255&t}function It(t){return 4294967295&t}class xt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:f,deflate64:u}=t,w=this;let h,p,d,y=super.readable;const m=a&&r&&!u&&(!o||c)&&!(!i||!s);o&&!c||!a||m||(h=new D,y=_t(y,h)),r&&(m?(d=new Pt,y=Bt(y,new s("gzip")),y=_t(y,d)):y=Mt(y,i,{level:f,chunkSize:e},s,n,s)),o&&(c?y=_t(y,new vt(t)):(p=new lt(t),y=_t(y,p))),Ut(w,y,()=>{let t;o&&!c&&(t=p.signature),o&&!c||!a||(t=m?d.signature:new l(h.value.buffer).getUint32(0)),w.signature=t})}}class Pt extends d{constructor(){let t,e=10,n=new o(0);super({transform(t,r){if(e){const n=s.min(e,t.length);if(e-=n,!(t=t.subarray(n)).length)return}const o=n.length+t.length;if(8>=o)return void(n=V(n,t));const i=o-8,c=s.min(i,n.length);r.enqueue(V(n.subarray(0,c),t.subarray(0,i-c))),n=V(n.subarray(c),t.subarray(i-c))},flush(){const e=new l((s=n).buffer,s.byteOffset,s.byteLength);var s;t.signature=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Rt extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:f,useCompressionStream:u,deflate64:w}=t;let h,p,d=super.readable;i&&(o?d=_t(d,new gt(t)):(p=new ft(t),d=_t(d,p))),f&&(d=Mt(d,u,{chunkSize:e,deflate64:w},s,n,s),d=(t=>{const e=t.getReader();return new y({async pull(t){let n;try{n=await e.read()}catch(t){if(t&&t.message)throw t;const e=new r("Invalid compressed data");throw e.cause=t,e}const{value:s,done:o}=n;o?t.close():t.enqueue(s)},cancel:t=>e.cancel(t)})})(d)),i&&!o||!c||(h=new D,d=_t(d,h)),Ut(this,d,()=>{if((!i||o)&&c){const t=new l(h.value.buffer);if(a!=t.getUint32(0,!1))throw new r(j)}})}}function Ut(t,n,s){n=_t(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function Mt(t,e,n,s,r,o){const i=e&&s?s:r||o,c=n.deflate64?"deflate64-raw":"deflate-raw";let a;try{a=new i(c,n)}catch(t){if(!e)throw t;if(r)a=new r(c,n);else{if(!o)throw t;a=new o(c,n)}}return Bt(t,a)}function _t(t,e){return t.pipeThrough(e)}function Bt(t,e){const n=e.writable.getWriter(),s=t.getReader();return(async()=>{try{for(;;){await n.ready;const t=await s.read();if(t.done){await n.close();break}await n.write(t.value)}}catch(t){await(async(t,e)=>{try{await t.abort(e)}catch{}})(n,t),await(async(t,e)=>{try{await t.cancel(e)}catch{}})(s,t)}})(),e.readable}const Dt="data",Vt="close";class Wt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith("deflate")?i=xt:o.startsWith("inflate")&&(i=Rt),s.outputSize=0;let c=0;const a=new i(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==b&&s.outputSize>t.outputSize))throw new r("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class Kt extends d{constructor(t){const e=[];let n=0;function s(){const s=new o(t);let r=0;for(;t>r;){const n=e[0],o=t-r;n.length>o?(s.set(n.subarray(0,o),r),e[0]=n.subarray(o),r+=o):(s.set(n,r),r+=n.length,e.shift())}return n-=t,s}1>t&&(t=65536),super({transform(r,o){for(e.push(r),n+=r.length;n>t;)o.enqueue(s())},flush(t){n&&t.enqueue(((t,e)=>{const n=new o(e);let s=0;for(const e of t)n.set(e,s),s+=e.length;return n})(e,n))}})}}let Et=2;try{typeof navigator!=S&&navigator.hardwareConcurrency&&(Et=navigator.hardwareConcurrency)}catch{}const Lt=new f,Ot=new f;let Tt,jt,Ht,Zt,Ft,Nt=0;async function qt(t){let e,r;try{const{options:o,config:i}=t;if(!o.useCompressionStream)try{await self.initModule(t.config)}catch{o.useCompressionStream=!0}i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream;const c={highWaterMark:1},a=t.readable||new y({async pull(t){const e=new u(t=>Lt.set(Nt,t));Gt({type:"pull",messageId:Nt}),Nt=(Nt+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},c);r=t.writable||new m({async write(t){let e;const s=new u(t=>e=t);Ot.set(Nt,e),Gt({type:Dt,value:t,messageId:Nt}),Nt=(Nt+1)%n.MAX_SAFE_INTEGER,await s}},c),e=new Wt(o,i),Tt=new AbortController;const{signal:f}=Tt;await a.pipeThrough(e).pipeThrough(new Kt((t=>s.max(t.chunkSize,64))(i))).pipeTo(r,{signal:f,preventClose:!0,preventAbort:!0}),await r.getWriter().close();const{signature:l,inputSize:w,outputSize:h}=e;Gt({type:Vt,result:{signature:l,inputSize:w,outputSize:h}})}catch(t){if(t.outputSize=e?e.outputSize:0,r&&!r.locked)try{await r.getWriter().close()}catch{}Jt(t)}}function Gt(t){let{value:e}=t;if(e)if(e.length)try{t.value=(n=e,n.byteOffset||n.byteLength!=n.buffer.byteLength?new o(n):n).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var n}function Jt(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}function Qt(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="number"==typeof n.outBuffer?n.outBuffer:65536,a="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new d({start(){try{let n;if(this.lt=Ht(c),this.in=Ht(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.ut=new o(c),t?(this.wt=jt.deflate_process,this.ht=jt.deflate_last_consumed,this.yt=jt.deflate_end,this.gt=jt.deflate_new(),n="gzip"===e?jt.deflate_init_gzip(this.gt,i):"deflate-raw"===e?jt.deflate_init_raw(this.gt,i):jt.deflate_init(this.gt,i)):"deflate64-raw"===e?(this.wt=jt.inflate9_process,this.ht=jt.inflate9_last_consumed,this.yt=jt.inflate9_end,this.gt=jt.inflate9_new(),n=jt.inflate9_init_raw(this.gt)):(this.wt=jt.inflate_process,this.ht=jt.inflate_last_consumed,this.yt=jt.inflate_end,this.gt=jt.inflate_new(),n="deflate-raw"===e?jt.inflate_init_raw(this.gt):"gzip"===e?jt.inflate_init_gzip(this.gt):jt.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const i=e,a=new o(Ft.buffer),f=this.wt,l=this.ht,u=this.lt,w=this.ut;let h=0;for(;h<i.length;){const e=s.min(i.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&Zt&&(Zt(this.in),this.in=0),this.in=Ht(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(i.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,u,c,0),p=16777215&o;if(p&&(w.set(a.subarray(u,u+p),0),n.enqueue(w.slice(0,p))),!t){const t=o>>24&255,e=128&t?t-256:t;if(0>e)throw new r("process error:"+e)}const d=l(this.gt);if(0===d)break;h+=d}}catch(t){f(this),n.error(t)}},flush(e){try{const n=new o(Ft.buffer),s=this.wt,i=this.lt,a=this.ut;for(;;){const o=s(this.gt,0,0,i,c,4),f=16777215&o,l=o>>24&255;if(!t){const t=128&l?l-256:l;if(0>t)throw new r("process error:"+t)}if(f&&(a.set(n.subarray(i,i+f),0),e.enqueue(a.slice(0,f))),1===l||0===f)break}}catch(t){e.error(t)}finally{const t=f(this);0!==t&&e.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let e=0;return t.gt&&t.yt&&(e=t.yt(t.gt)),t.gt=0,t.in&&Zt&&Zt(t.in),t.in=0,t.lt&&Zt&&Zt(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&qt(t),e==Dt){const t=Lt.get(n);Lt.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Ot.get(n);Ot.delete(n),t()}e==Vt&&Tt.abort()}catch(t){Jt(t)}});class Xt{constructor(t="deflate",e){return Qt(!0,t,e)}}class Yt{constructor(t="deflate",e){return Qt(!1,t,e)}}Xt.vt=!0,Yt.vt=!0;let $t=!1;self.initModule=async t=>{try{const e=await(async(t,{baseURI:e})=>{if(!$t){let n,s;try{try{s=new URL(t,e)}catch{}const r=await fetch(s);n=await r.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;n=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}(t=>{if(jt=t,({malloc:Ht,free:Zt,memory:Ft}=jt),"function"!=typeof Ht||"function"!=typeof Zt||!Ft)throw jt=Ht=Zt=Ft=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports),$t=!0}})(t.wasmURI,t);return t.CompressionStreamZlib=Xt,t.DecompressionStreamZlib=Yt,e}catch{}}});\n';t({workerURI:t=>{const n="text/javascript";if(t){const t=new Blob([e],{type:n});return URL.createObjectURL(t)}return "data:"+n+","+encodeURIComponent(e)}});}
|
|
223
|
+
function t$1(t){const e='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:S}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)e=1&e?e>>>1^3988292384:e>>>1;C[0][t]=e}for(let t=0;256>t;t++)for(let e=1;8>e;e++){const n=C[e-1][t];C[e][t]=n>>>8^C[0][255&n]}const[A,I,x,P,D,R,U,M]=C;class _{constructor(t){this.o=t||-1}append(t){let e=0|this.o;const n=0|t.length;let s=0;if(n>=8&&t.buffer){const r=new l(t.buffer,t.byteOffset,n),o=n-8;for(;o>=s;s+=8){const t=e^r.getInt32(s,!0),n=r.getInt32(s+4,!0);e=M[255&t]^U[t>>>8&255]^R[t>>>16&255]^D[t>>>24&255]^P[255&n]^x[n>>>8&255]^I[n>>>16&255]^A[n>>>24&255]}}for(;n>s;s++)e=e>>>8^A[255&(e^t[s])];this.o=e}get(){return~this.o}}class B extends d{constructor(){let t;const e=new _;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}function V(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}const W={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=W.l(n);return 32===s?t.concat(e):W.h(e,s,0|n,t.slice(0,t.length-1))},m(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+W.l(n)},S(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,s.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=W.v(e,t[n-1]&2147483648>>e-1,1)),t},v:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r<t.length;r++)s.push(n|t[r]>>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=W.l(r);return s.push(W.v(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=W.m(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},A(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(W.v(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.P=[1518500249,1859775393,2400959708,3395469782],t?(e.D=t.D.slice(0),e.R=t.R.slice(0),e.U=t.U):e.reset()}reset(){const t=this;return t.D=t.I.slice(0),t.R=[],t.U=0,t}update(t){const e=this;"string"==typeof t&&(t=K.M.A(t));const n=e.R=W.concat(e.R,t),s=e.U,o=e.U=s+W.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e._(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}B(){const t=this;let e=t.R;const n=t.D;e=W.concat(e,[W.v(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.U/4294967296)),e.push(0|t.U);e.length;)t._(e.splice(0,16));return t.reset(),n}V(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}W(t,e){return e<<t|e>>>32-t}_(e){const n=this,r=n.D,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.W(5,i)+n.V(t,c,a,f)+l+o[t]+n.P[s.floor(t/20)]|0;l=f,f=a,a=n.W(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},L={importKey:t=>new L.K(K.bytes.A(t)),L(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let i,c,a,f,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=W;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),f=0;f<c.length;f++)i[f]^=c[f];for(a=0;(o||1)>p&&a<i.length;a++)h.setInt32(p,i[a]),p+=4}return w.slice(0,s/8)},K:class{constructor(t){const e=this,n=e.O=E,s=[[],[]];e.T=[new n,new n];const r=e.T[0].blockSize/32;t.length>r&&(t=(new n).update(t).B());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.T[0].update(s[0]),e.T[1].update(s[1]),e.j=new n(e.T[0])}reset(){const t=this;t.j=new t.O(t.T[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.B(),n=new t.O(t.T[1]).update(e).B();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},O=typeof h!=b&&typeof h.getRandomValues==k,T="Invalid password",j="Invalid signature",H="zipjs-abort-check-password";function Z(t){if(O)return h.getRandomValues(t);throw new r("Crypto API not supported")}const F=16,N={name:"PBKDF2"},q=e.assign({hash:{name:"HMAC"}},N),G=e.assign({iterations:1e3,hash:{name:"SHA-1"}},N),J=["deriveBits"],Q=[8,12,16],X=[16,24,32],Y=10,$=[0,0,0,0],tt=typeof h!=b,et=tt&&h.subtle,nt=tt&&typeof et!=b,st=K.bytes,rt=class{constructor(t){const e=this;e.Z=[[[],[],[],[],[]],[[],[],[],[],[]]],e.Z[0][0][0]||e.F();const n=e.Z[0][4],s=e.Z[1],o=t.length;let i,c,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.P=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}F(){const t=this.Z[0],e=this.Z[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[c=r[l]]];let u=16843009*f^65537*a^257*c^16843008*l,w=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][o]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}N(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.P[e],s=n.length/4-2,o=[0,0,0,0],i=this.Z[e],c=i[0],a=i[1],f=i[2],l=i[3],u=i[4];let w,h,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],S=4;for(let t=0;s>t;t++)w=c[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[S],h=c[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[S+1],p=c[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[S+2],g=c[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[S+3],S+=4,d=w,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[S++],w=d,d=y,y=m,m=g,g=w;return o}},ot=class{constructor(t,e){this.G=t,this.J=e,this.X=e}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}$(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}et(t){0===(t[0]=this.$(t[0]))&&(t[1]=this.$(t[1]))}Y(t,e,n){let s;if(!(s=e.length))return[];const r=W.m(e);for(let r=0;s>r;r+=4){this.et(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return W.S(e,r)}},it=L.K;let ct=tt&&nt&&typeof et.importKey==k,at=tt&&nt&&typeof et.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s}){super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:i,strength:c,nt:a,ready:f}=n;i?(await(async(t,e,n,s)=>{const o=await ht(t,e,n,dt(s,0,Q[e])),i=dt(s,Q[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(T)})(n,c,i,dt(t,0,Q[c]+2)),t=dt(t,Q[c]+2),s?e.error(new r(H)):a()):await f;const l=new o(t.length-Y-(t.length-Y)%F);e.enqueue(wt(n,t,l,0,Y,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=dt(s,0,s.length-Y),c=dt(s,s.length-Y);let a=z;if(i.length){const t=mt(st,i);n.update(t);const s=e.update(t);a=yt(st,s)}const f=dt(yt(st,n.digest()),0,Y);let l=s.length<Y?1:0;for(let t=0;Y>t;t++)l|=f[t]^c[t];if(l)throw new r(j);t.enqueue(a)}}})}}class lt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:i,ready:c}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=Z(new o(Q[e]));return V(s,await ht(t,e,n,s))})(n,r,s),i()):await c;const f=new o(a.length+t.length-t.length%F);f.set(a,0),e.enqueue(wt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:r,ready:o}=this;if(n&&e){await o;let i=z;if(r.length){const t=e.update(mt(st,r));n.update(t),i=yt(st,t)}s.signature=yt(st,n.digest()).slice(0,Y),t.enqueue(V(i,s.signature))}}}),s=this}}function ut(t,n,s,r){e.assign(t,{ready:new u(e=>t.nt=e),password:pt(n,s),strength:r-1,pending:z})}function wt(t,e,n,s,r,i){const{st:c,ot:a,pending:f}=t;f.length&&(e=V(f,e));const l=e.length-r;let u;for(n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,s+(l-l%F)),u=0;l-F>=u;u+=F){const t=mt(st,dt(e,u,u+F));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(yt(st,r),u+s)}return t.pending=dt(e,u),n}async function ht(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!ct)return L.importKey(e);try{return await et.importKey("raw",e,n,!1,r)}catch{return ct=!1,L.importKey(e)}})(0,r,q,0,J),a=await(async(t,e,n)=>{if(!at)return L.L(e,t.salt,G.iterations,n);try{return await et.deriveBits(t,e,n)}catch{return at=!1,L.L(e,t.salt,G.iterations,n)}})(e.assign({salt:i},G),c,8*(2*X[s]+2)),f=new o(a),l=mt(st,dt(f,0,X[s])),u=mt(st,dt(f,X[s],2*X[s])),w=dt(f,2*X[s]);return e.assign(n,{keys:{key:l,it:u,passwordVerification:w},st:new ot(new rt(l),t.from($)),ot:new it(u)}),w}function pt(t,e){return e===v?(t=>{if(typeof w==b){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new w).encode(t)})(t):e}function dt(t,e,n){return t.subarray(e,n)}function yt(t,e){return t.C(e)}function mt(t,e){return t.A(e)}class gt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=bt(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e.at(-1)^n.passwordVerification))throw new r(T);t=t.subarray(12)}s?e.error(new r(H)):e.enqueue(bt(n,t))}})}}class St extends d{constructor({password:t,rawPassword:e,passwordVerification:n}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;let s,r;if(n.password||n.rawPassword){n.password=n.rawPassword=null;const e=Z(new o(12));e[11]=n.passwordVerification,s=new o(t.length+e.length),s.set(kt(n,e),0),r=12}else s=new o(t.length),r=0;s.set(kt(n,t),r),e.enqueue(s)}})}}function vt(t,n,s,r){e.assign(t,{password:n,rawPassword:s,passwordVerification:r}),((t,n,s)=>{const r=[305419896,591751049,878082192];if(e.assign(t,{keys:r,ct:new _(r[0]),ft:new _(r[2])}),s)for(let e=0;e<s.length;e++)zt(t,s[e]);else for(let e=0;e<n.length;e++)zt(t,n.charCodeAt(e))})(t,n,s)}function bt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,n[s]);return n}function kt(t,e){const n=new o(e.length);for(let s=0;s<e.length;s++)n[s]=Ct(t)^e[s],zt(t,e[s]);return n}function zt(t,e){let[,n]=t.keys;t.ct.append([e]);const r=~t.ct.get();n=It(s.imul(It(n+At(r)),134775813)+1),t.ft.append([n>>>24]);const o=~t.ft.get();t.keys=[r,n,o]}function Ct(t){const e=2|t.keys[2];return At(s.imul(e,1^e)>>>8)}function At(t){return 255&t}function It(t){return 4294967295&t}const xt=new f;function Pt(t){return xt.get(t)}class Dt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:f,deflate64:u,format:w}=t,h=this;let p,d,y,m=super.readable;const g=w&&Pt(w),S=a&&r&&!u&&!g&&(!o||c)&&!(!i||!s);o&&!c||!a||S||(p=new B,m=Vt(m,p)),r&&(g?m=Wt(m,_t(g.CompressionStream,w,{level:f,chunkSize:e})):S?(y=new Rt,m=Wt(m,new s("gzip")),m=Vt(m,y)):m=Bt(m,i,{level:f,chunkSize:e},s,n,s)),o&&(c?m=Vt(m,new St(t)):(d=new lt(t),m=Vt(m,d))),Mt(h,m,()=>{let t;o&&!c&&(t=d.signature),o&&!c||!a||(t=S?y.signature:new l(p.value.buffer).getUint32(0)),h.signature=t})}}class Rt extends d{constructor(){let t,e=10,n=new o(0);super({transform(t,r){if(e){const n=s.min(e,t.length);if(e-=n,!(t=t.subarray(n)).length)return}const o=n.length+t.length;if(8>=o)return void(n=V(n,t));const i=o-8,c=s.min(i,n.length);r.enqueue(V(n.subarray(0,c),t.subarray(0,i-c))),n=V(n.subarray(c),t.subarray(i-c))},flush(){const e=new l((s=n).buffer,s.byteOffset,s.byteLength);var s;t.signature=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Ut extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:f,useCompressionStream:u,deflate64:w,format:h}=t;let p,d,m=super.readable;if(i&&(o?m=Vt(m,new gt(t)):(d=new ft(t),m=Vt(m,d))),f){const t=h&&Pt(h);m=t?Wt(m,_t(t.DecompressionStream,h,{chunkSize:e})):Bt(m,u,{chunkSize:e,deflate64:w},s,n,s),m=(t=>{const e=t.getReader();return new y({async pull(t){let n;try{n=await e.read()}catch(t){if(t&&t.message)throw t;const e=new r("Invalid compressed data");throw e.cause=t,e}const{value:s,done:o}=n;o?t.close():t.enqueue(s)},cancel:t=>e.cancel(t)})})(m)}i&&!o||!c||(p=new B,m=Vt(m,p)),Mt(this,m,()=>{if((!i||o)&&c){const t=new l(p.value.buffer);if(a!=t.getUint32(0,!1))throw new r(j)}})}}function Mt(t,n,s){n=Vt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function _t(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Bt(t,e,n,s,r,o){const i=e&&s?s:r||o,c=n.deflate64?"deflate64-raw":"deflate-raw";let a;try{a=new i(c,n)}catch(t){if(!e)throw t;if(r)a=new r(c,n);else{if(!o)throw t;a=new o(c,n)}}return Wt(t,a)}function Vt(t,e){return t.pipeThrough(e)}function Wt(t,e){const n=e.writable.getWriter(),s=t.getReader();return(async()=>{try{for(;;){await n.ready;const t=await s.read();if(t.done){await n.close();break}await n.write(t.value)}}catch(t){await(async(t,e)=>{try{await t.abort(e)}catch{}})(n,t),await(async(t,e)=>{try{await t.cancel(e)}catch{}})(s,t)}})(),e.readable}const Kt="data",Et="close";class Lt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith("deflate")?i=Dt:o.startsWith("inflate")&&(i=Ut),s.outputSize=0;let c=0;const a=new i(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class Ot extends d{constructor(t){const e=[];let s=0;function r(){const n=new o(t);let r=0;for(;t>r;){const s=e[0],o=t-r;s.length>o?(n.set(s.subarray(0,o),r),e[0]=s.subarray(o),r+=o):(n.set(s,r),r+=s.length,e.shift())}return s-=t,n}n.isFinite(t)&&t>=1||(t=65536),super({transform(n,o){for(e.push(n),s+=n.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(((t,e)=>{const n=new o(e);let s=0;for(const e of t)n.set(e,s),s+=e.length;return n})(e,s))}})}}let Tt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Tt=navigator.hardwareConcurrency)}catch{}const jt=new f,Ht=new f;let Zt,Ft,Nt,qt,Gt,Jt=0;async function Qt(t){let e,o;try{const{options:i,config:c}=t;if(i.format&&await(async(t,e)=>{!xt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=k&&typeof s!=k)throw new r("Invalid codec module");xt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(i.format,i.codecURI),!i.useCompressionStream)try{await self.initModule(t.config)}catch{i.useCompressionStream=!0}c.CompressionStream=self.CompressionStream,c.DecompressionStream=self.DecompressionStream;const a={highWaterMark:1},f=t.readable||new y({async pull(t){const e=new u(t=>jt.set(Jt,t));Xt({type:"pull",messageId:Jt}),Jt=(Jt+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},a);o=t.writable||new m({async write(t){let e;const s=new u(t=>e=t);Ht.set(Jt,e),Xt({type:Kt,value:t,messageId:Jt}),Jt=(Jt+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new Lt(i,c),Zt=new AbortController;const{signal:l}=Zt;await f.pipeThrough(e).pipeThrough(new Ot((t=>s.max(t.chunkSize,64))(c))).pipeTo(o,{signal:l,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:w,inputSize:h,outputSize:p}=e;Xt({type:Et,result:{signature:w,inputSize:h,outputSize:p}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}Yt(t)}}function Xt(t){const{value:e}=t;if(e)if(e.length)try{t.value=(n=e,n.byteOffset||n.byteLength!=n.buffer.byteLength?new o(n):n).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var n}function Yt(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}function $t(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="number"==typeof n.outBuffer?n.outBuffer:65536,a="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new d({start(){try{let n;if(this.lt=Nt(c),this.in=Nt(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.ut=new o(c),t?(this.wt=Ft.deflate_process,this.ht=Ft.deflate_last_consumed,this.yt=Ft.deflate_end,this.gt=Ft.deflate_new(),n="gzip"===e?Ft.deflate_init_gzip(this.gt,i):"deflate-raw"===e?Ft.deflate_init_raw(this.gt,i):Ft.deflate_init(this.gt,i)):"deflate64-raw"===e?(this.wt=Ft.inflate9_process,this.ht=Ft.inflate9_last_consumed,this.yt=Ft.inflate9_end,this.gt=Ft.inflate9_new(),n=Ft.inflate9_init_raw(this.gt)):(this.wt=Ft.inflate_process,this.ht=Ft.inflate_last_consumed,this.yt=Ft.inflate_end,this.gt=Ft.inflate_new(),n="deflate-raw"===e?Ft.inflate_init_raw(this.gt):"gzip"===e?Ft.inflate_init_gzip(this.gt):Ft.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const i=e,a=new o(Gt.buffer),f=this.wt,l=this.ht,u=this.lt,w=this.ut;let h=0;for(;h<i.length;){const e=s.min(i.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&qt&&(qt(this.in),this.in=0),this.in=Nt(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(i.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,u,c,0),p=16777215&o;if(p&&(w.set(a.subarray(u,u+p),0),n.enqueue(w.slice(0,p))),!t){const t=o>>24&255,e=128&t?t-256:t;if(0>e)throw new r("process error:"+e)}const d=l(this.gt);if(0===d)break;h+=d}}catch(t){f(this),n.error(t)}},flush(e){try{const n=new o(Gt.buffer),s=this.wt,i=this.lt,a=this.ut;for(;;){const o=s(this.gt,0,0,i,c,4),f=16777215&o,l=o>>24&255;if(!t){const t=128&l?l-256:l;if(0>t)throw new r("process error:"+t)}if(f&&(a.set(n.subarray(i,i+f),0),e.enqueue(a.slice(0,f))),1===l||0===f)break}}catch(t){e.error(t)}finally{const t=f(this);0!==t&&e.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let e=0;return t.gt&&t.yt&&(e=t.yt(t.gt)),t.gt=0,t.in&&qt&&qt(t.in),t.in=0,t.lt&&qt&&qt(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&Qt(t),e==Kt){const t=jt.get(n);jt.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Ht.get(n);Ht.delete(n),t()}e==Et&&Zt.abort()}catch(t){Yt(t)}});class te{constructor(t="deflate",e){return $t(!0,t,e)}}class ee{constructor(t="deflate",e){return $t(!1,t,e)}}te.St=!0,ee.St=!0;let ne=!1;self.initModule=async t=>{try{const e=await(async(t,{baseURI:e})=>{if(!ne){let n,s;try{try{s=new URL(t,e)}catch{}const r=await fetch(s);n=await r.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;n=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}(t=>{if(Ft=t,({malloc:Nt,free:qt,memory:Gt}=Ft),"function"!=typeof Nt||"function"!=typeof qt||!Gt)throw Ft=Nt=qt=Gt=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports),ne=!0}})(t.wasmURI,t);return t.CompressionStreamZlib=te,t.DecompressionStreamZlib=ee,e}catch{}}});\n';t({workerURI:t=>{const n="text/javascript";if(t){const t=new Blob([e],{type:n});return URL.createObjectURL(t)}return "data:"+n+","+encodeURIComponent(e)}});}
|
|
224
|
+
|
|
225
|
+
/*
|
|
226
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
227
|
+
|
|
228
|
+
Redistribution and use in source and binary forms, with or without
|
|
229
|
+
modification, are permitted provided that the following conditions are met:
|
|
230
|
+
|
|
231
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
232
|
+
this list of conditions and the following disclaimer.
|
|
233
|
+
|
|
234
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
235
|
+
notice, this list of conditions and the following disclaimer in
|
|
236
|
+
the documentation and/or other materials provided with the distribution.
|
|
237
|
+
|
|
238
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
239
|
+
derived from this software without specific prior written permission.
|
|
240
|
+
|
|
241
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
242
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
243
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
244
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
245
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
246
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
247
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
248
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
249
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
250
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
251
|
+
*/
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
const ERR_INVALID_CODEC_DEFINITION = "Invalid codec definition";
|
|
255
|
+
const ERR_RESERVED_COMPRESSION_METHOD = "Reserved compression method";
|
|
256
|
+
const ERR_INVALID_CODEC_MODULE = "Invalid codec module";
|
|
257
|
+
|
|
258
|
+
const STRING_TYPE = "string";
|
|
259
|
+
const RESERVED_COMPRESSION_METHODS = [
|
|
260
|
+
COMPRESSION_METHOD_STORE,
|
|
261
|
+
COMPRESSION_METHOD_DEFLATE,
|
|
262
|
+
COMPRESSION_METHOD_DEFLATE_64,
|
|
263
|
+
COMPRESSION_METHOD_AES
|
|
264
|
+
];
|
|
265
|
+
|
|
266
|
+
const registeredCodecs = new Map();
|
|
267
|
+
const codecStreams = new Map();
|
|
268
|
+
|
|
269
|
+
function registerCodec(codec = {}) {
|
|
270
|
+
const { compressionMethod, format, codecURI, CompressionStream, DecompressionStream, versionNeeded } = codec;
|
|
271
|
+
if (!Number.isInteger(compressionMethod) || compressionMethod < 0 || compressionMethod > MAX_16_BITS ||
|
|
272
|
+
typeof format != STRING_TYPE || !format.length) {
|
|
273
|
+
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
274
|
+
}
|
|
275
|
+
if (RESERVED_COMPRESSION_METHODS.includes(compressionMethod)) {
|
|
276
|
+
throw new Error(ERR_RESERVED_COMPRESSION_METHOD);
|
|
277
|
+
}
|
|
278
|
+
const hasStreams = typeof CompressionStream == FUNCTION_TYPE || typeof DecompressionStream == FUNCTION_TYPE;
|
|
279
|
+
if (!hasStreams && (typeof codecURI != STRING_TYPE || !codecURI.length)) {
|
|
280
|
+
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
281
|
+
}
|
|
282
|
+
registeredCodecs.set(compressionMethod, { compressionMethod, format, codecURI, versionNeeded });
|
|
283
|
+
if (hasStreams) {
|
|
284
|
+
setCodecStreams(format, { CompressionStream, DecompressionStream });
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function unregisterCodec(compressionMethod) {
|
|
289
|
+
const codec = registeredCodecs.get(compressionMethod);
|
|
290
|
+
if (codec) {
|
|
291
|
+
registeredCodecs.delete(compressionMethod);
|
|
292
|
+
let formatUsed;
|
|
293
|
+
registeredCodecs.forEach(otherCodec => formatUsed = formatUsed || otherCodec.format == codec.format);
|
|
294
|
+
if (!formatUsed) {
|
|
295
|
+
codecStreams.delete(codec.format);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
function getRegisteredCodec(compressionMethod) {
|
|
301
|
+
return registeredCodecs.get(compressionMethod);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function getCodecStreams(format) {
|
|
305
|
+
return codecStreams.get(format);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function setCodecStreams(format, streams) {
|
|
309
|
+
const { CompressionStream, DecompressionStream } = streams;
|
|
310
|
+
if (typeof CompressionStream != FUNCTION_TYPE && typeof DecompressionStream != FUNCTION_TYPE) {
|
|
311
|
+
throw new Error(ERR_INVALID_CODEC_MODULE);
|
|
312
|
+
}
|
|
313
|
+
codecStreams.set(format, { CompressionStream, DecompressionStream });
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
async function ensureCodecStreams(format, codecURI) {
|
|
317
|
+
if (!codecStreams.has(format) && codecURI) {
|
|
318
|
+
setCodecStreams(format, await import(codecURI));
|
|
319
|
+
}
|
|
320
|
+
}
|
|
224
321
|
|
|
225
322
|
/*
|
|
226
323
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
@@ -1758,6 +1855,7 @@
|
|
|
1758
1855
|
|
|
1759
1856
|
const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
|
|
1760
1857
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
1858
|
+
const ERR_UNSUPPORTED_COMPRESSION$2 = "Compression method not supported";
|
|
1761
1859
|
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
1762
1860
|
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
1763
1861
|
const FORMAT_GZIP = "gzip";
|
|
@@ -1768,18 +1866,21 @@
|
|
|
1768
1866
|
|
|
1769
1867
|
constructor(options, { chunkSize, CompressionStreamZlib, CompressionStream }) {
|
|
1770
1868
|
super({});
|
|
1771
|
-
const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level, deflate64 } = options;
|
|
1869
|
+
const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level, deflate64, format } = options;
|
|
1772
1870
|
const stream = this;
|
|
1773
1871
|
let crc32Stream, encryptionStream, gzipCrc32Stream;
|
|
1774
1872
|
let readable = super.readable;
|
|
1775
|
-
const
|
|
1873
|
+
const codecStreams = format && getCodecStreams(format);
|
|
1874
|
+
const useGzipCrc32 = signed && compressed && !deflate64 && !codecStreams && (!encrypted || zipCrypto) &&
|
|
1776
1875
|
Boolean(useCompressionStream && CompressionStream);
|
|
1777
1876
|
if ((!encrypted || zipCrypto) && signed && !useGzipCrc32) {
|
|
1778
1877
|
crc32Stream = new Crc32Stream();
|
|
1779
1878
|
readable = pipeThrough(readable, crc32Stream);
|
|
1780
1879
|
}
|
|
1781
1880
|
if (compressed) {
|
|
1782
|
-
if (
|
|
1881
|
+
if (codecStreams) {
|
|
1882
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize }));
|
|
1883
|
+
} else if (useGzipCrc32) {
|
|
1783
1884
|
gzipCrc32Stream = new GzipToRawDeflateStream();
|
|
1784
1885
|
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
|
|
1785
1886
|
readable = pipeThrough(readable, gzipCrc32Stream);
|
|
@@ -1853,7 +1954,7 @@
|
|
|
1853
1954
|
|
|
1854
1955
|
constructor(options, { chunkSize, DecompressionStreamZlib, DecompressionStream }) {
|
|
1855
1956
|
super({});
|
|
1856
|
-
const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream, deflate64 } = options;
|
|
1957
|
+
const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream, deflate64, format } = options;
|
|
1857
1958
|
let crc32Stream, decryptionStream;
|
|
1858
1959
|
let readable = super.readable;
|
|
1859
1960
|
if (encrypted) {
|
|
@@ -1865,7 +1966,12 @@
|
|
|
1865
1966
|
}
|
|
1866
1967
|
}
|
|
1867
1968
|
if (compressed) {
|
|
1868
|
-
|
|
1969
|
+
const codecStreams = format && getCodecStreams(format);
|
|
1970
|
+
if (codecStreams) {
|
|
1971
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize }));
|
|
1972
|
+
} else {
|
|
1973
|
+
readable = pipeThroughCommpressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamZlib, DecompressionStream);
|
|
1974
|
+
}
|
|
1869
1975
|
readable = mapInflateStreamError(readable);
|
|
1870
1976
|
}
|
|
1871
1977
|
if ((!encrypted || zipCrypto) && signed) {
|
|
@@ -1892,6 +1998,13 @@
|
|
|
1892
1998
|
});
|
|
1893
1999
|
}
|
|
1894
2000
|
|
|
2001
|
+
function createCodecStream(CodecStreamClass, format, options) {
|
|
2002
|
+
if (!CodecStreamClass) {
|
|
2003
|
+
throw new Error(ERR_UNSUPPORTED_COMPRESSION$2);
|
|
2004
|
+
}
|
|
2005
|
+
return new CodecStreamClass(format, options);
|
|
2006
|
+
}
|
|
2007
|
+
|
|
1895
2008
|
function pipeThroughCommpressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamZlib, CompressionStream) {
|
|
1896
2009
|
const Stream = useCompressionStream && CompressionStreamNative ? CompressionStreamNative : CompressionStreamZlib || CompressionStream;
|
|
1897
2010
|
const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
|
|
@@ -2085,7 +2198,7 @@
|
|
|
2085
2198
|
constructor(chunkSize) {
|
|
2086
2199
|
const pendingChunks = [];
|
|
2087
2200
|
let pendingLength = 0;
|
|
2088
|
-
if (!(chunkSize
|
|
2201
|
+
if (!Number.isFinite(chunkSize) || chunkSize < 1) {
|
|
2089
2202
|
chunkSize = DEFAULT_CHUNK_SIZE;
|
|
2090
2203
|
}
|
|
2091
2204
|
super({
|
|
@@ -2640,11 +2753,18 @@
|
|
|
2640
2753
|
|
|
2641
2754
|
async function runWorker(stream, workerOptions) {
|
|
2642
2755
|
const { options, config } = workerOptions;
|
|
2643
|
-
const { transferStreams, useWebWorkers, useCompressionStream, compressed, signed, encrypted } = options;
|
|
2756
|
+
const { transferStreams, useWebWorkers, useCompressionStream, compressed, signed, encrypted, format, codecURI } = options;
|
|
2644
2757
|
const { workerURI, maxWorkers } = config;
|
|
2758
|
+
if (format) {
|
|
2759
|
+
if (codecURI) {
|
|
2760
|
+
options.codecURI = resolveCodecURI(codecURI, config.baseURI);
|
|
2761
|
+
}
|
|
2762
|
+
await ensureCodecStreams(format, options.codecURI);
|
|
2763
|
+
}
|
|
2645
2764
|
workerOptions.transferStreams = transferStreams || (transferStreams === UNDEFINED_VALUE && config.transferStreams);
|
|
2646
2765
|
const streamCopy = !compressed && !signed && !encrypted;
|
|
2647
|
-
|
|
2766
|
+
const workerSupported = format === UNDEFINED_VALUE || Boolean(options.codecURI);
|
|
2767
|
+
workerOptions.useWebWorkers = !streamCopy && workerSupported && (useWebWorkers || (useWebWorkers === UNDEFINED_VALUE && config.useWebWorkers));
|
|
2648
2768
|
workerOptions.workerURI = workerOptions.useWebWorkers && workerURI ? workerURI : UNDEFINED_VALUE;
|
|
2649
2769
|
options.useCompressionStream = useCompressionStream || (useCompressionStream === UNDEFINED_VALUE && config.useCompressionStream);
|
|
2650
2770
|
return (await getWorker()).run();
|
|
@@ -2684,6 +2804,14 @@
|
|
|
2684
2804
|
}
|
|
2685
2805
|
}
|
|
2686
2806
|
|
|
2807
|
+
function resolveCodecURI(codecURI, baseURI) {
|
|
2808
|
+
try {
|
|
2809
|
+
return new URL(codecURI, baseURI).toString();
|
|
2810
|
+
} catch {
|
|
2811
|
+
return codecURI;
|
|
2812
|
+
}
|
|
2813
|
+
}
|
|
2814
|
+
|
|
2687
2815
|
function armStarvationTimeout() {
|
|
2688
2816
|
if (!starvationTimeout && pendingRequests.length && Number.isFinite(starvationDelay) && starvationDelay >= 0) {
|
|
2689
2817
|
starvationTimeout = setTimeout(onWorkerStarvation, starvationDelay);
|
|
@@ -2794,6 +2922,7 @@
|
|
|
2794
2922
|
const HTTP_METHOD_GET = "GET";
|
|
2795
2923
|
const HTTP_RANGE_UNIT = "bytes";
|
|
2796
2924
|
const DEFAULT_BUFFER_SIZE = 256 * 1024;
|
|
2925
|
+
const DEFAULT_MAXIMUM_RANGE_SIZE = 16 * 1024 * 1024;
|
|
2797
2926
|
|
|
2798
2927
|
const PROPERTY_NAME_WRITABLE = "writable";
|
|
2799
2928
|
const DISK_BOUNDARY = Symbol();
|
|
@@ -3106,6 +3235,7 @@
|
|
|
3106
3235
|
forceRangeRequests,
|
|
3107
3236
|
combineSizeEocd,
|
|
3108
3237
|
checkResourceChanges = true,
|
|
3238
|
+
maximumRangeSize = DEFAULT_MAXIMUM_RANGE_SIZE,
|
|
3109
3239
|
fetch
|
|
3110
3240
|
} = options;
|
|
3111
3241
|
options = Object.assign({}, options);
|
|
@@ -3114,6 +3244,7 @@
|
|
|
3114
3244
|
delete options.forceRangeRequests;
|
|
3115
3245
|
delete options.combineSizeEocd;
|
|
3116
3246
|
delete options.checkResourceChanges;
|
|
3247
|
+
delete options.maximumRangeSize;
|
|
3117
3248
|
delete options.useXHR;
|
|
3118
3249
|
delete options.fetch;
|
|
3119
3250
|
Object.assign(httpReader, {
|
|
@@ -3124,6 +3255,7 @@
|
|
|
3124
3255
|
forceRangeRequests,
|
|
3125
3256
|
combineSizeEocd,
|
|
3126
3257
|
checkResourceChanges,
|
|
3258
|
+
maximumRangeSize,
|
|
3127
3259
|
fetch
|
|
3128
3260
|
});
|
|
3129
3261
|
}
|
|
@@ -3209,40 +3341,31 @@
|
|
|
3209
3341
|
|
|
3210
3342
|
function createRangeReadable(httpReader, offset, size) {
|
|
3211
3343
|
let bodyReader;
|
|
3344
|
+
let windowOffset = offset;
|
|
3345
|
+
let windowRemainingLength = 0;
|
|
3212
3346
|
let remainingLength = size;
|
|
3213
3347
|
return new ReadableStream({
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
if (response.status != 206) {
|
|
3217
|
-
throw new Error(ERR_HTTP_RANGE);
|
|
3218
|
-
}
|
|
3219
|
-
const contentRangeHeader = response.headers.get(HTTP_HEADER_CONTENT_RANGE);
|
|
3220
|
-
if (contentRangeHeader) {
|
|
3221
|
-
const rangeStart = Number(contentRangeHeader.trim().split(/[\s-]+/)[1]);
|
|
3222
|
-
if (!Number.isNaN(rangeStart) && rangeStart != offset) {
|
|
3223
|
-
throw new Error(ERR_HTTP_RANGE);
|
|
3224
|
-
}
|
|
3225
|
-
}
|
|
3226
|
-
checkResourceValidators(httpReader, response);
|
|
3227
|
-
setResourceValidators(httpReader, response);
|
|
3228
|
-
bodyReader = response.body.getReader();
|
|
3348
|
+
start() {
|
|
3349
|
+
return openWindow();
|
|
3229
3350
|
},
|
|
3230
3351
|
async pull(controller) {
|
|
3352
|
+
if (!bodyReader) {
|
|
3353
|
+
await openWindow();
|
|
3354
|
+
}
|
|
3231
3355
|
const { value, done } = await bodyReader.read();
|
|
3232
3356
|
if (done) {
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3357
|
+
throw new Error(ERR_HTTP_RANGE);
|
|
3358
|
+
}
|
|
3359
|
+
const chunk = value.length > windowRemainingLength ? value.subarray(0, windowRemainingLength) : value;
|
|
3360
|
+
windowRemainingLength -= chunk.length;
|
|
3361
|
+
remainingLength -= chunk.length;
|
|
3362
|
+
if (chunk.length) {
|
|
3363
|
+
controller.enqueue(chunk);
|
|
3364
|
+
}
|
|
3365
|
+
if (!windowRemainingLength) {
|
|
3366
|
+
await closeWindow();
|
|
3243
3367
|
if (!remainingLength) {
|
|
3244
3368
|
controller.close();
|
|
3245
|
-
await bodyReader.cancel();
|
|
3246
3369
|
}
|
|
3247
3370
|
}
|
|
3248
3371
|
},
|
|
@@ -3250,6 +3373,32 @@
|
|
|
3250
3373
|
return bodyReader && bodyReader.cancel(reason);
|
|
3251
3374
|
}
|
|
3252
3375
|
});
|
|
3376
|
+
|
|
3377
|
+
async function openWindow() {
|
|
3378
|
+
const windowLength = Math.min(httpReader.maximumRangeSize, remainingLength);
|
|
3379
|
+
const response = await sendFetchRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, windowOffset, windowLength));
|
|
3380
|
+
if (response.status != 206) {
|
|
3381
|
+
throw new Error(ERR_HTTP_RANGE);
|
|
3382
|
+
}
|
|
3383
|
+
const contentRangeHeader = response.headers.get(HTTP_HEADER_CONTENT_RANGE);
|
|
3384
|
+
if (contentRangeHeader) {
|
|
3385
|
+
const rangeStart = Number(contentRangeHeader.trim().split(/[\s-]+/)[1]);
|
|
3386
|
+
if (!Number.isNaN(rangeStart) && rangeStart != windowOffset) {
|
|
3387
|
+
throw new Error(ERR_HTTP_RANGE);
|
|
3388
|
+
}
|
|
3389
|
+
}
|
|
3390
|
+
checkResourceValidators(httpReader, response);
|
|
3391
|
+
setResourceValidators(httpReader, response);
|
|
3392
|
+
windowOffset += windowLength;
|
|
3393
|
+
windowRemainingLength = windowLength;
|
|
3394
|
+
bodyReader = response.body.getReader();
|
|
3395
|
+
}
|
|
3396
|
+
|
|
3397
|
+
async function closeWindow() {
|
|
3398
|
+
const currentBodyReader = bodyReader;
|
|
3399
|
+
bodyReader = UNDEFINED_VALUE;
|
|
3400
|
+
await currentBodyReader.cancel();
|
|
3401
|
+
}
|
|
3253
3402
|
}
|
|
3254
3403
|
|
|
3255
3404
|
function getContentRangeSize(response) {
|
|
@@ -3946,6 +4095,7 @@
|
|
|
3946
4095
|
const OPTION_PREVENT_CLOSE = "preventClose";
|
|
3947
4096
|
const OPTION_ENCRYPTION_STRENGTH = "encryptionStrength";
|
|
3948
4097
|
const OPTION_EXTENDED_TIMESTAMP = "extendedTimestamp";
|
|
4098
|
+
const OPTION_NTFS_TIMESTAMP = "ntfsTimestamp";
|
|
3949
4099
|
const OPTION_KEEP_ORDER = "keepOrder";
|
|
3950
4100
|
const OPTION_LEVEL = "level";
|
|
3951
4101
|
const OPTION_BUFFERED_WRITE = "bufferedWrite";
|
|
@@ -4417,7 +4567,8 @@
|
|
|
4417
4567
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION$1);
|
|
4418
4568
|
}
|
|
4419
4569
|
}
|
|
4420
|
-
|
|
4570
|
+
const registeredCodec = passThrough ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
|
|
4571
|
+
if ((compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE && compressionMethod != COMPRESSION_METHOD_DEFLATE_64 && !registeredCodec) && !passThrough) {
|
|
4421
4572
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION$1);
|
|
4422
4573
|
}
|
|
4423
4574
|
if (dataArray.length < HEADER_SIZE || getUint32(dataView, 0) != LOCAL_FILE_HEADER_SIGNATURE) {
|
|
@@ -4456,7 +4607,7 @@
|
|
|
4456
4607
|
fileEntry.zipCrypto = zipCrypto;
|
|
4457
4608
|
}
|
|
4458
4609
|
if (encrypted) {
|
|
4459
|
-
if (!zipCrypto && extraFieldAES.strength
|
|
4610
|
+
if (!zipCrypto && (extraFieldAES.strength < 1 || extraFieldAES.strength > 3)) {
|
|
4460
4611
|
throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
|
|
4461
4612
|
} else if (!password && !rawPassword) {
|
|
4462
4613
|
throw new Error(ERR_ENCRYPTED);
|
|
@@ -4495,6 +4646,8 @@
|
|
|
4495
4646
|
useCompressionStream,
|
|
4496
4647
|
transferStreams: getOptionValue$1(zipEntry, options, OPTION_TRANSFER_STREAMS),
|
|
4497
4648
|
deflate64,
|
|
4649
|
+
format: registeredCodec ? registeredCodec.format : UNDEFINED_VALUE,
|
|
4650
|
+
codecURI: registeredCodec ? registeredCodec.codecURI : UNDEFINED_VALUE,
|
|
4498
4651
|
checkPasswordOnly
|
|
4499
4652
|
},
|
|
4500
4653
|
config,
|
|
@@ -5112,6 +5265,7 @@
|
|
|
5112
5265
|
const ERR_INVALID_ENTRY_NAME = "File entry name exceeds 64KB";
|
|
5113
5266
|
const ERR_INVALID_VERSION = "Version exceeds 65535";
|
|
5114
5267
|
const ERR_INVALID_ENCRYPTION_STRENGTH = "The strength must equal 1, 2, or 3";
|
|
5268
|
+
const ERR_UNSUPPORTED_ENCRYPTION_USDZ = "Encryption is not supported in USDZ files";
|
|
5115
5269
|
const ERR_INVALID_EXTRAFIELD_TYPE = "Extra field type exceeds 65535";
|
|
5116
5270
|
const ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB";
|
|
5117
5271
|
const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
|
|
@@ -5576,6 +5730,7 @@
|
|
|
5576
5730
|
const encryptionStrength = getOptionValue(zipWriter, options, OPTION_ENCRYPTION_STRENGTH, 3);
|
|
5577
5731
|
const zipCrypto = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO);
|
|
5578
5732
|
const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
|
|
5733
|
+
const ntfsTimestamp = getOptionValue(zipWriter, options, OPTION_NTFS_TIMESTAMP);
|
|
5579
5734
|
const keepOrder = getOptionValue(zipWriter, options, OPTION_KEEP_ORDER, true);
|
|
5580
5735
|
const useWebWorkers = getOptionValue(zipWriter, options, OPTION_USE_WEB_WORKERS);
|
|
5581
5736
|
const transferStreams = getOptionValue(zipWriter, options, OPTION_TRANSFER_STREAMS);
|
|
@@ -5585,11 +5740,20 @@
|
|
|
5585
5740
|
const signal = getOptionValue(zipWriter, options, OPTION_SIGNAL);
|
|
5586
5741
|
const useUnicodeFileNames = getOptionValue(zipWriter, options, OPTION_USE_UNICODE_FILE_NAMES, true);
|
|
5587
5742
|
const compressionMethod = getOptionValue(zipWriter, options, PROPERTY_NAME_COMPRESSION_METHOD);
|
|
5743
|
+
const registeredCodec = passThrough || compressionMethod === UNDEFINED_VALUE ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
|
|
5588
5744
|
if (!passThrough && compressionMethod !== UNDEFINED_VALUE &&
|
|
5589
|
-
compressionMethod !== COMPRESSION_METHOD_STORE && compressionMethod !== COMPRESSION_METHOD_DEFLATE) {
|
|
5745
|
+
compressionMethod !== COMPRESSION_METHOD_STORE && compressionMethod !== COMPRESSION_METHOD_DEFLATE && !registeredCodec) {
|
|
5590
5746
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
5591
5747
|
}
|
|
5592
5748
|
let level = getOptionValue(zipWriter, options, OPTION_LEVEL);
|
|
5749
|
+
if (zipWriter.options[OPTION_USDZ]) {
|
|
5750
|
+
if (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) {
|
|
5751
|
+
throw new Error(ERR_UNSUPPORTED_ENCRYPTION_USDZ);
|
|
5752
|
+
}
|
|
5753
|
+
if (level === UNDEFINED_VALUE && compressionMethod === UNDEFINED_VALUE) {
|
|
5754
|
+
level = 0;
|
|
5755
|
+
}
|
|
5756
|
+
}
|
|
5593
5757
|
let useCompressionStream = getOptionValue(zipWriter, options, OPTION_USE_COMPRESSION_STREAM);
|
|
5594
5758
|
let dataDescriptor = getOptionValue(zipWriter, options, OPTION_DATA_DESCRIPTOR);
|
|
5595
5759
|
if (bufferedWrite && dataDescriptor === UNDEFINED_VALUE) {
|
|
@@ -5601,7 +5765,7 @@
|
|
|
5601
5765
|
if (level !== UNDEFINED_VALUE && level != 6) {
|
|
5602
5766
|
useCompressionStream = false;
|
|
5603
5767
|
}
|
|
5604
|
-
if (!useCompressionStream && (zipWriter.config.CompressionStream === UNDEFINED_VALUE && zipWriter.config.CompressionStreamZlib === UNDEFINED_VALUE)) {
|
|
5768
|
+
if (!useCompressionStream && !registeredCodec && (zipWriter.config.CompressionStream === UNDEFINED_VALUE && zipWriter.config.CompressionStreamZlib === UNDEFINED_VALUE)) {
|
|
5605
5769
|
level = 0;
|
|
5606
5770
|
}
|
|
5607
5771
|
const zip64 = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIP64);
|
|
@@ -5645,6 +5809,7 @@
|
|
|
5645
5809
|
encryptionStrength,
|
|
5646
5810
|
zipCrypto,
|
|
5647
5811
|
extendedTimestamp,
|
|
5812
|
+
ntfsTimestamp,
|
|
5648
5813
|
keepOrder,
|
|
5649
5814
|
useWebWorkers,
|
|
5650
5815
|
transferStreams,
|
|
@@ -5654,6 +5819,9 @@
|
|
|
5654
5819
|
signal,
|
|
5655
5820
|
useUnicodeFileNames,
|
|
5656
5821
|
compressionMethod,
|
|
5822
|
+
format: registeredCodec ? registeredCodec.format : UNDEFINED_VALUE,
|
|
5823
|
+
codecURI: registeredCodec ? registeredCodec.codecURI : UNDEFINED_VALUE,
|
|
5824
|
+
codecVersionNeeded: registeredCodec ? registeredCodec.versionNeeded : UNDEFINED_VALUE,
|
|
5657
5825
|
level,
|
|
5658
5826
|
useCompressionStream,
|
|
5659
5827
|
dataDescriptor,
|
|
@@ -5950,7 +6118,9 @@
|
|
|
5950
6118
|
msdosAttributesRaw,
|
|
5951
6119
|
msdosAttributes,
|
|
5952
6120
|
useCompressionStream,
|
|
5953
|
-
passThrough
|
|
6121
|
+
passThrough,
|
|
6122
|
+
format,
|
|
6123
|
+
codecURI
|
|
5954
6124
|
} = options;
|
|
5955
6125
|
const fileEntry = {
|
|
5956
6126
|
lock,
|
|
@@ -6010,7 +6180,9 @@
|
|
|
6010
6180
|
encrypted: encrypted && !passThrough,
|
|
6011
6181
|
useWebWorkers,
|
|
6012
6182
|
useCompressionStream,
|
|
6013
|
-
transferStreams
|
|
6183
|
+
transferStreams,
|
|
6184
|
+
format,
|
|
6185
|
+
codecURI
|
|
6014
6186
|
},
|
|
6015
6187
|
config,
|
|
6016
6188
|
streamOptions: { signal, size, onstart, onprogress, onend }
|
|
@@ -6082,6 +6254,7 @@
|
|
|
6082
6254
|
rawExtraField,
|
|
6083
6255
|
encryptionStrength,
|
|
6084
6256
|
extendedTimestamp,
|
|
6257
|
+
ntfsTimestamp,
|
|
6085
6258
|
passThrough,
|
|
6086
6259
|
encrypted,
|
|
6087
6260
|
zip64UncompressedSize,
|
|
@@ -6127,7 +6300,8 @@
|
|
|
6127
6300
|
let extraFieldExtendedTimestampFlag;
|
|
6128
6301
|
if (extendedTimestamp) {
|
|
6129
6302
|
const lastModTimeUnix = getTimeUnix(lastModDate);
|
|
6130
|
-
|
|
6303
|
+
const lastModTimeUnixInRange = inUnixTimeRange(lastModTimeUnix);
|
|
6304
|
+
if (lastModTimeUnixInRange) {
|
|
6131
6305
|
const extraFieldTimestampLength = 9 + (lastAccessDate ? 4 : 0) + (creationDate ? 4 : 0);
|
|
6132
6306
|
const extraFieldTimestamp = createRecordWriter(extraFieldTimestampLength);
|
|
6133
6307
|
extraFieldExtendedTimestampFlag = 0x1 + (lastAccessDate ? 0x2 : 0) + (creationDate ? 0x4 : 0);
|
|
@@ -6145,19 +6319,26 @@
|
|
|
6145
6319
|
} else {
|
|
6146
6320
|
rawExtraFieldExtendedTimestamp = EMPTY_UINT8_ARRAY;
|
|
6147
6321
|
}
|
|
6148
|
-
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
|
|
6322
|
+
const writeExtraFieldNTFS = ntfsTimestamp === UNDEFINED_VALUE ?
|
|
6323
|
+
!lastModTimeUnixInRange || Boolean(lastAccessDate || creationDate) :
|
|
6324
|
+
ntfsTimestamp;
|
|
6325
|
+
if (writeExtraFieldNTFS) {
|
|
6326
|
+
try {
|
|
6327
|
+
const lastModTimeNTFS = getTimeNTFS(lastModDate);
|
|
6328
|
+
const extraFieldNTFS = createRecordWriter(36);
|
|
6329
|
+
extraFieldNTFS.uint16(EXTRAFIELD_TYPE_NTFS);
|
|
6330
|
+
extraFieldNTFS.uint16(32);
|
|
6331
|
+
extraFieldNTFS.skip(4);
|
|
6332
|
+
extraFieldNTFS.uint16(EXTRAFIELD_TYPE_NTFS_TAG1);
|
|
6333
|
+
extraFieldNTFS.uint16(24);
|
|
6334
|
+
extraFieldNTFS.uint64(lastModTimeNTFS);
|
|
6335
|
+
extraFieldNTFS.uint64(getTimeNTFS(lastAccessDate) || lastModTimeNTFS);
|
|
6336
|
+
extraFieldNTFS.uint64(getTimeNTFS(creationDate) || lastModTimeNTFS);
|
|
6337
|
+
rawExtraFieldNTFS = extraFieldNTFS.array;
|
|
6338
|
+
} catch {
|
|
6339
|
+
rawExtraFieldNTFS = EMPTY_UINT8_ARRAY;
|
|
6340
|
+
}
|
|
6341
|
+
} else {
|
|
6161
6342
|
rawExtraFieldNTFS = EMPTY_UINT8_ARRAY;
|
|
6162
6343
|
}
|
|
6163
6344
|
} else {
|
|
@@ -6195,6 +6376,10 @@
|
|
|
6195
6376
|
if (compressionMethod === UNDEFINED_VALUE) {
|
|
6196
6377
|
compressionMethod = compressed ? COMPRESSION_METHOD_DEFLATE : COMPRESSION_METHOD_STORE;
|
|
6197
6378
|
}
|
|
6379
|
+
const { codecVersionNeeded } = options;
|
|
6380
|
+
if (compressed && codecVersionNeeded !== UNDEFINED_VALUE) {
|
|
6381
|
+
version = version > codecVersionNeeded ? version : codecVersionNeeded;
|
|
6382
|
+
}
|
|
6198
6383
|
if (zip64) {
|
|
6199
6384
|
version = version > VERSION_ZIP64 ? version : VERSION_ZIP64;
|
|
6200
6385
|
}
|
|
@@ -7699,6 +7884,8 @@
|
|
|
7699
7884
|
exports.ERR_EXTRAFIELD_ZIP64_NOT_FOUND = ERR_EXTRAFIELD_ZIP64_NOT_FOUND;
|
|
7700
7885
|
exports.ERR_HTTP_RANGE = ERR_HTTP_RANGE;
|
|
7701
7886
|
exports.ERR_HTTP_RESOURCE_CHANGED = ERR_HTTP_RESOURCE_CHANGED;
|
|
7887
|
+
exports.ERR_INVALID_CODEC_DEFINITION = ERR_INVALID_CODEC_DEFINITION;
|
|
7888
|
+
exports.ERR_INVALID_CODEC_MODULE = ERR_INVALID_CODEC_MODULE;
|
|
7702
7889
|
exports.ERR_INVALID_COMMENT = ERR_INVALID_COMMENT;
|
|
7703
7890
|
exports.ERR_INVALID_COMPRESSED_DATA = ERR_INVALID_COMPRESSED_DATA;
|
|
7704
7891
|
exports.ERR_INVALID_ENCRYPTION_STRENGTH = ERR_INVALID_ENCRYPTION_STRENGTH;
|
|
@@ -7713,11 +7900,13 @@
|
|
|
7713
7900
|
exports.ERR_ITERATOR_COMPLETED_TOO_SOON = ERR_ITERATOR_COMPLETED_TOO_SOON;
|
|
7714
7901
|
exports.ERR_LOCAL_FILE_HEADER_NOT_FOUND = ERR_LOCAL_FILE_HEADER_NOT_FOUND;
|
|
7715
7902
|
exports.ERR_OVERLAPPING_ENTRY = ERR_OVERLAPPING_ENTRY;
|
|
7903
|
+
exports.ERR_RESERVED_COMPRESSION_METHOD = ERR_RESERVED_COMPRESSION_METHOD;
|
|
7716
7904
|
exports.ERR_SPLIT_ZIP_FILE = ERR_SPLIT_ZIP_FILE;
|
|
7717
7905
|
exports.ERR_UNDEFINED_READER = ERR_UNDEFINED_READER;
|
|
7718
7906
|
exports.ERR_UNDEFINED_UNCOMPRESSED_SIZE = ERR_UNDEFINED_UNCOMPRESSED_SIZE;
|
|
7719
7907
|
exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION$1;
|
|
7720
7908
|
exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;
|
|
7909
|
+
exports.ERR_UNSUPPORTED_ENCRYPTION_USDZ = ERR_UNSUPPORTED_ENCRYPTION_USDZ;
|
|
7721
7910
|
exports.ERR_UNSUPPORTED_FORMAT = ERR_UNSUPPORTED_FORMAT;
|
|
7722
7911
|
exports.ERR_WRITER_NOT_INITIALIZED = ERR_WRITER_NOT_INITIALIZED;
|
|
7723
7912
|
exports.ERR_ZIP_NOT_EMPTY = ERR_ZIP_NOT_EMPTY;
|
|
@@ -7740,7 +7929,9 @@
|
|
|
7740
7929
|
exports.createOPFSTempStream = createOPFSTempStream;
|
|
7741
7930
|
exports.createSyncAccessHandleTempStream = createSyncAccessHandleTempStream;
|
|
7742
7931
|
exports.getMimeType = getMimeType;
|
|
7932
|
+
exports.registerCodec = registerCodec;
|
|
7743
7933
|
exports.resetConfiguration = resetConfiguration;
|
|
7744
7934
|
exports.terminateWorkers = terminateWorkersAndModule;
|
|
7935
|
+
exports.unregisterCodec = unregisterCodec;
|
|
7745
7936
|
|
|
7746
7937
|
}));
|