UNPKG

abit-cache

Version:
86 lines (85 loc) 3.16 kB
import type { Dispatch, SetStateAction } from 'react'; import AbitCache from '../services/AbitCache'; type TKey = string | object | unknown[]; type TAbortSignal = { signal: AbortSignal; }; type TCacheFetcher<Data> = (key: TKey, signal: TAbortSignal) => Promise<Data>; type TOnErrorRetry = (err: Error, key: TKey, revalidate: () => Promise<void>) => void; type TOnSettled<Data, Variables> = (data: Data | null, error: Error | null, variables: Variables) => void; type TCacheOptions<Data = unknown> = { isEnabled?: boolean; isSuspense?: boolean; staleTime?: number; isRevalidateIfStale?: boolean; isRevalidateOnFocus?: boolean; isRevalidateOnReconnect?: boolean; isKeepPreviousData?: boolean; shouldRetryOnError?: boolean; errorRetryInterval?: number; errorRetryCount?: number; dedupingInterval?: number; focusThrottleInterval?: number; onSuccess?: (data: Data, key: TKey) => void; onError?: (err: Error, key: TKey) => void; onErrorRetry?: TOnErrorRetry; isDeepEqual?: (a: Data | null, b: Data | null) => boolean; }; type TOptimisticFunction<Data> = (previousData: Data | null) => Data; type TMutateOptions<Data, Variables> = { isRevalidate?: boolean; isRollbackOnError?: boolean; optimisticData?: Data | TOptimisticFunction<Data>; onSuccess?: (data: Data) => void; onError?: (error: Error) => void; onSettled?: TOnSettled<Data, Variables>; }; type TMutateFetcher<Data, Variables> = (variables: Variables, abortSignal: TAbortSignal) => Promise<Data>; type TCacheEntry<Data = unknown> = { data: Data; timestamp: number; }; type TCacheConfig = { readonly Cache: AbitCache; } & TCacheOptions; type TUseQueryReturn<Data> = { data: Data | null; error: Error | null; isLoading: boolean; clear: () => void; invalidate: (key: TKey) => void; invalidateMatching: (pattern: string) => void; revalidate: () => Promise<void>; }; type TRevalidateOnFocusParams = { key: TKey; isRevalidateOnFocus: boolean; isEnabled: boolean; staleTime: number; focusThrottleInterval: number; revalidate: () => Promise<void>; }; type TOnReconnectParams = { key: TKey; staleTime: number; isEnabled: boolean; isRevalidateOnReconnect: boolean; revalidate: () => Promise<void>; }; type TUseRevalidateParams<Data> = { key: TKey; isEnabled: boolean; shouldRetryOnError: boolean; errorRetryInterval: number; errorRetryCount: number; dedupingInterval: number; fetcher: TCacheFetcher<Data>; setIsLoading: Dispatch<SetStateAction<boolean>>; setData: (newData: Data) => void; setError: Dispatch<SetStateAction<Error | null>>; onSuccess?: (data: Data, key: TKey) => void; onError?: (err: Error, key: TKey) => void; onErrorRetry?: TOnErrorRetry; }; type TDefaultConfig = Required<Omit<TCacheConfig, 'onErrorRetry' | 'onSuccess' | 'onError'>>; export type { TCacheConfig, TCacheEntry, TCacheFetcher, TCacheOptions, TDefaultConfig, TKey, TMutateFetcher, TMutateOptions, TOnReconnectParams, TOptimisticFunction, TRevalidateOnFocusParams, TUseQueryReturn, TUseRevalidateParams, };