UNPKG

@node-ts/bus-workflow

Version:

A workflow engine for orchestrating logic flows in distributed applications.

32 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Handles = exports.WorkflowHandlesMetadata = exports.WORKFLOW_HANDLES_METADATA_KEY = void 0; const message_workflow_mapping_1 = require("../message-workflow-mapping"); const reflect_extensions_1 = require("../../utility/reflect-extensions"); exports.WORKFLOW_HANDLES_METADATA_KEY = Symbol.for('node-ts/bus/workflow-handles-steps'); class WorkflowHandlesMetadata { static addStep(metadata, target) { reflect_extensions_1.ReflectExtensions.defineMetadata(exports.WORKFLOW_HANDLES_METADATA_KEY, metadata, target.constructor); } static getSteps(target) { return Reflect.getMetadata(exports.WORKFLOW_HANDLES_METADATA_KEY, target) || []; } } exports.WorkflowHandlesMetadata = WorkflowHandlesMetadata; /** * Flags that a function within a workflow handles a message of a particular type. When a message * of this type is received from the bus, the `messageLookup` function will be executed for all * workflow types that have functions decorated with `Handles` for that message type. * @param messageConstructor The message that this function handles * @param messageLookup A function that returns a value based on the message used to look up workflow data by * @param workflowDataProperty A field in the workflow data to look up matched message data on */ function Handles(messageConstructor, messageLookup, workflowDataProperty) { return (target, propertyKey) => WorkflowHandlesMetadata.addStep({ propertyKey, messageConstructor, messageWorkflowMapping: new message_workflow_mapping_1.MessageWorkflowMapping(messageLookup, workflowDataProperty) }, target); } exports.Handles = Handles; //# sourceMappingURL=handles.js.map