UNPKG

@creditkarma/dynamic-config

Version:

Dynamic Config for Node.js backed by Consul and Vault

124 lines 3.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createConfigObject = exports.buildBaseConfigValue = exports.nullValueForPlaceholder = exports.invalidValueForPlaceholder = void 0; const basic_1 = require("./basic"); const ConfigUtils = require("./config"); function invalidValueForPlaceholder(placeholder) { return { source: { type: placeholder.resolver.type, name: placeholder.resolver.name, key: placeholder.key, }, type: 'invalid', value: null, watcher: null, nullable: placeholder.nullable || false, }; } exports.invalidValueForPlaceholder = invalidValueForPlaceholder; function nullValueForPlaceholder(placeholder) { return { source: { type: placeholder.resolver.type, name: placeholder.resolver.name, key: placeholder.key, }, type: 'null', value: null, watcher: null, nullable: placeholder.nullable || false, }; } exports.nullValueForPlaceholder = nullValueForPlaceholder; function buildBaseConfigValue(source, obj, nullable = false) { const objType = typeof obj; if (obj instanceof Promise) { return { source, type: 'promise', value: obj, watcher: null, nullable, }; } else if (ConfigUtils.isConfigPlaceholder(obj)) { return { source, type: 'placeholder', value: obj, watcher: null, nullable, }; } else if (Array.isArray(obj)) { return { source, type: 'array', items: obj.reduce((acc, next) => { acc.push(buildBaseConfigValue({ type: source.type, name: source.name, }, next)); return acc; }, []), watcher: null, nullable, }; } else if ((0, basic_1.isObject)(obj)) { return { source, type: 'object', properties: Object.keys(obj).reduce((acc, next) => { acc[next] = buildBaseConfigValue({ type: source.type, name: source.name, }, obj[next]); return acc; }, {}), watcher: null, nullable, }; } else if ((0, basic_1.isPrimitiveType)(objType)) { return { source, type: objType, value: obj, watcher: null, nullable, }; } else if (obj === null || obj === undefined) { return { source, type: 'null', value: null, watcher: null, nullable, }; } else { throw new TypeError(`Cannot build config from object of type[${objType}]`); } } exports.buildBaseConfigValue = buildBaseConfigValue; function createConfigObject(source, obj) { if ((0, basic_1.isObject)(obj)) { const configObj = { type: 'root', properties: {}, watcher: null, }; for (const key of Object.keys(obj)) { configObj.properties[key] = buildBaseConfigValue(source, obj[key]); } return configObj; } else { throw new TypeError(`Config value must be an object, instead found type[${typeof obj}]`); } } exports.createConfigObject = createConfigObject; //# sourceMappingURL=config-builder.js.map