UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

43 lines (42 loc) 1.76 kB
import { RequiredError } from "../error/RequiredError.js"; /** * Get a `process.env` variable safely in all environments, or `undefined` if it doesn't exist or this environment does not support `process.env` (i.e. web environments). */ export function getEnv(name) { if (typeof process === "object" && typeof process.env === "object") return process.env[name]; } /** * Get a `process.env` variable safely in all environments, or throw `RequiredError` if it doesn't exist or this environment does not support `process.env` (i.e. web environments). */ export function requireEnv(name, caller = requireEnv) { const env = getEnv(name); if (typeof env !== "string") throw new RequiredError(`Environment variable "${name}" is required`, { caller }); return env; } /** * Get a `process.env` variable and resolve it to to `true` or `false`, or `undefined` if it isn't a true/false value. */ export function getEnvBoolean(name) { const env = getEnv(name)?.toLowerCase(); if (env && _TRUES.includes(env)) return true; if (env && _FALSES.includes(env)) return false; } const _TRUES = [`1`, `on`, `yes`, `true`]; const _FALSES = [`0`, `off`, `no`, `false`]; /** * Get a `process.env` variable and resolve it to to `true` or `false` * * @returns `false` if the environment variable is `0`, `off`, `no`, `false` * @returns `true` if the environment variable is `1`, `on`, `yes`, `true` * @throws `RequiredError` if the env variable is any other value. */ export function requireEnvBoolean(name, caller = requireEnvBoolean) { const env = getEnv(name); if (typeof env !== "boolean") throw new RequiredError(`Environment variable "${name}" must be boolean`, { caller }); return env; }