UNPKG

3.01 kBJavaScriptView Raw
1Object.defineProperty(exports, "__esModule", { value: true });
2var tslib_1 = require("tslib");
3var utils_1 = require("@sentry/utils");
4var base_1 = require("./base");
5/** `XHR` based transport */
6var XHRTransport = /** @class */ (function (_super) {
7 tslib_1.__extends(XHRTransport, _super);
8 function XHRTransport() {
9 return _super !== null && _super.apply(this, arguments) || this;
10 }
11 /**
12 * @param sentryRequest Prepared SentryRequest to be delivered
13 * @param originalPayload Original payload used to create SentryRequest
14 */
15 XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {
16 var _this = this;
17 // eslint-disable-next-line deprecation/deprecation
18 if (this._isRateLimited(sentryRequest.type)) {
19 this.recordLostEvent('ratelimit_backoff', sentryRequest.type);
20 return Promise.reject({
21 event: originalPayload,
22 type: sentryRequest.type,
23 // eslint-disable-next-line deprecation/deprecation
24 reason: "Transport for " + sentryRequest.type + " requests locked till " + this._disabledUntil(sentryRequest.type) + " due to too many requests.",
25 status: 429,
26 });
27 }
28 return this._buffer
29 .add(function () {
30 return new utils_1.SyncPromise(function (resolve, reject) {
31 var request = new XMLHttpRequest();
32 request.onreadystatechange = function () {
33 if (request.readyState === 4) {
34 var headers = {
35 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),
36 'retry-after': request.getResponseHeader('Retry-After'),
37 };
38 _this._handleResponse({ requestType: sentryRequest.type, response: request, headers: headers, resolve: resolve, reject: reject });
39 }
40 };
41 request.open('POST', sentryRequest.url);
42 for (var header in _this.options.headers) {
43 if (Object.prototype.hasOwnProperty.call(_this.options.headers, header)) {
44 request.setRequestHeader(header, _this.options.headers[header]);
45 }
46 }
47 request.send(sentryRequest.body);
48 });
49 })
50 .then(undefined, function (reason) {
51 // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.
52 if (reason instanceof utils_1.SentryError) {
53 _this.recordLostEvent('queue_overflow', sentryRequest.type);
54 }
55 else {
56 _this.recordLostEvent('network_error', sentryRequest.type);
57 }
58 throw reason;
59 });
60 };
61 return XHRTransport;
62}(base_1.BaseTransport));
63exports.XHRTransport = XHRTransport;
64//# sourceMappingURL=xhr.js.map
\No newline at end of file