@node-ts/bus-workflow
Version:
A workflow engine for orchestrating logic flows in distributed applications.
27 lines • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StartedBy = exports.WorkflowStartedByMetadata = exports.WORKFLOW_STARTED_BY_METADATA_KEY = void 0;
const reflect_extensions_1 = require("../../utility/reflect-extensions");
exports.WORKFLOW_STARTED_BY_METADATA_KEY = Symbol.for('node-ts/bus/workflow-started-by-metadata');
class WorkflowStartedByMetadata {
static addStep(metadata, target) {
reflect_extensions_1.ReflectExtensions.defineMetadata(exports.WORKFLOW_STARTED_BY_METADATA_KEY, metadata, target.constructor);
}
static getSteps(target) {
return Reflect.getMetadata(exports.WORKFLOW_STARTED_BY_METADATA_KEY, target) || [];
}
}
exports.WorkflowStartedByMetadata = WorkflowStartedByMetadata;
/**
* A handler that starts a new workflow whenever a message of the handled type is received. A workflow can be started
* by one or more message types.
* @param messageConstructor The type of message that starts a new workflow
*/
function StartedBy(messageConstructor) {
return (target, propertyKey) => WorkflowStartedByMetadata.addStep({
propertyKey,
messageConstructor
}, target);
}
exports.StartedBy = StartedBy;
//# sourceMappingURL=started-by.js.map