From 01a318f75d978f793c086a25738561c12af10ecf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 11 Jan 2023 14:59:33 +0100 Subject: [PATCH] updates to use new option factory callback pattern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: blam Co-authored-by: Johan Haals Signed-off-by: Patrik Oldsberg --- .../httpRouter/httpRouterFactory.ts | 40 +++--- .../src/wiring/ServiceRegistry.test.ts | 2 +- plugins/app-backend/src/service/appPlugin.ts | 6 +- ...talIngestionEntityProviderCatalogModule.ts | 85 ++++++------ .../src/ScaffolderPlugin.ts | 128 +++++++++--------- 5 files changed, 132 insertions(+), 129 deletions(-) diff --git a/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.ts b/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.ts index f1fc089ea3..8787b1ad9e 100644 --- a/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.ts +++ b/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.ts @@ -23,30 +23,32 @@ import { Handler } from 'express'; /** * @public */ -export type HttpRouterFactoryOptions = { +export interface HttpRouterFactoryOptions { /** * A callback used to generate the path for each plugin, defaults to `/api/{pluginId}`. */ getPath(pluginId: string): string; -}; +} /** @public */ -export const httpRouterFactory = createServiceFactory({ - service: coreServices.httpRouter, - deps: { - plugin: coreServices.pluginMetadata, - rootHttpRouter: coreServices.rootHttpRouter, - }, - async factory({ rootHttpRouter }, options?: HttpRouterFactoryOptions) { - const getPath = options?.getPath ?? (id => `/api/${id}`); +export const httpRouterFactory = createServiceFactory( + (options?: HttpRouterFactoryOptions) => ({ + service: coreServices.httpRouter, + deps: { + plugin: coreServices.pluginMetadata, + rootHttpRouter: coreServices.rootHttpRouter, + }, + async factory({ rootHttpRouter }) { + const getPath = options?.getPath ?? (id => `/api/${id}`); - return async ({ plugin }) => { - const path = getPath(plugin.getId()); - return { - use(handler: Handler) { - rootHttpRouter.use(path, handler); - }, + return async ({ plugin }) => { + const path = getPath(plugin.getId()); + return { + use(handler: Handler) { + rootHttpRouter.use(path, handler); + }, + }; }; - }; - }, -}); + }, + }), +); diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts index 9348f59d64..405a2fc630 100644 --- a/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts @@ -143,7 +143,7 @@ describe('ServiceRegistry', () => { const factory = createServiceFactory({ service: ref1, deps: { rootDep: ref2 }, - async factory({ rootDep }) { + factory: async ({ rootDep }) => { return async () => ({ x: rootDep.x }); }, }); diff --git a/plugins/app-backend/src/service/appPlugin.ts b/plugins/app-backend/src/service/appPlugin.ts index 2c0c73c71b..b12a8d6877 100644 --- a/plugins/app-backend/src/service/appPlugin.ts +++ b/plugins/app-backend/src/service/appPlugin.ts @@ -70,9 +70,9 @@ export type AppPluginOptions = { * The App plugin is responsible for serving the frontend app bundle and static assets. * @alpha */ -export const appPlugin = createBackendPlugin({ +export const appPlugin = createBackendPlugin((options: AppPluginOptions) => ({ id: 'app', - register(env, options: AppPluginOptions) { + register(env) { env.registerInit({ deps: { logger: coreServices.logger, @@ -101,4 +101,4 @@ export const appPlugin = createBackendPlugin({ }, }); }, -}); +})); diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts index 0ecb45292c..b173b2d2ef 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts @@ -31,51 +31,50 @@ import { WrapperProviders } from './WrapperProviders'; * @alpha */ export const incrementalIngestionEntityProviderCatalogModule = - createBackendModule({ - pluginId: 'catalog', - moduleId: 'incrementalIngestionEntityProvider', - register( - env, - options: { - providers: Array<{ - provider: IncrementalEntityProvider; - options: IncrementalEntityProviderOptions; - }>; - }, - ) { - env.registerInit({ - deps: { - catalog: catalogProcessingExtensionPoint, - config: coreServices.config, - database: coreServices.database, - httpRouter: coreServices.httpRouter, - logger: coreServices.logger, - scheduler: coreServices.scheduler, - }, - async init({ - catalog, - config, - database, - httpRouter, - logger, - scheduler, - }) { - const client = await database.getClient(); - - const providers = new WrapperProviders({ + createBackendModule( + (options: { + providers: Array<{ + provider: IncrementalEntityProvider; + options: IncrementalEntityProviderOptions; + }>; + }) => ({ + pluginId: 'catalog', + moduleId: 'incrementalIngestionEntityProvider', + register(env) { + env.registerInit({ + deps: { + catalog: catalogProcessingExtensionPoint, + config: coreServices.config, + database: coreServices.database, + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + scheduler: coreServices.scheduler, + }, + async init({ + catalog, config, + database, + httpRouter, logger, - client, scheduler, - }); + }) { + const client = await database.getClient(); - for (const entry of options.providers) { - const wrapped = providers.wrap(entry.provider, entry.options); - catalog.addEntityProvider(wrapped); - } + const providers = new WrapperProviders({ + config, + logger, + client, + scheduler, + }); - httpRouter.use(await providers.adminRouter()); - }, - }); - }, - }); + for (const entry of options.providers) { + const wrapped = providers.wrap(entry.provider, entry.options); + catalog.addEntityProvider(wrapped); + } + + httpRouter.use(await providers.adminRouter()); + }, + }); + }, + }), + ); diff --git a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts index 5d4c16e2dc..71472abda6 100644 --- a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts +++ b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts @@ -70,72 +70,74 @@ export const scaffolderActionsExtensionPoint = * Catalog plugin * @alpha */ -export const scaffolderPlugin = createBackendPlugin({ - id: 'scaffolder', - register(env, options: ScaffolderPluginOptions) { - const actionsExtensions = new ScaffolderActionsExtensionPointImpl(); - env.registerExtensionPoint( - scaffolderActionsExtensionPoint, - actionsExtensions, - ); +export const scaffolderPlugin = createBackendPlugin( + (options: ScaffolderPluginOptions) => ({ + id: 'scaffolder', + register(env) { + const actionsExtensions = new ScaffolderActionsExtensionPointImpl(); + env.registerExtensionPoint( + scaffolderActionsExtensionPoint, + actionsExtensions, + ); - env.registerInit({ - deps: { - logger: coreServices.logger, - config: coreServices.config, - reader: coreServices.urlReader, - permissions: coreServices.permissions, - database: coreServices.database, - httpRouter: coreServices.httpRouter, - catalogClient: catalogServiceRef, - }, - async init({ - logger, - config, - reader, - database, - httpRouter, - catalogClient, - }) { - const { - additionalTemplateFilters, - taskBroker, - taskWorkers, - additionalTemplateGlobals, - } = options; - const log = loggerToWinstonLogger(logger); + env.registerInit({ + deps: { + logger: coreServices.logger, + config: coreServices.config, + reader: coreServices.urlReader, + permissions: coreServices.permissions, + database: coreServices.database, + httpRouter: coreServices.httpRouter, + catalogClient: catalogServiceRef, + }, + async init({ + logger, + config, + reader, + database, + httpRouter, + catalogClient, + }) { + const { + additionalTemplateFilters, + taskBroker, + taskWorkers, + additionalTemplateGlobals, + } = options; + const log = loggerToWinstonLogger(logger); - const actions = options.actions || [ - ...actionsExtensions.actions, - ...createBuiltinActions({ - integrations: ScmIntegrations.fromConfig(config), + const actions = options.actions || [ + ...actionsExtensions.actions, + ...createBuiltinActions({ + integrations: ScmIntegrations.fromConfig(config), + catalogClient, + reader, + config, + additionalTemplateFilters, + additionalTemplateGlobals, + }), + ]; + + const actionIds = actions.map(action => action.id).join(', '); + log.info( + `Starting scaffolder with the following actions enabled ${actionIds}`, + ); + + const router = await createRouter({ + logger: log, + config, + database, catalogClient, reader, - config, + actions, + taskBroker, + taskWorkers, additionalTemplateFilters, additionalTemplateGlobals, - }), - ]; - - const actionIds = actions.map(action => action.id).join(', '); - log.info( - `Starting scaffolder with the following actions enabled ${actionIds}`, - ); - - const router = await createRouter({ - logger: log, - config, - database, - catalogClient, - reader, - actions, - taskBroker, - taskWorkers, - additionalTemplateFilters, - additionalTemplateGlobals, - }); - httpRouter.use(router); - }, - }); - }, -}); + }); + httpRouter.use(router); + }, + }); + }, + }), +);