UNPKG

2.88 kBTypeScriptView Raw
1export declare type fetcherFn<Data> = (...args: any) => Data | Promise<Data>;
2export interface ConfigInterface<Data = any, Error = any, Fn extends fetcherFn<Data> = fetcherFn<Data>> {
3 errorRetryInterval?: number;
4 loadingTimeout?: number;
5 focusThrottleInterval?: number;
6 dedupingInterval?: number;
7 refreshInterval?: number;
8 refreshWhenHidden?: boolean;
9 refreshWhenOffline?: boolean;
10 revalidateOnFocus?: boolean;
11 revalidateOnReconnect?: boolean;
12 shouldRetryOnError?: boolean;
13 fetcher?: Fn;
14 suspense?: boolean;
15 initialData?: Data;
16 onLoadingSlow?: (key: string, config: ConfigInterface<Data, Error>) => void;
17 onSuccess?: (data: Data, key: string, config: ConfigInterface<Data, Error>) => void;
18 onError?: (err: Error, key: string, config: ConfigInterface<Data, Error>) => void;
19 onErrorRetry?: (err: Error, key: string, config: ConfigInterface<Data, Error>, revalidate: revalidateType, revalidateOpts: RevalidateOptionInterface) => void;
20}
21export interface RevalidateOptionInterface {
22 retryCount?: number;
23 dedupe?: boolean;
24}
25declare type keyFunction = () => string | any[] | null;
26export declare type keyInterface = keyFunction | string | any[] | null;
27export declare type updaterInterface<Data = any, Error = any> = (shouldRevalidate?: boolean, data?: Data, error?: Error, shouldDedupe?: boolean) => boolean | Promise<boolean>;
28export declare type triggerInterface = (key: keyInterface, shouldRevalidate?: boolean) => void;
29export declare type mutateInterface<Data = any> = (key: keyInterface, data: Data | Promise<Data>, shouldRevalidate?: boolean) => void;
30export declare type broadcastStateInterface<Data = any, Error = any> = (key: string, data: Data, error?: Error) => void;
31export declare type responseInterface<Data, Error> = {
32 data?: Data;
33 error?: Error;
34 revalidate: () => Promise<boolean>;
35 isValidating: boolean;
36};
37export declare type revalidateType = (revalidateOpts: RevalidateOptionInterface) => Promise<boolean>;
38export declare type pagesWithSWRType<Data, Error> = (swr: responseInterface<Data, Error>) => responseInterface<Data, Error>;
39export declare type pagesPropsInterface<Offset, Data, Error> = {
40 offset: Offset;
41 withSWR: pagesWithSWRType<Data, Error>;
42};
43export declare type pageComponentType<Offset, Data, Error> = (props: pagesPropsInterface<Offset, Data, Error>) => any;
44export declare type pageOffsetMapperType<Offset, Data, Error> = (SWR: responseInterface<Data, Error>, index: number) => Offset;
45export declare type pagesResponseInterface = {
46 pages: any;
47 pageCount: number;
48 pageSWRs: responseInterface<any, any>[];
49 isLoadingMore: boolean;
50 isReachingEnd: boolean;
51 isEmpty: boolean;
52 loadMore: () => void;
53};
54export declare type actionType<Data, Error> = {
55 data?: Data;
56 error?: Error;
57 isValidating?: boolean;
58};
59export {};