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 (74 loc) 2.57 kB
/** * @module CircuitBreaker */ import { type HalfOpenTransitions, type CircuitBreakerTrackSettings, type CircuitBreakerTrackState, type ICircuitBreakerPolicy, type ClosedTransitions } from "../../../../circuit-breaker/contracts/_module.js"; /** * IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/policies"` * @group Policies */ export type CountBreakerSettings = { /** * Percentage (from 0 to 1) failures before going from closed -> open. * * @default 0.2 */ failureThreshold?: number; /** * Percentage (from 0 to 1) successes before going from half-open -> closed. * * @default * ```ts * 1 - settings.failureThreshold * ``` */ successThreshold?: number; /** * Size of the count based sliding window. * * @default 20 */ size?: number; /** * The minimum number of calls to go from closed -> open, half-opened -> closed or half-opened -> open. * * @default * ```ts * settings.size * ``` */ minimumNumberOfCalls?: number; }; /** * @internal */ export declare function resolveCountBreakerSettings(settings: CountBreakerSettings): Required<CountBreakerSettings>; /** * IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/policies"` * @group Policies */ export type CountBreakerState = { samples: Array<boolean>; }; /** * The `CountBreaker` breaks after a proportion of requests in a count based sliding window fail. * * IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/policies"` * @group Policies */ export declare class CountBreaker implements ICircuitBreakerPolicy<CountBreakerState> { private readonly failureThreshold; private readonly successThreshold; private readonly minimumNumberOfCalls; private readonly size; constructor(settings?: CountBreakerSettings); initialMetrics(): CountBreakerState; private static failureCount; private static successCount; private isMinimumNotMet; whenClosed(currentMetrics: CountBreakerState, _currentDate: Date): ClosedTransitions; whenHalfOpened(currentMetrics: CountBreakerState, _currentDate: Date): HalfOpenTransitions; private track; trackFailure(currentState: CircuitBreakerTrackState<CountBreakerState>, _settings: CircuitBreakerTrackSettings<CountBreakerState>): CountBreakerState; trackSuccess(currentState: CircuitBreakerTrackState<CountBreakerState>, _settings: CircuitBreakerTrackSettings<CountBreakerState>): CountBreakerState; isEqual(metricsA: CountBreakerState, metricsB: CountBreakerState): boolean; }