UNPKG

@thoshpathi/utils-core

Version:

A collection of core utility functions for data processing

65 lines (63 loc) 1.69 kB
// src/env_utils.ts import { env } from "process"; function getEnv(key, parser, dv) { const value = env[key]; if (value !== void 0) return parser(value); if (dv !== void 0) return dv; throw new Error(`Environment variable '${key}' is not defined.`); } function envString(name, dv) { return getEnv(name, (v) => v, dv); } function envBoolean(name, dv) { return getEnv( name, (value) => { if (value !== "true" && value !== "false") { throw new Error( `Environment variable '${name}' is not a valid boolean. Expected "true" or "false".` ); } return value === "true"; }, dv ); } function envNumber(name, dv) { return getEnv( name, (value) => { const parsed = Number(value); if (isNaN(parsed)) { throw new Error( `Environment variable '${name}' is not a valid number. Could not parse "${value}".` ); } return parsed; }, dv ); } function envTimeString(name, dv) { const timeString = envString(name, dv); const [hours, minutes, seconds = 0] = timeString.split(":").map((s) => { const parsed = +s.trim(); if (isNaN(parsed)) { throw new Error(`Invalid time component: '${s.trim()}'.`); } return parsed; }); if (hours < 0 || hours > 23) throw new Error(`Hours in '${name}' must be between 0 and 23.`); if (minutes < 0 || minutes > 59) throw new Error(`Minutes in '${name}' must be between 0 and 59.`); if (seconds < 0 || seconds > 59) throw new Error(`Seconds in '${name}' must be between 0 and 59.`); return { hours, minutes, seconds }; } export { envString, envBoolean, envNumber, envTimeString };