limiter.test.ts
Language TypeScript702 B27 lines
import { describe, expect, it } from 'vitest'import { TokenBucket } from '../src/limiter.js'describe('TokenBucket', () => {it('allows a burst up to capacity then paces', async () => {let now = 0const slept: number[] = []const bucket = new TokenBucket(3,3,() => now,async (ms) => {slept.push(ms)now += ms},)for (let i = 0; i < 3; i++) await bucket.acquire()expect(slept).toHaveLength(0)await bucket.acquire()expect(slept).toHaveLength(1)})it('rejects nonsensical configuration', () => {expect(() => new TokenBucket(0, 10)).toThrow()expect(() => new TokenBucket(10, 0)).toThrow()})})