Package Exports
- @apideck/better-ajv-errors
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 (@apideck/better-ajv-errors) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@apideck/better-ajv-errors 👮♀️
Human-friendly JSON Schema validation for APIs
- Readable and helpful ajv errors
- API-friendly format
- Suggestions for spelling mistakes
- Minimal footprint: 1.56 kB (gzip + minified)
Install
$ yarn add @apideck/better-ajv-errors
or
$ npm i @apideck/better-ajv-errors
Also make sure that you've installed ajv at version 8 or higher.
Usage
After validating some data with ajv, pass the errors to betterAjvErrors
import Ajv from 'ajv';
import { betterAjvErrors } from '@apideck/better-ajv-errors';
// Without allErrors: true, ajv will only return the first error
const ajv = new Ajv({ allErrors: true });
const valid = ajv.validate(schema, data);
if (!valid) {
const betterErrors = betterAjvErrors({ schema, data, errors: ajv.errors });
}
API
betterAjvErrors
Function that formats ajv validation errors in a human-friendly format.
Parameters
options: BetterAjvErrorsOptions
errors: ErrorObject[] | null | undefined
Your ajv errors, you will find these in theerrors
property of your ajv instance (ErrorObject
is a type from the ajv package).data: Object
The data you passed to ajv to be validated.schema: JSONSchema
The schema you passed to ajv to validate against.basePath?: string
An optional base path to prefix paths returned bybetterAjvErrors
. For example, in APIs, it could be useful to use'{requestBody}'
or'{queryParemeters}'
as a basePath. This will make it clear to users where exactly the error occurred.
Return Value
ValidationError[]
Array of formatted errors (properties ofValidationError
below)message: string
Formatted error messagesuggestion?: string
Optional suggestion based on provided data and schemapath: string
Object path where the error occurred (example:.foo.bar.0.quz
)context: { errorType: DefinedError['keyword']; [additionalContext: string]: unknown }
errorType
iserror.keyword
proxied fromajv
.errorType
can be used as a key for i18n if needed. There might be additional properties on context, based on the type of error.
Related
- atlassian/better-ajv-errors was the inspiration for this library. Atlassian's library is more focused on CLI errors, this library is focused on developer-friendly API error messages.