UNPKG

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