@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.
95 lines (94 loc) • 3.34 kB
TypeScript
/**
* @module CircuitBreaker
*/
import { type CircuitBreakerState } from "../../circuit-breaker/contracts/circuit-breaker-state.contract.js";
import { type ICircuitBreakerStateMethods } from "../../circuit-breaker/contracts/circuit-breaker.contract.js";
/**
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type CircuitBreakerEventBase = {
circuitBreaker: ICircuitBreakerStateMethods;
};
/**
* The event is dispatched when a circuit breaker has transitioned state.
*
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type StateTransitionCircuitBreakerEvent = CircuitBreakerEventBase & {
from: CircuitBreakerState;
to: CircuitBreakerState;
};
/**
* The event is dispatched when a circuit breaker has tracked failure.
*
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type TrackedFailureCircuitBreakerEvent = CircuitBreakerEventBase & {
error: unknown;
};
/**
* The event is dispatched when a circuit breaker has untracked failure.
*
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type UntrackedFailureCircuitBreakerEvent = CircuitBreakerEventBase & {
error: unknown;
};
/**
* The event is dispatched when a circuit breaker has tracked slow call.
*
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type TrackedSlowCallCircuitBreakerEvent = CircuitBreakerEventBase;
/**
* The event is dispatched when a circuit breaker has tracked successful call.
*
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type TrackedSuccessCircuitBreakerEvent = CircuitBreakerEventBase;
/**
* The event is dispatched when circuit breaker has been reseted.
*
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type ResetedCircuitBreakerEvent = CircuitBreakerEventBase;
/**
* The event is dispatched when circuit breaker has been reseted.
*
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type IsolatedCircuitBreakerEvent = CircuitBreakerEventBase;
/**
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export declare const CIRCUIT_BREAKER_EVENTS: {
readonly STATE_TRANSITIONED: "STATE_TRANSITIONED";
readonly RESETED: "RESETED";
readonly UNTRACKED_FAILURE: "IGNORED_ERRROR";
readonly TRACKED_SUCCESS: "TRACKED_SUCCESS";
readonly TRACKED_FAILURE: "TRACKED_FAILURE";
readonly TRACKED_SLOW_CALL: "TRACKED_SLOW_CALL";
readonly ISOLATED: "ISOLATED";
};
/**
* IMPORT_PATH: `"@daiso-tech/core/circuit-breaker/contracts"`
* @group Events
*/
export type CircuitBreakerEventMap = {
[CIRCUIT_BREAKER_EVENTS.STATE_TRANSITIONED]: StateTransitionCircuitBreakerEvent;
[CIRCUIT_BREAKER_EVENTS.TRACKED_FAILURE]: TrackedFailureCircuitBreakerEvent;
[CIRCUIT_BREAKER_EVENTS.UNTRACKED_FAILURE]: UntrackedFailureCircuitBreakerEvent;
[CIRCUIT_BREAKER_EVENTS.TRACKED_SLOW_CALL]: TrackedSlowCallCircuitBreakerEvent;
[CIRCUIT_BREAKER_EVENTS.TRACKED_SUCCESS]: TrackedSuccessCircuitBreakerEvent;
[CIRCUIT_BREAKER_EVENTS.RESETED]: ResetedCircuitBreakerEvent;
[CIRCUIT_BREAKER_EVENTS.ISOLATED]: IsolatedCircuitBreakerEvent;
};