UNPKG

@elghandour/fetchify

Version:
136 lines (135 loc) 6.57 kB
export type FetchedData<DataType> = { data?: DataType; response?: Response; error?: any; meta: Record<string, any> | null; }; export type Configs = Omit<RequestInit, 'body' | 'headers' | 'method'> & { baseURL?: string; }; export type FetchResult = { data: any; response: Response; error?: undefined; meta: Record<string, any> | null; } | { error: any; data?: undefined; response?: undefined; meta: Record<string, any> | null; }; export type Method = 'POST' | 'GET' | 'DELETE' | 'PUT' | 'PATCH' | 'HEAD'; export type ResponseType = 'json' | 'text' | 'blob' | 'arrayBuffer' | 'formData'; export type FetchifyRequestParameters = { configs: Configs; headers: Partial<HeadersInit>; responseType?: ResponseType; meta: Record<string, any>; path: string; params: Record<string, unknown | any>; body: any; type: string; }; export type FetchData<DataType> = Promise<FetchedData<DataType>>; export interface Interceptors { request?: (request: FetchifyRequestParameters) => Promise<FetchifyRequestParameters>; response?: (result: FetchResult, requestInit: RequestInit, fetchParams: FetchifyRequestParameters) => Promise<FetchResult>; } export declare function defineConfigs(configs?: Configs): { set: (configs: Configs) => void; getAll: () => Configs; update: (configs: Configs) => void; remove: (key: keyof Configs | (keyof Configs)[]) => void; }; export declare function defineHeaders(headers?: Partial<HeadersInit>): { set: (headers: Partial<HeadersInit>) => void; getAll: () => Partial<HeadersInit>; update: (headers: Partial<HeadersInit>) => void; remove: (key: string | (string)[]) => void; }; export declare const globalConfigs: { set: (configs: Configs) => void; getAll: () => Configs; update: (configs: Configs) => void; remove: (key: keyof Configs | (keyof Configs)[]) => void; }; export declare const globalHeaders: { set: (headers: Partial<HeadersInit>) => void; getAll: () => Partial<HeadersInit>; update: (headers: Partial<HeadersInit>) => void; remove: (key: string | (string)[]) => void; }; export declare function setInterceptors({ request, response }: Interceptors): void; export declare function GET<Type = any>(route: string, { params, configs, headers, responseType, meta, timeout, requestInterceptor, responseInterceptor }?: { params?: Record<string, unknown | any>; configs?: Configs; headers?: Partial<HeadersInit>; responseType?: ResponseType; meta?: Record<string, any>; timeout?: number; responseInterceptor?: (result: FetchResult, requestInit: RequestInit, fetchParams: FetchifyRequestParameters) => Promise<FetchResult>; requestInterceptor?: (request: FetchifyRequestParameters) => Promise<FetchifyRequestParameters>; }, abortCallback?: (controller: AbortController) => void): FetchData<Type>; export declare function HEAD<Type = any>(route: string, { params, configs, headers, meta, timeout, requestInterceptor, responseInterceptor }?: { params?: Record<string, unknown | any>; configs?: Configs; headers?: Partial<HeadersInit>; meta?: Record<string, any>; timeout?: number; responseInterceptor?: (result: FetchResult, requestInit: RequestInit, fetchParams: FetchifyRequestParameters) => Promise<FetchResult>; requestInterceptor?: (request: FetchifyRequestParameters) => Promise<FetchifyRequestParameters>; }, abortCallback?: (controller: AbortController) => void): FetchData<Type>; export declare function POST<Type = any>(route: string, { body, params, configs, headers, responseType, meta, timeout, requestInterceptor, responseInterceptor }?: { body?: any; params?: Record<string, unknown | any>; configs?: Configs; headers?: Partial<HeadersInit>; responseType?: ResponseType; meta?: Record<string, any>; timeout?: number; responseInterceptor?: (result: FetchResult, requestInit: RequestInit, fetchParams: FetchifyRequestParameters) => Promise<FetchResult>; requestInterceptor?: (request: FetchifyRequestParameters) => Promise<FetchifyRequestParameters>; }, abortCallback?: (controller: AbortController) => void): FetchData<Type>; export declare function PUT<Type = any>(route: string, { body, params, configs, headers, responseType, meta, timeout, requestInterceptor, responseInterceptor }?: { body?: any; params?: Record<string, unknown | any>; configs?: Configs; headers?: Partial<HeadersInit>; responseType?: ResponseType; meta?: Record<string, any>; timeout?: number; responseInterceptor?: (result: FetchResult, requestInit: RequestInit, fetchParams: FetchifyRequestParameters) => Promise<FetchResult>; requestInterceptor?: (request: FetchifyRequestParameters) => Promise<FetchifyRequestParameters>; }, abortCallback?: (controller: AbortController) => void): FetchData<Type>; export declare function DELETE<Type = any>(route: string, { body, params, configs, headers, responseType, meta, timeout, requestInterceptor, responseInterceptor }?: { body?: any; params?: Record<string, unknown | any>; configs?: Configs; headers?: Partial<HeadersInit>; responseType?: ResponseType; meta?: Record<string, any>; timeout?: number; responseInterceptor?: (result: FetchResult, requestInit: RequestInit, fetchParams: FetchifyRequestParameters) => Promise<FetchResult>; requestInterceptor?: (request: FetchifyRequestParameters) => Promise<FetchifyRequestParameters>; }, abortCallback?: (controller: AbortController) => void): FetchData<Type>; export declare function PATCH<Type = any>(route: string, { body, params, configs, headers, responseType, meta, timeout, requestInterceptor, responseInterceptor }?: { body?: any; params?: Record<string, unknown | any>; configs?: Configs; headers?: Partial<HeadersInit>; responseType?: ResponseType; meta?: Record<string, any>; timeout?: number; responseInterceptor?: (result: FetchResult, requestInit: RequestInit, fetchParams: FetchifyRequestParameters) => Promise<FetchResult>; requestInterceptor?: (request: FetchifyRequestParameters) => Promise<FetchifyRequestParameters>; }, abortCallback?: (controller: AbortController) => void): FetchData<Type>; declare const fetchify: { POST: typeof POST; GET: typeof GET; DELETE: typeof DELETE; PUT: typeof PUT; PATCH: typeof PATCH; HEAD: typeof HEAD; }; export default fetchify; export { isBrowser, nop, serializeObject, getParamsFromString, replaceParamsInString } from './helpers';