Merge dependabot/npm_and_yarn/ui/web/jsdom-23.1.0 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 // eslint-disable-next-line @typescript-eslint/no-redeclare
34 export type WorkerEvents = PoolEvent | WorkerSetEvents
35
36 export interface WorkerOptions {
37 workerStartDelay?: number
38 elementStartDelay?: number
39 poolMaxSize: number
40 poolMinSize: number
41 elementsPerWorker?: number
42 poolOptions?: ThreadPoolOptions
43 }
44
45 export type WorkerData = Record<string, unknown>
46
47 export interface WorkerSetElement {
48 worker: Worker
49 numberOfWorkerElements: number
50 }
51
52 export interface WorkerMessage<T extends WorkerData> {
53 event: WorkerMessageEvents
54 data: T
55 }
56
57 export enum WorkerMessageEvents {
58 startWorkerElement = 'startWorkerElement',
59 startWorkerElementError = 'startWorkerElementError',
60 startedWorkerElement = 'startedWorkerElement',
61 }