Dependency Injection
VeloxTS includes a DI container for managing dependencies.
Container Basics
Section titled “Container Basics”import { Container, token } from '@veloxts/core';
const container = new Container();
// Register a valuecontainer.register(token<Database>('DATABASE'), { useValue: new PrismaClient(),});
// Resolveconst db = container.resolve<Database>('DATABASE');Token Types
Section titled “Token Types”import { token } from '@veloxts/core';
// Symbol tokens (collision-proof)const DATABASE = token.symbol<PrismaClient>('DATABASE');const LOGGER = token.symbol<Logger>('LOGGER');Registration Patterns
Section titled “Registration Patterns”container.register(DATABASE, { useValue: new PrismaClient(),});Factory
Section titled “Factory”container.register(LOGGER, { useFactory: () => createLogger({ level: 'info' }),});container.register(USER_SERVICE, { useClass: UserService,});Scopes
Section titled “Scopes”// 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' });