UNPKG

@augment-vir/common

Version:

A collection of augments, helpers types, functions, and classes for any JavaScript environment.

35 lines (34 loc) 1.17 kB
import { type PartialWithUndefined } from '@augment-vir/common'; import { type AtLeastOneDuration } from '@date-vir/duration'; import { type IsEqual } from 'type-fest'; /** * Calls `callback` until it doesn't throw an error or throws an error when `maxRetries` is reached. * Similar to the `waitUntil` guard from '@augment-vir/assert' but doesn't check the callback's * output. * * @category Function * @category Package : @augment-vir/common * @example * * ```ts * import {callWithRetries} from '@augment-vir/common'; * * const result = callWithRetries(5, () => { * if (Math.random() < 0.5) { * return 'done'; * } else { * throw new Error(); * } * }); * ``` * * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common) */ export declare function retry<const T, const Duration extends AtLeastOneDuration | undefined = undefined>(maxRetries: number, callback: () => T, options?: PartialWithUndefined<{ /** * Wait this duration between each retry. * * @default {seconds: 1} */ interval: Duration; }>): IsEqual<Duration, undefined> extends true ? T : Promise<Awaited<T>>;