UNPKG

@goparrot/pubsub-event-bus

Version:
141 lines 5.54 kB
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