UNPKG

@travetto/config

Version:

Configuration support

29 lines (26 loc) 993 B
import { SchemaRegistry } from '@travetto/schema'; import { ConfigOverrides, CONFIG_OVERRIDES } from '../internal/types'; import { ConfigData } from '../parser/types'; import { ConfigSource, ConfigSpec } from './types'; /** * Overridable config source, provides ability to override field level values, currently used by * - @EnvVar as a means to allow environment specific overrides */ export class OverrideConfigSource implements ConfigSource { #build(): ConfigData { const out: ConfigData = {}; for (const cls of SchemaRegistry.getClasses()) { const { ns, fields = {} } = SchemaRegistry.getMetadata<ConfigOverrides>(cls, CONFIG_OVERRIDES) ?? {}; for (const [key, value] of Object.entries(fields)) { const val = value(); if (val !== undefined && val !== '') { out[`${ns}.${key}`] = val; } } } return out; } get(): ConfigSpec { return { data: this.#build(), priority: 999, source: 'memory://override' }; } }