@russ-b/nestjs-common-tools
Version:
NestJS utility tools
74 lines • 3.27 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var OutboxModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OutboxModule = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const entities_1 = require("./entities");
const outbox_constants_1 = require("./outbox.constants");
const outbox_options_util_1 = require("./outbox-options.util");
const services_1 = require("./services");
let OutboxModule = OutboxModule_1 = class OutboxModule {
static forRoot(options = {}) {
return {
module: OutboxModule_1,
global: options.global,
imports: [typeorm_1.TypeOrmModule.forFeature([entities_1.OutboxEvent], options.dataSource)],
providers: [
createOutboxOptionsProvider(options),
createOutboxRepositoryProvider(options.dataSource),
services_1.OutboxService,
services_1.OutboxCleanupWorker,
],
exports: [services_1.OutboxService, services_1.OutboxCleanupWorker],
};
}
static forRootAsync(options) {
return {
module: OutboxModule_1,
global: options.global,
imports: [
...(options.imports ?? []),
typeorm_1.TypeOrmModule.forFeature([entities_1.OutboxEvent], options.dataSource),
],
providers: [
createOutboxAsyncOptionsProvider(options),
createOutboxRepositoryProvider(options.dataSource),
services_1.OutboxService,
services_1.OutboxCleanupWorker,
],
exports: [services_1.OutboxService, services_1.OutboxCleanupWorker],
};
}
};
exports.OutboxModule = OutboxModule;
exports.OutboxModule = OutboxModule = OutboxModule_1 = __decorate([
(0, common_1.Module)({})
], OutboxModule);
function createOutboxOptionsProvider(options) {
return {
provide: outbox_constants_1.OUTBOX_MODULE_OPTIONS,
useValue: (0, outbox_options_util_1.resolveOutboxModuleOptions)(options),
};
}
function createOutboxAsyncOptionsProvider(options) {
return {
provide: outbox_constants_1.OUTBOX_MODULE_OPTIONS,
useFactory: async (...args) => (0, outbox_options_util_1.resolveOutboxModuleOptions)(await options.useFactory(...args)),
inject: options.inject ?? [],
};
}
function createOutboxRepositoryProvider(dataSource) {
return {
provide: outbox_constants_1.OUTBOX_EVENT_REPOSITORY,
inject: [(0, typeorm_1.getRepositoryToken)(entities_1.OutboxEvent, dataSource)],
useFactory: (repository) => repository,
};
}
//# sourceMappingURL=outbox.module.js.map