@node-ts/bus-workflow
Version:
A workflow engine for orchestrating logic flows in distributed applications.
32 lines • 1.77 kB
JavaScript
;
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