flechette
Version:
A highly configurable wrapper for Fetch API that supports programmatic retries and completely obfuscates promise handling.
49 lines (48 loc) • 1.65 kB
TypeScript
export declare const reservedKeyName = "flechette";
export interface NetResponse {
statusCode: number;
response: string;
sent: SendArgs;
}
export interface FlechetteResponse {
success: boolean;
statusCode: number;
response: any;
sent: SendArgs;
}
export interface SendArgs extends RequestInit {
path: string;
instanceName?: string;
retryActions?: Array<RetryAction>;
}
export declare type ResponseFunc = (response: FlechetteResponse | Array<FlechetteResponse>) => void;
export declare type ToggleFunc = (isWaiting: boolean) => void;
export declare type RetryFunc = (response: FlechetteResponse, successFunc: ResponseFunc, failureFunc: ResponseFunc) => void;
export interface RetryAction {
code: number;
action: RetryFunc;
pathsToIgnore?: Array<string>;
}
export interface Flechette {
successCodes?: Array<number | string>;
retryActions?: Array<RetryAction>;
timeout?: number;
maxTimeoutRetryCount?: number;
baseUrl?: string;
headers?: Headers;
instanceName?: string;
}
export declare class FlechetteController {
successCodes: Array<number | string>;
retryActions: Array<RetryAction>;
timeout: number;
maxTimeoutRetryCount: number;
baseUrl: string;
headers: Headers | string[][] | Record<string, string> | undefined;
instanceName: string;
abortController: AbortController;
constructor(props: Flechette);
abortCurrentFetch(): void;
}
export declare const configureFlechette: (i?: Flechette | undefined) => FlechetteController;
export declare const getFlechetteInstance: (instanceName?: string | undefined) => FlechetteController;