Skip to main content

@canard/schema-form-ajv7-plugin

@canard/schema-form-ajv7-plugin npm versionlicense
yarn add @canard/schema-form-ajv7-plugin

AJV 7.x validator plugin for @canard/schema-form. Supports JSON Schema Draft-07 and Draft 2019-09. Useful as a migration step between AJV 6 and AJV 8, or when you need Draft 2019-09 support without upgrading to AJV 8.

Installation

yarn add @canard/schema-form-ajv7-plugin
# ajv@^7 is bundled as a direct dependency

Quick Setup

import { registerPlugin } from '@canard/schema-form';
import { plugin } from '@canard/schema-form-ajv7-plugin';

registerPlugin(plugin);

Default Configuration

// Internal defaults applied when no custom AJV instance is bound
{
allErrors: true, // collect all errors, not just the first
strict: false, // disable strict mode for schema compatibility
validateFormats: false, // format validation disabled for performance
}

Custom AJV Instance

import Ajv from 'ajv';
import { plugin } from '@canard/schema-form-ajv7-plugin';

const ajv = new Ajv({ allErrors: true, strict: false });

plugin.validator.bind(ajv);

Using createValidatorFactory Directly

import Ajv from 'ajv';
import { createValidatorFactory } from '@canard/schema-form-ajv7-plugin';

const ajv = new Ajv({ allErrors: true });
const validate = createValidatorFactory(ajv)(myJsonSchema);

const errors = await validate(formData); // null | ValidationError[]

AJV 7.x Notes

  • Error paths use JSONPointer format natively — no path transformation needed (unlike AJV 6).
  • strict: false is set by default for compatibility with schemas that use custom keywords.
  • Does not support Draft 2020-12. Use @canard/schema-form-ajv8-plugin/2020 for that.
AI Agent Reference

AI Reference

Package: @canard/schema-form-ajv7-plugin v0.10.0 Purpose: AJV 7.x validator plugin — Draft-07 and Draft 2019-09 support.

Exports

import { plugin } from '@canard/schema-form-ajv7-plugin';
import { createValidatorFactory } from '@canard/schema-form-ajv7-plugin';

Usage

registerPlugin(plugin);                         // use default AJV config
plugin.validator.bind(new Ajv({ ... })); // bind custom AJV instance
createValidatorFactory(ajv)(schema); // standalone usage without plugin

Default AJV config

{ allErrors: true, strict: false, validateFormats: false }

Key behaviors

  • Native JSONPointer error paths (no transform needed unlike AJV 6)
  • strict: false for custom keyword compatibility
  • Does NOT support Draft 2020-12 → use ajv8-plugin/2020