UNPKG

configuru

Version:

Manage the configuration of your Nodejs application with multiple environments and custom preferences, utilizing Configuru in CI and development as well!

73 lines 2.71 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLoader = exports.createAtomLoaderFactory = void 0; var helpers_1 = require("./helpers"); var storage_1 = require("./storage"); var defaultOpts = { defaultConfigPath: '.env', userConfigPath: process.env.CFG_JSON_PATH, envMode: 'default', }; var createAtomLoaderFactory = function (storage) { var load = function (transform, hidden, nullable) { return function (key) { var value = storage[key]; var safeTransform = function (x) { try { return transform(x); } catch (_error) { throw new Error("Failed to transform value >".concat(String(value), "< from key >").concat(key, "<")); } }; var missing = value === undefined || value === null; if (!nullable && missing) { throw new Error("Missing required value ".concat(key)); } return { hidden: hidden, nullable: nullable, rawValue: value, value: missing ? null : safeTransform(value), __CONFIGURU_LEAF: true, }; }; }; return function (transform) { return Object.assign(load(transform, false, false), { hidden: Object.assign(load(transform, true, false), { nullable: load(transform, true, true), }), nullable: Object.assign(load(transform, false, true), { hidden: load(transform, true, true), }), }); }; }; exports.createAtomLoaderFactory = createAtomLoaderFactory; var createLoader = function (opts) { if (opts === void 0) { opts = defaultOpts; } opts = __assign(__assign({}, defaultOpts), opts); var configStorage = (0, storage_1.createConfigStorage)(opts); var atomLoader = (0, exports.createAtomLoaderFactory)(configStorage); return { number: atomLoader(Number), string: atomLoader(String), bool: atomLoader(helpers_1.parseBool), json: atomLoader(JSON.parse), custom: function (fn) { return atomLoader(fn); }, }; }; exports.createLoader = createLoader; //# sourceMappingURL=loader.js.map