chore: switch coding style to JS standard
[e-mobility-charging-stations-simulator.git] / src / utils / ChargingStationConfigurationUtils.ts
1 import { isNullOrUndefined } from './Utils.js'
2 import type { ChargingStation } from '../charging-station/index.js'
3 import type {
4 ChargingStationAutomaticTransactionGeneratorConfiguration,
5 ConnectorStatus,
6 EvseStatusConfiguration,
7 EvseStatusWorkerType
8 } from '../types/index.js'
9
10 export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
11 chargingStation: ChargingStation
12 ): ChargingStationAutomaticTransactionGeneratorConfiguration => {
13 return {
14 automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(),
15 ...(!isNullOrUndefined(chargingStation.automaticTransactionGenerator?.connectorsStatus) && {
16 automaticTransactionGeneratorStatuses: [
17 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
18 ...chargingStation.automaticTransactionGenerator!.connectorsStatus.values()
19 ]
20 })
21 }
22 }
23
24 export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => {
25 return [...chargingStation.connectors.values()].map(
26 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
27 )
28 }
29
30 export const enum OutputFormat {
31 configuration = 'configuration',
32 worker = 'worker'
33 }
34
35 export const buildEvsesStatus = (
36 chargingStation: ChargingStation,
37 outputFormat: OutputFormat = OutputFormat.configuration
38 ): Array<EvseStatusWorkerType | EvseStatusConfiguration> => {
39 // eslint-disable-next-line array-callback-return
40 return [...chargingStation.evses.values()].map((evseStatus) => {
41 const connectorsStatus = [...evseStatus.connectors.values()].map(
42 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
43 )
44 let status: EvseStatusConfiguration
45 switch (outputFormat) {
46 case OutputFormat.worker:
47 return {
48 ...evseStatus,
49 connectors: connectorsStatus
50 }
51 case OutputFormat.configuration:
52 status = {
53 ...evseStatus,
54 connectorsStatus
55 }
56 delete (status as EvseStatusWorkerType).connectors
57 return status
58 }
59 })
60 }