@jescrich/nestjs-workflow
Version:
Workflow and State Machines for NestJS
83 lines • 3.91 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 WorkflowModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WorkflowModule = void 0;
const common_1 = require("@nestjs/common");
const service_1 = require("./service");
const entity_service_1 = require("./entity.service");
const client_1 = require("./kafka/client");
let WorkflowModule = WorkflowModule_1 = class WorkflowModule {
static register(params) {
const providers = params.providers ?? [];
if (params.kafka && params.kafka.enabled) {
providers.push({
provide: client_1.KafkaClient,
useFactory: () => new client_1.KafkaClient(params.kafka?.clientId, params.kafka?.brokers),
});
}
if (params.definition.entity === undefined) {
throw new Error('Workflow definition must have an Entity defined');
}
const isEntityServiceAClass = typeof params.definition.entity === 'function' && params.definition.entity.prototype !== undefined;
const isEntityServiceAProvider = isEntityServiceAClass ||
(typeof params.definition.entity === 'object' &&
'provide' in params.definition.entity &&
'useClass' in params.definition.entity);
return {
module: WorkflowModule_1,
imports: [...(params.imports ?? [])],
providers: [
!isEntityServiceAProvider
? {
provide: (service_1.WorkflowService),
useFactory: (moduleRef) => {
return new service_1.WorkflowService(params.definition);
},
inject: [],
}
: {
provide: (service_1.WorkflowService),
useFactory: (entityService) => {
return new service_1.WorkflowService(params.definition, entityService);
},
inject: [(entity_service_1.EntityService)],
},
!isEntityServiceAProvider
? {
provide: params.name,
useFactory: (moduleRef) => {
return new service_1.WorkflowService(params.definition);
},
inject: [],
}
: {
provide: params.name,
useFactory: (entityService) => {
return new service_1.WorkflowService(params.definition, entityService);
},
inject: [(entity_service_1.EntityService)],
},
...(params.providers ?? []),
],
exports: [
(service_1.WorkflowService),
{
provide: params.name,
useExisting: (service_1.WorkflowService),
},
...(params.kafka?.enabled ? [client_1.KafkaClient] : []),
],
};
}
};
exports.WorkflowModule = WorkflowModule;
exports.WorkflowModule = WorkflowModule = WorkflowModule_1 = __decorate([
(0, common_1.Module)({})
], WorkflowModule);
//# sourceMappingURL=module.js.map
;