UNPKG

mollitia

Version:

JavaScript Resilience Library

80 lines (78 loc) 1.98 kB
import { EventEmitter } from './helpers/event.js'; import { Module } from './module/index.js'; /** * Returned when a circuit has no function defined. * @param message Circuit has no function set */ export declare class NoFuncError extends Error { constructor(); } export type CircuitFunction = (...params: any[]) => Promise<any>; export interface Logger { debug(message?: any, ...optionalParams: any[]): void; info(message?: any, ...optionalParams: any[]): void; warn(message?: any, ...optionalParams: any[]): void; } /** * Properties that customizes the circuit behavior. */ export declare abstract class CircuitOptions { /** * Module list, by order of execution. */ modules?: Module[]; } /** * Properties that defines the circuit. */ export declare abstract class CircuitFactory { /** * The Circuit name. */ name?: string; /** * The Circuit function. */ func?: CircuitFunction; /** * The Circuit options. */ options?: CircuitOptions; } /** * Array containing every circuit. */ export declare const circuits: Circuit[]; /** * The Circuit Class, that may contain Modules to add resilience patterns. */ export declare class Circuit extends EventEmitter { /** * The Circuit name. */ name: string; /** * The Circuit function. */ func: CircuitFunction; /** * Module list, by order of execution. */ modules: Module[]; constructor(factory?: CircuitFactory); get activeModules(): Module[]; /** * Modifies the Circuit function. * @param {CircuitFunction} func The Circuit function. */ fn(func: CircuitFunction): Circuit; /** * Executes the Circuit function. * @param params Eventual parameters to pass to the Circuit function. */ execute<T>(...params: any[]): Promise<T>; /** * Disposes the Circuit, to cleanup every interval and timeouts. */ dispose(): void; }