Errors & Diagnostic Tree
Format, flatten, and prettify validation errors for API responses and CLI output.
ValidationError & Issues
When validation fails, error.issues contains an immutable array of issues:
Schema Definition
const res = UserSchema.safeParse({});
if (!res.success) {
console.log(res.issues[0]);
/*
{
code: 'invalid_type',
expected: 'string',
received: 'undefined',
path: ['id'],
message: 'Required'
}
*/
}.format() vs .flatten()
• error.format(): Returns a nested tree matching your object hierarchy. • error.flatten(): Partitions into top-level formErrors and field-specific fieldErrors:
Schema Definition
// error.flatten() output:
{
formErrors: [],
fieldErrors: {
username: ["Must contain at least 3 characters"],
"profile.email": ["Invalid email address"]
}
}Terminal Friendly: .prettifyError()
Generates formatted CLI strings with arrow pointers, perfect for terminal debugging:
Schema Definition
console.log(error.prettifyError());
/*
Validation Errors:
→ [username] (too_small): String must contain at least 3 character(s)
→ [profile.email] (invalid_format): Invalid email format
*/Issue Codes Reference
Subatom Infer emits stable issue codes: 'invalid_type', 'invalid_value', 'invalid_format', 'too_small', 'too_big', 'unrecognized_keys', 'invalid_union', 'custom'.
