UNPKG

@vorms/resolvers

Version:
39 lines (35 loc) 984 B
import { set } from '@vorms/core'; const toNestError = (errors) => { const fieldErrors = {}; for (const path in errors) { set(fieldErrors, path, errors[path]); } return fieldErrors; }; const parseErrorSchema = (zodErrors) => { const errors = {}; while (zodErrors.length) { const { path: _parse, message, ...rest } = zodErrors[0]; const path = _parse.join('.'); if (!errors[path]) { errors[path] = message; } if ('unionErrors' in rest) { rest.unionErrors.forEach((e) => { zodErrors.push(...e.errors); }); } zodErrors.shift(); } return errors; }; const zodResolver = (schema) => async (values) => { try { await schema.parse(values); return {}; } catch (error) { return error.isEmpty ? {} : toNestError(parseErrorSchema(error.errors)); } }; export { zodResolver };