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 readstokenand lifecycle/dependency metadata from@Injectable.createModuleFromDecorator(ModuleClass)- converts@Moduleclasses into plainIDIModuledefinitions.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