zents
Version:
ZenTS is a Node.js & TypeScript MVC-Framework for building rich web applications, released as free and open-source software under the MIT License. It is designed for building web applications with modern tools and design patterns.
65 lines • 2.49 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadConfig = exports.isConfigLoaded = exports.config = void 0;
const cosmiconfig_1 = require("cosmiconfig");
const default_1 = require("./default");
const logger_1 = require("../log/logger");
const lodash_merge_1 = __importDefault(require("lodash.merge"));
const validateConfig_1 = require("./validateConfig");
const moduleName = 'zen';
async function loadDefaultFile(searchFrom) {
const explorer = cosmiconfig_1.cosmiconfig(moduleName, {
searchPlaces: [
'package.json',
'.zenrc',
'.zenrc.js',
'zen.json',
'zen.yaml',
'zen.yml',
'zen.config.json',
'zen.config.js',
'zen.config.yaml',
'zen.config.yml',
],
});
return await explorer.search(searchFrom);
}
async function loadEnviormentFile(searchFrom) {
var _a;
const env = (_a = process.env.NODE_ENV) !== null && _a !== void 0 ? _a : 'development';
const explorer = cosmiconfig_1.cosmiconfig(moduleName, {
searchPlaces: [
`zen.${env}.json`,
`zen.${env}.yaml`,
`zen.${env}.yml`,
`zen.${env}.config.json`,
`zen.${env}.config.js`,
`zen.${env}.config.yaml`,
`zen.${env}.config.yml`,
],
});
return await explorer.search(searchFrom);
}
exports.config = default_1.defaultConfig;
exports.isConfigLoaded = false;
async function loadConfig(manualConfig, searchFrom, forceLoading = false) {
if (exports.isConfigLoaded && !forceLoading) {
return;
}
exports.isConfigLoaded = true;
const defaultFileConfig = await loadDefaultFile(searchFrom);
const envFileConfig = await loadEnviormentFile(searchFrom);
exports.config = lodash_merge_1.default({}, default_1.defaultConfig, defaultFileConfig ? defaultFileConfig.config : {}, envFileConfig ? envFileConfig.config : {}, manualConfig ? manualConfig : {});
const { isValid, errors } = validateConfig_1.validateConfig(exports.config);
if (!isValid) {
for (const error of errors) {
logger_1.log.error(error);
throw new Error('Failed to boot! Config is invalid.');
}
}
}
exports.loadConfig = loadConfig;
//# sourceMappingURL=config.js.map