@sentry/core 10.51.0 → 10.53.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 (361) hide show
  1. package/browser.js +3 -0
  2. package/build/cjs/browser.js +529 -0
  3. package/build/cjs/browser.js.map +1 -0
  4. package/build/cjs/client.js +15 -2
  5. package/build/cjs/client.js.map +1 -1
  6. package/build/cjs/fetch.js +7 -4
  7. package/build/cjs/fetch.js.map +1 -1
  8. package/build/cjs/index.js +82 -62
  9. package/build/cjs/index.js.map +1 -1
  10. package/build/cjs/instrument/console.js +43 -3
  11. package/build/cjs/instrument/console.js.map +1 -1
  12. package/build/cjs/integrations/captureconsole.js +2 -2
  13. package/build/cjs/integrations/captureconsole.js.map +1 -1
  14. package/build/cjs/integrations/console.js +5 -1
  15. package/build/cjs/integrations/console.js.map +1 -1
  16. package/build/cjs/integrations/express/index.js +4 -6
  17. package/build/cjs/integrations/express/index.js.map +1 -1
  18. package/build/cjs/integrations/express/utils.js +0 -7
  19. package/build/cjs/integrations/express/utils.js.map +1 -1
  20. package/build/cjs/integrations/http/add-outgoing-request-breadcrumb.js +43 -0
  21. package/build/cjs/integrations/http/add-outgoing-request-breadcrumb.js.map +1 -0
  22. package/build/cjs/integrations/http/client-patch.js +113 -0
  23. package/build/cjs/integrations/http/client-patch.js.map +1 -0
  24. package/build/cjs/integrations/http/client-subscriptions.js +166 -0
  25. package/build/cjs/integrations/http/client-subscriptions.js.map +1 -0
  26. package/build/cjs/integrations/http/constants.js +10 -0
  27. package/build/cjs/integrations/http/constants.js.map +1 -0
  28. package/build/cjs/integrations/http/double-wrap-warning.js +29 -0
  29. package/build/cjs/integrations/http/double-wrap-warning.js.map +1 -0
  30. package/build/cjs/integrations/http/get-outgoing-span-data.js +88 -0
  31. package/build/cjs/integrations/http/get-outgoing-span-data.js.map +1 -0
  32. package/build/cjs/integrations/http/get-request-url.js +54 -0
  33. package/build/cjs/integrations/http/get-request-url.js.map +1 -0
  34. package/build/cjs/integrations/http/inject-trace-propagation-headers.js +81 -0
  35. package/build/cjs/integrations/http/inject-trace-propagation-headers.js.map +1 -0
  36. package/build/cjs/integrations/mcp-server/errorCapture.js +2 -2
  37. package/build/cjs/integrations/mcp-server/errorCapture.js.map +1 -1
  38. package/build/cjs/integrations/mcp-server/handlers.js +72 -0
  39. package/build/cjs/integrations/mcp-server/handlers.js.map +1 -1
  40. package/build/cjs/integrations/mcp-server/index.js +10 -1
  41. package/build/cjs/integrations/mcp-server/index.js.map +1 -1
  42. package/build/cjs/integrations/requestdata.js +85 -3
  43. package/build/cjs/integrations/requestdata.js.map +1 -1
  44. package/build/cjs/integrations/supabase.js +4 -4
  45. package/build/cjs/integrations/supabase.js.map +1 -1
  46. package/build/cjs/logs/envelope.js +12 -2
  47. package/build/cjs/logs/envelope.js.map +1 -1
  48. package/build/cjs/logs/internal.js +7 -1
  49. package/build/cjs/logs/internal.js.map +1 -1
  50. package/build/cjs/metrics/envelope.js +15 -2
  51. package/build/cjs/metrics/envelope.js.map +1 -1
  52. package/build/cjs/metrics/internal.js +7 -1
  53. package/build/cjs/metrics/internal.js.map +1 -1
  54. package/build/cjs/server.js +563 -0
  55. package/build/cjs/server.js.map +1 -0
  56. package/build/cjs/tracing/ai/utils.js +2 -2
  57. package/build/cjs/tracing/ai/utils.js.map +1 -1
  58. package/build/cjs/tracing/anthropic-ai/index.js +3 -3
  59. package/build/cjs/tracing/anthropic-ai/index.js.map +1 -1
  60. package/build/cjs/tracing/anthropic-ai/streaming.js +3 -3
  61. package/build/cjs/tracing/anthropic-ai/streaming.js.map +1 -1
  62. package/build/cjs/tracing/anthropic-ai/utils.js +2 -2
  63. package/build/cjs/tracing/anthropic-ai/utils.js.map +1 -1
  64. package/build/cjs/tracing/google-genai/index.js +3 -3
  65. package/build/cjs/tracing/google-genai/index.js.map +1 -1
  66. package/build/cjs/tracing/google-genai/streaming.js +2 -2
  67. package/build/cjs/tracing/google-genai/streaming.js.map +1 -1
  68. package/build/cjs/tracing/langchain/embeddings.js +2 -2
  69. package/build/cjs/tracing/langchain/embeddings.js.map +1 -1
  70. package/build/cjs/tracing/langchain/index.js +4 -4
  71. package/build/cjs/tracing/langchain/index.js.map +1 -1
  72. package/build/cjs/tracing/langgraph/index.js +3 -3
  73. package/build/cjs/tracing/langgraph/index.js.map +1 -1
  74. package/build/cjs/tracing/langgraph/utils.js +2 -2
  75. package/build/cjs/tracing/langgraph/utils.js.map +1 -1
  76. package/build/cjs/tracing/openai/index.js +3 -3
  77. package/build/cjs/tracing/openai/index.js.map +1 -1
  78. package/build/cjs/tracing/openai/streaming.js +2 -2
  79. package/build/cjs/tracing/openai/streaming.js.map +1 -1
  80. package/build/cjs/tracing/sentrySpan.js +5 -0
  81. package/build/cjs/tracing/sentrySpan.js.map +1 -1
  82. package/build/cjs/tracing/spans/captureSpan.js +58 -23
  83. package/build/cjs/tracing/spans/captureSpan.js.map +1 -1
  84. package/build/cjs/tracing/spans/extractGenAiSpans.js +60 -0
  85. package/build/cjs/tracing/spans/extractGenAiSpans.js.map +1 -0
  86. package/build/cjs/tracing/spans/spanJsonToStreamedSpan.js +26 -0
  87. package/build/cjs/tracing/spans/spanJsonToStreamedSpan.js.map +1 -0
  88. package/build/cjs/tracing/trace.js +1 -0
  89. package/build/cjs/tracing/trace.js.map +1 -1
  90. package/build/cjs/tracing/vercel-ai/constants.js +8 -0
  91. package/build/cjs/tracing/vercel-ai/constants.js.map +1 -1
  92. package/build/cjs/tracing/vercel-ai/index.js +99 -15
  93. package/build/cjs/tracing/vercel-ai/index.js.map +1 -1
  94. package/build/cjs/trpc.js +3 -3
  95. package/build/cjs/trpc.js.map +1 -1
  96. package/build/cjs/utils/baggage.js +73 -0
  97. package/build/cjs/utils/baggage.js.map +1 -1
  98. package/build/cjs/utils/chain-and-copy-promiselike.js +1 -0
  99. package/build/cjs/utils/chain-and-copy-promiselike.js.map +1 -1
  100. package/build/cjs/utils/exports.js +7 -7
  101. package/build/cjs/utils/exports.js.map +1 -1
  102. package/build/cjs/utils/flushIfServerless.js +2 -2
  103. package/build/cjs/utils/flushIfServerless.js.map +1 -1
  104. package/build/cjs/utils/get-default-export.js +32 -0
  105. package/build/cjs/utils/get-default-export.js.map +1 -0
  106. package/build/cjs/utils/request.js +129 -0
  107. package/build/cjs/utils/request.js.map +1 -1
  108. package/build/cjs/utils/spanUtils.js +1 -1
  109. package/build/cjs/utils/spanUtils.js.map +1 -1
  110. package/build/cjs/utils/string.js +9 -2
  111. package/build/cjs/utils/string.js.map +1 -1
  112. package/build/cjs/utils/traceData.js +2 -2
  113. package/build/cjs/utils/traceData.js.map +1 -1
  114. package/build/cjs/utils/version.js +1 -1
  115. package/build/esm/browser.js +142 -0
  116. package/build/esm/browser.js.map +1 -0
  117. package/build/esm/client.js +15 -2
  118. package/build/esm/client.js.map +1 -1
  119. package/build/esm/fetch.js +7 -4
  120. package/build/esm/fetch.js.map +1 -1
  121. package/build/esm/index.js +20 -15
  122. package/build/esm/index.js.map +1 -1
  123. package/build/esm/instrument/console.js +44 -5
  124. package/build/esm/instrument/console.js.map +1 -1
  125. package/build/esm/integrations/console.js +6 -2
  126. package/build/esm/integrations/console.js.map +1 -1
  127. package/build/esm/integrations/express/index.js +3 -5
  128. package/build/esm/integrations/express/index.js.map +1 -1
  129. package/build/esm/integrations/express/utils.js +1 -7
  130. package/build/esm/integrations/express/utils.js.map +1 -1
  131. package/build/esm/integrations/http/add-outgoing-request-breadcrumb.js +41 -0
  132. package/build/esm/integrations/http/add-outgoing-request-breadcrumb.js.map +1 -0
  133. package/build/esm/integrations/http/client-patch.js +111 -0
  134. package/build/esm/integrations/http/client-patch.js.map +1 -0
  135. package/build/esm/integrations/http/client-subscriptions.js +164 -0
  136. package/build/esm/integrations/http/client-subscriptions.js.map +1 -0
  137. package/build/esm/integrations/http/constants.js +6 -0
  138. package/build/esm/integrations/http/constants.js.map +1 -0
  139. package/build/esm/integrations/http/double-wrap-warning.js +26 -0
  140. package/build/esm/integrations/http/double-wrap-warning.js.map +1 -0
  141. package/build/esm/integrations/http/get-outgoing-span-data.js +85 -0
  142. package/build/esm/integrations/http/get-outgoing-span-data.js.map +1 -0
  143. package/build/esm/integrations/http/get-request-url.js +49 -0
  144. package/build/esm/integrations/http/get-request-url.js.map +1 -0
  145. package/build/esm/integrations/http/inject-trace-propagation-headers.js +79 -0
  146. package/build/esm/integrations/http/inject-trace-propagation-headers.js.map +1 -0
  147. package/build/esm/integrations/mcp-server/handlers.js +72 -1
  148. package/build/esm/integrations/mcp-server/handlers.js.map +1 -1
  149. package/build/esm/integrations/mcp-server/index.js +11 -2
  150. package/build/esm/integrations/mcp-server/index.js.map +1 -1
  151. package/build/esm/integrations/requestdata.js +85 -3
  152. package/build/esm/integrations/requestdata.js.map +1 -1
  153. package/build/esm/logs/envelope.js +12 -2
  154. package/build/esm/logs/envelope.js.map +1 -1
  155. package/build/esm/logs/internal.js +7 -1
  156. package/build/esm/logs/internal.js.map +1 -1
  157. package/build/esm/metrics/envelope.js +15 -2
  158. package/build/esm/metrics/envelope.js.map +1 -1
  159. package/build/esm/metrics/internal.js +7 -1
  160. package/build/esm/metrics/internal.js.map +1 -1
  161. package/build/esm/package.json +1 -1
  162. package/build/esm/server.js +157 -0
  163. package/build/esm/server.js.map +1 -0
  164. package/build/esm/tracing/sentrySpan.js +5 -0
  165. package/build/esm/tracing/sentrySpan.js.map +1 -1
  166. package/build/esm/tracing/spans/captureSpan.js +58 -23
  167. package/build/esm/tracing/spans/captureSpan.js.map +1 -1
  168. package/build/esm/tracing/spans/extractGenAiSpans.js +58 -0
  169. package/build/esm/tracing/spans/extractGenAiSpans.js.map +1 -0
  170. package/build/esm/tracing/spans/spanJsonToStreamedSpan.js +24 -0
  171. package/build/esm/tracing/spans/spanJsonToStreamedSpan.js.map +1 -0
  172. package/build/esm/tracing/trace.js +1 -1
  173. package/build/esm/tracing/trace.js.map +1 -1
  174. package/build/esm/tracing/vercel-ai/constants.js +8 -1
  175. package/build/esm/tracing/vercel-ai/constants.js.map +1 -1
  176. package/build/esm/tracing/vercel-ai/index.js +101 -18
  177. package/build/esm/tracing/vercel-ai/index.js.map +1 -1
  178. package/build/esm/utils/baggage.js +73 -1
  179. package/build/esm/utils/baggage.js.map +1 -1
  180. package/build/esm/utils/chain-and-copy-promiselike.js +1 -0
  181. package/build/esm/utils/chain-and-copy-promiselike.js.map +1 -1
  182. package/build/esm/utils/exports.js +7 -7
  183. package/build/esm/utils/exports.js.map +1 -1
  184. package/build/esm/utils/get-default-export.js +30 -0
  185. package/build/esm/utils/get-default-export.js.map +1 -0
  186. package/build/esm/utils/request.js +127 -1
  187. package/build/esm/utils/request.js.map +1 -1
  188. package/build/esm/utils/spanUtils.js +1 -1
  189. package/build/esm/utils/spanUtils.js.map +1 -1
  190. package/build/esm/utils/string.js +9 -2
  191. package/build/esm/utils/string.js.map +1 -1
  192. package/build/esm/utils/version.js +1 -1
  193. package/build/types/browser-exports.d.ts +11 -0
  194. package/build/types/browser-exports.d.ts.map +1 -0
  195. package/build/types/browser.d.ts +3 -0
  196. package/build/types/browser.d.ts.map +1 -0
  197. package/build/types/build-time-plugins/buildTimeOptionsBase.d.ts +8 -0
  198. package/build/types/build-time-plugins/buildTimeOptionsBase.d.ts.map +1 -1
  199. package/build/types/carrier.d.ts +1 -1
  200. package/build/types/carrier.d.ts.map +1 -1
  201. package/build/types/client.d.ts.map +1 -1
  202. package/build/types/fetch.d.ts.map +1 -1
  203. package/build/types/index.d.ts +3 -223
  204. package/build/types/index.d.ts.map +1 -1
  205. package/build/types/instrument/console.d.ts +7 -0
  206. package/build/types/instrument/console.d.ts.map +1 -1
  207. package/build/types/integrations/captureconsole.d.ts +1 -1
  208. package/build/types/integrations/captureconsole.d.ts.map +1 -1
  209. package/build/types/integrations/console.d.ts +5 -0
  210. package/build/types/integrations/console.d.ts.map +1 -1
  211. package/build/types/integrations/conversationId.d.ts +1 -1
  212. package/build/types/integrations/conversationId.d.ts.map +1 -1
  213. package/build/types/integrations/dedupe.d.ts +1 -1
  214. package/build/types/integrations/dedupe.d.ts.map +1 -1
  215. package/build/types/integrations/eventFilters.d.ts +2 -2
  216. package/build/types/integrations/eventFilters.d.ts.map +1 -1
  217. package/build/types/integrations/express/index.d.ts.map +1 -1
  218. package/build/types/integrations/express/utils.d.ts +1 -5
  219. package/build/types/integrations/express/utils.d.ts.map +1 -1
  220. package/build/types/integrations/extraerrordata.d.ts +1 -1
  221. package/build/types/integrations/extraerrordata.d.ts.map +1 -1
  222. package/build/types/integrations/functiontostring.d.ts +1 -1
  223. package/build/types/integrations/functiontostring.d.ts.map +1 -1
  224. package/build/types/integrations/http/add-outgoing-request-breadcrumb.d.ts +6 -0
  225. package/build/types/integrations/http/add-outgoing-request-breadcrumb.d.ts.map +1 -0
  226. package/build/types/integrations/http/client-patch.d.ts +46 -0
  227. package/build/types/integrations/http/client-patch.d.ts.map +1 -0
  228. package/build/types/integrations/http/client-subscriptions.d.ts +21 -0
  229. package/build/types/integrations/http/client-subscriptions.d.ts.map +1 -0
  230. package/build/types/integrations/http/constants.d.ts +6 -0
  231. package/build/types/integrations/http/constants.d.ts.map +1 -0
  232. package/build/types/integrations/http/double-wrap-warning.d.ts +4 -0
  233. package/build/types/integrations/http/double-wrap-warning.d.ts.map +1 -0
  234. package/build/types/integrations/http/get-outgoing-span-data.d.ts +13 -0
  235. package/build/types/integrations/http/get-outgoing-span-data.d.ts.map +1 -0
  236. package/build/types/integrations/http/get-request-url.d.ts +10 -0
  237. package/build/types/integrations/http/get-request-url.d.ts.map +1 -0
  238. package/build/types/integrations/http/index.d.ts +4 -0
  239. package/build/types/integrations/http/index.d.ts.map +1 -0
  240. package/build/types/integrations/http/inject-trace-propagation-headers.d.ts +12 -0
  241. package/build/types/integrations/http/inject-trace-propagation-headers.d.ts.map +1 -0
  242. package/build/types/integrations/http/types.d.ts +249 -0
  243. package/build/types/integrations/http/types.d.ts.map +1 -0
  244. package/build/types/integrations/linkederrors.d.ts +1 -1
  245. package/build/types/integrations/linkederrors.d.ts.map +1 -1
  246. package/build/types/integrations/mcp-server/handlers.d.ts +18 -0
  247. package/build/types/integrations/mcp-server/handlers.d.ts.map +1 -1
  248. package/build/types/integrations/mcp-server/index.d.ts +8 -1
  249. package/build/types/integrations/mcp-server/index.d.ts.map +1 -1
  250. package/build/types/integrations/requestdata.d.ts +1 -1
  251. package/build/types/integrations/requestdata.d.ts.map +1 -1
  252. package/build/types/integrations/spanStreaming.d.ts +1 -1
  253. package/build/types/integrations/spanStreaming.d.ts.map +1 -1
  254. package/build/types/integrations/supabase.d.ts +1 -1
  255. package/build/types/integrations/supabase.d.ts.map +1 -1
  256. package/build/types/integrations/zoderrors.d.ts +1 -1
  257. package/build/types/integrations/zoderrors.d.ts.map +1 -1
  258. package/build/types/logs/console-integration.d.ts +1 -1
  259. package/build/types/logs/console-integration.d.ts.map +1 -1
  260. package/build/types/logs/envelope.d.ts +5 -2
  261. package/build/types/logs/envelope.d.ts.map +1 -1
  262. package/build/types/logs/internal.d.ts.map +1 -1
  263. package/build/types/metrics/envelope.d.ts +5 -2
  264. package/build/types/metrics/envelope.d.ts.map +1 -1
  265. package/build/types/metrics/internal.d.ts.map +1 -1
  266. package/build/types/server-exports.d.ts +26 -0
  267. package/build/types/server-exports.d.ts.map +1 -0
  268. package/build/types/server.d.ts +10 -0
  269. package/build/types/server.d.ts.map +1 -0
  270. package/build/types/shared-exports.d.ts +215 -0
  271. package/build/types/shared-exports.d.ts.map +1 -0
  272. package/build/types/tracing/index.d.ts +1 -1
  273. package/build/types/tracing/index.d.ts.map +1 -1
  274. package/build/types/tracing/sentrySpan.d.ts.map +1 -1
  275. package/build/types/tracing/spans/captureSpan.d.ts +4 -4
  276. package/build/types/tracing/spans/captureSpan.d.ts.map +1 -1
  277. package/build/types/tracing/spans/extractGenAiSpans.d.ts +15 -0
  278. package/build/types/tracing/spans/extractGenAiSpans.d.ts.map +1 -0
  279. package/build/types/tracing/spans/spanJsonToStreamedSpan.d.ts +6 -0
  280. package/build/types/tracing/spans/spanJsonToStreamedSpan.d.ts.map +1 -0
  281. package/build/types/tracing/trace.d.ts +1 -0
  282. package/build/types/tracing/trace.d.ts.map +1 -1
  283. package/build/types/tracing/vercel-ai/constants.d.ts +1 -0
  284. package/build/types/tracing/vercel-ai/constants.d.ts.map +1 -1
  285. package/build/types/tracing/vercel-ai/index.d.ts +9 -0
  286. package/build/types/tracing/vercel-ai/index.d.ts.map +1 -1
  287. package/build/types/types-hoist/envelope.d.ts +1 -1
  288. package/build/types/types-hoist/envelope.d.ts.map +1 -1
  289. package/build/types/types-hoist/log.d.ts +5 -0
  290. package/build/types/types-hoist/log.d.ts.map +1 -1
  291. package/build/types/types-hoist/metric.d.ts +5 -0
  292. package/build/types/types-hoist/metric.d.ts.map +1 -1
  293. package/build/types/types-hoist/options.d.ts +8 -0
  294. package/build/types/types-hoist/options.d.ts.map +1 -1
  295. package/build/types/types-hoist/webfetchapi.d.ts +2 -0
  296. package/build/types/types-hoist/webfetchapi.d.ts.map +1 -1
  297. package/build/types/utils/baggage.d.ts +13 -0
  298. package/build/types/utils/baggage.d.ts.map +1 -1
  299. package/build/types/utils/get-default-export.d.ts +22 -0
  300. package/build/types/utils/get-default-export.d.ts.map +1 -0
  301. package/build/types/utils/request.d.ts +30 -0
  302. package/build/types/utils/request.d.ts.map +1 -1
  303. package/build/types/utils/spanUtils.d.ts +1 -1
  304. package/build/types/utils/string.d.ts +1 -1
  305. package/build/types/utils/string.d.ts.map +1 -1
  306. package/build/types-ts3.8/browser-exports.d.ts +11 -0
  307. package/build/types-ts3.8/browser.d.ts +3 -0
  308. package/build/types-ts3.8/build-time-plugins/buildTimeOptionsBase.d.ts +8 -0
  309. package/build/types-ts3.8/carrier.d.ts +1 -1
  310. package/build/types-ts3.8/index.d.ts +3 -225
  311. package/build/types-ts3.8/instrument/console.d.ts +7 -0
  312. package/build/types-ts3.8/integrations/captureconsole.d.ts +1 -1
  313. package/build/types-ts3.8/integrations/console.d.ts +5 -0
  314. package/build/types-ts3.8/integrations/conversationId.d.ts +1 -1
  315. package/build/types-ts3.8/integrations/dedupe.d.ts +1 -1
  316. package/build/types-ts3.8/integrations/eventFilters.d.ts +2 -2
  317. package/build/types-ts3.8/integrations/express/utils.d.ts +1 -5
  318. package/build/types-ts3.8/integrations/extraerrordata.d.ts +1 -1
  319. package/build/types-ts3.8/integrations/functiontostring.d.ts +1 -1
  320. package/build/types-ts3.8/integrations/http/add-outgoing-request-breadcrumb.d.ts +6 -0
  321. package/build/types-ts3.8/integrations/http/client-patch.d.ts +46 -0
  322. package/build/types-ts3.8/integrations/http/client-subscriptions.d.ts +21 -0
  323. package/build/types-ts3.8/integrations/http/constants.d.ts +6 -0
  324. package/build/types-ts3.8/integrations/http/double-wrap-warning.d.ts +4 -0
  325. package/build/types-ts3.8/integrations/http/get-outgoing-span-data.d.ts +13 -0
  326. package/build/types-ts3.8/integrations/http/get-request-url.d.ts +10 -0
  327. package/build/types-ts3.8/integrations/http/index.d.ts +4 -0
  328. package/build/types-ts3.8/integrations/http/inject-trace-propagation-headers.d.ts +12 -0
  329. package/build/types-ts3.8/integrations/http/types.d.ts +252 -0
  330. package/build/types-ts3.8/integrations/linkederrors.d.ts +1 -1
  331. package/build/types-ts3.8/integrations/mcp-server/handlers.d.ts +18 -0
  332. package/build/types-ts3.8/integrations/mcp-server/index.d.ts +8 -1
  333. package/build/types-ts3.8/integrations/requestdata.d.ts +1 -1
  334. package/build/types-ts3.8/integrations/spanStreaming.d.ts +1 -1
  335. package/build/types-ts3.8/integrations/supabase.d.ts +1 -1
  336. package/build/types-ts3.8/integrations/zoderrors.d.ts +1 -1
  337. package/build/types-ts3.8/logs/console-integration.d.ts +1 -1
  338. package/build/types-ts3.8/logs/envelope.d.ts +5 -2
  339. package/build/types-ts3.8/metrics/envelope.d.ts +5 -2
  340. package/build/types-ts3.8/server-exports.d.ts +21 -0
  341. package/build/types-ts3.8/server.d.ts +10 -0
  342. package/build/types-ts3.8/shared-exports.d.ts +214 -0
  343. package/build/types-ts3.8/tracing/index.d.ts +1 -1
  344. package/build/types-ts3.8/tracing/spans/captureSpan.d.ts +4 -4
  345. package/build/types-ts3.8/tracing/spans/extractGenAiSpans.d.ts +15 -0
  346. package/build/types-ts3.8/tracing/spans/spanJsonToStreamedSpan.d.ts +6 -0
  347. package/build/types-ts3.8/tracing/trace.d.ts +1 -0
  348. package/build/types-ts3.8/tracing/vercel-ai/constants.d.ts +1 -0
  349. package/build/types-ts3.8/tracing/vercel-ai/index.d.ts +9 -0
  350. package/build/types-ts3.8/types-hoist/envelope.d.ts +1 -1
  351. package/build/types-ts3.8/types-hoist/log.d.ts +5 -0
  352. package/build/types-ts3.8/types-hoist/metric.d.ts +5 -0
  353. package/build/types-ts3.8/types-hoist/options.d.ts +8 -0
  354. package/build/types-ts3.8/types-hoist/webfetchapi.d.ts +2 -0
  355. package/build/types-ts3.8/utils/baggage.d.ts +13 -0
  356. package/build/types-ts3.8/utils/get-default-export.d.ts +22 -0
  357. package/build/types-ts3.8/utils/request.d.ts +30 -0
  358. package/build/types-ts3.8/utils/spanUtils.d.ts +1 -1
  359. package/build/types-ts3.8/utils/string.d.ts +1 -1
  360. package/package.json +24 -2
  361. package/server.js +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sources":["../../src/fetch.ts"],"sourcesContent":["import { getClient } from './currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, startInactiveSpan } from './tracing';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';\nimport type { FetchBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { HandlerDataFetch } from './types-hoist/instrument';\nimport type { ResponseHookInfo } from './types-hoist/request';\nimport type { Span, SpanAttributes, SpanOrigin } from './types-hoist/span';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled';\nimport { isInstanceOf, isRequest } from './utils/is';\nimport { getActiveSpan } from './utils/spanUtils';\nimport { getTraceData } from './utils/traceData';\nimport {\n getSanitizedUrlStringFromUrlObject,\n isURLObjectRelative,\n parseStringToURLObject,\n stripDataUrlContent,\n} from './utils/url';\n\ntype PolymorphicRequestHeaders =\n | Record<string, unknown>\n | Array<[string, unknown]>\n | Iterable<Iterable<unknown>>\n // the below is not precisely the Header type used in Request, but it'll pass duck-typing\n | {\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\ninterface InstrumentFetchRequestOptions {\n spanOrigin?: SpanOrigin;\n propagateTraceparent?: boolean;\n onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void;\n}\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @deprecated pass an options object instead of the spanOrigin parameter\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record<string, Span>,\n spanOrigin: SpanOrigin,\n): Span | undefined;\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record<string, Span>,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- needed because the other overload is deprecated\n instrumentFetchRequestOptions: InstrumentFetchRequestOptions,\n): Span | undefined;\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record<string, Span>,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): Span | undefined {\n if (!handlerData.fetchData) {\n return undefined;\n }\n\n const { method, url } = handlerData.fetchData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n\n if (span) {\n // Only end the span and call hooks if we're actually recording\n if (shouldCreateSpanResult) {\n endSpan(span, handlerData);\n _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n\n return undefined;\n }\n\n // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter\n // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter\n // TODO (v11): remove this backwards-compatible code and only accept the options parameter\n const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } =\n typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions };\n\n const client = getClient();\n const hasParent = !!getActiveSpan();\n\n const span =\n shouldCreateSpanResult && hasParent\n ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin))\n : new SentryNonRecordingSpan();\n\n if (shouldCreateSpanResult && !hasParent) {\n client?.recordDroppedEvent('no_parent_span', 'span');\n }\n\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n const request: string | Request = handlerData.args[0];\n\n // Shallow clone the options object to avoid mutating the original user-provided object\n // Examples: users re-using same options object for multiple fetch calls, frozen objects\n const options: { [key: string]: unknown } = { ...(handlerData.args[1] || {}) };\n\n const headers = _INTERNAL_getTracingHeadersForFetchRequest(\n request,\n options,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && hasParent ? span : undefined,\n propagateTraceparent,\n );\n if (headers) {\n // Ensure this is actually set, if no options have been passed previously\n handlerData.args[1] = options;\n options.headers = headers;\n }\n }\n\n if (client) {\n const fetchHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp: handlerData.startTimestamp,\n endTimestamp: handlerData.endTimestamp,\n } satisfies FetchBreadcrumbHint;\n\n client.emit('beforeOutgoingRequestSpan', span, fetchHint);\n }\n\n return span;\n}\n\n/**\n * Calls the onRequestSpanEnd callback if it is defined.\n */\nexport function _callOnRequestSpanEnd(\n span: Span,\n handlerData: HandlerDataFetch,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): void {\n const onRequestSpanEnd =\n typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null\n ? spanOriginOrOptions.onRequestSpanEnd\n : undefined;\n\n onRequestSpanEnd?.(span, {\n headers: handlerData.response?.headers,\n error: handlerData.error,\n });\n}\n\n/**\n * Builds merged fetch headers that include `sentry-trace` and `baggage` (and optionally `traceparent`)\n * for the given request and init, without mutating the original request or options.\n * Returns `undefined` when there is no `sentry-trace` value to attach.\n *\n * @internal Exported for cross-package instrumentation (for example Cloudflare Workers fetcher bindings)\n * and unit tests\n *\n * Baggage handling:\n * 1. No previous baggage header → include Sentry baggage\n * 2. Previous baggage has no Sentry entries → merge Sentry baggage in\n * 3. Previous baggage already has Sentry entries → leave as-is (may be user-defined)\n */\n// eslint-disable-next-line complexity -- yup it's this complicated :(\nexport function _INTERNAL_getTracingHeadersForFetchRequest(\n request: string | URL | Request,\n fetchOptionsObj: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n span?: Span,\n propagateTraceparent?: boolean,\n): PolymorphicRequestHeaders | undefined {\n const traceHeaders = getTraceData({ span, propagateTraceparent });\n const sentryTrace = traceHeaders['sentry-trace'];\n const baggage = traceHeaders.baggage;\n const traceparent = traceHeaders.traceparent;\n\n // Nothing to do, when we return undefined here, the original headers will be used\n if (!sentryTrace) {\n return undefined;\n }\n\n const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined);\n\n if (!originalHeaders) {\n return { ...traceHeaders };\n } else if (isHeaders(originalHeaders)) {\n const newHeaders = new Headers(originalHeaders);\n\n // We don't want to override manually added sentry headers\n if (!newHeaders.get('sentry-trace')) {\n newHeaders.set('sentry-trace', sentryTrace);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) {\n newHeaders.set('traceparent', traceparent);\n }\n\n if (baggage) {\n const prevBaggageHeader = newHeaders.get('baggage');\n\n if (!prevBaggageHeader) {\n newHeaders.set('baggage', baggage);\n } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`);\n }\n }\n\n return newHeaders;\n } else if (isHeadersInitTupleArray(originalHeaders)) {\n const newHeaders = [...originalHeaders];\n\n if (!newHeaders.find(header => header[0] === 'sentry-trace')) {\n newHeaders.push(['sentry-trace', sentryTrace]);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.find(header => header[0] === 'traceparent')) {\n newHeaders.push(['traceparent', traceparent]);\n }\n\n const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n header =>\n header[0] === 'baggage' && typeof header[1] === 'string' && baggageHeaderHasSentryBaggageValues(header[1]),\n );\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push(['baggage', baggage]);\n }\n\n return newHeaders;\n } else {\n const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined;\n const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined;\n const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined;\n\n const newBaggageHeaders: string[] = existingBaggageHeader\n ? Array.isArray(existingBaggageHeader)\n ? [...existingBaggageHeader]\n : [existingBaggageHeader]\n : [];\n\n const prevBaggageHeaderWithSentryValues =\n existingBaggageHeader &&\n (Array.isArray(existingBaggageHeader)\n ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem))\n : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n newBaggageHeaders.push(baggage);\n }\n\n const newHeaders: {\n 'sentry-trace': string;\n baggage: string | undefined;\n traceparent?: string;\n } = Object.assign({}, originalHeaders, {\n 'sentry-trace': (existingSentryTraceHeader as string | undefined) ?? sentryTrace,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n });\n\n if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n newHeaders.traceparent = traceparent;\n }\n\n return newHeaders;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength = handlerData.response?.headers?.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n}\n\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader: unknown): boolean {\n if (typeof baggageHeader !== 'string') {\n return false;\n }\n\n return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\n\nfunction isHeaders(headers: unknown): headers is Headers {\n return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers);\n}\n\n/** `HeadersInit` array form: each entry is a [name, value] pair of strings. */\nfunction isHeadersInitTupleArray(headers: unknown): headers is [string, unknown][] {\n if (!Array.isArray(headers)) {\n return false;\n }\n\n return headers.every(\n (item): item is [string, unknown] => Array.isArray(item) && item.length === 2 && typeof item[0] === 'string',\n );\n}\n\nfunction getSpanStartOptions(\n url: string,\n method: string,\n spanOrigin: SpanOrigin,\n): Parameters<typeof startInactiveSpan>[0] {\n // Data URLs need special handling because parseStringToURLObject treats them as \"relative\"\n // (no \"://\"), causing getSanitizedUrlStringFromUrlObject to return just the pathname\n // without the \"data:\" prefix, making later stripDataUrlContent calls ineffective.\n // So for data URLs, we strip the content first and use that directly.\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin),\n };\n }\n\n const parsedUrl = parseStringToURLObject(url);\n const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin),\n };\n}\n\nfunction getFetchSpanAttributes(\n url: string,\n parsedUrl: ReturnType<typeof parseStringToURLObject>,\n method: string,\n spanOrigin: SpanOrigin,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n url: stripDataUrlContent(url),\n type: 'fetch',\n 'http.method': method,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n };\n if (parsedUrl) {\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['http.url'] = stripDataUrlContent(parsedUrl.href);\n attributes['server.address'] = parsedUrl.host;\n }\n if (parsedUrl.search) {\n attributes['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['http.fragment'] = parsedUrl.hash;\n }\n }\n return attributes;\n}\n"],"names":["hasSpansEnabled","getClient","getActiveSpan","startInactiveSpan","SentryNonRecordingSpan","getTraceData","isRequest","setHttpStatus","SPAN_STATUS_ERROR","SENTRY_BAGGAGE_KEY_PREFIX","isInstanceOf","url","stripDataUrlContent","parseStringToURLObject","getSanitizedUrlStringFromUrlObject","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_OP","isURLObjectRelative"],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sources":["../../src/fetch.ts"],"sourcesContent":["import { getClient } from './currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, startInactiveSpan } from './tracing';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';\nimport { hasSpanStreamingEnabled } from './tracing/spans/hasSpanStreamingEnabled';\nimport type { FetchBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { HandlerDataFetch } from './types-hoist/instrument';\nimport type { ResponseHookInfo } from './types-hoist/request';\nimport type { Span, SpanAttributes, SpanOrigin } from './types-hoist/span';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled';\nimport { isInstanceOf, isRequest } from './utils/is';\nimport { getActiveSpan } from './utils/spanUtils';\nimport { getTraceData } from './utils/traceData';\nimport {\n getSanitizedUrlStringFromUrlObject,\n isURLObjectRelative,\n parseStringToURLObject,\n stripDataUrlContent,\n} from './utils/url';\n\ntype PolymorphicRequestHeaders =\n | Record<string, unknown>\n | Array<[string, unknown]>\n | Iterable<Iterable<unknown>>\n // the below is not precisely the Header type used in Request, but it'll pass duck-typing\n | {\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\ninterface InstrumentFetchRequestOptions {\n spanOrigin?: SpanOrigin;\n propagateTraceparent?: boolean;\n onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void;\n}\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @deprecated pass an options object instead of the spanOrigin parameter\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record<string, Span>,\n spanOrigin: SpanOrigin,\n): Span | undefined;\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record<string, Span>,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- needed because the other overload is deprecated\n instrumentFetchRequestOptions: InstrumentFetchRequestOptions,\n): Span | undefined;\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record<string, Span>,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): Span | undefined {\n if (!handlerData.fetchData) {\n return undefined;\n }\n\n const { method, url } = handlerData.fetchData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n\n if (span) {\n // Only end the span and call hooks if we're actually recording\n if (shouldCreateSpanResult) {\n endSpan(span, handlerData);\n _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n\n return undefined;\n }\n\n // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter\n // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter\n // TODO (v11): remove this backwards-compatible code and only accept the options parameter\n const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } =\n typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions };\n\n const client = getClient();\n const hasParent = !!getActiveSpan();\n // With span streaming, we always emit http.client spans, even without a parent span\n const shouldEmitSpan = hasParent || (!!client && hasSpanStreamingEnabled(client));\n\n const span =\n shouldCreateSpanResult && shouldEmitSpan\n ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin))\n : new SentryNonRecordingSpan();\n\n if (shouldCreateSpanResult && !shouldEmitSpan) {\n client?.recordDroppedEvent('no_parent_span', 'span');\n }\n\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n const request: string | Request = handlerData.args[0];\n\n // Shallow clone the options object to avoid mutating the original user-provided object\n // Examples: users re-using same options object for multiple fetch calls, frozen objects\n const options: { [key: string]: unknown } = { ...(handlerData.args[1] || {}) };\n\n const headers = _INTERNAL_getTracingHeadersForFetchRequest(\n request,\n options,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && shouldEmitSpan ? span : undefined,\n propagateTraceparent,\n );\n if (headers) {\n // Ensure this is actually set, if no options have been passed previously\n handlerData.args[1] = options;\n options.headers = headers;\n }\n }\n\n if (client) {\n const fetchHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp: handlerData.startTimestamp,\n endTimestamp: handlerData.endTimestamp,\n } satisfies FetchBreadcrumbHint;\n\n client.emit('beforeOutgoingRequestSpan', span, fetchHint);\n }\n\n return span;\n}\n\n/**\n * Calls the onRequestSpanEnd callback if it is defined.\n */\nexport function _callOnRequestSpanEnd(\n span: Span,\n handlerData: HandlerDataFetch,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): void {\n const onRequestSpanEnd =\n typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null\n ? spanOriginOrOptions.onRequestSpanEnd\n : undefined;\n\n onRequestSpanEnd?.(span, {\n headers: handlerData.response?.headers,\n error: handlerData.error,\n });\n}\n\n/**\n * Builds merged fetch headers that include `sentry-trace` and `baggage` (and optionally `traceparent`)\n * for the given request and init, without mutating the original request or options.\n * Returns `undefined` when there is no `sentry-trace` value to attach.\n *\n * @internal Exported for cross-package instrumentation (for example Cloudflare Workers fetcher bindings)\n * and unit tests\n *\n * Baggage handling:\n * 1. No previous baggage header → include Sentry baggage\n * 2. Previous baggage has no Sentry entries → merge Sentry baggage in\n * 3. Previous baggage already has Sentry entries → leave as-is (may be user-defined)\n */\n// eslint-disable-next-line complexity -- yup it's this complicated :(\nexport function _INTERNAL_getTracingHeadersForFetchRequest(\n request: string | URL | Request,\n fetchOptionsObj: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n span?: Span,\n propagateTraceparent?: boolean,\n): PolymorphicRequestHeaders | undefined {\n const traceHeaders = getTraceData({ span, propagateTraceparent });\n const sentryTrace = traceHeaders['sentry-trace'];\n const baggage = traceHeaders.baggage;\n const traceparent = traceHeaders.traceparent;\n\n // Nothing to do, when we return undefined here, the original headers will be used\n if (!sentryTrace) {\n return undefined;\n }\n\n const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined);\n\n if (!originalHeaders) {\n return { ...traceHeaders };\n } else if (isHeaders(originalHeaders)) {\n const newHeaders = new Headers(originalHeaders);\n\n // We don't want to override manually added sentry headers\n if (!newHeaders.get('sentry-trace')) {\n newHeaders.set('sentry-trace', sentryTrace);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) {\n newHeaders.set('traceparent', traceparent);\n }\n\n if (baggage) {\n const prevBaggageHeader = newHeaders.get('baggage');\n\n if (!prevBaggageHeader) {\n newHeaders.set('baggage', baggage);\n } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`);\n }\n }\n\n return newHeaders;\n } else if (isHeadersInitTupleArray(originalHeaders)) {\n const newHeaders = [...originalHeaders];\n\n if (!newHeaders.find(header => header[0] === 'sentry-trace')) {\n newHeaders.push(['sentry-trace', sentryTrace]);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.find(header => header[0] === 'traceparent')) {\n newHeaders.push(['traceparent', traceparent]);\n }\n\n const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n header =>\n header[0] === 'baggage' && typeof header[1] === 'string' && baggageHeaderHasSentryBaggageValues(header[1]),\n );\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push(['baggage', baggage]);\n }\n\n return newHeaders;\n } else {\n const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined;\n const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined;\n const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined;\n\n const newBaggageHeaders: string[] = existingBaggageHeader\n ? Array.isArray(existingBaggageHeader)\n ? [...existingBaggageHeader]\n : [existingBaggageHeader]\n : [];\n\n const prevBaggageHeaderWithSentryValues =\n existingBaggageHeader &&\n (Array.isArray(existingBaggageHeader)\n ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem))\n : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n newBaggageHeaders.push(baggage);\n }\n\n const newHeaders: {\n 'sentry-trace': string;\n baggage: string | undefined;\n traceparent?: string;\n } = Object.assign({}, originalHeaders, {\n 'sentry-trace': (existingSentryTraceHeader as string | undefined) ?? sentryTrace,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n });\n\n if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n newHeaders.traceparent = traceparent;\n }\n\n return newHeaders;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength = handlerData.response?.headers?.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n}\n\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader: unknown): boolean {\n if (typeof baggageHeader !== 'string') {\n return false;\n }\n\n return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\n\nfunction isHeaders(headers: unknown): headers is Headers {\n return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers);\n}\n\n/** `HeadersInit` array form: each entry is a [name, value] pair of strings. */\nfunction isHeadersInitTupleArray(headers: unknown): headers is [string, unknown][] {\n if (!Array.isArray(headers)) {\n return false;\n }\n\n return headers.every(\n (item): item is [string, unknown] => Array.isArray(item) && item.length === 2 && typeof item[0] === 'string',\n );\n}\n\nfunction getSpanStartOptions(\n url: string,\n method: string,\n spanOrigin: SpanOrigin,\n): Parameters<typeof startInactiveSpan>[0] {\n // Data URLs need special handling because parseStringToURLObject treats them as \"relative\"\n // (no \"://\"), causing getSanitizedUrlStringFromUrlObject to return just the pathname\n // without the \"data:\" prefix, making later stripDataUrlContent calls ineffective.\n // So for data URLs, we strip the content first and use that directly.\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin),\n };\n }\n\n const parsedUrl = parseStringToURLObject(url);\n const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin),\n };\n}\n\nfunction getFetchSpanAttributes(\n url: string,\n parsedUrl: ReturnType<typeof parseStringToURLObject>,\n method: string,\n spanOrigin: SpanOrigin,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n url: stripDataUrlContent(url),\n type: 'fetch',\n 'http.method': method,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n };\n if (parsedUrl) {\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['http.url'] = stripDataUrlContent(parsedUrl.href);\n attributes['server.address'] = parsedUrl.host;\n }\n if (parsedUrl.search) {\n attributes['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['http.fragment'] = parsedUrl.hash;\n }\n }\n return attributes;\n}\n"],"names":["hasSpansEnabled","getClient","getActiveSpan","hasSpanStreamingEnabled","startInactiveSpan","SentryNonRecordingSpan","getTraceData","isRequest","setHttpStatus","SPAN_STATUS_ERROR","SENTRY_BAGGAGE_KEY_PREFIX","isInstanceOf","url","stripDataUrlContent","parseStringToURLObject","getSanitizedUrlStringFromUrlObject","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_OP","isURLObjectRelative"],"mappings":"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"}
@@ -14,7 +14,7 @@ const logSpans = require('./tracing/logSpans.js');
14
14
  const captureSpan = require('./tracing/spans/captureSpan.js');
15
15
  const semanticAttributes = require('./semanticAttributes.js');
16
16
  const envelope$1 = require('./envelope.js');
17
- const _exports = require('./exports.js');
17
+ const exports$1 = require('./exports.js');
18
18
  const currentScopes = require('./currentScopes.js');
19
19
  const defaultScopes = require('./defaultScopes.js');
20
20
  const index$7 = require('./asyncContext/index.js');
@@ -24,7 +24,6 @@ const scope = require('./scope.js');
24
24
  const eventProcessors = require('./eventProcessors.js');
25
25
  const api = require('./api.js');
26
26
  const client = require('./client.js');
27
- const serverRuntimeClient = require('./server-runtime-client.js');
28
27
  const sdk = require('./sdk.js');
29
28
  const base = require('./transports/base.js');
30
29
  const offline = require('./transports/offline.js');
@@ -61,12 +60,10 @@ const linkederrors = require('./integrations/linkederrors.js');
61
60
  const moduleMetadata = require('./integrations/moduleMetadata.js');
62
61
  const requestdata = require('./integrations/requestdata.js');
63
62
  const captureconsole = require('./integrations/captureconsole.js');
64
- const index$2 = require('./integrations/express/index.js');
65
63
  const dedupe = require('./integrations/dedupe.js');
66
64
  const extraerrordata = require('./integrations/extraerrordata.js');
67
65
  const rewriteframes = require('./integrations/rewriteframes.js');
68
66
  const supabase = require('./integrations/supabase.js');
69
- const postgresjs = require('./integrations/postgresjs.js');
70
67
  const zoderrors = require('./integrations/zoderrors.js');
71
68
  const thirdPartyErrorsFilter = require('./integrations/third-party-errors-filter.js');
72
69
  const console$1 = require('./integrations/console.js');
@@ -75,8 +72,6 @@ const growthbook = require('./integrations/featureFlags/growthbook.js');
75
72
  const conversationId = require('./integrations/conversationId.js');
76
73
  const profiling = require('./profiling.js');
77
74
  const fetch = require('./fetch.js');
78
- const trpc = require('./trpc.js');
79
- const index$8 = require('./integrations/mcp-server/index.js');
80
75
  const feedback = require('./feedback.js');
81
76
  const internal = require('./logs/internal.js');
82
77
  const publicApi = require('./logs/public-api.js');
@@ -86,24 +81,23 @@ const publicApi$1 = require('./metrics/public-api.js');
86
81
  const consola = require('./integrations/consola.js');
87
82
  const index = require('./tracing/vercel-ai/index.js');
88
83
  const utils = require('./tracing/vercel-ai/utils.js');
89
- const constants$6 = require('./tracing/vercel-ai/constants.js');
84
+ const constants$7 = require('./tracing/vercel-ai/constants.js');
90
85
  const index$6 = require('./tracing/openai/index.js');
91
- const constants$5 = require('./tracing/openai/constants.js');
86
+ const constants$6 = require('./tracing/openai/constants.js');
92
87
  const index$3 = require('./tracing/anthropic-ai/index.js');
93
88
  const constants = require('./tracing/anthropic-ai/constants.js');
94
89
  const index$5 = require('./tracing/google-genai/index.js');
95
90
  const constants$2 = require('./tracing/google-genai/constants.js');
96
91
  const index$1 = require('./tracing/langchain/index.js');
97
- const constants$3 = require('./tracing/langchain/constants.js');
92
+ const constants$4 = require('./tracing/langchain/constants.js');
98
93
  const index$4 = require('./tracing/langgraph/index.js');
99
- const constants$4 = require('./tracing/langgraph/constants.js');
94
+ const constants$5 = require('./tracing/langgraph/constants.js');
100
95
  const spanBuffer = require('./tracing/spans/spanBuffer.js');
101
96
  const hasSpanStreamingEnabled = require('./tracing/spans/hasSpanStreamingEnabled.js');
102
97
  const spanStreaming = require('./integrations/spanStreaming.js');
103
98
  const featureFlags = require('./utils/featureFlags.js');
104
99
  const aggregateErrors = require('./utils/aggregate-errors.js');
105
100
  const breadcrumbLogLevel = require('./utils/breadcrumb-log-level.js');
106
- const browser = require('./utils/browser.js');
107
101
  const dsn = require('./utils/dsn.js');
108
102
  const error = require('./utils/error.js');
109
103
  const worldwide = require('./utils/worldwide.js');
@@ -116,16 +110,14 @@ const is = require('./utils/is.js');
116
110
  const isBrowser = require('./utils/isBrowser.js');
117
111
  const debugLogger = require('./utils/debug-logger.js');
118
112
  const misc = require('./utils/misc.js');
119
- const node = require('./utils/node.js');
120
113
  const normalize = require('./utils/normalize.js');
121
114
  const normalizationHints = require('./utils/normalizationHints.js');
122
115
  const object = require('./utils/object.js');
123
116
  const path = require('./utils/path.js');
124
117
  const promisebuffer = require('./utils/promisebuffer.js');
125
118
  const severity = require('./utils/severity.js');
126
- const _exports$1 = require('./utils/exports.js');
119
+ const exports$2 = require('./utils/exports.js');
127
120
  const stacktrace = require('./utils/stacktrace.js');
128
- const nodeStackTrace = require('./utils/node-stack-trace.js');
129
121
  const string = require('./utils/string.js');
130
122
  const supports = require('./utils/supports.js');
131
123
  const syncpromise = require('./utils/syncpromise.js');
@@ -138,17 +130,30 @@ const ratelimit = require('./utils/ratelimit.js');
138
130
  const baggage = require('./utils/baggage.js');
139
131
  const url = require('./utils/url.js');
140
132
  const eventbuilder = require('./utils/eventbuilder.js');
141
- const anr = require('./utils/anr.js');
142
133
  const lru = require('./utils/lru.js');
143
134
  const propagationContext = require('./utils/propagationContext.js');
144
- const vercelWaitUntil = require('./utils/vercelWaitUntil.js');
145
- const flushIfServerless = require('./utils/flushIfServerless.js');
146
135
  const version = require('./utils/version.js');
147
136
  const debugIds = require('./utils/debug-ids.js');
148
137
  const metadata = require('./metadata.js');
149
138
  const escapeStringForRegex = require('./vendor/escapeStringForRegex.js');
150
139
  const randomSafeContext = require('./utils/randomSafeContext.js');
140
+ const serverRuntimeClient = require('./server-runtime-client.js');
141
+ const trpc = require('./trpc.js');
142
+ const index$8 = require('./integrations/mcp-server/index.js');
143
+ const node = require('./utils/node.js');
144
+ const nodeStackTrace = require('./utils/node-stack-trace.js');
145
+ const vercelWaitUntil = require('./utils/vercelWaitUntil.js');
146
+ const flushIfServerless = require('./utils/flushIfServerless.js');
147
+ const anr = require('./utils/anr.js');
151
148
  const timer = require('./utils/timer.js');
149
+ const index$2 = require('./integrations/express/index.js');
150
+ const postgresjs = require('./integrations/postgresjs.js');
151
+ const clientPatch = require('./integrations/http/client-patch.js');
152
+ const clientSubscriptions = require('./integrations/http/client-subscriptions.js');
153
+ const addOutgoingRequestBreadcrumb = require('./integrations/http/add-outgoing-request-breadcrumb.js');
154
+ const getRequestUrl = require('./integrations/http/get-request-url.js');
155
+ const constants$3 = require('./integrations/http/constants.js');
156
+ const browser = require('./utils/browser.js');
152
157
  const embeddings = require('./tracing/langchain/embeddings.js');
153
158
 
154
159
 
@@ -165,6 +170,7 @@ exports.SPAN_STATUS_OK = spanstatus.SPAN_STATUS_OK;
165
170
  exports.SPAN_STATUS_UNSET = spanstatus.SPAN_STATUS_UNSET;
166
171
  exports.getSpanStatusFromHttpCode = spanstatus.getSpanStatusFromHttpCode;
167
172
  exports.setHttpStatus = spanstatus.setHttpStatus;
173
+ exports.SUPPRESS_TRACING_KEY = trace.SUPPRESS_TRACING_KEY;
168
174
  exports.continueTrace = trace.continueTrace;
169
175
  exports.startInactiveSpan = trace.startInactiveSpan;
170
176
  exports.startNewTrace = trace.startNewTrace;
@@ -214,27 +220,27 @@ exports.SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = semanticAttributes.SEMANTIC_LINK_ATT
214
220
  exports.createEventEnvelope = envelope$1.createEventEnvelope;
215
221
  exports.createSessionEnvelope = envelope$1.createSessionEnvelope;
216
222
  exports.createSpanEnvelope = envelope$1.createSpanEnvelope;
217
- exports.addEventProcessor = _exports.addEventProcessor;
218
- exports.captureCheckIn = _exports.captureCheckIn;
219
- exports.captureEvent = _exports.captureEvent;
220
- exports.captureException = _exports.captureException;
221
- exports.captureMessage = _exports.captureMessage;
222
- exports.captureSession = _exports.captureSession;
223
- exports.close = _exports.close;
224
- exports.endSession = _exports.endSession;
225
- exports.flush = _exports.flush;
226
- exports.isEnabled = _exports.isEnabled;
227
- exports.isInitialized = _exports.isInitialized;
228
- exports.lastEventId = _exports.lastEventId;
229
- exports.setContext = _exports.setContext;
230
- exports.setConversationId = _exports.setConversationId;
231
- exports.setExtra = _exports.setExtra;
232
- exports.setExtras = _exports.setExtras;
233
- exports.setTag = _exports.setTag;
234
- exports.setTags = _exports.setTags;
235
- exports.setUser = _exports.setUser;
236
- exports.startSession = _exports.startSession;
237
- exports.withMonitor = _exports.withMonitor;
223
+ exports.addEventProcessor = exports$1.addEventProcessor;
224
+ exports.captureCheckIn = exports$1.captureCheckIn;
225
+ exports.captureEvent = exports$1.captureEvent;
226
+ exports.captureException = exports$1.captureException;
227
+ exports.captureMessage = exports$1.captureMessage;
228
+ exports.captureSession = exports$1.captureSession;
229
+ exports.close = exports$1.close;
230
+ exports.endSession = exports$1.endSession;
231
+ exports.flush = exports$1.flush;
232
+ exports.isEnabled = exports$1.isEnabled;
233
+ exports.isInitialized = exports$1.isInitialized;
234
+ exports.lastEventId = exports$1.lastEventId;
235
+ exports.setContext = exports$1.setContext;
236
+ exports.setConversationId = exports$1.setConversationId;
237
+ exports.setExtra = exports$1.setExtra;
238
+ exports.setExtras = exports$1.setExtras;
239
+ exports.setTag = exports$1.setTag;
240
+ exports.setTags = exports$1.setTags;
241
+ exports.setUser = exports$1.setUser;
242
+ exports.startSession = exports$1.startSession;
243
+ exports.withMonitor = exports$1.withMonitor;
238
244
  exports.getClient = currentScopes.getClient;
239
245
  exports.getCurrentScope = currentScopes.getCurrentScope;
240
246
  exports.getExternalPropagationContext = currentScopes.getExternalPropagationContext;
@@ -259,7 +265,6 @@ exports.SENTRY_API_VERSION = api.SENTRY_API_VERSION;
259
265
  exports.getEnvelopeEndpointWithUrlEncodedAuth = api.getEnvelopeEndpointWithUrlEncodedAuth;
260
266
  exports.getReportDialogEndpoint = api.getReportDialogEndpoint;
261
267
  exports.Client = client.Client;
262
- exports.ServerRuntimeClient = serverRuntimeClient.ServerRuntimeClient;
263
268
  exports.initAndBind = sdk.initAndBind;
264
269
  exports.setCurrentClient = sdk.setCurrentClient;
265
270
  exports.createTransport = base.createTransport;
@@ -313,7 +318,10 @@ exports.debounce = debounce.debounce;
313
318
  exports.derefWeakRef = weakRef.derefWeakRef;
314
319
  exports.makeWeakRef = weakRef.makeWeakRef;
315
320
  exports.shouldIgnoreSpan = shouldIgnoreSpan.shouldIgnoreSpan;
321
+ exports.MAX_BODY_BYTE_LENGTH = request.MAX_BODY_BYTE_LENGTH;
322
+ exports.captureBodyFromWinterCGRequest = request.captureBodyFromWinterCGRequest;
316
323
  exports.extractQueryParamsFromUrl = request.extractQueryParamsFromUrl;
324
+ exports.getMaxBodyByteLength = request.getMaxBodyByteLength;
317
325
  exports.headersToDict = request.headersToDict;
318
326
  exports.httpHeadersToSpanAttributes = request.httpHeadersToSpanAttributes;
319
327
  exports.httpRequestToRequestData = request.httpRequestToRequestData;
@@ -329,15 +337,11 @@ exports.linkedErrorsIntegration = linkederrors.linkedErrorsIntegration;
329
337
  exports.moduleMetadataIntegration = moduleMetadata.moduleMetadataIntegration;
330
338
  exports.requestDataIntegration = requestdata.requestDataIntegration;
331
339
  exports.captureConsoleIntegration = captureconsole.captureConsoleIntegration;
332
- exports.expressErrorHandler = index$2.expressErrorHandler;
333
- exports.patchExpressModule = index$2.patchExpressModule;
334
- exports.setupExpressErrorHandler = index$2.setupExpressErrorHandler;
335
340
  exports.dedupeIntegration = dedupe.dedupeIntegration;
336
341
  exports.extraErrorDataIntegration = extraerrordata.extraErrorDataIntegration;
337
342
  exports.rewriteFramesIntegration = rewriteframes.rewriteFramesIntegration;
338
343
  exports.instrumentSupabaseClient = supabase.instrumentSupabaseClient;
339
344
  exports.supabaseIntegration = supabase.supabaseIntegration;
340
- exports.instrumentPostgresJsSql = postgresjs.instrumentPostgresJsSql;
341
345
  exports.zodErrorsIntegration = zoderrors.zodErrorsIntegration;
342
346
  exports.thirdPartyErrorFilterIntegration = thirdPartyErrorsFilter.thirdPartyErrorFilterIntegration;
343
347
  exports.consoleIntegration = console$1.consoleIntegration;
@@ -347,8 +351,6 @@ exports.conversationIdIntegration = conversationId.conversationIdIntegration;
347
351
  exports.profiler = profiling.profiler;
348
352
  exports._INTERNAL_getTracingHeadersForFetchRequest = fetch._INTERNAL_getTracingHeadersForFetchRequest;
349
353
  exports.instrumentFetchRequest = fetch.instrumentFetchRequest;
350
- exports.trpcMiddleware = trpc.trpcMiddleware;
351
- exports.wrapMcpServerWithSentry = index$8.wrapMcpServerWithSentry;
352
354
  exports.captureFeedback = feedback.captureFeedback;
353
355
  exports._INTERNAL_captureLog = internal._INTERNAL_captureLog;
354
356
  exports._INTERNAL_captureSerializedLog = internal._INTERNAL_captureSerializedLog;
@@ -363,19 +365,19 @@ exports.createConsolaReporter = consola.createConsolaReporter;
363
365
  exports.addVercelAiProcessors = index.addVercelAiProcessors;
364
366
  exports._INTERNAL_cleanupToolCallSpanContext = utils._INTERNAL_cleanupToolCallSpanContext;
365
367
  exports._INTERNAL_getSpanContextForToolCallId = utils._INTERNAL_getSpanContextForToolCallId;
366
- exports._INTERNAL_toolCallSpanContextMap = constants$6.toolCallSpanContextMap;
368
+ exports._INTERNAL_toolCallSpanContextMap = constants$7.toolCallSpanContextMap;
367
369
  exports.instrumentOpenAiClient = index$6.instrumentOpenAiClient;
368
- exports.OPENAI_INTEGRATION_NAME = constants$5.OPENAI_INTEGRATION_NAME;
370
+ exports.OPENAI_INTEGRATION_NAME = constants$6.OPENAI_INTEGRATION_NAME;
369
371
  exports.instrumentAnthropicAiClient = index$3.instrumentAnthropicAiClient;
370
372
  exports.ANTHROPIC_AI_INTEGRATION_NAME = constants.ANTHROPIC_AI_INTEGRATION_NAME;
371
373
  exports.instrumentGoogleGenAIClient = index$5.instrumentGoogleGenAIClient;
372
374
  exports.GOOGLE_GENAI_INTEGRATION_NAME = constants$2.GOOGLE_GENAI_INTEGRATION_NAME;
373
375
  exports.createLangChainCallbackHandler = index$1.createLangChainCallbackHandler;
374
- exports.LANGCHAIN_INTEGRATION_NAME = constants$3.LANGCHAIN_INTEGRATION_NAME;
376
+ exports.LANGCHAIN_INTEGRATION_NAME = constants$4.LANGCHAIN_INTEGRATION_NAME;
375
377
  exports.instrumentCreateReactAgent = index$4.instrumentCreateReactAgent;
376
378
  exports.instrumentLangGraph = index$4.instrumentLangGraph;
377
379
  exports.instrumentStateGraphCompile = index$4.instrumentStateGraphCompile;
378
- exports.LANGGRAPH_INTEGRATION_NAME = constants$4.LANGGRAPH_INTEGRATION_NAME;
380
+ exports.LANGGRAPH_INTEGRATION_NAME = constants$5.LANGGRAPH_INTEGRATION_NAME;
379
381
  exports.SpanBuffer = spanBuffer.SpanBuffer;
380
382
  exports.hasSpanStreamingEnabled = hasSpanStreamingEnabled.hasSpanStreamingEnabled;
381
383
  exports.spanStreamingIntegration = spanStreaming.spanStreamingIntegration;
@@ -386,14 +388,12 @@ exports._INTERNAL_copyFlagsFromScopeToEvent = featureFlags._INTERNAL_copyFlagsFr
386
388
  exports._INTERNAL_insertFlagToScope = featureFlags._INTERNAL_insertFlagToScope;
387
389
  exports.applyAggregateErrorsToEvent = aggregateErrors.applyAggregateErrorsToEvent;
388
390
  exports.getBreadcrumbLogLevelFromHttpStatusCode = breadcrumbLogLevel.getBreadcrumbLogLevelFromHttpStatusCode;
389
- exports.getComponentName = browser.getComponentName;
390
- exports.getLocationHref = browser.getLocationHref;
391
- exports.htmlTreeAsString = browser.htmlTreeAsString;
392
391
  exports.dsnFromString = dsn.dsnFromString;
393
392
  exports.dsnToString = dsn.dsnToString;
394
393
  exports.makeDsn = dsn.makeDsn;
395
394
  exports.SentryError = error.SentryError;
396
395
  exports.GLOBAL_OBJ = worldwide.GLOBAL_OBJ;
396
+ exports.addConsoleInstrumentationFilter = console.addConsoleInstrumentationFilter;
397
397
  exports.addConsoleInstrumentationHandler = console.addConsoleInstrumentationHandler;
398
398
  exports.addFetchEndInstrumentationHandler = fetch$1.addFetchEndInstrumentationHandler;
399
399
  exports.addFetchInstrumentationHandler = fetch$1.addFetchInstrumentationHandler;
@@ -431,8 +431,6 @@ exports.getEventDescription = misc.getEventDescription;
431
431
  exports.isAlreadyCaptured = misc.isAlreadyCaptured;
432
432
  exports.parseSemver = misc.parseSemver;
433
433
  exports.uuid4 = misc.uuid4;
434
- exports.isNodeEnv = node.isNodeEnv;
435
- exports.loadModule = node.loadModule;
436
434
  exports.normalize = normalize.normalize;
437
435
  exports.normalizeToSize = normalize.normalizeToSize;
438
436
  exports.normalizeUrlToBase = normalize.normalizeUrlToBase;
@@ -456,16 +454,13 @@ exports.resolve = path.resolve;
456
454
  exports.SENTRY_BUFFER_FULL_ERROR = promisebuffer.SENTRY_BUFFER_FULL_ERROR;
457
455
  exports.makePromiseBuffer = promisebuffer.makePromiseBuffer;
458
456
  exports.severityLevelFromString = severity.severityLevelFromString;
459
- exports.replaceExports = _exports$1.replaceExports;
457
+ exports.replaceExports = exports$2.replaceExports;
460
458
  exports.UNKNOWN_FUNCTION = stacktrace.UNKNOWN_FUNCTION;
461
459
  exports.createStackParser = stacktrace.createStackParser;
462
460
  exports.getFramesFromEvent = stacktrace.getFramesFromEvent;
463
461
  exports.getFunctionName = stacktrace.getFunctionName;
464
462
  exports.stackParserFromStackParserOptions = stacktrace.stackParserFromStackParserOptions;
465
463
  exports.stripSentryFramesAndReverse = stacktrace.stripSentryFramesAndReverse;
466
- exports.filenameIsInApp = nodeStackTrace.filenameIsInApp;
467
- exports.node = nodeStackTrace.node;
468
- exports.nodeStackLineParser = nodeStackTrace.nodeStackLineParser;
469
464
  exports.isMatchingPattern = string.isMatchingPattern;
470
465
  exports.safeJoin = string.safeJoin;
471
466
  exports.snipLine = string.snipLine;
@@ -516,6 +511,7 @@ exports.SENTRY_BAGGAGE_KEY_PREFIX = baggage.SENTRY_BAGGAGE_KEY_PREFIX;
516
511
  exports.SENTRY_BAGGAGE_KEY_PREFIX_REGEX = baggage.SENTRY_BAGGAGE_KEY_PREFIX_REGEX;
517
512
  exports.baggageHeaderToDynamicSamplingContext = baggage.baggageHeaderToDynamicSamplingContext;
518
513
  exports.dynamicSamplingContextToSentryBaggageHeader = baggage.dynamicSamplingContextToSentryBaggageHeader;
514
+ exports.mergeBaggageHeaders = baggage.mergeBaggageHeaders;
519
515
  exports.objectToBaggageHeader = baggage.objectToBaggageHeader;
520
516
  exports.parseBaggageHeader = baggage.parseBaggageHeader;
521
517
  exports.getHttpSpanDetailsFromUrlObject = url.getHttpSpanDetailsFromUrlObject;
@@ -531,13 +527,9 @@ exports.eventFromMessage = eventbuilder.eventFromMessage;
531
527
  exports.eventFromUnknownInput = eventbuilder.eventFromUnknownInput;
532
528
  exports.exceptionFromError = eventbuilder.exceptionFromError;
533
529
  exports.parseStackFrames = eventbuilder.parseStackFrames;
534
- exports.callFrameToStackFrame = anr.callFrameToStackFrame;
535
- exports.watchdogTimer = anr.watchdogTimer;
536
530
  exports.LRUMap = lru.LRUMap;
537
531
  exports.generateSpanId = propagationContext.generateSpanId;
538
532
  exports.generateTraceId = propagationContext.generateTraceId;
539
- exports.vercelWaitUntil = vercelWaitUntil.vercelWaitUntil;
540
- exports.flushIfServerless = flushIfServerless.flushIfServerless;
541
533
  exports.SDK_VERSION = version.SDK_VERSION;
542
534
  exports.getDebugImagesForResources = debugIds.getDebugImagesForResources;
543
535
  exports.getFilenameToDebugIdMap = debugIds.getFilenameToDebugIdMap;
@@ -546,6 +538,34 @@ exports.escapeStringForRegex = escapeStringForRegex.escapeStringForRegex;
546
538
  exports._INTERNAL_safeDateNow = randomSafeContext.safeDateNow;
547
539
  exports._INTERNAL_safeMathRandom = randomSafeContext.safeMathRandom;
548
540
  exports._INTERNAL_withRandomSafeContext = randomSafeContext.withRandomSafeContext;
541
+ exports.ServerRuntimeClient = serverRuntimeClient.ServerRuntimeClient;
542
+ exports.trpcMiddleware = trpc.trpcMiddleware;
543
+ exports.wrapMcpServerWithSentry = index$8.wrapMcpServerWithSentry;
544
+ exports.isNodeEnv = node.isNodeEnv;
545
+ exports.loadModule = node.loadModule;
546
+ exports.filenameIsInApp = nodeStackTrace.filenameIsInApp;
547
+ exports.node = nodeStackTrace.node;
548
+ exports.nodeStackLineParser = nodeStackTrace.nodeStackLineParser;
549
+ exports.vercelWaitUntil = vercelWaitUntil.vercelWaitUntil;
550
+ exports.flushIfServerless = flushIfServerless.flushIfServerless;
551
+ exports.callFrameToStackFrame = anr.callFrameToStackFrame;
552
+ exports.watchdogTimer = anr.watchdogTimer;
549
553
  exports._INTERNAL_safeUnref = timer.safeUnref;
554
+ exports.expressErrorHandler = index$2.expressErrorHandler;
555
+ exports.patchExpressModule = index$2.patchExpressModule;
556
+ exports.setupExpressErrorHandler = index$2.setupExpressErrorHandler;
557
+ exports.instrumentPostgresJsSql = postgresjs.instrumentPostgresJsSql;
558
+ exports.patchHttpModuleClient = clientPatch.patchHttpModuleClient;
559
+ exports.getHttpClientSubscriptions = clientSubscriptions.getHttpClientSubscriptions;
560
+ exports.addOutgoingRequestBreadcrumb = addOutgoingRequestBreadcrumb.addOutgoingRequestBreadcrumb;
561
+ exports.getRequestOptions = getRequestUrl.getRequestOptions;
562
+ exports.getRequestUrl = getRequestUrl.getRequestUrl;
563
+ exports.getRequestUrlFromClientRequest = getRequestUrl.getRequestUrlFromClientRequest;
564
+ exports.getRequestUrlObject = getRequestUrl.getRequestUrlObject;
565
+ exports.HTTP_ON_CLIENT_REQUEST = constants$3.HTTP_ON_CLIENT_REQUEST;
566
+ exports.HTTP_ON_SERVER_REQUEST = constants$3.HTTP_ON_SERVER_REQUEST;
567
+ exports.getComponentName = browser.getComponentName;
568
+ exports.getLocationHref = browser.getLocationHref;
569
+ exports.htmlTreeAsString = browser.htmlTreeAsString;
550
570
  exports.instrumentLangChainEmbeddings = embeddings.instrumentLangChainEmbeddings;
551
571
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,10 +1,22 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
+ const debugBuild = require('../debug-build.js');
3
4
  const debugLogger = require('../utils/debug-logger.js');
4
5
  const object = require('../utils/object.js');
6
+ const string = require('../utils/string.js');
5
7
  const worldwide = require('../utils/worldwide.js');
6
8
  const handlers = require('./handlers.js');
7
9
 
10
+ /* eslint-disable @typescript-eslint/no-explicit-any */
11
+ /* eslint-disable @typescript-eslint/ban-types */
12
+
13
+ /**
14
+ * Filter out console messages that match the given strings or regular expressions.
15
+ * These will neither be passed to the handler, and they will also not be logged to the user, unless they have debug enabled.
16
+ * This is a set to avoid duplicate integration setups to add the same filter multiple times.
17
+ */
18
+ const _filter = new Set([]);
19
+
8
20
  /**
9
21
  * Add an instrumentation handler for when a console.xxx method is called.
10
22
  * Returns a function to remove the handler.
@@ -19,6 +31,22 @@ function addConsoleInstrumentationHandler(handler) {
19
31
  return removeHandler;
20
32
  }
21
33
 
34
+ /**
35
+ * Add a filter to the console instrumentation to filter out console messages that match the given strings or regular expressions.
36
+ * Returns a function to remove the filter.
37
+ */
38
+ function addConsoleInstrumentationFilter(filter) {
39
+ for (const f of filter) {
40
+ _filter.add(f);
41
+ }
42
+
43
+ return () => {
44
+ for (const f of filter) {
45
+ _filter.delete(f);
46
+ }
47
+ };
48
+ }
49
+
22
50
  function instrumentConsole() {
23
51
  if (!('console' in worldwide.GLOBAL_OBJ)) {
24
52
  return;
@@ -33,14 +61,26 @@ function instrumentConsole() {
33
61
  debugLogger.originalConsoleMethods[level] = originalConsoleMethod;
34
62
 
35
63
  return function (...args) {
36
- handlers.triggerHandlers('console', { args, level } );
37
-
64
+ const firstArg = args[0];
38
65
  const log = debugLogger.originalConsoleMethods[level];
39
- log?.apply(worldwide.GLOBAL_OBJ.console, args);
66
+
67
+ const isFiltered = _filter.size && typeof firstArg === 'string' && string.stringMatchesSomePattern(firstArg, _filter);
68
+
69
+ // Only trigger handlers for non-filtered messages
70
+ if (!isFiltered) {
71
+ handlers.triggerHandlers('console', { args, level } );
72
+ }
73
+
74
+ // Only log filtered messages in debug mode
75
+ if (!isFiltered || (debugBuild.DEBUG_BUILD && debugLogger.debug.isEnabled())) {
76
+ // Call original console method
77
+ log?.apply(worldwide.GLOBAL_OBJ.console, args);
78
+ }
40
79
  };
41
80
  });
42
81
  });
43
82
  }
