Repository URL to install this package:
|
Version:
1.1.21 ▾
|
/**
* @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