@sentry/browser 7.0.0-alpha.0 → 7.0.0-beta.1
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/README.md +2 -3
- package/cjs/client.js +130 -68
- package/cjs/client.js.map +1 -1
- package/cjs/eventbuilder.js +227 -168
- package/cjs/eventbuilder.js.map +1 -1
- package/cjs/exports.js +55 -42
- package/cjs/exports.js.map +1 -1
- package/cjs/flags.js +7 -3
- package/cjs/flags.js.map +1 -1
- package/cjs/helpers.js +123 -130
- package/cjs/helpers.js.map +1 -1
- package/cjs/index.js +78 -13
- package/cjs/index.js.map +1 -1
- package/cjs/integrations/breadcrumbs.js +223 -193
- package/cjs/integrations/breadcrumbs.js.map +1 -1
- package/cjs/integrations/dedupe.js +183 -143
- package/cjs/integrations/dedupe.js.map +1 -1
- package/cjs/integrations/globalhandlers.js +212 -171
- package/cjs/integrations/globalhandlers.js.map +1 -1
- package/cjs/integrations/httpcontext.js +51 -0
- package/cjs/integrations/httpcontext.js.map +1 -0
- package/cjs/integrations/index.js +18 -14
- package/cjs/integrations/index.js.map +1 -1
- package/cjs/integrations/linkederrors.js +79 -48
- package/cjs/integrations/linkederrors.js.map +1 -1
- package/cjs/integrations/trycatch.js +245 -216
- package/cjs/integrations/trycatch.js.map +1 -1
- package/cjs/sdk.js +168 -108
- package/cjs/sdk.js.map +1 -1
- package/cjs/stack-parsers.js +134 -83
- package/cjs/stack-parsers.js.map +1 -1
- package/cjs/transports/fetch.js +34 -80
- package/cjs/transports/fetch.js.map +1 -1
- package/cjs/transports/index.js +10 -12
- package/cjs/transports/index.js.map +1 -1
- package/cjs/transports/utils.js +57 -52
- package/cjs/transports/utils.js.map +1 -1
- package/cjs/transports/xhr.js +53 -63
- package/cjs/transports/xhr.js.map +1 -1
- package/esm/client.js +128 -67
- package/esm/client.js.map +1 -1
- package/esm/eventbuilder.js +218 -159
- package/esm/eventbuilder.js.map +1 -1
- package/esm/exports.js +12 -7
- package/esm/exports.js.map +1 -1
- package/esm/flags.js +5 -2
- package/esm/flags.js.map +1 -1
- package/esm/helpers.js +121 -127
- package/esm/helpers.js.map +1 -1
- package/esm/index.js +28 -10
- package/esm/index.js.map +1 -1
- package/esm/integrations/breadcrumbs.js +219 -191
- package/esm/integrations/breadcrumbs.js.map +1 -1
- package/esm/integrations/dedupe.js +180 -141
- package/esm/integrations/dedupe.js.map +1 -1
- package/esm/integrations/globalhandlers.js +209 -169
- package/esm/integrations/globalhandlers.js.map +1 -1
- package/esm/integrations/httpcontext.js +49 -0
- package/esm/integrations/httpcontext.js.map +1 -0
- package/esm/integrations/index.js +7 -7
- package/esm/integrations/index.js.map +1 -1
- package/esm/integrations/linkederrors.js +75 -45
- package/esm/integrations/linkederrors.js.map +1 -1
- package/esm/integrations/trycatch.js +242 -214
- package/esm/integrations/trycatch.js.map +1 -1
- package/esm/sdk.js +164 -105
- package/esm/sdk.js.map +1 -1
- package/esm/stack-parsers.js +126 -82
- package/esm/stack-parsers.js.map +1 -1
- package/esm/transports/fetch.js +32 -79
- package/esm/transports/fetch.js.map +1 -1
- package/esm/transports/index.js +3 -6
- package/esm/transports/index.js.map +1 -1
- package/esm/transports/utils.js +56 -51
- package/esm/transports/utils.js.map +1 -1
- package/esm/transports/xhr.js +51 -62
- package/esm/transports/xhr.js.map +1 -1
- package/package.json +4 -5
- package/types/client.d.ts +42 -11
- package/types/client.d.ts.map +1 -1
- package/types/eventbuilder.d.ts +10 -12
- package/types/eventbuilder.d.ts.map +1 -1
- package/types/exports.d.ts +7 -6
- package/types/exports.d.ts.map +1 -1
- package/types/helpers.d.ts +0 -5
- package/types/helpers.d.ts.map +1 -1
- package/types/index.d.ts +2 -3
- package/types/index.d.ts.map +1 -1
- package/types/integrations/breadcrumbs.d.ts +6 -7
- package/types/integrations/breadcrumbs.d.ts.map +1 -1
- package/types/integrations/dedupe.d.ts.map +1 -1
- package/types/integrations/globalhandlers.d.ts.map +1 -1
- package/types/integrations/{useragent.d.ts → httpcontext.d.ts} +3 -3
- package/types/integrations/httpcontext.d.ts.map +1 -0
- package/types/integrations/index.d.ts +1 -1
- package/types/integrations/index.d.ts.map +1 -1
- package/types/integrations/linkederrors.d.ts +3 -3
- package/types/integrations/linkederrors.d.ts.map +1 -1
- package/types/sdk.d.ts +5 -5
- package/types/sdk.d.ts.map +1 -1
- package/types/stack-parsers.d.ts +8 -6
- package/types/stack-parsers.d.ts.map +1 -1
- package/types/transports/fetch.d.ts +6 -15
- package/types/transports/fetch.d.ts.map +1 -1
- package/types/transports/index.d.ts +2 -5
- package/types/transports/index.d.ts.map +1 -1
- package/types/transports/types.d.ts +10 -0
- package/types/transports/types.d.ts.map +1 -0
- package/types/transports/utils.d.ts.map +1 -1
- package/types/transports/xhr.d.ts +6 -10
- package/types/transports/xhr.d.ts.map +1 -1
- package/cjs/backend.d.ts +0 -39
- package/cjs/backend.d.ts.map +0 -1
- package/cjs/backend.js +0 -58
- package/cjs/backend.js.map +0 -1
- package/cjs/client.d.ts +0 -33
- package/cjs/client.d.ts.map +0 -1
- package/cjs/eventbuilder.d.ts +0 -39
- package/cjs/eventbuilder.d.ts.map +0 -1
- package/cjs/exports.d.ts +0 -9
- package/cjs/exports.d.ts.map +0 -1
- package/cjs/flags.d.ts +0 -3
- package/cjs/flags.d.ts.map +0 -1
- package/cjs/helpers.d.ts +0 -52
- package/cjs/helpers.d.ts.map +0 -1
- package/cjs/index.d.ts +0 -16
- package/cjs/index.d.ts.map +0 -1
- package/cjs/integrations/breadcrumbs.d.ts +0 -47
- package/cjs/integrations/breadcrumbs.d.ts.map +0 -1
- package/cjs/integrations/dedupe.d.ts +0 -21
- package/cjs/integrations/dedupe.d.ts.map +0 -1
- package/cjs/integrations/globalhandlers.d.ts +0 -30
- package/cjs/integrations/globalhandlers.d.ts.map +0 -1
- package/cjs/integrations/index.d.ts +0 -7
- package/cjs/integrations/index.d.ts.map +0 -1
- package/cjs/integrations/linkederrors.d.ts +0 -42
- package/cjs/integrations/linkederrors.d.ts.map +0 -1
- package/cjs/integrations/trycatch.d.ts +0 -33
- package/cjs/integrations/trycatch.d.ts.map +0 -1
- package/cjs/integrations/useragent.d.ts +0 -17
- package/cjs/integrations/useragent.d.ts.map +0 -1
- package/cjs/integrations/useragent.js +0 -42
- package/cjs/integrations/useragent.js.map +0 -1
- package/cjs/sdk.d.ts +0 -112
- package/cjs/sdk.d.ts.map +0 -1
- package/cjs/stack-parsers.d.ts +0 -7
- package/cjs/stack-parsers.d.ts.map +0 -1
- package/cjs/transports/base.d.ts +0 -65
- package/cjs/transports/base.d.ts.map +0 -1
- package/cjs/transports/base.js +0 -141
- package/cjs/transports/base.js.map +0 -1
- package/cjs/transports/fetch.d.ts +0 -17
- package/cjs/transports/fetch.d.ts.map +0 -1
- package/cjs/transports/index.d.ts +0 -6
- package/cjs/transports/index.d.ts.map +0 -1
- package/cjs/transports/new-fetch.d.ts +0 -10
- package/cjs/transports/new-fetch.d.ts.map +0 -1
- package/cjs/transports/new-fetch.js +0 -27
- package/cjs/transports/new-fetch.js.map +0 -1
- package/cjs/transports/new-xhr.d.ts +0 -11
- package/cjs/transports/new-xhr.d.ts.map +0 -1
- package/cjs/transports/new-xhr.js +0 -46
- package/cjs/transports/new-xhr.js.map +0 -1
- package/cjs/transports/utils.d.ts +0 -48
- package/cjs/transports/utils.d.ts.map +0 -1
- package/cjs/transports/xhr.d.ts +0 -11
- package/cjs/transports/xhr.d.ts.map +0 -1
- package/cjs/version.d.ts +0 -2
- package/cjs/version.d.ts.map +0 -1
- package/cjs/version.js +0 -4
- package/cjs/version.js.map +0 -1
- package/esm/backend.d.ts +0 -39
- package/esm/backend.d.ts.map +0 -1
- package/esm/backend.js +0 -57
- package/esm/backend.js.map +0 -1
- package/esm/client.d.ts +0 -33
- package/esm/client.d.ts.map +0 -1
- package/esm/eventbuilder.d.ts +0 -39
- package/esm/eventbuilder.d.ts.map +0 -1
- package/esm/exports.d.ts +0 -9
- package/esm/exports.d.ts.map +0 -1
- package/esm/flags.d.ts +0 -3
- package/esm/flags.d.ts.map +0 -1
- package/esm/helpers.d.ts +0 -52
- package/esm/helpers.d.ts.map +0 -1
- package/esm/index.d.ts +0 -16
- package/esm/index.d.ts.map +0 -1
- package/esm/integrations/breadcrumbs.d.ts +0 -47
- package/esm/integrations/breadcrumbs.d.ts.map +0 -1
- package/esm/integrations/dedupe.d.ts +0 -21
- package/esm/integrations/dedupe.d.ts.map +0 -1
- package/esm/integrations/globalhandlers.d.ts +0 -30
- package/esm/integrations/globalhandlers.d.ts.map +0 -1
- package/esm/integrations/index.d.ts +0 -7
- package/esm/integrations/index.d.ts.map +0 -1
- package/esm/integrations/linkederrors.d.ts +0 -42
- package/esm/integrations/linkederrors.d.ts.map +0 -1
- package/esm/integrations/trycatch.d.ts +0 -33
- package/esm/integrations/trycatch.d.ts.map +0 -1
- package/esm/integrations/useragent.d.ts +0 -17
- package/esm/integrations/useragent.d.ts.map +0 -1
- package/esm/integrations/useragent.js +0 -41
- package/esm/integrations/useragent.js.map +0 -1
- package/esm/sdk.d.ts +0 -112
- package/esm/sdk.d.ts.map +0 -1
- package/esm/stack-parsers.d.ts +0 -7
- package/esm/stack-parsers.d.ts.map +0 -1
- package/esm/transports/base.d.ts +0 -65
- package/esm/transports/base.d.ts.map +0 -1
- package/esm/transports/base.js +0 -140
- package/esm/transports/base.js.map +0 -1
- package/esm/transports/fetch.d.ts +0 -17
- package/esm/transports/fetch.d.ts.map +0 -1
- package/esm/transports/index.d.ts +0 -6
- package/esm/transports/index.d.ts.map +0 -1
- package/esm/transports/new-fetch.d.ts +0 -10
- package/esm/transports/new-fetch.d.ts.map +0 -1
- package/esm/transports/new-fetch.js +0 -25
- package/esm/transports/new-fetch.js.map +0 -1
- package/esm/transports/new-xhr.d.ts +0 -11
- package/esm/transports/new-xhr.d.ts.map +0 -1
- package/esm/transports/new-xhr.js +0 -44
- package/esm/transports/new-xhr.js.map +0 -1
- package/esm/transports/utils.d.ts +0 -48
- package/esm/transports/utils.d.ts.map +0 -1
- package/esm/transports/xhr.d.ts +0 -11
- package/esm/transports/xhr.d.ts.map +0 -1
- package/esm/version.d.ts +0 -2
- package/esm/version.d.ts.map +0 -1
- package/esm/version.js +0 -3
- package/esm/version.js.map +0 -1
- package/types/backend.d.ts +0 -39
- package/types/backend.d.ts.map +0 -1
- package/types/integrations/useragent.d.ts.map +0 -1
- package/types/transports/base.d.ts +0 -65
- package/types/transports/base.d.ts.map +0 -1
- package/types/transports/new-fetch.d.ts +0 -10
- package/types/transports/new-fetch.d.ts.map +0 -1
- package/types/transports/new-xhr.d.ts +0 -11
- package/types/transports/new-xhr.d.ts.map +0 -1
- package/types/version.d.ts +0 -2
- package/types/version.d.ts.map +0 -1
package/cjs/eventbuilder.js
CHANGED
|
@@ -1,219 +1,278 @@
|
|
|
1
|
-
Object.defineProperty(exports,
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
var stack_parsers_1 = require("./stack-parsers");
|
|
1
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
+
|
|
3
|
+
var utils = require('@sentry/utils');
|
|
4
|
+
|
|
6
5
|
/**
|
|
7
|
-
* This function creates an exception from
|
|
8
|
-
* @param stacktrace TraceKitStackTrace that will be converted to an exception
|
|
9
|
-
* @hidden
|
|
6
|
+
* This function creates an exception from a JavaScript Error
|
|
10
7
|
*/
|
|
11
|
-
function exceptionFromError(ex) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
8
|
+
function exceptionFromError(stackParser, ex) {
|
|
9
|
+
// Get the frames first since Opera can lose the stack if we touch anything else first
|
|
10
|
+
var frames = parseStackFrames(stackParser, ex);
|
|
11
|
+
|
|
12
|
+
var exception = {
|
|
13
|
+
type: ex && ex.name,
|
|
14
|
+
value: extractMessage(ex),
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
if (frames.length) {
|
|
18
|
+
exception.stacktrace = { frames };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (exception.type === undefined && exception.value === '') {
|
|
22
|
+
exception.value = 'Unrecoverable error caught';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return exception;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
|
|
27
28
|
/**
|
|
28
29
|
* @hidden
|
|
29
30
|
*/
|
|
30
|
-
function eventFromPlainObject(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
function eventFromPlainObject(
|
|
32
|
+
stackParser,
|
|
33
|
+
exception,
|
|
34
|
+
syntheticException,
|
|
35
|
+
isUnhandledRejection,
|
|
36
|
+
) {
|
|
37
|
+
var event = {
|
|
38
|
+
exception: {
|
|
39
|
+
values: [
|
|
40
|
+
{
|
|
41
|
+
type: utils.isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',
|
|
42
|
+
value: `Non-Error ${
|
|
43
|
+
isUnhandledRejection ? 'promise rejection' : 'exception'
|
|
44
|
+
} captured with keys: ${utils.extractExceptionKeysForMessage(exception)}`,
|
|
39
45
|
},
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
extra: {
|
|
49
|
+
__serialized__: utils.normalizeToSize(exception),
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
if (syntheticException) {
|
|
54
|
+
var frames = parseStackFrames(stackParser, syntheticException);
|
|
55
|
+
if (frames.length) {
|
|
56
|
+
// event.exception.values[0] has been set above
|
|
57
|
+
(event.exception ).values[0].stacktrace = { frames };
|
|
49
58
|
}
|
|
50
|
-
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return event;
|
|
51
62
|
}
|
|
52
|
-
|
|
63
|
+
|
|
53
64
|
/**
|
|
54
65
|
* @hidden
|
|
55
66
|
*/
|
|
56
|
-
function eventFromError(ex) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
67
|
+
function eventFromError(stackParser, ex) {
|
|
68
|
+
return {
|
|
69
|
+
exception: {
|
|
70
|
+
values: [exceptionFromError(stackParser, ex)],
|
|
71
|
+
},
|
|
72
|
+
};
|
|
62
73
|
}
|
|
63
|
-
|
|
74
|
+
|
|
64
75
|
/** Parses stack frames from an error */
|
|
65
|
-
function parseStackFrames(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return
|
|
76
|
+
function parseStackFrames(
|
|
77
|
+
stackParser,
|
|
78
|
+
ex,
|
|
79
|
+
) {
|
|
80
|
+
// Access and store the stacktrace property before doing ANYTHING
|
|
81
|
+
// else to it because Opera is not very good at providing it
|
|
82
|
+
// reliably in other circumstances.
|
|
83
|
+
var stacktrace = ex.stacktrace || ex.stack || '';
|
|
84
|
+
|
|
85
|
+
var popSize = getPopSize(ex);
|
|
86
|
+
|
|
87
|
+
try {
|
|
88
|
+
return stackParser(stacktrace, popSize);
|
|
89
|
+
} catch (e) {
|
|
90
|
+
// no-empty
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return [];
|
|
78
94
|
}
|
|
79
|
-
|
|
95
|
+
|
|
80
96
|
// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
|
|
81
97
|
var reactMinifiedRegexp = /Minified React error #\d+;/i;
|
|
98
|
+
|
|
82
99
|
function getPopSize(ex) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
100
|
+
if (ex) {
|
|
101
|
+
if (typeof ex.framesToPop === 'number') {
|
|
102
|
+
return ex.framesToPop;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (reactMinifiedRegexp.test(ex.message)) {
|
|
106
|
+
return 1;
|
|
90
107
|
}
|
|
91
|
-
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return 0;
|
|
92
111
|
}
|
|
112
|
+
|
|
93
113
|
/**
|
|
94
114
|
* There are cases where stacktrace.message is an Event object
|
|
95
115
|
* https://github.com/getsentry/sentry-javascript/issues/1949
|
|
96
116
|
* In this specific case we try to extract stacktrace.message.error.message
|
|
97
117
|
*/
|
|
98
118
|
function extractMessage(ex) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
119
|
+
var message = ex && ex.message;
|
|
120
|
+
if (!message) {
|
|
121
|
+
return 'No error message';
|
|
122
|
+
}
|
|
123
|
+
if (message.error && typeof message.error.message === 'string') {
|
|
124
|
+
return message.error.message;
|
|
125
|
+
}
|
|
126
|
+
return message;
|
|
107
127
|
}
|
|
128
|
+
|
|
108
129
|
/**
|
|
109
130
|
* Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.
|
|
110
131
|
* @hidden
|
|
111
132
|
*/
|
|
112
|
-
function eventFromException(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
133
|
+
function eventFromException(
|
|
134
|
+
stackParser,
|
|
135
|
+
exception,
|
|
136
|
+
hint,
|
|
137
|
+
attachStacktrace,
|
|
138
|
+
) {
|
|
139
|
+
var syntheticException = (hint && hint.syntheticException) || undefined;
|
|
140
|
+
var event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);
|
|
141
|
+
utils.addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }
|
|
142
|
+
event.level = 'error';
|
|
143
|
+
if (hint && hint.event_id) {
|
|
144
|
+
event.event_id = hint.event_id;
|
|
145
|
+
}
|
|
146
|
+
return utils.resolvedSyncPromise(event);
|
|
121
147
|
}
|
|
122
|
-
|
|
148
|
+
|
|
123
149
|
/**
|
|
124
150
|
* Builds and Event from a Message
|
|
125
151
|
* @hidden
|
|
126
152
|
*/
|
|
127
|
-
function eventFromMessage(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
153
|
+
function eventFromMessage(
|
|
154
|
+
stackParser,
|
|
155
|
+
message,
|
|
156
|
+
level = 'info',
|
|
157
|
+
hint,
|
|
158
|
+
attachStacktrace,
|
|
159
|
+
) {
|
|
160
|
+
var syntheticException = (hint && hint.syntheticException) || undefined;
|
|
161
|
+
var event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
|
|
162
|
+
event.level = level;
|
|
163
|
+
if (hint && hint.event_id) {
|
|
164
|
+
event.event_id = hint.event_id;
|
|
165
|
+
}
|
|
166
|
+
return utils.resolvedSyncPromise(event);
|
|
136
167
|
}
|
|
137
|
-
|
|
168
|
+
|
|
138
169
|
/**
|
|
139
170
|
* @hidden
|
|
140
171
|
*/
|
|
141
|
-
function eventFromUnknownInput(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
function eventFromUnknownInput(
|
|
173
|
+
stackParser,
|
|
174
|
+
exception,
|
|
175
|
+
syntheticException,
|
|
176
|
+
attachStacktrace,
|
|
177
|
+
isUnhandledRejection,
|
|
178
|
+
) {
|
|
179
|
+
let event;
|
|
180
|
+
|
|
181
|
+
if (utils.isErrorEvent(exception ) && (exception ).error) {
|
|
182
|
+
// If it is an ErrorEvent with `error` property, extract it to get actual Error
|
|
183
|
+
var errorEvent = exception ;
|
|
184
|
+
return eventFromError(stackParser, errorEvent.error );
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name
|
|
188
|
+
// and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be
|
|
189
|
+
// `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.
|
|
190
|
+
//
|
|
191
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/DOMError
|
|
192
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/DOMException
|
|
193
|
+
// https://webidl.spec.whatwg.org/#es-DOMException-specialness
|
|
194
|
+
if (utils.isDOMError(exception ) || utils.isDOMException(exception )) {
|
|
195
|
+
var domException = exception ;
|
|
196
|
+
|
|
197
|
+
if ('stack' in (exception )) {
|
|
198
|
+
event = eventFromError(stackParser, exception );
|
|
199
|
+
} else {
|
|
200
|
+
var name = domException.name || (utils.isDOMError(domException) ? 'DOMError' : 'DOMException');
|
|
201
|
+
var message = domException.message ? `${name}: ${domException.message}` : name;
|
|
202
|
+
event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
|
|
203
|
+
utils.addExceptionTypeValue(event, message);
|
|
170
204
|
}
|
|
171
|
-
if (
|
|
172
|
-
|
|
173
|
-
return eventFromError(exception);
|
|
205
|
+
if ('code' in domException) {
|
|
206
|
+
event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };
|
|
174
207
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
// - an instance of Error
|
|
191
|
-
// - a valid ErrorEvent (one with an error property)
|
|
192
|
-
// - a plain Object
|
|
193
|
-
//
|
|
194
|
-
// So bail out and capture it as a simple message:
|
|
195
|
-
event = eventFromString(exception, syntheticException, attachStacktrace);
|
|
196
|
-
utils_1.addExceptionTypeValue(event, "" + exception, undefined);
|
|
197
|
-
utils_1.addExceptionMechanism(event, {
|
|
198
|
-
synthetic: true,
|
|
208
|
+
|
|
209
|
+
return event;
|
|
210
|
+
}
|
|
211
|
+
if (utils.isError(exception)) {
|
|
212
|
+
// we have a real Error object, do nothing
|
|
213
|
+
return eventFromError(stackParser, exception);
|
|
214
|
+
}
|
|
215
|
+
if (utils.isPlainObject(exception) || utils.isEvent(exception)) {
|
|
216
|
+
// If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize
|
|
217
|
+
// it manually. This will allow us to group events based on top-level keys which is much better than creating a new
|
|
218
|
+
// group on any key/value change.
|
|
219
|
+
var objectException = exception ;
|
|
220
|
+
event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);
|
|
221
|
+
utils.addExceptionMechanism(event, {
|
|
222
|
+
synthetic: true,
|
|
199
223
|
});
|
|
200
224
|
return event;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// If none of previous checks were valid, then it means that it's not:
|
|
228
|
+
// - an instance of DOMError
|
|
229
|
+
// - an instance of DOMException
|
|
230
|
+
// - an instance of Event
|
|
231
|
+
// - an instance of Error
|
|
232
|
+
// - a valid ErrorEvent (one with an error property)
|
|
233
|
+
// - a plain Object
|
|
234
|
+
//
|
|
235
|
+
// So bail out and capture it as a simple message:
|
|
236
|
+
event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);
|
|
237
|
+
utils.addExceptionTypeValue(event, `${exception}`, undefined);
|
|
238
|
+
utils.addExceptionMechanism(event, {
|
|
239
|
+
synthetic: true,
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
return event;
|
|
201
243
|
}
|
|
202
|
-
|
|
244
|
+
|
|
203
245
|
/**
|
|
204
246
|
* @hidden
|
|
205
247
|
*/
|
|
206
|
-
function eventFromString(
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
248
|
+
function eventFromString(
|
|
249
|
+
stackParser,
|
|
250
|
+
input,
|
|
251
|
+
syntheticException,
|
|
252
|
+
attachStacktrace,
|
|
253
|
+
) {
|
|
254
|
+
var event = {
|
|
255
|
+
message: input,
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
if (attachStacktrace && syntheticException) {
|
|
259
|
+
var frames = parseStackFrames(stackParser, syntheticException);
|
|
260
|
+
if (frames.length) {
|
|
261
|
+
event.exception = {
|
|
262
|
+
values: [{ value: input, stacktrace: { frames } }],
|
|
263
|
+
};
|
|
215
264
|
}
|
|
216
|
-
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
return event;
|
|
217
268
|
}
|
|
269
|
+
|
|
270
|
+
exports.eventFromError = eventFromError;
|
|
271
|
+
exports.eventFromException = eventFromException;
|
|
272
|
+
exports.eventFromMessage = eventFromMessage;
|
|
273
|
+
exports.eventFromPlainObject = eventFromPlainObject;
|
|
218
274
|
exports.eventFromString = eventFromString;
|
|
219
|
-
|
|
275
|
+
exports.eventFromUnknownInput = eventFromUnknownInput;
|
|
276
|
+
exports.exceptionFromError = exceptionFromError;
|
|
277
|
+
exports.parseStackFrames = parseStackFrames;
|
|
278
|
+
//# sourceMappingURL=eventbuilder.js.map
|
package/cjs/eventbuilder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventbuilder.js","sourceRoot":"","sources":["../../../src/eventbuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventHint, Exception, Severity, StackFrame } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n createStackParser,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport {\n chromeStackParser,\n geckoStackParser,\n opera10StackParser,\n opera11StackParser,\n winjsStackParser,\n} from './stack-parsers';\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromError(ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n exception: Record<string, unknown>,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(ex: Error & { framesToPop?: number; stacktrace?: string }): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return createStackParser(\n opera10StackParser,\n opera11StackParser,\n chromeStackParser,\n winjsStackParser,\n geckoStackParser,\n )(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n message: string,\n level: Severity = Severity.Info,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record<string, unknown>;\n event = eventFromPlainObject(objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(input: string, syntheticException?: Error, attachStacktrace?: boolean): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"eventbuilder.js","sources":["../../../src/eventbuilder.ts"],"sourcesContent":["import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record<string, unknown>,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record<string, unknown>;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n"],"names":[],"mappings":";;;;AAeA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;"}
|
package/cjs/exports.js
CHANGED
|
@@ -1,42 +1,55 @@
|
|
|
1
|
-
Object.defineProperty(exports,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.SDK_VERSION =
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
|
|
27
|
-
exports.
|
|
28
|
-
|
|
29
|
-
exports.
|
|
30
|
-
|
|
31
|
-
exports.
|
|
32
|
-
exports.
|
|
33
|
-
exports.
|
|
34
|
-
exports.
|
|
35
|
-
exports.
|
|
36
|
-
exports.
|
|
37
|
-
exports.
|
|
38
|
-
exports.
|
|
39
|
-
exports.
|
|
40
|
-
|
|
41
|
-
exports.
|
|
42
|
-
|
|
1
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
+
|
|
3
|
+
var core = require('@sentry/core');
|
|
4
|
+
var client = require('./client.js');
|
|
5
|
+
require('./transports/index.js');
|
|
6
|
+
var stackParsers = require('./stack-parsers.js');
|
|
7
|
+
var sdk = require('./sdk.js');
|
|
8
|
+
require('./integrations/index.js');
|
|
9
|
+
|
|
10
|
+
;
|
|
11
|
+
|
|
12
|
+
;
|
|
13
|
+
;
|
|
14
|
+
|
|
15
|
+
exports.FunctionToString = core.FunctionToString;
|
|
16
|
+
exports.Hub = core.Hub;
|
|
17
|
+
exports.InboundFilters = core.InboundFilters;
|
|
18
|
+
exports.SDK_VERSION = core.SDK_VERSION;
|
|
19
|
+
exports.Scope = core.Scope;
|
|
20
|
+
exports.addBreadcrumb = core.addBreadcrumb;
|
|
21
|
+
exports.addGlobalEventProcessor = core.addGlobalEventProcessor;
|
|
22
|
+
exports.captureEvent = core.captureEvent;
|
|
23
|
+
exports.captureException = core.captureException;
|
|
24
|
+
exports.captureMessage = core.captureMessage;
|
|
25
|
+
exports.configureScope = core.configureScope;
|
|
26
|
+
exports.createTransport = core.createTransport;
|
|
27
|
+
exports.getCurrentHub = core.getCurrentHub;
|
|
28
|
+
exports.getHubFromCarrier = core.getHubFromCarrier;
|
|
29
|
+
exports.makeMain = core.makeMain;
|
|
30
|
+
exports.setContext = core.setContext;
|
|
31
|
+
exports.setExtra = core.setExtra;
|
|
32
|
+
exports.setExtras = core.setExtras;
|
|
33
|
+
exports.setTag = core.setTag;
|
|
34
|
+
exports.setTags = core.setTags;
|
|
35
|
+
exports.setUser = core.setUser;
|
|
36
|
+
exports.startTransaction = core.startTransaction;
|
|
37
|
+
exports.withScope = core.withScope;
|
|
38
|
+
exports.BrowserClient = client.BrowserClient;
|
|
39
|
+
exports.chromeStackLineParser = stackParsers.chromeStackLineParser;
|
|
40
|
+
exports.defaultStackLineParsers = stackParsers.defaultStackLineParsers;
|
|
41
|
+
exports.defaultStackParser = stackParsers.defaultStackParser;
|
|
42
|
+
exports.geckoStackLineParser = stackParsers.geckoStackLineParser;
|
|
43
|
+
exports.opera10StackLineParser = stackParsers.opera10StackLineParser;
|
|
44
|
+
exports.opera11StackLineParser = stackParsers.opera11StackLineParser;
|
|
45
|
+
exports.winjsStackLineParser = stackParsers.winjsStackLineParser;
|
|
46
|
+
exports.close = sdk.close;
|
|
47
|
+
exports.defaultIntegrations = sdk.defaultIntegrations;
|
|
48
|
+
exports.flush = sdk.flush;
|
|
49
|
+
exports.forceLoad = sdk.forceLoad;
|
|
50
|
+
exports.init = sdk.init;
|
|
51
|
+
exports.lastEventId = sdk.lastEventId;
|
|
52
|
+
exports.onLoad = sdk.onLoad;
|
|
53
|
+
exports.showReportDialog = sdk.showReportDialog;
|
|
54
|
+
exports.wrap = sdk.wrap;
|
|
55
|
+
//# sourceMappingURL=exports.js.map
|
package/cjs/exports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","
|
|
1
|
+
{"version":3,"file":"exports.js","sources":["../../../src/exports.ts"],"sourcesContent":["export type {\n Breadcrumb,\n BreadcrumbHint,\n Request,\n SdkInfo,\n Event,\n EventHint,\n Exception,\n // eslint-disable-next-line deprecation/deprecation\n Severity,\n SeverityLevel,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n Session,\n} from '@sentry/types';\n\nexport type { BrowserOptions } from './client';\nexport type { ReportDialogOptions } from './helpers';\n\nexport {\n addGlobalEventProcessor,\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n configureScope,\n createTransport,\n getHubFromCarrier,\n getCurrentHub,\n Hub,\n makeMain,\n Scope,\n startTransaction,\n SDK_VERSION,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n FunctionToString,\n InboundFilters,\n} from '@sentry/core';\n\nexport { BrowserClient } from './client';\nexport { makeFetchTransport, makeXHRTransport } from './transports';\nexport {\n defaultStackParser,\n defaultStackLineParsers,\n chromeStackLineParser,\n geckoStackLineParser,\n opera10StackLineParser,\n opera11StackLineParser,\n winjsStackLineParser,\n} from './stack-parsers';\nexport { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk';\nexport { GlobalHandlers, TryCatch, Breadcrumbs, LinkedErrors, HttpContext, Dedupe } from './integrations';\n"],"names":[],"mappings":";;;;;;;;;AAgBA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/cjs/flags.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
+
|
|
1
3
|
/*
|
|
2
4
|
* This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking
|
|
3
5
|
* for users.
|
|
@@ -11,7 +13,9 @@
|
|
|
11
13
|
* our, or the user's build process. Take care when introducing new flags - they must not throw if they are not
|
|
12
14
|
* replaced.
|
|
13
15
|
*/
|
|
14
|
-
|
|
16
|
+
|
|
15
17
|
/** Flag that is true for debug builds, false otherwise. */
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
var IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;
|
|
19
|
+
|
|
20
|
+
exports.IS_DEBUG_BUILD = IS_DEBUG_BUILD;
|
|
21
|
+
//# sourceMappingURL=flags.js.map
|