@sentry/browser 10.22.0 → 10.25.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 (457) hide show
  1. package/build/npm/cjs/{client.js → dev/client.js} +16 -3
  2. package/build/npm/cjs/dev/client.js.map +1 -0
  3. package/build/npm/cjs/dev/debug-build.js.map +1 -0
  4. package/build/npm/cjs/dev/diagnose-sdk.js.map +1 -0
  5. package/build/npm/cjs/dev/eventbuilder.js.map +1 -0
  6. package/build/npm/cjs/dev/feedbackAsync.js.map +1 -0
  7. package/build/npm/cjs/dev/feedbackSync.js.map +1 -0
  8. package/build/npm/cjs/dev/helpers.js.map +1 -0
  9. package/build/npm/cjs/dev/integrations/breadcrumbs.js.map +1 -0
  10. package/build/npm/cjs/dev/integrations/browserapierrors.js.map +1 -0
  11. package/build/npm/cjs/dev/integrations/browsersession.js.map +1 -0
  12. package/build/npm/cjs/dev/integrations/contextlines.js.map +1 -0
  13. package/build/npm/cjs/dev/integrations/featureFlags/growthbook/integration.js.map +1 -0
  14. package/build/npm/cjs/dev/integrations/featureFlags/launchdarkly/integration.js.map +1 -0
  15. package/build/npm/cjs/dev/integrations/featureFlags/openfeature/integration.js.map +1 -0
  16. package/build/npm/cjs/dev/integrations/featureFlags/statsig/integration.js.map +1 -0
  17. package/build/npm/cjs/dev/integrations/featureFlags/unleash/integration.js.map +1 -0
  18. package/build/npm/cjs/{integrations → dev/integrations}/globalhandlers.js +6 -1
  19. package/build/npm/cjs/dev/integrations/globalhandlers.js.map +1 -0
  20. package/build/npm/cjs/dev/integrations/graphqlClient.js.map +1 -0
  21. package/build/npm/cjs/dev/integrations/httpclient.js.map +1 -0
  22. package/build/npm/cjs/dev/integrations/httpcontext.js.map +1 -0
  23. package/build/npm/cjs/dev/integrations/linkederrors.js.map +1 -0
  24. package/build/npm/cjs/dev/integrations/reportingobserver.js.map +1 -0
  25. package/build/npm/cjs/dev/integrations/spotlight.js.map +1 -0
  26. package/build/npm/cjs/{integrations → dev/integrations}/webWorker.js +119 -17
  27. package/build/npm/cjs/dev/integrations/webWorker.js.map +1 -0
  28. package/build/npm/cjs/dev/profiling/integration.js.map +1 -0
  29. package/build/npm/cjs/dev/profiling/lifecycleMode/traceLifecycleProfiler.js.map +1 -0
  30. package/build/npm/cjs/dev/profiling/startProfileForSpan.js.map +1 -0
  31. package/build/npm/cjs/dev/profiling/utils.js.map +1 -0
  32. package/build/npm/cjs/dev/report-dialog.js.map +1 -0
  33. package/build/npm/cjs/dev/sdk.js +133 -0
  34. package/build/npm/cjs/dev/sdk.js.map +1 -0
  35. package/build/npm/cjs/dev/stack-parsers.js.map +1 -0
  36. package/build/npm/cjs/dev/tracing/backgroundtab.js.map +1 -0
  37. package/build/npm/cjs/dev/tracing/browserTracingIntegration.js.map +1 -0
  38. package/build/npm/cjs/{tracing → dev/tracing}/linkedTraces.js +1 -0
  39. package/build/npm/cjs/dev/tracing/linkedTraces.js.map +1 -0
  40. package/build/npm/cjs/dev/tracing/reportPageLoaded.js.map +1 -0
  41. package/build/npm/cjs/dev/tracing/request.js.map +1 -0
  42. package/build/npm/cjs/dev/tracing/setActiveSpan.js.map +1 -0
  43. package/build/npm/cjs/dev/tracing/utils.js.map +1 -0
  44. package/build/npm/cjs/{transports → dev/transports}/fetch.js +7 -1
  45. package/build/npm/cjs/dev/transports/fetch.js.map +1 -0
  46. package/build/npm/cjs/dev/transports/offline.js.map +1 -0
  47. package/build/npm/cjs/dev/userfeedback.js.map +1 -0
  48. package/build/npm/cjs/dev/utils/detectBrowserExtension.js.map +1 -0
  49. package/build/npm/cjs/dev/utils/lazyLoadIntegration.js.map +1 -0
  50. package/build/npm/cjs/prod/client.js +125 -0
  51. package/build/npm/cjs/prod/client.js.map +1 -0
  52. package/build/npm/cjs/prod/debug-build.js +11 -0
  53. package/build/npm/cjs/prod/debug-build.js.map +1 -0
  54. package/build/npm/cjs/prod/diagnose-sdk.js +51 -0
  55. package/build/npm/cjs/prod/diagnose-sdk.js.map +1 -0
  56. package/build/npm/cjs/prod/eventbuilder.js +397 -0
  57. package/build/npm/cjs/prod/eventbuilder.js.map +1 -0
  58. package/build/npm/cjs/prod/feedbackAsync.js +15 -0
  59. package/build/npm/cjs/prod/feedbackAsync.js.map +1 -0
  60. package/build/npm/cjs/prod/feedbackSync.js +12 -0
  61. package/build/npm/cjs/prod/feedbackSync.js.map +1 -0
  62. package/build/npm/cjs/prod/helpers.js +185 -0
  63. package/build/npm/cjs/prod/helpers.js.map +1 -0
  64. package/build/npm/cjs/prod/index.js +179 -0
  65. package/build/npm/cjs/prod/index.js.map +1 -0
  66. package/build/npm/cjs/prod/integrations/breadcrumbs.js +341 -0
  67. package/build/npm/cjs/prod/integrations/breadcrumbs.js.map +1 -0
  68. package/build/npm/cjs/prod/integrations/browserapierrors.js +259 -0
  69. package/build/npm/cjs/prod/integrations/browserapierrors.js.map +1 -0
  70. package/build/npm/cjs/prod/integrations/browsersession.js +44 -0
  71. package/build/npm/cjs/prod/integrations/browsersession.js.map +1 -0
  72. package/build/npm/cjs/prod/integrations/contextlines.js +89 -0
  73. package/build/npm/cjs/prod/integrations/contextlines.js.map +1 -0
  74. package/build/npm/cjs/prod/integrations/featureFlags/growthbook/integration.js +29 -0
  75. package/build/npm/cjs/prod/integrations/featureFlags/growthbook/integration.js.map +1 -0
  76. package/build/npm/cjs/prod/integrations/featureFlags/launchdarkly/integration.js +55 -0
  77. package/build/npm/cjs/prod/integrations/featureFlags/launchdarkly/integration.js.map +1 -0
  78. package/build/npm/cjs/prod/integrations/featureFlags/openfeature/integration.js +38 -0
  79. package/build/npm/cjs/prod/integrations/featureFlags/openfeature/integration.js.map +1 -0
  80. package/build/npm/cjs/prod/integrations/featureFlags/statsig/integration.js +48 -0
  81. package/build/npm/cjs/prod/integrations/featureFlags/statsig/integration.js.map +1 -0
  82. package/build/npm/cjs/prod/integrations/featureFlags/unleash/integration.js +74 -0
  83. package/build/npm/cjs/prod/integrations/featureFlags/unleash/integration.js.map +1 -0
  84. package/build/npm/cjs/prod/integrations/globalhandlers.js +210 -0
  85. package/build/npm/cjs/prod/integrations/globalhandlers.js.map +1 -0
  86. package/build/npm/cjs/prod/integrations/graphqlClient.js +180 -0
  87. package/build/npm/cjs/prod/integrations/graphqlClient.js.map +1 -0
  88. package/build/npm/cjs/prod/integrations/httpclient.js +395 -0
  89. package/build/npm/cjs/prod/integrations/httpclient.js.map +1 -0
  90. package/build/npm/cjs/prod/integrations/httpcontext.js +35 -0
  91. package/build/npm/cjs/prod/integrations/httpcontext.js.map +1 -0
  92. package/build/npm/cjs/prod/integrations/linkederrors.js +39 -0
  93. package/build/npm/cjs/prod/integrations/linkederrors.js.map +1 -0
  94. package/build/npm/cjs/prod/integrations/reportingobserver.js +85 -0
  95. package/build/npm/cjs/prod/integrations/reportingobserver.js.map +1 -0
  96. package/build/npm/cjs/prod/integrations/spotlight.js +85 -0
  97. package/build/npm/cjs/prod/integrations/spotlight.js.map +1 -0
  98. package/build/npm/cjs/prod/integrations/webWorker.js +251 -0
  99. package/build/npm/cjs/prod/integrations/webWorker.js.map +1 -0
  100. package/build/npm/cjs/prod/profiling/integration.js +150 -0
  101. package/build/npm/cjs/prod/profiling/integration.js.map +1 -0
  102. package/build/npm/cjs/prod/profiling/lifecycleMode/traceLifecycleProfiler.js +343 -0
  103. package/build/npm/cjs/prod/profiling/lifecycleMode/traceLifecycleProfiler.js.map +1 -0
  104. package/build/npm/cjs/prod/profiling/startProfileForSpan.js +144 -0
  105. package/build/npm/cjs/prod/profiling/startProfileForSpan.js.map +1 -0
  106. package/build/npm/cjs/prod/profiling/utils.js +786 -0
  107. package/build/npm/cjs/prod/profiling/utils.js.map +1 -0
  108. package/build/npm/cjs/prod/report-dialog.js +68 -0
  109. package/build/npm/cjs/prod/report-dialog.js.map +1 -0
  110. package/build/npm/cjs/{sdk.js → prod/sdk.js} +5 -2
  111. package/build/npm/cjs/prod/sdk.js.map +1 -0
  112. package/build/npm/cjs/prod/stack-parsers.js +202 -0
  113. package/build/npm/cjs/prod/stack-parsers.js.map +1 -0
  114. package/build/npm/cjs/prod/tracing/backgroundtab.js +46 -0
  115. package/build/npm/cjs/prod/tracing/backgroundtab.js.map +1 -0
  116. package/build/npm/cjs/prod/tracing/browserTracingIntegration.js +577 -0
  117. package/build/npm/cjs/prod/tracing/browserTracingIntegration.js.map +1 -0
  118. package/build/npm/cjs/prod/tracing/linkedTraces.js +227 -0
  119. package/build/npm/cjs/prod/tracing/linkedTraces.js.map +1 -0
  120. package/build/npm/cjs/prod/tracing/reportPageLoaded.js +18 -0
  121. package/build/npm/cjs/prod/tracing/reportPageLoaded.js.map +1 -0
  122. package/build/npm/cjs/prod/tracing/request.js +342 -0
  123. package/build/npm/cjs/prod/tracing/request.js.map +1 -0
  124. package/build/npm/cjs/prod/tracing/setActiveSpan.js +68 -0
  125. package/build/npm/cjs/prod/tracing/setActiveSpan.js.map +1 -0
  126. package/build/npm/cjs/prod/tracing/utils.js +54 -0
  127. package/build/npm/cjs/prod/tracing/utils.js.map +1 -0
  128. package/build/npm/cjs/prod/transports/fetch.js +71 -0
  129. package/build/npm/cjs/prod/transports/fetch.js.map +1 -0
  130. package/build/npm/cjs/prod/transports/offline.js +168 -0
  131. package/build/npm/cjs/prod/transports/offline.js.map +1 -0
  132. package/build/npm/cjs/prod/userfeedback.js +42 -0
  133. package/build/npm/cjs/prod/userfeedback.js.map +1 -0
  134. package/build/npm/cjs/prod/utils/detectBrowserExtension.js +59 -0
  135. package/build/npm/cjs/prod/utils/detectBrowserExtension.js.map +1 -0
  136. package/build/npm/cjs/prod/utils/lazyLoadIntegration.js +106 -0
  137. package/build/npm/cjs/prod/utils/lazyLoadIntegration.js.map +1 -0
  138. package/build/npm/esm/{client.js → dev/client.js} +16 -3
  139. package/build/npm/esm/dev/client.js.map +1 -0
  140. package/build/npm/esm/dev/debug-build.js.map +1 -0
  141. package/build/npm/esm/dev/diagnose-sdk.js.map +1 -0
  142. package/build/npm/esm/dev/eventbuilder.js.map +1 -0
  143. package/build/npm/esm/dev/feedbackAsync.js.map +1 -0
  144. package/build/npm/esm/dev/feedbackSync.js.map +1 -0
  145. package/build/npm/esm/dev/helpers.js.map +1 -0
  146. package/build/npm/esm/dev/integrations/breadcrumbs.js.map +1 -0
  147. package/build/npm/esm/dev/integrations/browserapierrors.js.map +1 -0
  148. package/build/npm/esm/dev/integrations/browsersession.js.map +1 -0
  149. package/build/npm/esm/dev/integrations/contextlines.js.map +1 -0
  150. package/build/npm/esm/dev/integrations/featureFlags/growthbook/integration.js.map +1 -0
  151. package/build/npm/esm/dev/integrations/featureFlags/launchdarkly/integration.js.map +1 -0
  152. package/build/npm/esm/dev/integrations/featureFlags/openfeature/integration.js.map +1 -0
  153. package/build/npm/esm/dev/integrations/featureFlags/statsig/integration.js.map +1 -0
  154. package/build/npm/esm/dev/integrations/featureFlags/unleash/integration.js.map +1 -0
  155. package/build/npm/esm/{integrations → dev/integrations}/globalhandlers.js +5 -2
  156. package/build/npm/esm/dev/integrations/globalhandlers.js.map +1 -0
  157. package/build/npm/esm/dev/integrations/graphqlClient.js.map +1 -0
  158. package/build/npm/esm/dev/integrations/httpclient.js.map +1 -0
  159. package/build/npm/esm/dev/integrations/httpcontext.js.map +1 -0
  160. package/build/npm/esm/dev/integrations/linkederrors.js.map +1 -0
  161. package/build/npm/esm/dev/integrations/reportingobserver.js.map +1 -0
  162. package/build/npm/esm/dev/integrations/spotlight.js.map +1 -0
  163. package/build/npm/esm/dev/integrations/webWorker.js +247 -0
  164. package/build/npm/esm/dev/integrations/webWorker.js.map +1 -0
  165. package/build/npm/esm/dev/package.json +1 -0
  166. package/build/npm/esm/dev/profiling/integration.js.map +1 -0
  167. package/build/npm/esm/dev/profiling/lifecycleMode/traceLifecycleProfiler.js.map +1 -0
  168. package/build/npm/esm/dev/profiling/startProfileForSpan.js.map +1 -0
  169. package/build/npm/esm/dev/profiling/utils.js.map +1 -0
  170. package/build/npm/esm/dev/report-dialog.js.map +1 -0
  171. package/build/npm/esm/dev/sdk.js +128 -0
  172. package/build/npm/esm/dev/sdk.js.map +1 -0
  173. package/build/npm/esm/dev/stack-parsers.js.map +1 -0
  174. package/build/npm/esm/dev/tracing/backgroundtab.js.map +1 -0
  175. package/build/npm/esm/dev/tracing/browserTracingIntegration.js.map +1 -0
  176. package/build/npm/esm/{tracing → dev/tracing}/linkedTraces.js +1 -0
  177. package/build/npm/esm/dev/tracing/linkedTraces.js.map +1 -0
  178. package/build/npm/esm/dev/tracing/reportPageLoaded.js.map +1 -0
  179. package/build/npm/esm/dev/tracing/request.js.map +1 -0
  180. package/build/npm/esm/dev/tracing/setActiveSpan.js.map +1 -0
  181. package/build/npm/esm/dev/tracing/utils.js.map +1 -0
  182. package/build/npm/esm/{transports → dev/transports}/fetch.js +8 -2
  183. package/build/npm/esm/dev/transports/fetch.js.map +1 -0
  184. package/build/npm/esm/dev/transports/offline.js.map +1 -0
  185. package/build/npm/esm/dev/userfeedback.js.map +1 -0
  186. package/build/npm/esm/dev/utils/detectBrowserExtension.js.map +1 -0
  187. package/build/npm/esm/dev/utils/lazyLoadIntegration.js.map +1 -0
  188. package/build/npm/esm/prod/client.js +122 -0
  189. package/build/npm/esm/prod/client.js.map +1 -0
  190. package/build/npm/esm/prod/debug-build.js +9 -0
  191. package/build/npm/esm/prod/debug-build.js.map +1 -0
  192. package/build/npm/esm/prod/diagnose-sdk.js +49 -0
  193. package/build/npm/esm/prod/diagnose-sdk.js.map +1 -0
  194. package/build/npm/esm/prod/eventbuilder.js +390 -0
  195. package/build/npm/esm/prod/eventbuilder.js.map +1 -0
  196. package/build/npm/esm/prod/feedbackAsync.js +13 -0
  197. package/build/npm/esm/prod/feedbackAsync.js.map +1 -0
  198. package/build/npm/esm/prod/feedbackSync.js +10 -0
  199. package/build/npm/esm/prod/feedbackSync.js.map +1 -0
  200. package/build/npm/esm/prod/helpers.js +179 -0
  201. package/build/npm/esm/prod/helpers.js.map +1 -0
  202. package/build/npm/esm/prod/index.js +40 -0
  203. package/build/npm/esm/prod/index.js.map +1 -0
  204. package/build/npm/esm/prod/integrations/breadcrumbs.js +339 -0
  205. package/build/npm/esm/prod/integrations/breadcrumbs.js.map +1 -0
  206. package/build/npm/esm/prod/integrations/browserapierrors.js +257 -0
  207. package/build/npm/esm/prod/integrations/browserapierrors.js.map +1 -0
  208. package/build/npm/esm/prod/integrations/browsersession.js +42 -0
  209. package/build/npm/esm/prod/integrations/browsersession.js.map +1 -0
  210. package/build/npm/esm/prod/integrations/contextlines.js +86 -0
  211. package/build/npm/esm/prod/integrations/contextlines.js.map +1 -0
  212. package/build/npm/esm/prod/integrations/featureFlags/growthbook/integration.js +27 -0
  213. package/build/npm/esm/prod/integrations/featureFlags/growthbook/integration.js.map +1 -0
  214. package/build/npm/esm/prod/integrations/featureFlags/launchdarkly/integration.js +52 -0
  215. package/build/npm/esm/prod/integrations/featureFlags/launchdarkly/integration.js.map +1 -0
  216. package/build/npm/esm/prod/integrations/featureFlags/openfeature/integration.js +35 -0
  217. package/build/npm/esm/prod/integrations/featureFlags/openfeature/integration.js.map +1 -0
  218. package/build/npm/esm/prod/integrations/featureFlags/statsig/integration.js +46 -0
  219. package/build/npm/esm/prod/integrations/featureFlags/statsig/integration.js.map +1 -0
  220. package/build/npm/esm/prod/integrations/featureFlags/unleash/integration.js +72 -0
  221. package/build/npm/esm/prod/integrations/featureFlags/unleash/integration.js.map +1 -0
  222. package/build/npm/esm/prod/integrations/globalhandlers.js +206 -0
  223. package/build/npm/esm/prod/integrations/globalhandlers.js.map +1 -0
  224. package/build/npm/esm/prod/integrations/graphqlClient.js +175 -0
  225. package/build/npm/esm/prod/integrations/graphqlClient.js.map +1 -0
  226. package/build/npm/esm/prod/integrations/httpclient.js +393 -0
  227. package/build/npm/esm/prod/integrations/httpclient.js.map +1 -0
  228. package/build/npm/esm/prod/integrations/httpcontext.js +33 -0
  229. package/build/npm/esm/prod/integrations/httpcontext.js.map +1 -0
  230. package/build/npm/esm/prod/integrations/linkederrors.js +37 -0
  231. package/build/npm/esm/prod/integrations/linkederrors.js.map +1 -0
  232. package/build/npm/esm/prod/integrations/reportingobserver.js +83 -0
  233. package/build/npm/esm/prod/integrations/reportingobserver.js.map +1 -0
  234. package/build/npm/esm/prod/integrations/spotlight.js +81 -0
  235. package/build/npm/esm/prod/integrations/spotlight.js.map +1 -0
  236. package/build/npm/esm/prod/integrations/webWorker.js +247 -0
  237. package/build/npm/esm/prod/integrations/webWorker.js.map +1 -0
  238. package/build/npm/esm/prod/package.json +1 -0
  239. package/build/npm/esm/prod/profiling/integration.js +148 -0
  240. package/build/npm/esm/prod/profiling/integration.js.map +1 -0
  241. package/build/npm/esm/prod/profiling/lifecycleMode/traceLifecycleProfiler.js +341 -0
  242. package/build/npm/esm/prod/profiling/lifecycleMode/traceLifecycleProfiler.js.map +1 -0
  243. package/build/npm/esm/prod/profiling/startProfileForSpan.js +142 -0
  244. package/build/npm/esm/prod/profiling/startProfileForSpan.js.map +1 -0
  245. package/build/npm/esm/prod/profiling/utils.js +763 -0
  246. package/build/npm/esm/prod/profiling/utils.js.map +1 -0
  247. package/build/npm/esm/prod/report-dialog.js +66 -0
  248. package/build/npm/esm/prod/report-dialog.js.map +1 -0
  249. package/build/npm/esm/{sdk.js → prod/sdk.js} +5 -2
  250. package/build/npm/esm/prod/sdk.js.map +1 -0
  251. package/build/npm/esm/prod/stack-parsers.js +194 -0
  252. package/build/npm/esm/prod/stack-parsers.js.map +1 -0
  253. package/build/npm/esm/prod/tracing/backgroundtab.js +44 -0
  254. package/build/npm/esm/prod/tracing/backgroundtab.js.map +1 -0
  255. package/build/npm/esm/prod/tracing/browserTracingIntegration.js +571 -0
  256. package/build/npm/esm/prod/tracing/browserTracingIntegration.js.map +1 -0
  257. package/build/npm/esm/prod/tracing/linkedTraces.js +218 -0
  258. package/build/npm/esm/prod/tracing/linkedTraces.js.map +1 -0
  259. package/build/npm/esm/prod/tracing/reportPageLoaded.js +16 -0
  260. package/build/npm/esm/prod/tracing/reportPageLoaded.js.map +1 -0
  261. package/build/npm/esm/prod/tracing/request.js +338 -0
  262. package/build/npm/esm/prod/tracing/request.js.map +1 -0
  263. package/build/npm/esm/prod/tracing/setActiveSpan.js +66 -0
  264. package/build/npm/esm/prod/tracing/setActiveSpan.js.map +1 -0
  265. package/build/npm/esm/prod/tracing/utils.js +49 -0
  266. package/build/npm/esm/prod/tracing/utils.js.map +1 -0
  267. package/build/npm/esm/prod/transports/fetch.js +69 -0
  268. package/build/npm/esm/prod/transports/fetch.js.map +1 -0
  269. package/build/npm/esm/prod/transports/offline.js +162 -0
  270. package/build/npm/esm/prod/transports/offline.js.map +1 -0
  271. package/build/npm/esm/prod/userfeedback.js +40 -0
  272. package/build/npm/esm/prod/userfeedback.js.map +1 -0
  273. package/build/npm/esm/prod/utils/detectBrowserExtension.js +57 -0
  274. package/build/npm/esm/prod/utils/detectBrowserExtension.js.map +1 -0
  275. package/build/npm/esm/prod/utils/lazyLoadIntegration.js +104 -0
  276. package/build/npm/esm/prod/utils/lazyLoadIntegration.js.map +1 -0
  277. package/build/npm/types/client.d.ts +11 -0
  278. package/build/npm/types/client.d.ts.map +1 -1
  279. package/build/npm/types/integrations/globalhandlers.d.ts +12 -0
  280. package/build/npm/types/integrations/globalhandlers.d.ts.map +1 -1
  281. package/build/npm/types/integrations/webWorker.d.ts +12 -0
  282. package/build/npm/types/integrations/webWorker.d.ts.map +1 -1
  283. package/build/npm/types/sdk.d.ts.map +1 -1
  284. package/build/npm/types/transports/fetch.d.ts.map +1 -1
  285. package/build/npm/types/transports/types.d.ts +0 -4
  286. package/build/npm/types/transports/types.d.ts.map +1 -1
  287. package/build/npm/types-ts3.8/client.d.ts +11 -0
  288. package/build/npm/types-ts3.8/integrations/globalhandlers.d.ts +12 -0
  289. package/build/npm/types-ts3.8/integrations/webWorker.d.ts +12 -0
  290. package/build/npm/types-ts3.8/transports/types.d.ts +0 -4
  291. package/package.json +22 -17
  292. package/build/npm/cjs/client.js.map +0 -1
  293. package/build/npm/cjs/debug-build.js.map +0 -1
  294. package/build/npm/cjs/diagnose-sdk.js.map +0 -1
  295. package/build/npm/cjs/eventbuilder.js.map +0 -1
  296. package/build/npm/cjs/feedbackAsync.js.map +0 -1
  297. package/build/npm/cjs/feedbackSync.js.map +0 -1
  298. package/build/npm/cjs/helpers.js.map +0 -1
  299. package/build/npm/cjs/integrations/breadcrumbs.js.map +0 -1
  300. package/build/npm/cjs/integrations/browserapierrors.js.map +0 -1
  301. package/build/npm/cjs/integrations/browsersession.js.map +0 -1
  302. package/build/npm/cjs/integrations/contextlines.js.map +0 -1
  303. package/build/npm/cjs/integrations/featureFlags/growthbook/integration.js.map +0 -1
  304. package/build/npm/cjs/integrations/featureFlags/launchdarkly/integration.js.map +0 -1
  305. package/build/npm/cjs/integrations/featureFlags/openfeature/integration.js.map +0 -1
  306. package/build/npm/cjs/integrations/featureFlags/statsig/integration.js.map +0 -1
  307. package/build/npm/cjs/integrations/featureFlags/unleash/integration.js.map +0 -1
  308. package/build/npm/cjs/integrations/globalhandlers.js.map +0 -1
  309. package/build/npm/cjs/integrations/graphqlClient.js.map +0 -1
  310. package/build/npm/cjs/integrations/httpclient.js.map +0 -1
  311. package/build/npm/cjs/integrations/httpcontext.js.map +0 -1
  312. package/build/npm/cjs/integrations/linkederrors.js.map +0 -1
  313. package/build/npm/cjs/integrations/reportingobserver.js.map +0 -1
  314. package/build/npm/cjs/integrations/spotlight.js.map +0 -1
  315. package/build/npm/cjs/integrations/webWorker.js.map +0 -1
  316. package/build/npm/cjs/profiling/integration.js.map +0 -1
  317. package/build/npm/cjs/profiling/lifecycleMode/traceLifecycleProfiler.js.map +0 -1
  318. package/build/npm/cjs/profiling/startProfileForSpan.js.map +0 -1
  319. package/build/npm/cjs/profiling/utils.js.map +0 -1
  320. package/build/npm/cjs/report-dialog.js.map +0 -1
  321. package/build/npm/cjs/sdk.js.map +0 -1
  322. package/build/npm/cjs/stack-parsers.js.map +0 -1
  323. package/build/npm/cjs/tracing/backgroundtab.js.map +0 -1
  324. package/build/npm/cjs/tracing/browserTracingIntegration.js.map +0 -1
  325. package/build/npm/cjs/tracing/linkedTraces.js.map +0 -1
  326. package/build/npm/cjs/tracing/reportPageLoaded.js.map +0 -1
  327. package/build/npm/cjs/tracing/request.js.map +0 -1
  328. package/build/npm/cjs/tracing/setActiveSpan.js.map +0 -1
  329. package/build/npm/cjs/tracing/utils.js.map +0 -1
  330. package/build/npm/cjs/transports/fetch.js.map +0 -1
  331. package/build/npm/cjs/transports/offline.js.map +0 -1
  332. package/build/npm/cjs/userfeedback.js.map +0 -1
  333. package/build/npm/cjs/utils/detectBrowserExtension.js.map +0 -1
  334. package/build/npm/cjs/utils/lazyLoadIntegration.js.map +0 -1
  335. package/build/npm/esm/client.js.map +0 -1
  336. package/build/npm/esm/debug-build.js.map +0 -1
  337. package/build/npm/esm/diagnose-sdk.js.map +0 -1
  338. package/build/npm/esm/eventbuilder.js.map +0 -1
  339. package/build/npm/esm/feedbackAsync.js.map +0 -1
  340. package/build/npm/esm/feedbackSync.js.map +0 -1
  341. package/build/npm/esm/helpers.js.map +0 -1
  342. package/build/npm/esm/integrations/breadcrumbs.js.map +0 -1
  343. package/build/npm/esm/integrations/browserapierrors.js.map +0 -1
  344. package/build/npm/esm/integrations/browsersession.js.map +0 -1
  345. package/build/npm/esm/integrations/contextlines.js.map +0 -1
  346. package/build/npm/esm/integrations/featureFlags/growthbook/integration.js.map +0 -1
  347. package/build/npm/esm/integrations/featureFlags/launchdarkly/integration.js.map +0 -1
  348. package/build/npm/esm/integrations/featureFlags/openfeature/integration.js.map +0 -1
  349. package/build/npm/esm/integrations/featureFlags/statsig/integration.js.map +0 -1
  350. package/build/npm/esm/integrations/featureFlags/unleash/integration.js.map +0 -1
  351. package/build/npm/esm/integrations/globalhandlers.js.map +0 -1
  352. package/build/npm/esm/integrations/graphqlClient.js.map +0 -1
  353. package/build/npm/esm/integrations/httpclient.js.map +0 -1
  354. package/build/npm/esm/integrations/httpcontext.js.map +0 -1
  355. package/build/npm/esm/integrations/linkederrors.js.map +0 -1
  356. package/build/npm/esm/integrations/reportingobserver.js.map +0 -1
  357. package/build/npm/esm/integrations/spotlight.js.map +0 -1
  358. package/build/npm/esm/integrations/webWorker.js +0 -145
  359. package/build/npm/esm/integrations/webWorker.js.map +0 -1
  360. package/build/npm/esm/package.json +0 -1
  361. package/build/npm/esm/profiling/integration.js.map +0 -1
  362. package/build/npm/esm/profiling/lifecycleMode/traceLifecycleProfiler.js.map +0 -1
  363. package/build/npm/esm/profiling/startProfileForSpan.js.map +0 -1
  364. package/build/npm/esm/profiling/utils.js.map +0 -1
  365. package/build/npm/esm/report-dialog.js.map +0 -1
  366. package/build/npm/esm/sdk.js.map +0 -1
  367. package/build/npm/esm/stack-parsers.js.map +0 -1
  368. package/build/npm/esm/tracing/backgroundtab.js.map +0 -1
  369. package/build/npm/esm/tracing/browserTracingIntegration.js.map +0 -1
  370. package/build/npm/esm/tracing/linkedTraces.js.map +0 -1
  371. package/build/npm/esm/tracing/reportPageLoaded.js.map +0 -1
  372. package/build/npm/esm/tracing/request.js.map +0 -1
  373. package/build/npm/esm/tracing/setActiveSpan.js.map +0 -1
  374. package/build/npm/esm/tracing/utils.js.map +0 -1
  375. package/build/npm/esm/transports/fetch.js.map +0 -1
  376. package/build/npm/esm/transports/offline.js.map +0 -1
  377. package/build/npm/esm/userfeedback.js.map +0 -1
  378. package/build/npm/esm/utils/detectBrowserExtension.js.map +0 -1
  379. package/build/npm/esm/utils/lazyLoadIntegration.js.map +0 -1
  380. /package/build/npm/cjs/{debug-build.js → dev/debug-build.js} +0 -0
  381. /package/build/npm/cjs/{diagnose-sdk.js → dev/diagnose-sdk.js} +0 -0
  382. /package/build/npm/cjs/{eventbuilder.js → dev/eventbuilder.js} +0 -0
  383. /package/build/npm/cjs/{feedbackAsync.js → dev/feedbackAsync.js} +0 -0
  384. /package/build/npm/cjs/{feedbackSync.js → dev/feedbackSync.js} +0 -0
  385. /package/build/npm/cjs/{helpers.js → dev/helpers.js} +0 -0
  386. /package/build/npm/cjs/{index.js → dev/index.js} +0 -0
  387. /package/build/npm/cjs/{index.js.map → dev/index.js.map} +0 -0
  388. /package/build/npm/cjs/{integrations → dev/integrations}/breadcrumbs.js +0 -0
  389. /package/build/npm/cjs/{integrations → dev/integrations}/browserapierrors.js +0 -0
  390. /package/build/npm/cjs/{integrations → dev/integrations}/browsersession.js +0 -0
  391. /package/build/npm/cjs/{integrations → dev/integrations}/contextlines.js +0 -0
  392. /package/build/npm/cjs/{integrations → dev/integrations}/featureFlags/growthbook/integration.js +0 -0
  393. /package/build/npm/cjs/{integrations → dev/integrations}/featureFlags/launchdarkly/integration.js +0 -0
  394. /package/build/npm/cjs/{integrations → dev/integrations}/featureFlags/openfeature/integration.js +0 -0
  395. /package/build/npm/cjs/{integrations → dev/integrations}/featureFlags/statsig/integration.js +0 -0
  396. /package/build/npm/cjs/{integrations → dev/integrations}/featureFlags/unleash/integration.js +0 -0
  397. /package/build/npm/cjs/{integrations → dev/integrations}/graphqlClient.js +0 -0
  398. /package/build/npm/cjs/{integrations → dev/integrations}/httpclient.js +0 -0
  399. /package/build/npm/cjs/{integrations → dev/integrations}/httpcontext.js +0 -0
  400. /package/build/npm/cjs/{integrations → dev/integrations}/linkederrors.js +0 -0
  401. /package/build/npm/cjs/{integrations → dev/integrations}/reportingobserver.js +0 -0
  402. /package/build/npm/cjs/{integrations → dev/integrations}/spotlight.js +0 -0
  403. /package/build/npm/cjs/{profiling → dev/profiling}/integration.js +0 -0
  404. /package/build/npm/cjs/{profiling → dev/profiling}/lifecycleMode/traceLifecycleProfiler.js +0 -0
  405. /package/build/npm/cjs/{profiling → dev/profiling}/startProfileForSpan.js +0 -0
  406. /package/build/npm/cjs/{profiling → dev/profiling}/utils.js +0 -0
  407. /package/build/npm/cjs/{report-dialog.js → dev/report-dialog.js} +0 -0
  408. /package/build/npm/cjs/{stack-parsers.js → dev/stack-parsers.js} +0 -0
  409. /package/build/npm/cjs/{tracing → dev/tracing}/backgroundtab.js +0 -0
  410. /package/build/npm/cjs/{tracing → dev/tracing}/browserTracingIntegration.js +0 -0
  411. /package/build/npm/cjs/{tracing → dev/tracing}/reportPageLoaded.js +0 -0
  412. /package/build/npm/cjs/{tracing → dev/tracing}/request.js +0 -0
  413. /package/build/npm/cjs/{tracing → dev/tracing}/setActiveSpan.js +0 -0
  414. /package/build/npm/cjs/{tracing → dev/tracing}/utils.js +0 -0
  415. /package/build/npm/cjs/{transports → dev/transports}/offline.js +0 -0
  416. /package/build/npm/cjs/{userfeedback.js → dev/userfeedback.js} +0 -0
  417. /package/build/npm/cjs/{utils → dev/utils}/detectBrowserExtension.js +0 -0
  418. /package/build/npm/cjs/{utils → dev/utils}/lazyLoadIntegration.js +0 -0
  419. /package/build/npm/esm/{debug-build.js → dev/debug-build.js} +0 -0
  420. /package/build/npm/esm/{diagnose-sdk.js → dev/diagnose-sdk.js} +0 -0
  421. /package/build/npm/esm/{eventbuilder.js → dev/eventbuilder.js} +0 -0
  422. /package/build/npm/esm/{feedbackAsync.js → dev/feedbackAsync.js} +0 -0
  423. /package/build/npm/esm/{feedbackSync.js → dev/feedbackSync.js} +0 -0
  424. /package/build/npm/esm/{helpers.js → dev/helpers.js} +0 -0
  425. /package/build/npm/esm/{index.js → dev/index.js} +0 -0
  426. /package/build/npm/esm/{index.js.map → dev/index.js.map} +0 -0
  427. /package/build/npm/esm/{integrations → dev/integrations}/breadcrumbs.js +0 -0
  428. /package/build/npm/esm/{integrations → dev/integrations}/browserapierrors.js +0 -0
  429. /package/build/npm/esm/{integrations → dev/integrations}/browsersession.js +0 -0
  430. /package/build/npm/esm/{integrations → dev/integrations}/contextlines.js +0 -0
  431. /package/build/npm/esm/{integrations → dev/integrations}/featureFlags/growthbook/integration.js +0 -0
  432. /package/build/npm/esm/{integrations → dev/integrations}/featureFlags/launchdarkly/integration.js +0 -0
  433. /package/build/npm/esm/{integrations → dev/integrations}/featureFlags/openfeature/integration.js +0 -0
  434. /package/build/npm/esm/{integrations → dev/integrations}/featureFlags/statsig/integration.js +0 -0
  435. /package/build/npm/esm/{integrations → dev/integrations}/featureFlags/unleash/integration.js +0 -0
  436. /package/build/npm/esm/{integrations → dev/integrations}/graphqlClient.js +0 -0
  437. /package/build/npm/esm/{integrations → dev/integrations}/httpclient.js +0 -0
  438. /package/build/npm/esm/{integrations → dev/integrations}/httpcontext.js +0 -0
  439. /package/build/npm/esm/{integrations → dev/integrations}/linkederrors.js +0 -0
  440. /package/build/npm/esm/{integrations → dev/integrations}/reportingobserver.js +0 -0
  441. /package/build/npm/esm/{integrations → dev/integrations}/spotlight.js +0 -0
  442. /package/build/npm/esm/{profiling → dev/profiling}/integration.js +0 -0
  443. /package/build/npm/esm/{profiling → dev/profiling}/lifecycleMode/traceLifecycleProfiler.js +0 -0
  444. /package/build/npm/esm/{profiling → dev/profiling}/startProfileForSpan.js +0 -0
  445. /package/build/npm/esm/{profiling → dev/profiling}/utils.js +0 -0
  446. /package/build/npm/esm/{report-dialog.js → dev/report-dialog.js} +0 -0
  447. /package/build/npm/esm/{stack-parsers.js → dev/stack-parsers.js} +0 -0
  448. /package/build/npm/esm/{tracing → dev/tracing}/backgroundtab.js +0 -0
  449. /package/build/npm/esm/{tracing → dev/tracing}/browserTracingIntegration.js +0 -0
  450. /package/build/npm/esm/{tracing → dev/tracing}/reportPageLoaded.js +0 -0
  451. /package/build/npm/esm/{tracing → dev/tracing}/request.js +0 -0
  452. /package/build/npm/esm/{tracing → dev/tracing}/setActiveSpan.js +0 -0
  453. /package/build/npm/esm/{tracing → dev/tracing}/utils.js +0 -0
  454. /package/build/npm/esm/{transports → dev/transports}/offline.js +0 -0
  455. /package/build/npm/esm/{userfeedback.js → dev/userfeedback.js} +0 -0
  456. /package/build/npm/esm/{utils → dev/utils}/detectBrowserExtension.js +0 -0
  457. /package/build/npm/esm/{utils → dev/utils}/lazyLoadIntegration.js +0 -0
