permission-node: improve api report for createPermissionIntegrationRouter

Co-authored-by: Harry Hogg <hhogg@spotify.com>
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
Vincenzo Scamporlino
2023-02-14 17:22:17 +01:00
parent afdb225025
commit dbf36da3eb
2 changed files with 40 additions and 30 deletions
@@ -170,6 +170,40 @@ const applyConditions = <TResourceType extends string, TResource>(
return rule.apply(resource, criteria.params ?? {});
};
/**
* Options for creating a permission integration router specific
* for a particular resource type.
*
* @public
*/
export type CreatePermissionIntegrationRouterResourceOptions<
TResourceType extends string,
TResource,
> = {
resourceType: TResourceType;
permissions?: Array<Permission>;
// Do not infer value of TResourceType from supplied rules.
// instead only consider the resourceType parameter, and
// consider any rules whose resource type does not match
// to be an error.
rules: PermissionRule<TResource, any, NoInfer<TResourceType>>[];
getResources: GetResourcesFn<TResource>;
};
/**
* Options for creating a permission integration router.
*
* @public
*/
export type CreatePermissionIntegrationRouterOptions<
TResourceType extends string,
TResource,
> =
| {
permissions: Array<Permission>;
}
| CreatePermissionIntegrationRouterResourceOptions<TResourceType, TResource>;
/**
* Create an express Router which provides an authorization route to allow
* integration between the permission backend and other Backstage backend
@@ -205,30 +239,6 @@ const applyConditions = <TResourceType extends string, TResource>(
*
* @public
*/
type CreatePermissionIntegrationRouterResourceOptions<
TResourceType extends string,
TResource,
> = {
resourceType: TResourceType;
permissions?: Array<Permission>;
// Do not infer value of TResourceType from supplied rules.
// instead only consider the resourceType parameter, and
// consider any rules whose resource type does not match
// to be an error.
rules: PermissionRule<TResource, any, NoInfer<TResourceType>>[];
getResources: GetResourcesFn<TResource>;
};
type CreatePermissionIntegrationRouterOptions<
TResourceType extends string,
TResource,
> =
| {
permissions: Array<Permission>;
}
| CreatePermissionIntegrationRouterResourceOptions<TResourceType, TResource>;
export const createPermissionIntegrationRouter = <
TResourceType extends string,
TResource,