mollitia
Version:
JavaScript Resilience Library
80 lines (78 loc) • 1.98 kB
TypeScript
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;
}