refactor: cleanup package.json version usage
[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 dynamicPool = 'dynamicPool',
8 staticPool = 'staticPool',
9 }
10
11 export type SetInfo = {
12 version: string;
13 type: string;
14 worker: string;
15 size: number;
16 elementsExecuting: number;
17 elementsPerWorker: number;
18 };
19
20 export enum WorkerSetEvents {
21 error = 'error',
22 }
23
24 export const WorkerEvents = {
25 ...PoolEvents,
26 ...WorkerSetEvents,
27 } as const;
28 export type WorkerEvents = PoolEvent | WorkerSetEvents;
29
30 export type WorkerOptions = {
31 workerStartDelay?: number;
32 elementStartDelay?: number;
33 poolMaxSize: number;
34 poolMinSize: number;
35 elementsPerWorker?: number;
36 poolOptions?: ThreadPoolOptions;
37 };
38
39 export type WorkerData = Record<string, unknown>;
40
41 export type WorkerSetElement = {
42 worker: Worker;
43 numberOfWorkerElements: number;
44 };
45
46 export type WorkerMessage<T extends WorkerData> = {
47 id: WorkerMessageEvents;
48 data: T;
49 };
50
51 export enum WorkerMessageEvents {
52 startWorkerElement = 'startWorkerElement',
53 }