Interface: ServiceRegistry<S, A>
Defined in: src/types.ts:524
Read + register: what extension (module) functions and namespace() callbacks receive. It cannot add middlewares, listen to events, fork or dispose; that is the composition root's job (the DIContainer itself).
S is the services the registry was given, A the services added through it; it resolves both (S & A). Registrations grow only A, so S (usually the whole container) stays one type and lookups into it are computed once per callback, which keeps long modules cheap to typecheck.
Example
A module declares only what it needs
const addBilling = (c: ServiceRegistry<{ db: Database }>) =>
c.addSingleton('invoices', InvoiceRepository, ['db']);
app.extend(addBilling);Extends
ServiceProvider<RegistryServices<S,A>>
Type Parameters
S
S extends object = { }
A
A extends object = { }
Properties
keys
readonlykeys: readonlyServiceKey[]
Defined in: src/types.ts:394
Keys visible from this container, including its parents'.
Inherited from
ownKeys
readonlyownKeys: readonlyServiceKey[]
Defined in: src/types.ts:397
Keys registered in this container.
Inherited from
Methods
addAlias()
addAlias<
K,T,R>(key,target,options?):ServiceRegistry<S,Registered<A,{ [P in ServiceKey]: ResolveDependency<T, S, A> },R>>
Defined in: src/types.ts:573
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
ServiceRegistry<S, Registered<A, { [P in ServiceKey]: ResolveDependency<T, S, A> }, R>>
addInstance()
addInstance<
K,T,R>(key,value,options?):ServiceRegistry<S,Registered<A,{ [P in ServiceKey]: T },R>>
Defined in: src/types.ts:562
Registers an existing value.
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
ServiceRegistry<S, Registered<A, { [P in ServiceKey]: T }, R>>
addSingleton()
addSingleton<
K,F,D,R>(key,factory,dependencies?):ServiceRegistry<S,Registered<A,{ [P in ServiceKey]: Produced<F> },R>>
Defined in: src/types.ts:532
Registers a service created once and cached. factory is a function or a class; it receives the dependencies in order.
Type Parameters
K
K extends ServiceKey
F
F extends Factory<D, S, A, ExpectedService<K>>
D
D extends Dependency<S, A>[] = []
R
R extends boolean = false
Parameters
key
K
factory
F
dependencies?
[...D[]] | SingletonFactoryOptions<[...D[]], F, R>
Returns
ServiceRegistry<S, Registered<A, { [P in ServiceKey]: Produced<F> }, R>>
addTransient()
addTransient<
K,F,D,R>(key,factory,dependencies?):ServiceRegistry<S,Registered<A,{ [P in ServiceKey]: Produced<F> },R>>
Defined in: src/types.ts:547
Registers a service created on every resolution.
Type Parameters
K
K extends ServiceKey
F
F extends Factory<D, S, A, ExpectedService<K>>
D
D extends Dependency<S, A>[] = []
R
R extends boolean = false
Parameters
key
K
factory
F
dependencies?
[...D[]] | RegistrationOptions<[...D[]], R>
Returns
ServiceRegistry<S, Registered<A, { [P in ServiceKey]: Produced<F> }, R>>
bind()
bind<
D,R>(dependencies,factory): () =>R
Defined in: src/types.ts:630
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
() => R
call()
call<
K>(key,args,thisArg?):ReturnType<Extract<ServiceType<RegistryServices<S,A>,K>, (...args) =>any>>
Defined in: src/types.ts:387
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
ReturnType<Extract<ServiceType<RegistryServices<S, A>, K>, (...args) => any>>
Inherited from
createResolver()
createResolver<
K>(key): () =>ServiceType<RegistryServices<S,A>,K>
Defined in: src/types.ts:382
Returns a function that resolves key when called.
Type Parameters
K
K extends string | number | symbol
Parameters
key
K | TaggedKey<any, K>
Returns
() => ServiceType<RegistryServices<S, A>, K>
Inherited from
ServiceProvider.createResolver
extend()
extend<
EA,Req>(extension):ServiceRegistry<S,A& { [K in string | number | symbol]: EA[K] }>
Defined in: src/types.ts:610
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) => ServiceRegistry<any, EA> : object
Returns
ServiceRegistry<S, A & { [K in string | number | symbol]: EA[K] }>
get()
get<
K,O>(key,options?):Oextendsobject?ServiceType<RegistryServices<S,A>,K> |undefined:ServiceType<RegistryServices<S,A>,K>
Defined in: src/types.ts:371
Resolves a service. Throws 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
O extends object ? ServiceType<RegistryServices<S, A>, K> | undefined : ServiceType<RegistryServices<S, A>, K>
Inherited from
getParent()
getParent():
ServiceProvider<{ }> |undefined
Defined in: src/types.ts:400
The parent container (read-only view), if any.
Returns
ServiceProvider<{ }> | undefined
Inherited from
getRegistration()
getRegistration(
key):RegistrationInfo|undefined
Defined in: src/types.ts:403
Read-only metadata of the registration visible under key, or undefined.
Parameters
key
Returns
RegistrationInfo | undefined
Inherited from
ServiceProvider.getRegistration
has()
has(
key,options?):boolean
Defined in: src/types.ts:379
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):R
Defined in: src/types.ts:622
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
R
namespace()
namespace<
N,NA,Req>(name,extension):ServiceRegistry<S,A& { [K in string | number | symbol]: NamespacedServices<N, NA>[K] }>
Defined in: src/types.ts:590
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) => ServiceRegistry<any, NA> : object
Returns
ServiceRegistry<S, A & { [K in string | number | symbol]: NamespacedServices<N, NA>[K] }>