44
83
 
84
+ exports.addConsoleInstrumentationFilter = addConsoleInstrumentationFilter;
45
85
  exports.addConsoleInstrumentationHandler = addConsoleInstrumentationHandler;
46
86
  //# sourceMappingURL=console.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sources":["../../../src/instrument/console.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger';\nimport { fill } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n * Returns a function to remove the handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): () => void {\n const type = 'console';\n const removeHandler = addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n return removeHandler;\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level } as HandlerDataConsole);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n"],"names":["addHandler","maybeInstrument","GLOBAL_OBJ","CONSOLE_LEVELS","fill","originalConsoleMethods","triggerHandlers"],"mappings":";;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAgC,CAAC,OAAO,EAAkD;AAC1G,EAAE,MAAM,IAAA,GAAO,SAAS;AACxB,EAAE,MAAM,gBAAgBA,mBAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AACjD,EAAEC,wBAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC;AAC1C,EAAE,OAAO,aAAa;AACtB;;AAEA,SAAS,iBAAiB,GAAS;AACnC,EAAE,IAAI,EAAE,aAAaC,oBAAU,CAAC,EAAE;AAClC,IAAI;AACJ,EAAE;;AAEF,EAAEC,0BAAc,CAAC,OAAO,CAAC,UAAU,KAAK,EAAsB;AAC9D,IAAI,IAAI,EAAE,KAAA,IAASD,oBAAU,CAAC,OAAO,CAAC,EAAE;AACxC,MAAM;AACN,IAAI;;AAEJ,IAAIE,WAAI,CAACF,oBAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,qBAAqB,EAAuB;AAC1F,MAAMG,kCAAsB,CAAC,KAAK,CAAA,GAAI,qBAAqB;;AAE3D,MAAM,OAAO,UAAU,GAAG,IAAI,EAAe;AAC7C,QAAQC,wBAAe,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAA,EAAM,EAAwB;;AAEzE,QAAQ,MAAM,GAAA,GAAMD,kCAAsB,CAAC,KAAK,CAAC;AACjD,QAAQ,GAAG,EAAE,KAAK,CAACH,oBAAU,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5C,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"console.js","sources":["../../../src/instrument/console.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ConsoleLevel, HandlerDataConsole } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger';\nimport { fill } from '../utils/object';\nimport { stringMatchesSomePattern } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\nimport { debug } from '../utils/debug-logger';\n\n/**\n * Filter out console messages that match the given strings or regular expressions.\n * These will neither be passed to the handler, and they will also not be logged to the user, unless they have debug enabled.\n * This is a set to avoid duplicate integration setups to add the same filter multiple times.\n */\nconst _filter = new Set<string | RegExp>([]);\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n * Returns a function to remove the handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): () => void {\n const type = 'console';\n const removeHandler = addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n return removeHandler;\n}\n\n/**\n * Add a filter to the console instrumentation to filter out console messages that match the given strings or regular expressions.\n * Returns a function to remove the filter.\n */\nexport function addConsoleInstrumentationFilter(filter: (string | RegExp)[]): () => void {\n for (const f of filter) {\n _filter.add(f);\n }\n\n return () => {\n for (const f of filter) {\n _filter.delete(f);\n }\n };\n}\n\n/** Only exported for tests. */\nexport function _INTERNAL_resetConsoleInstrumentationOptions(): void {\n _filter.clear();\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const firstArg = args[0];\n const log = originalConsoleMethods[level];\n\n const isFiltered = _filter.size && typeof firstArg === 'string' && stringMatchesSomePattern(firstArg, _filter);\n\n // Only trigger handlers for non-filtered messages\n if (!isFiltered) {\n triggerHandlers('console', { args, level } as HandlerDataConsole);\n }\n\n // Only log filtered messages in debug mode\n if (!isFiltered || (DEBUG_BUILD && debug.isEnabled())) {\n // Call original console method\n log?.apply(GLOBAL_OBJ.console, args);\n }\n };\n });\n });\n}\n"],"names":["addHandler","maybeInstrument","GLOBAL_OBJ","CONSOLE_LEVELS","fill","originalConsoleMethods","stringMatchesSomePattern","triggerHandlers","DEBUG_BUILD","debug"],"mappings":";;;;;;;;;AAAA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,IAAI,GAAG,CAAkB,EAAE,CAAC;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gCAAgC,CAAC,OAAO,EAAkD;AAC1G,EAAE,MAAM,IAAA,GAAO,SAAS;AACxB,EAAE,MAAM,gBAAgBA,mBAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AACjD,EAAEC,wBAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC;AAC1C,EAAE,OAAO,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACO,SAAS,+BAA+B,CAAC,MAAM,EAAmC;AACzF,EAAE,KAAK,MAAM,CAAA,IAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAClB,EAAE;;AAEF,EAAE,OAAO,MAAM;AACf,IAAI,KAAK,MAAM,CAAA,IAAK,MAAM,EAAE;AAC5B,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvB,IAAI;AACJ,EAAE,CAAC;AACH;;AAOA,SAAS,iBAAiB,GAAS;AACnC,EAAE,IAAI,EAAE,aAAaC,oBAAU,CAAC,EAAE;AAClC,IAAI;AACJ,EAAE;;AAEF,EAAEC,0BAAc,CAAC,OAAO,CAAC,UAAU,KAAK,EAAsB;AAC9D,IAAI,IAAI,EAAE,KAAA,IAASD,oBAAU,CAAC,OAAO,CAAC,EAAE;AACxC,MAAM;AACN,IAAI;;AAEJ,IAAIE,WAAI,CAACF,oBAAU,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,qBAAqB,EAAuB;AAC1F,MAAMG,kCAAsB,CAAC,KAAK,CAAA,GAAI,qBAAqB;;AAE3D,MAAM,OAAO,UAAU,GAAG,IAAI,EAAe;AAC7C,QAAQ,MAAM,QAAA,GAAW,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,GAAA,GAAMA,kCAAsB,CAAC,KAAK,CAAC;;AAEjD,QAAQ,MAAM,UAAA,GAAa,OAAO,CAAC,QAAQ,OAAO,QAAA,KAAa,YAAYC,+BAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAEtH;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,UAAUC,wBAAe,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAA,EAAM,EAAwB;AAC3E,QAAQ;;AAER;AACA,QAAQ,IAAI,CAAC,UAAA,KAAeC,sBAAA,IAAeC,iBAAK,CAAC,SAAS,EAAE,CAAC,EAAE;AAC/D;AACA,UAAU,GAAG,EAAE,KAAK,CAACP,oBAAU,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9C,QAAQ;AACR,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ;;;;;"}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const currentScopes = require('../currentScopes.js');
