@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.
Files changed (265) hide show
  1. package/cjs/client.d.ts +63 -0
  2. package/cjs/client.d.ts.map +1 -0
  3. package/cjs/client.js +116 -0
  4. package/cjs/client.js.map +1 -0
  5. package/cjs/eventbuilder.d.ts +37 -0
  6. package/cjs/eventbuilder.d.ts.map +1 -0
  7. package/{dist → cjs}/eventbuilder.js +52 -53
  8. package/cjs/eventbuilder.js.map +1 -0
  9. package/cjs/exports.d.ts +11 -0
  10. package/cjs/exports.d.ts.map +1 -0
  11. package/{dist → cjs}/exports.js +21 -7
  12. package/cjs/exports.js.map +1 -0
  13. package/{dist → cjs}/flags.d.ts +0 -0
  14. package/{dist → cjs}/flags.d.ts.map +0 -0
  15. package/{dist → cjs}/flags.js +0 -0
  16. package/{dist → cjs}/flags.js.map +0 -0
  17. package/{dist → cjs}/helpers.d.ts +0 -5
  18. package/cjs/helpers.d.ts.map +1 -0
  19. package/{dist → cjs}/helpers.js +15 -49
  20. package/cjs/helpers.js.map +1 -0
  21. package/{dist → cjs}/index.d.ts +1 -2
  22. package/{dist → cjs}/index.d.ts.map +1 -1
  23. package/cjs/index.js +15 -0
  24. package/cjs/index.js.map +1 -0
  25. package/{dist → cjs}/integrations/breadcrumbs.d.ts +6 -7
  26. package/cjs/integrations/breadcrumbs.d.ts.map +1 -0
  27. package/{dist → cjs}/integrations/breadcrumbs.js +39 -57
  28. package/cjs/integrations/breadcrumbs.js.map +1 -0
  29. package/{dist → cjs}/integrations/dedupe.d.ts +0 -0
  30. package/{dist → cjs}/integrations/dedupe.d.ts.map +1 -1
  31. package/{dist → cjs}/integrations/dedupe.js +28 -30
  32. package/cjs/integrations/dedupe.js.map +1 -0
  33. package/{dist → cjs}/integrations/globalhandlers.d.ts +0 -0
  34. package/cjs/integrations/globalhandlers.d.ts.map +1 -0
  35. package/{dist → cjs}/integrations/globalhandlers.js +57 -57
  36. package/cjs/integrations/globalhandlers.js.map +1 -0
  37. package/{dist → cjs}/integrations/index.d.ts +0 -0
  38. package/{dist → cjs}/integrations/index.d.ts.map +0 -0
  39. package/{dist → cjs}/integrations/index.js +0 -0
  40. package/{dist → cjs}/integrations/index.js.map +0 -0
  41. package/{dist → cjs}/integrations/linkederrors.d.ts +3 -3
  42. package/cjs/integrations/linkederrors.d.ts.map +1 -0
  43. package/cjs/integrations/linkederrors.js +62 -0
  44. package/cjs/integrations/linkederrors.js.map +1 -0
  45. package/{dist → cjs}/integrations/trycatch.d.ts +0 -0
  46. package/{dist → cjs}/integrations/trycatch.d.ts.map +0 -0
  47. package/{dist → cjs}/integrations/trycatch.js +30 -40
  48. package/cjs/integrations/trycatch.js.map +1 -0
  49. package/{dist → cjs}/integrations/useragent.d.ts +0 -0
  50. package/{dist → cjs}/integrations/useragent.d.ts.map +0 -0
  51. package/cjs/integrations/useragent.js +40 -0
  52. package/cjs/integrations/useragent.js.map +1 -0
  53. package/{dist → cjs}/sdk.d.ts +3 -3
  54. package/cjs/sdk.d.ts.map +1 -0
  55. package/{dist → cjs}/sdk.js +47 -28
  56. package/cjs/sdk.js.map +1 -0
  57. package/cjs/stack-parsers.d.ts +9 -0
  58. package/cjs/stack-parsers.d.ts.map +1 -0
  59. package/{dist → cjs}/stack-parsers.js +45 -44
  60. package/cjs/stack-parsers.js.map +1 -0
  61. package/{esm/transports/new-fetch.d.ts → cjs/transports/fetch.d.ts} +3 -3
  62. package/cjs/transports/fetch.d.ts.map +1 -0
  63. package/cjs/transports/fetch.js +20 -0
  64. package/cjs/transports/fetch.js.map +1 -0
  65. package/cjs/transports/index.d.ts +3 -0
  66. package/cjs/transports/index.d.ts.map +1 -0
  67. package/cjs/transports/index.js +6 -0
  68. package/cjs/transports/index.js.map +1 -0
  69. package/{dist → cjs}/transports/utils.d.ts +0 -0
  70. package/{dist → cjs}/transports/utils.d.ts.map +1 -1
  71. package/{dist → cjs}/transports/utils.js +17 -17
  72. package/cjs/transports/utils.js.map +1 -0
  73. package/{types/transports/new-xhr.d.ts → cjs/transports/xhr.d.ts} +3 -3
  74. package/cjs/transports/xhr.d.ts.map +1 -0
  75. package/{esm/transports/new-xhr.js → cjs/transports/xhr.js} +14 -14
  76. package/cjs/transports/xhr.js.map +1 -0
  77. package/{dist → cjs}/version.d.ts +0 -0
  78. package/{dist → cjs}/version.d.ts.map +0 -0
  79. package/{dist → cjs}/version.js +0 -0
  80. package/{dist → cjs}/version.js.map +0 -0
  81. package/esm/client.d.ts +41 -11
  82. package/esm/client.d.ts.map +1 -1
  83. package/esm/client.js +79 -41
  84. package/esm/client.js.map +1 -1
  85. package/esm/eventbuilder.d.ts +10 -12
  86. package/esm/eventbuilder.d.ts.map +1 -1
  87. package/esm/eventbuilder.js +52 -53
  88. package/esm/eventbuilder.js.map +1 -1
  89. package/esm/exports.d.ts +7 -6
  90. package/esm/exports.d.ts.map +1 -1
  91. package/esm/exports.js +4 -4
  92. package/esm/exports.js.map +1 -1
  93. package/esm/flags.js +1 -1
  94. package/esm/flags.js.map +1 -1
  95. package/esm/helpers.d.ts +0 -5
  96. package/esm/helpers.d.ts.map +1 -1
  97. package/esm/helpers.js +15 -48
  98. package/esm/helpers.js.map +1 -1
  99. package/esm/index.d.ts +1 -2
  100. package/esm/index.d.ts.map +1 -1
  101. package/esm/index.js +4 -6
  102. package/esm/index.js.map +1 -1
  103. package/esm/integrations/breadcrumbs.d.ts +6 -7
  104. package/esm/integrations/breadcrumbs.d.ts.map +1 -1
  105. package/esm/integrations/breadcrumbs.js +38 -57
  106. package/esm/integrations/breadcrumbs.js.map +1 -1
  107. package/esm/integrations/dedupe.d.ts.map +1 -1
  108. package/esm/integrations/dedupe.js +26 -29
  109. package/esm/integrations/dedupe.js.map +1 -1
  110. package/esm/integrations/globalhandlers.d.ts.map +1 -1
  111. package/esm/integrations/globalhandlers.js +52 -53
  112. package/esm/integrations/globalhandlers.js.map +1 -1
  113. package/esm/integrations/linkederrors.d.ts +3 -3
  114. package/esm/integrations/linkederrors.d.ts.map +1 -1
  115. package/esm/integrations/linkederrors.js +24 -25
  116. package/esm/integrations/linkederrors.js.map +1 -1
  117. package/esm/integrations/trycatch.js +28 -39
  118. package/esm/integrations/trycatch.js.map +1 -1
  119. package/esm/integrations/useragent.js +17 -20
  120. package/esm/integrations/useragent.js.map +1 -1
  121. package/esm/sdk.d.ts +3 -3
  122. package/esm/sdk.d.ts.map +1 -1
  123. package/esm/sdk.js +44 -25
  124. package/esm/sdk.js.map +1 -1
  125. package/esm/stack-parsers.d.ts +8 -6
  126. package/esm/stack-parsers.d.ts.map +1 -1
  127. package/esm/stack-parsers.js +45 -44
  128. package/esm/stack-parsers.js.map +1 -1
  129. package/esm/transports/fetch.d.ts +7 -14
  130. package/esm/transports/fetch.d.ts.map +1 -1
  131. package/esm/transports/fetch.js +15 -77
  132. package/esm/transports/fetch.js.map +1 -1
  133. package/esm/transports/index.d.ts +2 -5
  134. package/esm/transports/index.d.ts.map +1 -1
  135. package/esm/transports/index.js +2 -5
  136. package/esm/transports/index.js.map +1 -1
  137. package/esm/transports/utils.d.ts.map +1 -1
  138. package/esm/transports/utils.js +16 -16
  139. package/esm/transports/utils.js.map +1 -1
  140. package/esm/transports/xhr.d.ts +9 -9
  141. package/esm/transports/xhr.d.ts.map +1 -1
  142. package/esm/transports/xhr.js +38 -59
  143. package/esm/transports/xhr.js.map +1 -1
  144. package/esm/version.js +1 -1
  145. package/esm/version.js.map +1 -1
  146. package/package.json +6 -7
  147. package/types/client.d.ts +41 -11
  148. package/types/client.d.ts.map +1 -1
  149. package/types/eventbuilder.d.ts +10 -12
  150. package/types/eventbuilder.d.ts.map +1 -1
  151. package/types/exports.d.ts +7 -6
  152. package/types/exports.d.ts.map +1 -1
  153. package/types/helpers.d.ts +0 -5
  154. package/types/helpers.d.ts.map +1 -1
  155. package/types/index.d.ts +1 -2
  156. package/types/index.d.ts.map +1 -1
  157. package/types/integrations/breadcrumbs.d.ts +6 -7
  158. package/types/integrations/breadcrumbs.d.ts.map +1 -1
  159. package/types/integrations/dedupe.d.ts.map +1 -1
  160. package/types/integrations/globalhandlers.d.ts.map +1 -1
  161. package/types/integrations/linkederrors.d.ts +3 -3
  162. package/types/integrations/linkederrors.d.ts.map +1 -1
  163. package/types/sdk.d.ts +3 -3
  164. package/types/sdk.d.ts.map +1 -1
  165. package/types/stack-parsers.d.ts +8 -6
  166. package/types/stack-parsers.d.ts.map +1 -1
  167. package/types/transports/fetch.d.ts +7 -14
  168. package/types/transports/fetch.d.ts.map +1 -1
  169. package/types/transports/index.d.ts +2 -5
  170. package/types/transports/index.d.ts.map +1 -1
  171. package/types/transports/utils.d.ts.map +1 -1
  172. package/types/transports/xhr.d.ts +9 -9
  173. package/types/transports/xhr.d.ts.map +1 -1
  174. package/build/bundle.debug.min.js +0 -3
  175. package/build/bundle.debug.min.js.map +0 -1
  176. package/build/bundle.es6.debug.min.js +0 -3
  177. package/build/bundle.es6.debug.min.js.map +0 -1
  178. package/build/bundle.es6.js +0 -6868
  179. package/build/bundle.es6.js.map +0 -1
  180. package/build/bundle.es6.min.js +0 -3
  181. package/build/bundle.es6.min.js.map +0 -1
  182. package/build/bundle.js +0 -7169
  183. package/build/bundle.js.map +0 -1
  184. package/build/bundle.min.js +0 -3
  185. package/build/bundle.min.js.map +0 -1
  186. package/dist/backend.d.ts +0 -43
  187. package/dist/backend.d.ts.map +0 -1
  188. package/dist/backend.js +0 -58
  189. package/dist/backend.js.map +0 -1
  190. package/dist/client.d.ts +0 -33
  191. package/dist/client.d.ts.map +0 -1
  192. package/dist/client.js +0 -77
  193. package/dist/client.js.map +0 -1
  194. package/dist/eventbuilder.d.ts +0 -39
  195. package/dist/eventbuilder.d.ts.map +0 -1
  196. package/dist/eventbuilder.js.map +0 -1
  197. package/dist/exports.d.ts +0 -10
  198. package/dist/exports.d.ts.map +0 -1
  199. package/dist/exports.js.map +0 -1
  200. package/dist/helpers.d.ts.map +0 -1
  201. package/dist/helpers.js.map +0 -1
  202. package/dist/index.js +0 -17
  203. package/dist/index.js.map +0 -1
  204. package/dist/integrations/breadcrumbs.d.ts.map +0 -1
  205. package/dist/integrations/breadcrumbs.js.map +0 -1
  206. package/dist/integrations/dedupe.js.map +0 -1
  207. package/dist/integrations/globalhandlers.d.ts.map +0 -1
  208. package/dist/integrations/globalhandlers.js.map +0 -1
  209. package/dist/integrations/linkederrors.d.ts.map +0 -1
  210. package/dist/integrations/linkederrors.js +0 -62
  211. package/dist/integrations/linkederrors.js.map +0 -1
  212. package/dist/integrations/trycatch.js.map +0 -1
  213. package/dist/integrations/useragent.js +0 -42
  214. package/dist/integrations/useragent.js.map +0 -1
  215. package/dist/sdk.d.ts.map +0 -1
  216. package/dist/sdk.js.map +0 -1
  217. package/dist/stack-parsers.d.ts +0 -7
  218. package/dist/stack-parsers.d.ts.map +0 -1
  219. package/dist/stack-parsers.js.map +0 -1
  220. package/dist/transports/base.d.ts +0 -65
  221. package/dist/transports/base.d.ts.map +0 -1
  222. package/dist/transports/base.js +0 -141
  223. package/dist/transports/base.js.map +0 -1
  224. package/dist/transports/fetch.d.ts +0 -17
  225. package/dist/transports/fetch.d.ts.map +0 -1
  226. package/dist/transports/fetch.js +0 -81
  227. package/dist/transports/fetch.js.map +0 -1
  228. package/dist/transports/index.d.ts +0 -6
  229. package/dist/transports/index.d.ts.map +0 -1
  230. package/dist/transports/index.js +0 -12
  231. package/dist/transports/index.js.map +0 -1
  232. package/dist/transports/new-fetch.d.ts +0 -10
  233. package/dist/transports/new-fetch.d.ts.map +0 -1
  234. package/dist/transports/new-fetch.js +0 -27
  235. package/dist/transports/new-fetch.js.map +0 -1
  236. package/dist/transports/new-xhr.d.ts +0 -11
  237. package/dist/transports/new-xhr.d.ts.map +0 -1
  238. package/dist/transports/new-xhr.js +0 -46
  239. package/dist/transports/new-xhr.js.map +0 -1
  240. package/dist/transports/utils.js.map +0 -1
  241. package/dist/transports/xhr.d.ts +0 -11
  242. package/dist/transports/xhr.d.ts.map +0 -1
  243. package/dist/transports/xhr.js +0 -64
  244. package/dist/transports/xhr.js.map +0 -1
  245. package/esm/backend.d.ts +0 -43
  246. package/esm/backend.d.ts.map +0 -1
  247. package/esm/backend.js +0 -57
  248. package/esm/backend.js.map +0 -1
  249. package/esm/transports/base.d.ts +0 -65
  250. package/esm/transports/base.d.ts.map +0 -1
  251. package/esm/transports/base.js +0 -140
  252. package/esm/transports/base.js.map +0 -1
  253. package/esm/transports/new-fetch.d.ts.map +0 -1
  254. package/esm/transports/new-fetch.js +0 -25
  255. package/esm/transports/new-fetch.js.map +0 -1
  256. package/esm/transports/new-xhr.d.ts +0 -11
  257. package/esm/transports/new-xhr.d.ts.map +0 -1
  258. package/esm/transports/new-xhr.js.map +0 -1
  259. package/types/backend.d.ts +0 -43
  260. package/types/backend.d.ts.map +0 -1
  261. package/types/transports/base.d.ts +0 -65
  262. package/types/transports/base.d.ts.map +0 -1
  263. package/types/transports/new-fetch.d.ts +0 -10
  264. package/types/transports/new-fetch.d.ts.map +0 -1
  265. 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
