ts-retrofit
Version:
A declarative and axios based retrofit implementation for JavaScript and TypeScript.
67 lines (66 loc) • 3.03 kB
TypeScript
import { AxiosRequestConfig, AxiosResponse, AxiosInstance } from "axios";
export type RequestConfig = AxiosRequestConfig;
export interface Response<T = any> extends AxiosResponse<T> {
}
export type LogCallback = (config: RequestConfig, response: Response) => void;
export declare const nonHTTPRequestMethod: (target: any, methodName: string) => void;
export declare class BaseService {
__meta__: any;
private _endpoint;
private _httpClient;
private _methodMap;
private _timeout;
private _logCallback;
constructor(serviceBuilder: ServiceBuilder);
isClientStandalone(): boolean;
useRequestInterceptor(interceptor: RequestInterceptorFunction): number;
useResponseInterceptor(interceptor: ResponseInterceptorFunction): number;
ejectRequestInterceptor(id: number): void;
ejectResponseInterceptor(id: number): void;
setEndpoint(endpoint: string): void;
setLogCallback(logCallback: LogCallback | null): void;
setTimeout(timeout: number): void;
private _getInstanceMethodNames;
private _wrap;
private _resolveParameters;
private _makeConfig;
private _resolveUrl;
private makeURL;
private _resolveHttpMethod;
private _resolveHeaders;
private _resolveQuery;
private _resolveData;
}
export type RequestInterceptorFunction = (value: AxiosRequestConfig) => AxiosRequestConfig | Promise<AxiosRequestConfig>;
export type ResponseInterceptorFunction<T = any> = (value: AxiosResponse<T>) => AxiosResponse<T> | Promise<AxiosResponse<T>>;
declare abstract class BaseInterceptor {
onRejected(error: any): void;
}
export declare abstract class RequestInterceptor extends BaseInterceptor {
abstract onFulfilled(value: AxiosRequestConfig): AxiosRequestConfig | Promise<AxiosRequestConfig>;
}
export declare abstract class ResponseInterceptor<T = any> extends BaseInterceptor {
abstract onFulfilled(value: AxiosResponse<T>): AxiosResponse<T> | Promise<AxiosResponse<T>>;
}
export declare class ServiceBuilder {
private _endpoint;
private _standalone;
private _requestInterceptors;
private _responseInterceptors;
private _timeout;
private _logCallback;
build<T>(service: new (builder: ServiceBuilder) => T): T;
setEndpoint(endpoint: string): ServiceBuilder;
setStandalone(standalone: boolean | AxiosInstance): ServiceBuilder;
setRequestInterceptors(...interceptors: Array<RequestInterceptorFunction | RequestInterceptor>): ServiceBuilder;
setResponseInterceptors(...interceptors: Array<ResponseInterceptorFunction | ResponseInterceptor>): ServiceBuilder;
setTimeout(timeout: number): ServiceBuilder;
setLogCallback(logCallback: LogCallback): ServiceBuilder;
get endpoint(): string;
get standalone(): boolean | AxiosInstance;
get requestInterceptors(): Array<RequestInterceptorFunction | RequestInterceptor>;
get responseInterceptors(): Array<ResponseInterceptorFunction | ResponseInterceptor>;
get timeout(): number;
get logCallback(): LogCallback | null;
}
export {};