bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
37 lines (36 loc) • 1.84 kB
TypeScript
import type { Api } from "../../../Api";
import { FetchPromise, type ModuleApi, type ResponseObject } from "../../../modules/ModuleApi";
import { type SWRConfiguration } from "swr";
export declare const useApiQuery: <Data, RefineFn extends (data: ResponseObject<Data>) => unknown = (data: ResponseObject<Data>) => Data>(fn: (api: Api) => FetchPromise<Data>, options?: SWRConfiguration & {
enabled?: boolean;
refine?: RefineFn;
}) => {
promise: FetchPromise<Data>;
key: string;
api: Api;
data: (RefineFn extends (data: ResponseObject<Data>) => infer R ? R : Data) | undefined;
error: any;
mutate: import("swr").KeyedMutator<RefineFn extends (data: ResponseObject<Data>) => infer R ? R : Data>;
isValidating: boolean;
isLoading: boolean;
};
/** @attention: highly experimental, use with caution! */
export declare const useApiInfiniteQuery: <Data, RefineFn extends (data: ResponseObject<Data>) => unknown = (data: ResponseObject<Data>) => Data>(fn: (api: Api, page: number) => FetchPromise<Data>, options?: SWRConfiguration & {
refine?: RefineFn;
}) => {
_data: (RefineFn extends (data: ResponseObject<Data>) => infer R ? R : Data)[] | undefined;
data: never[];
endReached: boolean;
promise: FetchPromise<Data>;
key: string;
api: Api;
size: number;
setSize: (size: number | ((_size: number) => number)) => Promise<(RefineFn extends (data: ResponseObject<Data>) => infer R ? R : Data)[] | undefined>;
mutate: import("swr/infinite").SWRInfiniteKeyedMutator<(RefineFn extends (data: ResponseObject<Data>) => infer R ? R : Data)[]>;
error: any;
isValidating: boolean;
isLoading: boolean;
};
export declare const useInvalidate: (options?: {
exact?: boolean;
}) => (arg?: string | ((api: Api) => FetchPromise<any> | ModuleApi<any>)) => Promise<any>;