UNPKG

@push.rocks/smartrequest

Version:

A module for modern HTTP/HTTPS requests with support for form data, file uploads, JSON, binary data, streams, and more.

61 lines (55 loc) 1.81 kB
/** * HTTP Methods supported by the client */ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'; /** * Response types supported by the client */ export type ResponseType = 'json' | 'text' | 'binary' | 'stream'; /** * Form field data for multipart/form-data requests */ export interface FormField { name: string; value: string | Buffer; filename?: string; contentType?: string; } /** * URL encoded form field */ export interface UrlEncodedField { key: string; value: string; } /** * Retry configuration */ export interface RetryConfig { attempts: number; // Number of retry attempts initialDelay?: number; // Initial delay in ms maxDelay?: number; // Maximum delay in ms factor?: number; // Backoff factor statusCodes?: number[]; // Status codes to retry on shouldRetry?: (error: Error, attemptCount: number) => boolean; } /** * Timeout configuration */ export interface TimeoutConfig { request?: number; // Overall request timeout in ms connection?: number; // Connection timeout in ms socket?: number; // Socket idle timeout in ms response?: number; // Response timeout in ms } /** * Rate limit configuration for handling 429 responses */ export interface RateLimitConfig { maxRetries?: number; // Maximum number of retries (default: 3) respectRetryAfter?: boolean; // Respect Retry-After header (default: true) maxWaitTime?: number; // Max wait time in ms (default: 60000) fallbackDelay?: number; // Delay when no Retry-After header (default: 1000) backoffFactor?: number; // Exponential backoff factor (default: 2) onRateLimit?: (attempt: number, waitTime: number) => void; // Callback for rate limit events }