chrono-forge
Version:
A comprehensive framework for building resilient Temporal workflows, advanced state management, and real-time streaming activities in TypeScript. Designed for a seamless developer experience with powerful abstractions, dynamic orchestration, and full cont
25 lines (24 loc) • 926 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Hook = void 0;
require("reflect-metadata");
const metadata_1 = require("./metadata");
const Hook = (options = {}) => {
return (target, propertyKey) => {
const hooks = Reflect.getMetadata(metadata_1.HOOKS_METADATA_KEY, target) || {};
const addHook = (hookType, methodName, position) => {
hooks[hookType] = hooks[hookType] || { before: [], after: [] };
if (!hooks[hookType][position].includes(methodName)) {
hooks[hookType][position].push(methodName);
}
};
if (options.before) {
addHook(options.before, propertyKey, 'before');
}
if (options.after) {
addHook(options.after, propertyKey, 'after');
}
Reflect.defineMetadata(metadata_1.HOOKS_METADATA_KEY, hooks, target);
};
};
exports.Hook = Hook;