UNPKG

sentry-testkit

Version:

Sentry Testkit enables Sentry to work natively in your application while running tests. The report is not really sent but rather logged locally into memory. In this way, the logged reports can be fetched for your own verification or any other purpose in y

40 lines 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleEnvelopeRequestData = exports.parseEnvelopeRequest = exports.parseDsn = void 0; var transformers_1 = require("./transformers"); var dsnKeys = 'source protocol user pass host port path'.split(' '); var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; //eslint-disable-line no-useless-escape function parseDsn(dsn) { var dsnMatch = dsn.match(dsnPattern); if (!dsnMatch) { throw new Error('Could not parse DSN'); } var _a = dsnMatch.reduce(function (parsed, current, index) { var _a; return Object.assign({}, parsed, (_a = {}, _a[dsnKeys[index]] = current, _a)); }, {}), protocol = _a.protocol, host = _a.host, path = _a.path; var project = path.substr(path.lastIndexOf('/') + 1); return { protocol: protocol, project: project, host: host }; } exports.parseDsn = parseDsn; function parseEnvelopeRequest(reqBody) { var _a = reqBody.split('\n'), _header = _a[0], itemHeader = _a[1], itemPayload = _a[2]; return { type: JSON.parse(itemHeader).type, payload: JSON.parse(itemPayload), }; } exports.parseEnvelopeRequest = parseEnvelopeRequest; function handleEnvelopeRequestData(requestBody, testkit) { var _a = parseEnvelopeRequest(requestBody), type = _a.type, payload = _a.payload; if (type === 'transaction') { testkit.transactions().push((0, transformers_1.transformTransaction)(payload)); } else if (type === 'event') { testkit.reports().push((0, transformers_1.transformReport)(payload)); } } exports.handleEnvelopeRequestData = handleEnvelopeRequestData; //# sourceMappingURL=parsers.js.map