10LOC

#token-bucket

Node.jsadvanced

A token-bucket rate limiter in 10 lines

export const createTokenBucket = (capacity: number, refillPerSecond: number) => {
  let tokens = capacity;
  let lastRefill = performance.now();

  return (cost = 1): boolean => {

A token bucket that refills lazily based on elapsed time, so it needs no background timer to stay accurate.