UNPKG

node-worker-threads-pool

Version:

Simple worker threads pool using Node's worker_threads module. Compatible with ES6+ Promise, Async/Await.

27 lines (26 loc) 1.36 kB
/// <reference types="node" /> import type { MessagePort } from 'worker_threads'; export declare type TransferList = Parameters<typeof MessagePort.prototype.postMessage>[1]; export interface TaskFuncThis<WorkerData = any> { workerData?: WorkerData; require: NodeRequire; } export declare type Func<TThis = any> = (this: TThis, ...args: any[]) => any; export declare type Async<TFunc extends Func> = ReturnType<TFunc> extends never ? Parameters<TFunc> extends [] ? () => Promise<ReturnType<TFunc>> : (...args: Parameters<TFunc>) => Promise<ReturnType<TFunc>> : ReturnType<TFunc> extends Promise<any> ? TFunc : Parameters<TFunc> extends [] ? () => Promise<ReturnType<TFunc>> : (...args: Parameters<TFunc>) => Promise<ReturnType<TFunc>>; export interface NodeWorkerSettings { /** * Enable SHARE_ENV for all threads in pool. * @see {@link https://nodejs.org/dist/latest-v14.x/docs/api/worker_threads.html#worker_threads_worker_share_env SHARE_ENV} */ shareEnv?: boolean; /** * Set resourceLimits for all threads in pool. * @see {@link https://nodejs.org/api/worker_threads.html#worker_threads_worker_resourcelimits resourcelimits} */ resourceLimits?: { maxYoungGenerationSizeMb?: number; maxOldGenerationSizeMb?: number; codeRangeSizeMb?: number; stackSizeMb?: number; }; }