feat: define housekeeping foundation contracts

This commit is contained in:
Simo committed 2026-08-25 19:06:23 +02:00
1 parent 3b3d7780c9
commit 7d62a04f0e
10 files changed
+338

No files matched your search

@@ -0,0 +1,36 @@
export type CapabilityRequirement =
| { mode: "all"; slugs: readonly string[] }
| { mode: "any"; slugs: readonly string[] };
export interface HousekeepingActor {
id: number;
username: string;
rank: number;
}
export interface HousekeepingCapabilityContext {
actor: HousekeepingActor;
isSuperAdmin: boolean;
has(slug: string): boolean;
hasAny(...slugs: string[]): boolean;
hasAll(...slugs: string[]): boolean;
}
function createCapabilityRequirement(
mode: CapabilityRequirement["mode"],
slugs: readonly string[],
): CapabilityRequirement {
if (slugs.length === 0) {
throw new Error("capability requirement is empty");
}
return { mode, slugs };
}
export function anyCapability(...slugs: string[]): CapabilityRequirement {
return createCapabilityRequirement("any", slugs);
}
export function allCapabilities(...slugs: string[]): CapabilityRequirement {
return createCapabilityRequirement("all", slugs);
}