From 3b6b645d93125a1a88dfe6edc973047f2f44353a Mon Sep 17 00:00:00 2001 From: Heikki Hellgren Date: Fri, 8 Dec 2023 16:42:16 +0200 Subject: [PATCH] feat: add service factory for signal service Signed-off-by: Heikki Hellgren --- plugins/signals-backend/src/plugin.ts | 2 +- plugins/signals-node/api-report.md | 4 ++-- plugins/signals-node/src/SignalService.ts | 4 ++-- plugins/signals-node/src/lib.ts | 26 +++++++++++++++++++---- plugins/signals-node/src/types.ts | 4 ++-- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/plugins/signals-backend/src/plugin.ts b/plugins/signals-backend/src/plugin.ts index b4a0a3e095..8ade4e85b5 100644 --- a/plugins/signals-backend/src/plugin.ts +++ b/plugins/signals-backend/src/plugin.ts @@ -27,7 +27,7 @@ import { signalService } from '@backstage/plugin-signals-node'; * @public */ export const signalsPlugin = createBackendPlugin({ - pluginId: 'devtools', + pluginId: 'signals', register(env) { env.registerInit({ deps: { diff --git a/plugins/signals-node/api-report.md b/plugins/signals-node/api-report.md index 750dd1774a..7bfffc2540 100644 --- a/plugins/signals-node/api-report.md +++ b/plugins/signals-node/api-report.md @@ -12,13 +12,13 @@ import { EventSubscriber } from '@backstage/plugin-events-node'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { IncomingMessage } from 'http'; import { JsonObject } from '@backstage/types'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { ServiceRef } from '@backstage/backend-plugin-api'; // @public (undocumented) export type ServiceOptions = { eventBroker?: EventBroker; - logger: Logger; + logger: LoggerService; identity: IdentityApi; }; diff --git a/plugins/signals-node/src/SignalService.ts b/plugins/signals-node/src/SignalService.ts index 5ae7b63deb..54f09f583a 100644 --- a/plugins/signals-node/src/SignalService.ts +++ b/plugins/signals-node/src/SignalService.ts @@ -18,7 +18,6 @@ import { EventParams, EventSubscriber, } from '@backstage/plugin-events-node'; -import { Logger } from 'winston'; import { ServiceOptions, SignalConnection, @@ -34,6 +33,7 @@ import { IdentityApiGetIdentityRequest, } from '@backstage/plugin-auth-node'; import { Duplex } from 'stream'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export class SignalService implements EventSubscriber { @@ -43,7 +43,7 @@ export class SignalService implements EventSubscriber { SignalConnection >(); private eventBroker?: EventBroker; - private logger: Logger; + private logger: LoggerService; private identity: IdentityApi; private server: WebSocketServer; diff --git a/plugins/signals-node/src/lib.ts b/plugins/signals-node/src/lib.ts index d303b4d3cc..b95d4a9231 100644 --- a/plugins/signals-node/src/lib.ts +++ b/plugins/signals-node/src/lib.ts @@ -13,9 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createServiceRef } from '@backstage/backend-plugin-api'; +import { + coreServices, + createServiceFactory, + createServiceRef, +} from '@backstage/backend-plugin-api'; +import { SignalService } from './SignalService'; /** @public */ -export const signalService = createServiceRef< - import('./SignalService').SignalService ->({ id: 'signals.service', scope: 'plugin' }); +export const signalService = createServiceRef({ + id: 'signals.service', + scope: 'plugin', + defaultFactory: async service => + createServiceFactory({ + service, + deps: { + logger: coreServices.logger, + identity: coreServices.identity, + // TODO: EventBroker + }, + factory({ logger, identity }) { + return SignalService.create({ identity, logger }); + }, + }), +}); diff --git a/plugins/signals-node/src/types.ts b/plugins/signals-node/src/types.ts index 99821f641d..6bfafae0b2 100644 --- a/plugins/signals-node/src/types.ts +++ b/plugins/signals-node/src/types.ts @@ -15,16 +15,16 @@ */ import { IdentityApi } from '@backstage/plugin-auth-node'; import { EventBroker } from '@backstage/plugin-events-node'; -import { Logger } from 'winston'; import { WebSocket } from 'ws'; import { JsonObject } from '@backstage/types'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * @public */ export type ServiceOptions = { eventBroker?: EventBroker; - logger: Logger; + logger: LoggerService; identity: IdentityApi; };