Files
2026-05-11 18:03:52 -06:00

31 lines
872 B
TypeScript

import { z } from "zod";
import { ORGANIZER_INQUIRY_HONEYPOT_FIELD } from "../../organizerInquiryConstants";
const emailSchema = z
.string()
.trim()
.min(1, "Email is required")
.max(254)
.transform((s) => s.toLowerCase())
.pipe(z.string().email("Enter a valid email address"));
const messageSchema = z
.string()
.trim()
.min(10, "Please enter at least 10 characters")
.max(10_000, "Message is too long");
/** Optional honeypot; non-empty after trim indicates a bot. */
const honeypotSchema = z
.union([z.string(), z.undefined()])
.optional()
.transform((v) => (typeof v === "string" ? v.trim() : ""));
export const organizerInquiryBodySchema = z.object({
email: emailSchema,
message: messageSchema,
[ORGANIZER_INQUIRY_HONEYPOT_FIELD]: honeypotSchema,
});
export type OrganizerInquiryBody = z.infer<typeof organizerInquiryBodySchema>;