povtor
Version:
Repeat function call depending on the previous call result and specified conditions.
45 lines (44 loc) • 1.46 kB
TypeScript
export declare type RetryAction = (...args: unknown[]) => Promise<unknown> | unknown;
export declare type GetRetryTimeout = (result?: RetryResult) => unknown;
export declare type RetryTimeout = number | GetRetryTimeout;
export declare type RetryTest = (value?: unknown, result?: RetryResult) => boolean;
export interface RetrySettings {
action: RetryAction;
actionContext?: unknown;
actionParams?: unknown[];
delay?: number;
retryAttempts?: RetryTimeout[];
retryQty?: number;
retryTimeout?: RetryTimeout;
retryOnError?: boolean | RetryTest;
retryTest?: boolean | RetryTest;
timeLimit?: number;
[field: string]: unknown;
}
export interface ValueResult {
time: number;
value: unknown;
}
export interface ErrorResult {
error: unknown;
time: number;
}
export declare type ActionCallResult = ValueResult | ErrorResult;
export interface WithPromiseField {
promise: Promise<unknown>;
}
export interface RetryResult extends WithPromiseField {
attempt: number;
error: unknown;
isError: boolean;
result: ActionCallResult[];
settings: RetrySettings;
startTime: number;
stop: () => Promise<unknown>;
stopped: boolean;
value: unknown;
valueWait: boolean;
wait: boolean;
}
export declare function retry(settings: RetrySettings): RetryResult;
export declare function getPromiseField(obj: WithPromiseField): Promise<unknown>;