refactor: consolidate default values handling
[e-mobility-charging-stations-simulator.git] / src / utils / MessageChannelUtils.ts
CommitLineData
179ed367
JB
1import {
2 OutputFormat,
3 buildChargingStationAutomaticTransactionGeneratorConfiguration,
4 buildConnectorsStatus,
66a7748d
JB
5 buildEvsesStatus
6} from './ChargingStationConfigurationUtils.js'
7import type { ChargingStation } from '../charging-station/index.js'
32de5a57 8import {
e0b0ee21
JB
9 type ChargingStationData,
10 type ChargingStationWorkerMessage,
32de5a57 11 ChargingStationWorkerMessageEvents,
66a7748d
JB
12 type Statistics
13} from '../types/index.js'
32de5a57 14
244c1396
JB
15export const buildAddedMessage = (
16 chargingStation: ChargingStation
17): ChargingStationWorkerMessage<ChargingStationData> => {
18 return {
19 event: ChargingStationWorkerMessageEvents.added,
20 data: buildChargingStationDataPayload(chargingStation)
21 }
22}
23
c8faabc8 24export const buildStartedMessage = (
66a7748d 25 chargingStation: ChargingStation
c8faabc8
JB
26): ChargingStationWorkerMessage<ChargingStationData> => {
27 return {
8cc482a9 28 event: ChargingStationWorkerMessageEvents.started,
66a7748d
JB
29 data: buildChargingStationDataPayload(chargingStation)
30 }
31}
32de5a57 32
c8faabc8 33export const buildStoppedMessage = (
66a7748d 34 chargingStation: ChargingStation
c8faabc8
JB
35): ChargingStationWorkerMessage<ChargingStationData> => {
36 return {
8cc482a9 37 event: ChargingStationWorkerMessageEvents.stopped,
66a7748d
JB
38 data: buildChargingStationDataPayload(chargingStation)
39 }
40}
32de5a57 41
c8faabc8 42export const buildUpdatedMessage = (
66a7748d 43 chargingStation: ChargingStation
c8faabc8
JB
44): ChargingStationWorkerMessage<ChargingStationData> => {
45 return {
8cc482a9 46 event: ChargingStationWorkerMessageEvents.updated,
66a7748d
JB
47 data: buildChargingStationDataPayload(chargingStation)
48 }
49}
32de5a57 50
c8faabc8 51export const buildPerformanceStatisticsMessage = (
66a7748d 52 statistics: Statistics
c8faabc8
JB
53): ChargingStationWorkerMessage<Statistics> => {
54 return {
8cc482a9 55 event: ChargingStationWorkerMessageEvents.performanceStatistics,
66a7748d
JB
56 data: statistics
57 }
58}
32de5a57 59
244c1396
JB
60export const buildChargingStationDataPayload = (
61 chargingStation: ChargingStation
62): ChargingStationData => {
c8faabc8
JB
63 return {
64 started: chargingStation.started,
5199f9fd
JB
65 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
66 stationInfo: chargingStation.stationInfo!,
c8faabc8
JB
67 connectors: buildConnectorsStatus(chargingStation),
68 evses: buildEvsesStatus(chargingStation, OutputFormat.worker),
66a7748d 69 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
e1d9a0f4 70 ocppConfiguration: chargingStation.ocppConfiguration!,
1d41bc6b 71 supervisionUrl: chargingStation.wsConnectionUrl.href,
5199f9fd 72 wsState: chargingStation.wsConnection?.readyState,
c8faabc8 73 bootNotificationResponse: chargingStation.bootNotificationResponse,
66a7748d 74 ...(chargingStation.automaticTransactionGenerator != null && {
c8faabc8 75 automaticTransactionGenerator:
66a7748d
JB
76 buildChargingStationAutomaticTransactionGeneratorConfiguration(chargingStation)
77 })
78 }
79}