2019.ts 2.4 KB

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