@sentry/browser 10.53.1 → 10.54.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 (445) hide show
  1. package/build/npm/cjs/dev/client.js +15 -54
  2. package/build/npm/cjs/dev/client.js.map +1 -1
  3. package/build/npm/cjs/dev/debug-build.js +0 -5
  4. package/build/npm/cjs/dev/debug-build.js.map +1 -1
  5. package/build/npm/cjs/dev/diagnose-sdk.js +15 -37
  6. package/build/npm/cjs/dev/diagnose-sdk.js.map +1 -1
  7. package/build/npm/cjs/dev/eventbuilder.js +59 -217
  8. package/build/npm/cjs/dev/eventbuilder.js.map +1 -1
  9. package/build/npm/cjs/dev/feedbackAsync.js +1 -5
  10. package/build/npm/cjs/dev/feedbackAsync.js.map +1 -1
  11. package/build/npm/cjs/dev/feedbackSync.js +1 -2
  12. package/build/npm/cjs/dev/feedbackSync.js.map +1 -1
  13. package/build/npm/cjs/dev/helpers.js +24 -102
  14. package/build/npm/cjs/dev/helpers.js.map +1 -1
  15. package/build/npm/cjs/dev/index.js +2 -0
  16. package/build/npm/cjs/dev/index.js.map +1 -1
  17. package/build/npm/cjs/dev/integrations/breadcrumbs.js +52 -134
  18. package/build/npm/cjs/dev/integrations/breadcrumbs.js.map +1 -1
  19. package/build/npm/cjs/dev/integrations/browserapierrors.js +45 -111
  20. package/build/npm/cjs/dev/integrations/browserapierrors.js.map +1 -1
  21. package/build/npm/cjs/dev/integrations/browsersession.js +7 -35
  22. package/build/npm/cjs/dev/integrations/browsersession.js.map +1 -1
  23. package/build/npm/cjs/dev/integrations/contextlines.js +9 -45
  24. package/build/npm/cjs/dev/integrations/contextlines.js.map +1 -1
  25. package/build/npm/cjs/dev/integrations/culturecontext.js +11 -36
  26. package/build/npm/cjs/dev/integrations/culturecontext.js.map +1 -1
  27. package/build/npm/cjs/dev/integrations/featureFlags/growthbook/integration.js +1 -22
  28. package/build/npm/cjs/dev/integrations/featureFlags/growthbook/integration.js.map +1 -1
  29. package/build/npm/cjs/dev/integrations/featureFlags/launchdarkly/integration.js +6 -31
  30. package/build/npm/cjs/dev/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
  31. package/build/npm/cjs/dev/integrations/featureFlags/openfeature/integration.js +6 -12
  32. package/build/npm/cjs/dev/integrations/featureFlags/openfeature/integration.js.map +1 -1
  33. package/build/npm/cjs/dev/integrations/featureFlags/statsig/integration.js +5 -30
  34. package/build/npm/cjs/dev/integrations/featureFlags/statsig/integration.js.map +1 -1
  35. package/build/npm/cjs/dev/integrations/featureFlags/unleash/integration.js +10 -47
  36. package/build/npm/cjs/dev/integrations/featureFlags/unleash/integration.js.map +1 -1
  37. package/build/npm/cjs/dev/integrations/fetchStreamPerformance.js +60 -0
  38. package/build/npm/cjs/dev/integrations/fetchStreamPerformance.js.map +1 -0
  39. package/build/npm/cjs/dev/integrations/globalhandlers.js +38 -99
  40. package/build/npm/cjs/dev/integrations/globalhandlers.js.map +1 -1
  41. package/build/npm/cjs/dev/integrations/graphqlClient.js +31 -119
  42. package/build/npm/cjs/dev/integrations/graphqlClient.js.map +1 -1
  43. package/build/npm/cjs/dev/integrations/httpclient.js +43 -203
  44. package/build/npm/cjs/dev/integrations/httpclient.js.map +1 -1
  45. package/build/npm/cjs/dev/integrations/httpcontext.js +7 -17
  46. package/build/npm/cjs/dev/integrations/httpcontext.js.map +1 -1
  47. package/build/npm/cjs/dev/integrations/linkederrors.js +7 -15
  48. package/build/npm/cjs/dev/integrations/linkederrors.js.map +1 -1
  49. package/build/npm/cjs/dev/integrations/reportingobserver.js +19 -44
  50. package/build/npm/cjs/dev/integrations/reportingobserver.js.map +1 -1
  51. package/build/npm/cjs/dev/integrations/spanstreaming.js +11 -29
  52. package/build/npm/cjs/dev/integrations/spanstreaming.js.map +1 -1
  53. package/build/npm/cjs/dev/integrations/spotlight.js +17 -30
  54. package/build/npm/cjs/dev/integrations/spotlight.js.map +1 -1
  55. package/build/npm/cjs/dev/integrations/view-hierarchy.js +19 -46
  56. package/build/npm/cjs/dev/integrations/view-hierarchy.js.map +1 -1
  57. package/build/npm/cjs/dev/integrations/webWorker.js +40 -211
  58. package/build/npm/cjs/dev/integrations/webWorker.js.map +1 -1
  59. package/build/npm/cjs/dev/profiling/UIProfiler.js +87 -190
  60. package/build/npm/cjs/dev/profiling/UIProfiler.js.map +1 -1
  61. package/build/npm/cjs/dev/profiling/index.js +9 -30
  62. package/build/npm/cjs/dev/profiling/index.js.map +1 -1
  63. package/build/npm/cjs/dev/profiling/integration.js +30 -64
  64. package/build/npm/cjs/dev/profiling/integration.js.map +1 -1
  65. package/build/npm/cjs/dev/profiling/startProfileForSpan.js +28 -84
  66. package/build/npm/cjs/dev/profiling/startProfileForSpan.js.map +1 -1
  67. package/build/npm/cjs/dev/profiling/utils.js +131 -398
  68. package/build/npm/cjs/dev/profiling/utils.js.map +1 -1
  69. package/build/npm/cjs/dev/report-dialog.js +10 -25
  70. package/build/npm/cjs/dev/report-dialog.js.map +1 -1
  71. package/build/npm/cjs/dev/sdk.js +8 -76
  72. package/build/npm/cjs/dev/sdk.js.map +1 -1
  73. package/build/npm/cjs/dev/stack-parsers.js +42 -126
  74. package/build/npm/cjs/dev/stack-parsers.js.map +1 -1
  75. package/build/npm/cjs/dev/tracing/backgroundtab.js +4 -16
  76. package/build/npm/cjs/dev/tracing/backgroundtab.js.map +1 -1
  77. package/build/npm/cjs/dev/tracing/browserTracingIntegration.js +102 -291
  78. package/build/npm/cjs/dev/tracing/browserTracingIntegration.js.map +1 -1
  79. package/build/npm/cjs/dev/tracing/linkedTraces.js +25 -116
  80. package/build/npm/cjs/dev/tracing/linkedTraces.js.map +1 -1
  81. package/build/npm/cjs/dev/tracing/reportPageLoaded.js +1 -9
  82. package/build/npm/cjs/dev/tracing/reportPageLoaded.js.map +1 -1
  83. package/build/npm/cjs/dev/tracing/request.js +58 -223
  84. package/build/npm/cjs/dev/tracing/request.js.map +1 -1
  85. package/build/npm/cjs/dev/tracing/setActiveSpan.js +1 -48
  86. package/build/npm/cjs/dev/tracing/setActiveSpan.js.map +1 -1
  87. package/build/npm/cjs/dev/tracing/utils.js +4 -27
  88. package/build/npm/cjs/dev/tracing/utils.js.map +1 -1
  89. package/build/npm/cjs/dev/transports/fetch.js +10 -23
  90. package/build/npm/cjs/dev/transports/fetch.js.map +1 -1
  91. package/build/npm/cjs/dev/transports/offline.js +27 -84
  92. package/build/npm/cjs/dev/transports/offline.js.map +1 -1
  93. package/build/npm/cjs/dev/userfeedback.js +12 -22
  94. package/build/npm/cjs/dev/userfeedback.js.map +1 -1
  95. package/build/npm/cjs/dev/utils/detectBrowserExtension.js +5 -26
  96. package/build/npm/cjs/dev/utils/detectBrowserExtension.js.map +1 -1
  97. package/build/npm/cjs/dev/utils/lazyLoadIntegration.js +40 -75
  98. package/build/npm/cjs/dev/utils/lazyLoadIntegration.js.map +1 -1
  99. package/build/npm/cjs/prod/client.js +15 -54
  100. package/build/npm/cjs/prod/client.js.map +1 -1
  101. package/build/npm/cjs/prod/debug-build.js +0 -5
  102. package/build/npm/cjs/prod/debug-build.js.map +1 -1
  103. package/build/npm/cjs/prod/diagnose-sdk.js +15 -37
  104. package/build/npm/cjs/prod/diagnose-sdk.js.map +1 -1
  105. package/build/npm/cjs/prod/eventbuilder.js +59 -217
  106. package/build/npm/cjs/prod/eventbuilder.js.map +1 -1
  107. package/build/npm/cjs/prod/feedbackAsync.js +1 -5
  108. package/build/npm/cjs/prod/feedbackAsync.js.map +1 -1
  109. package/build/npm/cjs/prod/feedbackSync.js +1 -2
  110. package/build/npm/cjs/prod/feedbackSync.js.map +1 -1
  111. package/build/npm/cjs/prod/helpers.js +24 -102
  112. package/build/npm/cjs/prod/helpers.js.map +1 -1
  113. package/build/npm/cjs/prod/index.js +2 -0
  114. package/build/npm/cjs/prod/index.js.map +1 -1
  115. package/build/npm/cjs/prod/integrations/breadcrumbs.js +52 -134
  116. package/build/npm/cjs/prod/integrations/breadcrumbs.js.map +1 -1
  117. package/build/npm/cjs/prod/integrations/browserapierrors.js +45 -111
  118. package/build/npm/cjs/prod/integrations/browserapierrors.js.map +1 -1
  119. package/build/npm/cjs/prod/integrations/browsersession.js +7 -35
  120. package/build/npm/cjs/prod/integrations/browsersession.js.map +1 -1
  121. package/build/npm/cjs/prod/integrations/contextlines.js +9 -45
  122. package/build/npm/cjs/prod/integrations/contextlines.js.map +1 -1
  123. package/build/npm/cjs/prod/integrations/culturecontext.js +11 -36
  124. package/build/npm/cjs/prod/integrations/culturecontext.js.map +1 -1
  125. package/build/npm/cjs/prod/integrations/featureFlags/growthbook/integration.js +1 -22
  126. package/build/npm/cjs/prod/integrations/featureFlags/growthbook/integration.js.map +1 -1
  127. package/build/npm/cjs/prod/integrations/featureFlags/launchdarkly/integration.js +6 -31
  128. package/build/npm/cjs/prod/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
  129. package/build/npm/cjs/prod/integrations/featureFlags/openfeature/integration.js +6 -12
  130. package/build/npm/cjs/prod/integrations/featureFlags/openfeature/integration.js.map +1 -1
  131. package/build/npm/cjs/prod/integrations/featureFlags/statsig/integration.js +5 -30
  132. package/build/npm/cjs/prod/integrations/featureFlags/statsig/integration.js.map +1 -1
  133. package/build/npm/cjs/prod/integrations/featureFlags/unleash/integration.js +10 -47
  134. package/build/npm/cjs/prod/integrations/featureFlags/unleash/integration.js.map +1 -1
  135. package/build/npm/cjs/prod/integrations/fetchStreamPerformance.js +60 -0
  136. package/build/npm/cjs/prod/integrations/fetchStreamPerformance.js.map +1 -0
  137. package/build/npm/cjs/prod/integrations/globalhandlers.js +38 -99
  138. package/build/npm/cjs/prod/integrations/globalhandlers.js.map +1 -1
  139. package/build/npm/cjs/prod/integrations/graphqlClient.js +31 -119
  140. package/build/npm/cjs/prod/integrations/graphqlClient.js.map +1 -1
  141. package/build/npm/cjs/prod/integrations/httpclient.js +43 -203
  142. package/build/npm/cjs/prod/integrations/httpclient.js.map +1 -1
  143. package/build/npm/cjs/prod/integrations/httpcontext.js +7 -17
  144. package/build/npm/cjs/prod/integrations/httpcontext.js.map +1 -1
  145. package/build/npm/cjs/prod/integrations/linkederrors.js +7 -15
  146. package/build/npm/cjs/prod/integrations/linkederrors.js.map +1 -1
  147. package/build/npm/cjs/prod/integrations/reportingobserver.js +19 -44
  148. package/build/npm/cjs/prod/integrations/reportingobserver.js.map +1 -1
  149. package/build/npm/cjs/prod/integrations/spanstreaming.js +11 -29
  150. package/build/npm/cjs/prod/integrations/spanstreaming.js.map +1 -1
  151. package/build/npm/cjs/prod/integrations/spotlight.js +17 -30
  152. package/build/npm/cjs/prod/integrations/spotlight.js.map +1 -1
  153. package/build/npm/cjs/prod/integrations/view-hierarchy.js +19 -46
  154. package/build/npm/cjs/prod/integrations/view-hierarchy.js.map +1 -1
  155. package/build/npm/cjs/prod/integrations/webWorker.js +40 -211
  156. package/build/npm/cjs/prod/integrations/webWorker.js.map +1 -1
  157. package/build/npm/cjs/prod/profiling/UIProfiler.js +87 -190
  158. package/build/npm/cjs/prod/profiling/UIProfiler.js.map +1 -1
  159. package/build/npm/cjs/prod/profiling/index.js +9 -30
  160. package/build/npm/cjs/prod/profiling/index.js.map +1 -1
  161. package/build/npm/cjs/prod/profiling/integration.js +30 -64
  162. package/build/npm/cjs/prod/profiling/integration.js.map +1 -1
  163. package/build/npm/cjs/prod/profiling/startProfileForSpan.js +28 -84
  164. package/build/npm/cjs/prod/profiling/startProfileForSpan.js.map +1 -1
  165. package/build/npm/cjs/prod/profiling/utils.js +131 -398
  166. package/build/npm/cjs/prod/profiling/utils.js.map +1 -1
  167. package/build/npm/cjs/prod/report-dialog.js +10 -25
  168. package/build/npm/cjs/prod/report-dialog.js.map +1 -1
  169. package/build/npm/cjs/prod/sdk.js +5 -73
  170. package/build/npm/cjs/prod/sdk.js.map +1 -1
  171. package/build/npm/cjs/prod/stack-parsers.js +42 -126
  172. package/build/npm/cjs/prod/stack-parsers.js.map +1 -1
  173. package/build/npm/cjs/prod/tracing/backgroundtab.js +4 -16
  174. package/build/npm/cjs/prod/tracing/backgroundtab.js.map +1 -1
  175. package/build/npm/cjs/prod/tracing/browserTracingIntegration.js +102 -291
  176. package/build/npm/cjs/prod/tracing/browserTracingIntegration.js.map +1 -1
  177. package/build/npm/cjs/prod/tracing/linkedTraces.js +25 -117
  178. package/build/npm/cjs/prod/tracing/linkedTraces.js.map +1 -1
  179. package/build/npm/cjs/prod/tracing/reportPageLoaded.js +1 -9
  180. package/build/npm/cjs/prod/tracing/reportPageLoaded.js.map +1 -1
  181. package/build/npm/cjs/prod/tracing/request.js +58 -223
  182. package/build/npm/cjs/prod/tracing/request.js.map +1 -1
  183. package/build/npm/cjs/prod/tracing/setActiveSpan.js +1 -48
  184. package/build/npm/cjs/prod/tracing/setActiveSpan.js.map +1 -1
  185. package/build/npm/cjs/prod/tracing/utils.js +4 -27
  186. package/build/npm/cjs/prod/tracing/utils.js.map +1 -1
  187. package/build/npm/cjs/prod/transports/fetch.js +10 -23
  188. package/build/npm/cjs/prod/transports/fetch.js.map +1 -1
  189. package/build/npm/cjs/prod/transports/offline.js +27 -84
  190. package/build/npm/cjs/prod/transports/offline.js.map +1 -1
  191. package/build/npm/cjs/prod/userfeedback.js +12 -22
  192. package/build/npm/cjs/prod/userfeedback.js.map +1 -1
  193. package/build/npm/cjs/prod/utils/detectBrowserExtension.js +5 -26
  194. package/build/npm/cjs/prod/utils/detectBrowserExtension.js.map +1 -1
  195. package/build/npm/cjs/prod/utils/lazyLoadIntegration.js +40 -75
  196. package/build/npm/cjs/prod/utils/lazyLoadIntegration.js.map +1 -1
  197. package/build/npm/esm/dev/client.js +15 -54
  198. package/build/npm/esm/dev/client.js.map +1 -1
  199. package/build/npm/esm/dev/debug-build.js +0 -5
  200. package/build/npm/esm/dev/debug-build.js.map +1 -1
  201. package/build/npm/esm/dev/diagnose-sdk.js +15 -37
  202. package/build/npm/esm/dev/diagnose-sdk.js.map +1 -1
  203. package/build/npm/esm/dev/eventbuilder.js +59 -217
  204. package/build/npm/esm/dev/eventbuilder.js.map +1 -1
  205. package/build/npm/esm/dev/feedbackAsync.js +1 -5
  206. package/build/npm/esm/dev/feedbackAsync.js.map +1 -1
  207. package/build/npm/esm/dev/feedbackSync.js +1 -2
  208. package/build/npm/esm/dev/feedbackSync.js.map +1 -1
  209. package/build/npm/esm/dev/helpers.js +24 -102
  210. package/build/npm/esm/dev/helpers.js.map +1 -1
  211. package/build/npm/esm/dev/index.js +1 -0
  212. package/build/npm/esm/dev/index.js.map +1 -1
  213. package/build/npm/esm/dev/integrations/breadcrumbs.js +52 -134
  214. package/build/npm/esm/dev/integrations/breadcrumbs.js.map +1 -1
  215. package/build/npm/esm/dev/integrations/browserapierrors.js +45 -111
  216. package/build/npm/esm/dev/integrations/browserapierrors.js.map +1 -1
  217. package/build/npm/esm/dev/integrations/browsersession.js +7 -35
  218. package/build/npm/esm/dev/integrations/browsersession.js.map +1 -1
  219. package/build/npm/esm/dev/integrations/contextlines.js +9 -45
  220. package/build/npm/esm/dev/integrations/contextlines.js.map +1 -1
  221. package/build/npm/esm/dev/integrations/culturecontext.js +11 -36
  222. package/build/npm/esm/dev/integrations/culturecontext.js.map +1 -1
  223. package/build/npm/esm/dev/integrations/featureFlags/growthbook/integration.js +1 -22
  224. package/build/npm/esm/dev/integrations/featureFlags/growthbook/integration.js.map +1 -1
  225. package/build/npm/esm/dev/integrations/featureFlags/launchdarkly/integration.js +6 -31
  226. package/build/npm/esm/dev/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
  227. package/build/npm/esm/dev/integrations/featureFlags/openfeature/integration.js +6 -12
  228. package/build/npm/esm/dev/integrations/featureFlags/openfeature/integration.js.map +1 -1
  229. package/build/npm/esm/dev/integrations/featureFlags/statsig/integration.js +5 -30
  230. package/build/npm/esm/dev/integrations/featureFlags/statsig/integration.js.map +1 -1
  231. package/build/npm/esm/dev/integrations/featureFlags/unleash/integration.js +10 -47
  232. package/build/npm/esm/dev/integrations/featureFlags/unleash/integration.js.map +1 -1
  233. package/build/npm/esm/dev/integrations/fetchStreamPerformance.js +58 -0
  234. package/build/npm/esm/dev/integrations/fetchStreamPerformance.js.map +1 -0
  235. package/build/npm/esm/dev/integrations/globalhandlers.js +38 -99
  236. package/build/npm/esm/dev/integrations/globalhandlers.js.map +1 -1
  237. package/build/npm/esm/dev/integrations/graphqlClient.js +31 -119
  238. package/build/npm/esm/dev/integrations/graphqlClient.js.map +1 -1
  239. package/build/npm/esm/dev/integrations/httpclient.js +43 -203
  240. package/build/npm/esm/dev/integrations/httpclient.js.map +1 -1
  241. package/build/npm/esm/dev/integrations/httpcontext.js +7 -17
  242. package/build/npm/esm/dev/integrations/httpcontext.js.map +1 -1
  243. package/build/npm/esm/dev/integrations/linkederrors.js +7 -15
  244. package/build/npm/esm/dev/integrations/linkederrors.js.map +1 -1
  245. package/build/npm/esm/dev/integrations/reportingobserver.js +19 -44
  246. package/build/npm/esm/dev/integrations/reportingobserver.js.map +1 -1
  247. package/build/npm/esm/dev/integrations/spanstreaming.js +11 -29
  248. package/build/npm/esm/dev/integrations/spanstreaming.js.map +1 -1
  249. package/build/npm/esm/dev/integrations/spotlight.js +17 -30
  250. package/build/npm/esm/dev/integrations/spotlight.js.map +1 -1
  251. package/build/npm/esm/dev/integrations/view-hierarchy.js +19 -46
  252. package/build/npm/esm/dev/integrations/view-hierarchy.js.map +1 -1
  253. package/build/npm/esm/dev/integrations/webWorker.js +40 -211
  254. package/build/npm/esm/dev/integrations/webWorker.js.map +1 -1
  255. package/build/npm/esm/dev/package.json +1 -1
  256. package/build/npm/esm/dev/profiling/UIProfiler.js +87 -190
  257. package/build/npm/esm/dev/profiling/UIProfiler.js.map +1 -1
  258. package/build/npm/esm/dev/profiling/index.js +9 -30
  259. package/build/npm/esm/dev/profiling/index.js.map +1 -1
  260. package/build/npm/esm/dev/profiling/integration.js +30 -64
  261. package/build/npm/esm/dev/profiling/integration.js.map +1 -1
  262. package/build/npm/esm/dev/profiling/startProfileForSpan.js +28 -84
  263. package/build/npm/esm/dev/profiling/startProfileForSpan.js.map +1 -1
  264. package/build/npm/esm/dev/profiling/utils.js +131 -398
  265. package/build/npm/esm/dev/profiling/utils.js.map +1 -1
  266. package/build/npm/esm/dev/report-dialog.js +10 -25
  267. package/build/npm/esm/dev/report-dialog.js.map +1 -1
  268. package/build/npm/esm/dev/sdk.js +8 -76
  269. package/build/npm/esm/dev/sdk.js.map +1 -1
  270. package/build/npm/esm/dev/stack-parsers.js +42 -126
  271. package/build/npm/esm/dev/stack-parsers.js.map +1 -1
  272. package/build/npm/esm/dev/tracing/backgroundtab.js +4 -16
  273. package/build/npm/esm/dev/tracing/backgroundtab.js.map +1 -1
  274. package/build/npm/esm/dev/tracing/browserTracingIntegration.js +102 -291
  275. package/build/npm/esm/dev/tracing/browserTracingIntegration.js.map +1 -1
  276. package/build/npm/esm/dev/tracing/linkedTraces.js +25 -116
  277. package/build/npm/esm/dev/tracing/linkedTraces.js.map +1 -1
  278. package/build/npm/esm/dev/tracing/reportPageLoaded.js +1 -9
  279. package/build/npm/esm/dev/tracing/reportPageLoaded.js.map +1 -1
  280. package/build/npm/esm/dev/tracing/request.js +59 -224
  281. package/build/npm/esm/dev/tracing/request.js.map +1 -1
  282. package/build/npm/esm/dev/tracing/setActiveSpan.js +1 -48
  283. package/build/npm/esm/dev/tracing/setActiveSpan.js.map +1 -1
  284. package/build/npm/esm/dev/tracing/utils.js +4 -27
  285. package/build/npm/esm/dev/tracing/utils.js.map +1 -1
  286. package/build/npm/esm/dev/transports/fetch.js +10 -23
  287. package/build/npm/esm/dev/transports/fetch.js.map +1 -1
  288. package/build/npm/esm/dev/transports/offline.js +27 -84
  289. package/build/npm/esm/dev/transports/offline.js.map +1 -1
  290. package/build/npm/esm/dev/userfeedback.js +12 -22
  291. package/build/npm/esm/dev/userfeedback.js.map +1 -1
  292. package/build/npm/esm/dev/utils/detectBrowserExtension.js +5 -26
  293. package/build/npm/esm/dev/utils/detectBrowserExtension.js.map +1 -1
  294. package/build/npm/esm/dev/utils/lazyLoadIntegration.js +40 -75
  295. package/build/npm/esm/dev/utils/lazyLoadIntegration.js.map +1 -1
  296. package/build/npm/esm/prod/client.js +15 -54
  297. package/build/npm/esm/prod/client.js.map +1 -1
  298. package/build/npm/esm/prod/debug-build.js +0 -5
  299. package/build/npm/esm/prod/debug-build.js.map +1 -1
  300. package/build/npm/esm/prod/diagnose-sdk.js +15 -37
  301. package/build/npm/esm/prod/diagnose-sdk.js.map +1 -1
  302. package/build/npm/esm/prod/eventbuilder.js +59 -217
  303. package/build/npm/esm/prod/eventbuilder.js.map +1 -1
  304. package/build/npm/esm/prod/feedbackAsync.js +1 -5
  305. package/build/npm/esm/prod/feedbackAsync.js.map +1 -1
  306. package/build/npm/esm/prod/feedbackSync.js +1 -2
  307. package/build/npm/esm/prod/feedbackSync.js.map +1 -1
  308. package/build/npm/esm/prod/helpers.js +24 -102
  309. package/build/npm/esm/prod/helpers.js.map +1 -1
  310. package/build/npm/esm/prod/index.js +1 -0
  311. package/build/npm/esm/prod/index.js.map +1 -1
  312. package/build/npm/esm/prod/integrations/breadcrumbs.js +52 -134
  313. package/build/npm/esm/prod/integrations/breadcrumbs.js.map +1 -1
  314. package/build/npm/esm/prod/integrations/browserapierrors.js +45 -111
  315. package/build/npm/esm/prod/integrations/browserapierrors.js.map +1 -1
  316. package/build/npm/esm/prod/integrations/browsersession.js +7 -35
  317. package/build/npm/esm/prod/integrations/browsersession.js.map +1 -1
  318. package/build/npm/esm/prod/integrations/contextlines.js +9 -45
  319. package/build/npm/esm/prod/integrations/contextlines.js.map +1 -1
  320. package/build/npm/esm/prod/integrations/culturecontext.js +11 -36
  321. package/build/npm/esm/prod/integrations/culturecontext.js.map +1 -1
  322. package/build/npm/esm/prod/integrations/featureFlags/growthbook/integration.js +1 -22
  323. package/build/npm/esm/prod/integrations/featureFlags/growthbook/integration.js.map +1 -1
  324. package/build/npm/esm/prod/integrations/featureFlags/launchdarkly/integration.js +6 -31
  325. package/build/npm/esm/prod/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
  326. package/build/npm/esm/prod/integrations/featureFlags/openfeature/integration.js +6 -12
  327. package/build/npm/esm/prod/integrations/featureFlags/openfeature/integration.js.map +1 -1
  328. package/build/npm/esm/prod/integrations/featureFlags/statsig/integration.js +5 -30
  329. package/build/npm/esm/prod/integrations/featureFlags/statsig/integration.js.map +1 -1
  330. package/build/npm/esm/prod/integrations/featureFlags/unleash/integration.js +10 -47
  331. package/build/npm/esm/prod/integrations/featureFlags/unleash/integration.js.map +1 -1
  332. package/build/npm/esm/prod/integrations/fetchStreamPerformance.js +58 -0
  333. package/build/npm/esm/prod/integrations/fetchStreamPerformance.js.map +1 -0
  334. package/build/npm/esm/prod/integrations/globalhandlers.js +38 -99
  335. package/build/npm/esm/prod/integrations/globalhandlers.js.map +1 -1
  336. package/build/npm/esm/prod/integrations/graphqlClient.js +31 -119
  337. package/build/npm/esm/prod/integrations/graphqlClient.js.map +1 -1
  338. package/build/npm/esm/prod/integrations/httpclient.js +43 -203
  339. package/build/npm/esm/prod/integrations/httpclient.js.map +1 -1
  340. package/build/npm/esm/prod/integrations/httpcontext.js +7 -17
  341. package/build/npm/esm/prod/integrations/httpcontext.js.map +1 -1
  342. package/build/npm/esm/prod/integrations/linkederrors.js +7 -15
  343. package/build/npm/esm/prod/integrations/linkederrors.js.map +1 -1
  344. package/build/npm/esm/prod/integrations/reportingobserver.js +19 -44
  345. package/build/npm/esm/prod/integrations/reportingobserver.js.map +1 -1
  346. package/build/npm/esm/prod/integrations/spanstreaming.js +11 -29
  347. package/build/npm/esm/prod/integrations/spanstreaming.js.map +1 -1
  348. package/build/npm/esm/prod/integrations/spotlight.js +17 -30
  349. package/build/npm/esm/prod/integrations/spotlight.js.map +1 -1
  350. package/build/npm/esm/prod/integrations/view-hierarchy.js +19 -46
  351. package/build/npm/esm/prod/integrations/view-hierarchy.js.map +1 -1
  352. package/build/npm/esm/prod/integrations/webWorker.js +40 -211
  353. package/build/npm/esm/prod/integrations/webWorker.js.map +1 -1
  354. package/build/npm/esm/prod/package.json +1 -1
  355. package/build/npm/esm/prod/profiling/UIProfiler.js +87 -190
  356. package/build/npm/esm/prod/profiling/UIProfiler.js.map +1 -1
  357. package/build/npm/esm/prod/profiling/index.js +9 -30
  358. package/build/npm/esm/prod/profiling/index.js.map +1 -1
  359. package/build/npm/esm/prod/profiling/integration.js +30 -64
  360. package/build/npm/esm/prod/profiling/integration.js.map +1 -1
  361. package/build/npm/esm/prod/profiling/startProfileForSpan.js +28 -84
  362. package/build/npm/esm/prod/profiling/startProfileForSpan.js.map +1 -1
  363. package/build/npm/esm/prod/profiling/utils.js +131 -398
  364. package/build/npm/esm/prod/profiling/utils.js.map +1 -1
  365. package/build/npm/esm/prod/report-dialog.js +10 -25
  366. package/build/npm/esm/prod/report-dialog.js.map +1 -1
  367. package/build/npm/esm/prod/sdk.js +5 -73
  368. package/build/npm/esm/prod/sdk.js.map +1 -1
  369. package/build/npm/esm/prod/stack-parsers.js +42 -126
  370. package/build/npm/esm/prod/stack-parsers.js.map +1 -1
  371. package/build/npm/esm/prod/tracing/backgroundtab.js +4 -16
  372. package/build/npm/esm/prod/tracing/backgroundtab.js.map +1 -1
  373. package/build/npm/esm/prod/tracing/browserTracingIntegration.js +102 -291
  374. package/build/npm/esm/prod/tracing/browserTracingIntegration.js.map +1 -1
  375. package/build/npm/esm/prod/tracing/linkedTraces.js +25 -117
  376. package/build/npm/esm/prod/tracing/linkedTraces.js.map +1 -1
  377. package/build/npm/esm/prod/tracing/reportPageLoaded.js +1 -9
  378. package/build/npm/esm/prod/tracing/reportPageLoaded.js.map +1 -1
  379. package/build/npm/esm/prod/tracing/request.js +59 -224
  380. package/build/npm/esm/prod/tracing/request.js.map +1 -1
  381. package/build/npm/esm/prod/tracing/setActiveSpan.js +1 -48
  382. package/build/npm/esm/prod/tracing/setActiveSpan.js.map +1 -1
  383. package/build/npm/esm/prod/tracing/utils.js +4 -27
  384. package/build/npm/esm/prod/tracing/utils.js.map +1 -1
  385. package/build/npm/esm/prod/transports/fetch.js +10 -23
  386. package/build/npm/esm/prod/transports/fetch.js.map +1 -1
  387. package/build/npm/esm/prod/transports/offline.js +27 -84
  388. package/build/npm/esm/prod/transports/offline.js.map +1 -1
  389. package/build/npm/esm/prod/userfeedback.js +12 -22
  390. package/build/npm/esm/prod/userfeedback.js.map +1 -1
  391. package/build/npm/esm/prod/utils/detectBrowserExtension.js +5 -26
  392. package/build/npm/esm/prod/utils/detectBrowserExtension.js.map +1 -1
  393. package/build/npm/esm/prod/utils/lazyLoadIntegration.js +40 -75
  394. package/build/npm/esm/prod/utils/lazyLoadIntegration.js.map +1 -1
  395. package/build/npm/types/eventbuilder.d.ts.map +1 -1
  396. package/build/npm/types/helpers.d.ts.map +1 -1
  397. package/build/npm/types/index.bundle.d.ts +2 -2
  398. package/build/npm/types/index.bundle.d.ts.map +1 -1
  399. package/build/npm/types/index.bundle.feedback.d.ts +2 -2
  400. package/build/npm/types/index.bundle.feedback.d.ts.map +1 -1
  401. package/build/npm/types/index.bundle.logs.metrics.d.ts +2 -2
  402. package/build/npm/types/index.bundle.logs.metrics.d.ts.map +1 -1
  403. package/build/npm/types/index.bundle.replay.d.ts +2 -2
  404. package/build/npm/types/index.bundle.replay.d.ts.map +1 -1
  405. package/build/npm/types/index.bundle.replay.feedback.d.ts +2 -2
  406. package/build/npm/types/index.bundle.replay.feedback.d.ts.map +1 -1
  407. package/build/npm/types/index.bundle.replay.logs.metrics.d.ts +2 -2
  408. package/build/npm/types/index.bundle.replay.logs.metrics.d.ts.map +1 -1
  409. package/build/npm/types/index.bundle.tracing.d.ts +1 -0
  410. package/build/npm/types/index.bundle.tracing.d.ts.map +1 -1
  411. package/build/npm/types/index.bundle.tracing.logs.metrics.d.ts +1 -0
  412. package/build/npm/types/index.bundle.tracing.logs.metrics.d.ts.map +1 -1
  413. package/build/npm/types/index.bundle.tracing.replay.d.ts +1 -0
  414. package/build/npm/types/index.bundle.tracing.replay.d.ts.map +1 -1
  415. package/build/npm/types/index.bundle.tracing.replay.feedback.d.ts +1 -0
  416. package/build/npm/types/index.bundle.tracing.replay.feedback.d.ts.map +1 -1
  417. package/build/npm/types/index.bundle.tracing.replay.feedback.logs.metrics.d.ts +1 -0
  418. package/build/npm/types/index.bundle.tracing.replay.feedback.logs.metrics.d.ts.map +1 -1
  419. package/build/npm/types/index.bundle.tracing.replay.logs.metrics.d.ts +1 -0
  420. package/build/npm/types/index.bundle.tracing.replay.logs.metrics.d.ts.map +1 -1
  421. package/build/npm/types/index.d.ts +1 -0
  422. package/build/npm/types/index.d.ts.map +1 -1
  423. package/build/npm/types/integrations/fetchStreamPerformance.d.ts +14 -0
  424. package/build/npm/types/integrations/fetchStreamPerformance.d.ts.map +1 -0
  425. package/build/npm/types/tracing/browserTracingIntegration.d.ts +3 -0
  426. package/build/npm/types/tracing/browserTracingIntegration.d.ts.map +1 -1
  427. package/build/npm/types/tracing/request.d.ts +3 -0
  428. package/build/npm/types/tracing/request.d.ts.map +1 -1
  429. package/build/npm/types-ts3.8/index.bundle.d.ts +2 -2
  430. package/build/npm/types-ts3.8/index.bundle.feedback.d.ts +2 -2
  431. package/build/npm/types-ts3.8/index.bundle.logs.metrics.d.ts +2 -2
  432. package/build/npm/types-ts3.8/index.bundle.replay.d.ts +2 -2
  433. package/build/npm/types-ts3.8/index.bundle.replay.feedback.d.ts +2 -2
  434. package/build/npm/types-ts3.8/index.bundle.replay.logs.metrics.d.ts +2 -2
  435. package/build/npm/types-ts3.8/index.bundle.tracing.d.ts +1 -0
  436. package/build/npm/types-ts3.8/index.bundle.tracing.logs.metrics.d.ts +1 -0
  437. package/build/npm/types-ts3.8/index.bundle.tracing.replay.d.ts +1 -0
  438. package/build/npm/types-ts3.8/index.bundle.tracing.replay.feedback.d.ts +1 -0
  439. package/build/npm/types-ts3.8/index.bundle.tracing.replay.feedback.logs.metrics.d.ts +1 -0
  440. package/build/npm/types-ts3.8/index.bundle.tracing.replay.logs.metrics.d.ts +1 -0
  441. package/build/npm/types-ts3.8/index.d.ts +1 -0
  442. package/build/npm/types-ts3.8/integrations/fetchStreamPerformance.d.ts +14 -0
  443. package/build/npm/types-ts3.8/tracing/browserTracingIntegration.d.ts +3 -0
  444. package/build/npm/types-ts3.8/tracing/request.d.ts +3 -0
  445. package/package.json +7 -7
