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

Interface: StartableModule()<Needs, Added, AsyncAdded> ​

Defined in: src/utils/lifecycle.ts:956

The module startable returns: apply it with extend() (or namespace()) to a DIContainer or an AsyncDIContainer. Needs are the services it requires; Added and AsyncAdded what it registers in each.

Example ​

ts
const consumer: StartableModule<{ bus: Bus }, { consumer: Consumer }, { consumer: Consumer }> =
  startable('consumer', Consumer, ['bus'], { start: (c) => c.start() });
app.extend(consumer);

Type Parameters ​

Needs ​

Needs extends object

Added ​

Added extends object

AsyncAdded ​

AsyncAdded extends object

StartableModule<R>(registry): R extends AsyncServiceRegistry<any, any> ? AsyncServiceRegistry<any, AsyncAdded> : ServiceRegistry<any, Added>

Defined in: src/utils/lifecycle.ts:965

Registers the service and its hook in a DIContainer's or an AsyncDIContainer's registry (or a module's).

Type Parameters ​

R ​

R extends ServiceRegistry<Needs, { }> | AsyncServiceRegistry<Needs, { }>

Parameters ​

registry ​

R

Returns ​

R extends AsyncServiceRegistry<any, any> ? AsyncServiceRegistry<any, AsyncAdded> : ServiceRegistry<any, Added>

Released under the MIT License.