diff options
author | Florian Dold <florian@dold.me> | 2021-08-20 13:31:03 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-08-20 13:31:03 +0200 |
commit | 859a8734c87d5e5081d7b0aa02cb538a7c801eac (patch) | |
tree | d2e9163479eb56ec382c842d62ce39fe30d450a4 /src/worker.ts | |
download | node-vendor-859a8734c87d5e5081d7b0aa02cb538a7c801eac.tar.gz node-vendor-859a8734c87d5e5081d7b0aa02cb538a7c801eac.tar.bz2 node-vendor-859a8734c87d5e5081d7b0aa02cb538a7c801eac.zip |
Squashed 'fflate/' content from commit b786929
git-subtree-dir: fflate
git-subtree-split: b786929a368521e9cfcdcf7490a8e77485d5a253
Diffstat (limited to 'src/worker.ts')
-rw-r--r-- | src/worker.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/worker.ts b/src/worker.ts new file mode 100644 index 0000000..c7e143d --- /dev/null +++ b/src/worker.ts @@ -0,0 +1,20 @@ +const ch2: Record<string, string> = {}; + +export default <T>(c: string, id: number, msg: unknown, transfer: ArrayBuffer[], cb: (err: Error, msg: T) => void) => { + const w = new Worker(ch2[id] ||= URL.createObjectURL( + new Blob([ + c + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})' + ], { type: 'text/javascript' }) + )); + w.onmessage = e => { + const d = e.data, ed = d.$e$; + if (ed) { + const err = new Error(ed[0]); + err['code'] = ed[1]; + err.stack = ed[2]; + cb(err, null); + } else cb(null, d); + } + w.postMessage(msg, transfer); + return w; +}
\ No newline at end of file |