svelte-simple-query
Version:
A simple yet powerful, lightweight data query library for Svelte 5, providing full control with built-in functionalities. Built with TypeScript for easy usage and strong typing.
55 lines (54 loc) • 1.81 kB
TypeScript
declare const defaultFetcher: (url: string) => Promise<any>;
type QueryShape = {
baseURI: string;
baseInit: RequestInit;
fetcher: typeof defaultFetcher;
cacheTimeout: number;
setup: (options: Omit<QueryOptions, 'setup'>) => void;
bagHit: Record<string, number>;
onError?: (query: StateQuery<any>, error: any) => void;
onSuccess?: (query: StateQuery<any>) => void;
loadingSlowTimeout?: number;
onLoadingSlow?: (query: StateQuery<any>) => void;
retryCount?: number;
retryDelay?: number;
shouldRetryWhenError?: boolean;
clear: (endpoint?: string) => void;
clearGroup: (group?: string) => void;
group: (group: string) => StateQuery<any>[];
};
export declare const Query: QueryShape;
type QueryOptions = Omit<{
[key in keyof QueryShape]?: QueryShape[key];
}, 'setup' | 'bagHit' | 'clear' | 'clearGroup' | 'group'>;
type StateQuery<T> = {
data: T | null;
isError: boolean | string;
isLoading: boolean;
fetch: () => Promise<void>;
refetch: (options?: {
disableLoading: boolean;
}) => Promise<void>;
mutate: (options?: MutateOptions) => Promise<void>;
clear: () => void;
endpoint: string;
group?: string;
groups?: string[];
};
export declare const useQuery: <T>(endpoint: string, options?: QueryOptions & {
group?: string;
groups?: string[];
}) => StateQuery<T>;
type MutateOptions = {
populateCache?: (currentData: any) => any;
data?: any;
refetch?: boolean;
};
export declare const useSingleQuery: <T>(endpointCallBack: (key: string) => string, options?: QueryOptions & {
group?: string;
groups?: string[];
}) => {
[key: string]: ReturnType<typeof useQuery<T>>;
};
export declare const mutate: (endpoint: string, options?: MutateOptions) => Promise<void>;
export {};