@sentry/browser 6.19.7 → 7.0.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/cjs/client.d.ts +63 -0
- package/cjs/client.d.ts.map +1 -0
- package/cjs/client.js +116 -0
- package/cjs/client.js.map +1 -0
- package/cjs/eventbuilder.d.ts +37 -0
- package/cjs/eventbuilder.d.ts.map +1 -0
- package/{dist → cjs}/eventbuilder.js +52 -53
- package/cjs/eventbuilder.js.map +1 -0
- package/cjs/exports.d.ts +11 -0
- package/cjs/exports.d.ts.map +1 -0
- package/{dist → cjs}/exports.js +21 -7
- package/cjs/exports.js.map +1 -0
- package/{dist → cjs}/flags.d.ts +0 -0
- package/{dist → cjs}/flags.d.ts.map +0 -0
- package/{dist → cjs}/flags.js +0 -0
- package/{dist → cjs}/flags.js.map +0 -0
- package/{dist → cjs}/helpers.d.ts +0 -5
- package/cjs/helpers.d.ts.map +1 -0
- package/{dist → cjs}/helpers.js +15 -49
- package/cjs/helpers.js.map +1 -0
- package/{dist → cjs}/index.d.ts +1 -2
- package/{dist → cjs}/index.d.ts.map +1 -1
- package/cjs/index.js +15 -0
- package/cjs/index.js.map +1 -0
- package/{dist → cjs}/integrations/breadcrumbs.d.ts +6 -7
- package/cjs/integrations/breadcrumbs.d.ts.map +1 -0
- package/{dist → cjs}/integrations/breadcrumbs.js +39 -57
- package/cjs/integrations/breadcrumbs.js.map +1 -0
- package/{dist → cjs}/integrations/dedupe.d.ts +0 -0
- package/{dist → cjs}/integrations/dedupe.d.ts.map +1 -1
- package/{dist → cjs}/integrations/dedupe.js +28 -30
- package/cjs/integrations/dedupe.js.map +1 -0
- package/{dist → cjs}/integrations/globalhandlers.d.ts +0 -0
- package/cjs/integrations/globalhandlers.d.ts.map +1 -0
- package/{dist → cjs}/integrations/globalhandlers.js +57 -57
- package/cjs/integrations/globalhandlers.js.map +1 -0
- package/{dist → cjs}/integrations/index.d.ts +0 -0
- package/{dist → cjs}/integrations/index.d.ts.map +0 -0
- package/{dist → cjs}/integrations/index.js +0 -0
- package/{dist → cjs}/integrations/index.js.map +0 -0
- package/{dist → cjs}/integrations/linkederrors.d.ts +3 -3
- package/cjs/integrations/linkederrors.d.ts.map +1 -0
- package/cjs/integrations/linkederrors.js +62 -0
- package/cjs/integrations/linkederrors.js.map +1 -0
- package/{dist → cjs}/integrations/trycatch.d.ts +0 -0
- package/{dist → cjs}/integrations/trycatch.d.ts.map +0 -0
- package/{dist → cjs}/integrations/trycatch.js +30 -40
- package/cjs/integrations/trycatch.js.map +1 -0
- package/{dist → cjs}/integrations/useragent.d.ts +0 -0
- package/{dist → cjs}/integrations/useragent.d.ts.map +0 -0
- package/cjs/integrations/useragent.js +40 -0
- package/cjs/integrations/useragent.js.map +1 -0
- package/{dist → cjs}/sdk.d.ts +3 -3
- package/cjs/sdk.d.ts.map +1 -0
- package/{dist → cjs}/sdk.js +47 -28
- package/cjs/sdk.js.map +1 -0
- package/cjs/stack-parsers.d.ts +9 -0
- package/cjs/stack-parsers.d.ts.map +1 -0
- package/{dist → cjs}/stack-parsers.js +45 -44
- package/cjs/stack-parsers.js.map +1 -0
- package/{esm/transports/new-fetch.d.ts → cjs/transports/fetch.d.ts} +3 -3
- package/cjs/transports/fetch.d.ts.map +1 -0
- package/cjs/transports/fetch.js +20 -0
- package/cjs/transports/fetch.js.map +1 -0
- package/cjs/transports/index.d.ts +3 -0
- package/cjs/transports/index.d.ts.map +1 -0
- package/cjs/transports/index.js +6 -0
- package/cjs/transports/index.js.map +1 -0
- package/{dist → cjs}/transports/utils.d.ts +0 -0
- package/{dist → cjs}/transports/utils.d.ts.map +1 -1
- package/{dist → cjs}/transports/utils.js +17 -17
- package/cjs/transports/utils.js.map +1 -0
- package/{types/transports/new-xhr.d.ts → cjs/transports/xhr.d.ts} +3 -3
- package/cjs/transports/xhr.d.ts.map +1 -0
- package/{esm/transports/new-xhr.js → cjs/transports/xhr.js} +14 -14
- package/cjs/transports/xhr.js.map +1 -0
- package/{dist → cjs}/version.d.ts +0 -0
- package/{dist → cjs}/version.d.ts.map +0 -0
- package/{dist → cjs}/version.js +0 -0
- package/{dist → cjs}/version.js.map +0 -0
- package/esm/client.d.ts +41 -11
- package/esm/client.d.ts.map +1 -1
- package/esm/client.js +79 -41
- package/esm/client.js.map +1 -1
- package/esm/eventbuilder.d.ts +10 -12
- package/esm/eventbuilder.d.ts.map +1 -1
- package/esm/eventbuilder.js +52 -53
- package/esm/eventbuilder.js.map +1 -1
- package/esm/exports.d.ts +7 -6
- package/esm/exports.d.ts.map +1 -1
- package/esm/exports.js +4 -4
- package/esm/exports.js.map +1 -1
- package/esm/flags.js +1 -1
- package/esm/flags.js.map +1 -1
- package/esm/helpers.d.ts +0 -5
- package/esm/helpers.d.ts.map +1 -1
- package/esm/helpers.js +15 -48
- package/esm/helpers.js.map +1 -1
- package/esm/index.d.ts +1 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -6
- package/esm/index.js.map +1 -1
- package/esm/integrations/breadcrumbs.d.ts +6 -7
- package/esm/integrations/breadcrumbs.d.ts.map +1 -1
- package/esm/integrations/breadcrumbs.js +38 -57
- package/esm/integrations/breadcrumbs.js.map +1 -1
- package/esm/integrations/dedupe.d.ts.map +1 -1
- package/esm/integrations/dedupe.js +26 -29
- package/esm/integrations/dedupe.js.map +1 -1
- package/esm/integrations/globalhandlers.d.ts.map +1 -1
- package/esm/integrations/globalhandlers.js +52 -53
- package/esm/integrations/globalhandlers.js.map +1 -1
- package/esm/integrations/linkederrors.d.ts +3 -3
- package/esm/integrations/linkederrors.d.ts.map +1 -1
- package/esm/integrations/linkederrors.js +24 -25
- package/esm/integrations/linkederrors.js.map +1 -1
- package/esm/integrations/trycatch.js +28 -39
- package/esm/integrations/trycatch.js.map +1 -1
- package/esm/integrations/useragent.js +17 -20
- package/esm/integrations/useragent.js.map +1 -1
- package/esm/sdk.d.ts +3 -3
- package/esm/sdk.d.ts.map +1 -1
- package/esm/sdk.js +44 -25
- package/esm/sdk.js.map +1 -1
- package/esm/stack-parsers.d.ts +8 -6
- package/esm/stack-parsers.d.ts.map +1 -1
- package/esm/stack-parsers.js +45 -44
- package/esm/stack-parsers.js.map +1 -1
- package/esm/transports/fetch.d.ts +7 -14
- package/esm/transports/fetch.d.ts.map +1 -1
- package/esm/transports/fetch.js +15 -77
- package/esm/transports/fetch.js.map +1 -1
- package/esm/transports/index.d.ts +2 -5
- package/esm/transports/index.d.ts.map +1 -1
- package/esm/transports/index.js +2 -5
- package/esm/transports/index.js.map +1 -1
- package/esm/transports/utils.d.ts.map +1 -1
- package/esm/transports/utils.js +16 -16
- package/esm/transports/utils.js.map +1 -1
- package/esm/transports/xhr.d.ts +9 -9
- package/esm/transports/xhr.d.ts.map +1 -1
- package/esm/transports/xhr.js +38 -59
- package/esm/transports/xhr.js.map +1 -1
- package/esm/version.js +1 -1
- package/esm/version.js.map +1 -1
- package/package.json +6 -7
- package/types/client.d.ts +41 -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 +1 -2
- 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/linkederrors.d.ts +3 -3
- package/types/integrations/linkederrors.d.ts.map +1 -1
- package/types/sdk.d.ts +3 -3
- 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 +7 -14
- 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/utils.d.ts.map +1 -1
- package/types/transports/xhr.d.ts +9 -9
- package/types/transports/xhr.d.ts.map +1 -1
- package/build/bundle.debug.min.js +0 -3
- package/build/bundle.debug.min.js.map +0 -1
- package/build/bundle.es6.debug.min.js +0 -3
- package/build/bundle.es6.debug.min.js.map +0 -1
- package/build/bundle.es6.js +0 -6868
- package/build/bundle.es6.js.map +0 -1
- package/build/bundle.es6.min.js +0 -3
- package/build/bundle.es6.min.js.map +0 -1
- package/build/bundle.js +0 -7169
- package/build/bundle.js.map +0 -1
- package/build/bundle.min.js +0 -3
- package/build/bundle.min.js.map +0 -1
- package/dist/backend.d.ts +0 -43
- package/dist/backend.d.ts.map +0 -1
- package/dist/backend.js +0 -58
- package/dist/backend.js.map +0 -1
- package/dist/client.d.ts +0 -33
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -77
- package/dist/client.js.map +0 -1
- package/dist/eventbuilder.d.ts +0 -39
- package/dist/eventbuilder.d.ts.map +0 -1
- package/dist/eventbuilder.js.map +0 -1
- package/dist/exports.d.ts +0 -10
- package/dist/exports.d.ts.map +0 -1
- package/dist/exports.js.map +0 -1
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/integrations/breadcrumbs.d.ts.map +0 -1
- package/dist/integrations/breadcrumbs.js.map +0 -1
- package/dist/integrations/dedupe.js.map +0 -1
- package/dist/integrations/globalhandlers.d.ts.map +0 -1
- package/dist/integrations/globalhandlers.js.map +0 -1
- package/dist/integrations/linkederrors.d.ts.map +0 -1
- package/dist/integrations/linkederrors.js +0 -62
- package/dist/integrations/linkederrors.js.map +0 -1
- package/dist/integrations/trycatch.js.map +0 -1
- package/dist/integrations/useragent.js +0 -42
- package/dist/integrations/useragent.js.map +0 -1
- package/dist/sdk.d.ts.map +0 -1
- package/dist/sdk.js.map +0 -1
- package/dist/stack-parsers.d.ts +0 -7
- package/dist/stack-parsers.d.ts.map +0 -1
- package/dist/stack-parsers.js.map +0 -1
- package/dist/transports/base.d.ts +0 -65
- package/dist/transports/base.d.ts.map +0 -1
- package/dist/transports/base.js +0 -141
- package/dist/transports/base.js.map +0 -1
- package/dist/transports/fetch.d.ts +0 -17
- package/dist/transports/fetch.d.ts.map +0 -1
- package/dist/transports/fetch.js +0 -81
- package/dist/transports/fetch.js.map +0 -1
- package/dist/transports/index.d.ts +0 -6
- package/dist/transports/index.d.ts.map +0 -1
- package/dist/transports/index.js +0 -12
- package/dist/transports/index.js.map +0 -1
- package/dist/transports/new-fetch.d.ts +0 -10
- package/dist/transports/new-fetch.d.ts.map +0 -1
- package/dist/transports/new-fetch.js +0 -27
- package/dist/transports/new-fetch.js.map +0 -1
- package/dist/transports/new-xhr.d.ts +0 -11
- package/dist/transports/new-xhr.d.ts.map +0 -1
- package/dist/transports/new-xhr.js +0 -46
- package/dist/transports/new-xhr.js.map +0 -1
- package/dist/transports/utils.js.map +0 -1
- package/dist/transports/xhr.d.ts +0 -11
- package/dist/transports/xhr.d.ts.map +0 -1
- package/dist/transports/xhr.js +0 -64
- package/dist/transports/xhr.js.map +0 -1
- package/esm/backend.d.ts +0 -43
- package/esm/backend.d.ts.map +0 -1
- package/esm/backend.js +0 -57
- package/esm/backend.js.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/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.map +0 -1
- package/types/backend.d.ts +0 -43
- package/types/backend.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.map +0 -1
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
var tslib_1 = require("tslib");
|
|
3
2
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var helpers_1 = require("../helpers");
|
|
3
|
+
const core_1 = require("@sentry/core");
|
|
4
|
+
const utils_1 = require("@sentry/utils");
|
|
5
|
+
const eventbuilder_1 = require("../eventbuilder");
|
|
6
|
+
const flags_1 = require("../flags");
|
|
7
|
+
const helpers_1 = require("../helpers");
|
|
10
8
|
/** Global handlers */
|
|
11
|
-
|
|
9
|
+
class GlobalHandlers {
|
|
12
10
|
/** JSDoc */
|
|
13
|
-
|
|
11
|
+
constructor(options) {
|
|
14
12
|
/**
|
|
15
13
|
* @inheritDoc
|
|
16
14
|
*/
|
|
@@ -23,50 +21,49 @@ var GlobalHandlers = /** @class */ (function () {
|
|
|
23
21
|
onerror: _installGlobalOnErrorHandler,
|
|
24
22
|
onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,
|
|
25
23
|
};
|
|
26
|
-
this._options =
|
|
24
|
+
this._options = Object.assign({ onerror: true, onunhandledrejection: true }, options);
|
|
27
25
|
}
|
|
28
26
|
/**
|
|
29
27
|
* @inheritDoc
|
|
30
28
|
*/
|
|
31
|
-
|
|
29
|
+
setupOnce() {
|
|
32
30
|
Error.stackTraceLimit = 50;
|
|
33
|
-
|
|
31
|
+
const options = this._options;
|
|
34
32
|
// We can disable guard-for-in as we construct the options object above + do checks against
|
|
35
33
|
// `this._installFunc` for the property.
|
|
36
34
|
// eslint-disable-next-line guard-for-in
|
|
37
|
-
for (
|
|
38
|
-
|
|
35
|
+
for (const key in options) {
|
|
36
|
+
const installFunc = this._installFunc[key];
|
|
39
37
|
if (installFunc && options[key]) {
|
|
40
38
|
globalHandlerLog(key);
|
|
41
39
|
installFunc();
|
|
42
40
|
this._installFunc[key] = undefined;
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
* @inheritDoc
|
|
48
|
-
*/
|
|
49
|
-
GlobalHandlers.id = 'GlobalHandlers';
|
|
50
|
-
return GlobalHandlers;
|
|
51
|
-
}());
|
|
43
|
+
}
|
|
44
|
+
}
|
|
52
45
|
exports.GlobalHandlers = GlobalHandlers;
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
49
|
+
GlobalHandlers.id = 'GlobalHandlers';
|
|
53
50
|
/** JSDoc */
|
|
54
51
|
function _installGlobalOnErrorHandler() {
|
|
55
52
|
utils_1.addInstrumentationHandler('error',
|
|
56
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
(data) => {
|
|
55
|
+
const [hub, stackParser, attachStacktrace] = getHubAndOptions();
|
|
59
56
|
if (!hub.getIntegration(GlobalHandlers)) {
|
|
60
57
|
return;
|
|
61
58
|
}
|
|
62
|
-
|
|
59
|
+
const { msg, url, line, column, error } = data;
|
|
63
60
|
if (helpers_1.shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {
|
|
64
61
|
return;
|
|
65
62
|
}
|
|
66
|
-
|
|
63
|
+
const event = error === undefined && utils_1.isString(msg)
|
|
67
64
|
? _eventFromIncompleteOnError(msg, url, line, column)
|
|
68
|
-
: _enhanceEventWithInitialFrame(eventbuilder_1.eventFromUnknownInput(error || msg, undefined, attachStacktrace, false), url, line, column);
|
|
69
|
-
event.level =
|
|
65
|
+
: _enhanceEventWithInitialFrame(eventbuilder_1.eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false), url, line, column);
|
|
66
|
+
event.level = 'error';
|
|
70
67
|
addMechanismAndCapture(hub, error, event, 'onerror');
|
|
71
68
|
});
|
|
72
69
|
}
|
|
@@ -74,12 +71,12 @@ function _installGlobalOnErrorHandler() {
|
|
|
74
71
|
function _installGlobalOnUnhandledRejectionHandler() {
|
|
75
72
|
utils_1.addInstrumentationHandler('unhandledrejection',
|
|
76
73
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
(e) => {
|
|
75
|
+
const [hub, stackParser, attachStacktrace] = getHubAndOptions();
|
|
79
76
|
if (!hub.getIntegration(GlobalHandlers)) {
|
|
80
77
|
return;
|
|
81
78
|
}
|
|
82
|
-
|
|
79
|
+
let error = e;
|
|
83
80
|
// dig the object of the rejection out of known event types
|
|
84
81
|
try {
|
|
85
82
|
// PromiseRejectionEvents store the object of the rejection under 'reason'
|
|
@@ -102,10 +99,10 @@ function _installGlobalOnUnhandledRejectionHandler() {
|
|
|
102
99
|
if (helpers_1.shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {
|
|
103
100
|
return true;
|
|
104
101
|
}
|
|
105
|
-
|
|
102
|
+
const event = utils_1.isPrimitive(error)
|
|
106
103
|
? _eventFromRejectionWithPrimitive(error)
|
|
107
|
-
: eventbuilder_1.eventFromUnknownInput(error, undefined, attachStacktrace, true);
|
|
108
|
-
event.level =
|
|
104
|
+
: eventbuilder_1.eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);
|
|
105
|
+
event.level = 'error';
|
|
109
106
|
addMechanismAndCapture(hub, error, event, 'onunhandledrejection');
|
|
110
107
|
return;
|
|
111
108
|
});
|
|
@@ -123,7 +120,7 @@ function _eventFromRejectionWithPrimitive(reason) {
|
|
|
123
120
|
{
|
|
124
121
|
type: 'UnhandledRejection',
|
|
125
122
|
// String() is needed because the Primitive type includes symbols (which can't be automatically stringified)
|
|
126
|
-
value:
|
|
123
|
+
value: `Non-Error promise rejection captured with value: ${String(reason)}`,
|
|
127
124
|
},
|
|
128
125
|
],
|
|
129
126
|
},
|
|
@@ -134,16 +131,16 @@ function _eventFromRejectionWithPrimitive(reason) {
|
|
|
134
131
|
*/
|
|
135
132
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
136
133
|
function _eventFromIncompleteOnError(msg, url, line, column) {
|
|
137
|
-
|
|
134
|
+
const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;
|
|
138
135
|
// If 'message' is ErrorEvent, get real message from inside
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
136
|
+
let message = utils_1.isErrorEvent(msg) ? msg.message : msg;
|
|
137
|
+
let name = 'Error';
|
|
138
|
+
const groups = message.match(ERROR_TYPES_RE);
|
|
142
139
|
if (groups) {
|
|
143
140
|
name = groups[1];
|
|
144
141
|
message = groups[2];
|
|
145
142
|
}
|
|
146
|
-
|
|
143
|
+
const event = {
|
|
147
144
|
exception: {
|
|
148
145
|
values: [
|
|
149
146
|
{
|
|
@@ -159,46 +156,49 @@ function _eventFromIncompleteOnError(msg, url, line, column) {
|
|
|
159
156
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
160
157
|
function _enhanceEventWithInitialFrame(event, url, line, column) {
|
|
161
158
|
// event.exception
|
|
162
|
-
|
|
159
|
+
const e = (event.exception = event.exception || {});
|
|
163
160
|
// event.exception.values
|
|
164
|
-
|
|
161
|
+
const ev = (e.values = e.values || []);
|
|
165
162
|
// event.exception.values[0]
|
|
166
|
-
|
|
163
|
+
const ev0 = (ev[0] = ev[0] || {});
|
|
167
164
|
// event.exception.values[0].stacktrace
|
|
168
|
-
|
|
165
|
+
const ev0s = (ev0.stacktrace = ev0.stacktrace || {});
|
|
169
166
|
// event.exception.values[0].stacktrace.frames
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
167
|
+
const ev0sf = (ev0s.frames = ev0s.frames || []);
|
|
168
|
+
const colno = isNaN(parseInt(column, 10)) ? undefined : column;
|
|
169
|
+
const lineno = isNaN(parseInt(line, 10)) ? undefined : line;
|
|
170
|
+
const filename = utils_1.isString(url) && url.length > 0 ? url : utils_1.getLocationHref();
|
|
174
171
|
// event.exception.values[0].stacktrace.frames
|
|
175
172
|
if (ev0sf.length === 0) {
|
|
176
173
|
ev0sf.push({
|
|
177
|
-
colno
|
|
178
|
-
filename
|
|
174
|
+
colno,
|
|
175
|
+
filename,
|
|
179
176
|
function: '?',
|
|
180
177
|
in_app: true,
|
|
181
|
-
lineno
|
|
178
|
+
lineno,
|
|
182
179
|
});
|
|
183
180
|
}
|
|
184
181
|
return event;
|
|
185
182
|
}
|
|
186
183
|
function globalHandlerLog(type) {
|
|
187
|
-
flags_1.IS_DEBUG_BUILD && utils_1.logger.log(
|
|
184
|
+
flags_1.IS_DEBUG_BUILD && utils_1.logger.log(`Global Handler attached: ${type}`);
|
|
188
185
|
}
|
|
189
186
|
function addMechanismAndCapture(hub, error, event, type) {
|
|
190
187
|
utils_1.addExceptionMechanism(event, {
|
|
191
188
|
handled: false,
|
|
192
|
-
type
|
|
189
|
+
type,
|
|
193
190
|
});
|
|
194
191
|
hub.captureEvent(event, {
|
|
195
192
|
originalException: error,
|
|
196
193
|
});
|
|
197
194
|
}
|
|
198
|
-
function
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
195
|
+
function getHubAndOptions() {
|
|
196
|
+
const hub = core_1.getCurrentHub();
|
|
197
|
+
const client = hub.getClient();
|
|
198
|
+
const options = (client && client.getOptions()) || {
|
|
199
|
+
stackParser: () => [],
|
|
200
|
+
attachStacktrace: false,
|
|
201
|
+
};
|
|
202
|
+
return [hub, options.stackParser, options.attachStacktrace];
|
|
203
203
|
}
|
|
204
204
|
//# sourceMappingURL=globalhandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalhandlers.js","sourceRoot":"","sources":["../../../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record<GlobalHandlersIntegrationsOptionKeys, boolean>;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record<GlobalHandlersIntegrationsOptionKeys, (() => void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n IS_DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions(): [Hub, StackParser, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient<BrowserClient>();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types';
|
|
1
|
+
import { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';
|
|
2
2
|
interface LinkedErrorsOptions {
|
|
3
3
|
key: string;
|
|
4
4
|
limit: number;
|
|
@@ -33,10 +33,10 @@ export declare class LinkedErrors implements Integration {
|
|
|
33
33
|
/**
|
|
34
34
|
* @inheritDoc
|
|
35
35
|
*/
|
|
36
|
-
export declare function _handler(key: string, limit: number, event: Event, hint?: EventHint): Event | null;
|
|
36
|
+
export declare function _handler(parser: StackParser, key: string, limit: number, event: Event, hint?: EventHint): Event | null;
|
|
37
37
|
/**
|
|
38
38
|
* JSDOC
|
|
39
39
|
*/
|
|
40
|
-
export declare function _walkErrorTree(limit: number, error: ExtendedError, key: string, stack?: Exception[]): Exception[];
|
|
40
|
+
export declare function _walkErrorTree(parser: StackParser, limit: number, error: ExtendedError, key: string, stack?: Exception[]): Exception[];
|
|
41
41
|
export {};
|
|
42
42
|
//# sourceMappingURL=linkederrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkederrors.d.ts","sourceRoot":"","sources":["../../../../src/integrations/linkederrors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AASrG,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iCAAiC;AACjC,qBAAa,YAAa,YAAW,WAAW;IAC9C;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAkB;IAE1C;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAmB;IAE/C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAElD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IAEtD;;OAEG;gBACgB,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAK7D;;OAEG;IACI,SAAS,IAAI,IAAI;CAUzB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,SAAS,GACf,KAAK,GAAG,IAAI,CAOd;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,SAAS,EAAO,GACtB,SAAS,EAAE,CAMb"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
const core_1 = require("@sentry/core");
|
|
3
|
+
const utils_1 = require("@sentry/utils");
|
|
4
|
+
const eventbuilder_1 = require("../eventbuilder");
|
|
5
|
+
const DEFAULT_KEY = 'cause';
|
|
6
|
+
const DEFAULT_LIMIT = 5;
|
|
7
|
+
/** Adds SDK info to an event. */
|
|
8
|
+
class LinkedErrors {
|
|
9
|
+
/**
|
|
10
|
+
* @inheritDoc
|
|
11
|
+
*/
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
this.name = LinkedErrors.id;
|
|
17
|
+
this._key = options.key || DEFAULT_KEY;
|
|
18
|
+
this._limit = options.limit || DEFAULT_LIMIT;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
setupOnce() {
|
|
24
|
+
const client = core_1.getCurrentHub().getClient();
|
|
25
|
+
if (!client) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
core_1.addGlobalEventProcessor((event, hint) => {
|
|
29
|
+
const self = core_1.getCurrentHub().getIntegration(LinkedErrors);
|
|
30
|
+
return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.LinkedErrors = LinkedErrors;
|
|
35
|
+
/**
|
|
36
|
+
* @inheritDoc
|
|
37
|
+
*/
|
|
38
|
+
LinkedErrors.id = 'LinkedErrors';
|
|
39
|
+
/**
|
|
40
|
+
* @inheritDoc
|
|
41
|
+
*/
|
|
42
|
+
function _handler(parser, key, limit, event, hint) {
|
|
43
|
+
if (!event.exception || !event.exception.values || !hint || !utils_1.isInstanceOf(hint.originalException, Error)) {
|
|
44
|
+
return event;
|
|
45
|
+
}
|
|
46
|
+
const linkedErrors = _walkErrorTree(parser, limit, hint.originalException, key);
|
|
47
|
+
event.exception.values = [...linkedErrors, ...event.exception.values];
|
|
48
|
+
return event;
|
|
49
|
+
}
|
|
50
|
+
exports._handler = _handler;
|
|
51
|
+
/**
|
|
52
|
+
* JSDOC
|
|
53
|
+
*/
|
|
54
|
+
function _walkErrorTree(parser, limit, error, key, stack = []) {
|
|
55
|
+
if (!utils_1.isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {
|
|
56
|
+
return stack;
|
|
57
|
+
}
|
|
58
|
+
const exception = eventbuilder_1.exceptionFromError(parser, error[key]);
|
|
59
|
+
return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);
|
|
60
|
+
}
|
|
61
|
+
exports._walkErrorTree = _walkErrorTree;
|
|
62
|
+
//# sourceMappingURL=linkederrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkederrors.js","sourceRoot":"","sources":["../../../../src/integrations/linkederrors.ts"],"names":[],"mappings":";AAAA,uCAAsE;AAEtE,yCAA6C;AAG7C,kDAAqD;AAErD,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,aAAa,GAAG,CAAC,CAAC;AAOxB,iCAAiC;AACjC,MAAa,YAAY;IAqBvB;;OAEG;IACH,YAAmB,UAAwC,EAAE;QAlB7D;;WAEG;QACa,SAAI,GAAW,YAAY,CAAC,EAAE,CAAC;QAgB7C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,oBAAa,EAAE,CAAC,SAAS,EAAiB,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,8BAAuB,CAAC,CAAC,KAAY,EAAE,IAAgB,EAAE,EAAE;YACzD,MAAM,IAAI,GAAG,oBAAa,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACvG,CAAC,CAAC,CAAC;IACL,CAAC;;AAzCH,oCA0CC;AAzCC;;GAEG;AACW,eAAE,GAAW,cAAc,CAAC;AAwC5C;;GAEG;AACH,SAAgB,QAAQ,CACtB,MAAmB,EACnB,GAAW,EACX,KAAa,EACb,KAAY,EACZ,IAAgB;IAEhB,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE;QACxG,OAAO,KAAK,CAAC;KACd;IACD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAkC,EAAE,GAAG,CAAC,CAAC;IACjG,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAbD,4BAaC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,MAAmB,EACnB,KAAa,EACb,KAAoB,EACpB,GAAW,EACX,QAAqB,EAAE;IAEvB,IAAI,CAAC,oBAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE;QACjE,OAAO,KAAK,CAAC;KACd;IACD,MAAM,SAAS,GAAG,iCAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC;AAZD,wCAYC","sourcesContent":["import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial<LinkedErrorsOptions> = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n const client = getCurrentHub().getClient<BrowserClient>();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n stack: Exception[] = [],\n): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n"]}
|
|
File without changes
|
|
File without changes
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var DEFAULT_EVENT_TARGET = [
|
|
2
|
+
const utils_1 = require("@sentry/utils");
|
|
3
|
+
const helpers_1 = require("../helpers");
|
|
4
|
+
const DEFAULT_EVENT_TARGET = [
|
|
6
5
|
'EventTarget',
|
|
7
6
|
'Window',
|
|
8
7
|
'Node',
|
|
@@ -34,23 +33,23 @@ var DEFAULT_EVENT_TARGET = [
|
|
|
34
33
|
'XMLHttpRequestUpload',
|
|
35
34
|
];
|
|
36
35
|
/** Wrap timer functions and event targets to catch errors and provide better meta data */
|
|
37
|
-
|
|
36
|
+
class TryCatch {
|
|
38
37
|
/**
|
|
39
38
|
* @inheritDoc
|
|
40
39
|
*/
|
|
41
|
-
|
|
40
|
+
constructor(options) {
|
|
42
41
|
/**
|
|
43
42
|
* @inheritDoc
|
|
44
43
|
*/
|
|
45
44
|
this.name = TryCatch.id;
|
|
46
|
-
this._options =
|
|
45
|
+
this._options = Object.assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);
|
|
47
46
|
}
|
|
48
47
|
/**
|
|
49
48
|
* Wrap timer functions and event targets to catch errors
|
|
50
49
|
* and provide better metadata.
|
|
51
50
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
setupOnce() {
|
|
52
|
+
const global = utils_1.getGlobalObject();
|
|
54
53
|
if (this._options.setTimeout) {
|
|
55
54
|
utils_1.fill(global, 'setTimeout', _wrapTimeFunction);
|
|
56
55
|
}
|
|
@@ -63,28 +62,23 @@ var TryCatch = /** @class */ (function () {
|
|
|
63
62
|
if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {
|
|
64
63
|
utils_1.fill(XMLHttpRequest.prototype, 'send', _wrapXHR);
|
|
65
64
|
}
|
|
66
|
-
|
|
65
|
+
const eventTargetOption = this._options.eventTarget;
|
|
67
66
|
if (eventTargetOption) {
|
|
68
|
-
|
|
67
|
+
const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;
|
|
69
68
|
eventTarget.forEach(_wrapEventTarget);
|
|
70
69
|
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
* @inheritDoc
|
|
74
|
-
*/
|
|
75
|
-
TryCatch.id = 'TryCatch';
|
|
76
|
-
return TryCatch;
|
|
77
|
-
}());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
78
72
|
exports.TryCatch = TryCatch;
|
|
73
|
+
/**
|
|
74
|
+
* @inheritDoc
|
|
75
|
+
*/
|
|
76
|
+
TryCatch.id = 'TryCatch';
|
|
79
77
|
/** JSDoc */
|
|
80
78
|
function _wrapTimeFunction(original) {
|
|
81
79
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
82
|
-
return function () {
|
|
83
|
-
|
|
84
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
85
|
-
args[_i] = arguments[_i];
|
|
86
|
-
}
|
|
87
|
-
var originalCallback = args[0];
|
|
80
|
+
return function (...args) {
|
|
81
|
+
const originalCallback = args[0];
|
|
88
82
|
args[0] = helpers_1.wrap(originalCallback, {
|
|
89
83
|
mechanism: {
|
|
90
84
|
data: { function: utils_1.getFunctionName(original) },
|
|
@@ -118,19 +112,15 @@ function _wrapRAF(original) {
|
|
|
118
112
|
/** JSDoc */
|
|
119
113
|
function _wrapXHR(originalSend) {
|
|
120
114
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
121
|
-
return function () {
|
|
122
|
-
var args = [];
|
|
123
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
124
|
-
args[_i] = arguments[_i];
|
|
125
|
-
}
|
|
115
|
+
return function (...args) {
|
|
126
116
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
xmlHttpRequestProps.forEach(
|
|
117
|
+
const xhr = this;
|
|
118
|
+
const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];
|
|
119
|
+
xmlHttpRequestProps.forEach(prop => {
|
|
130
120
|
if (prop in xhr && typeof xhr[prop] === 'function') {
|
|
131
121
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
132
122
|
utils_1.fill(xhr, prop, function (original) {
|
|
133
|
-
|
|
123
|
+
const wrapOptions = {
|
|
134
124
|
mechanism: {
|
|
135
125
|
data: {
|
|
136
126
|
function: prop,
|
|
@@ -141,7 +131,7 @@ function _wrapXHR(originalSend) {
|
|
|
141
131
|
},
|
|
142
132
|
};
|
|
143
133
|
// If Instrument integration has been called before TryCatch, get the name of original function
|
|
144
|
-
|
|
134
|
+
const originalFunction = utils_1.getOriginalFunction(original);
|
|
145
135
|
if (originalFunction) {
|
|
146
136
|
wrapOptions.mechanism.data.handler = utils_1.getFunctionName(originalFunction);
|
|
147
137
|
}
|
|
@@ -156,9 +146,9 @@ function _wrapXHR(originalSend) {
|
|
|
156
146
|
/** JSDoc */
|
|
157
147
|
function _wrapEventTarget(target) {
|
|
158
148
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
159
|
-
|
|
149
|
+
const global = utils_1.getGlobalObject();
|
|
160
150
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
161
|
-
|
|
151
|
+
const proto = global[target] && global[target].prototype;
|
|
162
152
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins
|
|
163
153
|
if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {
|
|
164
154
|
return;
|
|
@@ -172,7 +162,7 @@ function _wrapEventTarget(target) {
|
|
|
172
162
|
data: {
|
|
173
163
|
function: 'handleEvent',
|
|
174
164
|
handler: utils_1.getFunctionName(fn),
|
|
175
|
-
target
|
|
165
|
+
target,
|
|
176
166
|
},
|
|
177
167
|
handled: true,
|
|
178
168
|
type: 'instrument',
|
|
@@ -191,7 +181,7 @@ function _wrapEventTarget(target) {
|
|
|
191
181
|
data: {
|
|
192
182
|
function: 'addEventListener',
|
|
193
183
|
handler: utils_1.getFunctionName(fn),
|
|
194
|
-
target
|
|
184
|
+
target,
|
|
195
185
|
},
|
|
196
186
|
handled: true,
|
|
197
187
|
type: 'instrument',
|
|
@@ -220,9 +210,9 @@ function _wrapEventTarget(target) {
|
|
|
220
210
|
* then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible
|
|
221
211
|
* to get rid of the initial handler and it'd stick there forever.
|
|
222
212
|
*/
|
|
223
|
-
|
|
213
|
+
const wrappedEventHandler = fn;
|
|
224
214
|
try {
|
|
225
|
-
|
|
215
|
+
const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;
|
|
226
216
|
if (originalEventHandler) {
|
|
227
217
|
originalRemoveEventListener.call(this, eventName, originalEventHandler, options);
|
|
228
218
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trycatch.js","sourceRoot":"","sources":["../../../../src/integrations/trycatch.ts"],"names":[],"mappings":"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","sourcesContent":["import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial<TryCatchOptions>) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n const global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const global = getGlobalObject() as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = global[target] && global[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n"]}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
const core_1 = require("@sentry/core");
|
|
3
|
+
const utils_1 = require("@sentry/utils");
|
|
4
|
+
const global = utils_1.getGlobalObject();
|
|
5
|
+
/** UserAgent */
|
|
6
|
+
class UserAgent {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* @inheritDoc
|
|
10
|
+
*/
|
|
11
|
+
this.name = UserAgent.id;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
setupOnce() {
|
|
17
|
+
core_1.addGlobalEventProcessor((event) => {
|
|
18
|
+
if (core_1.getCurrentHub().getIntegration(UserAgent)) {
|
|
19
|
+
// if none of the information we want exists, don't bother
|
|
20
|
+
if (!global.navigator && !global.location && !global.document) {
|
|
21
|
+
return event;
|
|
22
|
+
}
|
|
23
|
+
// grab as much info as exists and add it to the event
|
|
24
|
+
const url = (event.request && event.request.url) || (global.location && global.location.href);
|
|
25
|
+
const { referrer } = global.document || {};
|
|
26
|
+
const { userAgent } = global.navigator || {};
|
|
27
|
+
const headers = Object.assign(Object.assign(Object.assign({}, (event.request && event.request.headers)), (referrer && { Referer: referrer })), (userAgent && { 'User-Agent': userAgent }));
|
|
28
|
+
const request = Object.assign(Object.assign({}, (url && { url })), { headers });
|
|
29
|
+
return Object.assign(Object.assign({}, event), { request });
|
|
30
|
+
}
|
|
31
|
+
return event;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.UserAgent = UserAgent;
|
|
36
|
+
/**
|
|
37
|
+
* @inheritDoc
|
|
38
|
+
*/
|
|
39
|
+
UserAgent.id = 'UserAgent';
|
|
40
|
+
//# sourceMappingURL=useragent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useragent.js","sourceRoot":"","sources":["../../../../src/integrations/useragent.ts"],"names":[],"mappings":";AAAA,uCAAsE;AAEtE,yCAAgD;AAEhD,MAAM,MAAM,GAAG,uBAAe,EAAU,CAAC;AAEzC,gBAAgB;AAChB,MAAa,SAAS;IAAtB;QAME;;WAEG;QACI,SAAI,GAAW,SAAS,CAAC,EAAE,CAAC;IA8BrC,CAAC;IA5BC;;OAEG;IACI,SAAS;QACd,8BAAuB,CAAC,CAAC,KAAY,EAAE,EAAE;YACvC,IAAI,oBAAa,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBAC7C,0DAA0D;gBAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC7D,OAAO,KAAK,CAAC;iBACd;gBAED,sDAAsD;gBACtD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC9F,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBAE7C,MAAM,OAAO,iDACR,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GACxC,CAAC,QAAQ,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GACnC,CAAC,SAAS,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAC9C,CAAC;gBACF,MAAM,OAAO,mCAAQ,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,KAAE,OAAO,GAAE,CAAC;gBAEjD,uCAAY,KAAK,KAAE,OAAO,IAAG;aAC9B;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;;AAtCH,8BAuCC;AAtCC;;GAEG;AACW,YAAE,GAAW,WAAW,CAAC","sourcesContent":["import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject<Window>();\n\n/** UserAgent */\nexport class UserAgent implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'UserAgent';\n\n /**\n * @inheritDoc\n */\n public name: string = UserAgent.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n"]}
|
package/{dist → cjs}/sdk.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Integrations as CoreIntegrations } from '@sentry/core';
|
|
2
|
-
import { BrowserOptions } from './
|
|
1
|
+
import { Hub, Integrations as CoreIntegrations } from '@sentry/core';
|
|
2
|
+
import { BrowserOptions } from './client';
|
|
3
3
|
import { ReportDialogOptions } from './helpers';
|
|
4
4
|
import { Breadcrumbs, Dedupe, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';
|
|
5
5
|
export declare const defaultIntegrations: (CoreIntegrations.FunctionToString | CoreIntegrations.InboundFilters | GlobalHandlers | TryCatch | Breadcrumbs | LinkedErrors | UserAgent | Dedupe)[];
|
|
@@ -66,7 +66,7 @@ export declare function init(options?: BrowserOptions): void;
|
|
|
66
66
|
*
|
|
67
67
|
* @param options Everything is optional, we try to fetch all info need from the global scope.
|
|
68
68
|
*/
|
|
69
|
-
export declare function showReportDialog(options?: ReportDialogOptions): void;
|
|
69
|
+
export declare function showReportDialog(options?: ReportDialogOptions, hub?: Hub): void;
|
|
70
70
|
/**
|
|
71
71
|
* This is the getter for lastEventId.
|
|
72
72
|
*
|
package/cjs/sdk.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,GAAG,EAEH,YAAY,IAAI,gBAAgB,EACjC,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAuC,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAwB,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIxG,eAAO,MAAM,mBAAmB,uJAS/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CA8BvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,EAAE,GAAG,GAAE,GAAqB,GAAG,IAAI,CAyCpG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAEhD;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAEjD;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAO5D;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAO5D;AAED;;;;;;GAMG;AAEH,wBAAgB,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAEnD"}
|