UNPKG

durabull

Version:

A durable workflow engine built on top of BullMQ and Redis

59 lines (58 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Durabull = void 0; let activeInstance = null; class Durabull { constructor(config) { this.workflowRegistry = new Map(); this.activityRegistry = new Map(); this.config = { ...config, queues: { workflow: config.queues?.workflow || 'durabull:workflow', activity: config.queues?.activity || 'durabull:activity', }, serializer: config.serializer || 'json', pruneAge: config.pruneAge || '30 days', logger: config.logger, lifecycleHooks: config.lifecycleHooks, queueRouter: config.queueRouter, }; } getConfig() { return this.config; } registerWorkflow(name, WorkflowClass) { this.workflowRegistry.set(name, WorkflowClass); } resolveWorkflow(name) { return this.workflowRegistry.get(name) || null; } registerActivity(name, ActivityClass) { this.activityRegistry.set(name, ActivityClass); } resolveActivity(name) { return this.activityRegistry.get(name) || null; } getQueues(workflowName, context) { if (this.config.queueRouter && workflowName) { const routed = this.config.queueRouter(workflowName, context); return { workflow: routed.workflow || this.config.queues.workflow, activity: routed.activity || this.config.queues.activity, }; } return { workflow: this.config.queues.workflow, activity: this.config.queues.activity, }; } setActive() { // eslint-disable-next-line @typescript-eslint/no-this-alias activeInstance = this; } static getActive() { return activeInstance; } } exports.Durabull = Durabull;