swell-node
Version:
Swell API client for NodeJS
83 lines (82 loc) • 2.53 kB
TypeScript
import * as axios from 'axios';
export declare const enum HttpMethod {
get = "get",
post = "post",
put = "put",
delete = "delete"
}
export interface HttpHeaders {
[header: string]: axios.AxiosHeaderValue;
}
export interface HttpClientWrapper {
client: axios.AxiosInstance;
createdAt: number;
activeRequests: number;
totalRequests: number;
}
export interface ClientOptions {
url?: string;
verifyCert?: boolean;
version?: number;
timeout?: number;
headers?: HttpHeaders;
retries?: number;
maxSockets?: number;
keepAliveMs?: number;
recycleAfterRequests?: number;
recycleAfterMs?: number;
onClientRecycle?: (stats: {
createdAt: number;
activeRequests: number;
totalRequests: number;
ageMs: number;
newClientCreatedAt: number;
}) => void;
}
/**
* Swell API Client.
*/
export declare class Client {
clientId: string;
clientKey: string;
options: ClientOptions;
httpClient: axios.AxiosInstance | null;
private _activeClient;
private _oldClients;
private _clientCounter;
constructor(clientId?: string, clientKey?: string, options?: ClientOptions);
/**
* Convenience method to create a new client instance from a singleton instance.
*/
createClient(clientId: string, clientKey: string, options?: ClientOptions): Client;
init(clientId?: string, clientKey?: string, options?: ClientOptions): void;
_initHttpClient(): void;
private _shouldRecycleClient;
private _recycleHttpClient;
private _scheduleOldClientCleanup;
private _getClientForRequest;
get<T>(url: string, data?: unknown, headers?: HttpHeaders): Promise<T>;
post<T>(url: string, data: unknown, headers?: HttpHeaders): Promise<T>;
put<T>(url: string, data: unknown, headers?: HttpHeaders): Promise<T>;
delete<T>(url: string, data?: unknown, headers?: HttpHeaders): Promise<T>;
request<T>(method: HttpMethod, url: string, data?: unknown, headers?: HttpHeaders): Promise<T>;
/**
* Get statistics about HTTP client usage
*/
getClientStats(): {
activeClient: {
createdAt: number;
activeRequests: number;
totalRequests: number;
ageMs: number;
} | null;
oldClientsCount: number;
oldClients: {
id: string;
createdAt: number;
activeRequests: number;
totalRequests: number;
ageMs: number;
}[];
};
}