+ const defaultWorkerConfiguration: WorkerConfiguration = {
+ processType: WorkerProcessType.workerSet,
+ startDelay: DEFAULT_WORKER_START_DELAY,
+ elementsPerWorker: 'auto',
+ elementStartDelay: DEFAULT_ELEMENT_START_DELAY,
+ poolMinSize: DEFAULT_POOL_MIN_SIZE,
+ poolMaxSize: DEFAULT_POOL_MAX_SIZE,
+ };
+ hasOwnProp(Configuration.getConfigurationData(), 'workerPoolStrategy') &&
+ delete Configuration.getConfigurationData()?.workerPoolStrategy;
+ const deprecatedWorkerConfiguration: WorkerConfiguration = {
+ ...(hasOwnProp(Configuration.getConfigurationData(), 'workerProcess') && {
+ processType: Configuration.getConfigurationData()?.workerProcess,
+ }),
+ ...(hasOwnProp(Configuration.getConfigurationData(), 'workerStartDelay') && {
+ startDelay: Configuration.getConfigurationData()?.workerStartDelay,
+ }),
+ ...(hasOwnProp(Configuration.getConfigurationData(), 'chargingStationsPerWorker') && {
+ elementsPerWorker: Configuration.getConfigurationData()?.chargingStationsPerWorker,
+ }),
+ ...(hasOwnProp(Configuration.getConfigurationData(), 'elementStartDelay') && {
+ elementStartDelay: Configuration.getConfigurationData()?.elementStartDelay,
+ }),
+ ...(hasOwnProp(Configuration.getConfigurationData(), 'workerPoolMinSize') && {
+ poolMinSize: Configuration.getConfigurationData()?.workerPoolMinSize,
+ }),
+ ...(hasOwnProp(Configuration.getConfigurationData(), 'workerPoolMaxSize') && {
+ poolMaxSize: Configuration.getConfigurationData()?.workerPoolMaxSize,
+ }),
+ };
+ Configuration.warnDeprecatedConfigurationKey(
+ 'poolStrategy',
+ ConfigurationSection.worker,
+ 'Not publicly exposed to end users',
+ );
+ const workerConfiguration: WorkerConfiguration = {
+ ...defaultWorkerConfiguration,
+ ...deprecatedWorkerConfiguration,
+ ...(hasOwnProp(Configuration.getConfigurationData(), ConfigurationSection.worker) &&
+ Configuration.getConfigurationData()?.worker),
+ };
+ if (!Object.values(WorkerProcessType).includes(workerConfiguration.processType!)) {
+ throw new SyntaxError(
+ `Invalid worker process type '${workerConfiguration.processType}' defined in configuration`,
+ );
+ }
+ return workerConfiguration;