UNPKG

@tdio/ui-config

Version:

TDIO application common config wrapper (with ENV inject supports)

98 lines (91 loc) 2.81 kB
/** * @tdio/ui-config v2.0.2 - TDIO application common config wrapper (with ENV inject supports) * * @author allex * Released under the MIT license. */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var global = require('@allex/global'); var utils = require('@tdio/utils'); var indexedConfig = require('indexed-config'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var global__default = /*#__PURE__*/_interopDefaultLegacy(global); var ENV_PREFIX = 'APP_'; var defaultPredicator = function (v) { return v != null; }; var stringPredicator = function (v) { return typeof v === 'string' && !!v; }; var createConfigWorker = function (options) { var cfg; var env = options.env, initial = options.initial, spec = options.spec; var getEnv = function () { if (getEnv.cache) { return getEnv.cache; } var rtEnvs = {}; var fn = utils.get(global__default["default"], '$getEnv'); if (utils.isFunction(fn)) { rtEnvs = fn() || {}; } var map = Object.assign(env != null ? env : {}, rtEnvs); return getEnv.cache = new Map(Object.keys(map).reduce(function (arr, k) { return arr.push([k, map[k]]), arr; }, [])); }; var getCEngine = function () { if (cfg) { return cfg; } cfg = new indexedConfig.IndexedConfig(initial, spec); cfg.apply(Object.fromEntries(getEnv()), function (paths) { if (paths[0] === 'sys') { paths = paths.slice(1); } var envName = paths.map(function (k) { return k.replace(/\B([A-Z]+)/g, '_$1').toUpperCase(); }).join('_'); if (envName && !envName.startsWith(ENV_PREFIX)) { envName = "" + ENV_PREFIX + envName; } return envName ? [envName] : []; }); var getUIConfig = utils.get(global__default["default"], 'getUIConfig'); if (!utils.isFunction(getUIConfig)) { if (getEnv().get('development') === 'production') { console.warn('Embedded config not available'); } } else { cfg.apply(getUIConfig()); } return cfg; }; function getConfig(ns, defval) { var cfg = getCEngine(); var predicateFn = typeof defval === 'string' ? stringPredicator : defaultPredicator; return ns ? defval != null ? utils.defaultTo(cfg.get(ns), defval, predicateFn) : cfg.get(ns) : cfg.entries(); } var apply = function (values) { return getCEngine().apply(values); }; var setConfig = function (ns, value) { var w = getCEngine(); try { w.set(ns, value); } catch (e) { return false; } return true; }; return { apply: apply, getConfig: getConfig, setConfig: setConfig, getEnv: getEnv }; }; exports.createConfigWorker = createConfigWorker;