|
1 | | -// const Ajv = require("ajv"); |
2 | 1 | const Ajv = require("ajv/dist/2019"); |
| 2 | +const Ajv2020 = require("ajv/dist/2020"); |
3 | 3 | const draft7MetaSchema = require("ajv/dist/refs/json-schema-draft-07.json"); |
4 | 4 | const draft6MetaSchema = require("ajv/dist/refs/json-schema-draft-06.json"); |
5 | 5 | const addFormats = require("ajv-formats"); |
| 6 | +const { JsonSchemaVersions } = require("./utils"); |
6 | 7 |
|
7 | | -let Validator = function (schemas, ajvOptions) { |
| 8 | +let Validator = function (schemas, ajvOptions, jsonSchemaVersion) { |
8 | 9 | let options = {}; |
9 | 10 | Object.assign(options, ajvOptions); |
10 | | - // options.schemas = schemas; |
11 | | - this._ajv = new Ajv(options); |
12 | | - this._ajv.addMetaSchema(draft7MetaSchema); |
13 | | - this._ajv.addMetaSchema(draft6MetaSchema); |
| 11 | + if (jsonSchemaVersion === JsonSchemaVersions.DRAFT_2020_12) { |
| 12 | + // support draft-202-12 only |
| 13 | + this._ajv = new Ajv2020(options); |
| 14 | + } else { |
| 15 | + // support draft-06, draft-07, draft-2019-09 |
| 16 | + this._ajv = new Ajv(options); |
| 17 | + this._ajv.addMetaSchema(draft7MetaSchema); |
| 18 | + this._ajv.addMetaSchema(draft6MetaSchema); |
| 19 | + } |
14 | 20 | schemas.forEach((schema) => { |
15 | 21 | this._ajv.addSchema(schema); |
16 | 22 | }); |
|
0 commit comments