Commit | Line | Data |
---|---|---|
66a7748d | 1 | import type { Worker } from 'node:worker_threads' |
c045d9a9 | 2 | |
66a7748d | 3 | import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier' |
8114d10e | 4 | |
a4624c96 | 5 | export enum WorkerProcessType { |
721646e9 | 6 | workerSet = 'workerSet', |
244c1396 | 7 | fixedPool = 'fixedPool', |
56e2e1ab | 8 | /** @experimental */ |
244c1396 | 9 | dynamicPool = 'dynamicPool' |
a4624c96 JB |
10 | } |
11 | ||
e1d9a0f4 | 12 | export interface SetInfo { |
66a7748d JB |
13 | version: string |
14 | type: string | |
15 | worker: string | |
4f02e9b4 | 16 | started: boolean |
66a7748d JB |
17 | size: number |
18 | elementsExecuting: number | |
19 | elementsPerWorker: number | |
e1d9a0f4 | 20 | } |
b779c0f8 | 21 | |
810f4caf | 22 | export enum WorkerSetEvents { |
4c7c767b JB |
23 | started = 'started', |
24 | stopped = 'stopped', | |
810f4caf | 25 | error = 'error', |
244c1396 | 26 | elementAdded = 'elementAdded', |
a223d9be | 27 | elementError = 'elementError' |
810f4caf JB |
28 | } |
29 | ||
30 | export const WorkerEvents = { | |
31 | ...PoolEvents, | |
66a7748d JB |
32 | ...WorkerSetEvents |
33 | } as const | |
34 | // eslint-disable-next-line @typescript-eslint/no-redeclare | |
35 | export type WorkerEvents = PoolEvent | WorkerSetEvents | |
810f4caf | 36 | |
e1d9a0f4 | 37 | export interface WorkerOptions { |
66a7748d | 38 | workerStartDelay?: number |
da47bc29 | 39 | elementAddDelay?: number |
66a7748d JB |
40 | poolMaxSize: number |
41 | poolMinSize: number | |
42 | elementsPerWorker?: number | |
43 | poolOptions?: ThreadPoolOptions | |
e1d9a0f4 | 44 | } |
b8da29bc | 45 | |
66a7748d | 46 | export type WorkerData = Record<string, unknown> |
46eb543c | 47 | |
551f2b6e JB |
48 | export interface WorkerDataError extends WorkerData { |
49 | event: WorkerMessageEvents | |
50 | name: string | |
51 | message: string | |
52 | stack?: string | |
53 | } | |
54 | ||
e1d9a0f4 | 55 | export interface WorkerSetElement { |
66a7748d JB |
56 | worker: Worker |
57 | numberOfWorkerElements: number | |
e1d9a0f4 | 58 | } |
81797102 | 59 | |
e1d9a0f4 | 60 | export interface WorkerMessage<T extends WorkerData> { |
65d22502 | 61 | uuid: `${string}-${string}-${string}-${string}` |
66a7748d JB |
62 | event: WorkerMessageEvents |
63 | data: T | |
e1d9a0f4 | 64 | } |
c045d9a9 | 65 | |
2a370053 | 66 | export enum WorkerMessageEvents { |
244c1396 JB |
67 | addWorkerElement = 'addWorkerElement', |
68 | addedWorkerElement = 'addedWorkerElement', | |
69 | workerElementError = 'workerElementError' | |
c045d9a9 | 70 | } |