@lskjs/config
Version:
93 lines (73 loc) • 2.95 kB
JavaScript
;
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