@@ -1,231 +1,126 @@
1
1
  import { isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, addExceptionMechanism, isParameterizedString, getClient, normalizeToSize, extractExceptionKeysForMessage, _INTERNAL_enhanceErrorWithSentryInfo, resolvedSyncPromise } from '@sentry/core/browser';
2
2
 
3
- /**
4
- * This function creates an exception from a JavaScript Error
5
- */
6
3
  function exceptionFromError(stackParser, ex) {
7
- // Get the frames first since Opera can lose the stack if we touch anything else first
8
4
  const frames = parseStackFrames(stackParser, ex);
9
-
10
5
  const exception = {
11
6
  type: extractType(ex),
12
- value: extractMessage(ex),
7
+ value: extractMessage(ex)
13
8
  };
14
-
15
9
  if (frames.length) {
16
10
  exception.stacktrace = { frames };
17
11
  }
18
-
19
- if (exception.type === undefined && exception.value === '') {
20
- exception.value = 'Unrecoverable error caught';
12
+ if (exception.type === void 0 && exception.value === "") {
13
+ exception.value = "Unrecoverable error caught";
21
14
  }
22
-
23
15
  return exception;
24
16
  }
25
-
26
- function eventFromPlainObject(
27
- stackParser,
28
- exception,
29
- syntheticException,
30
- isUnhandledRejection,
31
- ) {
17
+ function eventFromPlainObject(stackParser, exception, syntheticException, isUnhandledRejection) {
32
18
  const client = getClient();
33
19
  const normalizeDepth = client?.getOptions().normalizeDepth;
34
-
35
- // If we can, we extract an exception from the object properties
36
20
  const errorFromProp = getErrorPropertyFromObject(exception);
37
-
38
21
  const extra = {
39
- __serialized__: normalizeToSize(exception, normalizeDepth),
22
+ __serialized__: normalizeToSize(exception, normalizeDepth)
40
23
  };
41
-
42
24
  if (errorFromProp) {
43
25
  return {
44
26
  exception: {
45
- values: [exceptionFromError(stackParser, errorFromProp)],
27
+ values: [exceptionFromError(stackParser, errorFromProp)]
46
28
  },
47
- extra,
29
+ extra
48
30
  };
49
31
  }
50
-
51
32
  const event = {
52
33
  exception: {
53
34
  values: [
54
35
  {
55
- type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',
56
- value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),
57
- } ,
58
- ],
36
+ type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? "UnhandledRejection" : "Error",
37
+ value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection })
38
+ }
39
+ ]
59
40
  },
