Socket
Socket
Sign inDemoInstall

@rjsf/validator-ajv8

Package Overview
Dependencies
4
Maintainers
2
Versions
69
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rjsf/validator-ajv8


Version published
Weekly downloads
157K
decreased by-7.19%
Maintainers
2
Created
Weekly downloads
 

Package description

What is @rjsf/validator-ajv8?

@rjsf/validator-ajv8 is a validation package for React JSON Schema Form (RJSF) that uses AJV version 8 for JSON schema validation. It allows you to validate form data against a JSON schema, ensuring that the data conforms to the specified structure and constraints.

What are @rjsf/validator-ajv8's main functionalities?

Schema Validation

This feature allows you to validate data against a JSON schema. The code sample demonstrates how to compile a schema and validate data using AJV.

const Ajv = require('ajv');
const ajv = new Ajv();
const schema = {
  type: 'object',
  properties: {
    name: { type: 'string' },
    age: { type: 'integer' }
  },
  required: ['name', 'age']
};
const validate = ajv.compile(schema);
const data = { name: 'John', age: 30 };
const valid = validate(data);
if (!valid) console.log(validate.errors);

Custom Keywords

This feature allows you to add custom validation keywords to your schema. The code sample shows how to add a custom keyword 'isPositive' and use it in a schema.

const Ajv = require('ajv');
const ajv = new Ajv();
ajv.addKeyword('isPositive', {
  type: 'number',
  validate: (schema, data) => data > 0
});
const schema = {
  type: 'object',
  properties: {
    positiveNumber: { type: 'number', isPositive: true }
  }
};
const validate = ajv.compile(schema);
const data = { positiveNumber: 10 };
const valid = validate(data);
if (!valid) console.log(validate.errors);

Error Messages

This feature provides detailed error messages when validation fails. The code sample demonstrates how to enable all error messages and validate data that does not meet the schema requirements.

const Ajv = require('ajv');
const ajv = new Ajv({ allErrors: true });
const schema = {
  type: 'object',
  properties: {
    name: { type: 'string' },
    age: { type: 'integer', minimum: 18 }
  },
  required: ['name', 'age']
};
const validate = ajv.compile(schema);
const data = { name: 'John', age: 16 };
const valid = validate(data);
if (!valid) console.log(validate.errors);

Other packages similar to @rjsf/validator-ajv8

Changelog

Source

5.0.0-beta.11

