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