Skip to Content
@jetio/validator docs are live 🎉
Meta-Schema SystemConfiguration & API

Meta-Schema Configuration

Instance-Level Configuration

Configure meta-schema behavior when creating a @jetio/validator instance.

interface ValidatorOptions { validateSchema?: boolean; // Default: true — enable schema validation metaSchema: string; // Default: '' — default meta-schema for schemas without $schema }

Enable validation with a default

const jetValidator = new JetValidator({ validateSchema: true, metaSchema: "draft-07", }); loadDraft07(jetValidator); const schema = { type: "string" }; // no $schema keyword jetValidator.validateSchema(schema); // validates against Draft-07

Disable validation for production

const jetValidator = new JetValidator({ validateSchema: false, // skip validation for performance }); // No need to load meta-schemas const validate = jetValidator.compile({ type: "object", properties: { name: { type: "string" } }, });

Compilation-Level Configuration

Override instance configuration per compile call.

const jetValidator = new JetValidator({ validateSchema: true, metaSchema: "draft-07", // instance default }); loadAllMetaSchemas(jetValidator); // Instance default (Draft-07) const validate1 = jetValidator.compile(schema); // Override to Draft 2020-12 const validate2 = jetValidator.compile(schema, { metaSchema: "draft/2020-12", }); // Disable validation for this compilation const validate3 = jetValidator.compile(schema, { validateSchema: false, });

Per-schema strategy — strict for critical schemas, lenient for internal ones:

const userValidator = jetValidator.compile(userSchema, { validateSchema: true, metaSchema: "draft/2020-12", strict: true, allErrors: true, }); const internalValidator = jetValidator.compile(internalSchema, { validateSchema: false, coerceTypes: true, });

Built-in Aliases

@jetio/validator provides short aliases for meta-schema URIs to cut verbosity. They work everywhere a meta-schema is accepted — the constructor, validateSchema, compile, and compileAsync.

Short AliasFull URI
draft-06https://json-schema.org/draft-06/schema
draft-07https://json-schema.org/draft-07/schema
draft/2019-09https://json-schema.org/draft/2019-09/schema
draft/2020-12https://json-schema.org/draft/2020-12/schema
// These are equivalent: jetValidator.validateSchema(schema, { metaSchema: "https://json-schema.org/draft-07/schema", }); jetValidator.validateSchema(schema, { metaSchema: "draft-07", // resolved internally to the full URI });

API Reference

Adding meta-schemas

MethodSignatureReturnsDescription
addMetaSchema(schema: SchemaDefinition, key?: string)thisRegister a meta-schema

Validating schemas

MethodSignatureReturnsDescription
validateSchemaSync(schema: SchemaDefinition, options?: ValidatorOptions)ValidationResultValidate and compile synchronously with full control
validateSchemaAsync(schema: SchemaDefinition, options?: ValidatorOptions)Promise<ValidationResult>Validate and compile asynchronously, loading external meta-schemas

Configuration options

OptionTypeDefaultDescription
validateSchemabooleantrueEnable schema validation before compilation
metaSchemastring''Default meta-schema URI or alias

CLI

CommandDescription
jet-meta load <version> [dir]Download meta-schemas to a directory

Loader functions (auto-generated)

FunctionDescription
loadDraft06(jetValidator)Load JSON Schema Draft-06 meta-schemas
loadDraft07(jetValidator)Load JSON Schema Draft-07 meta-schemas
loadDraft201909(jetValidator)Load JSON Schema Draft 2019-09 meta-schemas
loadDraft202012(jetValidator)Load JSON Schema Draft 2020-12 meta-schemas
loadAllMetaSchemas(jetValidator)Load all downloaded meta-schemas
Last updated on