import { Wildcard } from "@/util/wildcard" type Rule = { permission: string pattern: string action: "allow" | "deny" | "ask" } export function evaluate(permission: string, pattern: string, ...rulesets: Rule[][]): Rule { const rules = rulesets.flat() const match = rules.findLast( (rule) => Wildcard.match(permission, rule.permission) && Wildcard.match(pattern, rule.pattern), ) return match ?? { action: "ask", permission, pattern: "*" } }