'use strict'; class EnvUtil { constructor() { this.envConfig = {}; } isNumeric(value) { return /^-?\d+$/.test(value); } assignValue(key, value) { var arr = key.toLowerCase().split('_'); var i = 0; var curobj = this.envConfig; while (i < (arr.length - 1)) { if (curobj[arr[i]] === undefined) { curobj[arr[i]] = {}; } curobj = curobj[arr[i++]]; } if (this.isNumeric(value)) { curobj[arr[i]] = +value; } else { curobj[arr[i]] = value; } } parse(configJson, parent = '') { Object.keys(configJson).forEach(key => { let newParent = ''; if (parent != '') { newParent = parent + '_' + key.toUpperCase(); } else { newParent = key.toUpperCase(); } if (typeof configJson[key] === 'object') { this.parse(configJson[key], newParent); } else { this.assignValue(newParent, process.env[newParent]); } }); return this.envConfig; } } module.exports = EnvUtil;