4
- const _exports = require('../exports.js');
4
+ const exports$1 = require('../exports.js');
5
5
  const console = require('../instrument/console.js');
6
6
  const integration = require('../integration.js');
7
7
  const debugLogger = require('../utils/debug-logger.js');
@@ -81,7 +81,7 @@ function consoleHandler(args, level, handled) {
81
81
 
82
82
  const error = args.find(arg => arg instanceof Error);
83
83
  if (error) {
84
- _exports.captureException(error, captureContext);
84
+ exports$1.captureException(error, captureContext);
85
85
  return;
86
86
  }
87
87
 
@@ -1 +1 @@
1
- {"version":3,"file":"captureconsole.js","sources":["../../../src/integrations/captureconsole.ts"],"sourcesContent":["import { getClient, withScope } from '../currentScopes';\nimport { captureException } from '../exports';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { CaptureContext } from '../scope';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { addExceptionMechanism } from '../utils/misc';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n\n /**\n * By default, Sentry will mark captured console messages as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled?: boolean;\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n const handled = options.handled ?? true;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args: unknown[], level: string, handled: boolean): void {\n const severityLevel = severityLevelFromString(level);\n\n /*\n We create this error here already to attach a stack trace to captured messages,\n if users set `attachStackTrace` to `true` in Sentry.init.\n We do this here already because we want to minimize the number of Sentry SDK stack frames\n within the error. Technically, Client.captureMessage will also do it but this happens several\n stack frames deeper.\n */\n const syntheticException = new Error();\n\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'auto.core.capture_console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n });\n}\n"],"names":["CONSOLE_LEVELS","GLOBAL_OBJ","addConsoleInstrumentationHandler","getClient","defineIntegration","severityLevelFromString","withScope","addExceptionMechanism","safeJoin","captureException"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,gBAAA,GAAmB,gBAAgB;;AAEzC,MAAM,0BAAA,IAA8B,CAAC,OAAO,GAA0B,EAAE,KAAK;AAC7E,EAAE,MAAM,MAAA,GAAS,OAAO,CAAC,MAAA,IAAUA,0BAAc;AACjD,EAAE,MAAM,OAAA,GAAU,OAAO,CAAC,OAAA,IAAW,IAAI;;AAEzC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,IAAI,EAAE,aAAaC,oBAAU,CAAC,EAAE;AACtC,QAAQ;AACR,MAAM;;AAEN,MAAMC,wCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAIC,uBAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/D,UAAU;AACV,QAAQ;;AAER,QAAQ,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC5C,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;MACa,yBAAA,GAA4BC,6BAAiB,CAAC,0BAA0B;;AAErF,SAAS,cAAc,CAAC,IAAI,EAAa,KAAK,EAAU,OAAO,EAAiB;AAChF,EAAE,MAAM,aAAA,GAAgBC,gCAAuB,CAAC,KAAK,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,kBAAA,GAAqB,IAAI,KAAK,EAAE;;AAExC,EAAE,MAAM,cAAc,GAAmB;AACzC,IAAI,KAAK,EAAEA,gCAAuB,CAAC,KAAK,CAAC;AACzC,IAAI,KAAK,EAAE;AACX,MAAM,SAAS,EAAE,IAAI;AACrB,KAAK;AACL,GAAG;;AAEH,EAAEC,uBAAS,CAAC,KAAA,IAAS;AACrB,IAAI,KAAK,CAAC,iBAAiB,CAAC,SAAS;AACrC,MAAM,KAAK,CAAC,MAAA,GAAS,SAAS;;AAE9B,MAAMC,0BAAqB,CAAC,KAAK,EAAE;AACnC,QAAQ,OAAO;AACf,QAAQ,IAAI,EAAE,2BAA2B;AACzC,OAAO,CAAC;;AAER,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,CAAC;;AAEN,IAAI,IAAI,KAAA,KAAU,QAAQ,EAAE;AAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpB,QAAQ,MAAM,UAAU,CAAC,kBAAkB,EAAEC,eAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAA;AACA,QAAA,KAAA,CAAA,QAAA,CAAA,WAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AACA,QAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,KAAA,GAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAA,GAAA,YAAA,KAAA,CAAA;AACA,IAAA,IAAA,KAAA,EAAA;AACA,MAAAC,yBAAA,CAAA,KAAA,EAAA,cAAA,CAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,OAAA,GAAAD,eAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA,IAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,EAAA,CAAA,CAAA;AACA;;;;"}
1
+ {"version":3,"file":"captureconsole.js","sources":["../../../src/integrations/captureconsole.ts"],"sourcesContent":["import { getClient, withScope } from '../currentScopes';\nimport { captureException } from '../exports';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { CaptureContext } from '../scope';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { addExceptionMechanism } from '../utils/misc';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n\n /**\n * By default, Sentry will mark captured console messages as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled?: boolean;\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n const handled = options.handled ?? true;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args: unknown[], level: string, handled: boolean): void {\n const severityLevel = severityLevelFromString(level);\n\n /*\n We create this error here already to attach a stack trace to captured messages,\n if users set `attachStackTrace` to `true` in Sentry.init.\n We do this here already because we want to minimize the number of Sentry SDK stack frames\n within the error. Technically, Client.captureMessage will also do it but this happens several\n stack frames deeper.\n */\n const syntheticException = new Error();\n\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'auto.core.capture_console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n });\n}\n"],"names":["CONSOLE_LEVELS","GLOBAL_OBJ","addConsoleInstrumentationHandler","getClient","defineIntegration","severityLevelFromString","withScope","addExceptionMechanism","safeJoin","captureException"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,gBAAA,GAAmB,gBAAgB;;AAEzC,MAAM,0BAAA,IAA8B,CAAC,OAAO,GAA0B,EAAE,KAAK;AAC7E,EAAE,MAAM,MAAA,GAAS,OAAO,CAAC,MAAA,IAAUA,0BAAc;AACjD,EAAE,MAAM,OAAA,GAAU,OAAO,CAAC,OAAA,IAAW,IAAI;;AAEzC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,IAAI,EAAE,aAAaC,oBAAU,CAAC,EAAE;AACtC,QAAQ;AACR,MAAM;;AAEN,MAAMC,wCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAA,EAAO,KAAK;AAC5D,QAAQ,IAAIC,uBAAS,OAAO,MAAA,IAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/D,UAAU;AACV,QAAQ;;AAER,QAAQ,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC5C,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,GAAG;AACH,CAAC,CAAA;;AAED;AACA;AACA;MACa,yBAAA,GAA4BC,6BAAiB,CAAC,0BAA0B;;AAErF,SAAS,cAAc,CAAC,IAAI,EAAa,KAAK,EAAU,OAAO,EAAiB;AAChF,EAAE,MAAM,aAAA,GAAgBC,gCAAuB,CAAC,KAAK,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,kBAAA,GAAqB,IAAI,KAAK,EAAE;;AAExC,EAAE,MAAM,cAAc,GAAmB;AACzC,IAAI,KAAK,EAAEA,gCAAuB,CAAC,KAAK,CAAC;AACzC,IAAI,KAAK,EAAE;AACX,MAAM,SAAS,EAAE,IAAI;AACrB,KAAK;AACL,GAAG;;AAEH,EAAEC,uBAAS,CAAC,KAAA,IAAS;AACrB,IAAI,KAAK,CAAC,iBAAiB,CAAC,SAAS;AACrC,MAAM,KAAK,CAAC,MAAA,GAAS,SAAS;;AAE9B,MAAMC,0BAAqB,CAAC,KAAK,EAAE;AACnC,QAAQ,OAAO;AACf,QAAQ,IAAI,EAAE,2BAA2B;AACzC,OAAO,CAAC;;AAER,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,CAAC;;AAEN,IAAI,IAAI,KAAA,KAAU,QAAQ,EAAE;AAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpB,QAAQ,MAAM,UAAU,CAAC,kBAAkB,EAAEC,eAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAA;AACA,QAAA,KAAA,CAAA,QAAA,CAAA,WAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AACA,QAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,KAAA,GAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAA,GAAA,YAAA,KAAA,CAAA;AACA,IAAA,IAAA,KAAA,EAAA;AACA,MAAAC,0BAAA,CAAA,KAAA,EAAA,cAAA,CAAA;AACA,MAAA;AACA,IAAA;;AAEA,IAAA,MAAA,OAAA,GAAAD,eAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACA,IAAA,KAAA,CAAA,cAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,CAAA;AACA,EAAA,CAAA,CAAA;AACA;;;;"}
@@ -39,8 +39,12 @@ const consoleIntegration = integration.defineIntegration((options = {}) => {
39
39
 
40
40
  addConsoleBreadcrumb(level, args);
41
41
  });
42
-
43
42
  client.registerCleanup(unsubscribe);
43
+
44
+ if (options.filter) {
45
+ const unsubscribe = console.addConsoleInstrumentationFilter(options.filter);
46
+ client.registerCleanup(unsubscribe);
47
+ }
44
48
  },
45
49
  };
46
50
  });