Skip to main content
Glama
by alucardeht
RateLimiter.js822 B
class RateLimiter { constructor(tierLimits) { this.tierLimits = tierLimits || { 1: { requests: 10, window: 60000 }, 2: { requests: 25, window: 60000 }, 3: { requests: 50, window: 60000 }, }; this.buckets = { 1: [], 2: [], 3: [] }; } async waitForSlot(tier) { const limit = this.tierLimits[tier]; const now = Date.now(); this.buckets[tier] = this.buckets[tier].filter((t) => now - t < limit.window); if (this.buckets[tier].length >= limit.requests) { const oldestRequest = this.buckets[tier][0]; const waitTime = limit.window - (now - oldestRequest) + 100; await new Promise((resolve) => setTimeout(resolve, waitTime)); return this.waitForSlot(tier); } this.buckets[tier].push(now); return true; } } export default RateLimiter;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alucardeht/figma-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server