UNPKG

with-worker-threads

Version:

Spawn worker threads that are closed when the function returns

24 lines (23 loc) 1.61 kB
/// <reference types="node" /> import { WorkerOptions } from "node:worker_threads"; type PoolOp = { external: (...args: any) => any; internal: (...args: any) => any; }; type PoolOperationConfig = PoolOp | ((...args: any) => any); type InternalOperation<T extends PoolOperationConfig> = T extends PoolOp ? T["internal"] : T; type ExternalOperation<T extends PoolOperationConfig> = T extends PoolOp ? T["external"] : T; export declare const withWorkerThreads: <PoolOperations extends { [operation: string]: PoolOperationConfig; }>(taskCaller: { [Property in keyof PoolOperations]: (task: (args: Parameters<InternalOperation<PoolOperations[Property]>>, transferList?: Transferable[]) => ReturnType<InternalOperation<PoolOperations[Property]>>) => (...args: Parameters<ExternalOperation<PoolOperations[Property]>>) => ReturnType<ExternalOperation<PoolOperations[Property]>>; }) => (path: string, options?: { concurrency?: number; maxUtilization?: number; workerOptions?: WorkerOptions; } | undefined) => <T>(fn: (pool?: { [Property_1 in keyof PoolOperations]: ExternalOperation<PoolOperations[Property_1]>; } | undefined) => T) => Promise<Awaited<T>>; export declare const implementWorker: <PoolOperations extends { [operation: string]: PoolOperationConfig; }>(operations: { [Property in keyof PoolOperations]: (...args: Parameters<InternalOperation<PoolOperations[Property]>>) => ReturnType<InternalOperation<PoolOperations[Property]>> | Promise<{ result: Awaited<ReturnType<InternalOperation<PoolOperations[Property]>>>; transfer?: Transferable[]; }>; }) => void; export {};