import { z } from "zod";

/**
 * Variables d'environnement exposées au client (préfixées VITE_).
 * Validées au boot pour planter tôt si une variable manque.
 */
const envSchema = z.object({
  VITE_API_URL: z.string().url(),
  VITE_PUBLIC_LANDING_URL: z.string().url(),
  VITE_USE_MOCKS: z
    .enum(["true", "false"])
    .default("false")
    .transform((v) => v === "true"),
  // Sentry — optionnel en dev local, recommandé en prod (cf. lib/sentry.ts)
  VITE_SENTRY_DSN_WEB: z.string().url().optional(),
  VITE_APP_VERSION: z.string().optional(),
});

const parsed = envSchema.safeParse(import.meta.env);

if (!parsed.success) {
  // eslint-disable-next-line no-console
  console.error("Variables d'environnement invalides :", parsed.error.flatten().fieldErrors);
  throw new Error("Configuration invalide. Voir .env.example");
}

export const env = parsed.data;
