8 lines
9.0 KiB
JavaScript
8 lines
9.0 KiB
JavaScript
/*!
|
|
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
|
|
* (c) Dani Biro
|
|
* @license MIT
|
|
*/
|
|
|
|
!function(A,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).hashwasm=A.hashwasm||{})}(this,(function(A){"use strict";var e,t={name:"xxhash32",data:"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",hash:"4bb12485"};function n(A,e,t,n){return new(t||(t=Promise))((function(r,o){function i(A){try{s(n.next(A))}catch(A){o(A)}}function Q(A){try{s(n.throw(A))}catch(A){o(A)}}function s(A){var e;A.done?r(A.value):(e=A.value,e instanceof t?e:new t((function(A){A(e)}))).then(i,Q)}s((n=n.apply(A,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;class r{constructor(){this.mutex=Promise.resolve()}lock(){let A=()=>{};return this.mutex=this.mutex.then((()=>new Promise(A))),new Promise((e=>{A=e}))}dispatch(A){return n(this,void 0,void 0,(function*(){const e=yield this.lock();try{return yield Promise.resolve(A())}finally{e()}}))}}const o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,i=null!==(e=o.Buffer)&&void 0!==e?e:null,Q=o.TextEncoder?new o.TextEncoder:null;function s(A,e){return(15&A)+(A>>6|A>>3&8)<<4|(15&e)+(e>>6|e>>3&8)}const B="a".charCodeAt(0)-10,a="0".charCodeAt(0);function E(A,e,t){let n=0;for(let r=0;r<t;r++){let t=e[r]>>>4;A[n++]=t>9?t+B:t+a,t=15&e[r],A[n++]=t>9?t+B:t+a}return String.fromCharCode.apply(null,A)}const C=null!==i?A=>{if("string"==typeof A){const e=i.from(A,"utf8");return new Uint8Array(e.buffer,e.byteOffset,e.length)}if(i.isBuffer(A))return new Uint8Array(A.buffer,A.byteOffset,A.length);if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw new Error("Invalid data type!")}:A=>{if("string"==typeof A)return Q.encode(A);if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw new Error("Invalid data type!")},g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",I=new Uint8Array(256);for(let A=0;A<g.length;A++)I[g.charCodeAt(A)]=A;function l(A){const e=function(A){let e=Math.floor(.75*A.length);const t=A.length;return"="===A[t-1]&&(e-=1,"="===A[t-2]&&(e-=1)),e}(A),t=A.length,n=new Uint8Array(e);let r=0;for(let e=0;e<t;e+=4){const t=I[A.charCodeAt(e)],o=I[A.charCodeAt(e+1)],i=I[A.charCodeAt(e+2)],Q=I[A.charCodeAt(e+3)];n[r]=t<<2|o>>4,r+=1,n[r]=(15&o)<<4|i>>2,r+=1,n[r]=(3&i)<<6|63&Q,r+=1}return n}const h=16384,f=new r,c=new Map;function d(A,e){return n(this,void 0,void 0,(function*(){let t=null,r=null,o=!1;if("undefined"==typeof WebAssembly)throw new Error("WebAssembly is not supported in this environment!");const i=()=>new DataView(t.exports.memory.buffer).getUint32(t.exports.STATE_SIZE,!0),Q=f.dispatch((()=>n(this,void 0,void 0,(function*(){if(!c.has(A.name)){const e=l(A.data),t=WebAssembly.compile(e);c.set(A.name,t)}const e=yield c.get(A.name);t=yield WebAssembly.instantiate(e,{})})))),B=(A=null)=>{o=!0,t.exports.Hash_Init(A)},a=A=>{if(!o)throw new Error("update() called before init()");(A=>{let e=0;for(;e<A.length;){const n=A.subarray(e,e+h);e+=n.length,r.set(n),t.exports.Hash_Update(n.length)}})(C(A))},g=new Uint8Array(2*e),I=(A,n=null)=>{if(!o)throw new Error("digest() called before init()");return o=!1,t.exports.Hash_Final(n),"binary"===A?r.slice(0,e):E(g,r,e)},d=A=>"string"==typeof A?A.length<4096:A.byteLength<h;let u=d;switch(A.name){case"argon2":case"scrypt":u=()=>!0;break;case"blake2b":case"blake2s":u=(A,e)=>e<=512&&d(A);break;case"blake3":u=(A,e)=>0===e&&d(A);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":u=()=>!1}return yield(()=>n(this,void 0,void 0,(function*(){t||(yield Q);const A=t.exports.Hash_GetBuffer(),e=t.exports.memory.buffer;r=new Uint8Array(e,A,h)})))(),{getMemory:()=>r,writeMemory:(A,e=0)=>{r.set(A,e)},getExports:()=>t.exports,setMemorySize:A=>{t.exports.Hash_SetMemorySize(A);const e=t.exports.Hash_GetBuffer(),n=t.exports.memory.buffer;r=new Uint8Array(n,e,A)},init:B,update:a,digest:I,save:()=>{if(!o)throw new Error("save() can only be called after init() and before digest()");const e=t.exports.Hash_GetState(),n=i(),r=t.exports.memory.buffer,Q=new Uint8Array(r,e,n),B=new Uint8Array(4+n);return function(A,e){const t=e.length>>1;for(let n=0;n<t;n++){const t=n<<1;A[n]=s(e.charCodeAt(t),e.charCodeAt(t+1))}}(B,A.hash),B.set(Q,4),B},load:e=>{if(!(e instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");const n=t.exports.Hash_GetState(),r=i(),Q=4+r,B=t.exports.memory.buffer;if(e.length!==Q)throw new Error(`Bad state length (expected ${Q} bytes, got ${e.length})`);if(!function(A,e){if(A.length!==2*e.length)return!1;for(let t=0;t<e.length;t++){const n=t<<1;if(e[t]!==s(A.charCodeAt(n),A.charCodeAt(n+1)))return!1}return!0}(A.hash,e.subarray(0,4)))throw new Error("This state was written by an incompatible hash implementation");const a=e.subarray(4);new Uint8Array(B,n,r).set(a),o=!0},calculate:(A,n=null,o=null)=>{if(!u(A,n))return B(n),a(A),I("hex",o);const i=C(A);return r.set(i),t.exports.Hash_Calculate(i.length,n,o),E(g,r,e)},hashLength:e}}))}const u=new r;let y=null;function w(A){return!Number.isInteger(A)||A<0||A>4294967295?new Error("Seed must be a valid 32-bit long unsigned integer."):null}A.createXXHash32=function(A=0){return w(A)?Promise.reject(w(A)):d(t,4).then((e=>{e.init(A);const t={init:()=>(e.init(A),t),update:A=>(e.update(A),t),digest:A=>e.digest(A),save:()=>e.save(),load:A=>(e.load(A),t),blockSize:16,digestSize:4};return t}))},A.xxhash32=function(A,e=0){if(w(e))return Promise.reject(w(e));if(null===y)return function(A,e,t){return n(this,void 0,void 0,(function*(){const n=yield A.lock(),r=yield d(e,t);return n(),r}))}(u,t,4).then((t=>(y=t,y.calculate(A,e))));try{const t=y.calculate(A,e);return Promise.resolve(t)}catch(A){return Promise.reject(A)}}}));
|