Skip to content

Dependency Injection

VeloxTS includes a DI container for managing dependencies.

import { Container, token } from '@veloxts/core';
const container = new Container();
// Register a value
container.register(token<Database>('DATABASE'), {
useValue: new PrismaClient(),
});
// Resolve
const db = container.resolve<Database>('DATABASE');
import { token } from '@veloxts/core';
// Symbol tokens (collision-proof)
const DATABASE = token.symbol<PrismaClient>('DATABASE');
const LOGGER = token.symbol<Logger>('LOGGER');
container.register(DATABASE, {
useValue: new PrismaClient(),
});
container.register(LOGGER, {
useFactory: () => createLogger({ level: 'info' }),
});
container.register(USER_SERVICE, {
useClass: UserService,
});
// Singleton (default)
container.register(DATABASE, { useValue: db, scope: 'singleton' });
// Scoped (per request)
container.register(TENANT, { useFactory: fn, scope: 'scoped' });
// Transient (new instance each time)
container.register(LOGGER, { useClass: Logger, scope: 'transient' });