@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.
42 lines (41 loc) • 1.84 kB
TypeScript
/**
* @module CircuitBreaker
*/
import { type CircuitBreakerEventMap, type CircuitBreakerTrigger, type ICircuitBreakerAdapter } from "../../../../circuit-breaker/contracts/_module.js";
import { CircuitBreaker, type ISerializedCircuitBreaker } from "../../../../circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker.js";
import { type IEventBus } from "../../../../event-bus/contracts/_module.js";
import { type Namespace } from "../../../../namespace/_module.js";
import { type ISerdeTransformer } from "../../../../serde/contracts/_module.js";
import { type TimeSpan } from "../../../../time-span/implementations/_module.js";
import { type ErrorPolicy, type OneOrMore } from "../../../../utilities/_module.js";
/**
* @internal
*/
export type CircuitBreakerSerdeTransformerSettings = {
adapter: ICircuitBreakerAdapter;
namespace: Namespace;
slowCallTime: TimeSpan;
errorPolicy: ErrorPolicy;
trigger: CircuitBreakerTrigger;
eventBus: IEventBus<CircuitBreakerEventMap>;
serdeTransformerName: string;
enableAsyncTracking: boolean;
};
/**
* @internal
*/
export declare class CircuitBreakerSerdeTransformer implements ISerdeTransformer<CircuitBreaker, ISerializedCircuitBreaker> {
private readonly adapter;
private readonly namespace;
private readonly slowCallTime;
private readonly errorPolicy;
private readonly trigger;
private readonly eventBus;
private readonly serdeTransformerName;
private readonly enableAsyncTracking;
constructor(settings: CircuitBreakerSerdeTransformerSettings);
get name(): OneOrMore<string>;
isApplicable(value: unknown): value is CircuitBreaker;
deserialize(serializedValue: ISerializedCircuitBreaker): CircuitBreaker;
serialize(deserializedValue: CircuitBreaker): ISerializedCircuitBreaker;
}