1 import { CircularBuffer
} from
'mnemonist'
3 import type { ChargingStation
} from
'../charging-station/index.js'
5 type ChargingStationData
,
6 type ChargingStationWorkerMessage
,
7 ChargingStationWorkerMessageEvents
,
10 } from
'../types/index.js'
12 buildChargingStationAutomaticTransactionGeneratorConfiguration
,
13 buildConnectorsStatus
,
16 } from
'./ChargingStationConfigurationUtils.js'
18 export const buildAddedMessage
= (
19 chargingStation
: ChargingStation
20 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
22 event
: ChargingStationWorkerMessageEvents
.added
,
23 data
: buildChargingStationDataPayload(chargingStation
)
27 export const buildDeletedMessage
= (
28 chargingStation
: ChargingStation
29 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
31 event
: ChargingStationWorkerMessageEvents
.deleted
,
32 data
: buildChargingStationDataPayload(chargingStation
)
36 export const buildStartedMessage
= (
37 chargingStation
: ChargingStation
38 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
40 event
: ChargingStationWorkerMessageEvents
.started
,
41 data
: buildChargingStationDataPayload(chargingStation
)
45 export const buildStoppedMessage
= (
46 chargingStation
: ChargingStation
47 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
49 event
: ChargingStationWorkerMessageEvents
.stopped
,
50 data
: buildChargingStationDataPayload(chargingStation
)
54 export const buildUpdatedMessage
= (
55 chargingStation
: ChargingStation
56 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
58 event
: ChargingStationWorkerMessageEvents
.updated
,
59 data
: buildChargingStationDataPayload(chargingStation
)
63 export const buildPerformanceStatisticsMessage
= (
64 statistics
: Statistics
65 ): ChargingStationWorkerMessage
<Statistics
> => {
66 const statisticsData
= [...statistics
.statisticsData
].map(([key
, value
]) => {
67 if (value
.measurementTimeSeries
instanceof CircularBuffer
) {
68 value
.measurementTimeSeries
= value
.measurementTimeSeries
.toArray() as TimestampedData
[]
73 event
: ChargingStationWorkerMessageEvents
.performanceStatistics
,
76 name
: statistics
.name
,
78 createdAt
: statistics
.createdAt
,
79 updatedAt
: statistics
.updatedAt
,
85 const buildChargingStationDataPayload
= (chargingStation
: ChargingStation
): ChargingStationData
=> {
87 started
: chargingStation
.started
,
88 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
89 stationInfo
: chargingStation
.stationInfo
!,
90 connectors
: buildConnectorsStatus(chargingStation
),
91 evses
: buildEvsesStatus(chargingStation
, OutputFormat
.worker
),
92 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
93 ocppConfiguration
: chargingStation
.ocppConfiguration
!,
94 supervisionUrl
: chargingStation
.wsConnectionUrl
.href
,
95 wsState
: chargingStation
.wsConnection
?.readyState
,
96 bootNotificationResponse
: chargingStation
.bootNotificationResponse
,
97 ...(chargingStation
.automaticTransactionGenerator
!= null && {
98 automaticTransactionGenerator
:
99 buildChargingStationAutomaticTransactionGeneratorConfiguration(chargingStation
)