Skip to Content
DocsClaDIUtilitiesCreation Helpers

Creation Helpers

Creation helpers provide a concise API for composition-root wiring.

createToken<T>()

Create strongly typed dependency identifiers:

src/tokens.ts
import { createToken } from "@elsikora/cladi"; export const UserRepoToken = createToken<{ findById(id: string): Promise<unknown> }>("UserRepo");

createDIContainer()

Create a container instance:

src/container.ts
import { createDIContainer } from "@elsikora/cladi"; const container = createDIContainer({ scopeName: "root" });

createLazyProvider()

Create explicit lazy resolver providers:

src/lazy-provider.ts
import { createLazyProvider, createToken } from "@elsikora/cladi"; const RepoToken = createToken<{ getById(id: string): Promise<unknown> }>("Repo"); const LazyRepoToken = createToken<() => Promise<{ getById(id: string): Promise<unknown> }>>("LazyRepo"); container.register(createLazyProvider(LazyRepoToken, RepoToken));

createLogger()

Create a console logger with typed options:

src/logger.ts
import { createLogger, ELoggerLogLevel } from "@elsikora/cladi"; const logger = createLogger({ level: ELoggerLogLevel.INFO, source: "Bootstrap", });

Decorator Composition Helpers

When using decorators, these helpers bridge class metadata to provider/module composition:

  • createAutowireProvider(Class, options) - explicit class-provider creation from metadata and options.
  • autowire(Class) - shorthand that reads token and lifecycle/dependency metadata from @Injectable.
  • createModuleFromDecorator(ModuleClass) - converts @Module classes into plain IDIModule definitions.
  • composeDecoratedModules(container, modules) - composes mixed decorated module classes and plain modules directly.

Testing Helper Package

For app-level test composition, use the companion package @elsikora/cladi-testing, documented here:

Last updated on