import z from "zod"; import { ENVIRONMENT, IS_PROD } from "."; const discordSchema = z.object({ token: z.string(), app_id: z.string(), client_secret: z.string(), server: z.object({ id: z.string(), ticket_category: z.string(), transcript_channel: z.string(), }), }); const dbSchema = z.discriminatedUnion("dialect", [ z.object({ dialect: z.literal("turso"), url: z.string(), auth: z.string(), }), z.object({ dialect: z.literal("sqlite"), url: z.string(), auth: z.string().optional(), }), ]); const apiSchema = z.object({ port: z.number().default(3000), }); const s3Schema = z.object({ accessKeyId: z.string(), secretAccessKey: z.string(), bucket: z.string(), endpoint: z.string().optional(), region: z.string().optional(), publicUrl: z.string().optional(), }); const schema = z .object({ discord: discordSchema, db: dbSchema, api: apiSchema, s3: s3Schema, }) .transform((config) => { return { ...config, environment: ENVIRONMENT, isProd: IS_PROD, }; }); export default schema; export type Config = z.infer;