eze-link
Version:
47 lines (46 loc) • 1.69 kB
TypeScript
export declare const ApiService: {
create: <Headers_1>({ headers, onResponse, onError, onRequest, options }: CreateApiProps<Headers_1>) => IApiService<Headers_1>;
};
interface CreateApiProps<Headers = any> {
headers?: Headers;
onResponse?: OnResponse;
onError?: OnError;
onRequest?: OnRequest<Headers>;
options?: {
mode?: RequestMode;
cache?: RequestCache;
credentials?: RequestCredentials;
redirect?: RequestRedirect;
referrerPolicy?: ReferrerPolicy;
};
}
type OnResponse = (res: any) => any;
type OnError = (err: any) => any;
type OnRequest<T> = (props: OnRequestProps<T>) => void;
type OnRequestProps<Headers> = {
method: "GET" | "DELETE" | "POST" | "PUT" | "PATCH" | "UPDATE";
signal: AbortSignal;
body?: any;
headers: Headers;
};
export interface IMethod<Headers> {
url: string;
body?: any;
headers?: Headers;
abortId?: string;
}
export interface IApiService<Headers = any> {
get: (props: IMethod<Headers>) => Promise<any>;
delete: (props: IMethod<Headers>) => Promise<any>;
post: (props: IMethod<Headers>) => Promise<any>;
put: (props: IMethod<Headers>) => Promise<any>;
patch: (props: IMethod<Headers>) => Promise<any>;
update: (props: IMethod<Headers>) => Promise<any>;
getBlob: (props: IMethod<Headers>) => Promise<Blob>;
postBlob: (props: IMethod<Headers>) => Promise<Blob>;
setHeader: (headers: Headers) => void;
setOnResponse: (onResponse: OnResponse) => void;
setOnError: (onError: OnError) => void;
setOnRequest: (onRequest: OnRequest<Headers>) => void;
}
export default ApiService;