art-config
Version:
A powerful yet simple tool for configuring all your libraries consistently.
5 lines (4 loc) • 2.07 kB
JavaScript
let Caf = require('caffeine-script-runtime');
Caf.defMod(module, () => {return Caf.importInvoke(["isString", "JSON", "isPlainObject", "log", "formattedInspect", "getEnv", "upperCamelCase"], [global, require('art-standard-lib')], (isString, JSON, isPlainObject, log, formattedInspect, getEnv, upperCamelCase) => {let jsonParsableRegexp, externalEnvironmentRegExp, Lib; jsonParsableRegexp = /^(\[.*\]|\{.*\}|\".*\"|((-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|true|false|null))$/; externalEnvironmentRegExp = /^artConfig([\._])(.+)$/; return Lib = Caf.defClass(class Lib extends Object {}, function(Lib, classSuper, instanceSuper) {let smartJsonDecode; this.smartJsonDecode = smartJsonDecode = function(value) {return (isString(value) && jsonParsableRegexp.test(value)) ? JSON.parse(value) : value != null ? value : null;}; this.getExternalEnvironment = function(externalEnvironment = getEnv()) {let artConfig, artConfigName, e; artConfig = externalEnvironment.artConfig; artConfigName = externalEnvironment.artConfigName; artConfig = (() => {switch (false) {case !isPlainObject(artConfig): return artConfig; case !isString(artConfig): return (() => {try {return JSON.parse(artConfig);} catch (error) {e = error; log.error(`\nInvalid 'artConfig' from externalEnvironment. Must be valid JSON.\n\n${Caf.toString(formattedInspect({externalEnvironment}))}\n\nartConfig: ${Caf.toString(formattedInspect(artConfig))}\n\nerror: ${Caf.toString(e)}`); return null;};})(); default: return {};};})(); Caf.each2(externalEnvironment, (v, k) => {let m; m = k.match(externalEnvironmentRegExp); return (m[1] === "_") ? artConfig[m[2].replace(/_/g, ".")] = smartJsonDecode(v) : artConfig[m[2]] = smartJsonDecode(v);}, (v, k) => externalEnvironmentRegExp.test(k)); return {artConfig, artConfigName};}; this.normalizeArtConfigName = function(artConfigName) {return (() => {switch (artConfigName) {case "dev": return "Development"; case "prod": return "Production"; default: return artConfigName && upperCamelCase(artConfigName);};})();};});});});
//# sourceMappingURL=Lib.js.map