UNPKG

@poomcha/retrier

Version:

Retry synchronous or asynchronous functions.

366 lines (363 loc) 16.5 kB
interface EffectCallback<T> { callback: (...args: any) => T | Promise<T>; args?: any[]; override?: boolean; } type RetryOptionsSync<OnSuccess, OnFailure> = { onSuccess?: EffectCallback<OnSuccess>; onFailure?: EffectCallback<OnFailure>; }; type RetryOptionsAsync<OnSuccess, OnFailure> = { delay?: number; } & RetryOptionsSync<OnSuccess, OnFailure>; type RetrierOptions<OnSuccess, OnFailure> = { maxRetries?: number; } & RetryOptionsAsync<OnSuccess, OnFailure>; /** * The Retrier class provides methods to retry operations synchronously and asynchronously * with a specified number of retries. * * @see [source](https://github.com/Poomcha/retrier) * */ declare class Retrier { protected _maxRetries: number; protected readonly _maxRetriesDefault: number; protected _delay: number; protected readonly _delayDefault: number; protected _onSuccess: EffectCallback<any> | undefined; protected _onFailure: EffectCallback<any> | undefined; /** * Constructs a new Retrier instance with optional configuration options. * @constructor * * @param options - Optional configuration options. * @param options.maxRetries - The maximum number of retries. * @param options.delay - Delay between two retries in ms. * @param options.onSuccess - onSuccess callback, can override default return. * @param options.onFailure - onFailure callback, can override default error throwing. * @throws Will throw an error if the maxRetries or delay are not valid positive integer * [0, Number.MAX_SAFE_INTEGER]. */ constructor(options?: RetrierOptions<any, any>); /** * Gets the maximum number of retries. * * @returns The maximum number of retries. */ getMaxRetries(): number; /** * Gets the delay between retries. * * @returns Delay between retries. */ getDelay(): number; /** * Get the _onSuccess private member. * * @returns _onSuccess member */ getOnSuccess(): EffectCallback<any> | undefined; /** * Get the _onFailure private member. * * @returns _onFailure member. */ getOnFailure(): EffectCallback<any> | undefined; /** * Sets the maximum number of retries. * * @param n - The number of retries to set. * @throws Will throw an error if the number is not a valid positive integer. */ setMaxRetries(n: number): void; /** * Sets the delay between retries. * * @param delay - Delay between retries. * @throws Will throw an error if the number is not a valid positive integer */ setDelay(delay: number): void; /** * Sets the _onSuccess member * * @param onSuccess * @param onSuccess.callback Callback to call on success * @param onSuccess.args Arguments to pass to the callback * @param onSuccess.override If true, override default behaviour of retry functions */ setOnSuccess<T>(onSuccess: EffectCallback<T>): void; /** * Sets the _onFailure member * * @param onFailure * @param onFailure.callback Callback to call on failure * @param onFailure.args Arguments to pass to the callback * @param onFailure.override If true, override default behaviour of retry functions */ setOnFailure<T>(onFailure: EffectCallback<T>): void; /** * Retries a synchronous operation, with a specified number of retries. * Returns the result of the operation as soon as it succeed, or throws * operation's error. * Give access to onSuccess and onFailure optionnal handlers to handle * success or failure. * onSuccess and onFailure are given operation result as first argument. * * @see [source](https://github.com/Poomcha/retrier) * * * @param maxRetries - Positive integer, max number of retries <code>(Number[0, MAX_SAFE_INTEGER])</code>. * @param callback - Function to retry. * @param args - Optionnal arguments for callback. * * * @param options - Optionnal options. * * * @param options.onSuccess - * @param options.onSuccess.callback - Function to run on success. * @param options.onSuccess.args - Optionnal arguments for onSuccess.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onSuccess.override - Optionnal boolean, if true retrySync will return options.onSuccess.callback result. * * @param options.Failure - * @param options.onFailure.callback - Function to run on failure. * @param options.onFailure.args - Optionnal arguments for onFailure.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onFailure.override - Boolean, if true retrySync will return options.onFailure.callback result. * * * @returns callback result or options.onSuccess.callback result or options.onFailure.callback result. * * * @throw callback error or options.onSuccess.callback error or options.onFailure.callback error. */ static retryStaticSync<T, OnSuccess, OnFailure>(maxRetries: number, callback: (...args: any[]) => T, args?: any[], options?: RetryOptionsSync<OnSuccess, OnFailure>): T | OnSuccess | OnFailure; /** * Retries an asynchronous operation, with a specified number of retries. * Returns the result of the operation as soon as it succeed, or throws * operation's error. * Give access to onSuccess and onFailure optionnal handlers to handle * success or failure. * onSuccess and onFailure are given operation result as first argument. * * @see [source](https://github.com/Poomcha/retrier) * * @param maxRetries - Positive integer, max number of retries <code>(Number[0, MAX_SAFE_INTEGER])</code>. * @param callback - Function to retry. * @param args - Optionnal arguments for callback. * * * @param options - Optionnal options. * * @param options.delay - Positive integer, delay between 2 retry. * * @param options.onSuccess - * @param options.onSuccess.callback - Function to run on success. * @param options.onSuccess.args - Optionnal arguments for onSuccess.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onSuccess.override - Optionnal boolean, if true retrySync will return options.onSuccess.callback result. * * @param options.Failure - * @param options.onFailure.callback - Function to run on failure. * @param options.onFailure.args - Optionnal arguments for onFailure.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onFailure.override - Boolean, if true retrySync will return options.onFailure.callback result. * * * @returns callback result or options.onSuccess.callback result or options.onFailure.callback result. * * * @throw callback error or options.onSuccess.callback error or options.onFailure.callback error. */ static retryStaticAsync<T, OnSuccess, OnFailure>(maxRetries: number, callback: (...args: any[]) => Promise<T>, args?: any[], options?: RetryOptionsAsync<OnSuccess, OnFailure>): Promise<T | OnSuccess | OnFailure>; /** * Retries a synchronous operation, with a specified number of retries. * Returns the result of the operation as soon as it succeed, or throws * operation's error. * Give access to onSuccess and onFailure optionnal handlers to handle * success or failure. * onSuccess and onFailure are given operation result as first argument. * * @see [source](https://github.com/Poomcha/retrier) * * * @param callback - Function to retry. * @param args - Optionnal arguments for callback. * * * @param options - Optionnal options, overule instance configuration. * * @param options.maxRetries - Positive integer, max number of retries <code>(Number[0, MAX_SAFE_INTEGER])</code>. * * @param options.onSuccess - * @param options.onSuccess.callback - Function to run on success. * @param options.onSuccess.args - Optionnal arguments for onSuccess.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onSuccess.override - Optionnal boolean, if true retrySync will return options.onSuccess.callback result. * * @param options.Failure - * @param options.onFailure.callback - Function to run on failure. * @param options.onFailure.args - Optionnal arguments for onFailure.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onFailure.override - Boolean, if true retrySync will return options.onFailure.callback result. * * * @returns callback result or options.onSuccess.callback result or options.onFailure.callback result. * * * @throw callback error or options.onSuccess.callback error or options.onFailure.callback error. */ retrySync<T, OnSuccess, OnFailure>(callback: (...args: any[]) => T, args?: any[], options?: RetrierOptions<OnSuccess, OnFailure>): T | OnSuccess | OnFailure; /** * Retries an asynchronous operation, with a specified number of retries. * Returns the result of the operation as soon as it succeed, or throws * operation's error. * Give access to onSuccess and onFailure optionnal handlers to handle * success or failure. * onSuccess and onFailure are given operation result as first argument. * * @see [source](https://github.com/Poomcha/retrier) * * @param callback - Function to retry. * @param args - Optionnal arguments for callback. * * * @param options - Optionnal options. * * @param options.maxRetries - Positive integer, max number of retries <code>(Number[0, MAX_SAFE_INTEGER])</code>. * * @param options.delay - Positive integer, delay between 2 retry. * * @param options.onSuccess - * @param options.onSuccess.callback - Function to run on success. * @param options.onSuccess.args - Optionnal arguments for onSuccess.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onSuccess.override - Optionnal boolean, if true retrySync will return options.onSuccess.callback result. * * @param options.Failure - * @param options.onFailure.callback - Function to run on failure. * @param options.onFailure.args - Optionnal arguments for onFailure.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onFailure.override - Boolean, if true retrySync will return options.onFailure.callback result. * * * @returns callback result or options.onSuccess.callback result or options.onFailure.callback result. * * * @throw callback error or options.onSuccess.callback error or options.onFailure.callback error. */ retryAsync<T, OnSuccess, OnFailure>(callback: (...args: any[]) => Promise<T>, args?: any[], options?: RetrierOptions<OnSuccess, OnFailure>): Promise<T | OnSuccess | OnFailure>; /** * Internal method to retry a synchronous operation. * * @param callback - The callback function to retry. * @param retry - The current retry count. * @param args - Optional arguments to pass to the callback. * @param options - Optional retry options. * @returns The result of the callback function. * @throws Will throw an error if all retries fail. */ private static _retrySync; /** * Internal method to retry an asynchronous operation. * * @param callback - The callback function to retry. * @param retry - The current retry count. * @param args - Optional arguments to pass to the callback. * @param options - Optional retry options. * @returns A promise that resolves to the result of the callback function. * @throws Will throw an error if all retries fail. */ private static _retryAsync; /** * Internal method to set options configuration for non static sync methods * * @param options */ private makeOptionsSync; /** * Internal method to set options configuration for non static async methods * * @param options */ private makeOptionsAsync; } /** * Retries a synchronous operation, with a specified number of retries. * Returns the result of the operation as soon as it succeed, or throws * operation's error. * Give access to onSuccess and onFailure optionnal handlers to handle * success or failure. * onSuccess and onFailure are given operation result as first argument. * * @see [source](https://github.com/Poomcha/retrier) * * * @param maxRetries - Positive integer, max number of retries <code>(Number[0, MAX_SAFE_INTEGER])</code>. * @param callback - Function to retry. * @param args - Optionnal arguments for callback. * * * @param options - Optionnal options. * * * @param options.onSuccess - * @param options.onSuccess.callback - Function to run on success. * @param options.onSuccess.args - Optionnal arguments for onSuccess.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onSuccess.override - Optionnal boolean, if true retrySync will return options.onSuccess.callback result. * * @param options.Failure - * @param options.onFailure.callback - Function to run on failure. * @param options.onFailure.args - Optionnal arguments for onFailure.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onFailure.override - Boolean, if true retrySync will return options.onFailure.callback result. * * * @returns callback result or options.onSuccess.callback result or options.onFailure.callback result. * * * @throw callback error or options.onSuccess.callback error or options.onFailure.callback error. */ declare const retrySync: typeof Retrier.retryStaticSync; /** * Retries an asynchronous operation, with a specified number of retries. * Returns the result of the operation as soon as it succeed, or throws * operation's error. * Give access to onSuccess and onFailure optionnal handlers to handle * success or failure. * onSuccess and onFailure are given operation result as first argument. * * @see [source](https://github.com/Poomcha/retrier) * * @param maxRetries - Positive integer, max number of retries <code>(Number[0, MAX_SAFE_INTEGER])</code>. * @param callback - Function to retry. * @param args - Optionnal arguments for callback. * * * @param options - Optionnal options. * * @param options.delay - Positive integer, delay between 2 retry. * * @param options.onSuccess - * @param options.onSuccess.callback - Function to run on success. * @param options.onSuccess.args - Optionnal arguments for onSuccess.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onSuccess.override - Optionnal boolean, if true retrySync will return options.onSuccess.callback result. * * @param options.Failure - * @param options.onFailure.callback - Function to run on failure. * @param options.onFailure.args - Optionnal arguments for onFailure.callback, * first argument will always be global callback result as <code>[res, ...args]</code>. * @param options.onFailure.override - Boolean, if true retrySync will return options.onFailure.callback result. * * * @returns callback result or options.onSuccess.callback result or options.onFailure.callback result. * * * @throw callback error or options.onSuccess.callback error or options.onFailure.callback error. */ declare const retryAsync: typeof Retrier.retryStaticAsync; export { Retrier, retryAsync, retrySync };