import { z } from "zod"; const envSchema = z.object({ DATABASE_URL: z.string().min(1), NEXTAUTH_SECRET: z.string().min(16), NEXTAUTH_URL: z.string().url().default("http://localhost:3000"), }); export type Env = z.infer; let cached: Env | undefined; export function getEnv(): Env { if (cached) return cached; const parsed = envSchema.safeParse(process.env); if (!parsed.success) { throw new Error( `invalid environment: ${JSON.stringify(parsed.error.flatten())}`, ); } cached = parsed.data; return cached; }