UNPKG

3.01 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 parsers_1 = require("../parsers");
6var DEFAULT_KEY = 'cause';
7var DEFAULT_LIMIT = 5;
8/** Adds SDK info to an event. */
9var LinkedErrors = /** @class */ (function () {
10 /**
11 * @inheritDoc
12 */
13 function LinkedErrors(options) {
14 if (options === void 0) { options = {}; }
15 /**
16 * @inheritDoc
17 */
18 this.name = LinkedErrors.id;
19 this._key = options.key || DEFAULT_KEY;
20 this._limit = options.limit || DEFAULT_LIMIT;
21 }
22 /**
23 * @inheritDoc
24 */
25 LinkedErrors.prototype.setupOnce = function () {
26 core_1.addGlobalEventProcessor(function (event, hint) {
27 var self = core_1.getCurrentHub().getIntegration(LinkedErrors);
28 if (self) {
29 var handler = self._handler && self._handler.bind(self);
30 return typeof handler === 'function' ? handler(event, hint) : event;
31 }
32 return event;
33 });
34 };
35 /**
36 * @inheritDoc
37 */
38 LinkedErrors.prototype._handler = function (event, hint) {
39 var _this = this;
40 if (!event.exception || !event.exception.values || !hint || !utils_1.isInstanceOf(hint.originalException, Error)) {
41 return utils_1.SyncPromise.resolve(event);
42 }
43 return new utils_1.SyncPromise(function (resolve) {
44 void _this._walkErrorTree(hint.originalException, _this._key)
45 .then(function (linkedErrors) {
46 if (event && event.exception && event.exception.values) {
47 event.exception.values = tslib_1.__spread(linkedErrors, event.exception.values);
48 }
49 resolve(event);
50 })
51 .then(null, function () {
52 resolve(event);
53 });
54 });
55 };
56 /**
57 * @inheritDoc
58 */
59 LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {
60 var _this = this;
61 if (stack === void 0) { stack = []; }
62 if (!utils_1.isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {
63 return utils_1.SyncPromise.resolve(stack);
64 }
65 return new utils_1.SyncPromise(function (resolve, reject) {
66 void parsers_1.getExceptionFromError(error[key])
67 .then(function (exception) {
68 void _this._walkErrorTree(error[key], key, tslib_1.__spread([exception], stack))
69 .then(resolve)
70 .then(null, function () {
71 reject();
72 });
73 })
74 .then(null, function () {
75 reject();
76 });
77 });
78 };
79 /**
80 * @inheritDoc
81 */
82 LinkedErrors.id = 'LinkedErrors';
83 return LinkedErrors;
84}());
85exports.LinkedErrors = LinkedErrors;
86//# sourceMappingURL=linkederrors.js.map
\No newline at end of file