UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio

76 lines (75 loc) 2.25 kB
/** * Token Bucket Rate Limiter for URL Downloads * * Implements a token bucket algorithm to limit concurrent URL downloads. * This prevents DoS attacks from rapid URL download requests. * * Default configuration: 10 downloads per second */ import type { RateLimiterConfig } from "../types/index.js"; /** * Token Bucket Rate Limiter * * Uses a token bucket algorithm where: * - Tokens are consumed when a download is requested * - Tokens are refilled at a fixed rate * - Requests that exceed the limit are queued */ export declare class TokenBucketRateLimiter { private tokens; private config; private queue; private refillTimer; private lastRefillTime; constructor(config?: Partial<RateLimiterConfig>); /** * Start the token refill timer */ private startRefillTimer; /** * Refill tokens based on elapsed time */ private refillTokens; /** * Process queued requests when tokens become available */ private processQueue; /** * Acquire a token for a download * Returns immediately if token is available, otherwise queues the request * * @throws NeuroLinkError if queue is full or request times out */ acquire(): Promise<void>; /** * Get current rate limiter statistics */ getStats(): { availableTokens: number; queueLength: number; maxTokens: number; maxQueueSize: number; }; /** * Reset the rate limiter to initial state */ reset(): void; /** * Stop the rate limiter and clean up resources */ stop(): void; } /** * Global rate limiter instance for URL downloads * Default: 10 downloads per second */ export declare const urlDownloadRateLimiter: TokenBucketRateLimiter; /** * Rate-limited wrapper for async functions * Ensures the function is rate-limited using the provided rate limiter * * @param fn - The async function to wrap * @param rateLimiter - The rate limiter to use (defaults to urlDownloadRateLimiter) * @returns A rate-limited version of the function */ export declare function withRateLimit<T extends unknown[], R>(fn: (...args: T) => Promise<R>, rateLimiter?: TokenBucketRateLimiter): (...args: T) => Promise<R>;