@nu-art/thunder
Version:
Thunder - React & Typescript based frontend framework
38 lines (37 loc) • 2.62 kB
TypeScript
import { ApiTypeBinder, DeriveBodyType, DeriveQueryType, DeriveResponseType, DeriveUrlType, ErrorResponse, HttpMethod, Module, QueryParams } from "@nu-art/ts-common";
import { HttpRequest } from "./http-request";
declare type HttpConfig = {
origin: string;
timeout: number;
};
export interface OnRequestListener {
onRequestCompleted: (key: string, success: boolean, requestData?: string) => void;
}
export declare const ErrorHandler_Toast: RequestCompletionHandler;
export declare const SuccessHandler_Toast: RequestCompletionHandler;
export declare type RequestCompletionHandler = (key: string, message: string) => void;
export declare type RequestErrorHandler<E extends void | object> = (resError: ErrorResponse<E>, xhr: XMLHttpRequest, requestKey: string, errorMessage?: string, requestData?: string) => void;
export declare type RequestSuccessHandler = (requestKey: string, successMessage?: string, requestData?: string) => void;
export declare class HttpModule_Class extends Module<HttpConfig> {
private dispatch_onRequestCompleted;
private errorHandlers;
private successHandlers;
private origin;
private timeout;
private responseHandler?;
private defaultHeaders;
constructor();
addDefaultHeader(key: string, header: () => string | string[]): void;
init(): void;
protected validate(): void;
createRequest: <Binder extends ApiTypeBinder<U, R, B, P, any> = ApiTypeBinder<void, void, void, {}, any>, U extends string = DeriveUrlType<Binder>, R = DeriveResponseType<Binder>, B = DeriveBodyType<Binder>, P extends QueryParams = DeriveQueryType<Binder>>(method: HttpMethod, key: string, data?: string | undefined) => HttpRequest<DeriveRealBinder<Binder>, DeriveUrlType<DeriveRealBinder<Binder>>, DeriveResponseType<DeriveRealBinder<Binder>>, DeriveBodyType<DeriveRealBinder<Binder>>, DeriveQueryType<DeriveRealBinder<Binder>>, import("@nu-art/ts-common").DeriveErrorType<DeriveRealBinder<Binder>>>;
processDefaultResponseHandlers: (httpRequest: HttpRequest<any, any, any, any, any, any>) => boolean | undefined;
addResponseHandler(responseHandler: (request: HttpRequest<any>) => boolean): void;
setErrorHandlers(errorHandlers: RequestCompletionHandler[]): void;
setSuccessHandlers(successHandlers: RequestCompletionHandler[]): void;
handleRequestFailure: RequestErrorHandler<any>;
handleRequestSuccess: RequestSuccessHandler;
}
export declare type DeriveRealBinder<Binder> = Binder extends ApiTypeBinder<infer U, infer R, infer B, infer P> ? ApiTypeBinder<U, R, B, P> : void;
export declare const HttpModule: HttpModule_Class;
export {};