Browse API packages

API · v0.17.1

worker

Standard library workers

Member signatures use schematic object.member(...) API notation. Exported type declarations are valid TypeScript.

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.

ts
import Worker from "@rcompat/worker";
import type {
  Worker as WorkerContract, WorkerConstructor, WorkerOptions,
} from "@rcompat/worker";

Worker constructor#

Runtime-selected portable worker constructor.

ts
new Worker(
  input: string | URL,
  options?: WorkerOptions,
): WorkerContract;

Example

ts
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.

ts
onerror: ErrorHandler;

Worker.onmessage#

Callback invoked for messages from the worker.

ts
onmessage: MessageHandler;

Worker.onmessageerror#

Callback invoked when an incoming message cannot be deserialized.

ts
onmessageerror: MessageHandler;

Worker.postMessage#

Sends a structured-cloneable value and optional transferables.

ts
postMessage(message: unknown, transfer?: Transferable[]): void;

Worker.terminate#

Stops worker execution.

ts
terminate(): void;

WorkerConstructor#

Runtime-selected portable worker constructor.

Example

ts
const worker = new Worker(new URL("./worker.js", import.meta.url), {
  name: "example",
});
worker.postMessage("hello");
ts
type WorkerConstructor = new (
  input: string | URL,
  options?: WorkerOptions,
) => Worker;

WorkerOptions#

Shared options for constructing a portable module worker.

ts
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.

ts
type ErrorHandler = ((event: ErrorEvent) => unknown) | null;

MessageHandler#

Message-event callback assigned to a worker.

ts
type MessageHandler = ((event: MessageEvent) => unknown) | null;