multithreading
Version:
The missing standard library for multithreading in JavaScript (Works in the browser, Node.js, Deno, Bun).
54 lines (53 loc) • 1.4 kB
TypeScript
import { Transferable } from "./transferable.js";
import { Envelope } from "./types.js";
export declare const toSerialized: unique symbol;
export declare const toDeserialized: unique symbol;
export declare const enum PayloadType {
RAW = 0,// User data (Numbers, Strings, Plain Objects)
LIB = 1
}
export declare const enum WorkerTaskType {
RUN = 0
}
export declare const enum WorkerResponseType {
RESULT = 0,
ERROR = 1
}
export interface SerializableConstructor<T extends Serializable = Serializable> {
new (...args: any[]): T;
[toDeserialized](obj: unknown): T;
}
export declare abstract class Serializable {
abstract [toSerialized](): readonly [
/**
* value
*/
unknown
] | readonly [
/**
* value
*/
unknown,
/**
* transfer
*/
Transferable[]
] | readonly [
/**
* value
*/
unknown,
/**
* transfer
*/
Transferable[],
/**
* typeId (Escape hatch for proxies)
*/
number
];
static [toDeserialized](_obj: unknown): Serializable;
}
export declare function register(typeId: number, cls: SerializableConstructor): void;
export declare function serialize(arg: any): [Envelope, Transferable[]];
export declare function deserialize(envelope: Envelope): any;