From b8a14b3023f865266648a69759b68706e09edd78 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 13 Jan 2023 16:16:26 +0100 Subject: [PATCH] update usages of createServiceFactory Co-authored-by: blam Signed-off-by: Patrik Oldsberg --- .../implementations/cache/cacheFactory.ts | 10 +++--- .../database/databaseFactory.ts | 11 +++--- .../discovery/discoveryFactory.ts | 10 +++--- .../httpRouter/httpRouterFactory.test.ts | 34 +++++++++++++++---- .../httpRouter/httpRouterFactory.ts | 15 ++++---- .../identity/identityFactory.ts | 24 ++++++------- .../lifecycle/lifecycleFactory.ts | 20 +++++------ .../implementations/logger/loggerFactory.ts | 6 ++-- .../permissions/permissionsFactory.ts | 12 +++---- .../scheduler/schedulerFactory.ts | 14 ++++---- .../tokenManager/tokenManagerFactory.ts | 2 +- .../urlReader/urlReaderFactory.ts | 12 +++---- .../wiring/createSpecializedBackend.test.ts | 2 +- .../src/CreateBackend.test.ts | 2 +- .../src/services/system/index.ts | 3 +- .../mockTokenManagerService.ts | 4 +-- .../src/next/wiring/TestBackend.test.ts | 2 +- .../src/next/wiring/TestBackend.ts | 8 ++--- plugins/catalog-node/src/catalogService.ts | 6 ++-- 19 files changed, 101 insertions(+), 96 deletions(-) diff --git a/packages/backend-app-api/src/services/implementations/cache/cacheFactory.ts b/packages/backend-app-api/src/services/implementations/cache/cacheFactory.ts index df4a782a46..426a890c00 100644 --- a/packages/backend-app-api/src/services/implementations/cache/cacheFactory.ts +++ b/packages/backend-app-api/src/services/implementations/cache/cacheFactory.ts @@ -27,10 +27,10 @@ export const cacheFactory = createServiceFactory({ config: coreServices.config, plugin: coreServices.pluginMetadata, }, - async factory({ config }) { - const cacheManager = CacheManager.fromConfig(config); - return async ({ plugin }) => { - return cacheManager.forPlugin(plugin.getId()); - }; + async createRootContext({ config }) { + return CacheManager.fromConfig(config); + }, + async factory({ plugin }, manager) { + return manager.forPlugin(plugin.getId()); }, }); diff --git a/packages/backend-app-api/src/services/implementations/database/databaseFactory.ts b/packages/backend-app-api/src/services/implementations/database/databaseFactory.ts index 52cecdbc4d..8baf84cb69 100644 --- a/packages/backend-app-api/src/services/implementations/database/databaseFactory.ts +++ b/packages/backend-app-api/src/services/implementations/database/databaseFactory.ts @@ -28,8 +28,8 @@ export const databaseFactory = createServiceFactory({ config: coreServices.config, plugin: coreServices.pluginMetadata, }, - async factory({ config }) { - const databaseManager = config.getOptional('backend.database') + async createRootContext({ config }) { + return config.getOptional('backend.database') ? DatabaseManager.fromConfig(config) : DatabaseManager.fromConfig( new ConfigReader({ @@ -38,9 +38,8 @@ export const databaseFactory = createServiceFactory({ }, }), ); - - return async ({ plugin }) => { - return databaseManager.forPlugin(plugin.getId()); - }; + }, + async factory({ plugin }, databaseManager) { + return databaseManager.forPlugin(plugin.getId()); }, }); diff --git a/packages/backend-app-api/src/services/implementations/discovery/discoveryFactory.ts b/packages/backend-app-api/src/services/implementations/discovery/discoveryFactory.ts index 0c04ec6bf0..131bf1d697 100644 --- a/packages/backend-app-api/src/services/implementations/discovery/discoveryFactory.ts +++ b/packages/backend-app-api/src/services/implementations/discovery/discoveryFactory.ts @@ -26,10 +26,10 @@ export const discoveryFactory = createServiceFactory({ deps: { config: coreServices.config, }, - async factory({ config }) { - const discovery = SingleHostDiscovery.fromConfig(config); - return async () => { - return discovery; - }; + async createRootContext({ config }) { + return SingleHostDiscovery.fromConfig(config); + }, + async factory(_, discovery) { + return discovery; }, }); diff --git a/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.test.ts b/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.test.ts index 7717f4116e..150bd628f5 100644 --- a/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.test.ts +++ b/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.test.ts @@ -27,16 +27,27 @@ describe('httpRouterFactory', () => { ServiceFactory, { scope: 'root' } >; - const innerFactory = await factory.factory({ rootHttpRouter }); const handler1 = () => {}; - const router1 = await innerFactory({ plugin: { getId: () => 'test1' } }); + const router1 = await factory.factory( + { + rootHttpRouter, + plugin: { getId: () => 'test1' }, + }, + undefined, + ); router1.use(handler1); expect(rootHttpRouter.use).toHaveBeenCalledTimes(1); expect(rootHttpRouter.use).toHaveBeenCalledWith('/api/test1', handler1); const handler2 = () => {}; - const router2 = await innerFactory({ plugin: { getId: () => 'test2' } }); + const router2 = await factory.factory( + { + rootHttpRouter, + plugin: { getId: () => 'test2' }, + }, + undefined, + ); router2.use(handler2); expect(rootHttpRouter.use).toHaveBeenCalledTimes(2); expect(rootHttpRouter.use).toHaveBeenCalledWith('/api/test2', handler2); @@ -47,10 +58,15 @@ describe('httpRouterFactory', () => { const factory = httpRouterFactory({ getPath: id => `/some/${id}/path`, }) as Exclude, { scope: 'root' }>; - const innerFactory = await factory.factory({ rootHttpRouter }); const handler1 = () => {}; - const router1 = await innerFactory({ plugin: { getId: () => 'test1' } }); + const router1 = await factory.factory( + { + rootHttpRouter, + plugin: { getId: () => 'test1' }, + }, + undefined, + ); router1.use(handler1); expect(rootHttpRouter.use).toHaveBeenCalledTimes(1); expect(rootHttpRouter.use).toHaveBeenCalledWith( @@ -59,7 +75,13 @@ describe('httpRouterFactory', () => { ); const handler2 = () => {}; - const router2 = await innerFactory({ plugin: { getId: () => 'test2' } }); + const router2 = await factory.factory( + { + rootHttpRouter, + plugin: { getId: () => 'test2' }, + }, + undefined, + ); router2.use(handler2); expect(rootHttpRouter.use).toHaveBeenCalledTimes(2); expect(rootHttpRouter.use).toHaveBeenCalledWith( 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 8787b1ad9e..1d52af3b76 100644 --- a/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.ts +++ b/packages/backend-app-api/src/services/implementations/httpRouter/httpRouterFactory.ts @@ -38,16 +38,13 @@ export const httpRouterFactory = createServiceFactory( plugin: coreServices.pluginMetadata, rootHttpRouter: coreServices.rootHttpRouter, }, - async factory({ rootHttpRouter }) { + async factory({ plugin, rootHttpRouter }) { const getPath = options?.getPath ?? (id => `/api/${id}`); - - return async ({ plugin }) => { - const path = getPath(plugin.getId()); - return { - use(handler: Handler) { - rootHttpRouter.use(path, handler); - }, - }; + const path = getPath(plugin.getId()); + return { + use(handler: Handler) { + rootHttpRouter.use(path, handler); + }, }; }, }), diff --git a/packages/backend-app-api/src/services/implementations/identity/identityFactory.ts b/packages/backend-app-api/src/services/implementations/identity/identityFactory.ts index f554927930..0531c35480 100644 --- a/packages/backend-app-api/src/services/implementations/identity/identityFactory.ts +++ b/packages/backend-app-api/src/services/implementations/identity/identityFactory.ts @@ -34,17 +34,17 @@ export type IdentityFactoryOptions = { }; /** @public */ -export const identityFactory = createServiceFactory({ - service: coreServices.identity, - deps: { - config: coreServices.config, - discovery: coreServices.discovery, - tokenManager: coreServices.tokenManager, - }, +export const identityFactory = createServiceFactory( + (options?: IdentityFactoryOptions) => ({ + service: coreServices.identity, + deps: { + config: coreServices.config, + discovery: coreServices.discovery, + tokenManager: coreServices.tokenManager, + }, - async factory({}, options?: IdentityFactoryOptions) { - return async ({ discovery }) => { + async factory({ discovery }) { return DefaultIdentityClient.create({ discovery, ...options }); - }; - }, -}); + }, + }), +); diff --git a/packages/backend-app-api/src/services/implementations/lifecycle/lifecycleFactory.ts b/packages/backend-app-api/src/services/implementations/lifecycle/lifecycleFactory.ts index 632abd238c..b2f3a9f70b 100644 --- a/packages/backend-app-api/src/services/implementations/lifecycle/lifecycleFactory.ts +++ b/packages/backend-app-api/src/services/implementations/lifecycle/lifecycleFactory.ts @@ -29,18 +29,16 @@ export const lifecycleFactory = createServiceFactory({ rootLifecycle: coreServices.rootLifecycle, pluginMetadata: coreServices.pluginMetadata, }, - async factory({ rootLifecycle }) { - return async ({ logger, pluginMetadata }) => { - const plugin = pluginMetadata.getId(); - return { - addShutdownHook(options: LifecycleServiceShutdownHook): void { - rootLifecycle.addShutdownHook({ - ...options, + async factory({ rootLifecycle, logger, pluginMetadata }) { + const plugin = pluginMetadata.getId(); + return { + addShutdownHook(options: LifecycleServiceShutdownHook): void { + rootLifecycle.addShutdownHook({ + ...options, - logger: options.logger?.child({ plugin }) ?? logger, - }); - }, - }; + logger: options.logger?.child({ plugin }) ?? logger, + }); + }, }; }, }); diff --git a/packages/backend-app-api/src/services/implementations/logger/loggerFactory.ts b/packages/backend-app-api/src/services/implementations/logger/loggerFactory.ts index 5cefe808f8..14b6cc5f35 100644 --- a/packages/backend-app-api/src/services/implementations/logger/loggerFactory.ts +++ b/packages/backend-app-api/src/services/implementations/logger/loggerFactory.ts @@ -26,9 +26,7 @@ export const loggerFactory = createServiceFactory({ rootLogger: coreServices.rootLogger, plugin: coreServices.pluginMetadata, }, - async factory({ rootLogger }) { - return async ({ plugin }) => { - return rootLogger.child({ plugin: plugin.getId() }); - }; + async factory({ rootLogger, plugin }) { + return rootLogger.child({ plugin: plugin.getId() }); }, }); diff --git a/packages/backend-app-api/src/services/implementations/permissions/permissionsFactory.ts b/packages/backend-app-api/src/services/implementations/permissions/permissionsFactory.ts index d3f8d5783c..4eb05e3e4c 100644 --- a/packages/backend-app-api/src/services/implementations/permissions/permissionsFactory.ts +++ b/packages/backend-app-api/src/services/implementations/permissions/permissionsFactory.ts @@ -28,12 +28,10 @@ export const permissionsFactory = createServiceFactory({ discovery: coreServices.discovery, tokenManager: coreServices.tokenManager, }, - async factory({ config }) { - return async ({ discovery, tokenManager }) => { - return ServerPermissionClient.fromConfig(config, { - discovery, - tokenManager, - }); - }; + async factory({ config, discovery, tokenManager }) { + return ServerPermissionClient.fromConfig(config, { + discovery, + tokenManager, + }); }, }); diff --git a/packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.ts b/packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.ts index 4e472b78f4..458c5acfd6 100644 --- a/packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.ts +++ b/packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.ts @@ -29,13 +29,11 @@ export const schedulerFactory = createServiceFactory({ databaseManager: coreServices.database, logger: coreServices.logger, }, - async factory() { - return async ({ plugin, databaseManager, logger }) => { - return TaskScheduler.forPlugin({ - pluginId: plugin.getId(), - databaseManager, - logger: loggerToWinstonLogger(logger), - }); - }; + async factory({ plugin, databaseManager, logger }) { + return TaskScheduler.forPlugin({ + pluginId: plugin.getId(), + databaseManager, + logger: loggerToWinstonLogger(logger), + }); }, }); diff --git a/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerFactory.ts b/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerFactory.ts index cbd9e32d20..bb45f1f92c 100644 --- a/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerFactory.ts +++ b/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerFactory.ts @@ -31,6 +31,6 @@ export const tokenManagerFactory = createServiceFactory({ const tokenManager = ServerTokenManager.fromConfig(config, { logger, }); - return async () => tokenManager; + return tokenManager; }, }); diff --git a/packages/backend-app-api/src/services/implementations/urlReader/urlReaderFactory.ts b/packages/backend-app-api/src/services/implementations/urlReader/urlReaderFactory.ts index 758b555d66..1b52ce9604 100644 --- a/packages/backend-app-api/src/services/implementations/urlReader/urlReaderFactory.ts +++ b/packages/backend-app-api/src/services/implementations/urlReader/urlReaderFactory.ts @@ -27,12 +27,10 @@ export const urlReaderFactory = createServiceFactory({ config: coreServices.config, logger: coreServices.logger, }, - async factory() { - return async ({ config, logger }) => { - return UrlReaders.default({ - config, - logger: loggerToWinstonLogger(logger), - }); - }; + async factory({ config, logger }) { + return UrlReaders.default({ + config, + logger: loggerToWinstonLogger(logger), + }); }, }); diff --git a/packages/backend-app-api/src/wiring/createSpecializedBackend.test.ts b/packages/backend-app-api/src/wiring/createSpecializedBackend.test.ts index c670613657..ad50455e5f 100644 --- a/packages/backend-app-api/src/wiring/createSpecializedBackend.test.ts +++ b/packages/backend-app-api/src/wiring/createSpecializedBackend.test.ts @@ -53,7 +53,7 @@ describe('createSpecializedBackend', () => { createServiceFactory({ service: coreServices.pluginMetadata, deps: {}, - factory: async () => async () => ({ getId: () => 'test' }), + factory: async () => ({ getId: () => 'test' }), }), ], }), diff --git a/packages/backend-defaults/src/CreateBackend.test.ts b/packages/backend-defaults/src/CreateBackend.test.ts index 89a8e96b28..971ddc67ff 100644 --- a/packages/backend-defaults/src/CreateBackend.test.ts +++ b/packages/backend-defaults/src/CreateBackend.test.ts @@ -63,7 +63,7 @@ describe('createBackend', () => { createServiceFactory({ service: coreServices.pluginMetadata, deps: {}, - factory: async () => async () => ({ getId: () => 'test' }), + factory: async () => ({ getId: () => 'test' }), }), ], }), diff --git a/packages/backend-plugin-api/src/services/system/index.ts b/packages/backend-plugin-api/src/services/system/index.ts index cd15d8127d..74be9f8b11 100644 --- a/packages/backend-plugin-api/src/services/system/index.ts +++ b/packages/backend-plugin-api/src/services/system/index.ts @@ -19,7 +19,8 @@ export type { ServiceRefConfig, TypesToServiceRef, ServiceFactory, - ServiceFactoryConfig, + PluginServiceFactoryConfig, + RootServiceFactoryConfig, ServiceFactoryOrFunction, } from './types'; export { createServiceRef, createServiceFactory } from './types'; diff --git a/packages/backend-test-utils/src/next/implementations/mockTokenManagerService.ts b/packages/backend-test-utils/src/next/implementations/mockTokenManagerService.ts index dd1d6b16f7..9b1fc42f39 100644 --- a/packages/backend-test-utils/src/next/implementations/mockTokenManagerService.ts +++ b/packages/backend-test-utils/src/next/implementations/mockTokenManagerService.ts @@ -34,8 +34,6 @@ export const mockTokenManagerFactory = createServiceFactory({ service: coreServices.tokenManager, deps: {}, async factory() { - return async () => { - return new TokenManagerMock(); - }; + return new TokenManagerMock(); }, }); diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts index 6358051c34..dca463a9ae 100644 --- a/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts +++ b/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts @@ -106,7 +106,7 @@ describe('TestBackend', () => { deps: {}, service: testRef, factory: async () => { - return async () => testFn; + return testFn; }, }); diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.ts index 21650125d3..31bb7f025d 100644 --- a/packages/backend-test-utils/src/next/wiring/TestBackend.ts +++ b/packages/backend-test-utils/src/next/wiring/TestBackend.ts @@ -168,7 +168,7 @@ export async function startTestBackend< backend: { baseUrl: `http://localhost:${port}`, listen: { port } }, }), ); - return async () => discovery; + return discovery; }, }); @@ -179,13 +179,13 @@ export async function startTestBackend< const [ref, impl] = serviceDef; if (ref.scope === 'plugin') { return createServiceFactory({ - service: ref, + service: ref as ServiceRef, deps: {}, - factory: async () => async () => impl, + factory: async () => impl, })(); } return createServiceFactory({ - service: ref, + service: ref as ServiceRef, deps: {}, factory: async () => impl, })(); diff --git a/plugins/catalog-node/src/catalogService.ts b/plugins/catalog-node/src/catalogService.ts index 0c54bd2d9d..9a8ff55e1a 100644 --- a/plugins/catalog-node/src/catalogService.ts +++ b/plugins/catalog-node/src/catalogService.ts @@ -33,10 +33,8 @@ export const catalogServiceRef = createServiceRef({ deps: { discoveryApi: coreServices.discovery, }, - async factory() { - return async ({ discoveryApi }) => { - return new CatalogClient({ discoveryApi }); - }; + async factory({ discoveryApi }) { + return new CatalogClient({ discoveryApi }); }, }), });