build: switch to NodeNext module resolution
[e-mobility-charging-stations-simulator.git] / src / utils / ChargingStationConfigurationUtils.ts
CommitLineData
a6ef1ece
JB
1import { isNullOrUndefined } from './Utils.js';
2import type { ChargingStation } from '../charging-station/index.js';
179ed367
JB
3import type {
4 ChargingStationAutomaticTransactionGeneratorConfiguration,
5 ConnectorStatus,
6 EvseStatusConfiguration,
09989bb8 7 EvseStatusWorkerType,
a6ef1ece 8} from '../types/index.js';
179ed367
JB
9
10export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
5edd8ba0 11 chargingStation: ChargingStation,
179ed367
JB
12): ChargingStationAutomaticTransactionGeneratorConfiguration => {
13 return {
14 automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(),
9bf0ef23 15 ...(!isNullOrUndefined(chargingStation.automaticTransactionGenerator?.connectorsStatus) && {
179ed367 16 automaticTransactionGeneratorStatuses: [
e1d9a0f4 17 ...chargingStation.automaticTransactionGenerator!.connectorsStatus.values(),
179ed367
JB
18 ],
19 }),
20 };
21};
22
23export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => {
24 return [...chargingStation.connectors.values()].map(
25 // eslint-disable-next-line @typescript-eslint/no-unused-vars
5edd8ba0 26 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest,
179ed367
JB
27 );
28};
29
30export const enum OutputFormat {
31 configuration = 'configuration',
09989bb8 32 worker = 'worker',
179ed367
JB
33}
34
35export const buildEvsesStatus = (
36 chargingStation: ChargingStation,
5edd8ba0 37 outputFormat: OutputFormat = OutputFormat.configuration,
09989bb8 38): (EvseStatusWorkerType | EvseStatusConfiguration)[] => {
179ed367
JB
39 return [...chargingStation.evses.values()].map((evseStatus) => {
40 const connectorsStatus = [...evseStatus.connectors.values()].map(
41 // eslint-disable-next-line @typescript-eslint/no-unused-vars
5edd8ba0 42 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest,
179ed367 43 );
09989bb8
JB
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;
179ed367
JB
58 }
59 });
60};