본문으로 건너뛰기

@canard/schema-form-ajv8-plugin

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

@canard/schema-form를 위한 AJV 8.x 검증 플러그인으로, 권장 validator 플러그인입니다. JSON Schema Draft-07, Draft 2019-09, Draft 2020-12를 지원합니다. 세 가지 서브패스 익스포트를 통해 필요한 Draft를 정확히 선택할 수 있습니다.

Installation

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

Subpath Exports

Import pathDraft supportAJV internal import
@canard/schema-form-ajv8-pluginDraft-07 (default)ajv
@canard/schema-form-ajv8-plugin/2019Draft 2019-09ajv/dist/2019
@canard/schema-form-ajv8-plugin/2020Draft 2020-12ajv/dist/2020

Quick Setup

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

registerPlugin(plugin);
// Draft 2019-09
import { plugin } from '@canard/schema-form-ajv8-plugin/2019';
registerPlugin(plugin);
// Draft 2020-12
import { plugin } from '@canard/schema-form-ajv8-plugin/2020';
registerPlugin(plugin);

Default Configuration

// Internal defaults applied when no custom AJV instance is bound
// Same across all three subpath exports
{
allErrors: true, // collect all errors, not just the first
strictSchema: false, // allow extra schema properties (custom keywords, formType, etc.)
validateFormats: false, // format validation disabled for performance
}

Custom AJV Instance

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

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

plugin.validator.bind(ajv);
// Draft 2020-12 with format validation enabled
import Ajv2020 from 'ajv/dist/2020';
import addFormats from 'ajv-formats';
import { plugin } from '@canard/schema-form-ajv8-plugin/2020';

const ajv = new Ajv2020({ allErrors: true, strictSchema: false });
addFormats(ajv);
plugin.validator.bind(ajv);

Using createValidatorFactory Directly

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

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

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

Validator Plugin Comparison

Featureajv6-pluginajv7-pluginajv8-plugin
Draft-04YesNoNo
Draft-06YesNoNo
Draft-07YesYesYes
Draft 2019-09NoYesYes (/2019)
Draft 2020-12NoNoYes (/2020)
Subpath exportsNoNoYes
Path transformationJSONPath→JSONPointerNone neededNone needed
Recommended forLegacy schemasMigration pathNew projects
AI Agent Reference

AI Reference

Package: @canard/schema-form-ajv8-plugin v0.10.0 Purpose: AJV 8.x validator plugin — recommended for new projects. Supports Draft-07, 2019-09, 2020-12.

Exports (3 subpath variants, each exports the same API)

import { plugin, createValidatorFactory } from '@canard/schema-form-ajv8-plugin';       // Draft-07
import { plugin, createValidatorFactory } from '@canard/schema-form-ajv8-plugin/2019'; // Draft 2019-09
import { plugin, createValidatorFactory } from '@canard/schema-form-ajv8-plugin/2020'; // Draft 2020-12

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 (all subpaths)

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

Draft selection guide

SubpathAJV importUse when
/ (default)ajvDraft-07 schemas (most common)
/2019ajv/dist/2019Need $recursiveRef, unevaluatedProperties
/2020ajv/dist/2020Need $dynamicRef, prefixItems