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,