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 });
}