@rjsf/antd

  • Updated FieldTemplate to no longer render additional, unnecessary white space for fields that have empty help and extra information, fixing #3147
  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/bootstrap-4

  • Make label generation consistent with other themes by refactoring the code into the FieldTemplate instead of having the widgets implementing the label, fixing #2007
  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/chakra-ui

  • Added support for chakra-react-select v4, fixing #3152
  • In SelectWidget use Select from chakra-react-select for both single- and multiple-choice select
  • In SelectWidget multiple-choice select display label rather than value for selected items
  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/core

  • Extended Form.onChange to optionally return the id of the field that caused the change, fixing #2768
  • Fixed a regression in earlier v5 beta versions where additional properties could not be added when additionalProperties was true (#3719).
  • Fixed a regression in v5 beta version where BooleanField was altering readonly props (#3188.
  • Updated ArrayFieldDescriptionTemplate and ArrayFieldTitleTemplate to not render content when ui:label is false, fixing #2535
  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/fluent-ui

  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/material-ui

  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/mui

  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/semantic-ui

  • Updated ArrayFieldTemplate to always render ArrayFieldDescriptionTemplate since that template deals with the optional description
  • Pass the schema into the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate, fixing #3176

@rjsf/utils

  • Updated the onChange prop on FieldProps and FieldTemplateProps to add an optional id parameter to the callback.
  • Updated the DescriptionFieldProps and TitleFieldProps to add a new required schema prop. Also updated the ArrayFieldDescriptionTemplate and ArrayFieldTitleTemplate to make description and title optional while pulling all the other props but id from the associated type.

Dev / docs / playground

  • Added an error boundary to prevent the entire app from crashing when an error is thrown by Form. See #3164 for closed issues.
  • Updated the playground to log the id of the field being changed on the onChange handler
  • Updated form-props.md to describe the new id parameter being returned by the Form.onChange handler
  • Updated custom-templates.md to add the new schema prop to the ArrayFieldDescriptionTemplate, ArrayFieldTitleTemplate, DescriptionFieldTemplate and TitleFieldTemplate documentation
  • Updated the contributing.md to describe setting up the husky precommit hooks for the first time git clone of the repo; Also added guidance for developing on underpowered computers; Finally discussed code-coverage requirements for some packages.

Readme

Source

Build Status npm npm downloads Contributors Apache 2.0 License


Logo

@rjsf/validator-ajv8

AJV-8 based validator plugin for react-jsonschema-form.
Explore the docs »

View Playground · Report Bug · Request Feature

Table of Contents

About The Project

Exports validator-ajv8 plugin for react-jsonschema-form.

Built With

Getting Started

Prerequisites

React JsonSchema Form Utils
  • @rjsf/utils >= 5.0.0
yarn add @rjsf/core

Installation

yarn add @rjsf/validator-ajv8

Usage

import {RJSFSchema} from "packages/utils/dist/index";
import Form from 'packages/core/dist/index';
import validator from '@rjsf/validator-ajv8';

const schema: RJSFSchema = {
    type: 'string',
};

<Form schema={schema} validator={validator}/>

or, using a more complex example using custom validator with custom formats

import { RJSFSchema } from "@rjsf/utils";
import Form from '@rjsf/core';
import { customizeValidator } from '@rjsf/validator-ajv8';

const customFormats = {
  'phone-us': /\(?\d{3}\)?[\s-]?\d{3}[\s-]?\d{4}$/
};

const validator = customizeValidator({
  customFormats,
});

const schema: RJSFSchema = {
  type: 'string',
  format: 'phone-us'
};

<Form schema={schema} validator={validator} />

or, using a more complex example using a custom with additional meta schema

import { RJSFSchema } from "@rjsf/utils";
import Form from '@rjsf/core';
import { customizeValidator } from '@rjsf/validator-ajv8';

const metaSchemaDraft06 = require("ajv/lib/refs/json-schema-draft-06.json");

const validator = customizeValidator({
  additionalMetaSchemas: [metaSchemaDraft06],
});

const schema: RJSFSchema = {
  "$schema": "http://json-schema.org/draft-06/schema#",
  type: 'string',
};

<Form schema={schema} validator={validator} />

or, using a more complex example using custom validator config override options

import { RJSFSchema } from "@rjsf/utils";
import Form from '@rjsf/core';
import { customizeValidator } from '@rjsf/validator-ajv8';

const validator = customizeValidator({
  ajvOptionsOverrides: {
    $data: true,
    verbose: true,
  }
});

const schema: RJSFSchema = {
  type: 'string',
};

<Form schema={schema} validator={validator} />

or, using a more complex example using ajv-formats custom format options.

import { RJSFSchema } from "@rjsf/utils";
import Form from '@rjsf/core';
import { customizeValidator } from '@rjsf/validator-ajv8';

const validator = customizeValidator({
  ajvFormatOptions: {
    keywords: true,
    formats: ["date", "time"]
  }
});

const schema: RJSFSchema = {
  type: 'string',
};

<Form schema={schema} validator={validator} />

Finally, you can combine both additional meta schemas, custom formats, custom validator config override options and ajv-formats custom format options.

import { RJSFSchema } from "@rjsf/utils";
import Form from '@rjsf/core';
import { customizeValidator } from '@rjsf/validator-ajv8';

const metaSchemaDraft06 = require("ajv/lib/refs/json-schema-draft-06.json");

const customFormats = {
  'phone-us': /\(?\d{3}\)?[\s-]?\d{3}[\s-]?\d{4}$/
};

const validator = customizeValidator({
  additionalMetaSchemas: [metaSchemaDraft06],
  customFormats,
  ajvOptionsOverrides: {
    $data: true,
    verbose: true,
  },
  ajvFormatOptions: {
    keywords: true,
    formats: ["date", "time"]
  }
});

const schema: RJSFSchema = {
  "$schema": "http://json-schema.org/draft-06/schema#",
  type: 'string',
  format: 'phone-us'
};

<Form schema={schema} validator={validator} />

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Read our contributors' guide to get started.

Contact

rjsf team: https://github.com/orgs/rjsf-team/people

GitHub repository: https://github.com/rjsf-team/react-jsonschema-form

Keywords

FAQs

Last updated on 10 Oct 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc