ajv.ts 2.1 KB

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