60
- extra,
61
- } ;
62
-
41
+ extra
42
+ };
63
43
  if (syntheticException) {
64
44
  const frames = parseStackFrames(stackParser, syntheticException);
65
45
  if (frames.length) {
66
- // event.exception.values[0] has been set above
67
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
68
46
  event.exception.values[0].stacktrace = { frames };
69
47
  }
70
48
  }
71
-
72
49
  return event;
73
50
  }
74
-
75
51
  function eventFromError(stackParser, ex) {
76
52
  return {
77
53
  exception: {
78
- values: [exceptionFromError(stackParser, ex)],
79
- },
54
+ values: [exceptionFromError(stackParser, ex)]
55
+ }
80
56
  };
81
57
  }
82
-
83
- /** Parses stack frames from an error */
84
- function parseStackFrames(
85
- stackParser,
86
- ex,
87
- ) {
88
- // Access and store the stacktrace property before doing ANYTHING
89
- // else to it because Opera is not very good at providing it
90
- // reliably in other circumstances.
91
- const stacktrace = ex.stacktrace || ex.stack || '';
92
-
58
+ function parseStackFrames(stackParser, ex) {
59
+ const stacktrace = ex.stacktrace || ex.stack || "";
93
60
  const skipLines = getSkipFirstStackStringLines(ex);
94
61
  const framesToPop = getPopFirstTopFrames(ex);
95
-
96
62
  try {
97
63
  return stackParser(stacktrace, skipLines, framesToPop);
98
64
  } catch {
99
- // no-empty
100
65
  }
101
-
102
66
  return [];
103
67
  }
104
-
105
- // Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
106
68
  const reactMinifiedRegexp = /Minified React error #\d+;/i;
107
-
108
- /**
109
- * Certain known React errors contain links that would be falsely
110
- * parsed as frames. This function check for these errors and
111
- * returns number of the stack string lines to skip.
112
- */
113
69
  function getSkipFirstStackStringLines(ex) {
114
70
  if (ex && reactMinifiedRegexp.test(ex.message)) {
115
71
  return 1;
116
72
  }
117
-
118
73
  return 0;
119
74
  }
120
-
121
- /**
122
- * If error has `framesToPop` property, it means that the
123
- * creator tells us the first x frames will be useless
124
- * and should be discarded. Typically error from wrapper function
125
- * which don't point to the actual location in the developer's code.
126
- *
127
- * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46
128
- */
129
75
  function getPopFirstTopFrames(ex) {
130
- if (typeof ex.framesToPop === 'number') {
76
+ if (typeof ex.framesToPop === "number") {
131
77
  return ex.framesToPop;
132
78
  }
133
-
134
79
  return 0;
135
80
  }
136
-
137
- // https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Exception
138
- // @ts-expect-error - WebAssembly.Exception is a valid class
139
81
  function isWebAssemblyException(exception) {
140
- // Check for support
141
- // @ts-expect-error - WebAssembly.Exception is a valid class
142
- // oxlint-disable-next-line typescript/prefer-optional-chain
143
- if (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Exception !== 'undefined') {
144
- // @ts-expect-error - WebAssembly.Exception is a valid class
82
+ if (typeof WebAssembly !== "undefined" && typeof WebAssembly.Exception !== "undefined") {
145
83
  return exception instanceof WebAssembly.Exception;
146
84
  } else {
147
85
  return false;
148
86
  }
149
87
  }
150
-
151
- /**
152
- * Extracts from errors what we use as the exception `type` in error events.
153
- *
154
- * Usually, this is the `name` property on Error objects but WASM errors need to be treated differently.
155
- */
156
88
  function extractType(ex) {
157
89
  const name = ex?.name;
158
-
159
- // The name for WebAssembly.Exception Errors needs to be extracted differently.
160
- // Context: https://github.com/getsentry/sentry-javascript/issues/13787
161
90
  if (!name && isWebAssemblyException(ex)) {
162
- // Emscripten sets array[type, message] to the "message" property on the WebAssembly.Exception object
163
91
  const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;
164
- return hasTypeInMessage ? ex.message[0] : 'WebAssembly.Exception';
92
+ return hasTypeInMessage ? ex.message[0] : "WebAssembly.Exception";
165
93
  }
166
-
167
94
  return name;
168
95
  }
169
-
170
- /**
171
- * There are cases where stacktrace.message is an Event object
172
- * https://github.com/getsentry/sentry-javascript/issues/1949
173
- * In this specific case we try to extract stacktrace.message.error.message
174
- */
175
96
  function extractMessage(ex) {
176
97
  const message = ex?.message;
177
-
178
98
  if (isWebAssemblyException(ex)) {
179
- // For Node 18, Emscripten sets array[type, message] to the "message" property on the WebAssembly.Exception object
180
99
  if (Array.isArray(ex.message) && ex.message.length == 2) {
181
100
  return ex.message[1];
182
101
  }
183
- return 'wasm exception';
102
+ return "wasm exception";
184
103
  }
185
-
186
104
  if (!message) {
187
- return 'No error message';
105
+ return "No error message";
188
106
  }
189
-
190
- if (message.error && typeof message.error.message === 'string') {
107
+ if (message.error && typeof message.error.message === "string") {
191
108
  return _INTERNAL_enhanceErrorWithSentryInfo(message.error);
192
109
  }
193
-
194
110
  return _INTERNAL_enhanceErrorWithSentryInfo(ex);
195
111
  }
196
-
197
- /**
198
- * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.
199
- * @hidden
200
- */
201
- function eventFromException(
202
- stackParser,
203
- exception,
204
- hint,
205
- attachStacktrace,
206
- ) {
207
- const syntheticException = hint?.syntheticException || undefined;
112
+ function eventFromException(stackParser, exception, hint, attachStacktrace) {
113
+ const syntheticException = hint?.syntheticException || void 0;
208
114
  const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);
209
- addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }
210
- event.level = 'error';
115
+ addExceptionMechanism(event);
116
+ event.level = "error";
211
117
  if (hint?.event_id) {
212
118
  event.event_id = hint.event_id;
213
119
  }
214
120
  return resolvedSyncPromise(event);
215
121
  }
216
-
217
- /**
218
- * Builds and Event from a Message
219
- * @hidden
220
- */
221
- function eventFromMessage(
222
- stackParser,
223
- message,
224
- level = 'info',
225
- hint,
226
- attachStacktrace,
227
- ) {
228
- const syntheticException = hint?.syntheticException || undefined;
122
+ function eventFromMessage(stackParser, message, level = "info", hint, attachStacktrace) {
123
+ const syntheticException = hint?.syntheticException || void 0;
229
124
  const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
230
125
  event.level = level;
231
126
  if (hint?.event_id) {
@@ -233,147 +128,94 @@ function eventFromMessage(
233
128
  }
234
129
  return resolvedSyncPromise(event);
235
130
  }
236
-
237
- /**
238
- * @hidden
239
- */
240
- function eventFromUnknownInput(
241
- stackParser,
242
- exception,
243
- syntheticException,
244
- attachStacktrace,
245
- isUnhandledRejection,
246
- ) {
131
+ function eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace, isUnhandledRejection) {
247
132
  let event;
248
-
249
- if (isErrorEvent(exception ) && (exception ).error) {
250
- // If it is an ErrorEvent with `error` property, extract it to get actual Error
251
- const errorEvent = exception ;
252
- return eventFromError(stackParser, errorEvent.error );
253
- }
254
-
255
- // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name
256
- // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be
257
- // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.
258
- //
259
- // https://developer.mozilla.org/en-US/docs/Web/API/DOMError
260
- // https://developer.mozilla.org/en-US/docs/Web/API/DOMException
261
- // https://webidl.spec.whatwg.org/#es-DOMException-specialness
262
- if (isDOMError(exception) || isDOMException(exception )) {
263
- const domException = exception ;
264
-
265
- if ('stack' in (exception )) {
266
- event = eventFromError(stackParser, exception );
133
+ if (isErrorEvent(exception) && exception.error) {
134
+ const errorEvent = exception;
135
+ return eventFromError(stackParser, errorEvent.error);
136
+ }
137
+ if (isDOMError(exception) || isDOMException(exception)) {
138
+ const domException = exception;
139
+ if ("stack" in exception) {
140
+ event = eventFromError(stackParser, exception);
141
+ const firstException = event.exception?.values?.[0];
142
+ if (attachStacktrace && syntheticException && firstException && !firstException.stacktrace) {
143
+ const frames = parseStackFrames(stackParser, syntheticException);
144
+ if (frames.length) {
145
+ firstException.stacktrace = { frames };
146
+ addExceptionMechanism(event, { synthetic: true });
147
+ }
148
+ }
267
149
  } else {
268
- const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');
150
+ const name = domException.name || (isDOMError(domException) ? "DOMError" : "DOMException");
269
151
  const message = domException.message ? `${name}: ${domException.message}` : name;
270
152
  event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
271
153
  addExceptionTypeValue(event, message);
272
154
  }
273
- if ('code' in domException) {
274
- // eslint-disable-next-line deprecation/deprecation
275
- event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };
155
+ if ("code" in domException) {
156
+ event.tags = { ...event.tags, "DOMException.code": `${domException.code}` };
276
157
  }
277
-
278
158
  return event;
279
159
  }
280
160
  if (isError(exception)) {
281
- // we have a real Error object, do nothing
282
161
  return eventFromError(stackParser, exception);
283
162
  }
284
163
  if (isPlainObject(exception) || isEvent(exception)) {
285
- // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize
286
- // it manually. This will allow us to group events based on top-level keys which is much better than creating a new
287
- // group on any key/value change.
288
164
  const objectException = exception;
289
165
  event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);
290
166
  addExceptionMechanism(event, {
291
- synthetic: true,
167
+ synthetic: true
292
168
  });
293
169
  return event;
294
170
  }
295
-
296
- // If none of previous checks were valid, then it means that it's not:
297
- // - an instance of DOMError
298
- // - an instance of DOMException
299
- // - an instance of Event
300
- // - an instance of Error
301
- // - a valid ErrorEvent (one with an error property)
302
- // - a plain Object
303
- //
304
- // So bail out and capture it as a simple message:
305
- event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);
306
- addExceptionTypeValue(event, `${exception}`, undefined);
171
+ event = eventFromString(stackParser, exception, syntheticException, attachStacktrace);
172
+ addExceptionTypeValue(event, `${exception}`, void 0);
307
173
  addExceptionMechanism(event, {
308
- synthetic: true,
174
+ synthetic: true
309
175
  });
310
-
311
176
  return event;
312
177
  }
313
-
314
- function eventFromString(
315
- stackParser,
316
- message,
317
- syntheticException,
318
- attachStacktrace,
319
- ) {
178
+ function eventFromString(stackParser, message, syntheticException, attachStacktrace) {
320
179
  const event = {};
321
-
322
180
  if (attachStacktrace && syntheticException) {
323
181
  const frames = parseStackFrames(stackParser, syntheticException);
324
182
  if (frames.length) {
325
183
  event.exception = {
326
- values: [{ value: message, stacktrace: { frames } }],
184
+ values: [{ value: message, stacktrace: { frames } }]
327
185
  };
328
186
  }
329
187
  addExceptionMechanism(event, { synthetic: true });
330
188
  }
331
-
332
189
  if (isParameterizedString(message)) {
333
190
  const { __sentry_template_string__, __sentry_template_values__ } = message;
334
-
335
191
  event.logentry = {
336
192
  message: __sentry_template_string__,
337
- params: __sentry_template_values__,
193
+ params: __sentry_template_values__
338
194
  };
339
195
  return event;
340
196
  }
341
-
342
197
  event.message = message;
343
198
  return event;
344
199
  }
345
-
346
- function getNonErrorObjectExceptionValue(
347
- exception,
348
- { isUnhandledRejection },
349
- ) {
200
+ function getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }) {
350
201
  const keys = extractExceptionKeysForMessage(exception);
351
- const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';
352
-
353
- // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before
354
- // We still want to try to get a decent message for these cases
202
+ const captureType = isUnhandledRejection ? "promise rejection" : "exception";
355
203
  if (isErrorEvent(exception)) {
356
204
  return `Event \`ErrorEvent\` captured as ${captureType} with message \`${exception.message}\``;
357
205
  }
358
-
359
206
  if (isEvent(exception)) {
360
207
  const className = getObjectClassName(exception);
361
208
  return `Event \`${className}\` (type=${exception.type}) captured as ${captureType}`;
362
209
  }
363
-
364
210
  return `Object captured as ${captureType} with keys: ${keys}`;
365
211
  }
366
-
367
212
  function getObjectClassName(obj) {
368
213
  try {
369
214
  const prototype = Object.getPrototypeOf(obj);
370
- return prototype ? prototype.constructor.name : undefined;
215
+ return prototype ? prototype.constructor.name : void 0;
371
216
  } catch {
372
- // ignore errors here
373
217
  }
374
218
  }
375
-
376
- /** If a plain object has a property that is an `Error`, return this error. */
377
219
  function getErrorPropertyFromObject(obj) {
378
220
  return Object.values(obj).find((v) => v instanceof Error);
379
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eventbuilder.js","sources":["../../../../src/eventbuilder.ts"],"sourcesContent":["import type {\n Event,\n EventHint,\n Exception,\n ParameterizedString,\n SeverityLevel,\n StackFrame,\n StackParser,\n} from '@sentry/core/browser';\nimport {\n _INTERNAL_enhanceErrorWithSentryInfo,\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n getClient,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isParameterizedString,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/core/browser';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: extractType(ex),\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\nfunction eventFromPlainObject(\n stackParser: StackParser,\n exception: Record<string, unknown>,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const client = getClient();\n const normalizeDepth = client?.getOptions().normalizeDepth;\n\n // If we can, we extract an exception from the object properties\n const errorFromProp = getErrorPropertyFromObject(exception);\n\n const extra = {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n };\n\n if (errorFromProp) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, errorFromProp)],\n },\n extra,\n };\n }\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n } as Exception,\n ],\n },\n extra,\n } satisfies Event;\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0]!.stacktrace = { frames };\n }\n }\n\n return event;\n}\n\nfunction eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const skipLines = getSkipFirstStackStringLines(ex);\n const framesToPop = getPopFirstTopFrames(ex);\n\n try {\n return stackParser(stacktrace, skipLines, framesToPop);\n } catch {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\n/**\n * Certain known React errors contain links that would be falsely\n * parsed as frames. This function check for these errors and\n * returns number of the stack string lines to skip.\n */\nfunction getSkipFirstStackStringLines(ex: Error): number {\n if (ex && reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n\n return 0;\n}\n\n/**\n * If error has `framesToPop` property, it means that the\n * creator tells us the first x frames will be useless\n * and should be discarded. Typically error from wrapper function\n * which don't point to the actual location in the developer's code.\n *\n * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46\n */\nfunction getPopFirstTopFrames(ex: Error & { framesToPop?: unknown }): number {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n return 0;\n}\n\n// https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Exception\n// @ts-expect-error - WebAssembly.Exception is a valid class\nfunction isWebAssemblyException(exception: unknown): exception is WebAssembly.Exception {\n // Check for support\n // @ts-expect-error - WebAssembly.Exception is a valid class\n // oxlint-disable-next-line typescript/prefer-optional-chain\n if (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Exception !== 'undefined') {\n // @ts-expect-error - WebAssembly.Exception is a valid class\n return exception instanceof WebAssembly.Exception;\n } else {\n return false;\n }\n}\n\n/**\n * Extracts from errors what we use as the exception `type` in error events.\n *\n * Usually, this is the `name` property on Error objects but WASM errors need to be treated differently.\n */\nexport function extractType(ex: Error & { message: { error?: Error } }): string | undefined {\n const name = ex?.name;\n\n // The name for WebAssembly.Exception Errors needs to be extracted differently.\n // Context: https://github.com/getsentry/sentry-javascript/issues/13787\n if (!name && isWebAssemblyException(ex)) {\n // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;\n return hasTypeInMessage ? ex.message[0] : 'WebAssembly.Exception';\n }\n\n return name;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nexport function extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex?.message;\n\n if (isWebAssemblyException(ex)) {\n // For Node 18, Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n if (Array.isArray(ex.message) && ex.message.length == 2) {\n return ex.message[1];\n }\n return 'wasm exception';\n }\n\n if (!message) {\n return 'No error message';\n }\n\n if (message.error && typeof message.error.message === 'string') {\n return _INTERNAL_enhanceErrorWithSentryInfo(message.error);\n }\n\n return _INTERNAL_enhanceErrorWithSentryInfo(ex);\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = hint?.syntheticException || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint?.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = hint?.syntheticException || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint?.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\nfunction eventFromString(\n stackParser: StackParser,\n message: ParameterizedString,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n addExceptionMechanism(event, { synthetic: true });\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception: Record<string, unknown>,\n { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: Prototype | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj: Record<string, unknown>): Error | undefined {\n return Object.values(obj).find((v): v is Error => v instanceof Error);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventbuilder.js","sources":["../../../../src/eventbuilder.ts"],"sourcesContent":["import type {\n Event,\n EventHint,\n Exception,\n ParameterizedString,\n SeverityLevel,\n StackFrame,\n StackParser,\n} from '@sentry/core/browser';\nimport {\n _INTERNAL_enhanceErrorWithSentryInfo,\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n getClient,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isParameterizedString,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/core/browser';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: extractType(ex),\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\nfunction eventFromPlainObject(\n stackParser: StackParser,\n exception: Record<string, unknown>,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const client = getClient();\n const normalizeDepth = client?.getOptions().normalizeDepth;\n\n // If we can, we extract an exception from the object properties\n const errorFromProp = getErrorPropertyFromObject(exception);\n\n const extra = {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n };\n\n if (errorFromProp) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, errorFromProp)],\n },\n extra,\n };\n }\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n } as Exception,\n ],\n },\n extra,\n } satisfies Event;\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0]!.stacktrace = { frames };\n }\n }\n\n return event;\n}\n\nfunction eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const skipLines = getSkipFirstStackStringLines(ex);\n const framesToPop = getPopFirstTopFrames(ex);\n\n try {\n return stackParser(stacktrace, skipLines, framesToPop);\n } catch {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\n/**\n * Certain known React errors contain links that would be falsely\n * parsed as frames. This function check for these errors and\n * returns number of the stack string lines to skip.\n */\nfunction getSkipFirstStackStringLines(ex: Error): number {\n if (ex && reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n\n return 0;\n}\n\n/**\n * If error has `framesToPop` property, it means that the\n * creator tells us the first x frames will be useless\n * and should be discarded. Typically error from wrapper function\n * which don't point to the actual location in the developer's code.\n *\n * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46\n */\nfunction getPopFirstTopFrames(ex: Error & { framesToPop?: unknown }): number {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n return 0;\n}\n\n// https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Exception\n// @ts-expect-error - WebAssembly.Exception is a valid class\nfunction isWebAssemblyException(exception: unknown): exception is WebAssembly.Exception {\n // Check for support\n // @ts-expect-error - WebAssembly.Exception is a valid class\n // oxlint-disable-next-line typescript/prefer-optional-chain\n if (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Exception !== 'undefined') {\n // @ts-expect-error - WebAssembly.Exception is a valid class\n return exception instanceof WebAssembly.Exception;\n } else {\n return false;\n }\n}\n\n/**\n * Extracts from errors what we use as the exception `type` in error events.\n *\n * Usually, this is the `name` property on Error objects but WASM errors need to be treated differently.\n */\nexport function extractType(ex: Error & { message: { error?: Error } }): string | undefined {\n const name = ex?.name;\n\n // The name for WebAssembly.Exception Errors needs to be extracted differently.\n // Context: https://github.com/getsentry/sentry-javascript/issues/13787\n if (!name && isWebAssemblyException(ex)) {\n // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;\n return hasTypeInMessage ? ex.message[0] : 'WebAssembly.Exception';\n }\n\n return name;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nexport function extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex?.message;\n\n if (isWebAssemblyException(ex)) {\n // For Node 18, Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n if (Array.isArray(ex.message) && ex.message.length == 2) {\n return ex.message[1];\n }\n return 'wasm exception';\n }\n\n if (!message) {\n return 'No error message';\n }\n\n if (message.error && typeof message.error.message === 'string') {\n return _INTERNAL_enhanceErrorWithSentryInfo(message.error);\n }\n\n return _INTERNAL_enhanceErrorWithSentryInfo(ex);\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = hint?.syntheticException || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint?.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = hint?.syntheticException || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint?.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n\n const firstException = event.exception?.values?.[0];\n if (attachStacktrace && syntheticException && firstException && !firstException.stacktrace) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n firstException.stacktrace = { frames };\n addExceptionMechanism(event, { synthetic: true });\n }\n }\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\nfunction eventFromString(\n stackParser: StackParser,\n message: ParameterizedString,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n addExceptionMechanism(event, { synthetic: true });\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception: Record<string, unknown>,\n { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: Prototype | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj: Record<string, unknown>): Error | undefined {\n return Object.values(obj).find((v): v is Error => v instanceof Error);\n}\n"],"names":[],"mappings":";;AA+BO,SAAS,kBAAA,CAAmB,aAA0B,EAAA,EAAsB;AAEjF,EAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,WAAA,EAAa,EAAE,CAAA;AAE/C,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,IAAA,EAAM,YAAY,EAAE,CAAA;AAAA,IACpB,KAAA,EAAO,eAAe,EAAE;AAAA,GAC1B;AAEA,EAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,IAAA,SAAA,CAAU,UAAA,GAAa,EAAE,MAAA,EAAO;AAAA,EAClC;AAEA,EAAA,IAAI,SAAA,CAAU,IAAA,KAAS,MAAA,IAAa,SAAA,CAAU,UAAU,EAAA,EAAI;AAC1D,IAAA,SAAA,CAAU,KAAA,GAAQ,4BAAA;AAAA,EACpB;AAEA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,oBAAA,CACP,WAAA,EACA,SAAA,EACA,kBAAA,EACA,oBAAA,EACO;AACP,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,cAAA,GAAiB,MAAA,EAAQ,UAAA,EAAW,CAAE,cAAA;AAG5C,EAAA,MAAM,aAAA,GAAgB,2BAA2B,SAAS,CAAA;AAE1D,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,cAAA,EAAgB,eAAA,CAAgB,SAAA,EAAW,cAAc;AAAA,GAC3D;AAEA,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,OAAO;AAAA,MACL,SAAA,EAAW;AAAA,QACT,MAAA,EAAQ,CAAC,kBAAA,CAAmB,WAAA,EAAa,aAAa,CAAC;AAAA,OACzD;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,SAAA,EAAW;AAAA,MACT,MAAA,EAAQ;AAAA,QACN;AAAA,UACE,IAAA,EAAM,QAAQ,SAAS,CAAA,GAAI,UAAU,WAAA,CAAY,IAAA,GAAO,uBAAuB,oBAAA,GAAuB,OAAA;AAAA,UACtG,KAAA,EAAO,+BAAA,CAAgC,SAAA,EAAW,EAAE,sBAAsB;AAAA;AAC5E;AACF,KACF;AAAA,IACA;AAAA,GACF;AAEA,EAAA,IAAI,kBAAA,EAAoB;AACtB,IAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,WAAA,EAAa,kBAAkB,CAAA;AAC/D,IAAA,IAAI,OAAO,MAAA,EAAQ;AAGjB,MAAA,KAAA,CAAM,UAAU,MAAA,CAAO,CAAC,CAAA,CAAG,UAAA,GAAa,EAAE,MAAA,EAAO;AAAA,IACnD;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,cAAA,CAAe,aAA0B,EAAA,EAAkB;AAClE,EAAA,OAAO;AAAA,IACL,SAAA,EAAW;AAAA,MACT,MAAA,EAAQ,CAAC,kBAAA,CAAmB,WAAA,EAAa,EAAE,CAAC;AAAA;AAC9C,GACF;AACF;AAGA,SAAS,gBAAA,CACP,aACA,EAAA,EACc;AAId,EAAA,MAAM,UAAA,GAAa,EAAA,CAAG,UAAA,IAAc,EAAA,CAAG,KAAA,IAAS,EAAA;AAEhD,EAAA,MAAM,SAAA,GAAY,6BAA6B,EAAE,CAAA;AACjD,EAAA,MAAM,WAAA,GAAc,qBAAqB,EAAE,CAAA;AAE3C,EAAA,IAAI;AACF,IAAA,OAAO,WAAA,CAAY,UAAA,EAAY,SAAA,EAAW,WAAW,CAAA;AAAA,EACvD,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,EAAC;AACV;AAGA,MAAM,mBAAA,GAAsB,6BAAA;AAO5B,SAAS,6BAA6B,EAAA,EAAmB;AACvD,EAAA,IAAI,EAAA,IAAM,mBAAA,CAAoB,IAAA,CAAK,EAAA,CAAG,OAAO,CAAA,EAAG;AAC9C,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,OAAO,CAAA;AACT;AAUA,SAAS,qBAAqB,EAAA,EAA+C;AAC3E,EAAA,IAAI,OAAO,EAAA,CAAG,WAAA,KAAgB,QAAA,EAAU;AACtC,IAAA,OAAO,EAAA,CAAG,WAAA;AAAA,EACZ;AAEA,EAAA,OAAO,CAAA;AACT;AAIA,SAAS,uBAAuB,SAAA,EAAwD;AAItF,EAAA,IAAI,OAAO,WAAA,KAAgB,WAAA,IAAe,OAAO,WAAA,CAAY,cAAc,WAAA,EAAa;AAEtF,IAAA,OAAO,qBAAqB,WAAA,CAAY,SAAA;AAAA,EAC1C,CAAA,MAAO;AACL,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAOO,SAAS,YAAY,EAAA,EAAgE;AAC1F,EAAA,MAAM,OAAO,EAAA,EAAI,IAAA;AAIjB,EAAA,IAAI,CAAC,IAAA,IAAQ,sBAAA,CAAuB,EAAE,CAAA,EAAG;AAEvC,IAAA,MAAM,gBAAA,GAAmB,EAAA,CAAG,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,GAAG,OAAO,CAAA,IAAK,EAAA,CAAG,OAAA,CAAQ,MAAA,IAAU,CAAA;AACzF,IAAA,OAAO,gBAAA,GAAmB,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAA,GAAI,uBAAA;AAAA,EAC5C;AAEA,EAAA,OAAO,IAAA;AACT;AAOO,SAAS,eAAe,EAAA,EAAoD;AACjF,EAAA,MAAM,UAAU,EAAA,EAAI,OAAA;AAEpB,EAAA,IAAI,sBAAA,CAAuB,EAAE,CAAA,EAAG;AAE9B,IAAA,IAAI,KAAA,CAAM,QAAQ,EAAA,CAAG,OAAO,KAAK,EAAA,CAAG,OAAA,CAAQ,UAAU,CAAA,EAAG;AACvD,MAAA,OAAO,EAAA,CAAG,QAAQ,CAAC,CAAA;AAAA,IACrB;AACA,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,kBAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAQ,KAAA,IAAS,OAAO,OAAA,CAAQ,KAAA,CAAM,YAAY,QAAA,EAAU;AAC9D,IAAA,OAAO,oCAAA,CAAqC,QAAQ,KAAK,CAAA;AAAA,EAC3D;AAEA,EAAA,OAAO,qCAAqC,EAAE,CAAA;AAChD;AAMO,SAAS,kBAAA,CACd,WAAA,EACA,SAAA,EACA,IAAA,EACA,gBAAA,EACoB;AACpB,EAAA,MAAM,kBAAA,GAAqB,MAAM,kBAAA,IAAsB,MAAA;AACvD,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,WAAA,EAAa,SAAA,EAAW,oBAAoB,gBAAgB,CAAA;AAChG,EAAA,qBAAA,CAAsB,KAAK,CAAA;AAC3B,EAAA,KAAA,CAAM,KAAA,GAAQ,OAAA;AACd,EAAA,IAAI,MAAM,QAAA,EAAU;AAClB,IAAA,KAAA,CAAM,WAAW,IAAA,CAAK,QAAA;AAAA,EACxB;AACA,EAAA,OAAO,oBAAoB,KAAK,CAAA;AAClC;AAMO,SAAS,iBACd,WAAA,EACA,OAAA,EACA,KAAA,GAAuB,MAAA,EACvB,MACA,gBAAA,EACoB;AACpB,EAAA,MAAM,kBAAA,GAAqB,MAAM,kBAAA,IAAsB,MAAA;AACvD,EAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,WAAA,EAAa,OAAA,EAAS,oBAAoB,gBAAgB,CAAA;AACxF,EAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AACd,EAAA,IAAI,MAAM,QAAA,EAAU;AAClB,IAAA,KAAA,CAAM,WAAW,IAAA,CAAK,QAAA;AAAA,EACxB;AACA,EAAA,OAAO,oBAAoB,KAAK,CAAA;AAClC;AAKO,SAAS,qBAAA,CACd,WAAA,EACA,SAAA,EACA,kBAAA,EACA,kBACA,oBAAA,EACO;AACP,EAAA,IAAI,KAAA;AAEJ,EAAA,IAAI,YAAA,CAAa,SAAuB,CAAA,IAAM,SAAA,CAAyB,KAAA,EAAO;AAE5E,IAAA,MAAM,UAAA,GAAa,SAAA;AACnB,IAAA,OAAO,cAAA,CAAe,WAAA,EAAa,UAAA,CAAW,KAAc,CAAA;AAAA,EAC9D;AASA,EAAA,IAAI,UAAA,CAAW,SAAS,CAAA,IAAK,cAAA,CAAe,SAAyB,CAAA,EAAG;AACtE,IAAA,MAAM,YAAA,GAAe,SAAA;AAErB,IAAA,IAAI,WAAY,SAAA,EAAqB;AACnC,MAAA,KAAA,GAAQ,cAAA,CAAe,aAAa,SAAkB,CAAA;AAEtD,MAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,SAAA,EAAW,MAAA,GAAS,CAAC,CAAA;AAClD,MAAA,IAAI,gBAAA,IAAoB,kBAAA,IAAsB,cAAA,IAAkB,CAAC,eAAe,UAAA,EAAY;AAC1F,QAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,WAAA,EAAa,kBAAkB,CAAA;AAC/D,QAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,UAAA,cAAA,CAAe,UAAA,GAAa,EAAE,MAAA,EAAO;AACrC,UAAA,qBAAA,CAAsB,KAAA,EAAO,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAAA,QAClD;AAAA,MACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,OAAO,YAAA,CAAa,IAAA,KAAS,UAAA,CAAW,YAAY,IAAI,UAAA,GAAa,cAAA,CAAA;AAC3E,MAAA,MAAM,OAAA,GAAU,aAAa,OAAA,GAAU,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,YAAA,CAAa,OAAO,CAAA,CAAA,GAAK,IAAA;AAC5E,MAAA,KAAA,GAAQ,eAAA,CAAgB,WAAA,EAAa,OAAA,EAAS,kBAAA,EAAoB,gBAAgB,CAAA;AAClF,MAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,IACtC;AACA,IAAA,IAAI,UAAU,YAAA,EAAc;AAE1B,MAAA,KAAA,CAAM,IAAA,GAAO,EAAE,GAAG,KAAA,CAAM,MAAM,mBAAA,EAAqB,CAAA,EAAG,YAAA,CAAa,IAAI,CAAA,CAAA,EAAG;AAAA,IAC5E;AAEA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AAEtB,IAAA,OAAO,cAAA,CAAe,aAAa,SAAS,CAAA;AAAA,EAC9C;AACA,EAAA,IAAI,aAAA,CAAc,SAAS,CAAA,IAAK,OAAA,CAAQ,SAAS,CAAA,EAAG;AAIlD,IAAA,MAAM,eAAA,GAAkB,SAAA;AACxB,IAAA,KAAA,GAAQ,oBAAA,CAAqB,WAAA,EAAa,eAAA,EAAiB,kBAAA,EAAoB,oBAAoB,CAAA;AACnG,IAAA,qBAAA,CAAsB,KAAA,EAAO;AAAA,MAC3B,SAAA,EAAW;AAAA,KACZ,CAAA;AACD,IAAA,OAAO,KAAA;AAAA,EACT;AAWA,EAAA,KAAA,GAAQ,eAAA,CAAgB,WAAA,EAAa,SAAA,EAAqB,kBAAA,EAAoB,gBAAgB,CAAA;AAC9F,EAAA,qBAAA,CAAsB,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,MAAS,CAAA;AACtD,EAAA,qBAAA,CAAsB,KAAA,EAAO;AAAA,IAC3B,SAAA,EAAW;AAAA,GACZ,CAAA;AAED,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,eAAA,CACP,WAAA,EACA,OAAA,EACA,kBAAA,EACA,gBAAA,EACO;AACP,EAAA,MAAM,QAAe,EAAC;AAEtB,EAAA,IAAI,oBAAoB,kBAAA,EAAoB;AAC1C,IAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,WAAA,EAAa,kBAAkB,CAAA;AAC/D,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAA,KAAA,CAAM,SAAA,GAAY;AAAA,QAChB,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,SAAS,UAAA,EAAY,EAAE,MAAA,EAAO,EAAG;AAAA,OACrD;AAAA,IACF;AACA,IAAA,qBAAA,CAAsB,KAAA,EAAO,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAAA,EAClD;AAEA,EAAA,IAAI,qBAAA,CAAsB,OAAO,CAAA,EAAG;AAClC,IAAA,MAAM,EAAE,0BAAA,EAA4B,0BAAA,EAA2B,GAAI,OAAA;AAEnE,IAAA,KAAA,CAAM,QAAA,GAAW;AAAA,MACf,OAAA,EAAS,0BAAA;AAAA,MACT,MAAA,EAAQ;AAAA,KACV;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,KAAA,CAAM,OAAA,GAAU,OAAA;AAChB,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,+BAAA,CACP,SAAA,EACA,EAAE,oBAAA,EAAqB,EACf;AACR,EAAA,MAAM,IAAA,GAAO,+BAA+B,SAAS,CAAA;AACrD,EAAA,MAAM,WAAA,GAAc,uBAAuB,mBAAA,GAAsB,WAAA;AAIjE,EAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,IAAA,OAAO,CAAA,iCAAA,EAAoC,WAAW,CAAA,gBAAA,EAAmB,SAAA,CAAU,OAAO,CAAA,EAAA,CAAA;AAAA,EAC5F;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,IAAA,MAAM,SAAA,GAAY,mBAAmB,SAAS,CAAA;AAC9C,IAAA,OAAO,WAAW,SAAS,CAAA,SAAA,EAAY,SAAA,CAAU,IAAI,iBAAiB,WAAW,CAAA,CAAA;AAAA,EACnF;AAEA,EAAA,OAAO,CAAA,mBAAA,EAAsB,WAAW,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA;AAC7D;AAEA,SAAS,mBAAmB,GAAA,EAAyC;AACnE,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAA8B,MAAA,CAAO,cAAA,CAAe,GAAG,CAAA;AAC7D,IAAA,OAAO,SAAA,GAAY,SAAA,CAAU,WAAA,CAAY,IAAA,GAAO,KAAA,CAAA;AAAA,EAClD,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;AAGA,SAAS,2BAA2B,GAAA,EAAiD;AACnF,EAAA,OAAO,MAAA,CAAO,OAAO,GAAG,CAAA,CAAE,KAAK,CAAC,CAAA,KAAkB,aAAa,KAAK,CAAA;AACtE;;;;"}
@@ -1,12 +1,8 @@
1
1
  import { buildFeedbackIntegration } from '@sentry-internal/feedback';
2
2
  import { lazyLoadIntegration } from './utils/lazyLoadIntegration.js';
3
3
 
4
- /**
5
- * An integration to add user feedback to your application,
6
- * while loading most of the code lazily only when it's needed.
7
- */
8
4
  const feedbackAsyncIntegration = buildFeedbackIntegration({
9
- lazyLoadIntegration,
5
+ lazyLoadIntegration
10
6
  });
11
7
 
12
8
  export { feedbackAsyncIntegration };
@@ -1 +1 @@
1
- {"version":3,"file":"feedbackAsync.js","sources":["../../../../src/feedbackAsync.ts"],"sourcesContent":["import { buildFeedbackIntegration } from '@sentry-internal/feedback';\nimport { lazyLoadIntegration } from './utils/lazyLoadIntegration';\n\n/**\n * An integration to add user feedback to your application,\n * while loading most of the code lazily only when it's needed.\n */\nexport const feedbackAsyncIntegration: ReturnType<typeof buildFeedbackIntegration> = buildFeedbackIntegration({\n lazyLoadIntegration,\n});\n"],"names":[],"mappings":";;;AAGA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,GAAgD,wBAAwB,CAAC;AAC9G,EAAE,mBAAmB;AACrB,CAAC;;;;"}
1
+ {"version":3,"file":"feedbackAsync.js","sources":["../../../../src/feedbackAsync.ts"],"sourcesContent":["import { buildFeedbackIntegration } from '@sentry-internal/feedback';\nimport { lazyLoadIntegration } from './utils/lazyLoadIntegration';\n\n/**\n * An integration to add user feedback to your application,\n * while loading most of the code lazily only when it's needed.\n */\nexport const feedbackAsyncIntegration: ReturnType<typeof buildFeedbackIntegration> = buildFeedbackIntegration({\n lazyLoadIntegration,\n});\n"],"names":[],"mappings":";;;AAOO,MAAM,2BAAwE,wBAAA,CAAyB;AAAA,EAC5G;AACF,CAAC;;;;"}
@@ -1,9 +1,8 @@
1
1
  import { buildFeedbackIntegration, feedbackScreenshotIntegration, feedbackModalIntegration } from '@sentry-internal/feedback';
2
2
 
3
- /** Add a widget to capture user feedback to your application. */
4
3
  const feedbackSyncIntegration = buildFeedbackIntegration({
5
4
  getModalIntegration: () => feedbackModalIntegration,
6
- getScreenshotIntegration: () => feedbackScreenshotIntegration,
5
+ getScreenshotIntegration: () => feedbackScreenshotIntegration
7
6
  });
8
7
 
9
8
  export { feedbackSyncIntegration };
@@ -1 +1 @@
1
- {"version":3,"file":"feedbackSync.js","sources":["../../../../src/feedbackSync.ts"],"sourcesContent":["import {\n buildFeedbackIntegration,\n feedbackModalIntegration,\n feedbackScreenshotIntegration,\n} from '@sentry-internal/feedback';\n\n/** Add a widget to capture user feedback to your application. */\nexport const feedbackSyncIntegration: ReturnType<typeof buildFeedbackIntegration> = buildFeedbackIntegration({\n getModalIntegration: () => feedbackModalIntegration,\n getScreenshotIntegration: () => feedbackScreenshotIntegration,\n});\n"],"names":[],"mappings":";;AAMA;AACO,MAAM,uBAAuB,GAAgD,wBAAwB,CAAC;AAC7G,EAAE,mBAAmB,EAAE,MAAM,wBAAwB;AACrD,EAAE,wBAAwB,EAAE,MAAM,6BAA6B;AAC/D,CAAC;;;;"}
1
+ {"version":3,"file":"feedbackSync.js","sources":["../../../../src/feedbackSync.ts"],"sourcesContent":["import {\n buildFeedbackIntegration,\n feedbackModalIntegration,\n feedbackScreenshotIntegration,\n} from '@sentry-internal/feedback';\n\n/** Add a widget to capture user feedback to your application. */\nexport const feedbackSyncIntegration: ReturnType<typeof buildFeedbackIntegration> = buildFeedbackIntegration({\n getModalIntegration: () => feedbackModalIntegration,\n getScreenshotIntegration: () => feedbackScreenshotIntegration,\n});\n"],"names":[],"mappings":";;AAOO,MAAM,0BAAuE,wBAAA,CAAyB;AAAA,EAC3G,qBAAqB,MAAM,wBAAA;AAAA,EAC3B,0BAA0B,MAAM;AAClC,CAAC;;;;"}