UNPKG

@thi.ng/rstream

Version:

Reactive streams & subscription primitives for constructing dataflow graphs / pipelines

30 lines (29 loc) 861 B
import { defWorker } from "./defworker.js"; import { __optsWithID } from "./idgen.js"; import { LOGGER } from "./logger.js"; import { stream } from "./stream.js"; const fromWorker = (worker, opts) => { const _worker = defWorker(worker); opts = __optsWithID("worker", opts); return stream((stream2) => { const msgListener = (e) => { stream2.next(e.data); }; const errListener = (e) => { stream2.error(e.data); }; _worker.addEventListener("message", msgListener); _worker.addEventListener("error", errListener); return () => { _worker.removeEventListener("message", msgListener); _worker.removeEventListener("error", errListener); if (opts.terminate !== false) { LOGGER.info("terminating worker", _worker); _worker.terminate(); } }; }, opts); }; export { fromWorker };