@platformos/pos-cli
Version:
Manage your platformOS application
57 lines • 2.38 kB
JavaScript
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