UNPKG

ts-web-scraper

Version:

A powerful web scraper for both static and client-side rendered sites using only Bun native APIs

52 lines 1.58 kB
import type { ScraperError } from './errors'; /** * Execute a function with retry logic */ export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>; /** * Create a retry wrapper for a function */ export declare function retryable<T extends (...args: any[]) => Promise<any>>(fn: T, options?: RetryOptions): T; /** * Calculate the delay for a given attempt */ export declare function calculateDelay(attempt: number, options?: Pick<RetryOptions, 'initialDelay' | 'maxDelay' | 'backoffMultiplier' | 'jitter'>): number; export declare interface RetryOptions { maxRetries?: number initialDelay?: number maxDelay?: number backoffMultiplier?: number jitter?: boolean retryOn?: number[] shouldRetry?: (error: ScraperError, attempt: number) => boolean onRetry?: (error: ScraperError, attempt: number, delay: number) => void debug?: boolean } export declare interface RetryStats { attempts: number totalDelay: number lastError?: ScraperError success: boolean } /** * Retry budget - limit total retry time */ export declare class RetryBudget { private startTime: number; private totalRetries: any; private successfulRetries: any; private readonly maxDuration?: number; private readonly maxRetries?: number; constructor(maxDuration?: number, maxRetries?: number); canRetry(): boolean; recordRetry(success: boolean): void; getStats(): { totalRetries: number successfulRetries: number failedRetries: number elapsed: number remaining: number canRetry: boolean }; reset(): void; }