UNPKG

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