@sentry/browser 7.0.0-beta.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.
Files changed (186) hide show
  1. package/README.md +2 -3
  2. package/cjs/client.js +125 -102
  3. package/cjs/client.js.map +1 -1
  4. package/cjs/eventbuilder.js +225 -165
  5. package/cjs/eventbuilder.js.map +1 -1
  6. package/cjs/exports.js +55 -59
  7. package/cjs/exports.js.map +1 -1
  8. package/cjs/flags.js +7 -3
  9. package/cjs/flags.js.map +1 -1
  10. package/cjs/helpers.js +123 -96
  11. package/cjs/helpers.js.map +1 -1
  12. package/cjs/index.js +77 -10
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/integrations/breadcrumbs.js +222 -174
  15. package/cjs/integrations/breadcrumbs.js.map +1 -1
  16. package/cjs/integrations/dedupe.js +184 -142
  17. package/cjs/integrations/dedupe.js.map +1 -1
  18. package/cjs/integrations/globalhandlers.js +211 -170
  19. package/cjs/integrations/globalhandlers.js.map +1 -1
  20. package/cjs/integrations/httpcontext.js +51 -0
  21. package/cjs/integrations/httpcontext.js.map +1 -0
  22. package/cjs/integrations/index.js +18 -14
  23. package/cjs/integrations/index.js.map +1 -1
  24. package/cjs/integrations/linkederrors.js +81 -50
  25. package/cjs/integrations/linkederrors.js.map +1 -1
  26. package/cjs/integrations/trycatch.js +247 -208
  27. package/cjs/integrations/trycatch.js.map +1 -1
  28. package/cjs/sdk.js +166 -125
  29. package/cjs/sdk.js.map +1 -1
  30. package/cjs/stack-parsers.js +143 -93
  31. package/cjs/stack-parsers.js.map +1 -1
  32. package/cjs/transports/fetch.js +30 -15
  33. package/cjs/transports/fetch.js.map +1 -1
  34. package/cjs/transports/index.js +10 -6
  35. package/cjs/transports/index.js.map +1 -1
  36. package/cjs/transports/utils.js +56 -51
  37. package/cjs/transports/utils.js.map +1 -1
  38. package/cjs/transports/xhr.js +40 -30
  39. package/cjs/transports/xhr.js.map +1 -1
  40. package/esm/client.js +124 -101
  41. package/esm/client.js.map +1 -1
  42. package/esm/eventbuilder.js +218 -158
  43. package/esm/eventbuilder.js.map +1 -1
  44. package/esm/exports.js +12 -8
  45. package/esm/exports.js.map +1 -1
  46. package/esm/flags.js +5 -2
  47. package/esm/flags.js.map +1 -1
  48. package/esm/helpers.js +122 -95
  49. package/esm/helpers.js.map +1 -1
  50. package/esm/index.js +27 -7
  51. package/esm/index.js.map +1 -1
  52. package/esm/integrations/breadcrumbs.js +218 -171
  53. package/esm/integrations/breadcrumbs.js.map +1 -1
  54. package/esm/integrations/dedupe.js +181 -139
  55. package/esm/integrations/dedupe.js.map +1 -1
  56. package/esm/integrations/globalhandlers.js +208 -167
  57. package/esm/integrations/globalhandlers.js.map +1 -1
  58. package/esm/integrations/httpcontext.js +49 -0
  59. package/esm/integrations/httpcontext.js.map +1 -0
  60. package/esm/integrations/index.js +7 -7
  61. package/esm/integrations/index.js.map +1 -1
  62. package/esm/integrations/linkederrors.js +77 -46
  63. package/esm/integrations/linkederrors.js.map +1 -1
  64. package/esm/integrations/trycatch.js +244 -205
  65. package/esm/integrations/trycatch.js.map +1 -1
  66. package/esm/sdk.js +163 -123
  67. package/esm/sdk.js.map +1 -1
  68. package/esm/stack-parsers.js +134 -91
  69. package/esm/stack-parsers.js.map +1 -1
  70. package/esm/transports/fetch.js +28 -13
  71. package/esm/transports/fetch.js.map +1 -1
  72. package/esm/transports/index.js +3 -3
  73. package/esm/transports/index.js.map +1 -1
  74. package/esm/transports/utils.js +55 -50
  75. package/esm/transports/utils.js.map +1 -1
  76. package/esm/transports/xhr.js +38 -28
  77. package/esm/transports/xhr.js.map +1 -1
  78. package/package.json +4 -4
  79. package/types/client.d.ts +3 -2
  80. package/types/client.d.ts.map +1 -1
  81. package/types/exports.d.ts +3 -4
  82. package/types/exports.d.ts.map +1 -1
  83. package/types/index.d.ts +1 -1
  84. package/types/integrations/{useragent.d.ts → httpcontext.d.ts} +3 -3
  85. package/types/integrations/httpcontext.d.ts.map +1 -0
  86. package/types/integrations/index.d.ts +1 -1
  87. package/types/integrations/index.d.ts.map +1 -1
  88. package/types/sdk.d.ts +2 -2
  89. package/types/sdk.d.ts.map +1 -1
  90. package/types/transports/fetch.d.ts +3 -5
  91. package/types/transports/fetch.d.ts.map +1 -1
  92. package/types/transports/types.d.ts +10 -0
  93. package/types/transports/types.d.ts.map +1 -0
  94. package/types/transports/xhr.d.ts +3 -7
  95. package/types/transports/xhr.d.ts.map +1 -1
  96. package/cjs/client.d.ts +0 -63
  97. package/cjs/client.d.ts.map +0 -1
  98. package/cjs/eventbuilder.d.ts +0 -37
  99. package/cjs/eventbuilder.d.ts.map +0 -1
  100. package/cjs/exports.d.ts +0 -11
  101. package/cjs/exports.d.ts.map +0 -1
  102. package/cjs/flags.d.ts +0 -3
  103. package/cjs/flags.d.ts.map +0 -1
  104. package/cjs/helpers.d.ts +0 -47
  105. package/cjs/helpers.d.ts.map +0 -1
  106. package/cjs/index.d.ts +0 -15
  107. package/cjs/index.d.ts.map +0 -1
  108. package/cjs/integrations/breadcrumbs.d.ts +0 -46
  109. package/cjs/integrations/breadcrumbs.d.ts.map +0 -1
  110. package/cjs/integrations/dedupe.d.ts +0 -21
  111. package/cjs/integrations/dedupe.d.ts.map +0 -1
  112. package/cjs/integrations/globalhandlers.d.ts +0 -30
  113. package/cjs/integrations/globalhandlers.d.ts.map +0 -1
  114. package/cjs/integrations/index.d.ts +0 -7
  115. package/cjs/integrations/index.d.ts.map +0 -1
  116. package/cjs/integrations/linkederrors.d.ts +0 -42
  117. package/cjs/integrations/linkederrors.d.ts.map +0 -1
  118. package/cjs/integrations/trycatch.d.ts +0 -33
  119. package/cjs/integrations/trycatch.d.ts.map +0 -1
  120. package/cjs/integrations/useragent.d.ts +0 -17
  121. package/cjs/integrations/useragent.d.ts.map +0 -1
  122. package/cjs/integrations/useragent.js +0 -40
  123. package/cjs/integrations/useragent.js.map +0 -1
  124. package/cjs/sdk.d.ts +0 -112
  125. package/cjs/sdk.d.ts.map +0 -1
  126. package/cjs/stack-parsers.d.ts +0 -9
  127. package/cjs/stack-parsers.d.ts.map +0 -1
  128. package/cjs/transports/fetch.d.ts +0 -10
  129. package/cjs/transports/fetch.d.ts.map +0 -1
  130. package/cjs/transports/index.d.ts +0 -3
  131. package/cjs/transports/index.d.ts.map +0 -1
  132. package/cjs/transports/utils.d.ts +0 -48
  133. package/cjs/transports/utils.d.ts.map +0 -1
  134. package/cjs/transports/xhr.d.ts +0 -11
  135. package/cjs/transports/xhr.d.ts.map +0 -1
  136. package/cjs/version.d.ts +0 -2
  137. package/cjs/version.d.ts.map +0 -1
  138. package/cjs/version.js +0 -4
  139. package/cjs/version.js.map +0 -1
  140. package/esm/client.d.ts +0 -63
  141. package/esm/client.d.ts.map +0 -1
  142. package/esm/eventbuilder.d.ts +0 -37
  143. package/esm/eventbuilder.d.ts.map +0 -1
  144. package/esm/exports.d.ts +0 -11
  145. package/esm/exports.d.ts.map +0 -1
  146. package/esm/flags.d.ts +0 -3
  147. package/esm/flags.d.ts.map +0 -1
  148. package/esm/helpers.d.ts +0 -47
  149. package/esm/helpers.d.ts.map +0 -1
  150. package/esm/index.d.ts +0 -15
  151. package/esm/index.d.ts.map +0 -1
  152. package/esm/integrations/breadcrumbs.d.ts +0 -46
  153. package/esm/integrations/breadcrumbs.d.ts.map +0 -1
  154. package/esm/integrations/dedupe.d.ts +0 -21
  155. package/esm/integrations/dedupe.d.ts.map +0 -1
  156. package/esm/integrations/globalhandlers.d.ts +0 -30
  157. package/esm/integrations/globalhandlers.d.ts.map +0 -1
  158. package/esm/integrations/index.d.ts +0 -7
  159. package/esm/integrations/index.d.ts.map +0 -1
  160. package/esm/integrations/linkederrors.d.ts +0 -42
  161. package/esm/integrations/linkederrors.d.ts.map +0 -1
  162. package/esm/integrations/trycatch.d.ts +0 -33
  163. package/esm/integrations/trycatch.d.ts.map +0 -1
  164. package/esm/integrations/useragent.d.ts +0 -17
  165. package/esm/integrations/useragent.d.ts.map +0 -1
  166. package/esm/integrations/useragent.js +0 -38
  167. package/esm/integrations/useragent.js.map +0 -1
  168. package/esm/sdk.d.ts +0 -112
  169. package/esm/sdk.d.ts.map +0 -1
  170. package/esm/stack-parsers.d.ts +0 -9
  171. package/esm/stack-parsers.d.ts.map +0 -1
  172. package/esm/transports/fetch.d.ts +0 -10
  173. package/esm/transports/fetch.d.ts.map +0 -1
  174. package/esm/transports/index.d.ts +0 -3
  175. package/esm/transports/index.d.ts.map +0 -1
  176. package/esm/transports/utils.d.ts +0 -48
  177. package/esm/transports/utils.d.ts.map +0 -1
  178. package/esm/transports/xhr.d.ts +0 -11
  179. package/esm/transports/xhr.d.ts.map +0 -1
  180. package/esm/version.d.ts +0 -2
  181. package/esm/version.d.ts.map +0 -1
  182. package/esm/version.js +0 -3
  183. package/esm/version.js.map +0 -1
  184. package/types/integrations/useragent.d.ts.map +0 -1
  185. package/types/version.d.ts +0 -2
  186. package/types/version.d.ts.map +0 -1
