@goparrot/pubsub-event-bus
Version:
NestJS EventBus extension for RabbitMQ PubSub
141 lines • 5.54 kB
JavaScript
var CqrsModule_1;
import { __decorate, __metadata } from "tslib";
import { Logger, Module } from '@nestjs/common';
import { CqrsModule as NestCqrsModule } from '@nestjs/cqrs';
import { createPrepareHandlerStrategiesProviders, createRetryStrategiesProviders, LoggerProvider } from './provider';
import { CommandBus, Consumer, EventBus, ExplorerService, Producer, PubSubEventBinder, PubSubReflector, QueryBus } from './service';
import { CQRS_BINDING_QUEUE_CONFIG, CQRS_CONNECTION_MANAGER_OPTIONS, CQRS_CONNECTION_NAME, CQRS_CONNECTION_URLS, CQRS_EXCHANGE_CONFIG, CQRS_MODULE_CONSUMER_OPTIONS, CQRS_MODULE_OPTIONS, CQRS_PRODUCER_CONFIG, CQRS_RETRY_OPTIONS, DEFAULT_CONNECTION_MANAGER_OPTIONS, DEFAULT_CONSUMER_OPTIONS, DEFAULT_EXCHANGE_CONFIGURATION, DEFAULT_PRODUCER_CONFIGURATION, DEFAULT_QUEUE_BINDING_CONFIGURATION, DEFAULT_RETRY_OPTIONS, } from './utils/configuration';
import { appInTestingMode } from './utils';
let CqrsModule = CqrsModule_1 = class CqrsModule {
constructor(queryBus, eventsBus, commandsBus, explorerService, pubSubEventBinder) {
this.queryBus = queryBus;
this.eventsBus = eventsBus;
this.commandsBus = commandsBus;
this.explorerService = explorerService;
this.pubSubEventBinder = pubSubEventBinder;
}
static forRoot(options) {
return {
module: CqrsModule_1,
global: options.isGlobal,
providers: [
{
provide: CQRS_MODULE_OPTIONS,
useValue: options,
},
],
};
}
static forRootAsync(options) {
return {
module: CqrsModule_1,
global: options.isGlobal,
imports: options.imports,
providers: [
{
provide: CQRS_MODULE_OPTIONS,
useFactory: options.useFactory,
inject: options.inject,
},
],
};
}
async onApplicationBootstrap() {
const { events, queries, sagas, commands } = this.explorerService.explore();
this.commandsBus.register(commands);
this.queryBus.register(queries);
this.eventsBus.registerSagas(sagas);
this.eventsBus.register(events);
if (!appInTestingMode()) {
await this.pubSubEventBinder.registerPubSubEvents(this.explorerService.pubsubEvents());
}
}
};
CqrsModule = CqrsModule_1 = __decorate([
Module({
imports: [NestCqrsModule],
providers: [
QueryBus,
EventBus,
Producer,
Consumer,
CommandBus,
ExplorerService,
PubSubReflector,
PubSubEventBinder,
{
provide: CQRS_CONNECTION_URLS,
useFactory(options) {
return options.connections;
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: LoggerProvider,
useFactory(options) {
return LoggerProvider.forLogger(options.logger || new Logger());
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: CQRS_MODULE_CONSUMER_OPTIONS,
useFactory(options) {
return { ...DEFAULT_CONSUMER_OPTIONS, ...options.config?.consumer };
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: CQRS_CONNECTION_NAME,
useFactory(options) {
return options.connectionName;
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: CQRS_EXCHANGE_CONFIG,
useFactory(options) {
return { ...DEFAULT_EXCHANGE_CONFIGURATION, ...options.config?.exchange };
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: CQRS_PRODUCER_CONFIG,
useFactory(options) {
return { ...DEFAULT_PRODUCER_CONFIGURATION, ...options.config?.producer };
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: CQRS_BINDING_QUEUE_CONFIG,
useFactory(options) {
return { ...DEFAULT_QUEUE_BINDING_CONFIGURATION, ...options.config?.bindings };
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: CQRS_CONNECTION_MANAGER_OPTIONS,
useFactory(options) {
return { ...DEFAULT_CONNECTION_MANAGER_OPTIONS, ...options.config?.connectionManagerOptions };
},
inject: [CQRS_MODULE_OPTIONS],
},
{
provide: CQRS_RETRY_OPTIONS,
useFactory(options) {
return { ...DEFAULT_RETRY_OPTIONS, ...options.retryOptions };
},
inject: [CQRS_MODULE_OPTIONS],
},
...createRetryStrategiesProviders(),
...createPrepareHandlerStrategiesProviders(),
],
exports: [EventBus, CommandBus, QueryBus, Producer, Consumer],
}),
__metadata("design:paramtypes", [QueryBus,
EventBus,
CommandBus,
ExplorerService,
PubSubEventBinder])
], CqrsModule);
export { CqrsModule };
//# sourceMappingURL=CqrsModule.js.map