1 | Object.defineProperty(exports, "__esModule", { value: true });
|
2 | var tslib_1 = require("tslib");
|
3 | var utils_1 = require("@sentry/utils");
|
4 | var base_1 = require("./base");
|
5 |
|
6 | var XHRTransport = (function (_super) {
|
7 | tslib_1.__extends(XHRTransport, _super);
|
8 | function XHRTransport() {
|
9 | return _super !== null && _super.apply(this, arguments) || this;
|
10 | }
|
11 | |
12 |
|
13 |
|
14 |
|
15 | XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {
|
16 | var _this = this;
|
17 |
|
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 |
|
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 |
|
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));
|
63 | exports.XHRTransport = XHRTransport;
|
64 |
|
\ | No newline at end of file |