webworker-typed
Dead simple type-safe Web Workers.
Installation
npm install webworker-typed
Usage
Create a worker file and export the functions you want to expose:
import { exportWorker } from 'webworker-typed';
function foo() { return 'bar'; }
async function asyncFoo() { return 'bar'; }
export default exportWorker({
foo,
asyncFoo,
inline: () => 'bar',
});
From your main thread, import the worker and call the functions:
import { importWorker } from 'webworker-typed';
import type MyWorker from './my-worker.ts';
const untypedWorker = new Worker(new URL('./my-worker.ts', import.meta.url));
const worker = importWorker<typeof MyWorker>(untypedWorker);
async (() => {
console.assert(await worker.foo() === 'bar');
console.assert(await worker.asyncFoo() === 'bar');
console.assert(await worker.inline() === 'bar');
});
License
This project is licensed under the MIT License.