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-errorsor
$ npm i @apideck/better-ajv-errorsAlso 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: BetterAjvErrorsOptionserrors: ErrorObject[] | null | undefinedYour ajv errors, you will find these in theerrorsproperty of your ajv instance (ErrorObjectis a type from the ajv package).data: ObjectThe data you passed to ajv to be validated.schema: JSONSchemaThe schema you passed to ajv to validate against.basePath?: stringAn 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 ofValidationErrorbelow)message: stringFormatted error messagesuggestion?: stringOptional suggestion based on provided data and schemapath: stringObject path where the error occurred (example:.foo.bar.0.quz)context: { errorType: DefinedError['keyword']; [additionalContext: string]: unknown }errorTypeiserror.keywordproxied fromajv.errorTypecan 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.