ajv.ts 1.8 KB

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