website-scrap-engine
Version:
Configurable website scraper in typescript
40 lines • 1.66 kB
TypeScript
import type { MessagePort, WorkerOptions } from 'node:worker_threads';
import { Worker } from 'node:worker_threads';
import type { URL } from 'node:url';
import type { LogWorkerMessage } from './worker-type.js';
import type { PendingPromise, PendingPromiseWithBody, WorkerMessage } from './types.js';
export interface WorkerInfo {
readonly id: number;
load: number;
worker: Worker;
}
export declare class WorkerInfoImpl implements WorkerInfo {
worker: Worker;
readonly id: number;
load: number;
constructor(worker: Worker);
}
export interface WorkerFactory {
(filename: string | URL, options?: WorkerOptions): Worker;
}
export declare class WorkerPool<T = unknown, R extends WorkerMessage = WorkerMessage> {
coreSize: number;
workerScript: string;
workerData: Record<string, unknown>;
maxLoad: number;
factory: WorkerFactory;
readonly workers: WorkerInfo[];
readonly pendingTasks: PendingPromiseWithBody<R>[];
readonly workingTasks: Record<number, PendingPromise>;
readonly ready: Promise<void>;
taskIdCounter: number;
constructor(coreSize: number, workerScript: string, workerData: Record<string, unknown>, maxLoad?: number, factory?: WorkerFactory);
workerOnError(info: WorkerInfo, err: Error): void;
onMessage(info: WorkerInfo, message: WorkerMessage): void;
takeLog(info: WorkerInfo, message: LogWorkerMessage): void;
complete(info: WorkerInfo, message: WorkerMessage): void;
submitTask(taskBody: T, transferList?: Array<ArrayBuffer | MessagePort>): Promise<R>;
nextTask(): void;
dispose(): Promise<number[]>;
}
//# sourceMappingURL=worker-pool.d.ts.map