2020.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. 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. Object.defineProperty(exports, "__esModule", {value: true})
  35. export default Ajv2020
  36. export {
  37. Format,
  38. FormatDefinition,
  39. AsyncFormatDefinition,
  40. KeywordDefinition,
  41. KeywordErrorDefinition,
  42. CodeKeywordDefinition,
  43. MacroKeywordDefinition,
  44. FuncKeywordDefinition,
  45. Vocabulary,
  46. Schema,
  47. SchemaObject,
  48. AnySchemaObject,
  49. AsyncSchema,
  50. AnySchema,
  51. ValidateFunction,
  52. AsyncValidateFunction,
  53. ErrorObject,
  54. ErrorNoParams,
  55. } from "./types"
  56. export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
  57. export {SchemaCxt, SchemaObjCxt} from "./compile"
  58. export {KeywordCxt} from "./compile/validate"
  59. export {DefinedError} from "./vocabularies/errors"
  60. export {JSONType} from "./compile/rules"
  61. export {JSONSchemaType} from "./types/json-schema"
  62. export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
  63. export {default as ValidationError} from "./runtime/validation_error"
  64. export {default as MissingRefError} from "./compile/ref_error"