@bnb-chain/reed-solomon
Version:
lighting implement for reed solomon
3 lines (2 loc) • 938 B
JavaScript
import{R as e,s as r}from"./index-e99d59c4.js";import"@ethersproject/base64";class t extends e{initWorkers({injectWorker:e,workerNum:r=10}){this.workerNum=r,this.workers=[];for(let t=0;t<r;t++){const r=s(e);this.workers.push(r)}}async encodeInWorker(e){if(!this.workerNum||!this.workers)throw new Error("`initWorkers` must be executed first to ensure the number of workers");let t=[];const s=r(e,this.segmentSize),o=[];for(let e=0;e<s.length;e++)o.push({index:e,chunk:s[e]});return new Promise((e=>{let r=0;for(let s=0;s<o.length;s++){const n=this.workers[s%this.workerNum];n.postMessage({index:o[s].index,chunk:o[s].chunk}),n.onmessage=s=>{if(r++,t.push(s.data),r===o.length){const r=this.sortByIndex(t);e(this.getChecksumsByEncodeShards(r))}}}}))}}function s(e){var r=new Blob(["("+e.toString()+")()"]),t=window.URL.createObjectURL(r);return new Worker(t)}export{t as WebAdapterReedSolomon};
//# sourceMappingURL=web.adapter.esm.js.map