@pinia/colada-plugin-retry
Version:
Retry failed requests with Pinia Colada
70 lines (69 loc) • 2.45 kB
text/typescript
import { ShallowRef } from "vue";
import { PiniaColadaPluginContext } from "@pinia/colada";
//#region src/retry.d.ts
/**
* Options for the Pinia Colada Retry plugin.
*/
interface RetryOptions {
/**
* The delay between retries. Can be a duration in ms or a function that
* receives the attempt number (starts at 0) and returns a duration in ms. By
* default, it will wait 2^attempt * 1000 ms, but never more than 30 seconds.
*
* @param attempt -
* @returns
*/
delay?: number | ((attempt: number) => number);
/**
* The maximum number of times to retry the operation. Set to 0 to disable or
* to Infinity to retry forever. It can also be a function that receives the
* failure count and the error and returns if it should retry. Defaults to 3.
* **Must be a positive number**.
*/
retry?: number | ((failureCount: number, error: unknown) => boolean);
}
interface RetryEntry {
retryCount: number;
timeoutId?: ReturnType<typeof setTimeout>;
}
/**
* Plugin that adds the ability to retry failed queries.
*
* @param globalOptions - global options for the retries
*/
declare function PiniaColadaRetry(globalOptions?: RetryOptions): (context: PiniaColadaPluginContext) => void;
declare module '@pinia/colada' {
interface UseQueryOptions<TData, TError, TDataInitial> {
/**
* Options for the retries of this query added by `@pinia/colada-plugin-retry`.
*/
retry?: RetryOptions | Exclude<RetryOptions['retry'], undefined>;
}
interface UseQueryEntryExtensions<TData, TError, TDataInitial> {
/**
* Whether the query is currently retrying. Requires the `@pinia/colada-plugin-retry` plugin.
*/
isRetrying: ShallowRef<boolean>;
/**
* The number of retries that have been scheduled so far. Resets on success or manual refetch.
* Requires the `@pinia/colada-plugin-retry` plugin.
*/
retryCount: ShallowRef<number>;
/**
* The error that triggered the current retry. `null` when not retrying or when retries are exhausted.
* Requires the `@pinia/colada-plugin-retry` plugin.
*/
retryError: ShallowRef<TError | null>;
/**
* Plain object with retry state for devtools. Only present in development mode.
*/
retry?: {
isRetrying: boolean;
retryCount: number;
retryError: unknown;
};
}
}
//#endregion
export { PiniaColadaRetry, RetryEntry, RetryOptions };
//# sourceMappingURL=index.d.mts.map