ajv.ts 2.2 KB

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