UNPKG

midas-core

Version:

Enrich data with APIs

50 lines (38 loc) 2 kB
'use strict'; 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;