# HG changeset patch # User cin # Date 2022-12-14 22:54:59 # Node ID 5683fe88e2a507228e588a0528dfd2c99df609fc # Parent 83fa5814462d5ed3c76a4f227d0cb8c8b7249f51 Corrected method signatures diff --git a/src/main/ts/ContainerBuilder.ts b/src/main/ts/ContainerBuilder.ts --- a/src/main/ts/ContainerBuilder.ts +++ b/src/main/ts/ContainerBuilder.ts @@ -15,7 +15,7 @@ export class ContainerBuilder(name: K): IDescriptorBuilder, object> { + createServiceBuilder(name: K): IDescriptorBuilder, NonNullable, object, keyof S> { return new DescriptorBuilder(this._lifetimeManager, this._register(name), this._fail); } diff --git a/src/main/ts/DescriptorBuilder.ts b/src/main/ts/DescriptorBuilder.ts --- a/src/main/ts/DescriptorBuilder.ts +++ b/src/main/ts/DescriptorBuilder.ts @@ -8,7 +8,7 @@ import { each, isKey, isPromise, isStrin * @template {S} Карта доступных зависимостей, как правило `ContainerServices` * @template {T} Тип сервиса */ -export class DescriptorBuilder implements IDescriptorBuilder { +export class DescriptorBuilder implements IDescriptorBuilder { private readonly _lifetimeManager: LifetimeManager; private readonly _cb: (d: Descriptor) => void; @@ -51,7 +51,7 @@ export class DescriptorBuilder : X[k] extends Ref ? Resolved : never; - }> { + }, O> { each(refs, (v, k) => this._refs[k] = v); @@ -60,7 +60,7 @@ export class DescriptorBuilder : X[k] extends Ref ? Resolved : never; - }>; + }, O>; } factory(f: (refs: R) => T): void { this._assertBuilding(); @@ -79,9 +79,9 @@ export class DescriptorBuilder>(name: K, builder: RegistrationBuilder>): this; - override>(services: { [k in K]: RegistrationBuilder> }): this; - override>(nameOrServices: K | { [name in K]: RegistrationBuilder> }, builder?: RegistrationBuilder>): this { + override(name: K, builder: RegistrationBuilder>): this; + override(services: { [k in K]: RegistrationBuilder> }): this; + override(nameOrServices: K | { [name in K]: RegistrationBuilder> }, builder?: RegistrationBuilder>): this { this._assertBuilding(); const guard = (v: void | Promise) => { if (isPromise(v)) @@ -91,7 +91,7 @@ export class DescriptorBuilder>( + const d = new DescriptorBuilder, object, O>( this._lifetimeManager, result => { this._overrides[nameOrServices] = result; diff --git a/src/main/ts/DescriptorImpl.ts b/src/main/ts/DescriptorImpl.ts --- a/src/main/ts/DescriptorImpl.ts +++ b/src/main/ts/DescriptorImpl.ts @@ -1,8 +1,7 @@ -import { Descriptor, ILifetime, ConfigurableKeys, DepsMap, Ref, IActivationContext } from "./interfaces"; -import { ActivationContext } from "./ActivationContext"; +import { Descriptor, ILifetime, DepsMap, Ref, IActivationContext } from "./interfaces"; import { each, isKey, key } from "./traits"; -export type RegistrationOverridesMap = { [k in ConfigurableKeys]?: Descriptor> }; +export type RegistrationOverridesMap = { [k in keyof S]?: Descriptor> }; export interface DescriptorImplArgs { lifetime: ILifetime; diff --git a/src/main/ts/interfaces.ts b/src/main/ts/interfaces.ts --- a/src/main/ts/interfaces.ts +++ b/src/main/ts/interfaces.ts @@ -1,4 +1,3 @@ -import { ActivationContext } from "./ActivationContext"; import { key } from "./traits"; export interface IDestroyable { @@ -35,7 +34,7 @@ export type Ref = L extends true ? () => NonNullable | (unknown extends D ? never : D) : NonNullable | (unknown extends D ? never : D); -export interface IDescriptorBuilder { +export interface IDescriptorBuilder { /** * @@ -49,10 +48,10 @@ export interface IDescriptorBuilder : X[k] extends Ref ? Resolved : never - }> + }, O> - override>(name: K, builder: RegistrationBuilder>): this; - override>(services: { [name in K]: RegistrationBuilder> }): this; + override(name: K, builder: RegistrationBuilder>): this; + override(services: { [name in K]: RegistrationBuilder> }): this; lifetime(lifetime: "singleton", typeId: string | number | object): this; lifetime(lifetime: ILifetime | Exclude): this; @@ -62,9 +61,9 @@ export interface IDescriptorBuilder = (d: IDescriptorBuilder) => void; +export type RegistrationBuilder = (d: IDescriptorBuilder>) => void; -export type RegistrationBuildersMap = ConfigurableKeys> = { +export type RegistrationBuildersMap, K extends keyof S = keyof S> = { [k in K]-?: RegistrationBuilder, NonNullable> }; @@ -78,8 +77,6 @@ export interface IActivationContext(): ILifetime; } -export type ConfigurableDescriptor> = Descriptor, S[K]>; - export type RegistrationMap = { [k in K]-?: Descriptor; }; @@ -119,7 +116,7 @@ export interface ServiceContainer> { - createServiceBuilder(name: K): IDescriptorBuilder>; + createServiceBuilder(name: K): IDescriptorBuilder, object, keyof S>; build(): ServiceContainer; }