Documents injecute 1.x · Migrating from 0.x
Skip to content

Interface: AsyncServiceRegistry<S, A> ​

Defined in: src/types.ts:727

Read + register for an AsyncDIContainer: what its modules and namespace() callbacks receive. Factories receive resolved dependencies; a factory returning Promise<T> registers T. Async modules work only with async containers.

Example ​

ts
const addBilling = (c: AsyncServiceRegistry<{ db: Database }>) =>
  c.addSingleton('invoices', InvoiceRepository, ['db']);

asyncApp.extend(addBilling);

Extends ​

Extended by ​

Type Parameters ​

S ​

S extends object = { }

A ​

A extends object = { }

Properties ​

keys ​

readonly keys: readonly ServiceKey[]

Defined in: src/types.ts:686

Keys visible from this container, including its parents'.

Inherited from ​

AsyncServiceProvider.keys


ownKeys ​

readonly ownKeys: readonly ServiceKey[]

Defined in: src/types.ts:689

Keys registered in this container.

Inherited from ​

AsyncServiceProvider.ownKeys

Methods ​

addAlias() ​

addAlias<K, T, R>(key, target, options?): AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: ResolveDependency<T, S, A> }, R>>

Defined in: src/types.ts:779

Makes key resolve to the service registered under target.

Type Parameters ​

K ​

K extends ServiceKey

T ​

T extends string | number | symbol

R ​

R extends boolean = false

Parameters ​

key ​

K

target ​

T

options? ​

AliasOptions<R>

Returns ​

AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: ResolveDependency<T, S, A> }, R>>


addInstance() ​

addInstance<K, T, R>(key, value, options?): AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: Awaited<T> }, R>>

Defined in: src/types.ts:765

Registers an existing value (or a promise of it).

Type Parameters ​

K ​

K extends ServiceKey

T ​

T extends unknown

R ​

R extends boolean = false

Parameters ​

key ​

K

value ​

T

options? ​

InstanceOptions<Awaited<T>, R>

Returns ​

AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: Awaited<T> }, R>>


addSingleton() ​

addSingleton<K, F, D, R>(key, factory, dependencies?): AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: Awaited<Produced<F>> }, R>>

Defined in: src/types.ts:735

Registers a service created once and cached. The factory receives resolved dependencies and may return a promise; the service type is the resolved value.

Type Parameters ​

K ​

K extends ServiceKey

F ​

F extends Factory<D, S, A, AsyncExpectedService<K>>

D ​

D extends Dependency<S, A>[] = []

R ​

R extends boolean = false

Parameters ​

key ​

K

factory ​

F

dependencies? ​

[...D[]] | SingletonFactoryOptions<[...D[]], F, R>

Returns ​

AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: Awaited<Produced<F>> }, R>>


addTransient() ​

addTransient<K, F, D, R>(key, factory, dependencies?): AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: Awaited<Produced<F>> }, R>>

Defined in: src/types.ts:750

Registers a service created on every resolution.

Type Parameters ​

K ​

K extends ServiceKey

F ​

F extends Factory<D, S, A, AsyncExpectedService<K>>

D ​

D extends Dependency<S, A>[] = []

R ​

R extends boolean = false

Parameters ​

key ​

K

factory ​

F

dependencies? ​

[...D[]] | RegistrationOptions<[...D[]], R>

Returns ​

AsyncServiceRegistry<S, Registered<A, { [P in ServiceKey]: Awaited<Produced<F>> }, R>>


bind() ​

bind<D, R>(dependencies, factory): () => Promise<Awaited<R>>

Defined in: src/types.ts:845

Returns a function that runs factory with resolved dependencies each time it is called.

Type Parameters ​

D ​

D extends Dependency<S, A>[]

R ​

R

Parameters ​

dependencies ​

[...D[]]

factory ​

((...args) => R) | (new (...args) => R)

Returns ​

() => Promise<Awaited<R>>


call() ​

call<K>(key, args, thisArg?): Promise<Awaited<ReturnType<Extract<ServiceType<RegistryServices<S, A>, K>, (...args) => any>>>>

Defined in: src/types.ts:677

Resolves a function service and calls it with args.

Type Parameters ​

