1 | export type Primitive = boolean
|
2 | | string
|
3 | | number
|
4 | | symbol
|
5 | | object
|
6 | | ((...args: any[]) => any)
|
7 | | Array<any>;
|
8 | export type CtorArgs<TBase> = TBase extends new (...args: infer TArgs) => infer Impl ? TArgs : any[];
|
9 | export type CtorImpl<TBase> = TBase extends new (...args: infer TArgs) => infer Impl ? Impl : any;
|
10 | export type FuncArgs<TBase> = TBase extends (...args: infer TArgs) => infer Impl ? TArgs : any[];
|
11 | export type FuncReturns<TBase> = TBase extends (...args: infer TArgs) => infer Impl ? Impl : any;
|
12 | export type Args<TBase> = CtorArgs<TBase>|FuncArgs<TBase>;
|
13 | export type Impl<TBase> = CtorImpl<TBase>|FuncReturns<TBase>;
|
14 | export type DependencyCtor<
|
15 | TBase,
|
16 | TImpl extends Impl<TBase> = Impl<TBase>,
|
17 | TArgs extends Args<TBase> = Args<TBase>
|
18 | > = new (...args: TArgs) => TImpl | TBase;
|
19 | export type DependencyFunctor<
|
20 | TBase,
|
21 | TImpl extends Impl<TBase> = Impl<TBase>,
|
22 | TArgs extends Args<TBase> = Args<TBase>
|
23 | > = (...args: TArgs) => TImpl | TBase;
|
24 | export type ImplOrAny<TImpl> = unknown extends TImpl ? any : TImpl;
|
25 | export type DependencyCtorOrFunctor<
|
26 | TBase,
|
27 | TImpl extends Impl<TBase> = Impl<TBase>,
|
28 | TArgs extends Args<TBase> = Args<TBase>
|
29 | > = DependencyCtor<TBase, TImpl, TArgs> | DependencyFunctor<TBase, TImpl, TArgs>;
|
30 | export type PrimitiveOrDependencyCtor<
|
31 | TBase,
|
32 | TImpl extends Impl<TBase> = Impl<TBase>,
|
33 | TArgs extends Args<TBase> = Args<TBase>
|
34 | > = DependencyCtor<TBase, TImpl, TArgs> | Primitive;
|
35 | export type PrimitiveOrDependencyCtorOrFunctor<
|
36 | TBase,
|
37 | TImpl extends Impl<TBase> = Impl<TBase>,
|
38 | TArgs extends Args<TBase> = Args<TBase>
|
39 | > = DependencyCtor<TBase, TImpl, TArgs>
|
40 | | DependencyFunctor<TBase, TImpl, TArgs>
|
41 | | Primitive;
|
42 | export declare const resolver: {
|
43 | decorates?: (key: any) => key is {
|
44 | get(container: Container, key: any): any;
|
45 | };
|
46 | } & (() => any);
|
47 | export interface Resolver {
|
48 | get(container: Container, key: any): any;
|
49 | }
|
50 | export declare enum Strategy {
|
51 | instance = 0,
|
52 | singleton = 1,
|
53 | transient = 2,
|
54 | function = 3,
|
55 | array = 4,
|
56 | alias = 5
|
57 | }
|
58 | export declare type IStrategy = 1 | 2 | 3 | 4 | 5;
|
59 | export declare type StrategyFunctor<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> = (container?: Container, ctor?: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>, strategyResolver?: any) => TImpl;
|
60 | export interface StrategyState<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
|
61 | [Strategy.instance]: TImpl;
|
62 | [Strategy.singleton]: DependencyCtorOrFunctor<TBase, TImpl, TArgs>;
|
63 | [Strategy.transient]: DependencyCtorOrFunctor<TBase, TImpl, TArgs>;
|
64 | [Strategy.function]: StrategyFunctor<TBase, TImpl, TArgs>;
|
65 | [Strategy.array]: ({
|
66 | get: (container: Container, key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>) => TImpl;
|
67 | } | TImpl)[];
|
68 | [Strategy.alias]: any;
|
69 | }
|
70 | export declare class StrategyResolver<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>, TStrategyKey extends keyof StrategyState<TBase, TImpl, TArgs>> {
|
71 | strategy: keyof StrategyState<TBase, TImpl, TArgs>;
|
72 | state: StrategyState<TBase, TImpl, TArgs>[keyof StrategyState<TBase, TImpl, TArgs>];
|
73 | constructor(strategy: TStrategyKey, state: StrategyState<TBase, TImpl, TArgs>[TStrategyKey]);
|
74 | get(container: Container, key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): TImpl;
|
75 | }
|
76 | export declare class Lazy<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
|
77 | constructor(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>);
|
78 | get(container: Container): () => ImplOrAny<TImpl>;
|
79 | static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): Lazy<TBase, TImpl, TArgs>;
|
80 | }
|
81 | export declare class All<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
|
82 | constructor(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>);
|
83 | get(container: Container): TImpl[];
|
84 | static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): All<TBase, TImpl, TArgs>;
|
85 | }
|
86 | export declare class Optional<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
|
87 | constructor(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, checkParent?: boolean);
|
88 | get(container: Container): TImpl;
|
89 | 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>;
|
90 | }
|
91 | export declare class Parent<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
|
92 | constructor(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>);
|
93 | get(container: Container): TImpl;
|
94 | static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): Parent<TBase, TImpl, TArgs>;
|
95 | }
|
96 | export declare class Factory<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
|
97 | constructor(key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>);
|
98 | get(container: Container): DependencyFunctor<TBase, TImpl, TArgs>;
|
99 | static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: DependencyCtor<TBase, TImpl, TArgs>): Factory<TBase, TImpl, TArgs>;
|
100 | }
|
101 | export declare class NewInstance<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>> {
|
102 | constructor(key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>, ...dynamicDependencies: TArgs[number][]);
|
103 | get(container: Container): ImplOrAny<TImpl>;
|
104 | as(key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>): this;
|
105 | static of<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtorOrFunctor<TBase, TImpl, TArgs>, ...dynamicDependencies: TArgs[number][]): NewInstance<TBase, TImpl, TArgs>;
|
106 | }
|
107 | export declare function getDecoratorDependencies<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(target: DependencyCtor<TBase, TImpl, TArgs> & {
|
108 | inject?: TArgs[number][];
|
109 | }): TArgs[number][];
|
110 | export declare function lazy<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(keyValue: any): (target: DependencyCtor<TBase, TImpl, TArgs> & {
|
111 | inject?: TArgs[number][];
|
112 | }, _key: any, index: number) => void;
|
113 | export declare function all<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(keyValue: any): (target: DependencyCtor<TBase, TImpl, TArgs> & {
|
114 | inject?: TArgs[number][];
|
115 | }, _key: any, index: number) => void;
|
116 | export declare function optional<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(checkParentOrTarget?: boolean): (target: DependencyCtor<TBase, TImpl, TArgs> & {
|
117 | inject?: TArgs[number][];
|
118 | }, _key: any, index: number) => void;
|
119 | export declare function parent<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(target: DependencyCtor<TBase, TImpl, TArgs> & {
|
120 | inject?: TArgs[number][];
|
121 | }, _key: any, index: number): void;
|
122 | export declare function factory<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(keyValue: any): (target: DependencyCtor<TBase, TImpl, TArgs> & {
|
123 | inject?: TArgs[number][];
|
124 | }, _key: any, index: number) => void;
|
125 | export declare function newInstance<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(asKeyOrTarget?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs> & {
|
126 | inject?: TArgs[number][];
|
127 | }, ...dynamicDependencies: TArgs[number][]): (target: DependencyCtor<TBase, TImpl, TArgs> & {
|
128 | inject?: TArgs[number][];
|
129 | }, _key: any, index: number) => void;
|
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);
|
132 | export interface Invoker<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>> {
|
133 | invoke(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, dependencies: TArgs): ImplOrAny<TImpl>;
|
134 | invokeWithDynamicDependencies(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, staticDependencies: TArgs[number][], dynamicDependencies: TArgs[number][]): ImplOrAny<TImpl>;
|
135 | }
|
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>;
|
138 | invoke(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, dependencies: TArgs): ImplOrAny<TImpl>;
|
139 | invokeWithDynamicDependencies(container: Container, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, staticDependencies: TArgs[number][], dynamicDependencies: TArgs[number][]): ImplOrAny<TImpl>;
|
140 | }
|
141 | export declare const _emptyParameters: [];
|
142 | export declare class InvocationHandler<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>> {
|
143 | fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>;
|
144 | invoker: Invoker<TBase, TImpl, TArgs>;
|
145 | dependencies: TArgs;
|
146 | constructor(fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, invoker: Invoker<TBase, TImpl, TArgs>, dependencies: TArgs);
|
147 | invoke(container: Container, dynamicDependencies?: TArgs[]): TImpl;
|
148 | }
|
149 | export interface ContainerConfiguration {
|
150 | onHandlerCreated?: (handler: InvocationHandler<any, any, any>) => InvocationHandler<any, any, any>;
|
151 | handlers?: Map<any, any>;
|
152 | }
|
153 | export declare class Container {
|
154 | static instance: Container;
|
155 | parent: Container;
|
156 | root: Container;
|
157 | constructor(configuration?: ContainerConfiguration);
|
158 | makeGlobal(): Container;
|
159 | 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;
|
160 | 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: 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;
|
164 | 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;
|
165 | 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;
|
166 | 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;
|
167 | registerResolver<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, resolver: Resolver): Resolver;
|
168 | autoRegister<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: Primitive, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
|
169 | 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;
|
170 | autoRegisterAll(fns: DependencyCtor<any, any, any>[]): void;
|
171 | unregister(key: any): void;
|
172 | hasResolver<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, checkParent?: boolean): boolean;
|
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>;
|
174 | get<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): ImplOrAny<TImpl>;
|
175 | get<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: typeof Container): Container;
|
176 | _get(key: any): any;
|
177 | getAll<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): ImplOrAny<TImpl>[];
|
178 | createChild(): Container;
|
179 | invoke<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>, dynamicDependencies?: TArgs[number][]): ImplOrAny<TImpl>;
|
180 | _createInvocationHandler<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs> & {
|
181 | inject?: any;
|
182 | }): InvocationHandler<TBase, TImpl, TArgs>;
|
183 | }
|
184 | export declare type Injectable = Function & {
|
185 | inject?: any[] | (() => any[]);
|
186 | };
|
187 | export declare function autoinject<TPotential>(potentialTarget?: TPotential): TPotential extends Injectable ? void : (target: Injectable) => void;
|
188 | export declare function inject<TBase, TImpl extends Impl<TBase> = Impl<TBase>, TArgs extends Args<TBase> = Args<TBase>>(...rest: TArgs[number][]): any;
|
189 | export declare function registration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(value: Registration<TBase, TImpl, TArgs>): (target: DependencyCtor<TBase, TImpl, TArgs>) => void;
|
190 | export declare function transient<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>): (target: DependencyCtor<TBase, TImpl, TArgs>) => void;
|
191 | export declare function singleton(registerInChild?: boolean): any;
|
192 | export declare function singleton<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>>(key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, registerInChild?: boolean): any;
|
193 | export interface Registration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>> {
|
194 | registerResolver(container: Container, key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
|
195 | }
|
196 | export declare class TransientRegistration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>> implements Registration<TBase, TImpl, TArgs> {
|
197 | constructor(key?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>);
|
198 | registerResolver(container: Container, key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
|
199 | }
|
200 | export declare class SingletonRegistration<TBase, TImpl extends Impl<TBase>, TArgs extends Args<TBase>> implements Registration<TBase, TImpl, TArgs> {
|
201 | constructor(keyOrRegisterInChild?: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs> | boolean, registerInChild?: boolean);
|
202 | registerResolver(container: Container, key: PrimitiveOrDependencyCtor<TBase, TImpl, TArgs>, fn: DependencyCtorOrFunctor<TBase, TImpl, TArgs>): Resolver;
|
203 | } |
\ | No newline at end of file |