Files
flint/src/framework/config/env.ts
T

37 lines
1.1 KiB
TypeScript

import { config as loadEnv } from "dotenv";
import { z } from "zod";
import { SUPPORTED_LANGS } from "../types/command.js";
loadEnv();
const envSchema = z.object({
DISCORD_TOKEN: z.string().min(1, "DISCORD_TOKEN is required"),
DISCORD_CLIENT_ID: z.string().min(1, "DISCORD_CLIENT_ID is required"),
DATABASE_URL: z
.string()
.trim()
.min(1, "DATABASE_URL is required")
.url("DATABASE_URL must be a valid URL"),
DATABASE_SSL: z
.string()
.optional()
.default("false")
.transform((value) => value.toLowerCase() === "true"),
PRESENCE_STREAM_URL: z
.string()
.url("PRESENCE_STREAM_URL must be a valid URL")
.optional()
.default("https://twitch.tv/discord"),
PREFIX: z.string().min(1).max(5).default("+"),
DEFAULT_LANG: z.enum(SUPPORTED_LANGS).default("en"),
DEV_GUILD_ID: z.string().optional().transform((value) => value && value.length > 0 ? value : undefined),
AUTO_DEPLOY_SLASH: z
.string()
.optional()
.default("false")
.transform((value) => value.toLowerCase() === "true"),
});
export const env = envSchema.parse(process.env);