import type { AlovaGenerics, AlovaOptions, AlovaRequestAdapter, Method, ResponseCompleteHandler } from 'alova'; export type CustomAlovaConfig = Omit< AlovaOptions, 'statesHook' | 'beforeRequest' | 'responded' | 'requestAdapter' > & { /** request adapter. all request of alova will be sent by it. */ requestAdapter?: AlovaRequestAdapter; }; export interface RequestOptions { /** * The hook before request * * For example: You can add header token in this hook * * @param method alova Method Instance */ onRequest?: AlovaOptions['beforeRequest']; /** * The hook to check backend response is success or not * * @param response alova response */ isBackendSuccess: (response: AG['Response']) => Promise; /** The config to refresh token */ tokenRefresher?: { /** detect the token is expired */ isExpired(response: AG['Response'], Method: Method): Promise | boolean; /** refresh token handler */ handler(response: AG['Response'], Method: Method): Promise; }; /** The hook after backend request complete */ onComplete?: ResponseCompleteHandler; /** * The hook to handle error * * For example: You can show error message in this hook * * @param error */ onError?: (error: any, response: AG['Response'] | null, methodInstance: Method) => any | Promise; /** * transform backend response when the responseType is json * * @param response alova response */ transformBackendResponse: (response: AG['Response']) => any; }