Updated scaffolder-backend api-reports

Signed-off-by: Harry Hogg <hhogg@spotify.com>
This commit is contained in:
Harry Hogg
2023-02-03 13:10:50 +00:00
committed by Vincenzo Scamporlino
parent aac120c30d
commit 3c2d54e9fb
2 changed files with 74 additions and 5 deletions
+32
View File
@@ -9,6 +9,8 @@ import { ActionContext as ActionContext_2 } from '@backstage/plugin-scaffolder-n
import { CatalogApi } from '@backstage/catalog-client';
import { CatalogProcessor } from '@backstage/plugin-catalog-node';
import { CatalogProcessorEmit } from '@backstage/plugin-catalog-node';
import { ConditionalPolicyDecision } from '@backstage/plugin-permission-common';
import { Conditions } from '@backstage/plugin-permission-node';
import { Config } from '@backstage/config';
import { createPullRequest } from 'octokit-plugin-create-pull-request';
import { Duration } from 'luxon';
@@ -24,8 +26,14 @@ import { LocationSpec } from '@backstage/plugin-catalog-common';
import { Logger } from 'winston';
import { Observable } from '@backstage/types';
import { Octokit } from 'octokit';
import { PermissionCondition } from '@backstage/plugin-permission-common';
import { PermissionCriteria } from '@backstage/plugin-permission-common';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { PermissionRule } from '@backstage/plugin-permission-node';
import { PermissionRuleParams } from '@backstage/plugin-permission-common';
import { PluginDatabaseManager } from '@backstage/backend-common';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { ResourcePermission } from '@backstage/plugin-permission-common';
import { Schema } from 'jsonschema';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { ScmIntegrations } from '@backstage/integration';
@@ -35,6 +43,8 @@ import { TaskSpec } from '@backstage/plugin-scaffolder-common';
import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common';
import { TemplateAction as TemplateAction_2 } from '@backstage/plugin-scaffolder-node';
import { TemplateActionOptions } from '@backstage/plugin-scaffolder-node';
import { TemplateEntityStepV1beta3 } from '@backstage/plugin-scaffolder-common';
import { TemplateParameter } from '@backstage/plugin-scaffolder-common';
import { UrlReader } from '@backstage/backend-common';
import { Writable } from 'stream';
import { ZodType } from 'zod';
@@ -518,6 +528,14 @@ export const createPublishGitlabMergeRequestAction: (options: {
// @public
export function createRouter(options: RouterOptions): Promise<express.Router>;
// @alpha
export const createScaffolderConditionalDecision: (
permission: ResourcePermission<'scaffolder-template'>,
conditions: PermissionCriteria<
PermissionCondition<'scaffolder-template', PermissionRuleParams>
>,
) => ConditionalPolicyDecision;
// @public @deprecated (undocumented)
export const createTemplateAction: <
TParams,
@@ -656,6 +674,8 @@ export interface RouterOptions {
// (undocumented)
logger: Logger;
// (undocumented)
permissionApi: PermissionEvaluator;
// (undocumented)
reader: UrlReader;
// (undocumented)
scheduler?: PluginTaskScheduler;
@@ -673,6 +693,18 @@ export type RunCommandOptions = {
logStream?: Writable;
};
// @alpha
export const scaffolderConditions: Conditions<{
hasTag: PermissionRule<
TemplateParameter | TemplateEntityStepV1beta3,
{},
'scaffolder-template',
{
tag: string;
}
>;
}>;
// @public (undocumented)
export class ScaffolderEntitiesProcessor implements CatalogProcessor {
// (undocumented)
@@ -18,13 +18,50 @@ import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE } from '@backstage/plugin-scaffolder-
import { createConditionExports } from '@backstage/plugin-permission-node';
import { scaffolderStepRules } from './rules';
const {
conditions: scaffolderConditions,
createConditionalDecision: createScaffolderConditionalDecision,
} = createConditionExports({
const { conditions, createConditionalDecision } = createConditionExports({
pluginId: 'scaffolder',
resourceType: RESOURCE_TYPE_SCAFFOLDER_TEMPLATE,
rules: scaffolderStepRules,
});
export { scaffolderConditions, createScaffolderConditionalDecision };
/**
* These conditions are used when creating conditional decisions for scaffolder
* templates that are returned by authorization policies.
*
* @alpha
*/
export const scaffolderConditions = conditions;
/**
* `createScaffolderConditionalDecision` can be used when authoring policies to
* create conditional decisions. It requires a permission of type
* `ResourcePermission<'scaffolder-template'>` to be passed as the first parameter.
* It's recommended that you use the provided `isResourcePermission` and
* `isPermission` helper methods to narrow the type of the permission passed to
* the handle method as shown below.
*
* ```
* // MyAuthorizationPolicy.ts
* ...
* import { createScaffolderPolicyDecision } from '@backstage/plugin-scaffolder-backend';
* import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE } from '@backstage/plugin-scaffolder-common';
*
* class MyAuthorizationPolicy implements PermissionPolicy {
* async handle(request, user) {
* ...
*
* if (isResourcePermission(request.permission, RESOURCE_TYPE_SCAFFOLDER_TEMPLATE)) {
* return createScaffolderConditionalDecision(
* request.permission,
* { anyOf: [...insert conditions here...] }
* );
* }
*
* ...
* }
*
* ```
*
* @alpha
*/
export const createScaffolderConditionalDecision = createConditionalDecision;