芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/app.optimyar.com/backend/node_modules/@sentry/node/dist/transports/base.js
Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var core_1 = require("@sentry/core"); var types_1 = require("@sentry/types"); var utils_1 = require("@sentry/utils"); var fs = require("fs"); var url = require("url"); var version_1 = require("../version"); /** Base Transport class implementation */ var BaseTransport = /** @class */ (function () { /** Create instance and set this.dsn */ function BaseTransport(options) { this.options = options; /** A simple buffer holding all requests. */ this._buffer = new utils_1.PromiseBuffer(30); /** Locks transport after receiving 429 response */ this._disabledUntil = new Date(Date.now()); this._api = new core_1.API(options.dsn, options._metadata); } /** * @inheritDoc */ BaseTransport.prototype.sendEvent = function (_) { throw new utils_1.SentryError('Transport Class has to implement `sendEvent` method.'); }; /** * @inheritDoc */ BaseTransport.prototype.close = function (timeout) { return this._buffer.drain(timeout); }; /** Returns a build request option object used by request */ BaseTransport.prototype._getRequestOptions = function (uri) { var headers = tslib_1.__assign(tslib_1.__assign({}, this._api.getRequestHeaders(version_1.SDK_NAME, core_1.SDK_VERSION)), this.options.headers); var hostname = uri.hostname, pathname = uri.pathname, port = uri.port, protocol = uri.protocol; // See https://github.com/nodejs/node/blob/38146e717fed2fabe3aacb6540d839475e0ce1c6/lib/internal/url.js#L1268-L1290 // We ignore the query string on purpose var path = "" + pathname; return tslib_1.__assign({ agent: this.client, headers: headers, hostname: hostname, method: 'POST', path: path, port: port, protocol: protocol }, (this.options.caCerts && { ca: fs.readFileSync(this.options.caCerts), })); }; /** JSDoc */ BaseTransport.prototype._sendWithModule = function (httpModule, event) { return tslib_1.__awaiter(this, void 0, void 0, function () { var _this = this; return tslib_1.__generator(this, function (_a) { if (new Date(Date.now()) < this._disabledUntil) { return [2 /*return*/, Promise.reject(new utils_1.SentryError("Transport locked till " + this._disabledUntil + " due to too many requests."))]; } if (!this._buffer.isReady()) { return [2 /*return*/, Promise.reject(new utils_1.SentryError('Not adding Promise due to buffer limit reached.'))]; } return [2 /*return*/, this._buffer.add(new Promise(function (resolve, reject) { var sentryReq = core_1.eventToSentryRequest(event, _this._api); var options = _this._getRequestOptions(new url.URL(sentryReq.url)); var req = httpModule.request(options, function (res) { var statusCode = res.statusCode || 500; var status = types_1.Status.fromHttpCode(statusCode); res.setEncoding('utf8'); if (status === types_1.Status.Success) { resolve({ status: status }); } else { if (status === types_1.Status.RateLimit) { var now = Date.now(); /** * "Key-value pairs of header names and values. Header names are lower-cased." * https://nodejs.org/api/http.html#http_message_headers */ var retryAfterHeader = res.headers ? res.headers['retry-after'] : ''; retryAfterHeader = (Array.isArray(retryAfterHeader) ? retryAfterHeader[0] : retryAfterHeader); _this._disabledUntil = new Date(now + utils_1.parseRetryAfterHeader(now, retryAfterHeader)); utils_1.logger.warn("Too many requests, backing off till: " + _this._disabledUntil); } var rejectionMessage = "HTTP Error (" + statusCode + ")"; if (res.headers && res.headers['x-sentry-error']) { rejectionMessage += ": " + res.headers['x-sentry-error']; } reject(new utils_1.SentryError(rejectionMessage)); } // Force the socket to drain res.on('data', function () { // Drain }); res.on('end', function () { // Drain }); }); req.on('error', reject); req.end(sentryReq.body); }))]; }); }); }; return BaseTransport; }()); exports.BaseTransport = BaseTransport; //# sourceMappingURL=base.js.map