minlink
Minimum(~ 1kb) and isomorphic worker wrapper with comlink like rpc.
npm install minlink --save# or yarn add minlink
Why?
- WebWorker(DedicateWorker) and node's Worker(
threads
) have similar api but not same one. This library wraps them to same rpc. minlink
is inspired bycomlink
but to keep simple and small core, minlink does not use ES2015 Proxy(or its polyfill). Instead of proxy,minlink
provides typescript's type utils.
Requirements
- Node 14+
- Modern Browser + IE11(WIP: Not tested yet)
Browser WebWorker
Minlink takes WebWorker as expose/wrap. Bundle them with webpack or rollup.
// browser worker.js;;exposeself, impl; // browesr main.js// import { wrap } from "minlink/dist/browser.legacy.js"; // for ie11. UMD build.;;;console.logret; // => 2await api.terminate;
Node Worker
Minlink takes worker_threads/Worker
as expose/wrap.
// main.mjs;;;;;console.log"response", res; // worker.mjs;;exposeparentPort, ;
Advanced: TypeScript utilities
// browser/worker.ts;;;exposeself, impl; // browesr/main.ts; // Typescript 3.9+ Type only import;; // take RemoteImpl as `wrap(...)`'s type argument.; // pass; // type error
Advanced: Transferrable
;; // pass
Advanced: Call client expose from worker.
TBD
Inspired by ...
ChangeLog
- v2: transferrable uses
['foo', [buf]]
from{cmd: 'foo', transferrable: [buf]}
- v1: release
LICENSE
MIT