24 lines
900 B
TypeScript
24 lines
900 B
TypeScript
import { z } from "zod"
|
|
|
|
const envSchema = z.object({
|
|
BETTER_AUTH_SECRET: z.string().min(1, "Missing BETTER_AUTH_SECRET"),
|
|
BETTER_AUTH_URL: z.string().url().optional(),
|
|
NEXT_PUBLIC_CONVEX_URL: z.string().url().optional(),
|
|
DATABASE_URL: z.string().min(1).optional(),
|
|
NEXT_PUBLIC_APP_URL: z.string().url().optional(),
|
|
})
|
|
|
|
const parsed = envSchema.safeParse(process.env)
|
|
|
|
if (!parsed.success) {
|
|
console.error("Failed to parse environment variables", parsed.error.flatten().fieldErrors)
|
|
throw new Error("Invalid environment configuration")
|
|
}
|
|
|
|
export const env = {
|
|
BETTER_AUTH_SECRET: parsed.data.BETTER_AUTH_SECRET,
|
|
BETTER_AUTH_URL: parsed.data.BETTER_AUTH_URL ?? parsed.data.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000",
|
|
NEXT_PUBLIC_CONVEX_URL: parsed.data.NEXT_PUBLIC_CONVEX_URL,
|
|
DATABASE_URL: parsed.data.DATABASE_URL,
|
|
NEXT_PUBLIC_APP_URL: parsed.data.NEXT_PUBLIC_APP_URL,
|
|
}
|