INNER CODE UNIT · TypeScript

consumeBuckets

Ammaar-Alam/minebench · middleware.ts:167

function consumeBuckets(rules: RateLimitRule[], now: number) {
  const previews: BucketPreview[] = [];

  for (const rule of rules) {
    const bucket = buckets.get(rule.key);
    const windowMs = rule.windowMs ?? WINDOW_MS;
    const resetAt = !bucket || bucket.resetAt <= now ? now + windowMs : bucket.resetAt;
    const nextCount = !bucket || bucket.resetAt <= now ? 1 : bucket.count + 1;

    if (nextCount > rule.maxPerWindow) {
      return {
        allowed: false,
        retryAfterSeconds: Math.ceil((resetAt - now) / 1000),
      };
    }

    previews.push({ key: rule.key, resetAt, nextCount });
  }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…