2020.ts 2.2 KB

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