UNPKG

2 kBSource Map (JSON)View Raw
1{"version":3,"file":"token-bucket.js","sourceRoot":"","sources":["token-bucket.ts"],"names":[],"mappings":";;AAAA,MAAqB,WAAW;IAM9B,YAAa,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAoE;QACpH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAA;QAC1E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,YAAY,CAAA;IAC9C,CAAC;IAED,IAAI,CAAE,QAAgB,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;QAEtC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAOvD,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE;YACrB,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,IAAI,IAAI,KAAK,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAjCD,8BAiCC","sourcesContent":["export default class TokenBucket {\n private lastTime: number\n private left: number\n private capacity: number\n private refillRate: number\n\n constructor ({ refillPeriod, refillCount, capacity }: { refillPeriod: number, refillCount: number, capacity?: number }) {\n this.lastTime = Date.now()\n this.capacity = (typeof capacity !== 'undefined') ? capacity : refillCount\n this.left = this.capacity\n this.refillRate = refillCount / refillPeriod\n }\n\n take (count: number = 1) {\n const now = Date.now()\n const delta = Math.max(now - this.lastTime, 0)\n const amount = delta * this.refillRate\n\n this.lastTime = now\n this.left = Math.min(this.left + amount, this.capacity)\n\n // this debug statement is commented out for performance, uncomment when\n // debugging rate limit middleware\n //\n // log.debug('took token from bucket. accountId=%s remaining=%s', accountId, bucket.left)\n\n if (this.left < count) {\n return false\n }\n\n this.left -= count\n return true\n }\n}\n"]}
\No newline at end of file