UNPKG

@goparrot/pubsub-event-bus

Version:
149 lines 6.13 kB
"use strict"; var CqrsModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.CqrsModule = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const cqrs_1 = require("@nestjs/cqrs"); const provider_1 = require("./provider"); const service_1 = require("./service"); const configuration_1 = require("./utils/configuration"); const utils_1 = require("./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: configuration_1.CQRS_MODULE_OPTIONS, useValue: options, }, ], }; } static forRootAsync(options) { return { module: CqrsModule_1, global: options.isGlobal, imports: options.imports, providers: [ { provide: configuration_1.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 (!(0, utils_1.appInTestingMode)()) { await this.pubSubEventBinder.registerPubSubEvents(this.explorerService.pubsubEvents()); } } }; exports.CqrsModule = CqrsModule; exports.CqrsModule = CqrsModule = CqrsModule_1 = tslib_1.__decorate([ (0, common_1.Module)({ imports: [cqrs_1.CqrsModule], providers: [ service_1.QueryBus, service_1.EventBus, service_1.Producer, service_1.Consumer, service_1.CommandBus, service_1.ExplorerService, service_1.PubSubReflector, service_1.PubSubEventBinder, { provide: configuration_1.CQRS_CONNECTION_URLS, useFactory(options) { return options.connections; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: provider_1.LoggerProvider, useFactory(options) { return provider_1.LoggerProvider.forLogger(options.logger || new common_1.Logger()); }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: configuration_1.CQRS_MODULE_CONSUMER_OPTIONS, useFactory(options) { var _a; return { ...configuration_1.DEFAULT_CONSUMER_OPTIONS, ...(_a = options.config) === null || _a === void 0 ? void 0 : _a.consumer }; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: configuration_1.CQRS_CONNECTION_NAME, useFactory(options) { return options.connectionName; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: configuration_1.CQRS_EXCHANGE_CONFIG, useFactory(options) { var _a; return { ...configuration_1.DEFAULT_EXCHANGE_CONFIGURATION, ...(_a = options.config) === null || _a === void 0 ? void 0 : _a.exchange }; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: configuration_1.CQRS_PRODUCER_CONFIG, useFactory(options) { var _a; return { ...configuration_1.DEFAULT_PRODUCER_CONFIGURATION, ...(_a = options.config) === null || _a === void 0 ? void 0 : _a.producer }; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: configuration_1.CQRS_BINDING_QUEUE_CONFIG, useFactory(options) { var _a; return { ...configuration_1.DEFAULT_QUEUE_BINDING_CONFIGURATION, ...(_a = options.config) === null || _a === void 0 ? void 0 : _a.bindings }; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: configuration_1.CQRS_CONNECTION_MANAGER_OPTIONS, useFactory(options) { var _a; return { ...configuration_1.DEFAULT_CONNECTION_MANAGER_OPTIONS, ...(_a = options.config) === null || _a === void 0 ? void 0 : _a.connectionManagerOptions }; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, { provide: configuration_1.CQRS_RETRY_OPTIONS, useFactory(options) { return { ...configuration_1.DEFAULT_RETRY_OPTIONS, ...options.retryOptions }; }, inject: [configuration_1.CQRS_MODULE_OPTIONS], }, ...(0, provider_1.createRetryStrategiesProviders)(), ...(0, provider_1.createPrepareHandlerStrategiesProviders)(), ], exports: [service_1.EventBus, service_1.CommandBus, service_1.QueryBus, service_1.Producer, service_1.Consumer], }), tslib_1.__metadata("design:paramtypes", [service_1.QueryBus, service_1.EventBus, service_1.CommandBus, service_1.ExplorerService, service_1.PubSubEventBinder]) ], CqrsModule); //# sourceMappingURL=CqrsModule.js.map