code: function resolveValue (value) {
      if (typeof value !== 'string') {
        return value;
      }
  
      // "${env.MY_ENVIRONMENT_VARIABLE:http://localhost:8080}".replace(/\$\{env\.([^:]*):?(.*)?\}/,"$1--split--$2").split("--split--")
      let regex = /\$\{env\.([^:]*):?(.*)?\}/;
  
      // is this an environment variable reference with potential fallback?
      if (!regex.test(value)) {
        return value;
      }
  
      let tokens = value.replace(regex, '$1--split--$2').split('--split--');
      let envVar = tokens[0];
      let envVal = process.env[envVar];
      let fallbackVal = tokens[1];
  
      return envVal || fallbackVal;
    }
docs: Tries to resolve environment variables in the given value in case it is of type "string", else the given value is returned.
  Environment variable references look like: '${env.MY_ENVIRONMENT_VARIABLE}', optionally one can configure a fallback
  if the referenced env variable is not present. E.g. '${env.NOT_SET:http://localhost:8080}' yields 'http://localhost:8080'.
  
  @param value
  @returns {*}