Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / dotenv / getEnvVariable.js
Size: Mime:
/**
 * @file
 */
const { toNumber, isNumber, isString, isBoolean, hasOwnProp } = require('../exotic')

function isDotEnvTrueBoolean(value) {
  return value === 'true' || value === '1' || value === true
}

/**
 * Gets a string environment variable by the given name.
 *
 * @param  {String} name - The name of the environment variable.
 * @param  {String} defaultVal - The default value to use.
 *
 * @return {String} String(process.env[name])
 */
function string(name, defaultVal) {
  return String(process.env[name] || defaultVal)
}

/**
 * Gets a number environment variable by the given name.
 *
 * @param  {String} name - The name of the environment variable.
 * @param  {number} defaultVal - The default value to use.
 *
 * @return {number} +process.env[name]
 */
function number(name, defaultVal) {
  return toNumber(process.env[name] ? process.env[name] : defaultVal)
}

/**
 * @param  {String} name - The name of the environment variable.
 * @param  {boolean} defaultVal - The default value to use.
 * @return {boolean} !!process.env[name]
 */
function bool(name, defaultVal) {
  return process.env[name]
    ? isDotEnvTrueBoolean(process.env[name]) || Boolean(process.env[name])
    : defaultVal
}

/**
 * @param  {String} name - process.env[name] || process.env[NAME]
 * @param  {Primitive} [defaultVal=undefined] fallback
 * @return {Primitive}
 */
function env(name, defaultVal) {
  if (defaultVal !== undefined) {
    if (isBoolean(defaultVal)) {
      return bool(name, defaultVal)
    } else if (isString(defaultVal)) {
      return string(name, defaultVal)
    } else if (isNumber(defaultVal)) {
      return number(name, defaultVal)
    }
  }

  const value = hasOwnProp(process.env, name)
    ? process.env[name]
    : process.env[name.toUpperCase()]

  return isDotEnvTrueBoolean(value)
    ? true
    : isNumber(value)
      ? toNumber(value)
      : isString(value)
        ? String(value)
        : defaultVal
}

env.boolean = bool
env.bool = bool
env.string = string
env.number = number
env.get = env
env.getEnvVariable = env

module.exports = env