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
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
readonlykeys: readonlyServiceKey[]
Defined in: src/types.ts:686
Keys visible from this container, including its parents'.
Inherited from
ownKeys
readonlyownKeys: readonlyServiceKey[]
Defined in: src/types.ts:689
Keys registered in this container.
Inherited from
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
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<Oextendsobject?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
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
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
options?
Returns
boolean
Inherited from
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] }>