@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
TypeScript
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 {};