37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { createEnv } from '@t3-oss/env-nextjs';
|
|
import { z } from 'zod';
|
|
|
|
/**
|
|
* Zod-validated environment. Imported eagerly from next.config.ts so that
|
|
* missing/invalid variables fail the build instead of silently leaking
|
|
* `undefined` at runtime.
|
|
*/
|
|
export const env = createEnv({
|
|
server: {
|
|
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
|
|
DATABASE_URL: z.string().url(),
|
|
AUTH_SECRET: z.string().min(1, 'AUTH_SECRET is required'),
|
|
AUTH_URL: z.string().url().optional(),
|
|
AUTH_DEV_AUTOLOGIN: z
|
|
.string()
|
|
.optional()
|
|
.transform((v) => v === 'true'),
|
|
LOG_LEVEL: z
|
|
.enum(['fatal', 'error', 'warn', 'info', 'debug', 'trace'])
|
|
.default('info'),
|
|
},
|
|
client: {
|
|
NEXT_PUBLIC_APP_URL: z.string().url(),
|
|
},
|
|
runtimeEnv: {
|
|
NODE_ENV: process.env.NODE_ENV,
|
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
AUTH_SECRET: process.env.AUTH_SECRET,
|
|
AUTH_URL: process.env.AUTH_URL,
|
|
AUTH_DEV_AUTOLOGIN: process.env.AUTH_DEV_AUTOLOGIN,
|
|
LOG_LEVEL: process.env.LOG_LEVEL,
|
|
NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
|
|
},
|
|
emptyStringAsUndefined: true,
|
|
});
|