UNPKG

endpoint-sentinel

Version:

User-friendly security scanner with interactive setup that scales from beginner to expert

112 lines 3.25 kB
/** * Production-ready HTTP Client for Endpoint Sentinel * Handles cookies, authentication, retries, and security headers */ import { HttpRequest, HttpResponse, CookieJar, Logger } from '../types/scanner.js'; export declare class SecurityHttpClient { private axiosInstance; private cookieJar; private logger; constructor(cookieJar: CookieJar, logger: Logger, options?: { timeout?: number; maxRedirects?: number; userAgent?: string; proxy?: string; }); /** * Setup request/response interceptors */ private setupInterceptors; /** * Extract cookies from response */ private extractCookies; /** * Log response for audit purposes */ private logResponse; /** * Execute HTTP request with comprehensive error handling */ request(request: HttpRequest): Promise<HttpResponse>; /** * Execute multiple requests with concurrency control */ requestBatch(requests: HttpRequest[], concurrency?: number): Promise<HttpResponse[]>; /** * Normalize response headers to lowercase */ private normalizeHeaders; /** * Safely convert response data to string */ private safeStringify; /** * Calculate response size */ private calculateResponseSize; /** * Check if response indicates rate limiting */ isRateLimited(response: HttpResponse): boolean; /** * Check if response indicates authentication requirement */ requiresAuthentication(response: HttpResponse): boolean; /** * Extract security headers for analysis */ extractSecurityHeaders(response: HttpResponse): SecurityHeaderAnalysis; /** * Clean up and close connections */ destroy(): void; } /** * Enhanced Cookie Jar implementation */ export declare class EnhancedCookieJar implements CookieJar { private toughCookieJar; constructor(initialCookies?: string); setCookie(cookie: string, url: string): void; getCookies(url: string): string[]; serialize(): string; clear(): void; private deserialize; } /** * Security header analysis result */ export interface SecurityHeaderAnalysis { readonly contentSecurityPolicy?: string; readonly strictTransportSecurity?: string; readonly xContentTypeOptions?: string; readonly xFrameOptions?: string; readonly xXssProtection?: string; readonly referrerPolicy?: string; readonly permissionsPolicy?: string; readonly crossOriginEmbedderPolicy?: string; readonly crossOriginOpenerPolicy?: string; readonly crossOriginResourcePolicy?: string; } /** * Custom HTTP Client Error */ export declare class HttpClientError extends Error { readonly url: string; readonly method: string; constructor(message: string, url: string, method: string); } /** * HTTP Client Factory */ export declare class HttpClientFactory { static create(cookieJar: CookieJar, logger: Logger, options?: { timeout?: number; maxRedirects?: number; userAgent?: string; proxy?: string; }): SecurityHttpClient; static createWithDefaults(logger: Logger): SecurityHttpClient; } //# sourceMappingURL=http-client.d.ts.map