UNPKG

solid-fetch

Version:

Http request client promise-based supporting injectable request properties like: headers, parameters, query, body, etc.

54 lines (53 loc) 2.63 kB
type HTTPMethods = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'TRACE' | 'CONNECT'; type InjectableFuncProps<Injectables> = Injectables; type InjectableFunc<Injectables> = (p: InjectableFuncProps<Injectables>) => Exclude<InjectableValue<Injectables>, InjectableFunc<Injectables>>; type InjectableObject<Injectables> = (p: InjectableFuncProps<Injectables>) => Record<string, Exclude<InjectableValue<Injectables>, InjectableFunc<Injectables>>>; type InjectableValue<Injectables> = string | number | boolean | null | InjectableFunc<Injectables>; interface RequestCaller<Injectables> { query?: Record<string, InjectableValue<Injectables>> | InjectableObject<Injectables>; method?: HTTPMethods; headers?: Record<string, InjectableValue<Injectables>> | InjectableObject<Injectables>; body?: string | object | FormData | Record<string, InjectableValue<Injectables>> | InjectableValue<Injectables> | any[]; } type ResponseTypes = string | ArrayBuffer | any; interface Result<RequestOptions, Data extends ResponseTypes> { request: { url: string; requestOptions: RequestOptions; }; headers: RequestInit['headers']; ok: boolean; redirected: boolean; status: number; statusText: string; data: Data; } interface RequestOptions { method: RequestInit['method']; headers: RequestInit['headers']; body?: string | FormData; } declare class SolidFetch<Injectables extends Record<string, any>> { #private; injectables: () => Injectables | Record<string, any>; interceptedReq: any[]; interceptedRes: any[]; interceptedErr: any[]; globalQuery: any; globalHeaders: any; constructor({ initInjectables, interceptedReq, interceptedRes, interceptedErr, globalQuery, globalHeaders, }: { initInjectables?: {} | undefined; interceptedReq?: never[] | undefined; interceptedRes?: never[] | undefined; interceptedErr?: never[] | undefined; globalQuery?: {} | undefined; globalHeaders?: {} | undefined; }); setConfig(config: Partial<SolidFetch<Injectables>>): void; setInjectables(newInjectables: Partial<Injectables>): void; getInjectables(): Injectables; resolveDynamic(dynamicParams: any): {}; generateRequest(pathStructure: any, ...dynamicParams: any): any; request<Data extends ResponseTypes = any>(pathStructure: TemplateStringsArray, ...dynamicParams: Array<InjectableValue<Injectables>>): ({ method, query: rawQuery, headers: rawHeaders, body, }?: RequestCaller<Injectables>) => Promise<Result<RequestOptions, Data>>; } export default SolidFetch;