@tdio/ui-config
Version:
TDIO application common config wrapper (with ENV inject supports)
98 lines (91 loc) • 2.81 kB
JavaScript
/**
* @tdio/ui-config v2.0.2 - TDIO application common config wrapper (with ENV inject supports)
*
* @author allex
* Released under the MIT license.
*/
;
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;