@@ -0,0 +1,395 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+ const browserUtils = require('@sentry-internal/browser-utils');
5
+ const debugBuild = require('../debug-build.js');
6
+
7
+ const INTEGRATION_NAME = 'HttpClient';
8
+
9
+ const _httpClientIntegration = ((options = {}) => {
10
+ const _options = {
11
+ failedRequestStatusCodes: [[500, 599]],
12
+ failedRequestTargets: [/.*/],
13
+ ...options,
14
+ };
15
+
16
+ return {
17
+ name: INTEGRATION_NAME,
18
+ setup(client) {
19
+ _wrapFetch(client, _options);
20
+ _wrapXHR(client, _options);
21
+ },
22
+ };
23
+ }) ;
24
+
25
+ /**
26
+ * Create events for failed client side HTTP requests.
27
+ */
28
+ const httpClientIntegration = core.defineIntegration(_httpClientIntegration);
29
+
30
+ /**
31
+ * Interceptor function for fetch requests
32
+ *
33
+ * @param requestInfo The Fetch API request info
34
+ * @param response The Fetch API response
35
+ * @param requestInit The request init object
36
+ */
37
+ function _fetchResponseHandler(
38
+ options,
39
+ requestInfo,
40
+ response,
41
+ requestInit,
42
+ error,
43
+ ) {
44
+ if (_shouldCaptureResponse(options, response.status, response.url)) {
45
+ const request = _getRequest(requestInfo, requestInit);
46
+
47
+ let requestHeaders, responseHeaders, requestCookies, responseCookies;
48
+
49
+ if (_shouldSendDefaultPii()) {
50
+ [requestHeaders, requestCookies] = _parseCookieHeaders('Cookie', request);
51
+ [responseHeaders, responseCookies] = _parseCookieHeaders('Set-Cookie', response);
52
+ }
53
+
54
+ const event = _createEvent({
55
+ url: request.url,
56
+ method: request.method,
57
+ status: response.status,
58
+ requestHeaders,
59
+ responseHeaders,
60
+ requestCookies,
61
+ responseCookies,
62
+ error,
63
+ type: 'fetch',
64
+ });
65
+
66
+ core.captureEvent(event);
67
+ }
68
+ }
69
+
70
+ function _parseCookieHeaders(
71
+ cookieHeader,
72
+ obj,
73
+ ) {
74
+ const headers = _extractFetchHeaders(obj.headers);
75
+ let cookies;
76
+
77
+ try {
78
+ const cookieString = headers[cookieHeader] || headers[cookieHeader.toLowerCase()] || undefined;
79
+
80
+ if (cookieString) {
81
+ cookies = _parseCookieString(cookieString);
82
+ }
83
+ } catch {
84
+ // ignore it if parsing fails
85
+ }
86
+
87
+ return [headers, cookies];
88
+ }
89
+
90
+ /**
91
+ * Interceptor function for XHR requests
92
+ *
93
+ * @param xhr The XHR request
94
+ * @param method The HTTP method
95
+ * @param headers The HTTP headers
96
+ */
97
+ function _xhrResponseHandler(
98
+ options,
99
+ xhr,
100
+ method,
101
+ headers,
102
+ error,
103
+ ) {
104
+ if (_shouldCaptureResponse(options, xhr.status, xhr.responseURL)) {
105
+ let requestHeaders, responseCookies, responseHeaders;
106
+
107
+ if (_shouldSendDefaultPii()) {
108
+ try {
109
+ const cookieString = xhr.getResponseHeader('Set-Cookie') || xhr.getResponseHeader('set-cookie') || undefined;
110
+
111
+ if (cookieString) {
112
+ responseCookies = _parseCookieString(cookieString);
113
+ }
114
+ } catch {
115
+ // ignore it if parsing fails
116
+ }
117
+
118
+ try {
119
+ responseHeaders = _getXHRResponseHeaders(xhr);
120
+ } catch {
121
+ // ignore it if parsing fails
122
+ }
123
+
124
+ requestHeaders = headers;
125
+ }
126
+
127
+ const event = _createEvent({
128
+ url: xhr.responseURL,
129
+ method,
130
+ status: xhr.status,
131
+ requestHeaders,
132
+ // Can't access request cookies from XHR
133
+ responseHeaders,
134
+ responseCookies,
135
+ error,
136
+ type: 'xhr',
137
+ });
138
+
139
+ core.captureEvent(event);
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Extracts response size from `Content-Length` header when possible
145
+ *
146
+ * @param headers
147
+ * @returns The response size in bytes or undefined
148
+ */
149
+ function _getResponseSizeFromHeaders(headers) {
150
+ if (headers) {
151
+ const contentLength = headers['Content-Length'] || headers['content-length'];
152
+
153
+ if (contentLength) {
154
+ return parseInt(contentLength, 10);
155
+ }
156
+ }
157
+
158
+ return undefined;
159
+ }
160
+
161
+ /**
162
+ * Creates an object containing cookies from the given cookie string
163
+ *
164
+ * @param cookieString The cookie string to parse
165
+ * @returns The parsed cookies
166
+ */
167
+ function _parseCookieString(cookieString) {
168
+ return cookieString.split('; ').reduce((acc, cookie) => {
169
+ const [key, value] = cookie.split('=');
170
+ if (key && value) {
171
+ acc[key] = value;
172
+ }
173
+ return acc;
174
+ }, {});
175
+ }
176
+
177
+ /**
178
+ * Extracts the headers as an object from the given Fetch API request or response object
179
+ *
180
+ * @param headers The headers to extract
181
+ * @returns The extracted headers as an object
182
+ */
183
+ function _extractFetchHeaders(headers) {
184
+ const result = {};
185
+
186
+ headers.forEach((value, key) => {
187
+ result[key] = value;
188
+ });
189
+
190
+ return result;
191
+ }
192
+
193
+ /**
194
+ * Extracts the response headers as an object from the given XHR object
195
+ *
196
+ * @param xhr The XHR object to extract the response headers from
197
+ * @returns The response headers as an object
198
+ */
199
+ function _getXHRResponseHeaders(xhr) {
200
+ const headers = xhr.getAllResponseHeaders();
201
+
202
+ if (!headers) {
203
+ return {};
204
+ }
205
+
206
+ return headers.split('\r\n').reduce((acc, line) => {
207
+ const [key, value] = line.split(': ');
208
+ if (key && value) {
209
+ acc[key] = value;
210
+ }
211
+ return acc;
212
+ }, {});
213
+ }
214
+
215
+ /**
216
+ * Checks if the given target url is in the given list of targets
217
+ *
218
+ * @param target The target url to check
219
+ * @returns true if the target url is in the given list of targets, false otherwise
220
+ */
221
+ function _isInGivenRequestTargets(
222
+ failedRequestTargets,
223
+ target,
224
+ ) {
225
+ return failedRequestTargets.some((givenRequestTarget) => {
226
+ if (typeof givenRequestTarget === 'string') {
227
+ return target.includes(givenRequestTarget);
228
+ }
229
+
230
+ return givenRequestTarget.test(target);
231
+ });
232
+ }
233
+
234
+ /**
235
+ * Checks if the given status code is in the given range
236
+ *
237
+ * @param status The status code to check
238
+ * @returns true if the status code is in the given range, false otherwise
239
+ */
240
+ function _isInGivenStatusRanges(
241
+ failedRequestStatusCodes,
242
+ status,
243
+ ) {
244
+ return failedRequestStatusCodes.some((range) => {
245
+ if (typeof range === 'number') {
246
+ return range === status;
247
+ }
248
+
249
+ return status >= range[0] && status <= range[1];
250
+ });
251
+ }
252
+
253
+ /**
254
+ * Wraps `fetch` function to capture request and response data
255
+ */
256
+ function _wrapFetch(client, options) {
257
+ if (!core.supportsNativeFetch()) {
258
+ return;
259
+ }
260
+
261
+ core.addFetchInstrumentationHandler(handlerData => {
262
+ if (core.getClient() !== client) {
263
+ return;
264
+ }
265
+
266
+ const { response, args, error, virtualError } = handlerData;
267
+ const [requestInfo, requestInit] = args ;
268
+
269
+ if (!response) {
270
+ return;
271
+ }
272
+
273
+ _fetchResponseHandler(options, requestInfo, response , requestInit, error || virtualError);
274
+ }, false);
275
+ }
276
+
277
+ /**
278
+ * Wraps XMLHttpRequest to capture request and response data
279
+ */
280
+ function _wrapXHR(client, options) {
281
+ if (!('XMLHttpRequest' in core.GLOBAL_OBJ)) {
282
+ return;
283
+ }
284
+
285
+ browserUtils.addXhrInstrumentationHandler(handlerData => {
286
+ if (core.getClient() !== client) {
287
+ return;
288
+ }
289
+
290
+ const { error, virtualError } = handlerData;
291
+
292
+ const xhr = handlerData.xhr ;
293
+
294
+ const sentryXhrData = xhr[browserUtils.SENTRY_XHR_DATA_KEY];
295
+
296
+ if (!sentryXhrData) {
297
+ return;
298
+ }
299
+
300
+ const { method, request_headers: headers } = sentryXhrData;
301
+
302
+ try {
303
+ _xhrResponseHandler(options, xhr, method, headers, error || virtualError);
304
+ } catch (e) {
305
+ debugBuild.DEBUG_BUILD && core.debug.warn('Error while extracting response event form XHR response', e);
306
+ }
307
+ });
308
+ }
309
+
310
+ /**
311
+ * Checks whether to capture given response as an event
312
+ *
313
+ * @param status response status code
314
+ * @param url response url
315
+ */
316
+ function _shouldCaptureResponse(options, status, url) {
317
+ return (
318
+ _isInGivenStatusRanges(options.failedRequestStatusCodes, status) &&
319
+ _isInGivenRequestTargets(options.failedRequestTargets, url) &&
320
+ !core.isSentryRequestUrl(url, core.getClient())
321
+ );
322
+ }
323
+
324
+ /**
325
+ * Creates a synthetic Sentry event from given response data
326
+ *
327
+ * @param data response data
328
+ * @returns event
329
+ */
330
+ function _createEvent(data
331
+
332
+ ) {
333
+ const client = core.getClient();
334
+ const virtualStackTrace = client && data.error && data.error instanceof Error ? data.error.stack : undefined;
335
+ // Remove the first frame from the stack as it's the HttpClient call
336
+ const stack = virtualStackTrace && client ? client.getOptions().stackParser(virtualStackTrace, 0, 1) : undefined;
337
+ const message = `HTTP Client Error with status code: ${data.status}`;
338
+
339
+ const event = {
340
+ message,
341
+ exception: {
342
+ values: [
343
+ {
344
+ type: 'Error',
345
+ value: message,
346
+ stacktrace: stack ? { frames: stack } : undefined,
347
+ },
348
+ ],
349
+ },
350
+ request: {
351
+ url: data.url,
352
+ method: data.method,
353
+ headers: data.requestHeaders,
354
+ cookies: data.requestCookies,
355
+ },
356
+ contexts: {
357
+ response: {
358
+ status_code: data.status,
359
+ headers: data.responseHeaders,
360
+ cookies: data.responseCookies,
361
+ body_size: _getResponseSizeFromHeaders(data.responseHeaders),
362
+ },
363
+ },
364
+ };
365
+
366
+ core.addExceptionMechanism(event, {
367
+ type: `auto.http.client.${data.type}`,
368
+ handled: false,
369
+ });
370
+
371
+ return event;
372
+ }
373
+
374
+ function _getRequest(requestInfo, requestInit) {
375
+ if (!requestInit && requestInfo instanceof Request) {
376
+ return requestInfo;
377
+ }
378
+
379
+ // If both are set, we try to construct a new Request with the given arguments
380
+ // However, if e.g. the original request has a `body`, this will throw an error because it was already accessed
381
+ // In this case, as a fallback, we just use the original request - using both is rather an edge case
382
+ if (requestInfo instanceof Request && requestInfo.bodyUsed) {
383
+ return requestInfo;
384
+ }
385
+
386
+ return new Request(requestInfo, requestInit);
387
+ }
388
+
389
+ function _shouldSendDefaultPii() {
390
+ const client = core.getClient();
391
+ return client ? Boolean(client.getOptions().sendDefaultPii) : false;
392
+ }
393
+
394
+ exports.httpClientIntegration = httpClientIntegration;
395
+ //# sourceMappingURL=httpclient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpclient.js","sources":["../../../../../src/integrations/httpclient.ts"],"sourcesContent":["import type { Client, Event as SentryEvent, IntegrationFn, SentryWrappedXMLHttpRequest } from '@sentry/core';\nimport {\n addExceptionMechanism,\n addFetchInstrumentationHandler,\n captureEvent,\n debug,\n defineIntegration,\n getClient,\n GLOBAL_OBJ,\n isSentryRequestUrl,\n supportsNativeFetch,\n} from '@sentry/core';\nimport { addXhrInstrumentationHandler, SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport type HttpStatusCodeRange = [number, number] | number;\nexport type HttpRequestTarget = string | RegExp;\n\nconst INTEGRATION_NAME = 'HttpClient';\n\ninterface HttpClientOptions {\n /**\n * HTTP status codes that should be considered failed.\n * This array can contain tuples of `[begin, end]` (both inclusive),\n * single status codes, or a combinations of both\n *\n * Example: [[500, 505], 507]\n * Default: [[500, 599]]\n */\n failedRequestStatusCodes: HttpStatusCodeRange[];\n\n /**\n * Targets to track for failed requests.\n * This array can contain strings or regular expressions.\n *\n * Example: ['http://localhost', /api\\/.*\\/]\n * Default: [/.*\\/]\n */\n failedRequestTargets: HttpRequestTarget[];\n}\n\nconst _httpClientIntegration = ((options: Partial<HttpClientOptions> = {}) => {\n const _options: HttpClientOptions = {\n failedRequestStatusCodes: [[500, 599]],\n failedRequestTargets: [/.*/],\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client): void {\n _wrapFetch(client, _options);\n _wrapXHR(client, _options);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Create events for failed client side HTTP requests.\n */\nexport const httpClientIntegration = defineIntegration(_httpClientIntegration);\n\n/**\n * Interceptor function for fetch requests\n *\n * @param requestInfo The Fetch API request info\n * @param response The Fetch API response\n * @param requestInit The request init object\n */\nfunction _fetchResponseHandler(\n options: HttpClientOptions,\n requestInfo: RequestInfo,\n response: Response,\n requestInit?: RequestInit,\n error?: unknown,\n): void {\n if (_shouldCaptureResponse(options, response.status, response.url)) {\n const request = _getRequest(requestInfo, requestInit);\n\n let requestHeaders, responseHeaders, requestCookies, responseCookies;\n\n if (_shouldSendDefaultPii()) {\n [requestHeaders, requestCookies] = _parseCookieHeaders('Cookie', request);\n [responseHeaders, responseCookies] = _parseCookieHeaders('Set-Cookie', response);\n }\n\n const event = _createEvent({\n url: request.url,\n method: request.method,\n status: response.status,\n requestHeaders,\n responseHeaders,\n requestCookies,\n responseCookies,\n error,\n type: 'fetch',\n });\n\n captureEvent(event);\n }\n}\n\nfunction _parseCookieHeaders(\n cookieHeader: string,\n obj: Request | Response,\n): [Record<string, string>, Record<string, string> | undefined] {\n const headers = _extractFetchHeaders(obj.headers);\n let cookies;\n\n try {\n const cookieString = headers[cookieHeader] || headers[cookieHeader.toLowerCase()] || undefined;\n\n if (cookieString) {\n cookies = _parseCookieString(cookieString);\n }\n } catch {\n // ignore it if parsing fails\n }\n\n return [headers, cookies];\n}\n\n/**\n * Interceptor function for XHR requests\n *\n * @param xhr The XHR request\n * @param method The HTTP method\n * @param headers The HTTP headers\n */\nfunction _xhrResponseHandler(\n options: HttpClientOptions,\n xhr: XMLHttpRequest,\n method: string,\n headers: Record<string, string>,\n error?: unknown,\n): void {\n if (_shouldCaptureResponse(options, xhr.status, xhr.responseURL)) {\n let requestHeaders, responseCookies, responseHeaders;\n\n if (_shouldSendDefaultPii()) {\n try {\n const cookieString = xhr.getResponseHeader('Set-Cookie') || xhr.getResponseHeader('set-cookie') || undefined;\n\n if (cookieString) {\n responseCookies = _parseCookieString(cookieString);\n }\n } catch {\n // ignore it if parsing fails\n }\n\n try {\n responseHeaders = _getXHRResponseHeaders(xhr);\n } catch {\n // ignore it if parsing fails\n }\n\n requestHeaders = headers;\n }\n\n const event = _createEvent({\n url: xhr.responseURL,\n method,\n status: xhr.status,\n requestHeaders,\n // Can't access request cookies from XHR\n responseHeaders,\n responseCookies,\n error,\n type: 'xhr',\n });\n\n captureEvent(event);\n }\n}\n\n/**\n * Extracts response size from `Content-Length` header when possible\n *\n * @param headers\n * @returns The response size in bytes or undefined\n */\nfunction _getResponseSizeFromHeaders(headers?: Record<string, string>): number | undefined {\n if (headers) {\n const contentLength = headers['Content-Length'] || headers['content-length'];\n\n if (contentLength) {\n return parseInt(contentLength, 10);\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates an object containing cookies from the given cookie string\n *\n * @param cookieString The cookie string to parse\n * @returns The parsed cookies\n */\nfunction _parseCookieString(cookieString: string): Record<string, string> {\n return cookieString.split('; ').reduce((acc: Record<string, string>, cookie: string) => {\n const [key, value] = cookie.split('=');\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Extracts the headers as an object from the given Fetch API request or response object\n *\n * @param headers The headers to extract\n * @returns The extracted headers as an object\n */\nfunction _extractFetchHeaders(headers: Headers): Record<string, string> {\n const result: Record<string, string> = {};\n\n headers.forEach((value, key) => {\n result[key] = value;\n });\n\n return result;\n}\n\n/**\n * Extracts the response headers as an object from the given XHR object\n *\n * @param xhr The XHR object to extract the response headers from\n * @returns The response headers as an object\n */\nfunction _getXHRResponseHeaders(xhr: XMLHttpRequest): Record<string, string> {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc: Record<string, string>, line: string) => {\n const [key, value] = line.split(': ');\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Checks if the given target url is in the given list of targets\n *\n * @param target The target url to check\n * @returns true if the target url is in the given list of targets, false otherwise\n */\nfunction _isInGivenRequestTargets(\n failedRequestTargets: HttpClientOptions['failedRequestTargets'],\n target: string,\n): boolean {\n return failedRequestTargets.some((givenRequestTarget: HttpRequestTarget) => {\n if (typeof givenRequestTarget === 'string') {\n return target.includes(givenRequestTarget);\n }\n\n return givenRequestTarget.test(target);\n });\n}\n\n/**\n * Checks if the given status code is in the given range\n *\n * @param status The status code to check\n * @returns true if the status code is in the given range, false otherwise\n */\nfunction _isInGivenStatusRanges(\n failedRequestStatusCodes: HttpClientOptions['failedRequestStatusCodes'],\n status: number,\n): boolean {\n return failedRequestStatusCodes.some((range: HttpStatusCodeRange) => {\n if (typeof range === 'number') {\n return range === status;\n }\n\n return status >= range[0] && status <= range[1];\n });\n}\n\n/**\n * Wraps `fetch` function to capture request and response data\n */\nfunction _wrapFetch(client: Client, options: HttpClientOptions): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n addFetchInstrumentationHandler(handlerData => {\n if (getClient() !== client) {\n return;\n }\n\n const { response, args, error, virtualError } = handlerData;\n const [requestInfo, requestInit] = args as [RequestInfo, RequestInit | undefined];\n\n if (!response) {\n return;\n }\n\n _fetchResponseHandler(options, requestInfo, response as Response, requestInit, error || virtualError);\n }, false);\n}\n\n/**\n * Wraps XMLHttpRequest to capture request and response data\n */\nfunction _wrapXHR(client: Client, options: HttpClientOptions): void {\n if (!('XMLHttpRequest' in GLOBAL_OBJ)) {\n return;\n }\n\n addXhrInstrumentationHandler(handlerData => {\n if (getClient() !== client) {\n return;\n }\n\n const { error, virtualError } = handlerData;\n\n const xhr = handlerData.xhr as SentryWrappedXMLHttpRequest & XMLHttpRequest;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return;\n }\n\n const { method, request_headers: headers } = sentryXhrData;\n\n try {\n _xhrResponseHandler(options, xhr, method, headers, error || virtualError);\n } catch (e) {\n DEBUG_BUILD && debug.warn('Error while extracting response event form XHR response', e);\n }\n });\n}\n\n/**\n * Checks whether to capture given response as an event\n *\n * @param status response status code\n * @param url response url\n */\nfunction _shouldCaptureResponse(options: HttpClientOptions, status: number, url: string): boolean {\n return (\n _isInGivenStatusRanges(options.failedRequestStatusCodes, status) &&\n _isInGivenRequestTargets(options.failedRequestTargets, url) &&\n !isSentryRequestUrl(url, getClient())\n );\n}\n\n/**\n * Creates a synthetic Sentry event from given response data\n *\n * @param data response data\n * @returns event\n */\nfunction _createEvent(data: {\n url: string;\n method: string;\n status: number;\n type: 'fetch' | 'xhr';\n responseHeaders?: Record<string, string>;\n responseCookies?: Record<string, string>;\n requestHeaders?: Record<string, string>;\n requestCookies?: Record<string, string>;\n error?: unknown;\n}): SentryEvent {\n const client = getClient();\n const virtualStackTrace = client && data.error && data.error instanceof Error ? data.error.stack : undefined;\n // Remove the first frame from the stack as it's the HttpClient call\n const stack = virtualStackTrace && client ? client.getOptions().stackParser(virtualStackTrace, 0, 1) : undefined;\n const message = `HTTP Client Error with status code: ${data.status}`;\n\n const event: SentryEvent = {\n message,\n exception: {\n values: [\n {\n type: 'Error',\n value: message,\n stacktrace: stack ? { frames: stack } : undefined,\n },\n ],\n },\n request: {\n url: data.url,\n method: data.method,\n headers: data.requestHeaders,\n cookies: data.requestCookies,\n },\n contexts: {\n response: {\n status_code: data.status,\n headers: data.responseHeaders,\n cookies: data.responseCookies,\n body_size: _getResponseSizeFromHeaders(data.responseHeaders),\n },\n },\n };\n\n addExceptionMechanism(event, {\n type: `auto.http.client.${data.type}`,\n handled: false,\n });\n\n return event;\n}\n\nfunction _getRequest(requestInfo: RequestInfo, requestInit?: RequestInit): Request {\n if (!requestInit && requestInfo instanceof Request) {\n return requestInfo;\n }\n\n // If both are set, we try to construct a new Request with the given arguments\n // However, if e.g. the original request has a `body`, this will throw an error because it was already accessed\n // In this case, as a fallback, we just use the original request - using both is rather an edge case\n if (requestInfo instanceof Request && requestInfo.bodyUsed) {\n return requestInfo;\n }\n\n return new Request(requestInfo, requestInit);\n}\n\nfunction _shouldSendDefaultPii(): boolean {\n const client = getClient();\n return client ? Boolean(client.getOptions().sendDefaultPii) : false;\n}\n"],"names":["defineIntegration","captureEvent","supportsNativeFetch","addFetchInstrumentationHandler","getClient","GLOBAL_OBJ","addXhrInstrumentationHandler","SENTRY_XHR_DATA_KEY","DEBUG_BUILD","debug","isSentryRequestUrl","addExceptionMechanism"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+ const helpers = require('../helpers.js');
5
+
6
+ /**
7
+ * Collects information about HTTP request headers and
8
+ * attaches them to the event.
9
+ */
10
+ const httpContextIntegration = core.defineIntegration(() => {
11
+ return {
12
+ name: 'HttpContext',
13
+ preprocessEvent(event) {
14
+ // if none of the information we want exists, don't bother
15
+ if (!helpers.WINDOW.navigator && !helpers.WINDOW.location && !helpers.WINDOW.document) {
16
+ return;
17
+ }
18
+
19
+ const reqData = helpers.getHttpRequestData();
20
+ const headers = {
21
+ ...reqData.headers,
22
+ ...event.request?.headers,
23
+ };
24
+
25
+ event.request = {
26
+ ...reqData,
27
+ ...event.request,
28
+ headers,
29
+ };
30
+ },
31
+ };
32
+ });
33
+
34
+ exports.httpContextIntegration = httpContextIntegration;
35
+ //# sourceMappingURL=httpcontext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpcontext.js","sources":["../../../../../src/integrations/httpcontext.ts"],"sourcesContent":["import { defineIntegration } from '@sentry/core';\nimport { getHttpRequestData, WINDOW } from '../helpers';\n\n/**\n * Collects information about HTTP request headers and\n * attaches them to the event.\n */\nexport const httpContextIntegration = defineIntegration(() => {\n return {\n name: 'HttpContext',\n preprocessEvent(event) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return;\n }\n\n const reqData = getHttpRequestData();\n const headers = {\n ...reqData.headers,\n ...event.request?.headers,\n };\n\n event.request = {\n ...reqData,\n ...event.request,\n headers,\n };\n },\n };\n});\n"],"names":["defineIntegration","WINDOW","getHttpRequestData"],"mappings":";;;;;AAGA;AACA;AACA;AACA;MACa,sBAAA,GAAyBA,sBAAiB,CAAC,MAAM;AAC9D,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B;AACA,MAAM,IAAI,CAACC,cAAM,CAAC,aAAa,CAACA,cAAM,CAAC,YAAY,CAACA,cAAM,CAAC,QAAQ,EAAE;AACrE,QAAQ;AACR,MAAM;;AAEN,MAAM,MAAM,OAAA,GAAUC,0BAAkB,EAAE;AAC1C,MAAM,MAAM,UAAU;AACtB,QAAQ,GAAG,OAAO,CAAC,OAAO;AAC1B,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO;AACjC,OAAO;;AAEP,MAAM,KAAK,CAAC,OAAA,GAAU;AACtB,QAAQ,GAAG,OAAO;AAClB,QAAQ,GAAG,KAAK,CAAC,OAAO;AACxB,QAAQ,OAAO;AACf,OAAO;AACP,IAAI,CAAC;AACL,GAAG;AACH,CAAC;;;;"}
@@ -0,0 +1,39 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+ const eventbuilder = require('../eventbuilder.js');
5
+
6
+ const DEFAULT_KEY = 'cause';
7
+ const DEFAULT_LIMIT = 5;
8
+
9
+ const INTEGRATION_NAME = 'LinkedErrors';
10
+
11
+ const _linkedErrorsIntegration = ((options = {}) => {
12
+ const limit = options.limit || DEFAULT_LIMIT;
13
+ const key = options.key || DEFAULT_KEY;
14
+
15
+ return {
16
+ name: INTEGRATION_NAME,
17
+ preprocessEvent(event, hint, client) {
18
+ const options = client.getOptions();
19
+
20
+ core.applyAggregateErrorsToEvent(
21
+ // This differs from the LinkedErrors integration in core by using a different exceptionFromError function
22
+ eventbuilder.exceptionFromError,
23
+ options.stackParser,
24
+ key,
25
+ limit,
26
+ event,
27
+ hint,
28
+ );
29
+ },
30
+ };
31
+ }) ;
32
+
33
+ /**
34
+ * Aggregrate linked errors in an event.
35
+ */
36
+ const linkedErrorsIntegration = core.defineIntegration(_linkedErrorsIntegration);
37
+
38
+ exports.linkedErrorsIntegration = linkedErrorsIntegration;
39
+ //# sourceMappingURL=linkederrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linkederrors.js","sources":["../../../../../src/integrations/linkederrors.ts"],"sourcesContent":["import type { IntegrationFn } from '@sentry/core';\nimport { applyAggregateErrorsToEvent, defineIntegration } from '@sentry/core';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n exceptionFromError,\n options.stackParser,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Aggregrate linked errors in an event.\n */\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n"],"names":["applyAggregateErrorsToEvent","exceptionFromError","defineIntegration"],"mappings":";;;;;AASA,MAAM,WAAA,GAAc,OAAO;AAC3B,MAAM,aAAA,GAAgB,CAAC;;AAEvB,MAAM,gBAAA,GAAmB,cAAc;;AAEvC,MAAM,wBAAA,IAA4B,CAAC,OAAO,GAAwB,EAAE,KAAK;AACzE,EAAE,MAAM,KAAA,GAAQ,OAAO,CAAC,KAAA,IAAS,aAAa;AAC9C,EAAE,MAAM,GAAA,GAAM,OAAO,CAAC,GAAA,IAAO,WAAW;;AAExC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AACzC,MAAM,MAAM,OAAA,GAAU,MAAM,CAAC,UAAU,EAAE;;AAEzC,MAAMA,gCAA2B;AACjC;AACA,QAAQC,+BAAkB;AAC1B,QAAQ,OAAO,CAAC,WAAW;AAC3B,QAAQ,GAAG;AACX,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,OAAO;AACP,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;MACa,uBAAA,GAA0BC,sBAAiB,CAAC,wBAAwB;;;;"}
@@ -0,0 +1,85 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+
5
+ const WINDOW = core.GLOBAL_OBJ ;
6
+
7
+ const INTEGRATION_NAME = 'ReportingObserver';
8
+
9
+ const SETUP_CLIENTS = new WeakMap();
10
+
11
+ const _reportingObserverIntegration = ((options = {}) => {
12
+ const types = options.types || ['crash', 'deprecation', 'intervention'];
13
+
14
+ /** Handler for the reporting observer. */
15
+ function handler(reports) {
16
+ if (!SETUP_CLIENTS.has(core.getClient() )) {
17
+ return;
18
+ }
19
+
20
+ for (const report of reports) {
21
+ core.withScope(scope => {
22
+ scope.setExtra('url', report.url);
23
+
24
+ const label = `ReportingObserver [${report.type}]`;
25
+ let details = 'No details available';
26
+
27
+ if (report.body) {
28
+ // Object.keys doesn't work on ReportBody, as all properties are inherited
29
+ const plainBody
30
+
31
+ = {};
32
+
33
+ // eslint-disable-next-line guard-for-in
34
+ for (const prop in report.body) {
35
+ plainBody[prop] = report.body[prop];
36
+ }
37
+
38
+ scope.setExtra('body', plainBody);
39
+
40
+ if (report.type === 'crash') {
41
+ const body = report.body ;
42
+ // A fancy way to create a message out of crashId OR reason OR both OR fallback
43
+ details = [body.crashId || '', body.reason || ''].join(' ').trim() || details;
44
+ } else {
45
+ const body = report.body ;
46
+ details = body.message || details;
47
+ }
48
+ }
49
+
50
+ core.captureMessage(`${label}: ${details}`);
51
+ });
52
+ }
53
+ }
54
+
55
+ return {
56
+ name: INTEGRATION_NAME,
57
+ setupOnce() {
58
+ if (!core.supportsReportingObserver()) {
59
+ return;
60
+ }
61
+
62
+ const observer = new (WINDOW ).ReportingObserver(
63
+ handler,
64
+ {
65
+ buffered: true,
66
+ types,
67
+ },
68
+ );
69
+
70
+ observer.observe();
71
+ },
72
+
73
+ setup(client) {
74
+ SETUP_CLIENTS.set(client, true);
75
+ },
76
+ };
77
+ }) ;
78
+
79
+ /**
80
+ * Reporting API integration - https://w3c.github.io/reporting/
81
+ */
82
+ const reportingObserverIntegration = core.defineIntegration(_reportingObserverIntegration);
83
+
84
+ exports.reportingObserverIntegration = reportingObserverIntegration;
85
+ //# sourceMappingURL=reportingobserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportingobserver.js","sources":["../../../../../src/integrations/reportingobserver.ts"],"sourcesContent":["import type { Client, IntegrationFn } from '@sentry/core';\nimport {\n captureMessage,\n defineIntegration,\n getClient,\n GLOBAL_OBJ,\n supportsReportingObserver,\n withScope,\n} from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nconst INTEGRATION_NAME = 'ReportingObserver';\n\ninterface Report {\n [key: string]: unknown;\n type: ReportTypes;\n url: string;\n body?: ReportBody;\n}\n\ntype ReportTypes = 'crash' | 'deprecation' | 'intervention';\n\ntype ReportBody = CrashReportBody | DeprecationReportBody | InterventionReportBody;\n\ninterface CrashReportBody {\n [key: string]: unknown;\n crashId: string;\n reason?: string;\n}\n\ninterface DeprecationReportBody {\n [key: string]: unknown;\n id: string;\n anticipatedRemoval?: Date;\n message: string;\n sourceFile?: string;\n lineNumber?: number;\n columnNumber?: number;\n}\n\ninterface InterventionReportBody {\n [key: string]: unknown;\n id: string;\n message: string;\n sourceFile?: string;\n lineNumber?: number;\n columnNumber?: number;\n}\n\ninterface ReportingObserverOptions {\n types?: ReportTypes[];\n}\n\n/** This is experimental and the types are not included with TypeScript, sadly. */\ninterface ReportingObserverClass {\n new (\n handler: (reports: Report[]) => void,\n options: { buffered?: boolean; types?: ReportTypes[] },\n ): {\n observe: () => void;\n };\n}\n\nconst SETUP_CLIENTS = new WeakMap<Client, boolean>();\n\nconst _reportingObserverIntegration = ((options: ReportingObserverOptions = {}) => {\n const types = options.types || ['crash', 'deprecation', 'intervention'];\n\n /** Handler for the reporting observer. */\n function handler(reports: Report[]): void {\n if (!SETUP_CLIENTS.has(getClient() as Client)) {\n return;\n }\n\n for (const report of reports) {\n withScope(scope => {\n scope.setExtra('url', report.url);\n\n const label = `ReportingObserver [${report.type}]`;\n let details = 'No details available';\n\n if (report.body) {\n // Object.keys doesn't work on ReportBody, as all properties are inherited\n const plainBody: {\n [key: string]: unknown;\n } = {};\n\n // eslint-disable-next-line guard-for-in\n for (const prop in report.body) {\n plainBody[prop] = report.body[prop];\n }\n\n scope.setExtra('body', plainBody);\n\n if (report.type === 'crash') {\n const body = report.body as CrashReportBody;\n // A fancy way to create a message out of crashId OR reason OR both OR fallback\n details = [body.crashId || '', body.reason || ''].join(' ').trim() || details;\n } else {\n const body = report.body as DeprecationReportBody | InterventionReportBody;\n details = body.message || details;\n }\n }\n\n captureMessage(`${label}: ${details}`);\n });\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n if (!supportsReportingObserver()) {\n return;\n }\n\n const observer = new (WINDOW as typeof WINDOW & { ReportingObserver: ReportingObserverClass }).ReportingObserver(\n handler,\n {\n buffered: true,\n types,\n },\n );\n\n observer.observe();\n },\n\n setup(client): void {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Reporting API integration - https://w3c.github.io/reporting/\n */\nexport const reportingObserverIntegration = defineIntegration(_reportingObserverIntegration);\n"],"names":["GLOBAL_OBJ","getClient","withScope","captureMessage","supportsReportingObserver","defineIntegration"],"mappings":";;;;AAUA,MAAM,MAAA,GAASA,eAAA;;AAEf,MAAM,gBAAA,GAAmB,mBAAmB;;AAoD5C,MAAM,aAAA,GAAgB,IAAI,OAAO,EAAmB;;AAEpD,MAAM,6BAAA,IAAiC,CAAC,OAAO,GAA6B,EAAE,KAAK;AACnF,EAAE,MAAM,KAAA,GAAQ,OAAO,CAAC,KAAA,IAAS,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC;;AAEzE;AACA,EAAE,SAAS,OAAO,CAAC,OAAO,EAAkB;AAC5C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAACC,cAAS,EAAC,EAAY,EAAE;AACnD,MAAM;AACN,IAAI;;AAEJ,IAAI,KAAK,MAAM,MAAA,IAAU,OAAO,EAAE;AAClC,MAAMC,cAAS,CAAC,KAAA,IAAS;AACzB,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;;AAEzC,QAAQ,MAAM,KAAA,GAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,QAAQ,IAAI,OAAA,GAAU,sBAAsB;;AAE5C,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;AACzB;AACA,UAAU,MAAM;;AAEN,GAAI,EAAE;;AAEhB;AACA,UAAU,KAAK,MAAM,IAAA,IAAQ,MAAM,CAAC,IAAI,EAAE;AAC1C,YAAY,SAAS,CAAC,IAAI,CAAA,GAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,UAAU;;AAEV,UAAU,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;;AAE3C,UAAU,IAAI,MAAM,CAAC,IAAA,KAAS,OAAO,EAAE;AACvC,YAAY,MAAM,IAAA,GAAO,MAAM,CAAC,IAAA;AAChC;AACA,YAAY,OAAA,GAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,MAAA,IAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAC,IAAK,OAAO;AACzF,UAAU,OAAO;AACjB,YAAY,MAAM,IAAA,GAAO,MAAM,CAAC,IAAA;AAChC,YAAY,UAAU,IAAI,CAAC,OAAA,IAAW,OAAO;AAC7C,UAAU;AACV,QAAQ;;AAER,QAAQC,mBAAc,CAAC,CAAC,EAAA,KAAA,CAAA,EAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AACA,MAAA,CAAA,CAAA;AACA,IAAA;AACA,EAAA;;AAEA,EAAA,OAAA;AACA,IAAA,IAAA,EAAA,gBAAA;AACA,IAAA,SAAA,GAAA;AACA,MAAA,IAAA,CAAAC,8BAAA,EAAA,EAAA;AACA,QAAA;AACA,MAAA;;AAEA,MAAA,MAAA,QAAA,GAAA,IAAA,CAAA,MAAA,GAAA,iBAAA;AACA,QAAA,OAAA;AACA,QAAA;AACA,UAAA,QAAA,EAAA,IAAA;AACA,UAAA,KAAA;AACA,SAAA;AACA,OAAA;;AAEA,MAAA,QAAA,CAAA,OAAA,EAAA;AACA,IAAA,CAAA;;AAEA,IAAA,KAAA,CAAA,MAAA,EAAA;AACA,MAAA,aAAA,CAAA,GAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AACA,IAAA,CAAA;AACA,GAAA;AACA,CAAA,CAAA;;AAEA;AACA;AACA;AACA,MAAA,4BAAA,GAAAC,sBAAA,CAAA,6BAAA;;;;"}