import { z } from 'zod'; const ConfigSchema = z.object({ NODE_ENV: z.enum(['development', 'production', 'test']).default('development'), PORT: z.coerce.number().int().positive().default(3000), HOST: z.string().default('0.0.0.0'), DATABASE_URL: z.string().url(), LOG_LEVEL: z.string().default('info'), TMUX_CONF_PATH: z.string().default('/etc/booterm/tmux.conf'), }); export type Config = z.infer; let cached: Config | null = null; export function loadConfig(): Config { if (cached) return cached; const parsed = ConfigSchema.safeParse(process.env); if (!parsed.success) { console.error('Invalid environment configuration:'); console.error(parsed.error.flatten().fieldErrors); process.exit(1); } cached = parsed.data; return cached; }