UNPKG

node-yaml-config

Version:

Write your configuration files for node.js in yaml

72 lines 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_CONFIG_LOADER = exports.ConfigLoader = void 0; const fs_1 = require("fs"); const js_yaml_1 = require("js-yaml"); const extend = require("node.extend"); const path_1 = require("path"); const util_1 = require("util"); const readFile = (0, util_1.promisify)(fs_1.readFile); class ConfigLoader { constructor(options) { this.options = options; this.loadedFiles = {}; } read(filename) { const path = this.getPath(filename); const data = (0, js_yaml_1.load)((0, fs_1.readFileSync)(path, { encoding: 'utf-8' })); this.loadedFiles[path] = data; return data; } load(filename, env) { const path = this.getPath(filename); let data; if (this.loadedFiles.hasOwnProperty(path)) { data = this.loadedFiles[path]; } else { data = this.read(filename); } const _env = env || process.env.NODE_ENV || 'development'; const defaultConfig = data.default || {}; const extensionConfig = data[_env] || {}; return extend(true, extend(true, {}, defaultConfig), extensionConfig); } reload(filename, env) { this.read(filename); return this.load(filename, env); } async readAsync(filename) { const path = this.getPath(filename); const data = (0, js_yaml_1.load)(await readFile(path, { encoding: 'utf-8' })); this.loadedFiles[path] = data; return data; } async loadAsync(filename, env) { const path = this.getPath(filename); let data; if (this.loadedFiles.hasOwnProperty(path)) { data = this.loadedFiles[path]; } else { data = await this.readAsync(filename); } const _env = env || process.env.NODE_ENV || 'development'; const defaultConfig = data.default || {}; const extensionConfig = data[_env] || {}; return extend(true, extend(true, {}, defaultConfig), extensionConfig); } async reloadAsync(filename, env) { await this.readAsync(filename); return this.loadAsync(filename, env); } getPath(filename) { if (this.options == undefined || this.options.basePath == undefined) { return (0, path_1.resolve)(filename); } return (0, path_1.resolve)(this.options.basePath, filename); } } exports.ConfigLoader = ConfigLoader; exports.DEFAULT_CONFIG_LOADER = new ConfigLoader(); //# sourceMappingURL=config-loader.js.map