@thoshpathi/utils-core
Version:
A collection of core utility functions for data processing
65 lines (63 loc) • 1.69 kB
JavaScript
// 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
};