UNPKG

i-do-config

Version:

Provide app configuration as key-value pairs from multiple providers. Inspired by ASP.net Core

62 lines 2.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Configuration { constructor(configValueProviders = []) { this.configValueProviders = configValueProviders; } //#region Public methods /** * Get a section from configured value providers. Later providers overwrite * values with the same key. * * @param key The key for wich to get the section */ getSection(key) { let section = {}; for (const provider of this.configValueProviders) { // Merge provider section with existing values section = Object.assign({}, section, provider.getSection(key)); } return section; } /** * Get a value from configuration * * @param key The key for which to get value * @param defaultValue A default value that will be returned when no provider yields a result * @param preferredProvider Optional. When specified return a value only from this provider * @return The configuration value for key */ getValue(key, defaultValue, preferredProvider) { let value = defaultValue; for (const provider of this.configValueProviders) { const providerValue = provider.getValue(key); if (provider.name === preferredProvider) { value = providerValue; break; } if (providerValue != null) { value = providerValue; } } return value; } getValueAsString(key, defaultValue, preferredProvider) { return `${this.getValue(key, defaultValue, preferredProvider)}`; } getValueAsNumber(key, defaultValue, preferredProvider) { return parseInt(`${this.getValue(key, defaultValue, preferredProvider)}`, 10); } getValueAsBoolean(key, defaultValue, preferredProvider) { const val = this.getValue(key, defaultValue, preferredProvider); if (val === undefined) { return; } if (`${val}` === "false" || this.getValueAsNumber(key) === 0) { return false; } return !!val; } } exports.Configuration = Configuration; //# sourceMappingURL=configuration.js.map