@@ -27,7 +27,7 @@ export interface Roles<TPermission extends Permissions> {
2727export type IamPolicyType <
2828 TPermission extends Permissions ,
2929 TName extends string ,
30- TRoleKey extends string ,
30+ TRoleKey extends string
3131> = {
3232 name : TName
3333 permissions : TPermission
@@ -50,7 +50,7 @@ export type AllPolicyType<TPolicies extends readonly IamPolicyType<Permissions,
5050 : never
5151
5252export type AllPermissionType <
53- TPolicies extends readonly IamPolicyType < Permissions , string , string > [ ] ,
53+ TPolicies extends readonly IamPolicyType < Permissions , string , string > [ ]
5454> = TPolicies extends readonly [ infer TPolicy , ...infer Rest ]
5555 ? TPolicy extends IamPolicyType < Permissions , infer N , string >
5656 ? Rest extends IamPolicyType < Permissions , string , string > [ ]
@@ -70,7 +70,7 @@ export type AllPermissionType<
7070export function createPolicy <
7171 const TPermission extends Permissions ,
7272 TName extends string ,
73- TRoleKey extends string ,
73+ TRoleKey extends string
7474> ( {
7575 name,
7676 permissions,
@@ -93,7 +93,7 @@ export function createIdentity<
9393 TName extends string ,
9494 TRoleKey extends string ,
9595 const TPolicies extends readonly IamPolicyType < TPermissions , TName , TRoleKey > [ ] ,
96- TRole extends string ,
96+ TRole extends string
9797> ( {
9898 identities,
9999 policies,
@@ -150,5 +150,10 @@ export function createIdentity<
150150 } )
151151 }
152152
153- return { identities : identityList , allPermissions, enforce }
153+ const isValidIdentity = ( identity : unknown ) : identity is TRole => {
154+ if ( typeof identity !== 'string' ) return false
155+ return identity in table
156+ }
157+
158+ return { identities : identityList , allPermissions, enforce, isValidIdentity }
154159}
0 commit comments