From ba4506076e2d45a9f5922b7f0663a2c0190b6dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 6 Sep 2023 11:42:51 +0200 Subject: [PATCH] Ensure that root scoped services cannot accept (at a type level) plugin scoped deps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/lemon-donuts-clap.md | 5 +++++ packages/backend-app-api/src/wiring/ServiceRegistry.test.ts | 1 + packages/backend-plugin-api/api-report.md | 4 ++-- .../backend-plugin-api/src/services/system/types.test.ts | 2 -- packages/backend-plugin-api/src/services/system/types.ts | 4 ++-- 5 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 .changeset/lemon-donuts-clap.md diff --git a/.changeset/lemon-donuts-clap.md b/.changeset/lemon-donuts-clap.md new file mode 100644 index 0000000000..75408d2584 --- /dev/null +++ b/.changeset/lemon-donuts-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-plugin-api': patch +--- + +Ensure that root scoped services cannot accept (at a type level) plugin scoped deps diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts index 18e2ac4398..32807ca826 100644 --- a/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.test.ts @@ -125,6 +125,7 @@ describe('ServiceRegistry', () => { it('should not be possible for root scoped services to depend on plugin scoped services', async () => { const factory = createServiceFactory({ + // @ts-expect-error service: ref2, deps: { pluginDep: ref1 }, async factory() { diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md index 17cc521499..7807dd96c6 100644 --- a/packages/backend-plugin-api/api-report.md +++ b/packages/backend-plugin-api/api-report.md @@ -138,7 +138,7 @@ export function createServiceFactory< TService, TImpl extends TService, TDeps extends { - [name in string]: ServiceRef; + [name in string]: ServiceRef; }, TOpts extends object | undefined = undefined, >( @@ -150,7 +150,7 @@ export function createServiceFactory< TService, TImpl extends TService, TDeps extends { - [name in string]: ServiceRef; + [name in string]: ServiceRef; }, TOpts extends object | undefined = undefined, >( diff --git a/packages/backend-plugin-api/src/services/system/types.test.ts b/packages/backend-plugin-api/src/services/system/types.test.ts index 4d0432505e..adf097761b 100644 --- a/packages/backend-plugin-api/src/services/system/types.test.ts +++ b/packages/backend-plugin-api/src/services/system/types.test.ts @@ -166,7 +166,6 @@ describe('createServiceFactory', () => { service: createServiceRef({ id: 'foo', scope: 'root' }), deps: { root: rootDep, - plugin: pluginDep, }, async factory({ root }) { const root1: number = root; @@ -192,7 +191,6 @@ describe('createServiceFactory', () => { service: createServiceRef({ id: 'foo', scope: 'root' }), deps: { root: rootDep, - plugin: pluginDep, }, async factory({ root }) { const root1: number = root; diff --git a/packages/backend-plugin-api/src/services/system/types.ts b/packages/backend-plugin-api/src/services/system/types.ts index b8fb12fe44..329502369e 100644 --- a/packages/backend-plugin-api/src/services/system/types.ts +++ b/packages/backend-plugin-api/src/services/system/types.ts @@ -172,7 +172,7 @@ export interface PluginServiceFactoryConfig< export function createServiceFactory< TService, TImpl extends TService, - TDeps extends { [name in string]: ServiceRef }, + TDeps extends { [name in string]: ServiceRef }, TOpts extends object | undefined = undefined, >( config: RootServiceFactoryConfig, @@ -186,7 +186,7 @@ export function createServiceFactory< export function createServiceFactory< TService, TImpl extends TService, - TDeps extends { [name in string]: ServiceRef }, + TDeps extends { [name in string]: ServiceRef }, TOpts extends object | undefined = undefined, >( config: (options?: TOpts) => RootServiceFactoryConfig,