UNPKG

@kitmi/jacaranda

Version:

JavaScript application framework

117 lines (116 loc) 3.98 kB
/** * Enable app customized env variables * @module Feature_Env */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _Feature = /*#__PURE__*/ _interop_require_default(require("../Feature")); const _runtime = /*#__PURE__*/ _interop_require_wildcard(require("../runtime")); const _utils = require("@kitmi/utils"); const _types = require("@kitmi/types"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const _default = { /** * This feature is loaded at init stage * @member {string} */ stage: _Feature.default.CONF, /** * Load the feature * @param {App} app - The cli app module object * @param {object} envSettings - Customized env settings * @property {array} [envSettings.expose] - Expose env variables from process.env into runtime * @property {object} [envSettings.add] - Add env variables * @returns {void} */ load_: function(app, envSettings, name) { let { expose, add, debug } = app.featureConfig(envSettings, { schema: { expose: { type: 'array', optional: true }, add: { type: 'object', optional: true }, debug: { type: 'boolean', optional: true } } }, name); //todo: encrypt sensitive env variables expose = new Set(expose || []); expose.add('NODE_ENV'); expose.add('STAGE_ENV'); if (add?.NODE_ENV) { throw new _types.InvalidConfiguration('NODE_ENV cannot be added', app, `${name}.add.NODE_ENV`); } const asDefaultOnly = true; // for running worker app within a server, usually test only const exposed = _utils._.pick(process.env, Array.from(expose)); _runtime.default.register(_runtime.K_ENV, { ...add, ...exposed }, asDefaultOnly); if (debug) { app.log('info', 'Environment variables', _runtime.default.get(_runtime.K_ENV)); } app.once('stopped', ()=>{ _runtime.default.deregister(_runtime.K_ENV); }); app.log('info', 'Environment variables are refreshed and configuration will be reloaded.'); return app.loadConfig_(); } }; //# sourceMappingURL=env.js.map