@arrows/worker
Version:
Simple, promise-based API for native worker threads (with pools)
26 lines (25 loc) • 1.2 kB
TypeScript
/// <reference types="node" />
import { WorkerOptions, MessagePort } from "worker_threads";
export declare const transferKey: unique symbol;
declare type Config<T2, R> = Partial<WorkerOptions & {
poolSize: number;
workerData: T2;
transfer: (result: R) => Array<ArrayBuffer | MessagePort>;
}>;
declare type ExitCode = number;
declare type TransferResult<R> = {
result: R;
[transferKey]: Array<ArrayBuffer | MessagePort>;
};
export declare type Handler<T1, T2, R> = (payload?: T1, workerData?: T2) => R;
export declare type Work = (handler: Handler<any, any, any>) => void;
export declare type Task<T1, R> = {
(payload: T1, transferList?: (ArrayBuffer | MessagePort)[]): Promise<R>;
ref: () => void;
unref: () => void;
terminate: () => Promise<ExitCode[]>;
};
export declare type Spawn = (fileName: string, config?: Config<any, any>) => Task<any, any>;
export declare type Worker = <T1, T2, R>(handler: Handler<T1, T2, R>, config?: Config<T2, R>) => Task<T1, R>;
export declare type Transfer = <T1, T2, R>(handler: Handler<T1, T2, R>, mapperFn: (result: R) => Array<ArrayBuffer | MessagePort>) => (payload: T1, workerData?: T2) => TransferResult<R>;
export {};