Skip to main content

@canard/schema-form-ajv6-plugin

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

AJV 6.x validator plugin for @canard/schema-form. Supports JSON Schema Draft-04, Draft-06, and Draft-07. Use this plugin for legacy schemas or when you need Draft-04/06 support. For new projects, prefer @canard/schema-form-ajv8-plugin.

Installation

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

Quick Setup

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

registerPlugin(plugin);

Default Configuration

// Internal defaults applied when no custom AJV instance is bound
{
allErrors: true, // collect all errors, not just the first
nullable: true, // allow null values
verbose: true, // include additional error context
format: false, // format validation disabled for performance
}

Custom AJV Instance

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

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

// Bind before registerPlugin — or rebind at any time
plugin.validator.bind(ajv);

Using createValidatorFactory Directly

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

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

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

AJV 6.x Notes

  • Error dataPath uses JSONPath format ($.foo.bar). The plugin automatically transforms it to JSONPointer format (/foo/bar) for schema-form compatibility.
  • nullable: true enables { type: ['string', 'null'] } shorthand.
  • AJV 6 does not support Draft 2019-09 or Draft 2020-12. See the validator comparison for details.
AI Agent Reference

AI Reference

Package: @canard/schema-form-ajv6-plugin v0.10.0 Purpose: AJV 6.x validator plugin — use for legacy JSON Schema Draft-04/06/07.

Exports

import { plugin } from '@canard/schema-form-ajv6-plugin';
import { createValidatorFactory } from '@canard/schema-form-ajv6-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, nullable: true, verbose: true, format: false }

Key behaviors

  • Error dataPath auto-transformed from JSONPath ($.foo) to JSONPointer (/foo)
  • nullable: true → supports { type: ['string', 'null'] }
  • Does NOT support Draft 2019-09 / 2020-12 → use ajv8-plugin instead