UNPKG

@sentry/browser

Version:
94 lines (80 loc) 2.02 kB
Object.defineProperty(exports, '__esModule', { value: true }); var core = require('@sentry/core'); var utils = require('@sentry/utils'); var eventbuilder = require('../eventbuilder.js'); var DEFAULT_KEY = 'cause'; var DEFAULT_LIMIT = 5; /** Adds SDK info to an event. */ class LinkedErrors { /** * @inheritDoc */ static __initStatic() {this.id = 'LinkedErrors';} /** * @inheritDoc */ __init() {this.name = LinkedErrors.id;} /** * @inheritDoc */ /** * @inheritDoc */ /** * @inheritDoc */ constructor(options = {}) {;LinkedErrors.prototype.__init.call(this); this._key = options.key || DEFAULT_KEY; this._limit = options.limit || DEFAULT_LIMIT; } /** * @inheritDoc */ setupOnce() { var client = core.getCurrentHub().getClient(); if (!client) { return; } core.addGlobalEventProcessor((event, hint) => { var self = core.getCurrentHub().getIntegration(LinkedErrors); return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event; }); } } LinkedErrors.__initStatic(); /** * @inheritDoc */ function _handler( parser, key, limit, event, hint, ) { if (!event.exception || !event.exception.values || !hint || !utils.isInstanceOf(hint.originalException, Error)) { return event; } var linkedErrors = _walkErrorTree(parser, limit, hint.originalException , key); event.exception.values = [...linkedErrors, ...event.exception.values]; return event; } /** * JSDOC */ function _walkErrorTree( parser, limit, error, key, stack = [], ) { if (!utils.isInstanceOf(error[key], Error) || stack.length + 1 >= limit) { return stack; } var exception = eventbuilder.exceptionFromError(parser, error[key]); return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]); } exports.LinkedErrors = LinkedErrors; exports._handler = _handler; exports._walkErrorTree = _walkErrorTree; //# sourceMappingURL=linkederrors.js.map