Package Exports
- zod-validation-error
- zod-validation-error/dist/cjs/index.js
- zod-validation-error/dist/esm/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (zod-validation-error) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
zod-validation-error
Wrap zod validation errors in user-friendly readable messages.
Features
- User-friendly readable messages, configurable via options;
- Maintain original errors under
error.details
; - Extensive tests.
Installation
npm install zod-validation-error
Requirements
- Node.js v.14+
Quick start
// create zod schema
const zodSchema = zod.object({
id: zod.number().int().positive(),
email: zod.string().email(),
});
// parse some invalid value
try {
zodSchema.parse({
id: 1,
email: 'foobar', // note: invalid email
});
} catch (err) {
const validationError = fromZodError(err);
// the error now is readable by the user
// you may print it to console
// or return it via an API
console.log(validationError);
}
Motivation
Zod errors are difficult to consume for the end-user. This library wraps Zod validation errors in user-friendly readable messages that can be exposed to the outer world, while maintaining the original errors in an array for dev use.
Example
Input (from Zod)
[
{
"code": "too_small",
"inclusive": false,
"message": "Number must be greater than 0",
"minimum": 0,
"path": ["id"],
"type": "number"
},
{
"code": "invalid_string",
"message": "Invalid email",
"path": ["email"],
"validation": "email"
}
]
Output
Validation error: Number must be greater than 0 at "id"; Invalid email at "email"
Guides and concepts
Type-guards
zod-validation-error
exposes two type-guard utilities that are used to indicate whether the supplied argument is a ValidationError
.
isValidationError(err: unknown): err is ValidationError
isValidationErrorLike(err: unknown): err is ValidationError
What is the difference?
isValidationError
is based on an instanceof
comparison, whereas isValidationErrorLike
is using a heuristics-based approach.
In most cases, it is recommended to use
isValidationErrorLike
to avoid multiple-version inconsistencies. For instance, it's possible that a dependency is using an olderzod-validation-error
version internally. In such case, theinstanceof
comparison will yield invalid results because module deduplication does not apply at npm/yarn level and the prototype is different.
Example
import { ValidationError, isValidationErrorLike } from 'zod-validation-error';
const err = new ValidationError('foobar', { details: [] });
isValidationErrorLike(err); // returns true
const invalidErr = new Error('foobar');
isValidationErrorLike(err); // returns false
Contribute
Source code contributions are most welcome. Please open a PR, ensure the linter is satisfied and all tests pass.
We are hiring
Causaly is building the world's largest biomedical knowledge platform, using technologies such as TypeScript, React and Node.js. Find out more about our openings at https://apply.workable.com/causaly/.
License
MIT