@@ -1,112 +1,140 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
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");
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+
3
+ var core = require('@sentry/core');
4
+ var utils = require('@sentry/utils');
5
+ var eventbuilder = require('../eventbuilder.js');
6
+ var flags = require('../flags.js');
7
+ var helpers = require('../helpers.js');
8
+
8
9
  /** Global handlers */
9
- class GlobalHandlers {
10
- /** JSDoc */
11
- constructor(options) {
12
- /**
13
- * @inheritDoc
14
- */
15
- this.name = GlobalHandlers.id;
16
- /**
17
- * Stores references functions to installing handlers. Will set to undefined
18
- * after they have been run so that they are not used twice.
19
- */
20
- this._installFunc = {
21
- onerror: _installGlobalOnErrorHandler,
22
- onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,
23
- };
24
- this._options = Object.assign({ onerror: true, onunhandledrejection: true }, options);
25
- }
26
- /**
27
- * @inheritDoc
28
- */
29
- setupOnce() {
30
- Error.stackTraceLimit = 50;
31
- const options = this._options;
32
- // We can disable guard-for-in as we construct the options object above + do checks against
33
- // `this._installFunc` for the property.
34
- // eslint-disable-next-line guard-for-in
35
- for (const key in options) {
36
- const installFunc = this._installFunc[key];
37
- if (installFunc && options[key]) {
38
- globalHandlerLog(key);
39
- installFunc();
40
- this._installFunc[key] = undefined;
41
- }
42
- }
10
+ class GlobalHandlers {
11
+ /**
12
+ * @inheritDoc
13
+ */
14
+ static __initStatic() {this.id = 'GlobalHandlers';}
15
+
16
+ /**
17
+ * @inheritDoc
18
+ */
19
+ __init() {this.name = GlobalHandlers.id;}
20
+
21
+ /** JSDoc */
22
+
23
+
24
+ /**
25
+ * Stores references functions to installing handlers. Will set to undefined
26
+ * after they have been run so that they are not used twice.
27
+ */
28
+ __init2() {this._installFunc = {
29
+ onerror: _installGlobalOnErrorHandler,
30
+ onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,
31
+ };}
32
+
33
+ /** JSDoc */
34
+ constructor(options) {;GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);
35
+ this._options = {
36
+ onerror: true,
37
+ onunhandledrejection: true,
38
+ ...options,
39
+ };
40
+ }
41
+ /**
42
+ * @inheritDoc
43
+ */
44
+ setupOnce() {
45
+ Error.stackTraceLimit = 50;
46
+ var options = this._options;
47
+
48
+ // We can disable guard-for-in as we construct the options object above + do checks against
49
+ // `this._installFunc` for the property.
50
+ for (var key in options) {
51
+ var installFunc = this._installFunc[key ];
52
+ if (installFunc && options[key ]) {
53
+ globalHandlerLog(key);
54
+ installFunc();
55
+ this._installFunc[key ] = undefined;
56
+ }
43
57
  }
44
- }
45
- exports.GlobalHandlers = GlobalHandlers;
46
- /**
47
- * @inheritDoc
48
- */
49
- GlobalHandlers.id = 'GlobalHandlers';
58
+ }
59
+ } GlobalHandlers.__initStatic();
60
+
50
61
  /** JSDoc */
