@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
TypeScript
/**
* @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;
}