UNPKG

@buka/nestjs-config

Version:
42 lines (41 loc) 1.5 kB
export const CONFIG_KEY_METADATA = Symbol('@buka/nestjs-config:config-key'); export const CONFIG_KEY_PROPERTIES_METADATA = Symbol('@buka/nestjs-config:config-key:properties'); export class ConfigurationRegistry { static registry = []; static registerProvider(provider) { this.registry.push(provider); } static registerProperty(target, ck) { if (typeof target !== 'object' || target === null) return; if (!Array.isArray(target[CONFIG_KEY_PROPERTIES_METADATA])) { target[CONFIG_KEY_PROPERTIES_METADATA] = []; } target[CONFIG_KEY_PROPERTIES_METADATA].push(ck.propertyKey); Reflect.defineMetadata(CONFIG_KEY_METADATA, ck, target, ck.propertyKey); } static getProviders() { return [...this.registry]; } static getProperties(target) { if (typeof target !== 'object' || target === null) return []; return target[CONFIG_KEY_PROPERTIES_METADATA] || []; } static getConfigKey(target, propertyKey) { const metadata = Reflect.getMetadata(CONFIG_KEY_METADATA, target, propertyKey); if (metadata) return metadata; if (typeof propertyKey === 'symbol') { return { ignore: true, propertyKey: propertyKey.toString(), }; } return { ignore: false, propertyKey: propertyKey.toString(), configKey: undefined, }; } }