From b594679ae321db708cc01175a7031e74f9c5d192 Mon Sep 17 00:00:00 2001 From: Patrick Jungermann Date: Mon, 16 May 2022 18:27:29 +0200 Subject: [PATCH] feat: support array as arg for `CatalogBuilder.addEntityProvider` and others Allows to use e.g. ``` builder.addEntityProvider(getArrayOfProviders()); ``` instead of ``` builder.addEntityProvider(...getArrayOfProviders()); ``` Signed-off-by: Patrick Jungermann --- .changeset/slimy-elephants-attend.md | 15 +++++++++++ docs/integrations/aws-s3/discovery.md | 2 +- docs/integrations/gerrit/discovery.md | 2 +- plugins/catalog-backend/api-report.md | 18 ++++++++++--- .../src/service/CatalogBuilder.ts | 26 +++++++++++++------ 5 files changed, 49 insertions(+), 14 deletions(-) create mode 100644 .changeset/slimy-elephants-attend.md diff --git a/.changeset/slimy-elephants-attend.md b/.changeset/slimy-elephants-attend.md new file mode 100644 index 0000000000..4add8f18a3 --- /dev/null +++ b/.changeset/slimy-elephants-attend.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Allow array as non-spread arguments at the `CatalogBuilder`. + +```typescript +builder.addEntityProvider(...getArrayOfProviders()); +``` + +can be simplified to + +```typescript +builder.addEntityProvider(getArrayOfProviders()); +``` diff --git a/docs/integrations/aws-s3/discovery.md b/docs/integrations/aws-s3/discovery.md index 5091b4057b..40739937a4 100644 --- a/docs/integrations/aws-s3/discovery.md +++ b/docs/integrations/aws-s3/discovery.md @@ -67,7 +67,7 @@ import { AwsS3EntityProvider } from '@backstage/plugin-catalog-backend-module-aw const builder = await CatalogBuilder.create(env); /** ... other processors and/or providers ... */ builder.addEntityProvider( - ...AwsS3EntityProvider.fromConfig(env.config, { + AwsS3EntityProvider.fromConfig(env.config, { logger: env.logger, schedule: env.scheduler.createScheduledTaskRunner({ frequency: { minutes: 30 }, diff --git a/docs/integrations/gerrit/discovery.md b/docs/integrations/gerrit/discovery.md index b801f7b77a..04fa3dac2a 100644 --- a/docs/integrations/gerrit/discovery.md +++ b/docs/integrations/gerrit/discovery.md @@ -30,7 +30,7 @@ import { Duration } from 'luxon'; const builder = await CatalogBuilder.create(env); /** ... other processors and/or providers ... */ builder.addEntityProvider( - ...GerritEntityProvider.fromConfig(env.config, { + GerritEntityProvider.fromConfig(env.config, { logger: env.logger, schedule: env.scheduler.createScheduledTaskRunner({ frequency: { minutes: 30 }, diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index a770d6289e..cb8a5abb8a 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -110,11 +110,21 @@ export class BuiltinKindsEntityProcessor implements CatalogProcessor { // @public export class CatalogBuilder { - addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder; - addEntityProvider(...providers: EntityProvider[]): CatalogBuilder; + addEntityPolicy( + ...policies: Array> + ): CatalogBuilder; + addEntityProvider( + ...providers: Array> + ): CatalogBuilder; // @alpha - addPermissionRules(...permissionRules: CatalogPermissionRule[]): void; - addProcessor(...processors: CatalogProcessor[]): CatalogBuilder; + addPermissionRules( + ...permissionRules: Array< + CatalogPermissionRule | Array + > + ): void; + addProcessor( + ...processors: Array> + ): CatalogBuilder; build(): Promise<{ processingEngine: CatalogProcessingEngine; router: Router; diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index 57508615ac..0d4ddc8e71 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -172,8 +172,10 @@ export class CatalogBuilder { * * @param policies - One or more policies */ - addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder { - this.entityPolicies.push(...policies); + addEntityPolicy( + ...policies: Array> + ): CatalogBuilder { + this.entityPolicies.push(...policies.flat()); return this; } @@ -268,8 +270,10 @@ export class CatalogBuilder { * * @param providers - One or more entity providers */ - addEntityProvider(...providers: EntityProvider[]): CatalogBuilder { - this.entityProviders.push(...providers); + addEntityProvider( + ...providers: Array> + ): CatalogBuilder { + this.entityProviders.push(...providers.flat()); return this; } @@ -279,8 +283,10 @@ export class CatalogBuilder { * * @param processors - One or more processors */ - addProcessor(...processors: CatalogProcessor[]): CatalogBuilder { - this.processors.push(...processors); + addProcessor( + ...processors: Array> + ): CatalogBuilder { + this.processors.push(...processors.flat()); return this; } @@ -341,8 +347,12 @@ export class CatalogBuilder { * @param permissionRules - Additional permission rules * @alpha */ - addPermissionRules(...permissionRules: CatalogPermissionRule[]) { - this.permissionRules.push(...permissionRules); + addPermissionRules( + ...permissionRules: Array< + CatalogPermissionRule | Array + > + ) { + this.permissionRules.push(...permissionRules.flat()); } /**