@zip.js/zip.js 2.8.36 → 2.8.38
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 +4 -2
- package/dist/zip-core.js +356 -63
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +301 -63
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +359 -66
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +357 -64
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +358 -65
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +359 -66
- 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 +357 -64
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +359 -66
- package/index-native.min.js +1 -1
- package/index.cjs +357 -64
- package/index.d.cts +126 -4
- package/index.d.ts +126 -4
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +21 -4
- package/lib/core/codec-registry.js +116 -0
- package/lib/core/codec-worker.js +94 -18
- package/lib/core/configuration.js +2 -0
- package/lib/core/constants.js +5 -1
- package/lib/core/options.js +2 -0
- package/lib/core/streams/codec-stream.js +6 -2
- package/lib/core/streams/zip-entry-stream.js +50 -16
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/web-worker-base.js +30 -8
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-reader.js +29 -3
- package/lib/core/zip-writer.js +68 -25
- package/lib/zip-core-base.js +7 -0
- package/lib/zip-core-reader.js +2 -1
- package/lib/zip-core-writer.js +1 -0
- package/package.json +1 -1
- package/worker-message-property-names.js +1 -1
package/index.cjs
CHANGED
|
@@ -40,6 +40,7 @@ const COMPRESSION_METHOD_AES = 0x63;
|
|
|
40
40
|
const LOCAL_FILE_HEADER_SIGNATURE = 0x04034b50;
|
|
41
41
|
const SPLIT_ZIP_FILE_SIGNATURE = 0x08074b50;
|
|
42
42
|
const DATA_DESCRIPTOR_RECORD_SIGNATURE = SPLIT_ZIP_FILE_SIGNATURE;
|
|
43
|
+
const ARCHIVE_EXTRA_DATA_SIGNATURE = 0x08064b50;
|
|
43
44
|
const CENTRAL_FILE_HEADER_SIGNATURE = 0x02014b50;
|
|
44
45
|
const END_OF_CENTRAL_DIR_SIGNATURE = 0x06054b50;
|
|
45
46
|
const ZIP64_END_OF_CENTRAL_DIR_SIGNATURE = 0x06064b50;
|
|
@@ -71,6 +72,7 @@ const BITFLAG_LEVEL_MAX_MASK = 0b010;
|
|
|
71
72
|
const BITFLAG_LEVEL_FAST_MASK = 0b100;
|
|
72
73
|
const BITFLAG_LEVEL_SUPER_FAST_MASK = 0b110;
|
|
73
74
|
const BITFLAG_DATA_DESCRIPTOR = 0b1000;
|
|
75
|
+
const BITFLAG_STRONG_ENCRYPTION = 0b1000000;
|
|
74
76
|
const BITFLAG_LANG_ENCODING_FLAG = 0b100000000000;
|
|
75
77
|
const FILE_ATTR_MSDOS_DIR_MASK = 0b10000;
|
|
76
78
|
const FILE_ATTR_MSDOS_READONLY_MASK = 0x01;
|
|
@@ -98,7 +100,7 @@ const HEADER_OFFSET_COMPRESSED_SIZE = 14;
|
|
|
98
100
|
const HEADER_OFFSET_UNCOMPRESSED_SIZE = 18;
|
|
99
101
|
const LOCAL_HEADER_COMMON_OFFSET = 4;
|
|
100
102
|
|
|
101
|
-
const MAX_DATE = new Date(2107, 11, 31);
|
|
103
|
+
const MAX_DATE = new Date(2107, 11, 31, 23, 59, 58);
|
|
102
104
|
const MIN_DATE = new Date(1980, 0, 1);
|
|
103
105
|
|
|
104
106
|
const UNDEFINED_VALUE = undefined;
|
|
@@ -154,6 +156,7 @@ const DEFAULT_CONFIGURATION = {
|
|
|
154
156
|
maxWorkers,
|
|
155
157
|
terminateWorkerTimeout: 5000,
|
|
156
158
|
workerStarvationTimeout: 5000,
|
|
159
|
+
workerStartupTimeout: 5000,
|
|
157
160
|
useWebWorkers: true,
|
|
158
161
|
useCompressionStream: true,
|
|
159
162
|
transferStreams: true,
|
|
@@ -169,6 +172,7 @@ const CONFIGURABLE_PROPERTY_NAMES = [
|
|
|
169
172
|
"maxWorkers",
|
|
170
173
|
"terminateWorkerTimeout",
|
|
171
174
|
"workerStarvationTimeout",
|
|
175
|
+
"workerStartupTimeout",
|
|
172
176
|
"useCompressionStream",
|
|
173
177
|
"useWebWorkers",
|
|
174
178
|
"transferStreams",
|
|
@@ -214,7 +218,104 @@ function resetConfiguration() {
|
|
|
214
218
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
215
219
|
}
|
|
216
220
|
|
|
217
|
-
function t$1(t){const e='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream: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 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 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)}});}
|
|
221
|
+
function t$1(t){const e='(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:f,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:S}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)e=1&e?e>>>1^3988292384:e>>>1;C[0][t]=e}for(let t=0;256>t;t++)for(let e=1;8>e;e++){const n=C[e-1][t];C[e][t]=n>>>8^C[0][255&n]}const[A,I,x,P,D,R,U,M]=C;class _{constructor(t){this.o=t||-1}append(t){let e=0|this.o;const n=0|t.length;let s=0;if(n>=8&&t.buffer){const r=new l(t.buffer,t.byteOffset,n),o=n-8;for(;o>=s;s+=8){const t=e^r.getInt32(s,!0),n=r.getInt32(s+4,!0);e=M[255&t]^U[t>>>8&255]^R[t>>>16&255]^D[t>>>24&255]^P[255&n]^x[n>>>8&255]^I[n>>>16&255]^A[n>>>24&255]}}for(;n>s;s++)e=e>>>8^A[255&(e^t[s])];this.o=e}get(){return~this.o}}class B extends d{constructor(){let t;const e=new _;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}function V(t,e){const n=new o(t.length+e.length);return n.set(t),n.set(e,t.length),n}const W={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=W.l(n);return 32===s?t.concat(e):W.h(e,s,0|n,t.slice(0,t.length-1))},m(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+W.l(n)},S(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,s.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=W.v(e,t[n-1]&2147483648>>e-1,1)),t},v:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r<t.length;r++)s.push(n|t[r]>>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=W.l(r);return s.push(W.v(e+o&31,e+o>32?n:s.pop(),1)),s}},K={bytes:{C(t){const e=W.m(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},A(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(W.v(8*(3&n),s)),e}}},E=class{constructor(t){const e=this;e.blockSize=512,e.I=[1732584193,4023233417,2562383102,271733878,3285377520],e.P=[1518500249,1859775393,2400959708,3395469782],t?(e.D=t.D.slice(0),e.R=t.R.slice(0),e.U=t.U):e.reset()}reset(){const t=this;return t.D=t.I.slice(0),t.R=[],t.U=0,t}update(t){const e=this;"string"==typeof t&&(t=K.M.A(t));const n=e.R=W.concat(e.R,t),s=e.U,o=e.U=s+W.m(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e._(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}B(){const t=this;let e=t.R;const n=t.D;e=W.concat(e,[W.v(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.U/4294967296)),e.push(0|t.U);e.length;)t._(e.splice(0,16));return t.reset(),n}V(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}W(t,e){return e<<t|e>>>32-t}_(e){const n=this,r=n.D,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],f=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.W(5,i)+n.V(t,c,a,f)+l+o[t]+n.P[s.floor(t/20)]|0;l=f,f=a,a=n.W(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+l|0}},L={importKey:t=>new L.K(K.bytes.A(t)),L(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let i,c,a,f,u;const w=new ArrayBuffer(o),h=new l(w);let p=0;const d=W;for(e=K.bytes.A(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),f=0;f<c.length;f++)i[f]^=c[f];for(a=0;(o||1)>p&&a<i.length;a++)h.setInt32(p,i[a]),p+=4}return w.slice(0,s/8)},K:class{constructor(t){const e=this,n=e.O=E,s=[[],[]];e.T=[new n,new n];const r=e.T[0].blockSize/32;t.length>r&&(t=(new n).update(t).B());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.T[0].update(s[0]),e.T[1].update(s[1]),e.j=new n(e.T[0])}reset(){const t=this;t.j=new t.O(t.T[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.B(),n=new t.O(t.T[1]).update(e).B();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},O=typeof h!=b&&typeof h.getRandomValues==k,T="Invalid password",j="Invalid signature",H="zipjs-abort-check-password";function Z(t){if(O)return h.getRandomValues(t);throw new r("Crypto API not supported")}const F=16,N={name:"PBKDF2"},q=e.assign({hash:{name:"HMAC"}},N),G=e.assign({iterations:1e3,hash:{name:"SHA-1"}},N),J=["deriveBits"],Q=[8,12,16],X=[16,24,32],Y=10,$=[0,0,0,0],tt=typeof h!=b,et=tt&&h.subtle,nt=tt&&typeof et!=b,st=K.bytes,rt=class{constructor(t){const e=this;e.Z=[[[],[],[],[],[]],[[],[],[],[],[]]],e.Z[0][0][0]||e.F();const n=e.Z[0][4],s=e.Z[1],o=t.length;let i,c,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.P=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}F(){const t=this.Z[0],e=this.Z[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,f;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,f=r[a=r[c=r[l]]];let u=16843009*f^65537*a^257*c^16843008*l,w=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][o]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}N(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.P[e],s=n.length/4-2,o=[0,0,0,0],i=this.Z[e],c=i[0],a=i[1],f=i[2],l=i[3],u=i[4];let w,h,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],S=4;for(let t=0;s>t;t++)w=c[d>>>24]^a[y>>16&255]^f[m>>8&255]^l[255&g]^n[S],h=c[y>>>24]^a[m>>16&255]^f[g>>8&255]^l[255&d]^n[S+1],p=c[m>>>24]^a[g>>16&255]^f[d>>8&255]^l[255&y]^n[S+2],g=c[g>>>24]^a[d>>16&255]^f[y>>8&255]^l[255&m]^n[S+3],S+=4,d=w,y=h,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[S++],w=d,d=y,y=m,m=g,g=w;return o}},ot=class{constructor(t,e){this.G=t,this.J=e,this.X=e}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}$(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}et(t){0===(t[0]=this.$(t[0]))&&(t[1]=this.$(t[1]))}Y(t,e,n){let s;if(!(s=e.length))return[];const r=W.m(e);for(let r=0;s>r;r+=4){this.et(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return W.S(e,r)}},it=L.K;let ct=tt&&nt&&typeof et.importKey==k,at=tt&&nt&&typeof et.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:e,encryptionStrength:n,checkPasswordOnly:s}){super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:i,strength:c,nt:a,ready:f}=n;i?(await(async(t,e,n,s)=>{const o=await ht(t,e,n,dt(s,0,Q[e])),i=dt(s,Q[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(T)})(n,c,i,dt(t,0,Q[c]+2)),t=dt(t,Q[c]+2),s?e.error(new r(H)):a()):await f;const l=new o(t.length-Y-(t.length-Y)%F);e.enqueue(wt(n,t,l,0,Y,!0))},async flush(t){const{st:e,ot:n,pending:s,ready:o}=this;if(n&&e){await o;const i=dt(s,0,s.length-Y),c=dt(s,s.length-Y);let a=z;if(i.length){const t=mt(st,i);n.update(t);const s=e.update(t);a=yt(st,s)}const f=dt(yt(st,n.digest()),0,Y);let l=s.length<Y?1:0;for(let t=0;Y>t;t++)l|=f[t]^c[t];if(l)throw new r(j);t.enqueue(a)}}})}}class lt extends d{constructor({password:t,rawPassword:e,encryptionStrength:n}){let s;super({start(){ut(this,t,e,n)},async transform(t,e){const n=this,{password:s,strength:r,nt:i,ready:c}=n;let a=z;s?(a=await(async(t,e,n)=>{const s=Z(new o(Q[e]));return V(s,await ht(t,e,n,s))})(n,r,s),i()):await c;const f=new o(a.length+t.length-t.length%F);f.set(a,0),e.enqueue(wt(n,t,f,a.length,0))},async flush(t){const{st:e,ot:n,pending:r,ready:o}=this;if(n&&e){await o;let i=z;if(r.length){const t=e.update(mt(st,r));n.update(t),i=yt(st,t)}s.signature=yt(st,n.digest()).slice(0,Y),t.enqueue(V(i,s.signature))}}}),s=this}}function ut(t,n,s,r){e.assign(t,{ready:new u(e=>t.nt=e),password:pt(n,s),strength:r-1,pending:z})}function wt(t,e,n,s,r,i){const{st:c,ot:a,pending:f}=t;f.length&&(e=V(f,e));const l=e.length-r;let u;for(n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,s+(l-l%F)),u=0;l-F>=u;u+=F){const t=mt(st,dt(e,u,u+F));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(yt(st,r),u+s)}return t.pending=dt(e,u),n}async function ht(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!ct)return L.importKey(e);try{return await et.importKey("raw",e,n,!1,r)}catch{return ct=!1,L.importKey(e)}})(0,r,q,0,J),a=await(async(t,e,n)=>{if(!at)return L.L(e,t.salt,G.iterations,n);try{return await et.deriveBits(t,e,n)}catch{return at=!1,L.L(e,t.salt,G.iterations,n)}})(e.assign({salt:i},G),c,8*(2*X[s]+2)),f=new o(a),l=mt(st,dt(f,0,X[s])),u=mt(st,dt(f,X[s],2*X[s])),w=dt(f,2*X[s]);return e.assign(n,{keys:{key:l,it:u,passwordVerification:w},st:new ot(new rt(l),t.from($)),ot:new it(u)}),w}function pt(t,e){return e===v?(t=>{if(typeof w==b){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new w).encode(t)})(t):e}function dt(t,e,n){return t.subarray(e,n)}function yt(t,e){return t.C(e)}function mt(t,e){return t.A(e)}class gt extends d{constructor({password:t,rawPassword:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){vt(this,t,e,n)},transform(t,e){const n=this;if(n.password||n.rawPassword){const e=bt(n,t.subarray(0,12));if(n.password=n.rawPassword=null,0!=(e.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)}const Dt="deflate-raw";class Rt extends d{constructor(t,{chunkSize:e,CompressionStreamZlib:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:f,deflate64:u,format:w}=t,h=this;let p,d,y,m=super.readable;const g=w&&Pt(w),S=a&&r&&!u&&!g&&(!o||c)&&!(!i||!s);o&&!c||!a||S||(p=new B,m=Kt(m,p)),r&&(g?m=Et(m,Vt(g.CompressionStream,w,{level:f,chunkSize:e})):S?(y=new Ut,m=Et(m,new s("gzip")),m=Kt(m,y)):m=Wt(m,i,{level:f,chunkSize:e},s,n)),o&&(c?m=Kt(m,new St(t)):(d=new lt(t),m=Kt(m,d))),Bt(h,m,()=>{let t;o&&!c&&(t=d.signature),o&&!c||!a||(t=S?y.signature:new l(p.value.buffer).getUint32(0)),h.signature=t})}}class Ut extends d{constructor(){let t,e=10,n=new o(0);super({transform(t,r){if(e){const n=s.min(e,t.length);if(e-=n,!(t=t.subarray(n)).length)return}const o=n.length+t.length;if(8>=o)return void(n=V(n,t));const i=o-8,c=s.min(i,n.length);r.enqueue(V(n.subarray(0,c),t.subarray(0,i-c))),n=V(n.subarray(c),t.subarray(i-c))},flush(){const e=new l((s=n).buffer,s.byteOffset,s.byteLength);var s;t.signature=e.getUint32(0,!0),t.uncompressedSize=e.getUint32(4,!0)}}),t=this}}class Mt extends d{constructor(t,{chunkSize:e,DecompressionStreamZlib:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:f,useCompressionStream:u,deflate64:w,format:h}=t;let p,d,m=super.readable;if(i&&(o?m=Kt(m,new gt(t)):(d=new ft(t),m=Kt(m,d))),f){const t=h&&Pt(h);m=t?Et(m,Vt(t.DecompressionStream,h,{chunkSize:e})):Wt(m,u,{chunkSize:e,deflate64:w},s,n),m=(t=>{const e=t.getReader();return new y({async pull(t){let n;try{n=await e.read()}catch(t){if(t&&t.message)throw t;const e=new r("Invalid compressed data");throw e.cause=t,e}const{value:s,done:o}=n;o?t.close():t.enqueue(s)},cancel:t=>e.cancel(t)})})(m)}i&&!o||!c||(p=new B,m=Kt(m,p)),Bt(this,m,()=>{if((!i||o)&&c){const t=new l(p.value.buffer);if(a!=t.getUint32(0,!1))throw new r(j)}})}}const _t=new f;function Bt(t,n,s){n=Kt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function Vt(t,e,n){if(!t)throw new r("Compression method not supported");return new t(e,n)}function Wt(t,e,n,s,r){const o=e&&s?s:r||s,i=n.deflate64?"deflate64-raw":Dt;let c;try{c=new o(i,n)}catch(t){if(!e||!r||o==r)throw t;c=new r(i,n)}return Et(t,c)}function Kt(t,e){return t.pipeThrough(e)}function Et(t,e){const n=e.writable.getWriter(),s=t.getReader();return(async()=>{try{for(;;){await n.ready;const t=await s.read();if(t.done){await n.close();break}await n.write(t.value)}}catch(t){await(async(t,e)=>{try{await t.abort(e)}catch{}})(n,t),await(async(t,e)=>{try{await t.cancel(e)}catch{}})(s,t)}})(),e.readable}const Lt="data",Ot="close",Tt="deflate";class jt extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith(Tt)?i=Rt:o.startsWith("inflate")&&(i=Mt),s.outputSize=0;let c=0;const a=new i(t,n),f=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>f.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class Ht extends d{constructor(t){const e=[];let s=0;function r(){const n=new o(t);let r=0;for(;t>r;){const s=e[0],o=t-r;s.length>o?(n.set(s.subarray(0,o),r),e[0]=s.subarray(o),r+=o):(n.set(s,r),r+=s.length,e.shift())}return s-=t,n}n.isFinite(t)&&t>=1||(t=65536),super({transform(n,o){for(e.push(n),s+=n.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(((t,e)=>{const n=new o(e);let s=0;for(const e of t)n.set(e,s),s+=e.length;return n})(e,s))}})}}let Zt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Zt=navigator.hardwareConcurrency)}catch{}const Ft=new f,Nt=new f;let qt,Gt,Jt,Qt,Xt,Yt=0;async function $t(t){let e,o;try{const{options:i,config:c}=t;if(i.format&&await(async(t,e)=>{!xt.has(t)&&e&&((t,e)=>{const{CompressionStream:n,DecompressionStream:s}=e;if(typeof n!=k&&typeof s!=k)throw new r("Invalid codec module");xt.set(t,{CompressionStream:n,DecompressionStream:s})})(t,await(import(e)))})(i.format,i.codecURI),c.CompressionStream=self.CompressionStream,c.DecompressionStream=self.DecompressionStream,i.compressed&&!i.format)if(i.useCompressionStream){if(!(t=>{if(!t)return!1;let e=_t.get(t);if(e===v){try{new t(Dt),e=!0}catch{e=!1}_t.set(t,e)}return e})(i.codecType.startsWith(Tt)?c.CompressionStream:c.DecompressionStream))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{i.useCompressionStream=!0}const a={highWaterMark:1},f=t.readable||new y({async pull(t){const e=new u(t=>Ft.set(Yt,t));te({type:"pull",messageId:Yt}),Yt=(Yt+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},a);o=t.writable||new m({async write(t){let e;const s=new u(t=>e=t);Nt.set(Yt,e),te({type:Lt,value:t,messageId:Yt}),Yt=(Yt+1)%n.MAX_SAFE_INTEGER,await s}},a),e=new jt(i,c),qt=new AbortController;const{signal:l}=qt;await f.pipeThrough(e).pipeThrough(new Ht((t=>s.max(t.chunkSize,64))(c))).pipeTo(o,{signal:l,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:w,inputSize:h,outputSize:p}=e;te({type:Ot,result:{signature:w,inputSize:h,outputSize:p}})}catch(t){if(t.outputSize=e?e.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}ee(t)}}function te(t){const{value:e}=t;if(e)if(e.length)try{t.value=(n=e,n.byteOffset||n.byteLength!=n.buffer.byteLength?new o(n):n).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var n}function ee(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}function ne(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="number"==typeof n.outBuffer?n.outBuffer:65536,a="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new d({start(){try{let n;if(this.lt=Jt(c),this.in=Jt(a),this.inBufferSize=a,!this.lt||!this.in)throw new r("allocation failed");if(this.ut=new o(c),t?(this.wt=Gt.deflate_process,this.ht=Gt.deflate_last_consumed,this.yt=Gt.deflate_end,this.gt=Gt.deflate_new(),n="gzip"===e?Gt.deflate_init_gzip(this.gt,i):"deflate-raw"===e?Gt.deflate_init_raw(this.gt,i):Gt.deflate_init(this.gt,i)):"deflate64-raw"===e?(this.wt=Gt.inflate9_process,this.ht=Gt.inflate9_last_consumed,this.yt=Gt.inflate9_end,this.gt=Gt.inflate9_new(),n=Gt.inflate9_init_raw(this.gt)):(this.wt=Gt.inflate_process,this.ht=Gt.inflate_last_consumed,this.yt=Gt.inflate_end,this.gt=Gt.inflate_new(),n="deflate-raw"===e?Gt.inflate_init_raw(this.gt):"gzip"===e?Gt.inflate_init_gzip(this.gt):Gt.inflate_init(this.gt)),0!==n)throw new r("init failed:"+n)}catch(t){throw f(this),t}},transform(e,n){try{const i=e,a=new o(Xt.buffer),f=this.wt,l=this.ht,u=this.lt,w=this.ut;let h=0;for(;h<i.length;){const e=s.min(i.length-h,32768);if((!this.in||this.inBufferSize<e)&&(this.in&&Qt&&(Qt(this.in),this.in=0),this.in=Jt(e),this.inBufferSize=e,!this.in))throw new r("allocation failed");a.set(i.subarray(h,h+e),this.in);const o=f(this.gt,this.in,e,u,c,0),p=16777215&o;if(p&&(w.set(a.subarray(u,u+p),0),n.enqueue(w.slice(0,p))),!t){const t=o>>24&255,e=128&t?t-256:t;if(0>e)throw new r("process error:"+e)}const d=l(this.gt);if(0===d)break;h+=d}}catch(t){f(this),n.error(t)}},flush(e){try{const n=new o(Xt.buffer),s=this.wt,i=this.lt,a=this.ut;for(;;){const o=s(this.gt,0,0,i,c,4),f=16777215&o,l=o>>24&255;if(!t){const t=128&l?l-256:l;if(0>t)throw new r("process error:"+t)}if(f&&(a.set(n.subarray(i,i+f),0),e.enqueue(a.slice(0,f))),1===l||0===f)break}}catch(t){e.error(t)}finally{const t=f(this);0!==t&&e.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let e=0;return t.gt&&t.yt&&(e=t.yt(t.gt)),t.gt=0,t.in&&Qt&&Qt(t.in),t.in=0,t.lt&&Qt&&Qt(t.lt),t.lt=0,e}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&$t(t),e==Lt){const t=Ft.get(n);Ft.delete(n),t({value:s||new o,done:r})}if("ack"==e){const t=Nt.get(n);Nt.delete(n),t()}e==Ot&&qt.abort()}catch(t){ee(t)}}),p({type:"ready"});class se{constructor(t="deflate",e){return ne(!0,t,e)}}class re{constructor(t="deflate",e){return ne(!1,t,e)}}se.St=!0,re.St=!0;let oe=!1;self.initModule=async t=>{try{const e=await(async(t,{baseURI:e})=>{if(!oe){let n,s;try{try{s=new URL(t,e)}catch{}const r=await fetch(s);n=await r.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;n=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}(t=>{if(Gt=t,({malloc:Jt,free:Qt,memory:Xt}=Gt),"function"!=typeof Jt||"function"!=typeof Qt||!Xt)throw Gt=Jt=Qt=Xt=null,new r("Invalid WASM module")})((await WebAssembly.instantiate(n)).instance.exports),oe=!0}})(t.wasmURI,t);return t.CompressionStreamZlib=se,t.DecompressionStreamZlib=re,e}catch{}}});\n';t({workerURI:t=>{const n="text/javascript";if(t){const t=new Blob([e],{type:n});return URL.createObjectURL(t)}return "data:"+n+","+encodeURIComponent(e)}});}
|
|
222
|
+
|
|
223
|
+
/*
|
|
224
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
225
|
+
|
|
226
|
+
Redistribution and use in source and binary forms, with or without
|
|
227
|
+
modification, are permitted provided that the following conditions are met:
|
|
228
|
+
|
|
229
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
230
|
+
this list of conditions and the following disclaimer.
|
|
231
|
+
|
|
232
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
233
|
+
notice, this list of conditions and the following disclaimer in
|
|
234
|
+
the documentation and/or other materials provided with the distribution.
|
|
235
|
+
|
|
236
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
237
|
+
derived from this software without specific prior written permission.
|
|
238
|
+
|
|
239
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
240
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
241
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
242
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
243
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
244
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
245
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
246
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
247
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
248
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
249
|
+
*/
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
const ERR_INVALID_CODEC_DEFINITION = "Invalid codec definition";
|
|
253
|
+
const ERR_RESERVED_COMPRESSION_METHOD = "Reserved compression method";
|
|
254
|
+
const ERR_INVALID_CODEC_MODULE = "Invalid codec module";
|
|
255
|
+
|
|
256
|
+
const STRING_TYPE = "string";
|
|
257
|
+
const RESERVED_COMPRESSION_METHODS = [
|
|
258
|
+
COMPRESSION_METHOD_STORE,
|
|
259
|
+
COMPRESSION_METHOD_DEFLATE,
|
|
260
|
+
COMPRESSION_METHOD_DEFLATE_64,
|
|
261
|
+
COMPRESSION_METHOD_AES
|
|
262
|
+
];
|
|
263
|
+
|
|
264
|
+
const registeredCodecs = new Map();
|
|
265
|
+
const codecStreams = new Map();
|
|
266
|
+
|
|
267
|
+
function registerCodec(codec = {}) {
|
|
268
|
+
const { compressionMethod, format, codecURI, CompressionStream, DecompressionStream, versionNeeded } = codec;
|
|
269
|
+
if (!Number.isInteger(compressionMethod) || compressionMethod < 0 || compressionMethod > MAX_16_BITS ||
|
|
270
|
+
typeof format != STRING_TYPE || !format.length) {
|
|
271
|
+
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
272
|
+
}
|
|
273
|
+
if (RESERVED_COMPRESSION_METHODS.includes(compressionMethod)) {
|
|
274
|
+
throw new Error(ERR_RESERVED_COMPRESSION_METHOD);
|
|
275
|
+
}
|
|
276
|
+
const hasStreams = typeof CompressionStream == FUNCTION_TYPE || typeof DecompressionStream == FUNCTION_TYPE;
|
|
277
|
+
if (!hasStreams && (typeof codecURI != STRING_TYPE || !codecURI.length)) {
|
|
278
|
+
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
279
|
+
}
|
|
280
|
+
registeredCodecs.set(compressionMethod, { compressionMethod, format, codecURI, versionNeeded });
|
|
281
|
+
if (hasStreams) {
|
|
282
|
+
setCodecStreams(format, { CompressionStream, DecompressionStream });
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function unregisterCodec(compressionMethod) {
|
|
287
|
+
const codec = registeredCodecs.get(compressionMethod);
|
|
288
|
+
if (codec) {
|
|
289
|
+
registeredCodecs.delete(compressionMethod);
|
|
290
|
+
let formatUsed;
|
|
291
|
+
registeredCodecs.forEach(otherCodec => formatUsed = formatUsed || otherCodec.format == codec.format);
|
|
292
|
+
if (!formatUsed) {
|
|
293
|
+
codecStreams.delete(codec.format);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function getRegisteredCodec(compressionMethod) {
|
|
299
|
+
return registeredCodecs.get(compressionMethod);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
function getCodecStreams(format) {
|
|
303
|
+
return codecStreams.get(format);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function setCodecStreams(format, streams) {
|
|
307
|
+
const { CompressionStream, DecompressionStream } = streams;
|
|
308
|
+
if (typeof CompressionStream != FUNCTION_TYPE && typeof DecompressionStream != FUNCTION_TYPE) {
|
|
309
|
+
throw new Error(ERR_INVALID_CODEC_MODULE);
|
|
310
|
+
}
|
|
311
|
+
codecStreams.set(format, { CompressionStream, DecompressionStream });
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
async function ensureCodecStreams(format, codecURI) {
|
|
315
|
+
if (!codecStreams.has(format) && codecURI) {
|
|
316
|
+
setCodecStreams(format, await import(codecURI));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
218
319
|
|
|
219
320
|
/*
|
|
220
321
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
@@ -1752,6 +1853,7 @@ function getInt32(number) {
|
|
|
1752
1853
|
|
|
1753
1854
|
const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
|
|
1754
1855
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
1856
|
+
const ERR_UNSUPPORTED_COMPRESSION$2 = "Compression method not supported";
|
|
1755
1857
|
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
1756
1858
|
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
1757
1859
|
const FORMAT_GZIP = "gzip";
|
|
@@ -1762,23 +1864,26 @@ class DeflateStream extends TransformStream {
|
|
|
1762
1864
|
|
|
1763
1865
|
constructor(options, { chunkSize, CompressionStreamZlib, CompressionStream }) {
|
|
1764
1866
|
super({});
|
|
1765
|
-
const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level, deflate64 } = options;
|
|
1867
|
+
const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level, deflate64, format } = options;
|
|
1766
1868
|
const stream = this;
|
|
1767
1869
|
let crc32Stream, encryptionStream, gzipCrc32Stream;
|
|
1768
1870
|
let readable = super.readable;
|
|
1769
|
-
const
|
|
1871
|
+
const codecStreams = format && getCodecStreams(format);
|
|
1872
|
+
const useGzipCrc32 = signed && compressed && !deflate64 && !codecStreams && (!encrypted || zipCrypto) &&
|
|
1770
1873
|
Boolean(useCompressionStream && CompressionStream);
|
|
1771
1874
|
if ((!encrypted || zipCrypto) && signed && !useGzipCrc32) {
|
|
1772
1875
|
crc32Stream = new Crc32Stream();
|
|
1773
1876
|
readable = pipeThrough(readable, crc32Stream);
|
|
1774
1877
|
}
|
|
1775
1878
|
if (compressed) {
|
|
1776
|
-
if (
|
|
1879
|
+
if (codecStreams) {
|
|
1880
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize }));
|
|
1881
|
+
} else if (useGzipCrc32) {
|
|
1777
1882
|
gzipCrc32Stream = new GzipToRawDeflateStream();
|
|
1778
1883
|
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
|
|
1779
1884
|
readable = pipeThrough(readable, gzipCrc32Stream);
|
|
1780
1885
|
} else {
|
|
1781
|
-
readable =
|
|
1886
|
+
readable = pipeThroughCompressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStream, CompressionStreamZlib);
|
|
1782
1887
|
}
|
|
1783
1888
|
}
|
|
1784
1889
|
if (encrypted) {
|
|
@@ -1847,7 +1952,7 @@ class InflateStream extends TransformStream {
|
|
|
1847
1952
|
|
|
1848
1953
|
constructor(options, { chunkSize, DecompressionStreamZlib, DecompressionStream }) {
|
|
1849
1954
|
super({});
|
|
1850
|
-
const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream, deflate64 } = options;
|
|
1955
|
+
const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream, deflate64, format } = options;
|
|
1851
1956
|
let crc32Stream, decryptionStream;
|
|
1852
1957
|
let readable = super.readable;
|
|
1853
1958
|
if (encrypted) {
|
|
@@ -1859,7 +1964,12 @@ class InflateStream extends TransformStream {
|
|
|
1859
1964
|
}
|
|
1860
1965
|
}
|
|
1861
1966
|
if (compressed) {
|
|
1862
|
-
|
|
1967
|
+
const codecStreams = format && getCodecStreams(format);
|
|
1968
|
+
if (codecStreams) {
|
|
1969
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize }));
|
|
1970
|
+
} else {
|
|
1971
|
+
readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamZlib);
|
|
1972
|
+
}
|
|
1863
1973
|
readable = mapInflateStreamError(readable);
|
|
1864
1974
|
}
|
|
1865
1975
|
if ((!encrypted || zipCrypto) && signed) {
|
|
@@ -1877,6 +1987,25 @@ class InflateStream extends TransformStream {
|
|
|
1877
1987
|
}
|
|
1878
1988
|
}
|
|
1879
1989
|
|
|
1990
|
+
const deflateRawSupportByStream = new Map();
|
|
1991
|
+
|
|
1992
|
+
function supportsDeflateRaw(StreamClass) {
|
|
1993
|
+
if (!StreamClass) {
|
|
1994
|
+
return false;
|
|
1995
|
+
}
|
|
1996
|
+
let supported = deflateRawSupportByStream.get(StreamClass);
|
|
1997
|
+
if (supported === UNDEFINED_VALUE) {
|
|
1998
|
+
try {
|
|
1999
|
+
new StreamClass(FORMAT_DEFLATE_RAW);
|
|
2000
|
+
supported = true;
|
|
2001
|
+
} catch {
|
|
2002
|
+
supported = false;
|
|
2003
|
+
}
|
|
2004
|
+
deflateRawSupportByStream.set(StreamClass, supported);
|
|
2005
|
+
}
|
|
2006
|
+
return supported;
|
|
2007
|
+
}
|
|
2008
|
+
|
|
1880
2009
|
function setReadable(stream, readable, flush) {
|
|
1881
2010
|
readable = pipeThrough(readable, new TransformStream({ flush }));
|
|
1882
2011
|
Object.defineProperty(stream, "readable", {
|
|
@@ -1886,21 +2015,24 @@ function setReadable(stream, readable, flush) {
|
|
|
1886
2015
|
});
|
|
1887
2016
|
}
|
|
1888
2017
|
|
|
1889
|
-
function
|
|
1890
|
-
|
|
2018
|
+
function createCodecStream(CodecStreamClass, format, options) {
|
|
2019
|
+
if (!CodecStreamClass) {
|
|
2020
|
+
throw new Error(ERR_UNSUPPORTED_COMPRESSION$2);
|
|
2021
|
+
}
|
|
2022
|
+
return new CodecStreamClass(format, options);
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamZlib) {
|
|
2026
|
+
const Stream = useCompressionStream && CompressionStreamNative ?
|
|
2027
|
+
CompressionStreamNative :
|
|
2028
|
+
CompressionStreamZlib || CompressionStreamNative;
|
|
1891
2029
|
const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
|
|
1892
2030
|
let codecStream;
|
|
1893
2031
|
try {
|
|
1894
2032
|
codecStream = new Stream(format, options);
|
|
1895
2033
|
} catch (error) {
|
|
1896
|
-
if (useCompressionStream) {
|
|
1897
|
-
|
|
1898
|
-
codecStream = new CompressionStreamZlib(format, options);
|
|
1899
|
-
} else if (CompressionStream) {
|
|
1900
|
-
codecStream = new CompressionStream(format, options);
|
|
1901
|
-
} else {
|
|
1902
|
-
throw error;
|
|
1903
|
-
}
|
|
2034
|
+
if (useCompressionStream && CompressionStreamZlib && Stream != CompressionStreamZlib) {
|
|
2035
|
+
codecStream = new CompressionStreamZlib(format, options);
|
|
1904
2036
|
} else {
|
|
1905
2037
|
throw error;
|
|
1906
2038
|
}
|
|
@@ -2161,6 +2293,7 @@ class ChunkStream extends TransformStream {
|
|
|
2161
2293
|
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
2162
2294
|
const ERROR_EVENT_TYPE = "error";
|
|
2163
2295
|
const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
|
|
2296
|
+
const ERR_WORKER_STARTUP_TIMEOUT = "Worker startup timeout";
|
|
2164
2297
|
|
|
2165
2298
|
let webWorkerSupported, webWorkerSource, webWorkerURI, webWorkerOptions;
|
|
2166
2299
|
let transferStreamsSupported = true;
|
|
@@ -2175,6 +2308,10 @@ function configureWorker({ initModule: initModuleFunction }) {
|
|
|
2175
2308
|
initModule$1 = initModuleFunction;
|
|
2176
2309
|
}
|
|
2177
2310
|
|
|
2311
|
+
function resetWebWorkerSupport() {
|
|
2312
|
+
webWorkerSupported = UNDEFINED_VALUE;
|
|
2313
|
+
}
|
|
2314
|
+
|
|
2178
2315
|
class CodecWorker {
|
|
2179
2316
|
|
|
2180
2317
|
constructor(workerData, { readable, writable }, { options, config, streamOptions, useWebWorkers, transferStreams, workerURI }, onTaskFinished) {
|
|
@@ -2268,7 +2405,7 @@ function createWorkerInterface(workerData, config) {
|
|
|
2268
2405
|
}
|
|
2269
2406
|
|
|
2270
2407
|
function createWebWorkerInterface(workerData, config) {
|
|
2271
|
-
const { baseURI, chunkSize } = config;
|
|
2408
|
+
const { baseURI, chunkSize, workerStartupTimeout } = config;
|
|
2272
2409
|
let { wasmURI } = config;
|
|
2273
2410
|
|
|
2274
2411
|
if (!workerData.interface) {
|
|
@@ -2285,9 +2422,26 @@ function createWebWorkerInterface(workerData, config) {
|
|
|
2285
2422
|
}
|
|
2286
2423
|
Object.assign(workerData, {
|
|
2287
2424
|
worker,
|
|
2425
|
+
workerAlive: false,
|
|
2288
2426
|
terminated: false,
|
|
2289
2427
|
interface: {
|
|
2290
|
-
run: () =>
|
|
2428
|
+
run: async () => {
|
|
2429
|
+
try {
|
|
2430
|
+
return await runWebWorker(workerData, { chunkSize, wasmURI, baseURI, workerStartupTimeout });
|
|
2431
|
+
} catch (error) {
|
|
2432
|
+
if (error && error.workerStartupFailed) {
|
|
2433
|
+
webWorkerSupported = false;
|
|
2434
|
+
const { reader } = workerData;
|
|
2435
|
+
if (reader) {
|
|
2436
|
+
reader.releaseLock();
|
|
2437
|
+
}
|
|
2438
|
+
workerData.reader = null;
|
|
2439
|
+
workerData.writer = null;
|
|
2440
|
+
return runWorker$1(workerData, config);
|
|
2441
|
+
}
|
|
2442
|
+
throw error;
|
|
2443
|
+
}
|
|
2444
|
+
}
|
|
2291
2445
|
}
|
|
2292
2446
|
});
|
|
2293
2447
|
}
|
|
@@ -2297,15 +2451,23 @@ function createWebWorkerInterface(workerData, config) {
|
|
|
2297
2451
|
async function runWorker$1({ options, readable, writable, onTaskFinished }, config) {
|
|
2298
2452
|
let codecStream;
|
|
2299
2453
|
try {
|
|
2300
|
-
if (!options.
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
config
|
|
2307
|
-
|
|
2308
|
-
|
|
2454
|
+
if (options.compressed && !options.format) {
|
|
2455
|
+
const deflate = options.codecType.startsWith(CODEC_DEFLATE);
|
|
2456
|
+
const ZlibStream = deflate ? config.CompressionStreamZlib : config.DecompressionStreamZlib;
|
|
2457
|
+
const NativeStream = deflate ? config.CompressionStream : config.DecompressionStream;
|
|
2458
|
+
if (!options.useCompressionStream) {
|
|
2459
|
+
try {
|
|
2460
|
+
await initModule$1(config);
|
|
2461
|
+
} catch {
|
|
2462
|
+
if (!ZlibStream || ZlibStream.requiresModule) {
|
|
2463
|
+
options.useCompressionStream = true;
|
|
2464
|
+
}
|
|
2465
|
+
}
|
|
2466
|
+
} else if (ZlibStream && ZlibStream.requiresModule && !supportsDeflateRaw(NativeStream)) {
|
|
2467
|
+
try {
|
|
2468
|
+
await initModule$1(config);
|
|
2469
|
+
} catch {
|
|
2470
|
+
// ignored
|
|
2309
2471
|
}
|
|
2310
2472
|
}
|
|
2311
2473
|
}
|
|
@@ -2374,6 +2536,10 @@ async function runWebWorker(workerData, config) {
|
|
|
2374
2536
|
writer: writable.getWriter()
|
|
2375
2537
|
});
|
|
2376
2538
|
}
|
|
2539
|
+
const { workerStartupTimeout } = config;
|
|
2540
|
+
if (!workerData.workerAlive && Number.isFinite(workerStartupTimeout) && workerStartupTimeout >= 0) {
|
|
2541
|
+
workerData.startupTimeout = setTimeout(() => onStartupTimeout(workerData), workerStartupTimeout);
|
|
2542
|
+
}
|
|
2377
2543
|
try {
|
|
2378
2544
|
const resultValue = await result;
|
|
2379
2545
|
await closeWritable();
|
|
@@ -2486,28 +2652,68 @@ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true)
|
|
|
2486
2652
|
} else {
|
|
2487
2653
|
worker = new Worker(webWorkerURI, webWorkerOptions);
|
|
2488
2654
|
}
|
|
2489
|
-
worker.addEventListener(MESSAGE_EVENT_TYPE, event =>
|
|
2655
|
+
worker.addEventListener(MESSAGE_EVENT_TYPE, event => {
|
|
2656
|
+
workerData.workerAlive = true;
|
|
2657
|
+
clearStartupTimeout(workerData);
|
|
2658
|
+
onMessage(event, workerData);
|
|
2659
|
+
});
|
|
2490
2660
|
worker.addEventListener(ERROR_EVENT_TYPE, event => onWorkerError(event, workerData));
|
|
2491
2661
|
worker.addEventListener(MESSAGE_ERROR_EVENT_TYPE, event => onWorkerError(event, workerData));
|
|
2492
2662
|
return worker;
|
|
2493
2663
|
}
|
|
2494
2664
|
|
|
2665
|
+
function onStartupTimeout(workerData) {
|
|
2666
|
+
workerData.startupTimeout = null;
|
|
2667
|
+
if (workerData.workerAlive) {
|
|
2668
|
+
return;
|
|
2669
|
+
}
|
|
2670
|
+
const { rejectResult, writer } = workerData;
|
|
2671
|
+
terminateWorker$1(workerData);
|
|
2672
|
+
workerData.worker = null;
|
|
2673
|
+
if (rejectResult) {
|
|
2674
|
+
const error = new Error(ERR_WORKER_STARTUP_TIMEOUT);
|
|
2675
|
+
error.workerStartupFailed = true;
|
|
2676
|
+
rejectResult(error);
|
|
2677
|
+
if (writer) {
|
|
2678
|
+
writer.releaseLock();
|
|
2679
|
+
}
|
|
2680
|
+
}
|
|
2681
|
+
}
|
|
2682
|
+
|
|
2683
|
+
function clearStartupTimeout(workerData) {
|
|
2684
|
+
const { startupTimeout } = workerData;
|
|
2685
|
+
if (startupTimeout) {
|
|
2686
|
+
clearTimeout(startupTimeout);
|
|
2687
|
+
workerData.startupTimeout = null;
|
|
2688
|
+
}
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2495
2691
|
function onWorkerError(event, workerData) {
|
|
2496
2692
|
if (event.preventDefault) {
|
|
2497
2693
|
event.preventDefault();
|
|
2498
2694
|
}
|
|
2499
|
-
|
|
2695
|
+
clearStartupTimeout(workerData);
|
|
2696
|
+
const { workerAlive, rejectResult, writer, onTaskFinished } = workerData;
|
|
2500
2697
|
terminateWorker$1(workerData);
|
|
2698
|
+
if (!workerAlive) {
|
|
2699
|
+
workerData.worker = null;
|
|
2700
|
+
}
|
|
2501
2701
|
if (rejectResult) {
|
|
2502
|
-
|
|
2702
|
+
let error = event.error || new Error(event.message || ERROR_EVENT_TYPE);
|
|
2703
|
+
if (!workerAlive) {
|
|
2704
|
+
error = Object.assign(new Error(error.message || ERROR_EVENT_TYPE), { workerStartupFailed: true });
|
|
2705
|
+
}
|
|
2706
|
+
rejectResult(error);
|
|
2503
2707
|
if (writer) {
|
|
2504
2708
|
writer.releaseLock();
|
|
2505
2709
|
}
|
|
2506
|
-
|
|
2710
|
+
if (workerAlive) {
|
|
2711
|
+
onTaskFinished();
|
|
2712
|
+
}
|
|
2507
2713
|
}
|
|
2508
2714
|
}
|
|
2509
2715
|
|
|
2510
|
-
function sendMessage(message, { worker, writer, transferStreams }) {
|
|
2716
|
+
function sendMessage(message, { worker, writer, transferStreams, workerAlive }) {
|
|
2511
2717
|
try {
|
|
2512
2718
|
const { value, readable, writable } = message;
|
|
2513
2719
|
const transferables = [];
|
|
@@ -2515,7 +2721,7 @@ function sendMessage(message, { worker, writer, transferStreams }) {
|
|
|
2515
2721
|
message.value = toExactUint8Array(value);
|
|
2516
2722
|
transferables.push(message.value.buffer);
|
|
2517
2723
|
}
|
|
2518
|
-
if (transferStreams && transferStreamsSupported) {
|
|
2724
|
+
if (transferStreams && transferStreamsSupported && workerAlive) {
|
|
2519
2725
|
if (readable) {
|
|
2520
2726
|
transferables.push(readable);
|
|
2521
2727
|
}
|
|
@@ -2634,11 +2840,18 @@ let indexWorker = 0;
|
|
|
2634
2840
|
|
|
2635
2841
|
async function runWorker(stream, workerOptions) {
|
|
2636
2842
|
const { options, config } = workerOptions;
|
|
2637
|
-
const { transferStreams, useWebWorkers, useCompressionStream, compressed, signed, encrypted } = options;
|
|
2843
|
+
const { transferStreams, useWebWorkers, useCompressionStream, compressed, signed, encrypted, format, codecURI } = options;
|
|
2638
2844
|
const { workerURI, maxWorkers } = config;
|
|
2845
|
+
if (format) {
|
|
2846
|
+
if (codecURI) {
|
|
2847
|
+
options.codecURI = resolveCodecURI(codecURI, config.baseURI);
|
|
2848
|
+
}
|
|
2849
|
+
await ensureCodecStreams(format, options.codecURI);
|
|
2850
|
+
}
|
|
2639
2851
|
workerOptions.transferStreams = transferStreams || (transferStreams === UNDEFINED_VALUE && config.transferStreams);
|
|
2640
2852
|
const streamCopy = !compressed && !signed && !encrypted;
|
|
2641
|
-
|
|
2853
|
+
const workerSupported = format === UNDEFINED_VALUE || Boolean(options.codecURI);
|
|
2854
|
+
workerOptions.useWebWorkers = !streamCopy && workerSupported && (useWebWorkers || (useWebWorkers === UNDEFINED_VALUE && config.useWebWorkers));
|
|
2642
2855
|
workerOptions.workerURI = workerOptions.useWebWorkers && workerURI ? workerURI : UNDEFINED_VALUE;
|
|
2643
2856
|
options.useCompressionStream = useCompressionStream || (useCompressionStream === UNDEFINED_VALUE && config.useCompressionStream);
|
|
2644
2857
|
return (await getWorker()).run();
|
|
@@ -2678,6 +2891,14 @@ async function runWorker(stream, workerOptions) {
|
|
|
2678
2891
|
}
|
|
2679
2892
|
}
|
|
2680
2893
|
|
|
2894
|
+
function resolveCodecURI(codecURI, baseURI) {
|
|
2895
|
+
try {
|
|
2896
|
+
return new URL(codecURI, baseURI).toString();
|
|
2897
|
+
} catch {
|
|
2898
|
+
return codecURI;
|
|
2899
|
+
}
|
|
2900
|
+
}
|
|
2901
|
+
|
|
2681
2902
|
function armStarvationTimeout() {
|
|
2682
2903
|
if (!starvationTimeout && pendingRequests.length && Number.isFinite(starvationDelay) && starvationDelay >= 0) {
|
|
2683
2904
|
starvationTimeout = setTimeout(onWorkerStarvation, starvationDelay);
|
|
@@ -2738,6 +2959,7 @@ async function terminateWorkers() {
|
|
|
2738
2959
|
clearTerminateTimeout(workerData);
|
|
2739
2960
|
return workerData.terminate();
|
|
2740
2961
|
}));
|
|
2962
|
+
resetWebWorkerSupport();
|
|
2741
2963
|
}
|
|
2742
2964
|
|
|
2743
2965
|
/*
|
|
@@ -3961,6 +4183,7 @@ const OPTION_TRANSFER_STREAMS = "transferStreams";
|
|
|
3961
4183
|
const OPTION_PREVENT_CLOSE = "preventClose";
|
|
3962
4184
|
const OPTION_ENCRYPTION_STRENGTH = "encryptionStrength";
|
|
3963
4185
|
const OPTION_EXTENDED_TIMESTAMP = "extendedTimestamp";
|
|
4186
|
+
const OPTION_NTFS_TIMESTAMP = "ntfsTimestamp";
|
|
3964
4187
|
const OPTION_KEEP_ORDER = "keepOrder";
|
|
3965
4188
|
const OPTION_LEVEL = "level";
|
|
3966
4189
|
const OPTION_BUFFERED_WRITE = "bufferedWrite";
|
|
@@ -4020,6 +4243,7 @@ const ERR_UNSUPPORTED_COMPRESSION$1 = "Compression method not supported";
|
|
|
4020
4243
|
const ERR_SPLIT_ZIP_FILE = "Split zip file";
|
|
4021
4244
|
const ERR_OVERLAPPING_ENTRY = "Overlapping entry found";
|
|
4022
4245
|
const ERR_AMBIGUOUS_ARCHIVE = "Ambiguous archive";
|
|
4246
|
+
const ERR_ENCRYPTED_CENTRAL_DIRECTORY = "Encrypted central directory is not supported";
|
|
4023
4247
|
const CHARSET_UTF8 = "utf-8";
|
|
4024
4248
|
const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
|
|
4025
4249
|
const CHARSET_CP437 = "cp437";
|
|
@@ -4097,6 +4321,7 @@ class ZipReader {
|
|
|
4097
4321
|
let prependedDataLength = 0;
|
|
4098
4322
|
let startOffset;
|
|
4099
4323
|
let zip64EndOfDirectory;
|
|
4324
|
+
let zip64EndOfDirectoryVersion2;
|
|
4100
4325
|
const requiresZip64 = directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || filesLength == MAX_16_BITS || diskNumber == MAX_16_BITS;
|
|
4101
4326
|
if (directoryDataOffset != MAX_32_BITS && diskNumber != MAX_16_BITS) {
|
|
4102
4327
|
directoryDataOffset += getDiskOffset$1(reader, diskNumber);
|
|
@@ -4126,6 +4351,7 @@ class ZipReader {
|
|
|
4126
4351
|
throw new Error(ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND);
|
|
4127
4352
|
}
|
|
4128
4353
|
zip64EndOfDirectory = true;
|
|
4354
|
+
zip64EndOfDirectoryVersion2 = getBigUint64(endOfDirectoryView, 4) > ZIP64_END_OF_CENTRAL_DIR_LENGTH - 12;
|
|
4129
4355
|
if (lastDiskNumber == MAX_16_BITS) {
|
|
4130
4356
|
lastDiskNumber = getUint32(endOfDirectoryView, 16);
|
|
4131
4357
|
} else if (checkAmbiguity && lastDiskNumber != getUint32(endOfDirectoryView, 16)) {
|
|
@@ -4205,6 +4431,9 @@ class ZipReader {
|
|
|
4205
4431
|
for (let indexFile = 0; indexFile < filesLength; indexFile++) {
|
|
4206
4432
|
const fileEntry = new ZipEntry$1(reader, config, zipReader.options);
|
|
4207
4433
|
if (offset + CENTRAL_FILE_HEADER_LENGTH > directoryArray.length || getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE) {
|
|
4434
|
+
if (indexFile == 0 && (zip64EndOfDirectoryVersion2 || detectEncryptedCentralDirectory(directoryView))) {
|
|
4435
|
+
throw new Error(ERR_ENCRYPTED_CENTRAL_DIRECTORY);
|
|
4436
|
+
}
|
|
4208
4437
|
throw new Error(ERR_CENTRAL_DIRECTORY_NOT_FOUND);
|
|
4209
4438
|
}
|
|
4210
4439
|
readCommonHeader(fileEntry, directoryView, offset + 6);
|
|
@@ -4432,7 +4661,8 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
4432
4661
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION$1);
|
|
4433
4662
|
}
|
|
4434
4663
|
}
|
|
4435
|
-
|
|
4664
|
+
const registeredCodec = passThrough ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
|
|
4665
|
+
if ((compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE && compressionMethod != COMPRESSION_METHOD_DEFLATE_64 && !registeredCodec) && !passThrough) {
|
|
4436
4666
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION$1);
|
|
4437
4667
|
}
|
|
4438
4668
|
if (dataArray.length < HEADER_SIZE || getUint32(dataView, 0) != LOCAL_FILE_HEADER_SIGNATURE) {
|
|
@@ -4471,7 +4701,10 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
4471
4701
|
fileEntry.zipCrypto = zipCrypto;
|
|
4472
4702
|
}
|
|
4473
4703
|
if (encrypted) {
|
|
4474
|
-
if (
|
|
4704
|
+
if ((localDirectory.rawBitFlag & BITFLAG_STRONG_ENCRYPTION) == BITFLAG_STRONG_ENCRYPTION) {
|
|
4705
|
+
throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
|
|
4706
|
+
}
|
|
4707
|
+
if (!zipCrypto && (extraFieldAES.strength < 1 || extraFieldAES.strength > 3)) {
|
|
4475
4708
|
throw new Error(ERR_UNSUPPORTED_ENCRYPTION);
|
|
4476
4709
|
} else if (!password && !rawPassword) {
|
|
4477
4710
|
throw new Error(ERR_ENCRYPTED);
|
|
@@ -4510,6 +4743,8 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
4510
4743
|
useCompressionStream,
|
|
4511
4744
|
transferStreams: getOptionValue$1(zipEntry, options, OPTION_TRANSFER_STREAMS),
|
|
4512
4745
|
deflate64,
|
|
4746
|
+
format: registeredCodec ? registeredCodec.format : UNDEFINED_VALUE,
|
|
4747
|
+
codecURI: registeredCodec ? registeredCodec.codecURI : UNDEFINED_VALUE,
|
|
4513
4748
|
checkPasswordOnly
|
|
4514
4749
|
},
|
|
4515
4750
|
config,
|
|
@@ -4562,6 +4797,16 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
4562
4797
|
}
|
|
4563
4798
|
};
|
|
4564
4799
|
|
|
4800
|
+
function detectEncryptedCentralDirectory(directoryView) {
|
|
4801
|
+
const maxOffset = Math.min(directoryView.byteLength, 1024) - 3;
|
|
4802
|
+
for (let offset = 0; offset < maxOffset; offset++) {
|
|
4803
|
+
if (getUint32(directoryView, offset) == ARCHIVE_EXTRA_DATA_SIGNATURE) {
|
|
4804
|
+
return true;
|
|
4805
|
+
}
|
|
4806
|
+
}
|
|
4807
|
+
return false;
|
|
4808
|
+
}
|
|
4809
|
+
|
|
4565
4810
|
function readCommonHeader(directory, dataView, offset) {
|
|
4566
4811
|
const rawBitFlag = directory.rawBitFlag = getUint16(dataView, offset + 2);
|
|
4567
4812
|
const encrypted = (rawBitFlag & BITFLAG_ENCRYPTED) == BITFLAG_ENCRYPTED;
|
|
@@ -5076,6 +5321,7 @@ var zipReader = /*#__PURE__*/Object.freeze({
|
|
|
5076
5321
|
ERR_BAD_FORMAT: ERR_BAD_FORMAT,
|
|
5077
5322
|
ERR_CENTRAL_DIRECTORY_NOT_FOUND: ERR_CENTRAL_DIRECTORY_NOT_FOUND,
|
|
5078
5323
|
ERR_ENCRYPTED: ERR_ENCRYPTED,
|
|
5324
|
+
ERR_ENCRYPTED_CENTRAL_DIRECTORY: ERR_ENCRYPTED_CENTRAL_DIRECTORY,
|
|
5079
5325
|
ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND: ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND,
|
|
5080
5326
|
ERR_EOCDR_NOT_FOUND: ERR_EOCDR_NOT_FOUND,
|
|
5081
5327
|
ERR_EXTRAFIELD_ZIP64_NOT_FOUND: ERR_EXTRAFIELD_ZIP64_NOT_FOUND,
|
|
@@ -5127,6 +5373,7 @@ const ERR_INVALID_ENTRY_COMMENT = "File entry comment exceeds 64KB";
|
|
|
5127
5373
|
const ERR_INVALID_ENTRY_NAME = "File entry name exceeds 64KB";
|
|
5128
5374
|
const ERR_INVALID_VERSION = "Version exceeds 65535";
|
|
5129
5375
|
const ERR_INVALID_ENCRYPTION_STRENGTH = "The strength must equal 1, 2, or 3";
|
|
5376
|
+
const ERR_UNSUPPORTED_ENCRYPTION_USDZ = "Encryption is not supported in USDZ files";
|
|
5130
5377
|
const ERR_INVALID_EXTRAFIELD_TYPE = "Extra field type exceeds 65535";
|
|
5131
5378
|
const ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB";
|
|
5132
5379
|
const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
|
|
@@ -5487,7 +5734,11 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5487
5734
|
if (versionMadeBy > MAX_16_BITS) {
|
|
5488
5735
|
throw new Error(ERR_INVALID_VERSION);
|
|
5489
5736
|
}
|
|
5490
|
-
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES
|
|
5737
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES);
|
|
5738
|
+
const externalFileAttributesProvided = externalFileAttributes !== UNDEFINED_VALUE;
|
|
5739
|
+
if (!externalFileAttributesProvided) {
|
|
5740
|
+
externalFileAttributes = 0;
|
|
5741
|
+
}
|
|
5491
5742
|
if (!options[PROPERTY_NAME_DIRECTORY] && name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
5492
5743
|
options[PROPERTY_NAME_DIRECTORY] = true;
|
|
5493
5744
|
}
|
|
@@ -5496,13 +5747,13 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5496
5747
|
if (!name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
5497
5748
|
name += DIRECTORY_SIGNATURE;
|
|
5498
5749
|
}
|
|
5499
|
-
if (
|
|
5750
|
+
if (!externalFileAttributesProvided) {
|
|
5500
5751
|
externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
|
|
5501
5752
|
if (!msDosCompatible) {
|
|
5502
5753
|
externalFileAttributes |= (FILE_ATTR_UNIX_TYPE_DIR | FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
5503
5754
|
}
|
|
5504
5755
|
}
|
|
5505
|
-
} else if (!msDosCompatible &&
|
|
5756
|
+
} else if (!msDosCompatible && !externalFileAttributesProvided) {
|
|
5506
5757
|
if (executable) {
|
|
5507
5758
|
externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
5508
5759
|
} else {
|
|
@@ -5511,6 +5762,7 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5511
5762
|
}
|
|
5512
5763
|
let unixExternalUpper;
|
|
5513
5764
|
if (!msDosCompatible) {
|
|
5765
|
+
const unixModeProvided = unixMode !== UNDEFINED_VALUE || Boolean(setuid || setgid || sticky);
|
|
5514
5766
|
unixExternalUpper = (externalFileAttributes >> 16) & MAX_16_BITS;
|
|
5515
5767
|
unixMode = unixMode === UNDEFINED_VALUE ? unixExternalUpper : (unixMode & MAX_16_BITS);
|
|
5516
5768
|
if (setuid) {
|
|
@@ -5528,10 +5780,12 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
5528
5780
|
} else {
|
|
5529
5781
|
sticky = Boolean(unixMode & FILE_ATTR_UNIX_STICKY_MASK);
|
|
5530
5782
|
}
|
|
5531
|
-
if (
|
|
5532
|
-
|
|
5783
|
+
if (!externalFileAttributesProvided || unixModeProvided) {
|
|
5784
|
+
if (directory) {
|
|
5785
|
+
unixMode |= FILE_ATTR_UNIX_TYPE_DIR;
|
|
5786
|
+
}
|
|
5787
|
+
externalFileAttributes = ((unixMode & MAX_16_BITS) << 16) | (externalFileAttributes & MAX_16_BITS);
|
|
5533
5788
|
}
|
|
5534
|
-
externalFileAttributes = ((unixMode & MAX_16_BITS) << 16) | (externalFileAttributes & MAX_8_BITS);
|
|
5535
5789
|
}
|
|
5536
5790
|
({ msdosAttributesRaw, msdosAttributes } = normalizeMsdosAttributes(msdosAttributesRaw, msdosAttributes));
|
|
5537
5791
|
if (hasMsDosProvided) {
|
|
@@ -5591,6 +5845,7 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
5591
5845
|
const encryptionStrength = getOptionValue(zipWriter, options, OPTION_ENCRYPTION_STRENGTH, 3);
|
|
5592
5846
|
const zipCrypto = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO);
|
|
5593
5847
|
const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
|
|
5848
|
+
const ntfsTimestamp = getOptionValue(zipWriter, options, OPTION_NTFS_TIMESTAMP);
|
|
5594
5849
|
const keepOrder = getOptionValue(zipWriter, options, OPTION_KEEP_ORDER, true);
|
|
5595
5850
|
const useWebWorkers = getOptionValue(zipWriter, options, OPTION_USE_WEB_WORKERS);
|
|
5596
5851
|
const transferStreams = getOptionValue(zipWriter, options, OPTION_TRANSFER_STREAMS);
|
|
@@ -5600,11 +5855,20 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
5600
5855
|
const signal = getOptionValue(zipWriter, options, OPTION_SIGNAL);
|
|
5601
5856
|
const useUnicodeFileNames = getOptionValue(zipWriter, options, OPTION_USE_UNICODE_FILE_NAMES, true);
|
|
5602
5857
|
const compressionMethod = getOptionValue(zipWriter, options, PROPERTY_NAME_COMPRESSION_METHOD);
|
|
5858
|
+
const registeredCodec = passThrough || compressionMethod === UNDEFINED_VALUE ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
|
|
5603
5859
|
if (!passThrough && compressionMethod !== UNDEFINED_VALUE &&
|
|
5604
|
-
compressionMethod !== COMPRESSION_METHOD_STORE && compressionMethod !== COMPRESSION_METHOD_DEFLATE) {
|
|
5860
|
+
compressionMethod !== COMPRESSION_METHOD_STORE && compressionMethod !== COMPRESSION_METHOD_DEFLATE && !registeredCodec) {
|
|
5605
5861
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
5606
5862
|
}
|
|
5607
5863
|
let level = getOptionValue(zipWriter, options, OPTION_LEVEL);
|
|
5864
|
+
if (zipWriter.options[OPTION_USDZ]) {
|
|
5865
|
+
if (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) {
|
|
5866
|
+
throw new Error(ERR_UNSUPPORTED_ENCRYPTION_USDZ);
|
|
5867
|
+
}
|
|
5868
|
+
if (level === UNDEFINED_VALUE && compressionMethod === UNDEFINED_VALUE) {
|
|
5869
|
+
level = 0;
|
|
5870
|
+
}
|
|
5871
|
+
}
|
|
5608
5872
|
let useCompressionStream = getOptionValue(zipWriter, options, OPTION_USE_COMPRESSION_STREAM);
|
|
5609
5873
|
let dataDescriptor = getOptionValue(zipWriter, options, OPTION_DATA_DESCRIPTOR);
|
|
5610
5874
|
if (bufferedWrite && dataDescriptor === UNDEFINED_VALUE) {
|
|
@@ -5616,7 +5880,7 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
5616
5880
|
if (level !== UNDEFINED_VALUE && level != 6) {
|
|
5617
5881
|
useCompressionStream = false;
|
|
5618
5882
|
}
|
|
5619
|
-
if (!useCompressionStream && (zipWriter.config.CompressionStream === UNDEFINED_VALUE && zipWriter.config.CompressionStreamZlib === UNDEFINED_VALUE)) {
|
|
5883
|
+
if (!useCompressionStream && !registeredCodec && (zipWriter.config.CompressionStream === UNDEFINED_VALUE && zipWriter.config.CompressionStreamZlib === UNDEFINED_VALUE)) {
|
|
5620
5884
|
level = 0;
|
|
5621
5885
|
}
|
|
5622
5886
|
const zip64 = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIP64);
|
|
@@ -5660,6 +5924,7 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
5660
5924
|
encryptionStrength,
|
|
5661
5925
|
zipCrypto,
|
|
5662
5926
|
extendedTimestamp,
|
|
5927
|
+
ntfsTimestamp,
|
|
5663
5928
|
keepOrder,
|
|
5664
5929
|
useWebWorkers,
|
|
5665
5930
|
transferStreams,
|
|
@@ -5669,6 +5934,9 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
5669
5934
|
signal,
|
|
5670
5935
|
useUnicodeFileNames,
|
|
5671
5936
|
compressionMethod,
|
|
5937
|
+
format: registeredCodec ? registeredCodec.format : UNDEFINED_VALUE,
|
|
5938
|
+
codecURI: registeredCodec ? registeredCodec.codecURI : UNDEFINED_VALUE,
|
|
5939
|
+
codecVersionNeeded: registeredCodec ? registeredCodec.versionNeeded : UNDEFINED_VALUE,
|
|
5672
5940
|
level,
|
|
5673
5941
|
useCompressionStream,
|
|
5674
5942
|
dataDescriptor,
|
|
@@ -5965,7 +6233,9 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
|
|
|
5965
6233
|
msdosAttributesRaw,
|
|
5966
6234
|
msdosAttributes,
|
|
5967
6235
|
useCompressionStream,
|
|
5968
|
-
passThrough
|
|
6236
|
+
passThrough,
|
|
6237
|
+
format,
|
|
6238
|
+
codecURI
|
|
5969
6239
|
} = options;
|
|
5970
6240
|
const fileEntry = {
|
|
5971
6241
|
lock,
|
|
@@ -6025,7 +6295,9 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
|
|
|
6025
6295
|
encrypted: encrypted && !passThrough,
|
|
6026
6296
|
useWebWorkers,
|
|
6027
6297
|
useCompressionStream,
|
|
6028
|
-
transferStreams
|
|
6298
|
+
transferStreams,
|
|
6299
|
+
format,
|
|
6300
|
+
codecURI
|
|
6029
6301
|
},
|
|
6030
6302
|
config,
|
|
6031
6303
|
streamOptions: { signal, size, onstart, onprogress, onend }
|
|
@@ -6097,6 +6369,7 @@ function getHeaderInfo(options) {
|
|
|
6097
6369
|
rawExtraField,
|
|
6098
6370
|
encryptionStrength,
|
|
6099
6371
|
extendedTimestamp,
|
|
6372
|
+
ntfsTimestamp,
|
|
6100
6373
|
passThrough,
|
|
6101
6374
|
encrypted,
|
|
6102
6375
|
zip64UncompressedSize,
|
|
@@ -6142,7 +6415,8 @@ function getHeaderInfo(options) {
|
|
|
6142
6415
|
let extraFieldExtendedTimestampFlag;
|
|
6143
6416
|
if (extendedTimestamp) {
|
|
6144
6417
|
const lastModTimeUnix = getTimeUnix(lastModDate);
|
|
6145
|
-
|
|
6418
|
+
const lastModTimeUnixInRange = inUnixTimeRange(lastModTimeUnix);
|
|
6419
|
+
if (lastModTimeUnixInRange) {
|
|
6146
6420
|
const extraFieldTimestampLength = 9 + (lastAccessDate ? 4 : 0) + (creationDate ? 4 : 0);
|
|
6147
6421
|
const extraFieldTimestamp = createRecordWriter(extraFieldTimestampLength);
|
|
6148
6422
|
extraFieldExtendedTimestampFlag = 0x1 + (lastAccessDate ? 0x2 : 0) + (creationDate ? 0x4 : 0);
|
|
@@ -6160,19 +6434,26 @@ function getHeaderInfo(options) {
|
|
|
6160
6434
|
} else {
|
|
6161
6435
|
rawExtraFieldExtendedTimestamp = EMPTY_UINT8_ARRAY;
|
|
6162
6436
|
}
|
|
6163
|
-
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
|
|
6168
|
-
|
|
6169
|
-
|
|
6170
|
-
|
|
6171
|
-
|
|
6172
|
-
|
|
6173
|
-
|
|
6174
|
-
|
|
6175
|
-
|
|
6437
|
+
const writeExtraFieldNTFS = ntfsTimestamp === UNDEFINED_VALUE ?
|
|
6438
|
+
!lastModTimeUnixInRange || Boolean(lastAccessDate || creationDate) :
|
|
6439
|
+
ntfsTimestamp;
|
|
6440
|
+
if (writeExtraFieldNTFS) {
|
|
6441
|
+
try {
|
|
6442
|
+
const lastModTimeNTFS = getTimeNTFS(lastModDate);
|
|
6443
|
+
const extraFieldNTFS = createRecordWriter(36);
|
|
6444
|
+
extraFieldNTFS.uint16(EXTRAFIELD_TYPE_NTFS);
|
|
6445
|
+
extraFieldNTFS.uint16(32);
|
|
6446
|
+
extraFieldNTFS.skip(4);
|
|
6447
|
+
extraFieldNTFS.uint16(EXTRAFIELD_TYPE_NTFS_TAG1);
|
|
6448
|
+
extraFieldNTFS.uint16(24);
|
|
6449
|
+
extraFieldNTFS.uint64(lastModTimeNTFS);
|
|
6450
|
+
extraFieldNTFS.uint64(getTimeNTFS(lastAccessDate) || lastModTimeNTFS);
|
|
6451
|
+
extraFieldNTFS.uint64(getTimeNTFS(creationDate) || lastModTimeNTFS);
|
|
6452
|
+
rawExtraFieldNTFS = extraFieldNTFS.array;
|
|
6453
|
+
} catch {
|
|
6454
|
+
rawExtraFieldNTFS = EMPTY_UINT8_ARRAY;
|
|
6455
|
+
}
|
|
6456
|
+
} else {
|
|
6176
6457
|
rawExtraFieldNTFS = EMPTY_UINT8_ARRAY;
|
|
6177
6458
|
}
|
|
6178
6459
|
} else {
|
|
@@ -6210,6 +6491,10 @@ function getHeaderInfo(options) {
|
|
|
6210
6491
|
if (compressionMethod === UNDEFINED_VALUE) {
|
|
6211
6492
|
compressionMethod = compressed ? COMPRESSION_METHOD_DEFLATE : COMPRESSION_METHOD_STORE;
|
|
6212
6493
|
}
|
|
6494
|
+
const { codecVersionNeeded } = options;
|
|
6495
|
+
if (compressed && codecVersionNeeded !== UNDEFINED_VALUE) {
|
|
6496
|
+
version = version > codecVersionNeeded ? version : codecVersionNeeded;
|
|
6497
|
+
}
|
|
6213
6498
|
if (zip64) {
|
|
6214
6499
|
version = version > VERSION_ZIP64 ? version : VERSION_ZIP64;
|
|
6215
6500
|
}
|
|
@@ -6223,6 +6508,7 @@ function getHeaderInfo(options) {
|
|
|
6223
6508
|
if (extraFieldLength > MAX_16_BITS) {
|
|
6224
6509
|
throw new Error(ERR_INVALID_EXTRAFIELD_DATA);
|
|
6225
6510
|
}
|
|
6511
|
+
const dosLastModDate = new Date(Math.ceil(lastModDate.getTime() / 2000) * 2000);
|
|
6226
6512
|
const {
|
|
6227
6513
|
headerArray,
|
|
6228
6514
|
headerView,
|
|
@@ -6232,7 +6518,7 @@ function getHeaderInfo(options) {
|
|
|
6232
6518
|
bitFlag: getBitFlag(level, useUnicodeFileNames, dataDescriptor, encrypted, compressionMethod),
|
|
6233
6519
|
compressionMethod,
|
|
6234
6520
|
uncompressedSize,
|
|
6235
|
-
lastModDate:
|
|
6521
|
+
lastModDate: dosLastModDate < MIN_DATE ? MIN_DATE : dosLastModDate > MAX_DATE ? MAX_DATE : dosLastModDate,
|
|
6236
6522
|
rawFilename,
|
|
6237
6523
|
zip64CompressedSize,
|
|
6238
6524
|
zip64UncompressedSize,
|
|
@@ -10362,11 +10648,14 @@ exports.ERR_BAD_FORMAT = ERR_BAD_FORMAT;
|
|
|
10362
10648
|
exports.ERR_CENTRAL_DIRECTORY_NOT_FOUND = ERR_CENTRAL_DIRECTORY_NOT_FOUND;
|
|
10363
10649
|
exports.ERR_DUPLICATED_NAME = ERR_DUPLICATED_NAME;
|
|
10364
10650
|
exports.ERR_ENCRYPTED = ERR_ENCRYPTED;
|
|
10651
|
+
exports.ERR_ENCRYPTED_CENTRAL_DIRECTORY = ERR_ENCRYPTED_CENTRAL_DIRECTORY;
|
|
10365
10652
|
exports.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND = ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND;
|
|
10366
10653
|
exports.ERR_EOCDR_NOT_FOUND = ERR_EOCDR_NOT_FOUND;
|
|
10367
10654
|
exports.ERR_EXTRAFIELD_ZIP64_NOT_FOUND = ERR_EXTRAFIELD_ZIP64_NOT_FOUND;
|
|
10368
10655
|
exports.ERR_HTTP_RANGE = ERR_HTTP_RANGE;
|
|
10369
10656
|
exports.ERR_HTTP_RESOURCE_CHANGED = ERR_HTTP_RESOURCE_CHANGED;
|
|
10657
|
+
exports.ERR_INVALID_CODEC_DEFINITION = ERR_INVALID_CODEC_DEFINITION;
|
|
10658
|
+
exports.ERR_INVALID_CODEC_MODULE = ERR_INVALID_CODEC_MODULE;
|
|
10370
10659
|
exports.ERR_INVALID_COMMENT = ERR_INVALID_COMMENT;
|
|
10371
10660
|
exports.ERR_INVALID_COMPRESSED_DATA = ERR_INVALID_COMPRESSED_DATA;
|
|
10372
10661
|
exports.ERR_INVALID_ENCRYPTION_STRENGTH = ERR_INVALID_ENCRYPTION_STRENGTH;
|
|
@@ -10381,11 +10670,13 @@ exports.ERR_INVALID_VERSION = ERR_INVALID_VERSION;
|
|
|
10381
10670
|
exports.ERR_ITERATOR_COMPLETED_TOO_SOON = ERR_ITERATOR_COMPLETED_TOO_SOON;
|
|
10382
10671
|
exports.ERR_LOCAL_FILE_HEADER_NOT_FOUND = ERR_LOCAL_FILE_HEADER_NOT_FOUND;
|
|
10383
10672
|
exports.ERR_OVERLAPPING_ENTRY = ERR_OVERLAPPING_ENTRY;
|
|
10673
|
+
exports.ERR_RESERVED_COMPRESSION_METHOD = ERR_RESERVED_COMPRESSION_METHOD;
|
|
10384
10674
|
exports.ERR_SPLIT_ZIP_FILE = ERR_SPLIT_ZIP_FILE;
|
|
10385
10675
|
exports.ERR_UNDEFINED_READER = ERR_UNDEFINED_READER;
|
|
10386
10676
|
exports.ERR_UNDEFINED_UNCOMPRESSED_SIZE = ERR_UNDEFINED_UNCOMPRESSED_SIZE;
|
|
10387
10677
|
exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION$1;
|
|
10388
10678
|
exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;
|
|
10679
|
+
exports.ERR_UNSUPPORTED_ENCRYPTION_USDZ = ERR_UNSUPPORTED_ENCRYPTION_USDZ;
|
|
10389
10680
|
exports.ERR_UNSUPPORTED_FORMAT = ERR_UNSUPPORTED_FORMAT;
|
|
10390
10681
|
exports.ERR_WRITER_NOT_INITIALIZED = ERR_WRITER_NOT_INITIALIZED;
|
|
10391
10682
|
exports.ERR_ZIP_NOT_EMPTY = ERR_ZIP_NOT_EMPTY;
|
|
@@ -10409,5 +10700,7 @@ exports.createOPFSTempStream = createOPFSTempStream;
|
|
|
10409
10700
|
exports.createSyncAccessHandleTempStream = createSyncAccessHandleTempStream;
|
|
10410
10701
|
exports.fs = fs;
|
|
10411
10702
|
exports.getMimeType = getMimeType;
|
|
10703
|
+
exports.registerCodec = registerCodec;
|
|
10412
10704
|
exports.resetConfiguration = resetConfiguration;
|
|
10413
10705
|
exports.terminateWorkers = terminateWorkersAndModule;
|
|
10706
|
+
exports.unregisterCodec = unregisterCodec;
|