Skip to content

Commit cf6e51f

Browse files
authored
feat: allow providing abstract type (#2503)
* feat: allow providing abstract type * feat: allow abstract type in Injector.get * add changeset
1 parent 2071592 commit cf6e51f

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

.changeset/perfect-lamps-cheat.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'graphql-modules': minor
3+
---
4+
5+
Support passing an abstract class to `Injector.get` call and `Provider` value.

packages/graphql-modules/src/di/injector.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Type, InjectionToken, Provider } from './providers';
1+
import { Type, InjectionToken, Provider, AbstractType } from './providers';
22
import {
33
ResolvedProvider,
44
resolveProviders,
@@ -27,7 +27,10 @@ type ExecutionContextGetter = () => ExecutionContext | never;
2727
// We use ReflectiveInjector everywhere
2828
// but we don't want to leak its API to everyone
2929
export abstract class Injector {
30-
abstract get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: any): T;
30+
abstract get<T>(
31+
token: Type<T> | InjectionToken<T> | AbstractType<T>,
32+
notFoundValue?: any
33+
): T;
3134
}
3235

3336
export class ReflectiveInjector implements Injector {

packages/graphql-modules/src/di/providers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export interface FactoryProvider<T> extends BaseProvider<T> {
4343
}
4444

4545
export interface BaseProvider<T> extends ProviderOptions {
46-
provide: Type<T> | InjectionToken<T>;
46+
provide: Type<T> | InjectionToken<T> | AbstractType<T>;
4747
}
4848

4949
export interface TypeProvider<T> extends Type<T> {}

0 commit comments

Comments
 (0)