@axion-io/nestjs
v0.0.1
Published
NestJS integration module for @axion-io/core — provides AxionModule with forRoot/forRootAsync.
Readme
@axion-io/nestjs
NestJS integration for @axion-io/core — registers OperationManager, OutboxWriter, and WakeUpPublisher as global providers via AxionModule.
Installation
npm install @axion-io/core @axion-io/nestjsPeer dependencies: @nestjs/common, @nestjs/core.
Usage
Static registration
import { Module } from '@nestjs/common';
import { AxionModule } from '@axion-io/nestjs';
import { PostgresOperationManager, PostgresOutboxWriter } from '@axion-io/postgres';
@Module({
imports: [
AxionModule.forRoot({
operationManager: new PostgresOperationManager(sqlExecutor, txRunner),
outboxWriter: new PostgresOutboxWriter(sqlExecutor),
}),
],
})
export class AppModule {}Async registration
AxionModule.forRootAsync({
imports: [ConfigModule],
useFactory: (config: ConfigService) => ({
operationManager: new PostgresOperationManager(
config.get('sqlExecutor'),
config.get('txRunner'),
),
outboxWriter: new PostgresOutboxWriter(config.get('sqlExecutor')),
wakeUpPublisher: config.get('wakeUpPublisher'),
}),
inject: [ConfigService],
})For async registration, AXION_WAKE_UP_PUBLISHER is exported even when the factory omits wakeUpPublisher; in that case the token resolves to undefined.
Injecting tokens
import {
AXION_OPERATION_MANAGER,
AXION_OUTBOX_WRITER,
AXION_WAKE_UP_PUBLISHER,
} from '@axion-io/nestjs';
@Injectable()
export class TimesheetService {
constructor(
@Inject(AXION_OPERATION_MANAGER) private readonly operationManager: OperationManager,
@Inject(AXION_OUTBOX_WRITER) private readonly outboxWriter: OutboxWriter,
) {}
}Exports
| Token | Type |
| --- | --- |
| AXION_OPERATION_MANAGER | OperationManager |
| AXION_OUTBOX_WRITER | OutboxWriter |
| AXION_WAKE_UP_PUBLISHER | WakeUpPublisher (undefined for async registration when omitted) |
AxionModule is @Global() — providers are available to all modules without re-importing.
