import { createEnv } from '@t3-oss/env-nextjs'; import { z } from 'zod'; const server: Parameters[0]['server'] = { BETTER_AUTH_SECRET: z.string().min(1), DATABASE_URL: z.string().min(1).url(), BETTERSTACK_API_KEY: z.string().min(1).optional(), BETTERSTACK_URL: z.string().min(1).url().optional(), ARCJET_KEY: z.string().min(1).startsWith('ajkey_').optional(), ANALYZE: z.string().optional(), SVIX_TOKEN: z .union([ z.string().min(1).startsWith('sk_'), z.string().min(1).startsWith('testsk_'), ]) .optional(), LIVEBLOCKS_SECRET: z.string().min(1).startsWith('sk_').optional(), OPENAI_API_KEY: z.string().min(1).startsWith('sk-').optional(), UPSTASH_REDIS_REST_URL: z.string().min(1).url().optional(), UPSTASH_REDIS_REST_TOKEN: z.string().min(1).optional(), // Added by Sentry Integration, Vercel Marketplace SENTRY_ORG: z.string().min(1).optional(), SENTRY_PROJECT: z.string().min(1).optional(), // Added by Vercel VERCEL: z.string().optional(), NEXT_RUNTIME: z.enum(['nodejs', 'edge']).optional(), FLAGS_SECRET: z.string().min(1).optional(), BLOB_READ_WRITE_TOKEN: z.string().min(1).optional(), }; const client: Parameters[0]['client'] = { NEXT_PUBLIC_APP_URL: z.string().min(1).url(), NEXT_PUBLIC_WEB_URL: z.string().min(1).url(), NEXT_PUBLIC_API_URL: z.string().min(1).url().optional(), // Added by Vercel NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL: z.string().min(1), }; export const env = createEnv({ client, server, runtimeEnv: { BETTER_AUTH_SECRET: process.env.BETTER_AUTH_SECRET, DATABASE_URL: process.env.DATABASE_URL, BETTERSTACK_API_KEY: process.env.BETTERSTACK_API_KEY, BETTERSTACK_URL: process.env.BETTERSTACK_URL, ARCJET_KEY: process.env.ARCJET_KEY, ANALYZE: process.env.ANALYZE, SENTRY_ORG: process.env.SENTRY_ORG, SENTRY_PROJECT: process.env.SENTRY_PROJECT, VERCEL: process.env.VERCEL, NEXT_RUNTIME: process.env.NEXT_RUNTIME, FLAGS_SECRET: process.env.FLAGS_SECRET, BLOB_READ_WRITE_TOKEN: process.env.BLOB_READ_WRITE_TOKEN, SVIX_TOKEN: process.env.SVIX_TOKEN, LIVEBLOCKS_SECRET: process.env.LIVEBLOCKS_SECRET, OPENAI_API_KEY: process.env.OPENAI_API_KEY, NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_WEB_URL: process.env.NEXT_PUBLIC_WEB_URL, NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL, NEXT_PUBLIC_DOCS_URL: process.env.NEXT_PUBLIC_DOCS_URL, NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL: process.env.NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL, }, emptyStringAsUndefined: true });