@goparrot/pubsub-event-bus
Version:
NestJS EventBus extension for RabbitMQ PubSub
149 lines • 6.13 kB
JavaScript
;
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