env-dyn-config
Version:
Dynamic config files depending on env
39 lines • 1.53 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
exports.__esModule = true;
var merge = require("deepmerge");
require("dotenv/config");
var env_names_type_1 = require("./env-names.type");
if (!Object.keys(env_names_type_1["default"]).length) {
throw Error('env-names.type.ts should export an enum of names (see original file)');
}
var DEFAULT = {
environments: __spreadArray([], Object.keys(env_names_type_1["default"]), true)
};
var functionGenerator = function (keys) {
return keys.reduce(function (p, c) {
var _a;
return Object.assign(p, (_a = {}, _a[c] = c.toUpperCase(), _a));
}, {});
};
function init(options) {
if (options === void 0) { options = DEFAULT; }
var environments = functionGenerator(options.environments);
var ENV = Object.keys(environments).find(function (k) { return k === process.env.NODE_ENV; }) ||
Object.keys(env_names_type_1["default"])[0];
function combine(base, specific) {
var config = specific[environments[ENV]] || {};
return merge(base, config);
}
return { environments: environments, ENV: ENV, combine: combine };
}
exports["default"] = init;
//# sourceMappingURL=index.js.map