cloudaxe-opencode/packages/opencode/src/permission/evaluate.ts

12 lines
556 B
TypeScript

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