UNPKG

node-circuit-breaker

Version:

Circuit Breaker: Decorators and tools that can easily apply the Circuit Breaker pattern.

22 lines (21 loc) 1.06 kB
"use strict"; 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;