build: properly workaround Ajv TS type definitions bug
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
CommitLineData
01f4001e 1import type { Worker } from 'node:worker_threads';
c045d9a9 2
18413380 3import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier';
8114d10e 4
a4624c96 5export enum WorkerProcessType {
721646e9 6 workerSet = 'workerSet',
56e2e1ab 7 /** @experimental */
721646e9 8 dynamicPool = 'dynamicPool',
1d8f226b 9 fixedPool = 'fixedPool',
a4624c96
JB
10}
11
e1d9a0f4 12export interface SetInfo {
628c30e5 13 version: string;
0bde1ea1
JB
14 type: string;
15 worker: string;
b779c0f8 16 size: number;
19bdf4ca 17 elementsExecuting: number;
b779c0f8 18 elementsPerWorker: number;
e1d9a0f4 19}
b779c0f8 20
810f4caf 21export enum WorkerSetEvents {
4c7c767b
JB
22 started = 'started',
23 stopped = 'stopped',
810f4caf 24 error = 'error',
c26984f2
JB
25 elementStarted = 'elementStarted',
26 elementError = 'elementError',
810f4caf
JB
27}
28
29export const WorkerEvents = {
30 ...PoolEvents,
31 ...WorkerSetEvents,
32} as const;
33export type WorkerEvents = PoolEvent | WorkerSetEvents;
34
e1d9a0f4 35export interface WorkerOptions {
4bfd80fa
JB
36 workerStartDelay?: number;
37 elementStartDelay?: number;
1895299d
JB
38 poolMaxSize: number;
39 poolMinSize: number;
b8da29bc 40 elementsPerWorker?: number;
18413380 41 poolOptions?: ThreadPoolOptions;
e1d9a0f4 42}
b8da29bc 43
32de5a57 44export type WorkerData = Record<string, unknown>;
46eb543c 45
e1d9a0f4 46export interface WorkerSetElement {
81797102
JB
47 worker: Worker;
48 numberOfWorkerElements: number;
e1d9a0f4 49}
81797102 50
e1d9a0f4 51export interface WorkerMessage<T extends WorkerData> {
8cc482a9 52 event: WorkerMessageEvents;
c3ee95af 53 data: T;
e1d9a0f4 54}
c045d9a9 55
2a370053 56export enum WorkerMessageEvents {
721646e9 57 startWorkerElement = 'startWorkerElement',
2bb7a73e
JB
58 startWorkerElementError = 'startWorkerElementError',
59 startedWorkerElement = 'startedWorkerElement',
c045d9a9 60}