import { ObjectUtil } from '../utils'; import type { Config } from './Config'; /** * An interface model for Parameter Config */ export interface ParameterConfig extends Config {} export class EmptyParameterConfiguration implements ParameterConfig { getSync( _key: string, defaultValue: string | number | boolean ): string | number | boolean { return defaultValue; } } export class ParameterConfiguration implements ParameterConfig { parameters: { [key: string]: string | number | boolean }; constructor(parameters: { [key: string]: string | number | boolean }) { this.parameters = parameters; } getSync( key: string, defaultValue: string | number | boolean ): string | number | boolean { if (ObjectUtil.isNullOrUndefined(this.parameters)) { return defaultValue; } const parameterValue = this.parameters[key]; if (ObjectUtil.isNullOrUndefined(parameterValue)) { return defaultValue; } if (ObjectUtil.isNullOrUndefined(defaultValue)) { return parameterValue; } if (typeof parameterValue === typeof defaultValue) { return parameterValue; } return defaultValue; } }