UNPKG

guardz-axios

Version:

Type-safe HTTP client built on top of Axios with runtime validation using guardz. Part of the guardz ecosystem for comprehensive TypeScript type safety.

88 lines 2.33 kB
/** * Domain Types - Core business concepts * Following Domain-Driven Design (DDD) principles */ import { TypeGuardFn } from "guardz"; /** * HTTP Method - Domain concept for HTTP operations */ export type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; /** * Request Status - Domain concept for request outcomes */ export declare enum RequestStatus { SUCCESS = "SUCCESS", ERROR = "ERROR" } /** * Error Type - Domain concept for error categorization */ export type ErrorType = "validation" | "network" | "timeout" | "http" | "unknown"; /** * HTTP Status Code - Domain concept for HTTP responses */ export type HttpStatusCode = number; /** * Request Result - Domain concept for API operation results * Following Functional Programming principles with discriminated unions */ export type RequestResult<T> = { status: RequestStatus.SUCCESS; data: T; } | { status: RequestStatus.ERROR; code: HttpStatusCode; message: string; type: ErrorType; }; /** * Validation Guard - Domain concept for data validation */ export type ValidationGuard<T> = TypeGuardFn<T>; /** * Request Configuration - Domain concept for request setup */ export interface RequestConfig { url: string; method: HttpMethod; data?: unknown; headers?: Record<string, string>; timeout?: number; baseURL?: string; } /** * Validation Configuration - Domain concept for validation setup */ export interface ValidationConfig<T> { guard: ValidationGuard<T>; tolerance?: boolean; identifier?: string; onError?: (error: string, context: ValidationContext) => void; } /** * Validation Context - Domain concept for validation error context */ export interface ValidationContext { type: ErrorType; url: string; method: HttpMethod; statusCode?: HttpStatusCode; originalError?: unknown; } /** * Retry Configuration - Domain concept for retry logic */ export interface RetryConfig { attempts: number; delay: number; backoff: "linear" | "exponential"; retryOn?: (error: unknown) => boolean; } /** * Complete Request Configuration - Domain concept combining all configs */ export interface CompleteRequestConfig<T> extends RequestConfig, ValidationConfig<T> { retry?: RetryConfig; axiosInstance?: any; } //# sourceMappingURL=types.d.ts.map