UNPKG

@ohm-vision/react-async

Version:

Extentions to React to support asynchronous calls

23 lines (22 loc) 1.48 kB
import { DependencyList, EffectCallback } from "react"; type ResponseTypes = "raw" | "arrayBuffer" | "blob" | "formData" | "text" | "json"; type _Response = globalThis.Response; type UseFetchProps<TResponseType extends ResponseTypes = ResponseTypes> = { url: string | URL | RequestInfo; /** * Indicates how to process the response */ responseType: TResponseType; } & Omit<RequestInit, "signal">; type Response<TResponseType extends ResponseTypes> = TResponseType extends "raw" ? _Response : Omit<_Response, "bodyUsed" | "body" | "arrayBuffer" | "blob" | "formData" | "json" | "text" | "clone"> & { body: (TResponseType extends "json" ? Awaited<ReturnType<_Response["json"]>> : TResponseType extends "arrayBuffer" ? Awaited<ReturnType<_Response["arrayBuffer"]>> : TResponseType extends "blob" ? Awaited<ReturnType<_Response["blob"]>> : TResponseType extends "formData" ? Awaited<ReturnType<_Response["formData"]>> : TResponseType extends "text" ? Awaited<ReturnType<_Response["text"]>> : unknown); }; /** * Represents a core fetch request * @param param0 standard `fetch` props * @param deps Dependency list * @param destructor destructor * @returns [ loading, `Response`, Error ] */ export declare function useFetch<TResponseType extends ResponseTypes = ResponseTypes>({ url, responseType, ...init }: UseFetchProps<TResponseType>, deps: DependencyList, destructor?: ReturnType<EffectCallback>): [boolean, Response<TResponseType>, any]; export {};