UNPKG

env-sentinel

Version:

Zero-dependency tool that auto-validates .env files against schema.env, with optional fallback and secure warnings.

36 lines (35 loc) 1.25 kB
import { log } from './log.js'; import { getValidator, parseRuleString } from './validation/index.js'; export function validateEnv(env, schema) { let isValid = true; for (const key in schema) { const rawRule = schema[key]; const rules = parseRuleString(rawRule); const value = env[key]; const ruleNames = rules.map((r) => r.name); const isRequired = ruleNames.includes('required'); if (!isRequired && value === undefined) continue; if (isRequired && (value === undefined || value === '')) { log.error(`Missing required variable: ${key}`); isValid = false; continue; } for (const rule of rules) { if (['required', 'optional', 'string'].includes(rule.name)) { continue; } const validator = getValidator(rule.name); if (!validator) { log.warn(`Unknown rule '${rule.name}' for ${key}`); continue; } const result = validator(key, value, rule.args); if (result !== true) { log.error(result); isValid = false; } } } return isValid; }