@sentry/browser 6.14.3 → 6.17.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle.es6.js +1271 -1393
- package/build/bundle.es6.js.map +1 -1
- package/build/bundle.es6.min.js +2 -2
- package/build/bundle.es6.min.js.map +1 -1
- package/build/bundle.js +1367 -1520
- package/build/bundle.js.map +1 -1
- package/build/bundle.min.js +2 -2
- package/build/bundle.min.js.map +1 -1
- package/dist/backend.d.ts +2 -2
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +1 -2
- package/dist/backend.js.map +1 -1
- package/dist/eventbuilder.d.ts +2 -2
- package/dist/eventbuilder.d.ts.map +1 -1
- package/dist/eventbuilder.js +20 -13
- package/dist/eventbuilder.js.map +1 -1
- package/dist/exports.d.ts +1 -1
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +0 -3
- package/dist/exports.js.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +26 -37
- package/dist/helpers.js.map +1 -1
- package/dist/integrations/breadcrumbs.d.ts +0 -20
- package/dist/integrations/breadcrumbs.d.ts.map +1 -1
- package/dist/integrations/breadcrumbs.js +132 -174
- package/dist/integrations/breadcrumbs.js.map +1 -1
- package/dist/integrations/dedupe.d.ts +0 -14
- package/dist/integrations/dedupe.d.ts.map +1 -1
- package/dist/integrations/dedupe.js +126 -126
- package/dist/integrations/dedupe.js.map +1 -1
- package/dist/integrations/globalhandlers.d.ts +7 -25
- package/dist/integrations/globalhandlers.d.ts.map +1 -1
- package/dist/integrations/globalhandlers.js +176 -169
- package/dist/integrations/globalhandlers.js.map +1 -1
- package/dist/integrations/linkederrors.d.ts +15 -13
- package/dist/integrations/linkederrors.d.ts.map +1 -1
- package/dist/integrations/linkederrors.js +26 -28
- package/dist/integrations/linkederrors.js.map +1 -1
- package/dist/integrations/trycatch.d.ts +0 -8
- package/dist/integrations/trycatch.d.ts.map +1 -1
- package/dist/integrations/trycatch.js +154 -153
- package/dist/integrations/trycatch.js.map +1 -1
- package/dist/integrations/useragent.js +2 -3
- package/dist/integrations/useragent.js.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +23 -19
- package/dist/sdk.js.map +1 -1
- package/dist/transports/base.d.ts +9 -4
- package/dist/transports/base.d.ts.map +1 -1
- package/dist/transports/base.js +23 -19
- package/dist/transports/base.js.map +1 -1
- package/dist/transports/fetch.d.ts +2 -10
- package/dist/transports/fetch.d.ts.map +1 -1
- package/dist/transports/fetch.js +3 -17
- package/dist/transports/fetch.js.map +1 -1
- package/dist/transports/utils.d.ts.map +1 -1
- package/dist/transports/utils.js +7 -5
- package/dist/transports/utils.js.map +1 -1
- package/dist/transports/xhr.d.ts +2 -10
- package/dist/transports/xhr.d.ts.map +1 -1
- package/dist/transports/xhr.js +3 -17
- package/dist/transports/xhr.js.map +1 -1
- package/esm/backend.d.ts +2 -2
- package/esm/backend.d.ts.map +1 -1
- package/esm/backend.js +1 -2
- package/esm/backend.js.map +1 -1
- package/esm/eventbuilder.d.ts +2 -2
- package/esm/eventbuilder.d.ts.map +1 -1
- package/esm/eventbuilder.js +21 -14
- package/esm/eventbuilder.js.map +1 -1
- package/esm/exports.d.ts +1 -1
- package/esm/exports.d.ts.map +1 -1
- package/esm/exports.js +0 -1
- package/esm/exports.js.map +1 -1
- package/esm/helpers.d.ts.map +1 -1
- package/esm/helpers.js +28 -39
- package/esm/helpers.js.map +1 -1
- package/esm/integrations/breadcrumbs.d.ts +0 -20
- package/esm/integrations/breadcrumbs.d.ts.map +1 -1
- package/esm/integrations/breadcrumbs.js +134 -176
- package/esm/integrations/breadcrumbs.js.map +1 -1
- package/esm/integrations/dedupe.d.ts +0 -14
- package/esm/integrations/dedupe.d.ts.map +1 -1
- package/esm/integrations/dedupe.js +126 -126
- package/esm/integrations/dedupe.js.map +1 -1
- package/esm/integrations/globalhandlers.d.ts +7 -25
- package/esm/integrations/globalhandlers.d.ts.map +1 -1
- package/esm/integrations/globalhandlers.js +178 -171
- package/esm/integrations/globalhandlers.js.map +1 -1
- package/esm/integrations/linkederrors.d.ts +15 -13
- package/esm/integrations/linkederrors.d.ts.map +1 -1
- package/esm/integrations/linkederrors.js +24 -28
- package/esm/integrations/linkederrors.js.map +1 -1
- package/esm/integrations/trycatch.d.ts +0 -8
- package/esm/integrations/trycatch.d.ts.map +1 -1
- package/esm/integrations/trycatch.js +155 -154
- package/esm/integrations/trycatch.js.map +1 -1
- package/esm/integrations/useragent.js +2 -3
- package/esm/integrations/useragent.js.map +1 -1
- package/esm/sdk.d.ts.map +1 -1
- package/esm/sdk.js +24 -20
- package/esm/sdk.js.map +1 -1
- package/esm/transports/base.d.ts +9 -4
- package/esm/transports/base.d.ts.map +1 -1
- package/esm/transports/base.js +25 -21
- package/esm/transports/base.js.map +1 -1
- package/esm/transports/fetch.d.ts +2 -10
- package/esm/transports/fetch.d.ts.map +1 -1
- package/esm/transports/fetch.js +3 -17
- package/esm/transports/fetch.js.map +1 -1
- package/esm/transports/utils.d.ts.map +1 -1
- package/esm/transports/utils.js +8 -6
- package/esm/transports/utils.js.map +1 -1
- package/esm/transports/xhr.d.ts +2 -10
- package/esm/transports/xhr.d.ts.map +1 -1
- package/esm/transports/xhr.js +3 -17
- package/esm/transports/xhr.js.map +1 -1
- package/package.json +15 -17
|
@@ -16,7 +16,7 @@ var Dedupe = /** @class */ (function () {
|
|
|
16
16
|
if (self) {
|
|
17
17
|
// Juuust in case something goes wrong
|
|
18
18
|
try {
|
|
19
|
-
if (
|
|
19
|
+
if (_shouldDropEvent(currentEvent, self._previousEvent)) {
|
|
20
20
|
logger.warn("Event dropped due to being a duplicate of previously captured event.");
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
@@ -29,139 +29,139 @@ var Dedupe = /** @class */ (function () {
|
|
|
29
29
|
return currentEvent;
|
|
30
30
|
});
|
|
31
31
|
};
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
32
|
+
/**
|
|
33
|
+
* @inheritDoc
|
|
34
|
+
*/
|
|
35
|
+
Dedupe.id = 'Dedupe';
|
|
36
|
+
return Dedupe;
|
|
37
|
+
}());
|
|
38
|
+
export { Dedupe };
|
|
39
|
+
/** JSDoc */
|
|
40
|
+
function _shouldDropEvent(currentEvent, previousEvent) {
|
|
41
|
+
if (!previousEvent) {
|
|
43
42
|
return false;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
Dedupe.prototype._isSameMessageEvent = function (currentEvent, previousEvent) {
|
|
47
|
-
var currentMessage = currentEvent.message;
|
|
48
|
-
var previousMessage = previousEvent.message;
|
|
49
|
-
// If neither event has a message property, they were both exceptions, so bail out
|
|
50
|
-
if (!currentMessage && !previousMessage) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
// If only one event has a stacktrace, but not the other one, they are not the same
|
|
54
|
-
if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
if (currentMessage !== previousMessage) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
if (!this._isSameFingerprint(currentEvent, previousEvent)) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
if (!this._isSameStacktrace(currentEvent, previousEvent)) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
43
|
+
}
|
|
44
|
+
if (_isSameMessageEvent(currentEvent, previousEvent)) {
|
|
66
45
|
return true;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
Dedupe.prototype._getFramesFromEvent = function (event) {
|
|
70
|
-
var exception = event.exception;
|
|
71
|
-
if (exception) {
|
|
72
|
-
try {
|
|
73
|
-
// @ts-ignore Object could be undefined
|
|
74
|
-
return exception.values[0].stacktrace.frames;
|
|
75
|
-
}
|
|
76
|
-
catch (_oO) {
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
else if (event.stacktrace) {
|
|
81
|
-
return event.stacktrace.frames;
|
|
82
|
-
}
|
|
83
|
-
return undefined;
|
|
84
|
-
};
|
|
85
|
-
/** JSDoc */
|
|
86
|
-
Dedupe.prototype._isSameStacktrace = function (currentEvent, previousEvent) {
|
|
87
|
-
var currentFrames = this._getFramesFromEvent(currentEvent);
|
|
88
|
-
var previousFrames = this._getFramesFromEvent(previousEvent);
|
|
89
|
-
// If neither event has a stacktrace, they are assumed to be the same
|
|
90
|
-
if (!currentFrames && !previousFrames) {
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
// If only one event has a stacktrace, but not the other one, they are not the same
|
|
94
|
-
if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
currentFrames = currentFrames;
|
|
98
|
-
previousFrames = previousFrames;
|
|
99
|
-
// If number of frames differ, they are not the same
|
|
100
|
-
if (previousFrames.length !== currentFrames.length) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
// Otherwise, compare the two
|
|
104
|
-
for (var i = 0; i < previousFrames.length; i++) {
|
|
105
|
-
var frameA = previousFrames[i];
|
|
106
|
-
var frameB = currentFrames[i];
|
|
107
|
-
if (frameA.filename !== frameB.filename ||
|
|
108
|
-
frameA.lineno !== frameB.lineno ||
|
|
109
|
-
frameA.colno !== frameB.colno ||
|
|
110
|
-
frameA.function !== frameB.function) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
46
|
+
}
|
|
47
|
+
if (_isSameExceptionEvent(currentEvent, previousEvent)) {
|
|
114
48
|
return true;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
/** JSDoc */
|
|
53
|
+
function _isSameMessageEvent(currentEvent, previousEvent) {
|
|
54
|
+
var currentMessage = currentEvent.message;
|
|
55
|
+
var previousMessage = previousEvent.message;
|
|
56
|
+
// If neither event has a message property, they were both exceptions, so bail out
|
|
57
|
+
if (!currentMessage && !previousMessage) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// If only one event has a stacktrace, but not the other one, they are not the same
|
|
61
|
+
if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if (currentMessage !== previousMessage) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
if (!_isSameFingerprint(currentEvent, previousEvent)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
if (!_isSameStacktrace(currentEvent, previousEvent)) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
/** JSDoc */
|
|
76
|
+
function _isSameExceptionEvent(currentEvent, previousEvent) {
|
|
77
|
+
var previousException = _getExceptionFromEvent(previousEvent);
|
|
78
|
+
var currentException = _getExceptionFromEvent(currentEvent);
|
|
79
|
+
if (!previousException || !currentException) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
if (previousException.type !== currentException.type || previousException.value !== currentException.value) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
if (!_isSameFingerprint(currentEvent, previousEvent)) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (!_isSameStacktrace(currentEvent, previousEvent)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
/** JSDoc */
|
|
94
|
+
function _isSameStacktrace(currentEvent, previousEvent) {
|
|
95
|
+
var currentFrames = _getFramesFromEvent(currentEvent);
|
|
96
|
+
var previousFrames = _getFramesFromEvent(previousEvent);
|
|
97
|
+
// If neither event has a stacktrace, they are assumed to be the same
|
|
98
|
+
if (!currentFrames && !previousFrames) {
|
|
136
99
|
return true;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
100
|
+
}
|
|
101
|
+
// If only one event has a stacktrace, but not the other one, they are not the same
|
|
102
|
+
if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
currentFrames = currentFrames;
|
|
106
|
+
previousFrames = previousFrames;
|
|
107
|
+
// If number of frames differ, they are not the same
|
|
108
|
+
if (previousFrames.length !== currentFrames.length) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
// Otherwise, compare the two
|
|
112
|
+
for (var i = 0; i < previousFrames.length; i++) {
|
|
113
|
+
var frameA = previousFrames[i];
|
|
114
|
+
var frameB = currentFrames[i];
|
|
115
|
+
if (frameA.filename !== frameB.filename ||
|
|
116
|
+
frameA.lineno !== frameB.lineno ||
|
|
117
|
+
frameA.colno !== frameB.colno ||
|
|
118
|
+
frameA.function !== frameB.function) {
|
|
148
119
|
return false;
|
|
149
120
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/** JSDoc */
|
|
125
|
+
function _isSameFingerprint(currentEvent, previousEvent) {
|
|
126
|
+
var currentFingerprint = currentEvent.fingerprint;
|
|
127
|
+
var previousFingerprint = previousEvent.fingerprint;
|
|
128
|
+
// If neither event has a fingerprint, they are assumed to be the same
|
|
129
|
+
if (!currentFingerprint && !previousFingerprint) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
// If only one event has a fingerprint, but not the other one, they are not the same
|
|
133
|
+
if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
currentFingerprint = currentFingerprint;
|
|
137
|
+
previousFingerprint = previousFingerprint;
|
|
138
|
+
// Otherwise, compare the two
|
|
139
|
+
try {
|
|
140
|
+
return !!(currentFingerprint.join('') === previousFingerprint.join(''));
|
|
141
|
+
}
|
|
142
|
+
catch (_oO) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/** JSDoc */
|
|
147
|
+
function _getExceptionFromEvent(event) {
|
|
148
|
+
return event.exception && event.exception.values && event.exception.values[0];
|
|
149
|
+
}
|
|
150
|
+
/** JSDoc */
|
|
151
|
+
function _getFramesFromEvent(event) {
|
|
152
|
+
var exception = event.exception;
|
|
153
|
+
if (exception) {
|
|
153
154
|
try {
|
|
154
|
-
|
|
155
|
+
// @ts-ignore Object could be undefined
|
|
156
|
+
return exception.values[0].stacktrace.frames;
|
|
155
157
|
}
|
|
156
158
|
catch (_oO) {
|
|
157
|
-
return
|
|
159
|
+
return undefined;
|
|
158
160
|
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}());
|
|
166
|
-
export { Dedupe };
|
|
161
|
+
}
|
|
162
|
+
else if (event.stacktrace) {
|
|
163
|
+
return event.stacktrace.frames;
|
|
164
|
+
}
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
167
|
//# sourceMappingURL=dedupe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../src/integrations/dedupe.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (self._shouldDropEvent(currentEvent, self._previousEvent)) {\n logger.warn(`Event dropped due to being a duplicate of previously captured event.`);\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n\n /** JSDoc */\n private _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (this._isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (this._isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n }\n\n /** JSDoc */\n private _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n }\n\n /** JSDoc */\n private _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n }\n\n /** JSDoc */\n private _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = this._getFramesFromEvent(currentEvent);\n let previousFrames = this._getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n /** JSDoc */\n private _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n }\n\n /** JSDoc */\n private _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = this._getExceptionFromEvent(previousEvent);\n const currentException = this._getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n }\n\n /** JSDoc */\n private _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../src/integrations/dedupe.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n logger.warn(`Event dropped due to being a duplicate of previously captured event.`);\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Integration } from '@sentry/types';
|
|
2
|
+
declare type GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';
|
|
2
3
|
/** JSDoc */
|
|
3
|
-
|
|
4
|
-
onerror: boolean;
|
|
5
|
-
onunhandledrejection: boolean;
|
|
6
|
-
}
|
|
4
|
+
declare type GlobalHandlersIntegrations = Record<GlobalHandlersIntegrationsOptionKeys, boolean>;
|
|
7
5
|
/** Global handlers */
|
|
8
6
|
export declare class GlobalHandlers implements Integration {
|
|
9
7
|
/**
|
|
@@ -16,33 +14,17 @@ export declare class GlobalHandlers implements Integration {
|
|
|
16
14
|
name: string;
|
|
17
15
|
/** JSDoc */
|
|
18
16
|
private readonly _options;
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Stores references functions to installing handlers. Will set to undefined
|
|
19
|
+
* after they have been run so that they are not used twice.
|
|
20
|
+
*/
|
|
21
|
+
private _installFunc;
|
|
23
22
|
/** JSDoc */
|
|
24
23
|
constructor(options?: GlobalHandlersIntegrations);
|
|
25
24
|
/**
|
|
26
25
|
* @inheritDoc
|
|
27
26
|
*/
|
|
28
27
|
setupOnce(): void;
|
|
29
|
-
/** JSDoc */
|
|
30
|
-
private _installGlobalOnErrorHandler;
|
|
31
|
-
/** JSDoc */
|
|
32
|
-
private _installGlobalOnUnhandledRejectionHandler;
|
|
33
|
-
/**
|
|
34
|
-
* This function creates a stack from an old, error-less onerror handler.
|
|
35
|
-
*/
|
|
36
|
-
private _eventFromIncompleteOnError;
|
|
37
|
-
/**
|
|
38
|
-
* Create an event from a promise rejection where the `reason` is a primitive.
|
|
39
|
-
*
|
|
40
|
-
* @param reason: The `reason` property of the promise rejection
|
|
41
|
-
* @returns An Event object with an appropriate `exception` value
|
|
42
|
-
*/
|
|
43
|
-
private _eventFromRejectionWithPrimitive;
|
|
44
|
-
/** JSDoc */
|
|
45
|
-
private _enhanceEventWithInitialFrame;
|
|
46
28
|
}
|
|
47
29
|
export {};
|
|
48
30
|
//# sourceMappingURL=globalhandlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,WAAW,EAAa,MAAM,eAAe,CAAC;AAe9E,aAAK,oCAAoC,GAAG,SAAS,GAAG,sBAAsB,CAAC;AAE/E,YAAY;AACZ,aAAK,0BAA0B,GAAG,MAAM,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;AAExF,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD;;;OAGG;IACH,OAAO,CAAC,YAAY,CAGlB;IAEF,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAOvD;;OAEG;IACI,SAAS,IAAI,IAAI;CAgBzB"}
|