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:
@@ -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() {
|
||||
|
||||
@@ -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>,
|
||||
|
||||
Reference in New Issue
Block a user