// env.mjs — Zod-validated environment variables
// Crashes at startup if required vars are missing — no silent undefined
import { z } from 'zod';

const serverSchema = z.object({
  API_URL: z.string().url('API_URL must be a valid URL'),
  NODE_ENV: z.enum(['development', 'test', 'production']).default('development'),
});

const clientSchema = z.object({
  NEXT_PUBLIC_APP_URL: z.string().url().optional(),
});

// Validate server-side env (only available on server)
const serverEnv = serverSchema.safeParse(process.env);
if (!serverEnv.success) {
  console.error('❌ Invalid server environment variables:');
  console.error(serverEnv.error.flatten().fieldErrors);
  throw new Error('Invalid environment variables');
}

// Validate client-side env
const clientEnv = clientSchema.safeParse({
  NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
});
if (!clientEnv.success) {
  console.error('❌ Invalid client environment variables:');
  console.error(clientEnv.error.flatten().fieldErrors);
  throw new Error('Invalid client environment variables');
}

export const env = { ...serverEnv.data, ...clientEnv.data };
