@zip.js/zip.js 2.5.23 → 2.5.24
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/dist/z-worker-fflate.js +1 -1
- package/dist/z-worker-pako.js +1 -1
- package/dist/zip-fs-full.js +65 -36
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +65 -36
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +65 -36
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker-inflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +65 -36
- package/dist/zip.min.js +1 -1
- package/lib/core/io.js +4 -3
- package/lib/core/util/stream-codec-shim.js +3 -4
- package/lib/core/zip-reader.js +2 -2
- package/lib/core/zip-writer.js +59 -28
- package/package.json +1 -1
package/dist/z-worker-fflate.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},D="Invalid pasword",C=16,R={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},R),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},R),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(D)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%C);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%C);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%C)),c=0;o-C>=c;c+=C){const r=ee(j,Z(t,c,c+C));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(D);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class De{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const Ce=new Map;let Re,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>Ce.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);Re=new De(a,o,c,t,s),qe({type:"close",result:await Re.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;a.hasOwnProperty("level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),i.pendingData.set(t,0),i.pendingData.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=Ce.get(s);Ce.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(fflate,void 0,((e,t)=>e.ondata=t));self.Deflate=e,self.Inflate=t}}();
|
|
1
|
+
!function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},C="Invalid pasword",R=16,D={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},D),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},D),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(C)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%R);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%R);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%R)),c=0;o-R>=c;c+=R){const r=ee(j,Z(t,c,c+R));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(C);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class Ce{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const Re=new Map;let De,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>Re.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);De=new Ce(a,o,c,t,s),qe({type:"close",result:await De.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;t.hasOwn(a,"level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),t.set(t,0),t.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=Re.get(s);Re.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(fflate,void 0,((e,t)=>e.ondata=t));self.Deflate=e,self.Inflate=t}}();
|
package/dist/z-worker-pako.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},D="Invalid pasword",C=16,R={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},R),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},R),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(D)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%C);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%C);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%C)),c=0;o-C>=c;c+=C){const r=ee(j,Z(t,c,c+C));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(D);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class De{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const Ce=new Map;let Re,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>Ce.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);Re=new De(a,o,c,t,s),qe({type:"close",result:await Re.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;a.hasOwnProperty("level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),i.pendingData.set(t,0),i.pendingData.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=Ce.get(s);Ce.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}},((e,t)=>e.onData=t));self.Deflate=e,self.Inflate=t}}();
|
|
1
|
+
!function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},C="Invalid pasword",D=16,R={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},R),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},R),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(C)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%D);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%D);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%D)),c=0;o-D>=c;c+=D){const r=ee(j,Z(t,c,c+D));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(C);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class Ce{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const De=new Map;let Re,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>De.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);Re=new Ce(a,o,c,t,s),qe({type:"close",result:await Re.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;t.hasOwn(a,"level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),t.set(t,0),t.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=De.get(s);De.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}},((e,t)=>e.onData=t));self.Deflate=e,self.Inflate=t}}();
|
package/dist/zip-fs-full.js
CHANGED
|
@@ -7398,14 +7398,13 @@
|
|
|
7398
7398
|
if (codecAdapter.pendingData) {
|
|
7399
7399
|
const { pendingData } = codecAdapter;
|
|
7400
7400
|
codecAdapter.pendingData = new Uint8Array(pendingData.length + data.length);
|
|
7401
|
-
|
|
7402
|
-
|
|
7401
|
+
pendingData.set(pendingData, 0);
|
|
7402
|
+
pendingData.set(data, pendingData.length);
|
|
7403
7403
|
} else {
|
|
7404
7404
|
codecAdapter.pendingData = new Uint8Array(data);
|
|
7405
7405
|
}
|
|
7406
7406
|
};
|
|
7407
|
-
|
|
7408
|
-
if (options.hasOwnProperty("level") && options.level === undefined) {
|
|
7407
|
+
if (Object.hasOwn(options, "level") && options.level === undefined) {
|
|
7409
7408
|
delete options.level;
|
|
7410
7409
|
}
|
|
7411
7410
|
codecAdapter.codec = new constructor(Object.assign({}, constructorOptions, options));
|
|
@@ -7491,12 +7490,13 @@
|
|
|
7491
7490
|
|
|
7492
7491
|
get readable() {
|
|
7493
7492
|
const reader = this;
|
|
7493
|
+
const { chunkSize = DEFAULT_CHUNK_SIZE } = reader;
|
|
7494
7494
|
const readable = new ReadableStream({
|
|
7495
7495
|
start() {
|
|
7496
7496
|
this.chunkOffset = 0;
|
|
7497
7497
|
},
|
|
7498
7498
|
async pull(controller) {
|
|
7499
|
-
const { offset = 0,
|
|
7499
|
+
const { offset = 0, size } = readable;
|
|
7500
7500
|
const { chunkOffset } = this;
|
|
7501
7501
|
controller.enqueue(await reader.readUint8Array(offset + chunkOffset, Math.min(chunkSize, size() - chunkOffset)));
|
|
7502
7502
|
if (chunkOffset + chunkSize > size()) {
|
|
@@ -7856,7 +7856,7 @@
|
|
|
7856
7856
|
if (response.status < 400) {
|
|
7857
7857
|
return response;
|
|
7858
7858
|
} else {
|
|
7859
|
-
throw new Error(ERR_HTTP_STATUS + (response.statusText || response.status));
|
|
7859
|
+
throw response.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (response.statusText || response.status));
|
|
7860
7860
|
}
|
|
7861
7861
|
}
|
|
7862
7862
|
|
|
@@ -7877,7 +7877,7 @@
|
|
|
7877
7877
|
headers: new Map(headers)
|
|
7878
7878
|
});
|
|
7879
7879
|
} else {
|
|
7880
|
-
reject(new Error(ERR_HTTP_STATUS + (request.statusText || request.status)));
|
|
7880
|
+
reject(request.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (request.statusText || request.status)));
|
|
7881
7881
|
}
|
|
7882
7882
|
}, false);
|
|
7883
7883
|
request.addEventListener("error", event => reject(event.detail.error), false);
|
|
@@ -8214,6 +8214,7 @@
|
|
|
8214
8214
|
if (!reader.initialized) {
|
|
8215
8215
|
await reader.init();
|
|
8216
8216
|
}
|
|
8217
|
+
reader.chunkSize = getChunkSize(config);
|
|
8217
8218
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
8218
8219
|
throw new Error(ERR_BAD_FORMAT);
|
|
8219
8220
|
}
|
|
@@ -8332,7 +8333,7 @@
|
|
|
8332
8333
|
if (extractPrependedData) {
|
|
8333
8334
|
zipReader.prependedData = await readUint8Array(reader, 0, startOffset);
|
|
8334
8335
|
}
|
|
8335
|
-
zipReader.comment = await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength);
|
|
8336
|
+
zipReader.comment = commentLength ? await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength) : new Uint8Array();
|
|
8336
8337
|
if (extractAppendedData) {
|
|
8337
8338
|
zipReader.appendedData = appendedDataOffset < reader.size ? await readUint8Array(reader, appendedDataOffset, reader.size - appendedDataOffset) : new Uint8Array();
|
|
8338
8339
|
}
|
|
@@ -8410,7 +8411,6 @@
|
|
|
8410
8411
|
const readable = reader.readable;
|
|
8411
8412
|
readable.offset = dataOffset;
|
|
8412
8413
|
readable.size = size;
|
|
8413
|
-
readable.chunkSize = getChunkSize(config);
|
|
8414
8414
|
const { writable } = writer;
|
|
8415
8415
|
const signal = getOptionValue$1(zipEntry, options, "signal");
|
|
8416
8416
|
if (writer.init && !writer.initialized) {
|
|
@@ -8761,17 +8761,22 @@
|
|
|
8761
8761
|
|
|
8762
8762
|
async add(name = "", reader, options = {}) {
|
|
8763
8763
|
const zipWriter = this;
|
|
8764
|
-
|
|
8764
|
+
const {
|
|
8765
|
+
pendingAddFileCalls,
|
|
8766
|
+
pendingEntries,
|
|
8767
|
+
config
|
|
8768
|
+
} = zipWriter;
|
|
8769
|
+
if (workers < config.maxWorkers) {
|
|
8765
8770
|
workers++;
|
|
8766
8771
|
let promiseAddFile;
|
|
8767
8772
|
try {
|
|
8768
8773
|
promiseAddFile = addFile(zipWriter, name, reader, options);
|
|
8769
|
-
|
|
8774
|
+
pendingAddFileCalls.add(promiseAddFile);
|
|
8770
8775
|
return await promiseAddFile;
|
|
8771
8776
|
} finally {
|
|
8772
|
-
|
|
8777
|
+
pendingAddFileCalls.delete(promiseAddFile);
|
|
8773
8778
|
workers--;
|
|
8774
|
-
const pendingEntry =
|
|
8779
|
+
const pendingEntry = pendingEntries.shift();
|
|
8775
8780
|
if (pendingEntry) {
|
|
8776
8781
|
zipWriter.add(pendingEntry.name, pendingEntry.reader, pendingEntry.options)
|
|
8777
8782
|
.then(pendingEntry.resolve)
|
|
@@ -8779,7 +8784,7 @@
|
|
|
8779
8784
|
}
|
|
8780
8785
|
}
|
|
8781
8786
|
} else {
|
|
8782
|
-
return new Promise((resolve, reject) =>
|
|
8787
|
+
return new Promise((resolve, reject) => pendingEntries.push({ name, reader, options, resolve, reject }));
|
|
8783
8788
|
}
|
|
8784
8789
|
}
|
|
8785
8790
|
|
|
@@ -8939,22 +8944,31 @@
|
|
|
8939
8944
|
}
|
|
8940
8945
|
|
|
8941
8946
|
async function getFileEntry(zipWriter, name, reader, options) {
|
|
8942
|
-
const {
|
|
8947
|
+
const {
|
|
8948
|
+
files,
|
|
8949
|
+
writer
|
|
8950
|
+
} = zipWriter;
|
|
8951
|
+
const {
|
|
8952
|
+
keepOrder,
|
|
8953
|
+
dataDescriptor,
|
|
8954
|
+
zipCrypto,
|
|
8955
|
+
signal
|
|
8956
|
+
} = options;
|
|
8943
8957
|
const previousFileEntry = Array.from(files.values()).pop();
|
|
8944
8958
|
let fileEntry = {};
|
|
8945
8959
|
let bufferedWrite;
|
|
8946
8960
|
let releaseLockWriter;
|
|
8947
|
-
let
|
|
8948
|
-
let
|
|
8961
|
+
let releaseLockCurrentFileEntry;
|
|
8962
|
+
let bufferedDataWritten;
|
|
8949
8963
|
let fileWriter;
|
|
8950
8964
|
files.set(name, fileEntry);
|
|
8951
8965
|
try {
|
|
8952
8966
|
let lockPreviousFileEntry;
|
|
8953
|
-
if (
|
|
8967
|
+
if (keepOrder) {
|
|
8954
8968
|
lockPreviousFileEntry = previousFileEntry && previousFileEntry.lock;
|
|
8969
|
+
requestLockCurrentFileEntry();
|
|
8955
8970
|
}
|
|
8956
|
-
|
|
8957
|
-
if (options.bufferedWrite || zipWriter.lockWriter || !options.dataDescriptor) {
|
|
8971
|
+
if (options.bufferedWrite || zipWriter.lockWriter || !dataDescriptor) {
|
|
8958
8972
|
fileWriter = new BlobWriter();
|
|
8959
8973
|
fileWriter.init();
|
|
8960
8974
|
bufferedWrite = true;
|
|
@@ -8971,14 +8985,14 @@
|
|
|
8971
8985
|
if (bufferedWrite) {
|
|
8972
8986
|
let blob = fileWriter.getData();
|
|
8973
8987
|
await lockPreviousFileEntry;
|
|
8974
|
-
await
|
|
8975
|
-
|
|
8988
|
+
await requestLockWriter();
|
|
8989
|
+
bufferedDataWritten = true;
|
|
8976
8990
|
const { writable } = writer;
|
|
8977
|
-
if (!
|
|
8991
|
+
if (!dataDescriptor) {
|
|
8978
8992
|
const headerLength = 26;
|
|
8979
8993
|
const arrayBuffer = await sliceAsArrayBuffer(blob, 0, headerLength);
|
|
8980
8994
|
const arrayBufferView = new DataView(arrayBuffer);
|
|
8981
|
-
if (!fileEntry.encrypted ||
|
|
8995
|
+
if (!fileEntry.encrypted || zipCrypto) {
|
|
8982
8996
|
setUint32(arrayBufferView, 14, fileEntry.signature);
|
|
8983
8997
|
}
|
|
8984
8998
|
if (fileEntry.zip64) {
|
|
@@ -8991,8 +9005,8 @@
|
|
|
8991
9005
|
await writeUint8Array(writable, new Uint8Array(arrayBuffer));
|
|
8992
9006
|
blob = blob.slice(headerLength);
|
|
8993
9007
|
}
|
|
8994
|
-
await blob.stream().pipeTo(writable, { preventClose: true });
|
|
8995
|
-
|
|
9008
|
+
await blob.stream().pipeTo(writable, { preventClose: true, signal });
|
|
9009
|
+
bufferedDataWritten = false;
|
|
8996
9010
|
}
|
|
8997
9011
|
fileEntry.offset = zipWriter.offset;
|
|
8998
9012
|
if (fileEntry.zip64) {
|
|
@@ -9004,23 +9018,30 @@
|
|
|
9004
9018
|
zipWriter.offset += fileEntry.length;
|
|
9005
9019
|
return fileEntry;
|
|
9006
9020
|
} catch (error) {
|
|
9007
|
-
if ((bufferedWrite &&
|
|
9021
|
+
if ((bufferedWrite && bufferedDataWritten) || (!bufferedWrite && fileEntry.dataWritten)) {
|
|
9008
9022
|
error.corruptedEntry = zipWriter.hasCorruptedEntries = true;
|
|
9009
9023
|
zipWriter.offset += fileWriter.size;
|
|
9010
9024
|
}
|
|
9011
9025
|
files.delete(name);
|
|
9012
9026
|
throw error;
|
|
9013
9027
|
} finally {
|
|
9014
|
-
|
|
9028
|
+
if (releaseLockCurrentFileEntry) {
|
|
9029
|
+
releaseLockCurrentFileEntry();
|
|
9030
|
+
}
|
|
9015
9031
|
if (releaseLockWriter) {
|
|
9016
9032
|
releaseLockWriter();
|
|
9017
9033
|
}
|
|
9018
9034
|
}
|
|
9019
9035
|
|
|
9020
|
-
|
|
9021
|
-
|
|
9022
|
-
|
|
9023
|
-
|
|
9036
|
+
function requestLockCurrentFileEntry() {
|
|
9037
|
+
fileEntry.lock = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
|
|
9038
|
+
}
|
|
9039
|
+
|
|
9040
|
+
async function requestLockWriter() {
|
|
9041
|
+
const { lockWriter } = zipWriter;
|
|
9042
|
+
if (lockWriter) {
|
|
9043
|
+
await lockWriter.then(() => delete zipWriter.lockWriter);
|
|
9044
|
+
return requestLockWriter();
|
|
9024
9045
|
} else {
|
|
9025
9046
|
zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = resolve);
|
|
9026
9047
|
}
|
|
@@ -9162,7 +9183,7 @@
|
|
|
9162
9183
|
const rawLastModDate = dateArray[0];
|
|
9163
9184
|
setUint32(headerView, 6, rawLastModDate);
|
|
9164
9185
|
setUint16(headerView, 22, rawFilename.length);
|
|
9165
|
-
const extraFieldLength = rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length +
|
|
9186
|
+
const extraFieldLength = rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length + rawExtraField.length;
|
|
9166
9187
|
setUint16(headerView, 24, extraFieldLength);
|
|
9167
9188
|
const localHeaderArray = new Uint8Array(30 + rawFilename.length + extraFieldLength);
|
|
9168
9189
|
const localHeaderView = getDataView(localHeaderArray);
|
|
@@ -9172,16 +9193,16 @@
|
|
|
9172
9193
|
arraySet(localHeaderArray, rawExtraFieldAES, 30 + rawFilename.length);
|
|
9173
9194
|
arraySet(localHeaderArray, rawExtraFieldExtendedTimestamp, 30 + rawFilename.length + rawExtraFieldAES.length);
|
|
9174
9195
|
arraySet(localHeaderArray, rawExtraFieldNTFS, 30 + rawFilename.length + rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length);
|
|
9175
|
-
arraySet(localHeaderArray,
|
|
9196
|
+
arraySet(localHeaderArray, rawExtraField, 30 + rawFilename.length + rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length);
|
|
9176
9197
|
let result;
|
|
9177
9198
|
let compressedSize = 0;
|
|
9178
9199
|
if (reader) {
|
|
9200
|
+
reader.chunkSize = getChunkSize(config);
|
|
9179
9201
|
await writeUint8Array(writable, localHeaderArray);
|
|
9180
9202
|
fileEntry.dataWritten = pendingFileEntry.dataWritten = true;
|
|
9181
9203
|
const size = () => reader.size;
|
|
9182
9204
|
const readable = reader.readable;
|
|
9183
9205
|
readable.size = size;
|
|
9184
|
-
readable.chunkSize = getChunkSize(config);
|
|
9185
9206
|
const workerOptions = {
|
|
9186
9207
|
options: {
|
|
9187
9208
|
codecType: CODEC_DEFLATE,
|
|
@@ -9251,7 +9272,15 @@
|
|
|
9251
9272
|
await writeUint8Array(writable, dataDescriptorArray);
|
|
9252
9273
|
}
|
|
9253
9274
|
const length = localHeaderArray.length + compressedSize + dataDescriptorArray.length;
|
|
9254
|
-
Object.assign(fileEntry, {
|
|
9275
|
+
Object.assign(fileEntry, {
|
|
9276
|
+
compressedSize,
|
|
9277
|
+
lastModDate,
|
|
9278
|
+
rawLastModDate,
|
|
9279
|
+
creationDate,
|
|
9280
|
+
lastAccessDate,
|
|
9281
|
+
encrypted,
|
|
9282
|
+
length
|
|
9283
|
+
});
|
|
9255
9284
|
return fileEntry;
|
|
9256
9285
|
}
|
|
9257
9286
|
|