fix(simulator): rename and fix object own property detection helper
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationWorker.ts
1 import type { WebSocket } from 'ws';
2
3 import type {
4 BootNotificationResponse,
5 ChargingStationAutomaticTransactionGeneratorConfiguration,
6 ChargingStationInfo,
7 ConnectorStatus,
8 JsonObject,
9 Statistics,
10 } from './internal';
11 import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker';
12
13 interface ChargingStationWorkerOptions extends JsonObject {
14 elementStartDelay?: number;
15 }
16
17 export interface ChargingStationWorkerData extends WorkerData {
18 index: number;
19 templateFile: string;
20 chargingStationWorkerOptions?: ChargingStationWorkerOptions;
21 }
22
23 export interface ChargingStationData extends WorkerData {
24 stationInfo: ChargingStationInfo;
25 started: boolean;
26 wsState?:
27 | typeof WebSocket.CONNECTING
28 | typeof WebSocket.OPEN
29 | typeof WebSocket.CLOSING
30 | typeof WebSocket.CLOSED;
31 bootNotificationResponse?: BootNotificationResponse;
32 connectors: ConnectorStatus[];
33 automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration;
34 }
35
36 enum ChargingStationMessageEvents {
37 STARTED = 'started',
38 STOPPED = 'stopped',
39 UPDATED = 'updated',
40 PERFORMANCE_STATISTICS = 'performanceStatistics',
41 }
42
43 export const ChargingStationWorkerMessageEvents = {
44 ...WorkerMessageEvents,
45 ...ChargingStationMessageEvents,
46 } as const;
47 export type ChargingStationWorkerMessageEvents = WorkerMessageEvents | ChargingStationMessageEvents;
48
49 export type ChargingStationWorkerMessageData = ChargingStationData | Statistics;
50
51 export type ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> = Omit<
52 WorkerMessage<T>,
53 'id'
54 > & {
55 id: ChargingStationWorkerMessageEvents;
56 };