UNPKG

@sotatech/nest-taskflow

Version:

A task flow management library for NestJS with Redis Pub/Sub integration.

85 lines 3.8 kB
"use strict"; 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