From 015149cffde95f1cdf282841639422975862a510 Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Fri, 19 Apr 2024 09:09:40 +0000 Subject: [PATCH 1/7] fix: added `eventsServiceFactory` to `defaultServiceFactories` Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- packages/backend-defaults/package.json | 29 ++++++++++--------- .../backend-defaults/src/CreateBackend.ts | 2 ++ packages/backend-test-utils/package.json | 1 + .../src/next/services/mockServices.ts | 12 ++++++++ .../src/next/wiring/TestBackend.ts | 1 + plugins/events-node/src/index.ts | 2 +- plugins/events-node/src/service.ts | 29 ++++++++++--------- 7 files changed, 47 insertions(+), 29 deletions(-) diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 8b061b15f4..d2c86e46c8 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,5 +1,6 @@ { "name": "@backstage/backend-defaults", + "version": "0.2.17", "description": "Backend defaults used by Backstage backend apps", "version": "0.2.18-next.0", "main": "src/index.ts", @@ -9,38 +10,38 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "backstage": { - "role": "node-library" - }, + "keywords": [ + "backstage" + ], "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "packages/backend-defaults" }, - "keywords": [ - "backstage" - ], "license": "Apache-2.0", + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], "scripts": { "build": "backstage-cli package build", + "clean": "backstage-cli package clean", "lint": "backstage-cli package lint", - "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "clean": "backstage-cli package clean", - "start": "backstage-cli package start" + "start": "backstage-cli package start", + "test": "backstage-cli package test" }, "dependencies": { "@backstage/backend-app-api": "workspace:^", - "@backstage/backend-common": "workspace:^" + "@backstage/backend-common": "workspace:^", + "@backstage/plugin-events-node": "workspace:^" }, "devDependencies": { "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" - }, - "files": [ - "dist" - ] + } } diff --git a/packages/backend-defaults/src/CreateBackend.ts b/packages/backend-defaults/src/CreateBackend.ts index 5495665dd8..e9bdc03262 100644 --- a/packages/backend-defaults/src/CreateBackend.ts +++ b/packages/backend-defaults/src/CreateBackend.ts @@ -36,6 +36,7 @@ import { httpAuthServiceFactory, userInfoServiceFactory, } from '@backstage/backend-app-api'; +import { eventsServiceFactory } from '@backstage/plugin-events-node'; export const defaultServiceFactories = [ authServiceFactory(), @@ -56,6 +57,7 @@ export const defaultServiceFactories = [ tokenManagerServiceFactory(), userInfoServiceFactory(), urlReaderServiceFactory(), + eventsServiceFactory(), ]; /** diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 1d43e24adf..e252d267da 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -51,6 +51,7 @@ "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-events-node": "workspace:^", "@backstage/types": "workspace:^", "better-sqlite3": "^9.0.0", "cookie": "^0.6.0", diff --git a/packages/backend-test-utils/src/next/services/mockServices.ts b/packages/backend-test-utils/src/next/services/mockServices.ts index a858bf7dbf..05b3ae927c 100644 --- a/packages/backend-test-utils/src/next/services/mockServices.ts +++ b/packages/backend-test-utils/src/next/services/mockServices.ts @@ -52,6 +52,10 @@ import { MockAuthService } from './MockAuthService'; import { MockHttpAuthService } from './MockHttpAuthService'; import { mockCredentials } from './mockCredentials'; import { MockUserInfoService } from './MockUserInfoService'; +import { + eventsServiceFactory, + eventsServiceRef, +} from '@backstage/plugin-events-node'; /** @internal */ function simpleFactory< @@ -397,4 +401,12 @@ export namespace mockServices { search: jest.fn(), })); } + + export namespace events { + export const factory = eventsServiceFactory; + export const mock = simpleMock(eventsServiceRef, () => ({ + publish: jest.fn(), + subscribe: jest.fn(), + })); + } } diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.ts index 10041dce4f..e43353991f 100644 --- a/packages/backend-test-utils/src/next/wiring/TestBackend.ts +++ b/packages/backend-test-utils/src/next/wiring/TestBackend.ts @@ -83,6 +83,7 @@ export const defaultServiceFactories = [ mockServices.tokenManager.factory(), mockServices.userInfo.factory(), mockServices.urlReader.factory(), + mockServices.events.factory(), ]; /** diff --git a/plugins/events-node/src/index.ts b/plugins/events-node/src/index.ts index 2bd93a8aea..643ba7f79e 100644 --- a/plugins/events-node/src/index.ts +++ b/plugins/events-node/src/index.ts @@ -22,4 +22,4 @@ export * from './api'; export * from './deprecated'; -export { eventsServiceRef } from './service'; +export { eventsServiceRef, eventsServiceFactory } from './service'; diff --git a/plugins/events-node/src/service.ts b/plugins/events-node/src/service.ts index e1d3047fca..af0e562c80 100644 --- a/plugins/events-node/src/service.ts +++ b/plugins/events-node/src/service.ts @@ -30,18 +30,19 @@ import { EventsService, DefaultEventsService } from './api'; export const eventsServiceRef = createServiceRef({ id: 'events.service', scope: 'plugin', - defaultFactory: async service => - createServiceFactory({ - service, - deps: { - pluginMetadata: coreServices.pluginMetadata, - rootLogger: coreServices.rootLogger, - }, - async createRootContext({ rootLogger }) { - return DefaultEventsService.create({ logger: rootLogger }); - }, - async factory({ pluginMetadata }, eventsService) { - return eventsService.forPlugin(pluginMetadata.getId()); - }, - }), +}); + +/** @public */ +export const eventsServiceFactory = createServiceFactory({ + service: eventsServiceRef, + deps: { + pluginMetadata: coreServices.pluginMetadata, + rootLogger: coreServices.rootLogger, + }, + async createRootContext({ rootLogger }) { + return DefaultEventsService.create({ logger: rootLogger }); + }, + async factory({ pluginMetadata }, eventsService) { + return eventsService.forPlugin(pluginMetadata.getId()); + }, }); From 7e5a50d446cd9474f3befe3e2ea88ea8e4e14800 Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Fri, 19 Apr 2024 09:12:20 +0000 Subject: [PATCH 2/7] added changeset Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- .changeset/quick-cats-argue.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/quick-cats-argue.md diff --git a/.changeset/quick-cats-argue.md b/.changeset/quick-cats-argue.md new file mode 100644 index 0000000000..956f038f34 --- /dev/null +++ b/.changeset/quick-cats-argue.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-test-utils': patch +'@backstage/backend-defaults': patch +'@backstage/plugin-events-node': patch +--- + +added `eventsServiceFactory` to `defaultServiceFactories` to resolve issue where different instances of the EventsServices could be used From f8b04f61f516b35ec74b44b6d38c4527812b0dc2 Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Fri, 19 Apr 2024 09:15:19 +0000 Subject: [PATCH 3/7] updated yarn.lock Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- yarn.lock | 2 ++ 1 file changed, 2 insertions(+) diff --git a/yarn.lock b/yarn.lock index 3cf5a79175..e4c522b43f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3432,6 +3432,7 @@ __metadata: "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" + "@backstage/plugin-events-node": "workspace:^" languageName: unknown linkType: soft @@ -3550,6 +3551,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-events-node": "workspace:^" "@backstage/types": "workspace:^" "@types/supertest": ^2.0.8 better-sqlite3: ^9.0.0 From 58cc659d9997fa056cf92b64ff6dcbd7483395f6 Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Tue, 30 Apr 2024 09:31:03 +0000 Subject: [PATCH 4/7] Merge remote-tracking branch 'upstream/master' into marley/provide-default-events-factory Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> From 26a2c2bcfbd7f978844a2e9d43cddf71aad27933 Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Tue, 30 Apr 2024 09:35:13 +0000 Subject: [PATCH 5/7] rebase fix Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- packages/backend-defaults/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index d2c86e46c8..acfabf2779 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,10 +1,10 @@ { "name": "@backstage/backend-defaults", - "version": "0.2.17", - "description": "Backend defaults used by Backstage backend apps", "version": "0.2.18-next.0", - "main": "src/index.ts", - "types": "src/index.ts", + "description": "Backend defaults used by Backstage backend apps", + "backstage": { + "role": "node-library" + }, "publishConfig": { "access": "public", "main": "dist/index.cjs.js", From e6d20965104df029822a176fc7586f87fac5733a Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Tue, 30 Apr 2024 09:40:57 +0000 Subject: [PATCH 6/7] rebase fix Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- packages/backend-defaults/package.json | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index acfabf2779..d9ac8dcdb3 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,38 +1,35 @@ { "name": "@backstage/backend-defaults", - "version": "0.2.18-next.0", "description": "Backend defaults used by Backstage backend apps", - "backstage": { - "role": "node-library" - }, + "version": "0.2.18-next.0", + "main": "src/index.ts", + "types": "src/index.ts", "publishConfig": { "access": "public", "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "keywords": [ - "backstage" - ], + "backstage": { + "role": "node-library" + }, "homepage": "https://backstage.io", "repository": { "type": "git", "url": "https://github.com/backstage/backstage", "directory": "packages/backend-defaults" }, - "license": "Apache-2.0", - "main": "src/index.ts", - "types": "src/index.ts", - "files": [ - "dist" + "keywords": [ + "backstage" ], + "license": "Apache-2.0", "scripts": { "build": "backstage-cli package build", - "clean": "backstage-cli package clean", "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "start": "backstage-cli package start", - "test": "backstage-cli package test" + "clean": "backstage-cli package clean", + "start": "backstage-cli package start" }, "dependencies": { "@backstage/backend-app-api": "workspace:^", @@ -43,5 +40,8 @@ "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" - } + }, + "files": [ + "dist" + ] } From c6113b5e787a569736dc82394debe756f84db2a0 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 7 May 2024 11:46:35 +0200 Subject: [PATCH 7/7] chore: added api-reports Signed-off-by: blam --- packages/backend-test-utils/api-report.md | 10 ++++++++++ plugins/events-node/api-report.md | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/packages/backend-test-utils/api-report.md b/packages/backend-test-utils/api-report.md index ff3f50ef8c..4f6eb47243 100644 --- a/packages/backend-test-utils/api-report.md +++ b/packages/backend-test-utils/api-report.md @@ -17,6 +17,7 @@ import { BackstageUserPrincipal } from '@backstage/backend-plugin-api'; import { CacheService } from '@backstage/backend-plugin-api'; import { DatabaseService } from '@backstage/backend-plugin-api'; import { DiscoveryService } from '@backstage/backend-plugin-api'; +import { EventsService } from '@backstage/plugin-events-node'; import { ExtendedHttpServer } from '@backstage/backend-app-api'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { HttpAuthService } from '@backstage/backend-plugin-api'; @@ -183,6 +184,15 @@ export namespace mockServices { partialImpl?: Partial | undefined, ) => ServiceMock; } + // (undocumented) + export namespace events { + const // (undocumented) + factory: () => ServiceFactory; + const // (undocumented) + mock: ( + partialImpl?: Partial | undefined, + ) => ServiceMock; + } export function httpAuth(options?: { pluginId?: string; defaultCredentials?: BackstageCredentials; diff --git a/plugins/events-node/api-report.md b/plugins/events-node/api-report.md index 9574d6c098..46646d2ce8 100644 --- a/plugins/events-node/api-report.md +++ b/plugins/events-node/api-report.md @@ -4,6 +4,7 @@ ```ts import { LoggerService } from '@backstage/backend-plugin-api'; +import { ServiceFactory } from '@backstage/backend-plugin-api'; import { ServiceRef } from '@backstage/backend-plugin-api'; // @public @@ -61,6 +62,12 @@ export interface EventsService { // @public (undocumented) export type EventsServiceEventHandler = (params: EventParams) => Promise; +// @public (undocumented) +export const eventsServiceFactory: () => ServiceFactory< + EventsService, + 'plugin' +>; + // @public export const eventsServiceRef: ServiceRef;