ts-web-scraper
Version:
A powerful web scraper for both static and client-side rendered sites using only Bun native APIs
46 lines • 1.33 kB
TypeScript
export declare function getGlobalRateLimiter(options?: RateLimiterOptions): RateLimiter;
export declare function resetGlobalRateLimiter(): void;
/**
* Rate Limiter using Token Bucket Algorithm
*
* Allows smooth rate limiting with burst support.
* Uses ONLY Bun native APIs - no external dependencies!
*/
export declare interface RateLimiterOptions {
requestsPerSecond?: number
requestsPerMinute?: number
requestsPerHour?: number
burstSize?: number
debug?: boolean
}
export declare interface RateLimiterStats {
totalRequests: number
throttledRequests: number
currentRate: number
remainingCapacity: number
nextRefillTime: number
}
/**
* Token Bucket Rate Limiter
*
* Tokens are added at a constant rate and consumed by requests.
* Allows bursts up to burstSize.
*/
export declare class RateLimiter {
private tokens: number;
readonly private maxTokens: number;
readonly private refillRate: number;
private lastRefill: number;
private totalRequests: any;
private throttledRequests: any;
readonly private debug: boolean;
constructor(options?: RateLimiterOptions);
private refill(): void;
throttle(): Promise<void>;
tryConsume(): boolean;
getCurrentRate(): number;
getRemainingCapacity(): number;
getNextRefillTime(): number;
getStats(): RateLimiterStats;
reset(): void;
}