import { z } from 'zod'; /* v8 ignore start */ export function formatZodErrorMessages(zodError: z.ZodError): Array { return zodError.issues .map(issue => { const maybeIssuePath = issue.path.length > 0 ? issue.path.join('.') : undefined; const formatMessageWithPath = (message: string) => maybeIssuePath ? `${message} on path "${maybeIssuePath}"` : message; switch (issue.code) { case 'invalid_union': { if (issue.message && issue.message.includes('Invalid input')) { return ( issue.unionErrors // remove duplicated messages .filter( (unionError, index) => index === issue.unionErrors.findIndex(error => error.message === unionError.message), ) .map(formatZodErrorMessages) ); } return formatMessageWithPath(issue.message); } default: { return formatMessageWithPath(issue.message); } } }) .flat(10); } /* v8 ignore stop */