mirror of
https://github.com/eliasstepanik/core.git
synced 2026-01-11 22:28:28 +00:00
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import { z } from "zod";
|
|
import { isValidDatabaseUrl } from "./utils/db";
|
|
|
|
const EnvironmentSchema = z.object({
|
|
NODE_ENV: z.union([z.literal("development"), z.literal("production"), z.literal("test")]),
|
|
DATABASE_URL: z
|
|
.string()
|
|
.refine(
|
|
isValidDatabaseUrl,
|
|
"DATABASE_URL is invalid, for details please check the additional output above this message."
|
|
),
|
|
DATABASE_CONNECTION_LIMIT: z.coerce.number().int().default(10),
|
|
DATABASE_POOL_TIMEOUT: z.coerce.number().int().default(60),
|
|
DATABASE_CONNECTION_TIMEOUT: z.coerce.number().int().default(20),
|
|
DIRECT_URL: z
|
|
.string()
|
|
.refine(
|
|
isValidDatabaseUrl,
|
|
"DIRECT_URL is invalid, for details please check the additional output above this message."
|
|
),
|
|
DATABASE_READ_REPLICA_URL: z.string().optional(),
|
|
SESSION_SECRET: z.string(),
|
|
|
|
APP_ENV: z.string().default(process.env.NODE_ENV),
|
|
LOGIN_ORIGIN: z.string().default("http://localhost:5173"),
|
|
APP_ORIGIN: z.string().default("http://localhost:5173"),
|
|
POSTHOG_PROJECT_KEY: z.string().default(""),
|
|
|
|
// google auth
|
|
AUTH_GOOGLE_CLIENT_ID: z.string().optional(),
|
|
AUTH_GOOGLE_CLIENT_SECRET: z.string().optional(),
|
|
});
|
|
|
|
export type Environment = z.infer<typeof EnvironmentSchema>;
|
|
export const env = EnvironmentSchema.parse(process.env);
|