- var core_1 = require("@sentry/core");
5
- var types_1 = require("@sentry/types");
6
- var utils_1 = require("@sentry/utils");
7
- var eventbuilder_1 = require("../eventbuilder");
8
- var flags_1 = require("../flags");
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
- var GlobalHandlers = /** @class */ (function () {
9
+ class GlobalHandlers {
12
10
  /** JSDoc */
13
- function GlobalHandlers(options) {
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 = tslib_1.__assign({ onerror: true, onunhandledrejection: true }, options);
24
+ this._options = Object.assign({ onerror: true, onunhandledrejection: true }, options);
27
25
  }
28
26
  /**
29
27
  * @inheritDoc
30
28
  */
31
- GlobalHandlers.prototype.setupOnce = function () {
29
+ setupOnce() {
32
30
  Error.stackTraceLimit = 50;
33
- var options = this._options;
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 (var key in options) {
38
- var installFunc = this._installFunc[key];
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
- function (data) {
58
- var _a = tslib_1.__read(getHubAndAttachStacktrace(), 2), hub = _a[0], attachStacktrace = _a[1];
54
+ (data) => {
55
+ const [hub, stackParser, attachStacktrace] = getHubAndOptions();
59
56
  if (!hub.getIntegration(GlobalHandlers)) {
60
57
  return;
61
58
  }
62
- var msg = data.msg, url = data.url, line = data.line, column = data.column, error = data.error;
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
- var event = error === undefined && utils_1.isString(msg)
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 = types_1.Severity.Error;
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
- function (e) {
78
- var _a = tslib_1.__read(getHubAndAttachStacktrace(), 2), hub = _a[0], attachStacktrace = _a[1];
74
+ (e) => {
75
+ const [hub, stackParser, attachStacktrace] = getHubAndOptions();
79
76
  if (!hub.getIntegration(GlobalHandlers)) {
80
77
  return;
81
78
  }
82
- var error = e;
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
- var event = utils_1.isPrimitive(error)
102
+ const event = utils_1.isPrimitive(error)
106
103
  ? _eventFromRejectionWithPrimitive(error)
107
- : eventbuilder_1.eventFromUnknownInput(error, undefined, attachStacktrace, true);
108
- event.level = types_1.Severity.Error;
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: "Non-Error promise rejection captured with value: " + String(reason),
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
- var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;
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
- var message = utils_1.isErrorEvent(msg) ? msg.message : msg;
140
- var name = 'Error';
141
- var groups = message.match(ERROR_TYPES_RE);
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
- var event = {
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
- var e = (event.exception = event.exception || {});
159
+ const e = (event.exception = event.exception || {});
163
160
  // event.exception.values
164
- var ev = (e.values = e.values || []);
161
+ const ev = (e.values = e.values || []);
165
162
  // event.exception.values[0]
166
- var ev0 = (ev[0] = ev[0] || {});
163
+ const ev0 = (ev[0] = ev[0] || {});
167
164
  // event.exception.values[0].stacktrace
168
- var ev0s = (ev0.stacktrace = ev0.stacktrace || {});
165
+ const ev0s = (ev0.stacktrace = ev0.stacktrace || {});
169
166
  // event.exception.values[0].stacktrace.frames
170
- var ev0sf = (ev0s.frames = ev0s.frames || []);
171
- var colno = isNaN(parseInt(column, 10)) ? undefined : column;
172
- var lineno = isNaN(parseInt(line, 10)) ? undefined : line;
173
- var filename = utils_1.isString(url) && url.length > 0 ? url : utils_1.getLocationHref();
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: colno,
178
- filename: filename,
174
+ colno,
175
+ filename,
179
176
  function: '?',
180
177
  in_app: true,
181
- lineno: 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("Global Handler attached: " + type);
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: type,
189
+ type,
193
190
  });
194
191
  hub.captureEvent(event, {
195
192
  originalException: error,
196
193
  });
197
194
  }
198
- function getHubAndAttachStacktrace() {
199
- var hub = core_1.getCurrentHub();
200
- var client = hub.getClient();
201
- var attachStacktrace = client && client.getOptions().attachStacktrace;
202
- return [hub, attachStacktrace];
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
- var tslib_1 = require("tslib");
3
- var utils_1 = require("@sentry/utils");
4
- var helpers_1 = require("../helpers");
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
- var TryCatch = /** @class */ (function () {
36
+ class TryCatch {
38
37
  /**
39
38
  * @inheritDoc
40
39
  */
41
- function TryCatch(options) {
40
+ constructor(options) {
42
41
  /**
43
42
  * @inheritDoc
44
43
  */
45
44
  this.name = TryCatch.id;
46
- this._options = tslib_1.__assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, 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
- TryCatch.prototype.setupOnce = function () {
53
- var global = utils_1.getGlobalObject();
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
- var eventTargetOption = this._options.eventTarget;
65
+ const eventTargetOption = this._options.eventTarget;
67
66
  if (eventTargetOption) {
68
- var eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;
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
- var args = [];
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
- var xhr = this;
128
- var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];
129
- xmlHttpRequestProps.forEach(function (prop) {
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
- var wrapOptions = {
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
- var originalFunction = utils_1.getOriginalFunction(original);
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
- var global = utils_1.getGlobalObject();
149
+ const global = utils_1.getGlobalObject();
160
150
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
161
- var proto = global[target] && global[target].prototype;
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: 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: 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
- var wrappedEventHandler = fn;
213
+ const wrappedEventHandler = fn;
224
214
  try {
225
- var originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;
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"]}
@@ -1,5 +1,5 @@
1
- import { Integrations as CoreIntegrations } from '@sentry/core';
2
- import { BrowserOptions } from './backend';
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
  *
@@ -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"}