Spaces:
Running
Running
import type {AnySchemaObject} from "../../types" | |
import type {SchemaObjCxt} from ".." | |
import type {JSONType, RuleGroup, Rule} from "../rules" | |
export function schemaHasRulesForType( | |
{schema, self}: SchemaObjCxt, | |
type: JSONType | |
): boolean | undefined { | |
const group = self.RULES.types[type] | |
return group && group !== true && shouldUseGroup(schema, group) | |
} | |
export function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean { | |
return group.rules.some((rule) => shouldUseRule(schema, rule)) | |
} | |
export function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined { | |
return ( | |
schema[rule.keyword] !== undefined || | |
rule.definition.implements?.some((kwd) => schema[kwd] !== undefined) | |
) | |
} | |