index.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import type {ErrorNoParams, Vocabulary} from "../../types"
  2. import additionalItems, {AdditionalItemsError} from "./additionalItems"
  3. import prefixItems from "./prefixItems"
  4. import items from "./items"
  5. import items2020, {ItemsError} from "./items2020"
  6. import contains, {ContainsError} from "./contains"
  7. import dependencies, {DependenciesError} from "./dependencies"
  8. import propertyNames, {PropertyNamesError} from "./propertyNames"
  9. import additionalProperties, {AdditionalPropertiesError} from "./additionalProperties"
  10. import properties from "./properties"
  11. import patternProperties from "./patternProperties"
  12. import notKeyword, {NotKeywordError} from "./not"
  13. import anyOf, {AnyOfError} from "./anyOf"
  14. import oneOf, {OneOfError} from "./oneOf"
  15. import allOf from "./allOf"
  16. import ifKeyword, {IfKeywordError} from "./if"
  17. import thenElse from "./thenElse"
  18. export default function getApplicator(draft2020 = false): Vocabulary {
  19. const applicator = [
  20. // any
  21. notKeyword,
  22. anyOf,
  23. oneOf,
  24. allOf,
  25. ifKeyword,
  26. thenElse,
  27. // object
  28. propertyNames,
  29. additionalProperties,
  30. dependencies,
  31. properties,
  32. patternProperties,
  33. ]
  34. // array
  35. if (draft2020) applicator.push(prefixItems, items2020)
  36. else applicator.push(additionalItems, items)
  37. applicator.push(contains)
  38. return applicator
  39. }
  40. export type ApplicatorKeywordError =
  41. | ErrorNoParams<"false schema">
  42. | AdditionalItemsError
  43. | ItemsError
  44. | ContainsError
  45. | AdditionalPropertiesError
  46. | DependenciesError
  47. | IfKeywordError
  48. | AnyOfError
  49. | OneOfError
  50. | NotKeywordError
  51. | PropertyNamesError