index.ts 982 B

123456789101112131415161718192021222324252627282930
  1. import type Ajv from "../../core"
  2. import type {AnySchemaObject} from "../../types"
  3. import * as metaSchema from "./schema.json"
  4. import * as applicator from "./meta/applicator.json"
  5. import * as unevaluated from "./meta/unevaluated.json"
  6. import * as content from "./meta/content.json"
  7. import * as core from "./meta/core.json"
  8. import * as format from "./meta/format-annotation.json"
  9. import * as metadata from "./meta/meta-data.json"
  10. import * as validation from "./meta/validation.json"
  11. const META_SUPPORT_DATA = ["/properties"]
  12. export default function addMetaSchema2020(this: Ajv, $data?: boolean): Ajv {
  13. ;[
  14. metaSchema,
  15. applicator,
  16. unevaluated,
  17. content,
  18. core,
  19. with$data(this, format),
  20. metadata,
  21. with$data(this, validation),
  22. ].forEach((sch) => this.addMetaSchema(sch, undefined, false))
  23. return this
  24. function with$data(ajv: Ajv, sch: AnySchemaObject): AnySchemaObject {
  25. return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch
  26. }
  27. }