refactor(simulator): factor out common helpers
[e-mobility-charging-stations-simulator.git] / src / utils / MessageChannelUtils.ts
CommitLineData
7671fa0b 1import type { ChargingStation } from '../charging-station';
32de5a57 2import {
e0b0ee21
JB
3 type ChargingStationData,
4 type ChargingStationWorkerMessage,
32de5a57 5 ChargingStationWorkerMessageEvents,
268a74bb
JB
6 type Statistics,
7} from '../types';
32de5a57
LM
8
9export class MessageChannelUtils {
10 private constructor() {
11 // This is intentional
12 }
13
14 public static buildStartedMessage(
15 chargingStation: ChargingStation
16 ): ChargingStationWorkerMessage<ChargingStationData> {
17 return {
721646e9 18 id: ChargingStationWorkerMessageEvents.started,
32de5a57
LM
19 data: MessageChannelUtils.buildChargingStationDataPayload(chargingStation),
20 };
21 }
22
23 public static buildStoppedMessage(
24 chargingStation: ChargingStation
25 ): ChargingStationWorkerMessage<ChargingStationData> {
26 return {
721646e9 27 id: ChargingStationWorkerMessageEvents.stopped,
32de5a57
LM
28 data: MessageChannelUtils.buildChargingStationDataPayload(chargingStation),
29 };
30 }
31
32 public static buildUpdatedMessage(
33 chargingStation: ChargingStation
34 ): ChargingStationWorkerMessage<ChargingStationData> {
35 return {
721646e9 36 id: ChargingStationWorkerMessageEvents.updated,
32de5a57
LM
37 data: MessageChannelUtils.buildChargingStationDataPayload(chargingStation),
38 };
39 }
40
41 public static buildPerformanceStatisticsMessage(
42 statistics: Statistics
43 ): ChargingStationWorkerMessage<Statistics> {
44 return {
721646e9 45 id: ChargingStationWorkerMessageEvents.performanceStatistics,
32de5a57
LM
46 data: statistics,
47 };
48 }
49
50 private static buildChargingStationDataPayload(
51 chargingStation: ChargingStation
52 ): ChargingStationData {
53 return {
452a82ca 54 started: chargingStation.started,
8d8599f0 55 stationInfo: chargingStation.stationInfo,
bbc6c092 56 connectors: [...chargingStation.connectors.values()].map(
17bfa1b6 57 // eslint-disable-next-line @typescript-eslint/no-unused-vars
fc040c43
JB
58 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
59 ),
52952bf8
JB
60 evses: [...chargingStation.evses.values()].map((evseStatus) => {
61 return {
62 ...evseStatus,
63 connectors: [...evseStatus.connectors.values()].map(
64 // eslint-disable-next-line @typescript-eslint/no-unused-vars
65 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
66 ),
67 };
68 }),
8d8599f0
JB
69 ocppConfiguration: chargingStation.ocppConfiguration,
70 wsState: chargingStation?.wsConnection?.readyState,
71 bootNotificationResponse: chargingStation.bootNotificationResponse,
5e3cb728 72 ...(chargingStation.automaticTransactionGenerator && {
c72f6634
JB
73 automaticTransactionGenerator: {
74 automaticTransactionGenerator:
ac7f79af 75 chargingStation.getAutomaticTransactionGeneratorConfiguration(),
c72f6634
JB
76 automaticTransactionGeneratorStatuses: [
77 ...chargingStation.automaticTransactionGenerator.connectorsStatus.values(),
78 ],
79 },
5e3cb728 80 }),
32de5a57
LM
81 };
82 }
83}