UNPKG

@daiso-tech/core

Version:

The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.

75 lines (68 loc) 2.77 kB
/** * @module CircuitBreaker */ import { CIRCUIT_BREAKER_STATE, CLOSED_TRANSITIONS, HALF_OPEN_TRANSITIONS, } from "../../../../../circuit-breaker/contracts/_module.js"; /** * @internal */ export const consecutiveBreakerLua = ` -- @param settings Required<ConsecutiveBreakerSettings> -- @return ICircuitBreakerPolicy<ConsecutiveBreakerState> local function ConsecutiveBreaker(settings) return { -- @return ConsecutiveBreakerState initialMetrics = function() return { failureCount = 0, successCount = 0, } end, -- @param currentMetrics ConsecutiveBreakerState -- @param _currentDate number -- @return ClosedTransitions whenClosed = function(currentMetrics, _currentDate) local hasFailed = currentMetrics.failureCount >= settings.failureThreshold if hasFailed then return "${CLOSED_TRANSITIONS.TO_OPEN}" end return "${CLOSED_TRANSITIONS.NONE}" end, -- @param currentMetrics ConsecutiveBreakerState -- @param _currentDate number -- @return HalfOpenTransitions whenHalfOpened = function(currentMetrics, _currentDate) local hasFailed = currentMetrics.failureCount > 0 if hasFailed then return "${HALF_OPEN_TRANSITIONS.TO_OPEN}" end local hasSucceeded = currentMetrics.successCount >= settings.successThreshold if hasSucceeded then return "${HALF_OPEN_TRANSITIONS.TO_CLOSED}" end return "${HALF_OPEN_TRANSITIONS.NONE}" end, -- @param currentState CircuitBreakerTrackState<ConsecutiveBreakerState> -- @param _settings CircuitBreakerTrackSettings<ConsecutiveBreakerState> -- @return ConsecutiveBreakerState trackFailure = function(currentState, _settings) return { failureCount = currentState.metrics.failureCount + 1, successCount = currentState.metrics.successCount, } end, -- @param currentState CircuitBreakerTrackState<ConsecutiveBreakerState> -- @param _settings CircuitBreakerTrackSettings<ConsecutiveBreakerState> -- @return ConsecutiveBreakerState trackSuccess = function(currentState, settings) if currentState.type == "${CIRCUIT_BREAKER_STATE.CLOSED}" then return settings.initialMetrics end return { failureCount = currentState.metrics.failureCount, successCount = currentState.metrics.successCount + 1, } end } end `; //# sourceMappingURL=consecutive-breaker-lua.js.map