17 lines
600 B
TypeScript
17 lines
600 B
TypeScript
export * as Permission from "./permission"
|
|
|
|
import { Schema } from "effect"
|
|
|
|
export const Effect = Schema.Literals(["allow", "deny", "ask"]).annotate({ identifier: "PermissionV2.Effect" })
|
|
export type Effect = typeof Effect.Type
|
|
|
|
export interface Rule extends Schema.Schema.Type<typeof Rule> {}
|
|
export const Rule = Schema.Struct({
|
|
action: Schema.String,
|
|
resource: Schema.String,
|
|
effect: Effect,
|
|
}).annotate({ identifier: "PermissionV2.Rule" })
|
|
|
|
export const Ruleset = Schema.mutable(Schema.Array(Rule)).annotate({ identifier: "PermissionV2.Ruleset" })
|
|
export type Ruleset = typeof Ruleset.Type
|