UNPKG

mantine-form-zod-resolver

Version:
43 lines (40 loc) 1.02 kB
import { parse, $ZodError } from 'zod/v4/core'; function zodResolver(schema, options) { return (values) => { const parsed = schema.safeParse(values); if (parsed.success) { return {}; } const results = {}; if ("error" in parsed) { if (options?.errorPriority === "first") { parsed.error.errors.reverse(); } parsed.error.errors.forEach((error) => { results[error.path.join(".")] = error.message; }); } return results; }; } function zod4Resolver(schema, options) { return (values) => { try { parse(schema, values); return {}; } catch (error) { if (error instanceof $ZodError) { const results = {}; if (options?.errorPriority === "first") { error.issues.reverse(); } error.issues.forEach((issue) => { results[issue.path.join(".")] = issue.message; }); return results; } throw error; } }; } export { zod4Resolver, zodResolver };