UNPKG

@byterygon/workerr

Version:

Workerr is a lightweight library that simplifies working with Web Workers in JavaScript. It provides a more intuitive way to handle parallel tasks by using Promises, along with a built-in worker pool to efficiently manage worker instances. With strong Typ

41 lines (39 loc) 1.88 kB
import { InvokeHandlers } from './command'; interface WorkerrControllerConstructorBase<IContext extends object> { concurrency?: number; context: IContext; } interface WorkerrControllerConstructorWithFactory { workerType: 'instance'; worker: (() => Worker); } export type WorkerControllerConstructor<IContext extends object> = WorkerrControllerConstructorBase<IContext> & (WorkerrControllerConstructorWithFactory); interface WorkerrControllerEventMap { "ready": []; "error": [Error]; } export declare class WorkerrController<IRequests extends InvokeHandlers<IContext>, IContext extends object> { private worker; private taskQueue; private concurrency; private context; private eventEmitter; private readyPromise; ready: boolean; private terminated; private constructor(); static create<IRequests extends InvokeHandlers<IContext>, IContext extends object = IRequests extends InvokeHandlers<infer _IContext> ? _IContext : never>(options: WorkerControllerConstructor<IContext>): WorkerrController<IRequests, IContext>; private postMessage; awaitReady(): Promise<void>; updateContext(updater: (context: IContext) => IContext): Promise<void>; private _invoke; invoke<IRequestName extends keyof IRequests>(cmd: IRequestName, params: Parameters<IRequests[IRequestName]>[0], options?: { abortSignal?: AbortSignal; transfer?: Transferable[]; }): Promise<ReturnType<IRequests[IRequestName]>>; addListener<K extends keyof WorkerrControllerEventMap>(eventName: K, listener: (...aras: WorkerrControllerEventMap[K]) => void): void; removeListener<K extends keyof WorkerrControllerEventMap>(eventName: K, listener: (...aras: WorkerrControllerEventMap[K]) => void): void; removeAllListeners(eventName?: keyof WorkerrControllerEventMap): void; terminate(): void; } export {};