node-circuit-breaker
Version:
Circuit Breaker: Decorators and tools that can easily apply the Circuit Breaker pattern.
22 lines (21 loc) • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CircuitBreaker = void 0;
const circuit_breaker_manager_1 = require("../circuit-breaker-manager");
function CircuitBreaker(options) {
options.timeoutMilliSeconds = options.timeoutMilliSeconds || 0;
return function (target, propertyKey, descriptor) {
if (options.rules.length <= 0)
throw new Error(`CircuitBreaker: [${target.constructor.name}.${propertyKey.toString()}] Rule(timeoutMs, exceptions) is empty.`);
const func = descriptor.value;
// const circuit = CircuitBreakerManager.createCircuit(target.constructor, propertyKey.toString(), func, options);
descriptor.value = function (...args) {
const trace = {};
Error.captureStackTrace(trace);
// @ts-ignore
return circuit_breaker_manager_1.CircuitBreakerManager.invoke(this, func, propertyKey.toString(), options, trace, ...args);
};
return descriptor;
};
}
exports.CircuitBreaker = CircuitBreaker;