@sotatech/nest-taskflow
Version:
A task flow management library for NestJS with Redis Pub/Sub integration.
85 lines • 3.8 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 TaskFlowModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaskFlowModule = void 0;
const common_1 = require("@nestjs/common");
const nestjs_redis_1 = require("@liaoliaots/nestjs-redis");
const taskflow_service_1 = require("./taskflow.service");
const constants_1 = require("./constants");
const callback_module_1 = require("./callback/callback.module");
const strategies_1 = require("./strategies");
let TaskFlowModule = TaskFlowModule_1 = class TaskFlowModule {
static createStrategyProviders() {
return Array.from(strategies_1.StrategyRegistry['strategies'].entries()).map(([_, StrategyClass]) => ({
provide: StrategyClass,
useClass: StrategyClass,
}));
}
static forRoot(options) {
const strategyProviders = this.createStrategyProviders();
return {
module: TaskFlowModule_1,
imports: [
nestjs_redis_1.RedisModule.forRoot({
...options.redis,
config: [
{ ...options.redis.config, namespace: 'client' },
{ ...options.redis.config, namespace: 'subscriber' },
],
}),
callback_module_1.CallbackModule,
],
providers: [
taskflow_service_1.TaskFlowService,
strategies_1.StrategyRegistry,
{ provide: constants_1.TASKFLOW_OPTIONS, useValue: options },
...strategyProviders,
],
exports: [taskflow_service_1.TaskFlowService, constants_1.TASKFLOW_OPTIONS],
};
}
static forRootAsync(asyncOptions, isGlobal = true) {
const strategyProviders = this.createStrategyProviders();
return {
module: TaskFlowModule_1,
imports: [
nestjs_redis_1.RedisModule.forRootAsync({
useFactory: async (options) => ({
...options.redis,
config: [
{ ...options.redis.config, namespace: 'client' },
{ ...options.redis.config, namespace: 'subscriber' },
],
}),
inject: [constants_1.TASKFLOW_OPTIONS],
}),
...(asyncOptions.imports || []),
callback_module_1.CallbackModule,
],
providers: [
{
provide: constants_1.TASKFLOW_OPTIONS,
useFactory: asyncOptions.useFactory,
inject: asyncOptions.inject || [],
},
taskflow_service_1.TaskFlowService,
strategies_1.StrategyRegistry,
...strategyProviders,
],
exports: [taskflow_service_1.TaskFlowService, constants_1.TASKFLOW_OPTIONS],
global: isGlobal,
};
}
};
exports.TaskFlowModule = TaskFlowModule;
exports.TaskFlowModule = TaskFlowModule = TaskFlowModule_1 = __decorate([
(0, common_1.Global)(),
(0, common_1.Module)({})
], TaskFlowModule);
//# sourceMappingURL=taskflow.module.js.map