export function envBool(name: string, defaultValue: boolean): boolean {
const raw = process.env[name];
if (raw === undefined) return defaultValue;
const normalized = raw.trim().toLowerCase();
if (normalized === '') return defaultValue;
if (normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on') return true;
if (normalized === '0' || normalized === 'false' || normalized === 'no' || normalized === 'off') return false;
return defaultValue;
}
export function envInt(name: string, defaultValue: number, opts?: { min?: number; max?: number }): number {
const raw = process.env[name];
if (raw === undefined) return defaultValue;
const parsed = Number.parseInt(raw, 10);
if (Number.isNaN(parsed)) return defaultValue;
const min = opts?.min;
const max = opts?.max;
if (min !== undefined && parsed < min) return min;
if (max !== undefined && parsed > max) return max;
return parsed;
}
export function envMs(name: string, defaultValue: number, opts?: { min?: number; max?: number }): number {
// Alias for envInt for clarity when the unit is milliseconds.
return envInt(name, defaultValue, opts);
}