UNPKG

@lskjs/config

Version:
93 lines (73 loc) 2.95 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = mergeEnvs; var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray")); var _tryJSONparse = _interopRequireDefault(require("@lskjs/utils/tryJSONparse")); var _fs = _interopRequireDefault(require("fs")); var _isFunction = _interopRequireDefault(require("lodash/isFunction")); var _merge = _interopRequireDefault(require("lodash/merge")); var _set = _interopRequireDefault(require("lodash/set")); var _getEnvPaths = _interopRequireDefault(require("./getEnvPaths")); /* eslint-disable no-console */ function mergeEnvs() { // const init = () => var config = {}; for (var _len = arguments.length, configs = new Array(_len), _key = 0; _key < _len; _key++) { configs[_key] = arguments[_key]; } configs.forEach(function (conf) { (0, _merge["default"])(config, conf); }); var configPaths = (0, _getEnvPaths["default"])(); configPaths.forEach(function (configPath) { var type = configPath.split('.').reverse()[0]; try { if (type === 'js') { var fnOrJson = require(configPath); // eslint-disable-line import/no-dynamic-require if ((0, _isFunction["default"])(fnOrJson)) { config = fnOrJson(config); } else { config = (0, _merge["default"])(config, fnOrJson); } } else if (type === 'json') { var json = JSON.parse(_fs["default"].readFileSync(configPath).toString()); config = (0, _merge["default"])(config, json); } else { return; } } catch (err) { console.error('[ERROR] [ERROR] [ERROR] [ERROR] [ERROR] [ERROR] [ERROR] [ERROR]'); console.error(""); console.error("cannot load config: ".concat(configPath)); console.error(""); console.error(err); console.error(""); console.error('[ERROR] [ERROR] [ERROR] [ERROR] [ERROR] [ERROR] [ERROR] [ERROR]'); } // fs.watchFile('message.text', (curr, prev) => { // console.log(`the current mtime is: ${curr.mtime}`); // console.log(`the previous mtime was: ${prev.mtime}`); // }); }); var getConfigKey = function getConfigKey(key) { return ['.', '__'].map(function (delemiter) { var _key$split = key.split(delemiter), _key$split2 = (0, _toArray2["default"])(_key$split), mainKey = _key$split2[0], otherKeys = _key$split2.slice(1); if (mainKey === 'config' && otherKeys.length) { return otherKeys.join('.'); } return null; }).filter(Boolean)[0]; }; Object.keys(process.env).forEach(function (key) { var configKey = getConfigKey(key); if (!configKey) return; (0, _set["default"])(config, configKey, (0, _tryJSONparse["default"])(process.env[key])); }); return config; } //# sourceMappingURL=index.js.map