@remcostoeten/fync
Version:
A unified TypeScript library for easy access to popular APIs (GitHub, Spotify, GitLab, etc.)
35 lines • 1.81 kB
TypeScript
type THttpRequestOptions = {
method?: "GET" | "POST" | "PUT" | "DELETE";
headers?: Record<string, string>;
body?: unknown;
};
type THttpResponse<T = unknown> = {
data: T;
status: number;
statusText: string;
headers: Record<string, string>;
};
type TPaginatedResponse<T = unknown> = {
data: T[];
hasNext: boolean;
nextUrl?: string;
totalCount?: number;
};
declare function httpRequest<T = unknown>(url: string, query?: Record<string, string | number>, signal?: AbortSignal, extraHeaders?: Record<string, string>): Promise<THttpResponse<T>>;
declare function httpRequestWithPagination<T = unknown>(url: string, query?: Record<string, string | number>, signal?: AbortSignal, extraHeaders?: Record<string, string>): Promise<TPaginatedResponse<T>>;
type THttpClientConfig = {
baseUrl?: string;
defaultHeaders?: Record<string, string>;
timeout?: number;
};
declare function createHttpClient(config?: THttpClientConfig): {
get: <T = unknown>(endpoint: string, query?: Record<string, string | number>, signal?: AbortSignal) => Promise<THttpResponse<T>>;
getPaginated: <T = unknown>(endpoint: string, query?: Record<string, string | number>, signal?: AbortSignal) => Promise<TPaginatedResponse<T>>;
post: <T = unknown>(endpoint: string, data?: unknown) => Promise<THttpResponse<T>>;
put: <T = unknown>(endpoint: string, data?: unknown) => Promise<THttpResponse<T>>;
patch: <T = unknown>(endpoint: string, data?: unknown) => Promise<THttpResponse<T>>;
delete: <T = unknown>(endpoint: string, data?: unknown) => Promise<THttpResponse<T>>;
};
export { httpRequest, httpRequestWithPagination, createHttpClient };
export type { THttpResponse, TPaginatedResponse, THttpRequestOptions, THttpClientConfig, };
//# sourceMappingURL=http-client.d.ts.map