"use strict";exports.__esModule = true;function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var Bucket=(function(){ // Adapted from Eris
function Bucket(tokenLimit,interval){_classCallCheck(this,Bucket);this.tokenLimit = tokenLimit;this.interval = interval;this.extraTime = 500;this.lastReset = this.tokens = this.lastSend = 0;this._queue = [];}Bucket.prototype.queue = function queue(func){this._queue.push(func);this.check();};Bucket.prototype.check = function check(){var _this=this;if(this.timeout || this._queue.length === 0){return;}if(this.lastReset + this.interval + this.extraTime < Date.now()){this.lastReset = Date.now();this.tokens = Math.max(0,this.tokens - this.tokenLimit);}var val;while(this._queue.length > 0 && this.tokens < this.tokenLimit) {this.tokens++;this._queue.shift()();this.lastSend = Date.now();}if(this._queue.length > 0 && !this.timeout){this.timeout = setTimeout(function(){_this.timeout = null;_this.check();},this.tokens < this.tokenLimit?1:Math.max(0,this.lastReset + this.interval + this.extraTime - Date.now()));}};return Bucket;})();exports["default"] = Bucket;module.exports = exports["default"];
