worker.ts 444 B

1234567891011121314
  1. import { FlateCallback } from '.';
  2. export default (c: string, msg: unknown, transfer: ArrayBuffer[], cb: FlateCallback) => {
  3. const u = URL.createObjectURL(new Blob([c], { type: 'text/javascript' }));
  4. const w = new Worker(u);
  5. const cb2: typeof cb = (e, d) => {
  6. w.terminate();
  7. URL.revokeObjectURL(u);
  8. cb(e, d);
  9. }
  10. w.onerror = e => cb2(e.error, null);
  11. w.onmessage = e => cb2(null, e.data);
  12. w.postMessage(msg, transfer);
  13. }