K ​

K extends string | number | symbol

Parameters ​

key ​

K | TaggedKey<any, K>

args ​

Parameters<Extract<ServiceType<RegistryServices<S, A>, K>, (...args) => any>>

thisArg? ​

unknown

Returns ​

Promise<Awaited<ReturnType<Extract<ServiceType<RegistryServices<S, A>, K>, (...args) => any>>>>

Inherited from ​

AsyncServiceProvider.call


createResolver() ​

createResolver<K>(key): () => Promise<ServiceType<RegistryServices<S, A>, K>>

Defined in: src/types.ts:672

Returns a function that resolves key when called.

Type Parameters ​

K ​

K extends string | number | symbol

Parameters ​

key ​

K | TaggedKey<any, K>

Returns ​

() => Promise<ServiceType<RegistryServices<S, A>, K>>

Inherited from ​

AsyncServiceProvider.createResolver


extend() ​

extend<EA, Req>(extension): AsyncServiceRegistry<S, A & { [K in string | number | symbol]: EA[K] }>

Defined in: src/types.ts:823

Applies a module function that registers services.

Type Parameters ​

EA ​

EA extends object

Req ​

Req extends object = S & A

Parameters ​

extension ​

[S & A] extends [Req] ? (registry) => AsyncServiceRegistry<any, EA> : object

Returns ​

AsyncServiceRegistry<S, A & { [K in string | number | symbol]: EA[K] }>


get() ​

get<K, O>(key, options?): Promise<O extends object ? ServiceType<RegistryServices<S, A>, K> | undefined : ServiceType<RegistryServices<S, A>, K>>

Defined in: src/types.ts:659

Resolves a service. Rejects when the key is not registered, unless { optional: true } is passed.

Type Parameters ​

K ​

K extends string | number | symbol

O ​

O extends GetOptions = { }

Parameters ​

key ​

K | TaggedKey<any, K>

options? ​

O

Returns ​

Promise<O extends object ? ServiceType<RegistryServices<S, A>, K> | undefined : ServiceType<RegistryServices<S, A>, K>>

Inherited from ​

AsyncServiceProvider.get


getParent() ​

getParent(): AsyncServiceProvider<{ }> | undefined

Defined in: src/types.ts:692

The parent container (read-only view), if any.

Returns ​

AsyncServiceProvider<{ }> | undefined

Inherited from ​

AsyncServiceProvider.getParent


getRegistration() ​

getRegistration(key): RegistrationInfo | undefined

Defined in: src/types.ts:695

Read-only metadata of the registration visible under key, or undefined.

Parameters ​

key ​

ServiceKey

Returns ​

RegistrationInfo | undefined

Inherited from ​

AsyncServiceProvider.getRegistration


has() ​

has(key, options?): boolean

Defined in: src/types.ts:669

true when a service is registered under key (here or in a parent).

Parameters ​

key ​

ServiceKey

options? ​

HasOptions

Returns ​

boolean

Inherited from ​

AsyncServiceProvider.has


injecute() ​

injecute<D, R>(factory, dependencies): Promise<Awaited<R>>

Defined in: src/types.ts:837

Runs a function (or class) with resolved dependencies, without registering it.

Type Parameters ​

D ​

D extends Dependency<S, A>[]

R ​

R

Parameters ​

factory ​

((...args) => R) | (new (...args) => R)

dependencies ​

[...D[]]

Returns ​

Promise<Awaited<R>>


namespace() ​

namespace<N, NA, Req>(name, extension): AsyncServiceRegistry<S, A & { [K in string | number | symbol]: AsyncNamespacedServices<N, NA>[K] }>

Defined in: src/types.ts:796

Registers the services added by extension under name.: name.key for each of them, and name for the namespace's provider. The extension receives a fork of this container.

Type Parameters ​

N ​

N extends string

NA ​

NA extends object

Req ​

Req extends object = S & A

Parameters ​

name ​

N

extension ​

[S & A] extends [Req] ? (registry) => AsyncServiceRegistry<any, NA> : object

Returns ​

AsyncServiceRegistry<S, A & { [K in string | number | symbol]: AsyncNamespacedServices<N, NA>[K] }>

Released under the MIT License.