51
62
  function _installGlobalOnErrorHandler() {
52
- utils_1.addInstrumentationHandler('error',
53
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
- (data) => {
55
- const [hub, stackParser, attachStacktrace] = getHubAndOptions();
56
- if (!hub.getIntegration(GlobalHandlers)) {
57
- return;
58
- }
59
- const { msg, url, line, column, error } = data;
60
- if (helpers_1.shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {
61
- return;
62
- }
63
- const event = error === undefined && utils_1.isString(msg)
64
- ? _eventFromIncompleteOnError(msg, url, line, column)
65
- : _enhanceEventWithInitialFrame(eventbuilder_1.eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false), url, line, column);
66
- event.level = 'error';
67
- addMechanismAndCapture(hub, error, event, 'onerror');
68
- });
63
+ utils.addInstrumentationHandler(
64
+ 'error',
65
+ (data) => {
66
+ const [hub, stackParser, attachStacktrace] = getHubAndOptions();
67
+ if (!hub.getIntegration(GlobalHandlers)) {
68
+ return;
69
+ }
70
+ const { msg, url, line, column, error } = data;
71
+ if (helpers.shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {
72
+ return;
73
+ }
74
+
75
+ var event =
76
+ error === undefined && utils.isString(msg)
77
+ ? _eventFromIncompleteOnError(msg, url, line, column)
78
+ : _enhanceEventWithInitialFrame(
79
+ eventbuilder.eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),
80
+ url,
81
+ line,
82
+ column,
83
+ );
84
+
85
+ event.level = 'error';
86
+
87
+ addMechanismAndCapture(hub, error, event, 'onerror');
88
+ },
89
+ );
69
90
  }
