summaryrefslogtreecommitdiffhomepage
path: root/packages/core/src/permission/index.ts
blob: bf6efafc0611db22e3a3dfdb0ada414acf35ed2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
export interface PermissionRule {
	permission: string;
	pattern: string;
	action: "allow" | "deny" | "ask";
}

export type Ruleset = PermissionRule[];

export type PermissionReply = "once" | "always" | "reject";

export interface PermissionRequest {
	permission: string;
	patterns: string[];
	always: string[];
	description: string;
	metadata: Record<string, unknown>;
}

export interface PermissionChecker {
	ask(request: PermissionRequest, rulesets: Ruleset[]): Promise<PermissionReply>;
	getPending(): Array<{ id: string; request: PermissionRequest }>;
}

export { evaluate } from "./evaluate.js";
export { PermissionService } from "./service.js";
export { Wildcard } from "./wildcard.js";