UNPKG

@platformos/pos-cli

Version:

Manage your platformOS application

57 lines 2.38 kB
Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var types_1 = require("@sentry/types"); var utils_1 = require("@sentry/utils"); var base_1 = require("./base"); /** `XHR` based transport */ var XHRTransport = /** @class */ (function (_super) { tslib_1.__extends(XHRTransport, _super); function XHRTransport() { var _this = _super !== null && _super.apply(this, arguments) || this; /** Locks transport after receiving 429 response */ _this._disabledUntil = new Date(Date.now()); return _this; } /** * @inheritDoc */ XHRTransport.prototype.sendEvent = function (event) { var _this = this; if (new Date(Date.now()) < this._disabledUntil) { return Promise.reject({ event: event, reason: "Transport locked till " + this._disabledUntil + " due to too many requests.", status: 429, }); } return this._buffer.add(new utils_1.SyncPromise(function (resolve, reject) { var request = new XMLHttpRequest(); request.onreadystatechange = function () { if (request.readyState !== 4) { return; } var status = types_1.Status.fromHttpCode(request.status); if (status === types_1.Status.Success) { resolve({ status: status }); return; } if (status === types_1.Status.RateLimit) { var now = Date.now(); _this._disabledUntil = new Date(now + utils_1.parseRetryAfterHeader(now, request.getResponseHeader('Retry-After'))); utils_1.logger.warn("Too many requests, backing off till: " + _this._disabledUntil); } reject(request); }; request.open('POST', _this.url); for (var header in _this.options.headers) { if (_this.options.headers.hasOwnProperty(header)) { request.setRequestHeader(header, _this.options.headers[header]); } } request.send(JSON.stringify(event)); })); }; return XHRTransport; }(base_1.BaseTransport)); exports.XHRTransport = XHRTransport; //# sourceMappingURL=xhr.js.map