UNPKG

@nu-art/thunder

Version:

Thunder - React & Typescript based frontend framework

60 lines (59 loc) 2.48 kB
import { ApiTypeBinder, DeriveBodyType, DeriveErrorType, DeriveQueryType, DeriveResponseType, DeriveUrlType, ErrorResponse, HttpMethod, QueryParams } from "@nu-art/ts-common"; import { RequestErrorHandler } from "./http-module"; export declare class HttpException extends Error { constructor(responseCode: number, url: string); } export declare class HttpRequest<Binder extends ApiTypeBinder<U, R, B, P>, U extends string = DeriveUrlType<Binder>, R = DeriveResponseType<Binder>, B = DeriveBodyType<Binder>, P extends QueryParams = DeriveQueryType<Binder>, E extends void | object = DeriveErrorType<Binder>> { private readonly requestKey; private readonly requestData; private origin; private headers; private method; private timeout; private body; private url; private params; private onProgressListener; xhr: XMLHttpRequest; private label; private errorMessage; private successMessage; private onResponseListener; private handleRequestSuccess; private handleRequestFailure; private aborted; private compress; constructor(requestKey: string, requestData?: string); setOrigin(origin: string): this; setOnError(errorMessage: string | RequestErrorHandler<E>): this; setOnSuccessMessage(successMessage: string): this; setOnResponseListener(listener: (response: R) => void): this; setLabel(label: string): this; setMethod(method: HttpMethod): this; setUrlParams(params: P): this; setUrlParam<K extends keyof P = keyof P>(key: K, value: P[K]): this; setUrl(url: string): this; setRelativeUrl(relativeUrl: U): this; setTimeout(timeout: number): this; setOnProgressListener(onProgressListener: (ev: ProgressEvent) => void): this; setHeaders(headers: { [s: string]: string | string[]; }): this; addHeaders(headers: { [s: string]: string | string[]; }): this; setHeader(_key: string, value: string | string[]): this; addHeader(_key: string, value: string | string[]): this; removeHeader(key: string): this; private _addHeaderImpl; setJsonBody(bodyObject: B, compress?: boolean): this; setBody(bodyAsString: BodyInit, compress?: boolean): this; asJson(): R; asText(): R; private resolveResponse; execute(responseHandler?: (response: R) => Promise<void> | void): this; getErrorResponse(): ErrorResponse<E>; executeSync(): Promise<R>; abort(): void; private executeImpl; }