UNPKG

@arrows/worker

Version:

Simple, promise-based API for native worker threads (with pools)

26 lines (25 loc) 1.2 kB
/// <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 {};