applicability.ts 739 B

12345678910111213141516171819202122
  1. import type {AnySchemaObject} from "../../types"
  2. import type {SchemaObjCxt} from ".."
  3. import type {JSONType, RuleGroup, Rule} from "../rules"
  4. export function schemaHasRulesForType(
  5. {schema, self}: SchemaObjCxt,
  6. type: JSONType
  7. ): boolean | undefined {
  8. const group = self.RULES.types[type]
  9. return group && group !== true && shouldUseGroup(schema, group)
  10. }
  11. export function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {
  12. return group.rules.some((rule) => shouldUseRule(schema, rule))
  13. }
  14. export function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {
  15. return (
  16. schema[rule.keyword] !== undefined ||
  17. rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)
  18. )
  19. }