| import { z } from "zod"; |
| import { config } from "$lib/server/config"; |
| import JSON5 from "json5"; |
|
|
| const sanitizeJSONEnv = (val: string, fallback: string) => { |
| const raw = (val ?? "").trim(); |
| const unquoted = raw.startsWith("`") && raw.endsWith("`") ? raw.slice(1, -1) : raw; |
| return unquoted || fallback; |
| }; |
|
|
| |
| export const usageLimitsSchema = z |
| .object({ |
| conversations: z.coerce.number().optional(), |
| messages: z.coerce.number().optional(), |
| messageLength: z.coerce.number().optional(), |
| messagesPerMinute: z |
| .preprocess((val) => { |
| if (val === undefined) { |
| return config.RATE_LIMIT; |
| } |
| return val; |
| }, z.coerce.number().optional()) |
| .optional(), |
| }) |
| .optional(); |
|
|
| export const usageLimits = usageLimitsSchema.parse( |
| JSON5.parse(sanitizeJSONEnv(config.USAGE_LIMITS, "{}")) |
| ); |
|
|