70 lines
2.6 KiB
TypeScript
70 lines
2.6 KiB
TypeScript
import { createEnv } from '@t3-oss/env-nextjs';
|
|
import { z } from 'zod';
|
|
|
|
const server: Parameters<typeof createEnv>[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<typeof createEnv>[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
|
|
});
|