import { z } from "zod"; const CODE_BLOCK_PATTERN = /```[\s\S]*?```/g; const MATHJAX_PATTERN = /\$\$[^"]*?\$\$/g; const stripWrappedContent = (value: string): string => value.replaceAll(CODE_BLOCK_PATTERN, "").replaceAll(MATHJAX_PATTERN, ""); const containsForbiddenCharacter = (value: string): boolean => { const stripped = stripWrappedContent(value); if (/[\t\n\r]/.test(stripped)) return true; return stripped.includes("\\"); }; export const safeString = z .string() .refine((v) => !containsForbiddenCharacter(v), { message: "Must not contain tab, backslash, or newline characters", });