build(deps-dev): apply updates
[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 staticPool = 'staticPool',
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 error = 'error',
23 }
24
25 export const WorkerEvents = {
26 ...PoolEvents,
27 ...WorkerSetEvents,
28 } as const;
29 export type WorkerEvents = PoolEvent | WorkerSetEvents;
30
31 export interface WorkerOptions {
32 workerStartDelay?: number;
33 elementStartDelay?: number;
34 poolMaxSize: number;
35 poolMinSize: number;
36 elementsPerWorker?: number;
37 poolOptions?: ThreadPoolOptions;
38 }
39
40 export type WorkerData = Record<string, unknown>;
41
42 export interface WorkerSetElement {
43 worker: Worker;
44 numberOfWorkerElements: number;
45 }
46
47 export interface WorkerMessage<T extends WorkerData> {
48 id: WorkerMessageEvents;
49 data: T;
50 }
51
52 export enum WorkerMessageEvents {
53 startWorkerElement = 'startWorkerElement',
54 }