UNPKG

mollitia

Version:

JavaScript Resilience Library

101 lines (99 loc) 2.99 kB
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 {};