UNPKG

accounts

Version:

Tempo Accounts SDK

47 lines 1.74 kB
/** * Flattens nested zod issues into `{ path, message }` pairs. Union branches * that each failed on type alone merge into a single `Expected a | b | c` * message; otherwise the branch with the fewest issues is reported. */ export function flattenIssues(issues) { const result = []; for (const issue of issues) { if (issue.errors?.length) { const merged = mergeUnionTypes(issue.errors); if (merged) { result.push({ path: issue.path, message: merged }); continue; } const best = issue.errors.reduce((a, b) => (a.length <= b.length ? a : b)); for (const nested of flattenIssues(best)) result.push({ path: [...issue.path, ...nested.path], message: nested.message }); } else { let message = issue.message; if (issue.code === 'invalid_type' && issue.expected) message = `Expected ${issue.expected}`; else if (issue.code === 'invalid_value') message = 'Invalid value'; result.push({ path: issue.path, message }); } } return result; } function mergeUnionTypes(branches) { const expected = []; for (const branch of branches) { const issue = branch[0]; if (branch.length !== 1 || !issue || issue.code !== 'invalid_type' || !issue.expected || issue.path.length > 0) return undefined; if (!expected.includes(issue.expected)) expected.push(issue.expected); } if (expected.length < 2) return undefined; return `Expected ${expected.join(' | ')}`; } //# sourceMappingURL=zodIssues.js.map