Ensure that root scoped services cannot accept (at a type level) plugin scoped deps

Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
Fredrik Adelöw
2023-09-06 11:42:51 +02:00
parent cfa5a343ec
commit ba4506076e
5 changed files with 10 additions and 6 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-plugin-api': patch
---
Ensure that root scoped services cannot accept (at a type level) plugin scoped deps
@@ -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() {
+2 -2
View File
@@ -138,7 +138,7 @@ export function createServiceFactory<
TService,
TImpl extends TService,
TDeps extends {
[name in string]: ServiceRef<unknown>;
[name in string]: ServiceRef<unknown, 'root'>;
},
TOpts extends object | undefined = undefined,
>(
@@ -150,7 +150,7 @@ export function createServiceFactory<
TService,
TImpl extends TService,
TDeps extends {
[name in string]: ServiceRef<unknown>;
[name in string]: ServiceRef<unknown, 'root'>;
},
TOpts extends object | undefined = undefined,
>(
@@ -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;
@@ -172,7 +172,7 @@ export interface PluginServiceFactoryConfig<
export function createServiceFactory<
TService,
TImpl extends TService,
TDeps extends { [name in string]: ServiceRef<unknown> },
TDeps extends { [name in string]: ServiceRef<unknown, 'root'> },
TOpts extends object | undefined = undefined,
>(
config: RootServiceFactoryConfig<TService, TImpl, TDeps>,
@@ -186,7 +186,7 @@ export function createServiceFactory<
export function createServiceFactory<
TService,
TImpl extends TService,
TDeps extends { [name in string]: ServiceRef<unknown> },
TDeps extends { [name in string]: ServiceRef<unknown, 'root'> },
TOpts extends object | undefined = undefined,
>(
config: (options?: TOpts) => RootServiceFactoryConfig<TService, TImpl, TDeps>,