Merge dependabot/npm_and_yarn/types/node-20.8.4 into combined-prs-branch
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
1 import type { Worker } from 'node:worker_threads';
2
3 import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier';
4
5 export enum WorkerProcessType {
6 workerSet = 'workerSet',
7 /** @experimental */
8 dynamicPool = 'dynamicPool',
9 fixedPool = 'fixedPool',
10 }
11
12 export interface SetInfo {
13 version: string;
14 type: string;
15 worker: string;
16 size: number;
17 elementsExecuting: number;
18 elementsPerWorker: number;
19 }
20
21 export enum WorkerSetEvents {
22 started = 'started',
23 stopped = 'stopped',
24 error = 'error',
25 elementStarted = 'elementStarted',
26 elementError = 'elementError',
27 }
28
29 export const WorkerEvents = {
30 ...PoolEvents,
31 ...WorkerSetEvents,
32 } as const;
33 export type WorkerEvents = PoolEvent | WorkerSetEvents;
34
35 export interface WorkerOptions {
36 workerStartDelay?: number;
37 elementStartDelay?: number;
38 poolMaxSize: number;
39 poolMinSize: number;
40 elementsPerWorker?: number;
41 poolOptions?: ThreadPoolOptions;
42 }
43
44 export type WorkerData = Record<string, unknown>;
45
46 export interface WorkerSetElement {
47 worker: Worker;
48 numberOfWorkerElements: number;
49 }
50
51 export interface WorkerMessage<T extends WorkerData> {
52 event: WorkerMessageEvents;
53 data: T;
54 }
55
56 export enum WorkerMessageEvents {
57 startWorkerElement = 'startWorkerElement',
58 startWorkerElementError = 'startWorkerElementError',
59 startedWorkerElement = 'startedWorkerElement',
60 }