91
+
70
92
  /** JSDoc */
71
93
  function _installGlobalOnUnhandledRejectionHandler() {
72
- utils_1.addInstrumentationHandler('unhandledrejection',
73
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
- (e) => {
75
- const [hub, stackParser, attachStacktrace] = getHubAndOptions();
76
- if (!hub.getIntegration(GlobalHandlers)) {
77
- return;
78
- }
79
- let error = e;
80
- // dig the object of the rejection out of known event types
81
- try {
82
- // PromiseRejectionEvents store the object of the rejection under 'reason'
83
- // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent
84
- if ('reason' in e) {
85
- error = e.reason;
86
- }
87
- // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents
88
- // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into
89
- // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec
90
- // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and
91
- // https://github.com/getsentry/sentry-javascript/issues/2380
92
- else if ('detail' in e && 'reason' in e.detail) {
93
- error = e.detail.reason;
94
- }
95
- }
96
- catch (_oO) {
97
- // no-empty
94
+ utils.addInstrumentationHandler(
95
+ 'unhandledrejection',
96
+ (e) => {
97
+ const [hub, stackParser, attachStacktrace] = getHubAndOptions();
98
+ if (!hub.getIntegration(GlobalHandlers)) {
99
+ return;
100
+ }
101
+ let error = e;
102
+
103
+ // dig the object of the rejection out of known event types
104
+ try {
105
+ // PromiseRejectionEvents store the object of the rejection under 'reason'
106
+ // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent
107
+ if ('reason' in e) {
108
+ error = e.reason;
98
109
  }
99
- if (helpers_1.shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {
100
- return true;
110
+ // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents
111
+ // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into
112
+ // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec
113
+ // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and
114
+ // https://github.com/getsentry/sentry-javascript/issues/2380
115
+ else if ('detail' in e && 'reason' in e.detail) {
116
+ error = e.detail.reason;
101
117
  }
102
- const event = utils_1.isPrimitive(error)
103
- ? _eventFromRejectionWithPrimitive(error)
104
- : eventbuilder_1.eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);
105
- event.level = 'error';
106
- addMechanismAndCapture(hub, error, event, 'onunhandledrejection');
107
- return;
108
- });
118
+ } catch (_oO) {
119
+ // no-empty
120
+ }
121
+
122
+ if (helpers.shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {
123
+ return true;
124
+ }
125
+
126
+ var event = utils.isPrimitive(error)
127
+ ? _eventFromRejectionWithPrimitive(error)
128
+ : eventbuilder.eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);
129
+
130
+ event.level = 'error';
131
+
132
+ addMechanismAndCapture(hub, error, event, 'onunhandledrejection');
133
+ return;
134
+ },
135
+ );
109
136
  }
137
+
110
138
  /**
111
139
  * Create an event from a promise rejection where the `reason` is a primitive.
112
140
  *
@@ -114,91 +142,104 @@ function _installGlobalOnUnhandledRejectionHandler() {
114
142
  * @returns An Event object with an appropriate `exception` value
115
143
  */
116
144
  function _eventFromRejectionWithPrimitive(reason) {
117
- return {
118
- exception: {
119
- values: [
120
- {
121
- type: 'UnhandledRejection',
122
- // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)
123
- value: `Non-Error promise rejection captured with value: ${String(reason)}`,
124
- },
125
- ],
145
+ return {
146
+ exception: {
147
+ values: [
148
+ {
149
+ type: 'UnhandledRejection',
150
+ // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)
151
+ value: `Non-Error promise rejection captured with value: ${String(reason)}`,
126
152
  },
127
- };
153
+ ],
154
+ },
155
+ };
128
156
  }
157
+
129
158
  /**
130
159
  * This function creates a stack from an old, error-less onerror handler.
131
160
  */
132
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
133
161
  function _eventFromIncompleteOnError(msg, url, line, column) {
134
- const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;
135
- // If 'message' is ErrorEvent, get real message from inside
136
- let message = utils_1.isErrorEvent(msg) ? msg.message : msg;
137
- let name = 'Error';
138
- const groups = message.match(ERROR_TYPES_RE);
139
- if (groups) {
140
- name = groups[1];
141
- message = groups[2];
142
- }
143
- const event = {
144
- exception: {
145
- values: [
146
- {
147
- type: name,
148
- value: message,
149
- },
150
- ],
162
+ var ERROR_TYPES_RE =
163
+ /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;
164
+
165
+ // If 'message' is ErrorEvent, get real message from inside
166
+ let message = utils.isErrorEvent(msg) ? msg.message : msg;
167
+ let name = 'Error';
168
+
169
+ var groups = message.match(ERROR_TYPES_RE);
170
+ if (groups) {
171
+ name = groups[1];
172
+ message = groups[2];
173
+ }
174
+
175
+ var event = {
176
+ exception: {
177
+ values: [
178
+ {
179
+ type: name,
180
+ value: message,
151
181
  },
152
- };
153
- return _enhanceEventWithInitialFrame(event, url, line, column);
182
+ ],
183
+ },
184
+ };
185
+
186
+ return _enhanceEventWithInitialFrame(event, url, line, column);
154
187
  }
188
+
155
189
  /** JSDoc */
156
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
157
190
  function _enhanceEventWithInitialFrame(event, url, line, column) {
158
- // event.exception
159
- const e = (event.exception = event.exception || {});
160
- // event.exception.values
161
- const ev = (e.values = e.values || []);
162
- // event.exception.values[0]
163
- const ev0 = (ev[0] = ev[0] || {});
164
- // event.exception.values[0].stacktrace
165
- const ev0s = (ev0.stacktrace = ev0.stacktrace || {});
166
- // event.exception.values[0].stacktrace.frames
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();
171
- // event.exception.values[0].stacktrace.frames
172
- if (ev0sf.length === 0) {
173
- ev0sf.push({
174
- colno,
175
- filename,
176
- function: '?',
177
- in_app: true,
178
- lineno,
179
- });
180
- }
181
- return event;
191
+ // event.exception
192
+ var e = (event.exception = event.exception || {});
193
+ // event.exception.values
194
+ var ev = (e.values = e.values || []);
195
+ // event.exception.values[0]
196
+ var ev0 = (ev[0] = ev[0] || {});
197
+ // event.exception.values[0].stacktrace
198
+ var ev0s = (ev0.stacktrace = ev0.stacktrace || {});
199
+ // event.exception.values[0].stacktrace.frames
200
+ var ev0sf = (ev0s.frames = ev0s.frames || []);
201
+
202
+ var colno = isNaN(parseInt(column, 10)) ? undefined : column;
203
+ var lineno = isNaN(parseInt(line, 10)) ? undefined : line;
204
+ var filename = utils.isString(url) && url.length > 0 ? url : utils.getLocationHref();
205
+
206
+ // event.exception.values[0].stacktrace.frames
207
+ if (ev0sf.length === 0) {
208
+ ev0sf.push({
209
+ colno,
210
+ filename,
211
+ function: '?',
212
+ in_app: true,
213
+ lineno,
214
+ });
215
+ }
216
+
217
+ return event;
182
218
  }
219
+
183
220
  function globalHandlerLog(type) {
184
- flags_1.IS_DEBUG_BUILD && utils_1.logger.log(`Global Handler attached: ${type}`);
221
+ flags.IS_DEBUG_BUILD && utils.logger.log(`Global Handler attached: ${type}`);
185
222
  }
223
+
186
224
  function addMechanismAndCapture(hub, error, event, type) {
187
- utils_1.addExceptionMechanism(event, {
188
- handled: false,
189
- type,
190
- });
191
- hub.captureEvent(event, {
192
- originalException: error,
193
- });
225
+ utils.addExceptionMechanism(event, {
226
+ handled: false,
227
+ type,
228
+ });
229
+ hub.captureEvent(event, {
230
+ originalException: error,
231
+ });
194
232
  }
233
+
195
234
  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];
235
+ var hub = core.getCurrentHub();
236
+ var client = hub.getClient();
237
+ var options = (client && client.getOptions()) || {
238
+ stackParser: () => [],
239
+ attachStacktrace: false,
240
+ };
241
+ return [hub, options.stackParser, options.attachStacktrace];
203
242
  }
204
- //# sourceMappingURL=globalhandlers.js.map
243
+
244
+ exports.GlobalHandlers = GlobalHandlers;
245
+ //# sourceMappingURL=globalhandlers.js.map
@@ -1 +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"]}
1
+ {"version":3,"file":"globalhandlers.js","sources":["../../../../src/integrations/globalhandlers.ts"],"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"],"names":[],"mappings":";;;;;;;;AAuBA;;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;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;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;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;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;;"}
@@ -0,0 +1,51 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+
3
+ var core = require('@sentry/core');
4
+ var utils = require('@sentry/utils');
5
+
6
+ var global = utils.getGlobalObject();
7
+
8
+ /** HttpContext integration collects information about HTTP request headers */
9
+ class HttpContext {constructor() { HttpContext.prototype.__init.call(this); }
10
+ /**
11
+ * @inheritDoc
12
+ */
13
+ static __initStatic() {this.id = 'HttpContext';}
14
+
15
+ /**
16
+ * @inheritDoc
17
+ */
18
+ __init() {this.name = HttpContext.id;}
19
+
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ setupOnce() {
24
+ core.addGlobalEventProcessor((event) => {
25
+ if (core.getCurrentHub().getIntegration(HttpContext)) {
26
+ // if none of the information we want exists, don't bother
27
+ if (!global.navigator && !global.location && !global.document) {
28
+ return event;
29
+ }
30
+
31
+ // grab as much info as exists and add it to the event
32
+ var url = (event.request && event.request.url) || (global.location && global.location.href);
33
+ const { referrer } = global.document || {};
34
+ const { userAgent } = global.navigator || {};
35
+
36
+ var headers = {
37
+ ...(event.request && event.request.headers),
38
+ ...(referrer && { Referer: referrer }),
39
+ ...(userAgent && { 'User-Agent': userAgent }),
40
+ };
41
+ var request = { ...(url && { url }), headers };
42
+
43
+ return { ...event, request };
44
+ }
45
+ return event;
46
+ });
47
+ }
48
+ } HttpContext.__initStatic();
49
+
50
+ exports.HttpContext = HttpContext;
51
+ //# sourceMappingURL=httpcontext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpcontext.js","sources":["../../../../src/integrations/httpcontext.ts"],"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/** HttpContext integration collects information about HTTP request headers */\nexport class HttpContext implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'HttpContext';\n\n /**\n * @inheritDoc\n */\n public name: string = HttpContext.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\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"],"names":[],"mappings":";;;;;AAIA;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;;"}
@@ -1,14 +1,18 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- var globalhandlers_1 = require("./globalhandlers");
3
- exports.GlobalHandlers = globalhandlers_1.GlobalHandlers;
4
- var trycatch_1 = require("./trycatch");
5
- exports.TryCatch = trycatch_1.TryCatch;
6
- var breadcrumbs_1 = require("./breadcrumbs");
7
- exports.Breadcrumbs = breadcrumbs_1.Breadcrumbs;
8
- var linkederrors_1 = require("./linkederrors");
9
- exports.LinkedErrors = linkederrors_1.LinkedErrors;
10
- var useragent_1 = require("./useragent");
11
- exports.UserAgent = useragent_1.UserAgent;
12
- var dedupe_1 = require("./dedupe");
13
- exports.Dedupe = dedupe_1.Dedupe;
14
- //# sourceMappingURL=index.js.map
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+
3
+ var globalhandlers = require('./globalhandlers.js');
4
+ var trycatch = require('./trycatch.js');
5
+ var breadcrumbs = require('./breadcrumbs.js');
6
+ var linkederrors = require('./linkederrors.js');
7
+ var httpcontext = require('./httpcontext.js');
8
+ var dedupe = require('./dedupe.js');
9
+
10
+
11
+
12
+ exports.GlobalHandlers = globalhandlers.GlobalHandlers;
13
+ exports.TryCatch = trycatch.TryCatch;
14
+ exports.Breadcrumbs = breadcrumbs.Breadcrumbs;
15
+ exports.LinkedErrors = linkederrors.LinkedErrors;
16
+ exports.HttpContext = httpcontext.HttpContext;
17
+ exports.Dedupe = dedupe.Dedupe;
18
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integrations/index.ts"],"names":[],"mappings":";AAAA,mDAAkD;AAAzC,0CAAA,cAAc,CAAA;AACvB,uCAAsC;AAA7B,8BAAA,QAAQ,CAAA;AACjB,6CAA4C;AAAnC,oCAAA,WAAW,CAAA;AACpB,+CAA8C;AAArC,sCAAA,YAAY,CAAA;AACrB,yCAAwC;AAA/B,gCAAA,SAAS,CAAA;AAClB,mCAAkC;AAAzB,0BAAA,MAAM,CAAA","sourcesContent":["export { GlobalHandlers } from './globalhandlers';\nexport { TryCatch } from './trycatch';\nexport { Breadcrumbs } from './breadcrumbs';\nexport { LinkedErrors } from './linkederrors';\nexport { UserAgent } from './useragent';\nexport { Dedupe } from './dedupe';\n"]}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}