-import type { Worker } from 'node:worker_threads';
+import type { Worker } from 'node:worker_threads'
-import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier';
+import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier'
export enum WorkerProcessType {
workerSet = 'workerSet',
- dynamicPool = 'dynamicPool',
- staticPool = 'staticPool',
+ fixedPool = 'fixedPool',
+ /** @experimental */
+ dynamicPool = 'dynamicPool'
}
-export type SetInfo = {
- type: string;
- worker: string;
- size: number;
- elementsExecuting: number;
- elementsPerWorker: number;
-};
+export interface SetInfo {
+ version: string
+ type: string
+ worker: string
+ started: boolean
+ size: number
+ elementsExecuting: number
+ elementsPerWorker: number
+}
export enum WorkerSetEvents {
+ started = 'started',
+ stopped = 'stopped',
error = 'error',
+ elementAdded = 'elementAdded',
+ elementError = 'elementError'
}
export const WorkerEvents = {
...PoolEvents,
- ...WorkerSetEvents,
-} as const;
-export type WorkerEvents = PoolEvent | WorkerSetEvents;
-
-export type WorkerOptions = {
- workerStartDelay?: number;
- elementStartDelay?: number;
- poolMaxSize: number;
- poolMinSize: number;
- elementsPerWorker?: number;
- poolOptions?: ThreadPoolOptions;
-};
-
-export type WorkerData = Record<string, unknown>;
-
-export type WorkerSetElement = {
- worker: Worker;
- numberOfWorkerElements: number;
-};
-
-export type WorkerMessage<T extends WorkerData> = {
- id: WorkerMessageEvents;
- data: T;
-};
+ ...WorkerSetEvents
+} as const
+// eslint-disable-next-line @typescript-eslint/no-redeclare
+export type WorkerEvents = PoolEvent | WorkerSetEvents
+
+export interface WorkerOptions {
+ workerStartDelay?: number
+ elementStartDelay?: number
+ poolMaxSize: number
+ poolMinSize: number
+ elementsPerWorker?: number
+ poolOptions?: ThreadPoolOptions
+}
+
+export type WorkerData = Record<string, unknown>
+
+export interface WorkerSetElement {
+ worker: Worker
+ numberOfWorkerElements: number
+}
+
+export interface WorkerMessage<T extends WorkerData> {
+ event: WorkerMessageEvents
+ data: T
+}
export enum WorkerMessageEvents {
- startWorkerElement = 'startWorkerElement',
+ addWorkerElement = 'addWorkerElement',
+ addedWorkerElement = 'addedWorkerElement',
+ workerElementError = 'workerElementError'
}