| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | /** * @fileoverview The instance of Ajv validator. * @author Evgeny Poberezkin *///------------------------------------------------------------------------------// Requirements//------------------------------------------------------------------------------import Ajv from "ajv";//-----------------------------------------------------------------------------// Helpers//-----------------------------------------------------------------------------/* * Copied from ajv/lib/refs/json-schema-draft-04.json * The MIT License (MIT) * Copyright (c) 2015-2017 Evgeny Poberezkin */const metaSchema = {    id: "http://json-schema.org/draft-04/schema#",    $schema: "http://json-schema.org/draft-04/schema#",    description: "Core schema meta-schema",    definitions: {        schemaArray: {            type: "array",            minItems: 1,            items: { $ref: "#" }        },        positiveInteger: {            type: "integer",            minimum: 0        },        positiveIntegerDefault0: {            allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]        },        simpleTypes: {            enum: ["array", "boolean", "integer", "null", "number", "object", "string"]        },        stringArray: {            type: "array",            items: { type: "string" },            minItems: 1,            uniqueItems: true        }    },    type: "object",    properties: {        id: {            type: "string"        },        $schema: {            type: "string"        },        title: {            type: "string"        },        description: {            type: "string"        },        default: { },        multipleOf: {            type: "number",            minimum: 0,            exclusiveMinimum: true        },        maximum: {            type: "number"        },        exclusiveMaximum: {            type: "boolean",            default: false        },        minimum: {            type: "number"        },        exclusiveMinimum: {            type: "boolean",            default: false        },        maxLength: { $ref: "#/definitions/positiveInteger" },        minLength: { $ref: "#/definitions/positiveIntegerDefault0" },        pattern: {            type: "string",            format: "regex"        },        additionalItems: {            anyOf: [                { type: "boolean" },                { $ref: "#" }            ],            default: { }        },        items: {            anyOf: [                { $ref: "#" },                { $ref: "#/definitions/schemaArray" }            ],            default: { }        },        maxItems: { $ref: "#/definitions/positiveInteger" },        minItems: { $ref: "#/definitions/positiveIntegerDefault0" },        uniqueItems: {            type: "boolean",            default: false        },        maxProperties: { $ref: "#/definitions/positiveInteger" },        minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },        required: { $ref: "#/definitions/stringArray" },        additionalProperties: {            anyOf: [                { type: "boolean" },                { $ref: "#" }            ],            default: { }        },        definitions: {            type: "object",            additionalProperties: { $ref: "#" },            default: { }        },        properties: {            type: "object",            additionalProperties: { $ref: "#" },            default: { }        },        patternProperties: {            type: "object",            additionalProperties: { $ref: "#" },            default: { }        },        dependencies: {            type: "object",            additionalProperties: {                anyOf: [                    { $ref: "#" },                    { $ref: "#/definitions/stringArray" }                ]            }        },        enum: {            type: "array",            minItems: 1,            uniqueItems: true        },        type: {            anyOf: [                { $ref: "#/definitions/simpleTypes" },                {                    type: "array",                    items: { $ref: "#/definitions/simpleTypes" },                    minItems: 1,                    uniqueItems: true                }            ]        },        format: { type: "string" },        allOf: { $ref: "#/definitions/schemaArray" },        anyOf: { $ref: "#/definitions/schemaArray" },        oneOf: { $ref: "#/definitions/schemaArray" },        not: { $ref: "#" }    },    dependencies: {        exclusiveMaximum: ["maximum"],        exclusiveMinimum: ["minimum"]    },    default: { }};//------------------------------------------------------------------------------// Public Interface//------------------------------------------------------------------------------export default (additionalOptions = {}) => {    const ajv = new Ajv({        meta: false,        useDefaults: true,        validateSchema: false,        missingRefs: "ignore",        verbose: true,        schemaId: "auto",        ...additionalOptions    });    ajv.addMetaSchema(metaSchema);    // eslint-disable-next-line no-underscore-dangle    ajv._opts.defaultMeta = metaSchema.id;    return ajv;};
 |