Skip to content

Commit 5c59f25

Browse files
Merge pull request #182 from DrSammyD/master
1.5.0
2 parents ea5da88 + 4a8a9a7 commit 5c59f25

8 files changed

+62
-51
lines changed

dist/aurelia-dependency-injection.d.ts

+15-14
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,17 @@ export declare class Lazy<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs
8080
}
8181
export declare class All<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
8282
constructor(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>);
83-
get(container: Container): any[];
83+
get(container: Container): TImpl[];
8484
static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): All<TBase, TImpl, TArgs>;
8585
}
8686
export declare class Optional<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
8787
constructor(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, checkParent?: boolean);
88-
get(container: Container): any;
88+
get(container: Container): TImpl;
8989
static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, checkParent?: boolean): Optional<TBase, TImpl, TArgs>;
9090
}
9191
export declare class Parent<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
9292
constructor(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>);
93-
get(container: Container): any;
93+
get(container: Container): TImpl;
9494
static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): Parent<TBase, TImpl, TArgs>;
9595
}
9696
export declare class Factory<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
@@ -127,14 +127,14 @@ export declare function newInstance<TBase, TImpl extends Impl<TBase> = Impl<TBas
127127
}, ...dynamicDependencies: TArgs[number][]): (target: DependencyCtor<TBase, TImpl, TArgs> & {
128128
inject?: TArgs[number][];
129129
}, _key: any, index: number) => void;
130-
export declare function invoker<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(value: Invoker<TBase, TImpl, TArgs>): any;
131-
export declare function invokeAsFactory(potentialTarget?: any): any;
130+
export declare function invoker<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(value: Invoker<TBase, TImpl, TArgs>): (target: DependencyCtor<TBase, TImpl, TArgs>) => void;
131+
export declare function invokeAsFactory<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(potentialTarget?: DependencyCtor<TBase, TImpl, TArgs>): void | ((target: DependencyCtor<TBase, TImpl, TArgs>) => void);
132132
export interface Invoker<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>> {
133133
invoke(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, dependencies: TArgs): ImplOrAny<TImpl>;
134134
invokeWithDynamicDependencies(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, staticDependencies: TArgs[number][], dynamicDependencies: TArgs[number][]): ImplOrAny<TImpl>;
135135
}
136-
export declare class FactoryInvoker<TBase = any, TArgs extends Args<TBase> = Args<TBase>, TImpl extends Impl<TBase> = Impl<TBase>> {
137-
static instance: FactoryInvoker;
136+
export declare class FactoryInvoker<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> implements Invoker<TBase, TImpl, TArgs> {
137+
static instance: FactoryInvoker<any>;
138138
invoke(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, dependencies: TArgs): ImplOrAny<TImpl>;
139139
invokeWithDynamicDependencies(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, staticDependencies: TArgs[number][], dynamicDependencies: TArgs[number][]): ImplOrAny<TImpl>;
140140
}
@@ -144,7 +144,7 @@ export declare class InvocationHandler<TBase, TImpl extends Impl<TBase>, TArgs e
144144
invoker: Invoker<TBase, TImpl, TArgs>;
145145
dependencies: TArgs;
146146
constructor(fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, invoker: Invoker<TBase, TImpl, TArgs>, dependencies: TArgs);
147-
invoke(container: Container, dynamicDependencies?: any[]): any;
147+
invoke(container: Container, dynamicDependencies?: TArgs[]): TImpl;
148148
}
149149
export interface ContainerConfiguration {
150150
onHandlerCreated?: (handler: InvocationHandler<any, any, any>) => InvocationHandler<any, any, any>;
@@ -158,18 +158,19 @@ export declare class Container {
158158
makeGlobal(): Container;
159159
setHandlerCreatedCallback<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(onHandlerCreated: (handler: InvocationHandler<TBase, TImpl, TArgs>) => InvocationHandler<TBase, TImpl, TArgs>): void;
160160
registerInstance<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, instance?: TImpl): Resolver;
161-
registerSingleton<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: any, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
162-
registerTransient<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: string, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
161+
registerSingleton<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: Primitive, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
162+
registerSingleton<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: DependencyCtor<TBase, TImpl, TArgs>, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
163+
registerTransient<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: Primitive, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
163164
registerTransient<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: DependencyCtor<TBase, TImpl, TArgs>, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
164165
registerHandler<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, handler: (container?: Container, key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, resolver?: Resolver) => any): Resolver;
165166
registerAlias<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(originalKey: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, aliasKey: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): Resolver;
166167
registerResolver<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, resolver: Resolver): Resolver;
167-
autoRegister<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: string, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
168+
autoRegister<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: Primitive, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
168169
autoRegister<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: DependencyCtor<TBase, TImpl, TArgs>, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
169170
autoRegisterAll(fns: DependencyCtor<any, any, any>[]): void;
170171
unregister(key: any): void;
171172
hasResolver<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, checkParent?: boolean): boolean;
172-
getResolver<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>): any;
173+
getResolver<TStrategyKey extends keyof StrategyState<TBase, TImpl, TArgs>, TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>): StrategyResolver<TBase, TImpl, TArgs, TStrategyKey>;
173174
get<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): ImplOrAny<TImpl>;
174175
get<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: typeof Container): Container;
175176
_get(key: any): any;
@@ -182,8 +183,8 @@ export declare class Container {
182183
}
183184
export declare function autoinject(potentialTarget?: DependencyCtor<any, any, any>): any;
184185
export declare function inject<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(...rest: TArgs[number][]): any;
185-
export declare function registration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(value: Registration<TBase, TImpl, TArgs>): any;
186-
export declare function transient<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): any;
186+
export declare function registration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(value: Registration<TBase, TImpl, TArgs>): (target: DependencyCtor<TBase, TImpl, TArgs>) => void;
187+
export declare function transient<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): (target: DependencyCtor<TBase, TImpl, TArgs>) => void;
187188
export declare function singleton(registerInChild?: boolean): any;
188189
export declare function singleton<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, registerInChild?: boolean): any;
189190
export interface Registration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>> {

dist/es2015/aurelia-dependency-injection.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ function invoker(value) {
511511
};
512512
}
513513
function invokeAsFactory(potentialTarget) {
514-
const deco = target => {
514+
const deco = (target) => {
515515
metadata.define(metadata.invoker, FactoryInvoker.instance, target);
516516
};
517517
return potentialTarget ? deco(potentialTarget) : deco;

dist/es2017/aurelia-dependency-injection.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ function invoker(value) {
511511
};
512512
}
513513
function invokeAsFactory(potentialTarget) {
514-
const deco = target => {
514+
const deco = (target) => {
515515
metadata.define(metadata.invoker, FactoryInvoker.instance, target);
516516
};
517517
return potentialTarget ? deco(potentialTarget) : deco;

dist/umd-es2015/aurelia-dependency-injection.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@
514514
};
515515
}
516516
function invokeAsFactory(potentialTarget) {
517-
const deco = target => {
517+
const deco = (target) => {
518518
aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
519519
};
520520
return potentialTarget ? deco(potentialTarget) : deco;

src/container.ts

+23-16
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/// <reference path="./internal.ts" />
33
import { metadata } from 'aurelia-metadata';
44
import { AggregateError } from 'aurelia-pal';
5-
import { resolver, StrategyResolver, Resolver, Strategy } from './resolvers';
5+
import { resolver, StrategyResolver, Resolver, Strategy, StrategyState } from './resolvers';
66
import { Invoker } from './invokers';
77
import {
88
DependencyCtorOrFunctor,
@@ -11,7 +11,8 @@ import {
1111
PrimitiveOrDependencyCtorOrFunctor,
1212
ImplOrAny,
1313
Impl,
14-
Args
14+
Args,
15+
Primitive
1516
} from './types';
1617

1718
function validateKey(key: any) {
@@ -73,7 +74,7 @@ export class InvocationHandler<
7374
* @param dynamicDependencies Additional dependencies to use during invocation.
7475
* @return The result of the function invocation.
7576
*/
76-
public invoke(container: Container, dynamicDependencies?: any[]): any {
77+
public invoke(container: Container, dynamicDependencies?: TArgs[]): TImpl {
7778
return dynamicDependencies !== undefined
7879
? this.invoker.invokeWithDynamicDependencies(
7980
container,
@@ -260,10 +261,14 @@ export class Container {
260261
* @return The resolver that was registered.
261262
*/
262263
public registerSingleton<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
263-
key: any, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver {
264+
key: Primitive, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
265+
public registerSingleton<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
266+
key: DependencyCtor<TBase, TImpl, TArgs>, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
267+
public registerSingleton<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
268+
key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver {
264269
return this.registerResolver(
265270
key,
266-
new StrategyResolver(1, fn === undefined ? key : fn)
271+
new StrategyResolver(Strategy.singleton, fn === undefined ? key as DependencyCtor<TBase, TImpl, TArgs> : fn)
267272
);
268273
}
269274

@@ -277,7 +282,7 @@ export class Container {
277282
* @return The resolver that was registered.
278283
*/
279284
public registerTransient<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
280-
key: string, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
285+
key: Primitive, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
281286
public registerTransient<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
282287
key: DependencyCtor<TBase, TImpl, TArgs>, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
283288
public registerTransient<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
@@ -360,7 +365,7 @@ export class Container {
360365
* instantiated. This defaults to the key value when fn is not supplied.
361366
*/
362367
public autoRegister<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
363-
key: string, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
368+
key: Primitive, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
364369
public autoRegister<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
365370
key: DependencyCtor<TBase, TImpl, TArgs>, fn?: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
366371
public autoRegister<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
@@ -424,8 +429,14 @@ export class Container {
424429
* @param key The key that identifies the dependency at resolution time; usually a constructor function.
425430
* @return Returns the resolver, if registred, otherwise undefined.
426431
*/
427-
public getResolver<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
428-
key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>) {
432+
public getResolver<
433+
TStrategyKey extends keyof StrategyState<TBase, TImpl, TArgs>,
434+
TBase,
435+
TImpl extends Impl<TBase> = Impl<TBase>,
436+
TArgs extends Args<TBase> = Args<TBase>
437+
>(
438+
key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>
439+
): StrategyResolver<TBase, TImpl, TArgs, TStrategyKey> {
429440
return this._resolvers.get(key);
430441
}
431442

@@ -558,13 +569,9 @@ export class Container {
558569
}
559570
}
560571

561-
public _createInvocationHandler<
562-
TBase,
563-
TImpl extends Impl<TBase> = Impl<TBase>,
564-
TArgs extends Args<TBase> = Args<TBase>>(
565-
fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs> & {
566-
inject?: any;
567-
}
572+
public _createInvocationHandler
573+
<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(
574+
fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs> & { inject?: any; }
568575
): InvocationHandler<TBase, TImpl, TArgs> {
569576
let dependencies;
570577

src/invokers.ts

+11-9
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
/// <reference path="./internal.ts" />
33
import { metadata } from 'aurelia-metadata';
44
import { Container } from './container';
5-
import { DependencyCtorOrFunctor, ImplOrAny, Impl, Args } from './types';
5+
import { DependencyCtorOrFunctor, ImplOrAny, Impl, Args, DependencyCtor } from './types';
66

77
/**
88
* Decorator: Specifies a custom Invoker for the decorated item.
99
*/
1010
export function invoker<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(
1111
value: Invoker<TBase, TImpl, TArgs>
12-
): any {
12+
): (target: DependencyCtor<TBase, TImpl, TArgs>) => void {
1313
return target => {
1414
metadata.define(metadata.invoker, value, target);
1515
};
@@ -19,8 +19,10 @@ export function invoker<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBa
1919
* Decorator: Specifies that the decorated item should be called as a factory
2020
* function, rather than a constructor.
2121
*/
22-
export function invokeAsFactory(potentialTarget?: any): any {
23-
const deco = target => {
22+
export function invokeAsFactory<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(
23+
potentialTarget?: DependencyCtor<TBase, TImpl, TArgs>
24+
): void | ((target: DependencyCtor<TBase, TImpl, TArgs>) => void) {
25+
const deco = (target: DependencyCtor<TBase, TImpl, TArgs>) => {
2426
metadata.define(metadata.invoker, FactoryInvoker.instance, target);
2527
};
2628

@@ -63,14 +65,14 @@ export interface Invoker<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TB
6365
* An Invoker that is used to invoke a factory method.
6466
*/
6567
export class FactoryInvoker<
66-
TBase = any,
67-
TArgs extends Args<TBase> = Args<TBase>,
68-
TImpl extends Impl<TBase> = Impl<TBase>
69-
> {
68+
TBase,
69+
TImpl extends Impl<TBase> = Impl<TBase>,
70+
TArgs extends Args<TBase> = Args<TBase>
71+
> implements Invoker<TBase, TImpl, TArgs> {
7072
/**
7173
* The singleton instance of the FactoryInvoker.
7274
*/
73-
public static instance: FactoryInvoker;
75+
public static instance: FactoryInvoker<any>;
7476

7577
/**
7678
* Invokes the function with the provided dependencies.

src/registrations.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,17 @@ import {
77
DependencyCtorOrFunctor,
88
PrimitiveOrDependencyCtor,
99
Impl,
10-
Args
10+
Args,
11+
DependencyCtor
1112
} from './types';
1213

1314
/**
1415
* Decorator: Specifies a custom registration strategy for the decorated
1516
* class/function.
1617
*/
1718
export function registration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(
18-
value: Registration<TBase, TImpl, TArgs>): any {
19-
return (target: (...rest: any[]) => any) => {
19+
value: Registration<TBase, TImpl, TArgs>) {
20+
return (target: DependencyCtor<TBase, TImpl, TArgs>) => {
2021
metadata.define(metadata.registration, value, target);
2122
};
2223
}
@@ -26,17 +27,17 @@ export function registration<TBase, TImpl extends Impl<TBase>, TArgs extends Arg
2627
* lifetime.
2728
*/
2829
export function transient<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(
29-
key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): any {
30+
key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>) {
3031
return registration(new TransientRegistration<TBase, TImpl, TArgs>(key));
3132
}
3233

3334
/**
3435
* Decorator: Specifies to register the decorated item with a "singleton"
3536
* lifetime.
3637
*/
37-
export function singleton(registerInChild?: boolean): any;
38+
export function singleton(registerInChild?: boolean);
3839
export function singleton<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(
39-
key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, registerInChild?: boolean): any;
40+
key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, registerInChild?: boolean);
4041
export function singleton<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(
4142
keyOrRegisterInChild?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs> | boolean, registerInChild: boolean = false) {
4243
return registration<TBase, TImpl, TArgs>(

src/resolvers.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ export class All<TBase,
216216
* @param container The container to resolve from.
217217
* @return Returns an array of all matching instances.
218218
*/
219-
public get(container: Container): any[] {
219+
public get(container: Container): TImpl[] {
220220
return container.getAll(this._key);
221221
}
222222

@@ -264,7 +264,7 @@ export class Optional<TBase,
264264
* @param container The container to resolve from.
265265
* @return Returns the instance if found; otherwise null.
266266
*/
267-
public get(container: Container): any {
267+
public get(container: Container): TImpl {
268268
if (container.hasResolver(this._key, this._checkParent)) {
269269
return container.get(this._key);
270270
}
@@ -312,7 +312,7 @@ export class Parent<TBase,
312312
* @param container The container to resolve the parent from.
313313
* @return Returns the matching instance from the parent container
314314
*/
315-
public get(container: Container): any {
315+
public get(container: Container): TImpl {
316316
return container.parent ? container.parent.get(this._key) : null;
317317
}
318318

0 commit comments

Comments
 (0)