UNPKG

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

39 lines (38 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Step = void 0; require("reflect-metadata"); const metadata_1 = require("./metadata"); const Step = (options = {}) => { return (target, propertyKey, descriptor) => { const stepName = options.name ?? propertyKey; const originalMethod = descriptor.value; descriptor.value = async function (...args) { try { return await originalMethod.apply(this, args); } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); this.log?.error?.(`Step '${stepName}' failed: ${errorMessage}`); throw error; } }; const steps = Reflect.getMetadata(metadata_1.STEP_METADATA_KEY, target) ?? []; steps.push({ name: stepName, method: propertyKey, condition: options.condition, when: options.when, before: options.before, after: options.after, retries: options.retries ?? 0, timeout: options.timeout, required: options.required !== false, onError: options.onError, executed: false }); Reflect.defineMetadata(metadata_1.STEP_METADATA_KEY, steps, target); return descriptor; }; }; exports.Step = Step;