Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 1x 1x 2x 4x 1x 1x 1x 3x 1x | import { ZodError } from "zod";
import { CLI_FORMAT_RED } from "../tester/cliFormat";
export interface LintIssueFromZod {
message: string;
path: (string | number)[];
code?: string;
value?: unknown;
}
export function getLintIssuesFromZodError(e: ZodError): LintIssueFromZod[] {
return e.issues
.map((issue) => {
if (
issue.code === "invalid_union" &&
issue.path.length === 0 &&
issue.unionErrors.length > 0
) {
const lastUnionError = issue.unionErrors[issue.unionErrors.length - 1];
const nestedIssue = lastUnionError.issues[0];
return {
message: nestedIssue.message,
path: nestedIssue.path,
code: nestedIssue.code,
value: (nestedIssue as any).received,
};
}
return {
message: issue.message,
path: issue.path,
code: issue.code,
value: (issue as any).received,
};
})
.filter(Boolean);
}
export function printZodError(e: ZodError) {
const issues = getLintIssuesFromZodError(e);
issues.forEach((issue) => {
console.error(CLI_FORMAT_RED, ` => Error: ${issue.message}`);
console.error(" Path:", issue.path.join("."));
Iif (typeof issue.value !== "undefined" && issue.value !== "undefined") {
console.error(" Value:", issue.value);
}
console.error("");
});
}
|