JSPM

  • Created
  • Published
  • Downloads 29406066
  • Score
    100M100P100Q236353F
  • License MIT

Plugin for AJV that adds support for some of draft2019 formats.

Package Exports

  • ajv-formats

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ajv-formats) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ajv-formats

Plugin for AJV that adds support for additional international formats and formats added in draft2019.

Currently, iri, iri-reference, idn-email, idn-hostname, and duration formats (added in draft 2019) are supported.

Installation

npm install ajv-formats

Usage

The main export is an apply function that patches an existing instance of ajv.

const Ajv = require('ajv');
const apply = require('ajv-formats');
const ajv = new Ajv();
apply(ajv);

let schema = {
  type: 'string',
  format: 'idn-email'
};
ajv.validate(schema, 'квіточка@пошта.укр')  // returns true

Alternately, the formats can be passed as an option when creating a new ajv instance.

const Ajv = require('ajv');
const formats = require('ajv-formats/formats');
const ajv = new Ajv({formats});

let schema = {
  type: 'string',
  format: 'idn-email'
};
ajv.validate(schema, 'квіточка@пошта.укр')  // returns true

Draft07

The library also provides a draft07 export to load only the formats relevant to draft07.

const Ajv = require('ajv');
const formats = require('ajv-formats/draft07');
const ajv = new Ajv({formats});

Formats

iri

The string is parsed with 'uri-js' and the scheme is checked against the list of known IANA schemes. If it's a 'mailto' schemes, all of the to: addresses are validated, otherwise we check there IRI includes a path and is an absolute reference.

iri-reference

All valid IRIs are valid. Fragments must have a valid path and of type "relative", "same-document" or "uri". If there is a scheme, it must be valid.

idn-email

isemail is used to check the validity of the email.

idn-hostname

The hostname is converted to ascii with punycode and checked for a valid tld.

duration

The string is checked against a regex.