mollitia
Version:
JavaScript Resilience Library
101 lines (99 loc) • 2.99 kB
TypeScript
import { Module, ModuleOptions } from './index.js';
import { Circuit, CircuitFunction } from '../circuit.js';
type RetryCallback = (err: any, attempt: number) => boolean | number;
export declare enum RetryMode {
CONSTANT = "constant",
LINEAR = "linear",
EXPONENTIAL = "exponential",
JITTER = "jitter"
}
/**
* Properties that customizes the retry behavior.
*/
export declare abstract class RetryOptions extends ModuleOptions {
/**
* The number of retry attempts (the function will be called attempts + 1 times).
*/
attempts?: number;
/**
* The amount of time to wait before retrying.
*/
interval?: number;
/**
* The mode for the retry (constant, linear, exponential or jitter)
*/
mode?: RetryMode;
/**
* The factor to be applied for the retry mode
*/
factor?: number;
/**
* The maximum amount of time to wait before retrying another time
*/
maxInterval?: number;
/**
* Should the first retry be done directly after a failure occurred
*/
fastFirst?: boolean;
/**
* The value (between 0 and 1) to adjust delay randomly based on jitter retry duration
*/
jitterAdjustment?: number;
/**
* A filtering callback, to modify the retry behavior.
* @returns true (retries), false (rejects), number (retries after some delay)
*/
onRejection?: RetryCallback;
}
/**
* The Retry Module, that allows to retry a function after it fails.
*/
export declare class Retry extends Module {
/**
* The number of retry attempts (the function will be called attempts + 1 times).
*/
attempts: number;
/**
* The amount of time to wait before retrying.
*/
interval: number;
/**
* The mode for the retry (constant, linear, exponential or jitter)
*/
mode: RetryMode;
/**
* The factor to be applied for the retry mode
*/
factor: number;
/**
* The maximum amount of time to wait before retrying another time
*/
maxInterval: number;
/**
* Should the first retry be done directly after a failure occurred
*/
fastFirst: boolean;
/**
* The value to adjust delay randomly based on jitter retry duration
*/
private _jitterAdjustment;
/**
* A filtering callback, to modify the retry behavior.
* @returns true (retries), false (rejects), number (retries after some delay)
*/
onRejection: RetryCallback;
/**
* The value (between 0 and 1) to adjust delay randomly based on jitter retry duration
*/
get jitterAdjustment(): number;
/**
* Set the value (between 0 and 1) for jitter adjustment (to adjust delay randomly).
*/
set jitterAdjustment(val: number);
private adjustJitterValue;
constructor(options?: RetryOptions);
execute<T>(circuit: Circuit, promise: CircuitFunction, ...params: any[]): Promise<T>;
private waitBeforeNextTry;
private _promiseRetry;
}
export {};