2019.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import type {AnySchemaObject} from "./types"
  2. import AjvCore, {Options} from "./core"
  3. import draft7Vocabularies from "./vocabularies/draft7"
  4. import dynamicVocabulary from "./vocabularies/dynamic"
  5. import nextVocabulary from "./vocabularies/next"
  6. import unevaluatedVocabulary from "./vocabularies/unevaluated"
  7. import discriminator from "./vocabularies/discriminator"
  8. import addMetaSchema2019 from "./refs/json-schema-2019-09"
  9. const META_SCHEMA_ID = "https://json-schema.org/draft/2019-09/schema"
  10. export class Ajv2019 extends AjvCore {
  11. constructor(opts: Options = {}) {
  12. super({
  13. ...opts,
  14. dynamicRef: true,
  15. next: true,
  16. unevaluated: true,
  17. })
  18. }
  19. _addVocabularies(): void {
  20. super._addVocabularies()
  21. this.addVocabulary(dynamicVocabulary)
  22. draft7Vocabularies.forEach((v) => this.addVocabulary(v))
  23. this.addVocabulary(nextVocabulary)
  24. this.addVocabulary(unevaluatedVocabulary)
  25. if (this.opts.discriminator) this.addKeyword(discriminator)
  26. }
  27. _addDefaultMetaSchema(): void {
  28. super._addDefaultMetaSchema()
  29. const {$data, meta} = this.opts
  30. if (!meta) return
  31. addMetaSchema2019.call(this, $data)
  32. this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID
  33. }
  34. defaultMeta(): string | AnySchemaObject | undefined {
  35. return (this.opts.defaultMeta =
  36. super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))
  37. }
  38. }
  39. module.exports = exports = Ajv2019
  40. module.exports.Ajv2019 = Ajv2019
  41. Object.defineProperty(exports, "__esModule", {value: true})
  42. export default Ajv2019
  43. export {
  44. Format,
  45. FormatDefinition,
  46. AsyncFormatDefinition,
  47. KeywordDefinition,
  48. KeywordErrorDefinition,
  49. CodeKeywordDefinition,
  50. MacroKeywordDefinition,
  51. FuncKeywordDefinition,
  52. Vocabulary,
  53. Schema,
  54. SchemaObject,
  55. AnySchemaObject,
  56. AsyncSchema,
  57. AnySchema,
  58. ValidateFunction,
  59. AsyncValidateFunction,
  60. ErrorObject,
  61. ErrorNoParams,
  62. } from "./types"
  63. export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
  64. export {SchemaCxt, SchemaObjCxt} from "./compile"
  65. export {KeywordCxt} from "./compile/validate"
  66. export {DefinedError} from "./vocabularies/errors"
  67. export {JSONType} from "./compile/rules"
  68. export {JSONSchemaType} from "./types/json-schema"
  69. export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
  70. export {default as ValidationError} from "./runtime/validation_error"
  71. export {default as MissingRefError} from "./compile/ref_error"