@@ -2,6 +2,7 @@ import { FastifyRequest } from "fastify";
22import { hostRestrictionPolicy } from "./events.js" ;
33import { z } from "zod" ;
44import { AuthorizationPolicyResult } from "./evaluator.js" ;
5+
56type Policy < TParamsSchema extends z . ZodObject < any > > = {
67 name : string ;
78 paramsSchema : TParamsSchema ;
@@ -11,10 +12,8 @@ type Policy<TParamsSchema extends z.ZodObject<any>> = {
1112 ) => AuthorizationPolicyResult ;
1213} ;
1314
14- // Type to get parameters type from a policy
1515type PolicyParams < T > = T extends Policy < infer U > ? z . infer < U > : never ;
1616
17- // Type for a registry of policies
1817type PolicyRegistry = {
1918 [ key : string ] : Policy < any > ;
2019} ;
@@ -27,16 +26,15 @@ type TypedPolicyRegistry<T extends PolicyRegistry> = {
2726 } ;
2827} ;
2928
29+ export const AuthorizationPoliciesRegistry : PolicyRegistry = {
30+ EventsHostRestrictionPolicy : hostRestrictionPolicy ,
31+ } as const ;
32+
3033export type AvailableAuthorizationPolicies = TypedPolicyRegistry <
3134 typeof AuthorizationPoliciesRegistry
3235> ;
33- export const AuthorizationPoliciesRegistry = {
34- EventsHostRestrictionPolicy : hostRestrictionPolicy ,
35- } as const ;
3636
3737export type AvailableAuthorizationPolicy = {
38- [ K in keyof typeof AuthorizationPoliciesRegistry ] : {
39- name : K ;
40- params : PolicyParams < ( typeof AuthorizationPoliciesRegistry ) [ K ] > ;
41- } ;
42- } [ keyof typeof AuthorizationPoliciesRegistry ] ;
38+ name : keyof typeof AuthorizationPoliciesRegistry ;
39+ params : PolicyParams < typeof AuthorizationPoliciesRegistry [ keyof typeof AuthorizationPoliciesRegistry ] > ;
40+ } ;
0 commit comments