diff --git a/src/main/ts/di/Annotations.ts b/src/main/ts/di/Annotations.ts --- a/src/main/ts/di/Annotations.ts +++ b/src/main/ts/di/Annotations.ts @@ -65,7 +65,7 @@ interface Declaration dependency(name: K, opts: LazyDependencyOptions): Lazy; dependency(name: K, opts?: DependencyOptions): Dependency; - config(): Config; + configure(): Config; } type ServiceModule = { @@ -74,11 +74,11 @@ type ServiceModule = PromiseLike | T; + export interface Config { - register(name: K, builder: Builder): Config>; - register(name: K, m: Promise>): Config>; - register(name: K, m: Promise>, x: M): Config>; - + register(name: K, m: { $from: Promise> } | S[K]): Config>; + register(name: K, m: { $from: Promise>, service: M }): Config>; + register S[K]>(name: K, d: TypeRegistration): Config>; } export declare function declare(): Declaration; diff --git a/src/main/ts/di/Configuration.ts b/src/main/ts/di/Configuration.ts --- a/src/main/ts/di/Configuration.ts +++ b/src/main/ts/di/Configuration.ts @@ -46,6 +46,7 @@ export interface ServiceRegistration any, S extends object> extends ServiceRegistration, S> { $type: string | C; + params?: ConstructorParameters; } export interface FactoryRegistration any, S extends object> extends ServiceRegistration, S> { diff --git a/src/test/ts/mock/config.ts b/src/test/ts/mock/config.ts --- a/src/test/ts/mock/config.ts +++ b/src/test/ts/mock/config.ts @@ -1,6 +1,15 @@ -import { config } from "./services"; +import { configure } from "./services"; +import { Foo } from "./Foo"; +import { Bar } from "./Bar"; -config() - .register("bar", import("./Bar")) - .register("box", import("./Box"), "service"); - // .register("foo", import("./Foo"), "Foo"); +export const config = configure() + .register("bar", { $from: import("./Bar"), service: "service" }) + .register("box", { $from: import("./Box") }) + .register("host", "example.com") + .register("foo", { + $type: Foo + }) + .register("bar2", { + $type: Bar, + params: [] + }); diff --git a/src/test/ts/mock/services.ts b/src/test/ts/mock/services.ts --- a/src/test/ts/mock/services.ts +++ b/src/test/ts/mock/services.ts @@ -11,6 +11,8 @@ export interface Services { bar: Bar; + bar2: Bar; + box: Box; host: string; @@ -20,4 +22,4 @@ export interface Services { /** * Экспортируем вспомогательные функции для описания сервисов и кинфогурации */ -export const { define, dependency, config } = declare(); +export const { define, dependency, configure } = declare();