Portable module workers with the Web Worker messaging contract.
Browsers and Deno use the native worker. Bun adds a compatibility preload,
while Node adapts worker_threads and bootstraps Web Worker globals. Worker
scripts should use self, events, and postMessage rather than
runtime-specific messaging APIs.
import Worker from "@rcompat/worker";
import type {
Worker as WorkerContract, WorkerConstructor, WorkerOptions,
} from "@rcompat/worker";Worker constructor#
Runtime-selected portable worker constructor.
new Worker(
input: string | URL,
options?: WorkerOptions,
): WorkerContract;Example
const worker = new Worker(new URL("./worker.js", import.meta.url), {
name: "example",
});
worker.postMessage("hello");Types#
Worker#
Portable worker instance and messaging contract.
Worker extends EventTarget, including its standard listener and dispatch methods.
Worker members#
Worker.onerror#
Callback invoked for worker execution errors.
onerror: ErrorHandler;Worker.onmessage#
Callback invoked for messages from the worker.
onmessage: MessageHandler;Worker.onmessageerror#
Callback invoked when an incoming message cannot be deserialized.
onmessageerror: MessageHandler;Worker.postMessage#
Sends a structured-cloneable value and optional transferables.
postMessage(message: unknown, transfer?: Transferable[]): void;Worker.terminate#
Stops worker execution.
terminate(): void;WorkerConstructor#
Runtime-selected portable worker constructor.
Example
const worker = new Worker(new URL("./worker.js", import.meta.url), {
name: "example",
});
worker.postMessage("hello");type WorkerConstructor = new (
input: string | URL,
options?: WorkerOptions,
) => Worker;WorkerOptions#
Shared options for constructing a portable module worker.
type WorkerOptions = {
// Runtime-visible worker name.
name?: string;
// Worker execution mode.
// Default: `"module"`
type?: "module";
};Supporting contracts#
These handler aliases support the public worker properties.
ErrorHandler#
Error-event callback assigned to a worker.
type ErrorHandler = ((event: ErrorEvent) => unknown) | null;MessageHandler#
Message-event callback assigned to a worker.
type MessageHandler = ((event: MessageEvent) => unknown) | null;