import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; export const env = createEnv({ server: { TMDB_API_KEY: z.string().min(1, "TMDB_API_KEY is required"), SUPABASE_INTERNAL_URL: z.string().url("SUPABASE_INTERNAL_URL must be a valid URL"), SUPABASE_SERVICE_ROLE_KEY: z.string().min(1, "SUPABASE_SERVICE_ROLE_KEY is required"), MASTER_ADMIN_USERNAME: z.string().min(1, "MASTER_ADMIN_USERNAME is required"), MASTER_ADMIN_TOTP_SECRET: z.string().min(1, "MASTER_ADMIN_TOTP_SECRET is required"), IRON_SESSION_SECRET: z.string().min(32, "IRON_SESSION_SECRET must be at least 32 characters"), }, client: { NEXT_PUBLIC_SUPABASE_URL: z.string().url("NEXT_PUBLIC_SUPABASE_URL must be a valid URL"), NEXT_PUBLIC_SUPABASE_ANON_KEY: z.string().min(1, "NEXT_PUBLIC_SUPABASE_ANON_KEY is required"), NEXT_PUBLIC_SENTRY_DSN: z.string().optional(), }, runtimeEnv: { TMDB_API_KEY: process.env.TMDB_API_KEY, SUPABASE_INTERNAL_URL: process.env.SUPABASE_INTERNAL_URL, SUPABASE_SERVICE_ROLE_KEY: process.env.SUPABASE_SERVICE_ROLE_KEY, MASTER_ADMIN_USERNAME: process.env.MASTER_ADMIN_USERNAME, MASTER_ADMIN_TOTP_SECRET: process.env.MASTER_ADMIN_TOTP_SECRET, IRON_SESSION_SECRET: process.env.IRON_SESSION_SECRET, NEXT_PUBLIC_SUPABASE_URL: process.env.NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY, NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN, }, skipValidation: !!process.env.SKIP_ENV_VALIDATION, });