midas-core
Version:
Enrich data with APIs
50 lines (38 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var RateLimiter = function () {
function RateLimiter() {
_classCallCheck(this, RateLimiter);
}
_createClass(RateLimiter, null, [{
key: 'async_stall',
value: async function async_stall() {
var rate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
var time_unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 's';
var stall_time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
var t_factor = 1000;
if (time_unit == 's') {
t_factor = 1000;
} else if (time_unit == 'm') {
t_factor = 1000 * 60;
} else if (t_factor == 'h') {
t_factor = 1000 * 60 * 60;
}
if (rate == -1) {
stall_time = 0;
return Promise.resolve(true);
} else {
stall_time = t_factor / rate;
}
await new Promise(function (resolve) {
return setTimeout(resolve, stall_time);
});
}
}]);
return RateLimiter;
}();
exports.default = RateLimiter;