trainingpeaks-sdk
Version:
TypeScript SDK for TrainingPeaks API integration
44 lines • 1.57 kB
TypeScript
import { type HttpMethod } from '../../application/index.js';
import type { HttpError } from '../../domain/types/http-error.js';
import type { Logger } from '../../domain/types/logger.js';
import type { SessionStorage } from './session-storage.js';
export interface RequestOptions {
headers?: Record<string, string>;
timeout?: number;
params?: Record<string, string | number | boolean>;
cookies?: string[];
}
export type HttpResponse<T> = {
data: T | null;
success: boolean;
error?: HttpError;
cookies?: string[];
};
export type HttpClient = {
get<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
post<T>(url: string, data?: unknown, options?: RequestOptions): Promise<HttpResponse<T>>;
put<T>(url: string, data?: unknown, options?: RequestOptions): Promise<HttpResponse<T>>;
patch<T>(url: string, data?: unknown, options?: RequestOptions): Promise<HttpResponse<T>>;
delete<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
};
export type HttpClientConfig = {
timeout?: number;
headers?: Record<string, string>;
enableCookies?: boolean;
maxRedirects?: number;
enableBrowserHeaders?: boolean;
retryAttempts?: number;
retryDelay?: number;
retryBackoff?: number;
retryMaxDelay?: number;
retryJitter?: boolean;
logger?: Logger;
sessionStorage?: SessionStorage;
};
export type InternalRequestConfig = {
url: string;
method: HttpMethod;
data?: unknown;
options?: RequestOptions;
};
//# sourceMappingURL=http-client.d.ts.map