UNPKG

@nitra/check-env

Version:

Check that the critical environment variables are set

75 lines (62 loc) 1.67 kB
import process from 'node:process' const testEnv = name => !process.env[name] const displayMissing = name => { console.error(`❌ Missing required environment variable ${name}`) } /** * MissingEnvironmentVariableError * * @class * @extends Error */ export class MissingEnvironmentVariableError extends Error { constructor(envs) { const joined = envs.join(', ') super(`Some required environment variables are missing: ${joined}`) } } const checked = new Set() /** * Перевірка наявності змінних середовища * * @function * @param {Array.<String>} required */ export const checkEnv = required => { const missingReq = [] required.forEach(name => { // додаємо в список перевірених checked.add(name) if (testEnv(name)) { displayMissing(name) missingReq.push(name) } }) if (missingReq.length > 0) { throw new MissingEnvironmentVariableError(missingReq) } } /** * Для сумісності з попередніми версіями * * @param {Array.<String>} required to capture */ export default checkEnv const envProxyHandler = { /** * Set colour of object * @returns {String} */ get(target, prop, _) { // Якщо зі списку перевірених то повертаємо значення // інакше аварійно завершуємо програму if (!checked.has(prop)) { throw new Error(`❌ Environment variable ${prop} is not checked`) } return target[prop] } } /** * @type {Object.<string, string>} */ export const env = new Proxy(process.env, envProxyHandler)