UNPKG

worktank

Version:

A simple isomorphic library for executing functions inside WebWorkers or Node Threads pools.

28 lines (27 loc) 1.13 kB
/* IMPORT */ import WorkerShim from 'webworker-shim'; import WorkerBackend from './backend_compiled.js'; /* MAIN */ class WorkerFrontend { /* CONSTRUCTOR */ constructor(name, bootloader, onClose, onError, onMessage) { /* API */ this.listen = (onClose, onError, onMessage) => { this.worker.addEventListener('close', event => onClose(event['data'])); this.worker.addEventListener('error', event => onError(event['data'])); this.worker.addEventListener('message', event => onMessage(event['data'])); }; this.send = (message, transfer = []) => { this.worker.postMessage(message, transfer); }; this.terminate = () => { this.worker.terminate(); }; const backend = WorkerBackend.replace('/*! BOOTLOADER_PLACEHOLDER !*/', bootloader); const script = `data:text/javascript;charset=utf-8,${encodeURIComponent(backend)}`; this.worker = new WorkerShim(script, { name, type: 'module' }); this.listen(onClose, onError, onMessage); } } /* EXPORT */ export default WorkerFrontend;