@sentry/cloudflare 10.69.0 → 11.0.0-alpha.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 (771) hide show
  1. package/README.md +3 -7
  2. package/build/cjs/{sdk.js → dev/baseSdk.js} +27 -17
  3. package/build/cjs/dev/baseSdk.js.map +1 -0
  4. package/build/cjs/dev/client.js.map +1 -0
  5. package/build/cjs/dev/debug-build.js.map +1 -0
  6. package/build/cjs/dev/defineCloudflareOptions.js.map +1 -0
  7. package/build/cjs/dev/durableobject.js +234 -0
  8. package/build/cjs/dev/durableobject.js.map +1 -0
  9. package/build/cjs/dev/flush.js.map +1 -0
  10. package/build/cjs/{index.js → dev/index.js} +15 -17
  11. package/build/cjs/{index.js.map → dev/index.js.map} +1 -1
  12. package/build/cjs/dev/instrument.js.map +1 -0
  13. package/build/cjs/{instrumentations → dev/instrumentations}/agents/index.js +2 -0
  14. package/build/cjs/dev/instrumentations/agents/index.js.map +1 -0
  15. package/build/cjs/{instrumentations → dev/instrumentations}/agents/instrumentAgentCallableRpc.js +2 -2
  16. package/build/cjs/dev/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  17. package/build/cjs/dev/instrumentations/agents/instrumentAgentRequestConversation.js +19 -0
  18. package/build/cjs/dev/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  19. package/build/cjs/{instrumentations → dev/instrumentations}/agents/instrumentChatAgentConversation.js +3 -3
  20. package/build/cjs/dev/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  21. package/build/cjs/dev/instrumentations/agents/types.js +77 -0
  22. package/build/cjs/dev/instrumentations/agents/types.js.map +1 -0
  23. package/build/cjs/dev/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  24. package/build/cjs/dev/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  25. package/build/cjs/dev/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  26. package/build/cjs/dev/instrumentations/instrumentSqlStorage.js.map +1 -0
  27. package/build/cjs/{instrumentations → dev/instrumentations}/instrumentWorkerEntrypoint.js +3 -3
  28. package/build/cjs/dev/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  29. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentD1.js +0 -4
  30. package/build/cjs/dev/instrumentations/worker/instrumentD1.js.map +1 -0
  31. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentEmail.js +3 -1
  32. package/build/cjs/dev/instrumentations/worker/instrumentEmail.js.map +1 -0
  33. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentEnv.js +3 -4
  34. package/build/cjs/dev/instrumentations/worker/instrumentEnv.js.map +1 -0
  35. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentFetch.js +9 -3
  36. package/build/cjs/dev/instrumentations/worker/instrumentFetch.js.map +1 -0
  37. package/build/cjs/dev/instrumentations/worker/instrumentFetcher.js.map +1 -0
  38. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentQueue.js +3 -2
  39. package/build/cjs/dev/instrumentations/worker/instrumentQueue.js.map +1 -0
  40. package/build/cjs/dev/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  41. package/build/cjs/dev/instrumentations/worker/instrumentR2.js.map +1 -0
  42. package/build/cjs/dev/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  43. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentScheduled.js +3 -1
  44. package/build/cjs/dev/instrumentations/worker/instrumentScheduled.js.map +1 -0
  45. package/build/cjs/dev/instrumentations/worker/instrumentTail.js.map +1 -0
  46. package/build/cjs/{integrations → dev/integrations}/fetch.js +1 -1
  47. package/build/cjs/dev/integrations/fetch.js.map +1 -0
  48. package/build/cjs/{integrations → dev/integrations}/httpServer.js +5 -4
  49. package/build/cjs/dev/integrations/httpServer.js.map +1 -0
  50. package/build/cjs/dev/integrations/spotlight.js.map +1 -0
  51. package/build/cjs/{nodejs_compat → dev}/integrations/tracing/vercelai.js +6 -6
  52. package/build/cjs/dev/integrations/tracing/vercelai.js.map +1 -0
  53. package/build/cjs/dev/opentelemetry/tracer.js.map +1 -0
  54. package/build/cjs/{options.js → dev/options.js} +8 -0
  55. package/build/cjs/dev/options.js.map +1 -0
  56. package/build/cjs/{pages-plugin.js → dev/pages-plugin.js} +8 -3
  57. package/build/cjs/dev/pages-plugin.js.map +1 -0
  58. package/build/cjs/{request.js → dev/request.js} +23 -12
  59. package/build/cjs/dev/request.js.map +1 -0
  60. package/build/cjs/dev/scope-utils.js.map +1 -0
  61. package/build/cjs/dev/sdk.js +19 -0
  62. package/build/cjs/dev/sdk.js.map +1 -0
  63. package/build/cjs/dev/transport.js.map +1 -0
  64. package/build/cjs/{utils → dev/utils}/instrumentContext.js +8 -13
  65. package/build/cjs/dev/utils/instrumentContext.js.map +1 -0
  66. package/build/cjs/dev/utils/internalSqlQuery.js.map +1 -0
  67. package/build/cjs/dev/utils/internalStorageKey.js.map +1 -0
  68. package/build/cjs/dev/utils/invocationScope.js +12 -0
  69. package/build/cjs/dev/utils/invocationScope.js.map +1 -0
  70. package/build/cjs/dev/utils/isBinding.js.map +1 -0
  71. package/build/cjs/dev/utils/isCloudflareClass.js.map +1 -0
  72. package/build/cjs/{utils → dev/utils}/rpcMeta.js +4 -0
  73. package/build/cjs/dev/utils/rpcMeta.js.map +1 -0
  74. package/build/cjs/dev/utils/streaming.js.map +1 -0
  75. package/build/cjs/dev/utils/traceLinks.js.map +1 -0
  76. package/build/cjs/dev/vendor/stacktrace.js.map +1 -0
  77. package/build/cjs/dev/vite/agentClass.js.map +1 -0
  78. package/build/cjs/dev/vite/autoInstrument.js.map +1 -0
  79. package/build/cjs/{vite → dev/vite}/index.js +3 -1
  80. package/build/cjs/dev/vite/index.js.map +1 -0
  81. package/build/cjs/dev/vite/instrumentFile.js.map +1 -0
  82. package/build/cjs/dev/vite/moduleShape.js.map +1 -0
  83. package/build/cjs/dev/vite/transform.js.map +1 -0
  84. package/build/cjs/dev/vite/workerEntrypoint.js.map +1 -0
  85. package/build/cjs/dev/vite/wranglerConfig.js.map +1 -0
  86. package/build/cjs/{withSentry.js → dev/withSentry.js} +2 -19
  87. package/build/cjs/dev/withSentry.js.map +1 -0
  88. package/build/cjs/{workflows.js → dev/workflows.js} +9 -4
  89. package/build/cjs/dev/workflows.js.map +1 -0
  90. package/build/cjs/{wrapMethodWithSentry.js → dev/wrapMethodWithSentry.js} +2 -3
  91. package/build/cjs/dev/wrapMethodWithSentry.js.map +1 -0
  92. package/build/cjs/prod/baseSdk.js +73 -0
  93. package/build/cjs/prod/baseSdk.js.map +1 -0
  94. package/build/cjs/prod/client.js +122 -0
  95. package/build/cjs/prod/client.js.map +1 -0
  96. package/build/cjs/prod/debug-build.js +6 -0
  97. package/build/cjs/prod/debug-build.js.map +1 -0
  98. package/build/cjs/prod/defineCloudflareOptions.js +11 -0
  99. package/build/cjs/prod/defineCloudflareOptions.js.map +1 -0
  100. package/build/cjs/prod/durableobject.js +234 -0
  101. package/build/cjs/prod/durableobject.js.map +1 -0
  102. package/build/cjs/prod/flush.js +87 -0
  103. package/build/cjs/prod/flush.js.map +1 -0
  104. package/build/cjs/{nodejs_compat → prod}/index.js +33 -37
  105. package/build/cjs/{nodejs_compat → prod}/index.js.map +1 -1
  106. package/build/cjs/prod/instrument.js +52 -0
  107. package/build/cjs/prod/instrument.js.map +1 -0
  108. package/build/cjs/prod/instrumentations/agents/index.js +16 -0
  109. package/build/cjs/prod/instrumentations/agents/index.js.map +1 -0
  110. package/build/cjs/prod/instrumentations/agents/instrumentAgentCallableRpc.js +52 -0
  111. package/build/cjs/prod/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  112. package/build/cjs/prod/instrumentations/agents/instrumentAgentRequestConversation.js +19 -0
  113. package/build/cjs/prod/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  114. package/build/cjs/prod/instrumentations/agents/instrumentChatAgentConversation.js +31 -0
  115. package/build/cjs/prod/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  116. package/build/cjs/prod/instrumentations/agents/types.js +77 -0
  117. package/build/cjs/prod/instrumentations/agents/types.js.map +1 -0
  118. package/build/cjs/prod/instrumentations/instrumentDurableObjectNamespace.js +41 -0
  119. package/build/cjs/prod/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  120. package/build/cjs/prod/instrumentations/instrumentDurableObjectStorage.js +72 -0
  121. package/build/cjs/prod/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  122. package/build/cjs/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js +40 -0
  123. package/build/cjs/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  124. package/build/cjs/prod/instrumentations/instrumentSqlStorage.js +42 -0
  125. package/build/cjs/prod/instrumentations/instrumentSqlStorage.js.map +1 -0
  126. package/build/cjs/prod/instrumentations/instrumentWorkerEntrypoint.js +139 -0
  127. package/build/cjs/prod/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  128. package/build/cjs/prod/instrumentations/worker/instrumentD1.js +161 -0
  129. package/build/cjs/prod/instrumentations/worker/instrumentD1.js.map +1 -0
  130. package/build/cjs/prod/instrumentations/worker/instrumentEmail.js +63 -0
  131. package/build/cjs/prod/instrumentations/worker/instrumentEmail.js.map +1 -0
  132. package/build/cjs/prod/instrumentations/worker/instrumentEnv.js +90 -0
  133. package/build/cjs/prod/instrumentations/worker/instrumentEnv.js.map +1 -0
  134. package/build/cjs/prod/instrumentations/worker/instrumentFetch.js +54 -0
  135. package/build/cjs/prod/instrumentations/worker/instrumentFetch.js.map +1 -0
  136. package/build/cjs/prod/instrumentations/worker/instrumentFetcher.js +24 -0
  137. package/build/cjs/prod/instrumentations/worker/instrumentFetcher.js.map +1 -0
  138. package/build/cjs/prod/instrumentations/worker/instrumentQueue.js +82 -0
  139. package/build/cjs/prod/instrumentations/worker/instrumentQueue.js.map +1 -0
  140. package/build/cjs/prod/instrumentations/worker/instrumentQueueProducer.js +80 -0
  141. package/build/cjs/prod/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  142. package/build/cjs/prod/instrumentations/worker/instrumentR2.js +124 -0
  143. package/build/cjs/prod/instrumentations/worker/instrumentR2.js.map +1 -0
  144. package/build/cjs/prod/instrumentations/worker/instrumentRateLimit.js +29 -0
  145. package/build/cjs/prod/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  146. package/build/cjs/prod/instrumentations/worker/instrumentScheduled.js +78 -0
  147. package/build/cjs/prod/instrumentations/worker/instrumentScheduled.js.map +1 -0
  148. package/build/cjs/prod/instrumentations/worker/instrumentTail.js +60 -0
  149. package/build/cjs/prod/instrumentations/worker/instrumentTail.js.map +1 -0
  150. package/build/cjs/prod/integrations/fetch.js +119 -0
  151. package/build/cjs/prod/integrations/fetch.js.map +1 -0
  152. package/build/cjs/prod/integrations/httpServer.js +36 -0
  153. package/build/cjs/prod/integrations/httpServer.js.map +1 -0
  154. package/build/cjs/prod/integrations/spotlight.js +64 -0
  155. package/build/cjs/prod/integrations/spotlight.js.map +1 -0
  156. package/build/cjs/{integrations → prod/integrations}/tracing/vercelai.js +5 -5
  157. package/build/cjs/prod/integrations/tracing/vercelai.js.map +1 -0
  158. package/build/cjs/prod/opentelemetry/tracer.js +49 -0
  159. package/build/cjs/prod/opentelemetry/tracer.js.map +1 -0
  160. package/build/cjs/prod/options.js +33 -0
  161. package/build/cjs/prod/options.js.map +1 -0
  162. package/build/cjs/prod/pages-plugin.js +24 -0
  163. package/build/cjs/prod/pages-plugin.js.map +1 -0
  164. package/build/cjs/prod/request.js +132 -0
  165. package/build/cjs/prod/request.js.map +1 -0
  166. package/build/cjs/prod/scope-utils.js +22 -0
  167. package/build/cjs/prod/scope-utils.js.map +1 -0
  168. package/build/cjs/prod/sdk.js +19 -0
  169. package/build/cjs/prod/sdk.js.map +1 -0
  170. package/build/cjs/prod/transport.js +75 -0
  171. package/build/cjs/prod/transport.js.map +1 -0
  172. package/build/cjs/prod/utils/instrumentContext.js +63 -0
  173. package/build/cjs/prod/utils/instrumentContext.js.map +1 -0
  174. package/build/cjs/prod/utils/internalSqlQuery.js +25 -0
  175. package/build/cjs/prod/utils/internalSqlQuery.js.map +1 -0
  176. package/build/cjs/prod/utils/internalStorageKey.js +44 -0
  177. package/build/cjs/prod/utils/internalStorageKey.js.map +1 -0
  178. package/build/cjs/prod/utils/invocationScope.js +12 -0
  179. package/build/cjs/prod/utils/invocationScope.js.map +1 -0
  180. package/build/cjs/prod/utils/isBinding.js +37 -0
  181. package/build/cjs/prod/utils/isBinding.js.map +1 -0
  182. package/build/cjs/prod/utils/isCloudflareClass.js +23 -0
  183. package/build/cjs/prod/utils/isCloudflareClass.js.map +1 -0
  184. package/build/cjs/prod/utils/rpcMeta.js +39 -0
  185. package/build/cjs/prod/utils/rpcMeta.js.map +1 -0
  186. package/build/cjs/prod/utils/streaming.js +16 -0
  187. package/build/cjs/prod/utils/streaming.js.map +1 -0
  188. package/build/cjs/prod/utils/traceLinks.js +54 -0
  189. package/build/cjs/prod/utils/traceLinks.js.map +1 -0
  190. package/build/cjs/prod/vendor/stacktrace.js +28 -0
  191. package/build/cjs/prod/vendor/stacktrace.js.map +1 -0
  192. package/build/cjs/prod/vite/agentClass.js +114 -0
  193. package/build/cjs/prod/vite/agentClass.js.map +1 -0
  194. package/build/cjs/prod/vite/autoInstrument.js +94 -0
  195. package/build/cjs/prod/vite/autoInstrument.js.map +1 -0
  196. package/build/cjs/prod/vite/index.js +16 -0
  197. package/build/cjs/prod/vite/index.js.map +1 -0
  198. package/build/cjs/prod/vite/instrumentFile.js +31 -0
  199. package/build/cjs/prod/vite/instrumentFile.js.map +1 -0
  200. package/build/cjs/prod/vite/moduleShape.js +231 -0
  201. package/build/cjs/prod/vite/moduleShape.js.map +1 -0
  202. package/build/cjs/prod/vite/transform.js +149 -0
  203. package/build/cjs/prod/vite/transform.js.map +1 -0
  204. package/build/cjs/prod/vite/workerEntrypoint.js +66 -0
  205. package/build/cjs/prod/vite/workerEntrypoint.js.map +1 -0
  206. package/build/cjs/prod/vite/wranglerConfig.js +54 -0
  207. package/build/cjs/prod/vite/wranglerConfig.js.map +1 -0
  208. package/build/cjs/prod/withSentry.js +29 -0
  209. package/build/cjs/prod/withSentry.js.map +1 -0
  210. package/build/cjs/prod/workflows.js +139 -0
  211. package/build/cjs/prod/workflows.js.map +1 -0
  212. package/build/cjs/prod/wrapMethodWithSentry.js +134 -0
  213. package/build/cjs/prod/wrapMethodWithSentry.js.map +1 -0
  214. package/build/esm/{sdk.js → dev/baseSdk.js} +26 -17
  215. package/build/esm/dev/baseSdk.js.map +1 -0
  216. package/build/esm/dev/client.js.map +1 -0
  217. package/build/esm/dev/debug-build.js.map +1 -0
  218. package/build/esm/dev/defineCloudflareOptions.js.map +1 -0
  219. package/build/esm/dev/durableobject.js +229 -0
  220. package/build/esm/dev/durableobject.js.map +1 -0
  221. package/build/esm/dev/flush.js.map +1 -0
  222. package/build/esm/dev/index.js +15 -0
  223. package/build/esm/{index.js.map → dev/index.js.map} +1 -1
  224. package/build/esm/dev/instrument.js.map +1 -0
  225. package/build/esm/{instrumentations → dev/instrumentations}/agents/index.js +2 -0
  226. package/build/esm/dev/instrumentations/agents/index.js.map +1 -0
  227. package/build/esm/{instrumentations → dev/instrumentations}/agents/instrumentAgentCallableRpc.js +2 -2
  228. package/build/esm/dev/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  229. package/build/esm/dev/instrumentations/agents/instrumentAgentRequestConversation.js +17 -0
  230. package/build/esm/dev/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  231. package/build/esm/{instrumentations → dev/instrumentations}/agents/instrumentChatAgentConversation.js +4 -4
  232. package/build/esm/dev/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  233. package/build/esm/dev/instrumentations/agents/types.js +69 -0
  234. package/build/esm/dev/instrumentations/agents/types.js.map +1 -0
  235. package/build/esm/dev/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  236. package/build/esm/dev/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  237. package/build/esm/dev/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  238. package/build/esm/dev/instrumentations/instrumentSqlStorage.js.map +1 -0
  239. package/build/esm/{instrumentations → dev/instrumentations}/instrumentWorkerEntrypoint.js +2 -2
  240. package/build/esm/dev/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  241. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentD1.js +1 -4
  242. package/build/esm/dev/instrumentations/worker/instrumentD1.js.map +1 -0
  243. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentEmail.js +3 -1
  244. package/build/esm/dev/instrumentations/worker/instrumentEmail.js.map +1 -0
  245. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentEnv.js +3 -4
  246. package/build/esm/dev/instrumentations/worker/instrumentEnv.js.map +1 -0
  247. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentFetch.js +10 -4
  248. package/build/esm/dev/instrumentations/worker/instrumentFetch.js.map +1 -0
  249. package/build/esm/dev/instrumentations/worker/instrumentFetcher.js.map +1 -0
  250. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentQueue.js +4 -3
  251. package/build/esm/dev/instrumentations/worker/instrumentQueue.js.map +1 -0
  252. package/build/esm/dev/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  253. package/build/esm/dev/instrumentations/worker/instrumentR2.js.map +1 -0
  254. package/build/esm/dev/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  255. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentScheduled.js +3 -1
  256. package/build/esm/dev/instrumentations/worker/instrumentScheduled.js.map +1 -0
  257. package/build/esm/dev/instrumentations/worker/instrumentTail.js.map +1 -0
  258. package/build/esm/{integrations → dev/integrations}/fetch.js +1 -1
  259. package/build/esm/dev/integrations/fetch.js.map +1 -0
  260. package/build/esm/{integrations → dev/integrations}/httpServer.js +5 -4
  261. package/build/esm/dev/integrations/httpServer.js.map +1 -0
  262. package/build/esm/dev/integrations/spotlight.js.map +1 -0
  263. package/build/esm/{integrations → dev/integrations}/tracing/vercelai.js +5 -5
  264. package/build/esm/dev/integrations/tracing/vercelai.js.map +1 -0
  265. package/build/esm/dev/opentelemetry/tracer.js.map +1 -0
  266. package/build/esm/{options.js → dev/options.js} +8 -0
  267. package/build/esm/dev/options.js.map +1 -0
  268. package/build/esm/dev/package.json +1 -0
  269. package/build/esm/{pages-plugin.js → dev/pages-plugin.js} +8 -3
  270. package/build/esm/dev/pages-plugin.js.map +1 -0
  271. package/build/esm/{request.js → dev/request.js} +24 -14
  272. package/build/esm/dev/request.js.map +1 -0
  273. package/build/esm/dev/scope-utils.js.map +1 -0
  274. package/build/esm/dev/sdk.js +16 -0
  275. package/build/esm/dev/sdk.js.map +1 -0
  276. package/build/esm/dev/transport.js.map +1 -0
  277. package/build/esm/{utils → dev/utils}/instrumentContext.js +8 -13
  278. package/build/esm/dev/utils/instrumentContext.js.map +1 -0
  279. package/build/esm/dev/utils/internalSqlQuery.js.map +1 -0
  280. package/build/esm/dev/utils/internalStorageKey.js.map +1 -0
  281. package/build/esm/dev/utils/invocationScope.js +10 -0
  282. package/build/esm/dev/utils/invocationScope.js.map +1 -0
  283. package/build/esm/dev/utils/isBinding.js.map +1 -0
  284. package/build/esm/dev/utils/isCloudflareClass.js.map +1 -0
  285. package/build/esm/{utils → dev/utils}/rpcMeta.js +4 -1
  286. package/build/esm/dev/utils/rpcMeta.js.map +1 -0
  287. package/build/esm/dev/utils/streaming.js.map +1 -0
  288. package/build/esm/{utils → dev/utils}/traceLinks.js +1 -1
  289. package/build/esm/dev/utils/traceLinks.js.map +1 -0
  290. package/build/esm/dev/vendor/stacktrace.js.map +1 -0
  291. package/build/esm/dev/vite/agentClass.js.map +1 -0
  292. package/build/esm/dev/vite/autoInstrument.js.map +1 -0
  293. package/build/esm/{vite → dev/vite}/index.js +3 -1
  294. package/build/esm/dev/vite/index.js.map +1 -0
  295. package/build/esm/dev/vite/instrumentFile.js.map +1 -0
  296. package/build/esm/dev/vite/moduleShape.js.map +1 -0
  297. package/build/esm/dev/vite/transform.js.map +1 -0
  298. package/build/esm/dev/vite/workerEntrypoint.js.map +1 -0
  299. package/build/esm/dev/vite/wranglerConfig.js.map +1 -0
  300. package/build/esm/{withSentry.js → dev/withSentry.js} +1 -18
  301. package/build/esm/dev/withSentry.js.map +1 -0
  302. package/build/esm/{workflows.js → dev/workflows.js} +9 -4
  303. package/build/esm/dev/workflows.js.map +1 -0
  304. package/build/esm/{wrapMethodWithSentry.js → dev/wrapMethodWithSentry.js} +3 -4
  305. package/build/esm/dev/wrapMethodWithSentry.js.map +1 -0
  306. package/build/esm/prod/baseSdk.js +69 -0
  307. package/build/esm/prod/baseSdk.js.map +1 -0
  308. package/build/esm/prod/client.js +120 -0
  309. package/build/esm/prod/client.js.map +1 -0
  310. package/build/esm/prod/debug-build.js +4 -0
  311. package/build/esm/prod/debug-build.js.map +1 -0
  312. package/build/esm/prod/defineCloudflareOptions.js +9 -0
  313. package/build/esm/prod/defineCloudflareOptions.js.map +1 -0
  314. package/build/esm/prod/durableobject.js +229 -0
  315. package/build/esm/prod/durableobject.js.map +1 -0
  316. package/build/esm/prod/flush.js +83 -0
  317. package/build/esm/prod/flush.js.map +1 -0
  318. package/build/esm/prod/index.js +15 -0
  319. package/build/esm/{nodejs_compat → prod}/index.js.map +1 -1
  320. package/build/esm/prod/instrument.js +48 -0
  321. package/build/esm/prod/instrument.js.map +1 -0
  322. package/build/esm/prod/instrumentations/agents/index.js +14 -0
  323. package/build/esm/prod/instrumentations/agents/index.js.map +1 -0
  324. package/build/esm/prod/instrumentations/agents/instrumentAgentCallableRpc.js +50 -0
  325. package/build/esm/prod/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  326. package/build/esm/prod/instrumentations/agents/instrumentAgentRequestConversation.js +17 -0
  327. package/build/esm/prod/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  328. package/build/esm/prod/instrumentations/agents/instrumentChatAgentConversation.js +29 -0
  329. package/build/esm/prod/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  330. package/build/esm/prod/instrumentations/agents/types.js +69 -0
  331. package/build/esm/prod/instrumentations/agents/types.js.map +1 -0
  332. package/build/esm/prod/instrumentations/instrumentDurableObjectNamespace.js +38 -0
  333. package/build/esm/prod/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  334. package/build/esm/prod/instrumentations/instrumentDurableObjectStorage.js +70 -0
  335. package/build/esm/prod/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  336. package/build/esm/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js +38 -0
  337. package/build/esm/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  338. package/build/esm/prod/instrumentations/instrumentSqlStorage.js +40 -0
  339. package/build/esm/prod/instrumentations/instrumentSqlStorage.js.map +1 -0
  340. package/build/esm/prod/instrumentations/instrumentWorkerEntrypoint.js +137 -0
  341. package/build/esm/prod/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  342. package/build/esm/prod/instrumentations/worker/instrumentD1.js +159 -0
  343. package/build/esm/prod/instrumentations/worker/instrumentD1.js.map +1 -0
  344. package/build/esm/prod/instrumentations/worker/instrumentEmail.js +61 -0
  345. package/build/esm/prod/instrumentations/worker/instrumentEmail.js.map +1 -0
  346. package/build/esm/prod/instrumentations/worker/instrumentEnv.js +88 -0
  347. package/build/esm/prod/instrumentations/worker/instrumentEnv.js.map +1 -0
  348. package/build/esm/prod/instrumentations/worker/instrumentFetch.js +51 -0
  349. package/build/esm/prod/instrumentations/worker/instrumentFetch.js.map +1 -0
  350. package/build/esm/prod/instrumentations/worker/instrumentFetcher.js +22 -0
  351. package/build/esm/prod/instrumentations/worker/instrumentFetcher.js.map +1 -0
  352. package/build/esm/prod/instrumentations/worker/instrumentQueue.js +79 -0
  353. package/build/esm/prod/instrumentations/worker/instrumentQueue.js.map +1 -0
  354. package/build/esm/prod/instrumentations/worker/instrumentQueueProducer.js +78 -0
  355. package/build/esm/prod/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  356. package/build/esm/prod/instrumentations/worker/instrumentR2.js +122 -0
  357. package/build/esm/prod/instrumentations/worker/instrumentR2.js.map +1 -0
  358. package/build/esm/prod/instrumentations/worker/instrumentRateLimit.js +27 -0
  359. package/build/esm/prod/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  360. package/build/esm/prod/instrumentations/worker/instrumentScheduled.js +75 -0
  361. package/build/esm/prod/instrumentations/worker/instrumentScheduled.js.map +1 -0
  362. package/build/esm/prod/instrumentations/worker/instrumentTail.js +57 -0
  363. package/build/esm/prod/instrumentations/worker/instrumentTail.js.map +1 -0
  364. package/build/esm/prod/integrations/fetch.js +117 -0
  365. package/build/esm/prod/integrations/fetch.js.map +1 -0
  366. package/build/esm/prod/integrations/httpServer.js +33 -0
  367. package/build/esm/prod/integrations/httpServer.js.map +1 -0
  368. package/build/esm/prod/integrations/spotlight.js +61 -0
  369. package/build/esm/prod/integrations/spotlight.js.map +1 -0
  370. package/build/esm/prod/integrations/tracing/vercelai.js +16 -0
  371. package/build/esm/prod/integrations/tracing/vercelai.js.map +1 -0
  372. package/build/esm/prod/opentelemetry/tracer.js +47 -0
  373. package/build/esm/prod/opentelemetry/tracer.js.map +1 -0
  374. package/build/esm/prod/options.js +31 -0
  375. package/build/esm/prod/options.js.map +1 -0
  376. package/build/esm/prod/package.json +1 -0
  377. package/build/esm/prod/pages-plugin.js +22 -0
  378. package/build/esm/prod/pages-plugin.js.map +1 -0
  379. package/build/esm/prod/request.js +129 -0
  380. package/build/esm/prod/request.js.map +1 -0
  381. package/build/esm/prod/scope-utils.js +18 -0
  382. package/build/esm/prod/scope-utils.js.map +1 -0
  383. package/build/esm/prod/sdk.js +16 -0
  384. package/build/esm/prod/sdk.js.map +1 -0
  385. package/build/esm/prod/transport.js +72 -0
  386. package/build/esm/prod/transport.js.map +1 -0
  387. package/build/esm/prod/utils/instrumentContext.js +61 -0
  388. package/build/esm/prod/utils/instrumentContext.js.map +1 -0
  389. package/build/esm/prod/utils/internalSqlQuery.js +23 -0
  390. package/build/esm/prod/utils/internalSqlQuery.js.map +1 -0
  391. package/build/esm/prod/utils/internalStorageKey.js +41 -0
  392. package/build/esm/prod/utils/internalStorageKey.js.map +1 -0
  393. package/build/esm/prod/utils/invocationScope.js +10 -0
  394. package/build/esm/prod/utils/invocationScope.js.map +1 -0
  395. package/build/esm/prod/utils/isBinding.js +29 -0
  396. package/build/esm/prod/utils/isBinding.js.map +1 -0
  397. package/build/esm/prod/utils/isCloudflareClass.js +21 -0
  398. package/build/esm/prod/utils/isCloudflareClass.js.map +1 -0
  399. package/build/esm/prod/utils/rpcMeta.js +35 -0
  400. package/build/esm/prod/utils/rpcMeta.js.map +1 -0
  401. package/build/esm/prod/utils/streaming.js +14 -0
  402. package/build/esm/prod/utils/streaming.js.map +1 -0
  403. package/build/esm/prod/utils/traceLinks.js +49 -0
  404. package/build/esm/prod/utils/traceLinks.js.map +1 -0
  405. package/build/esm/prod/vendor/stacktrace.js +25 -0
  406. package/build/esm/prod/vendor/stacktrace.js.map +1 -0
  407. package/build/esm/prod/vite/agentClass.js +111 -0
  408. package/build/esm/prod/vite/agentClass.js.map +1 -0
  409. package/build/esm/prod/vite/autoInstrument.js +92 -0
  410. package/build/esm/prod/vite/autoInstrument.js.map +1 -0
  411. package/build/esm/prod/vite/index.js +14 -0
  412. package/build/esm/prod/vite/index.js.map +1 -0
  413. package/build/esm/prod/vite/instrumentFile.js +27 -0
  414. package/build/esm/prod/vite/instrumentFile.js.map +1 -0
  415. package/build/esm/prod/vite/moduleShape.js +227 -0
  416. package/build/esm/prod/vite/moduleShape.js.map +1 -0
  417. package/build/esm/prod/vite/transform.js +147 -0
  418. package/build/esm/prod/vite/transform.js.map +1 -0
  419. package/build/esm/prod/vite/workerEntrypoint.js +64 -0
  420. package/build/esm/prod/vite/workerEntrypoint.js.map +1 -0
  421. package/build/esm/prod/vite/wranglerConfig.js +52 -0
  422. package/build/esm/prod/vite/wranglerConfig.js.map +1 -0
  423. package/build/esm/prod/withSentry.js +27 -0
  424. package/build/esm/prod/withSentry.js.map +1 -0
  425. package/build/esm/prod/workflows.js +136 -0
  426. package/build/esm/prod/workflows.js.map +1 -0
  427. package/build/esm/prod/wrapMethodWithSentry.js +132 -0
  428. package/build/esm/prod/wrapMethodWithSentry.js.map +1 -0
  429. package/build/types/baseSdk.d.ts +28 -0
  430. package/build/types/baseSdk.d.ts.map +1 -0
  431. package/build/types/client.d.ts +12 -39
  432. package/build/types/client.d.ts.map +1 -1
  433. package/build/types/defineCloudflareOptions.d.ts +2 -2
  434. package/build/types/defineCloudflareOptions.d.ts.map +1 -1
  435. package/build/types/durableobject.d.ts +22 -12
  436. package/build/types/durableobject.d.ts.map +1 -1
  437. package/build/types/flush.d.ts +1 -1
  438. package/build/types/flush.d.ts.map +1 -1
  439. package/build/types/index.d.ts +3 -5
  440. package/build/types/index.d.ts.map +1 -1
  441. package/build/types/instrumentations/agents/index.d.ts +4 -3
  442. package/build/types/instrumentations/agents/index.d.ts.map +1 -1
  443. package/build/types/instrumentations/agents/instrumentAgentCallableRpc.d.ts +4 -1
  444. package/build/types/instrumentations/agents/instrumentAgentCallableRpc.d.ts.map +1 -1
  445. package/build/types/instrumentations/agents/instrumentAgentRequestConversation.d.ts +16 -0
  446. package/build/types/instrumentations/agents/instrumentAgentRequestConversation.d.ts.map +1 -0
  447. package/build/types/instrumentations/agents/instrumentChatAgentConversation.d.ts +10 -9
  448. package/build/types/instrumentations/agents/instrumentChatAgentConversation.d.ts.map +1 -1
  449. package/build/types/instrumentations/agents/types.d.ts +63 -18
  450. package/build/types/instrumentations/agents/types.d.ts.map +1 -1
  451. package/build/types/instrumentations/instrumentDurableObjectStorage.d.ts.map +1 -1
  452. package/build/types/instrumentations/instrumentSqlStorage.d.ts.map +1 -1
  453. package/build/types/instrumentations/instrumentWorkerEntrypoint.d.ts +2 -1
  454. package/build/types/instrumentations/instrumentWorkerEntrypoint.d.ts.map +1 -1
  455. package/build/types/instrumentations/worker/instrumentD1.d.ts +0 -16
  456. package/build/types/instrumentations/worker/instrumentD1.d.ts.map +1 -1
  457. package/build/types/instrumentations/worker/instrumentEmail.d.ts +2 -2
  458. package/build/types/instrumentations/worker/instrumentEmail.d.ts.map +1 -1
  459. package/build/types/instrumentations/worker/instrumentEnv.d.ts.map +1 -1
  460. package/build/types/instrumentations/worker/instrumentFetch.d.ts +2 -2
  461. package/build/types/instrumentations/worker/instrumentFetch.d.ts.map +1 -1
  462. package/build/types/instrumentations/worker/instrumentQueue.d.ts +2 -2
  463. package/build/types/instrumentations/worker/instrumentQueue.d.ts.map +1 -1
  464. package/build/types/instrumentations/worker/instrumentScheduled.d.ts +2 -2
  465. package/build/types/instrumentations/worker/instrumentScheduled.d.ts.map +1 -1
  466. package/build/types/instrumentations/worker/instrumentTail.d.ts +2 -2
  467. package/build/types/instrumentations/worker/instrumentTail.d.ts.map +1 -1
  468. package/build/types/integrations/httpServer.d.ts.map +1 -1
  469. package/build/types/integrations/spotlight.d.ts +1 -1
  470. package/build/types/integrations/tracing/vercelai.d.ts +2 -9
  471. package/build/types/integrations/tracing/vercelai.d.ts.map +1 -1
  472. package/build/types/options.d.ts.map +1 -1
  473. package/build/types/pages-plugin.d.ts +1 -1
  474. package/build/types/pages-plugin.d.ts.map +1 -1
  475. package/build/types/request.d.ts +17 -2
  476. package/build/types/request.d.ts.map +1 -1
  477. package/build/types/sdk.d.ts +8 -3
  478. package/build/types/sdk.d.ts.map +1 -1
  479. package/build/types/transport.d.ts.map +1 -1
  480. package/build/types/types.d.ts +85 -0
  481. package/build/types/types.d.ts.map +1 -0
  482. package/build/types/utils/instrumentContext.d.ts.map +1 -1
  483. package/build/types/utils/invocationScope.d.ts +24 -0
  484. package/build/types/utils/invocationScope.d.ts.map +1 -0
  485. package/build/types/utils/isCloudflareClass.d.ts +1 -1
  486. package/build/types/utils/isCloudflareClass.d.ts.map +1 -1
  487. package/build/types/utils/rpcMeta.d.ts +8 -0
  488. package/build/types/utils/rpcMeta.d.ts.map +1 -1
  489. package/build/types/vite/autoInstrument.d.ts.map +1 -1
  490. package/build/types/vite/index.d.ts +20 -44
  491. package/build/types/vite/index.d.ts.map +1 -1
  492. package/build/types/withSentry.d.ts +2 -2
  493. package/build/types/withSentry.d.ts.map +1 -1
  494. package/build/types/workflows.d.ts +5 -4
  495. package/build/types/workflows.d.ts.map +1 -1
  496. package/build/types/wrapMethodWithSentry.d.ts +1 -1
  497. package/build/types/wrapMethodWithSentry.d.ts.map +1 -1
  498. package/package.json +28 -51
  499. package/build/cjs/async.js +0 -63
  500. package/build/cjs/async.js.map +0 -1
  501. package/build/cjs/client.js.map +0 -1
  502. package/build/cjs/debug-build.js.map +0 -1
  503. package/build/cjs/defineCloudflareOptions.js.map +0 -1
  504. package/build/cjs/durableobject.js +0 -155
  505. package/build/cjs/durableobject.js.map +0 -1
  506. package/build/cjs/flush.js.map +0 -1
  507. package/build/cjs/instrument.js.map +0 -1
  508. package/build/cjs/instrumentations/agents/index.js.map +0 -1
  509. package/build/cjs/instrumentations/agents/instrumentAgentCallableRpc.js.map +0 -1
  510. package/build/cjs/instrumentations/agents/instrumentChatAgentConversation.js.map +0 -1
  511. package/build/cjs/instrumentations/agents/types.js +0 -32
  512. package/build/cjs/instrumentations/agents/types.js.map +0 -1
  513. package/build/cjs/instrumentations/instrumentDurableObjectNamespace.js.map +0 -1
  514. package/build/cjs/instrumentations/instrumentDurableObjectStorage.js.map +0 -1
  515. package/build/cjs/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +0 -1
  516. package/build/cjs/instrumentations/instrumentSqlStorage.js.map +0 -1
  517. package/build/cjs/instrumentations/instrumentWorkerEntrypoint.js.map +0 -1
  518. package/build/cjs/instrumentations/worker/instrumentD1.js.map +0 -1
  519. package/build/cjs/instrumentations/worker/instrumentEmail.js.map +0 -1
  520. package/build/cjs/instrumentations/worker/instrumentEnv.js.map +0 -1
  521. package/build/cjs/instrumentations/worker/instrumentFetch.js.map +0 -1
  522. package/build/cjs/instrumentations/worker/instrumentFetcher.js.map +0 -1
  523. package/build/cjs/instrumentations/worker/instrumentQueue.js.map +0 -1
  524. package/build/cjs/instrumentations/worker/instrumentQueueProducer.js.map +0 -1
  525. package/build/cjs/instrumentations/worker/instrumentR2.js.map +0 -1
  526. package/build/cjs/instrumentations/worker/instrumentRateLimit.js.map +0 -1
  527. package/build/cjs/instrumentations/worker/instrumentScheduled.js.map +0 -1
  528. package/build/cjs/instrumentations/worker/instrumentTail.js.map +0 -1
  529. package/build/cjs/integrations/fetch.js.map +0 -1
  530. package/build/cjs/integrations/hono.js +0 -52
  531. package/build/cjs/integrations/hono.js.map +0 -1
  532. package/build/cjs/integrations/httpServer.js.map +0 -1
  533. package/build/cjs/integrations/spotlight.js.map +0 -1
  534. package/build/cjs/integrations/tracing/vercelai.js.map +0 -1
  535. package/build/cjs/nodejs_compat/integrations/tracing/vercelai.js.map +0 -1
  536. package/build/cjs/opentelemetry/tracer.js.map +0 -1
  537. package/build/cjs/options.js.map +0 -1
  538. package/build/cjs/pages-plugin.js.map +0 -1
  539. package/build/cjs/request.js.map +0 -1
  540. package/build/cjs/scope-utils.js.map +0 -1
  541. package/build/cjs/sdk.js.map +0 -1
  542. package/build/cjs/transport.js.map +0 -1
  543. package/build/cjs/utils/instrumentContext.js.map +0 -1
  544. package/build/cjs/utils/internalSqlQuery.js.map +0 -1
  545. package/build/cjs/utils/internalStorageKey.js.map +0 -1
  546. package/build/cjs/utils/isBinding.js.map +0 -1
  547. package/build/cjs/utils/isCloudflareClass.js.map +0 -1
  548. package/build/cjs/utils/rpcMeta.js.map +0 -1
  549. package/build/cjs/utils/rpcOptions.js +0 -26
  550. package/build/cjs/utils/rpcOptions.js.map +0 -1
  551. package/build/cjs/utils/streaming.js.map +0 -1
  552. package/build/cjs/utils/traceLinks.js.map +0 -1
  553. package/build/cjs/vendor/stacktrace.js.map +0 -1
  554. package/build/cjs/vite/agentClass.js.map +0 -1
  555. package/build/cjs/vite/autoInstrument.js.map +0 -1
  556. package/build/cjs/vite/index.js.map +0 -1
  557. package/build/cjs/vite/instrumentFile.js.map +0 -1
  558. package/build/cjs/vite/moduleShape.js.map +0 -1
  559. package/build/cjs/vite/transform.js.map +0 -1
  560. package/build/cjs/vite/workerEntrypoint.js.map +0 -1
  561. package/build/cjs/vite/wranglerConfig.js.map +0 -1
  562. package/build/cjs/withSentry.js.map +0 -1
  563. package/build/cjs/workflows.js.map +0 -1
  564. package/build/cjs/wrapMethodWithSentry.js.map +0 -1
  565. package/build/esm/async.js +0 -61
  566. package/build/esm/async.js.map +0 -1
  567. package/build/esm/client.js.map +0 -1
  568. package/build/esm/debug-build.js.map +0 -1
  569. package/build/esm/defineCloudflareOptions.js.map +0 -1
  570. package/build/esm/durableobject.js +0 -150
  571. package/build/esm/durableobject.js.map +0 -1
  572. package/build/esm/flush.js.map +0 -1
  573. package/build/esm/index.js +0 -17
  574. package/build/esm/instrument.js.map +0 -1
  575. package/build/esm/instrumentations/agents/index.js.map +0 -1
  576. package/build/esm/instrumentations/agents/instrumentAgentCallableRpc.js.map +0 -1
  577. package/build/esm/instrumentations/agents/instrumentChatAgentConversation.js.map +0 -1
  578. package/build/esm/instrumentations/agents/types.js +0 -26
  579. package/build/esm/instrumentations/agents/types.js.map +0 -1
  580. package/build/esm/instrumentations/instrumentDurableObjectNamespace.js.map +0 -1
  581. package/build/esm/instrumentations/instrumentDurableObjectStorage.js.map +0 -1
  582. package/build/esm/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +0 -1
  583. package/build/esm/instrumentations/instrumentSqlStorage.js.map +0 -1
  584. package/build/esm/instrumentations/instrumentWorkerEntrypoint.js.map +0 -1
  585. package/build/esm/instrumentations/worker/instrumentD1.js.map +0 -1
  586. package/build/esm/instrumentations/worker/instrumentEmail.js.map +0 -1
  587. package/build/esm/instrumentations/worker/instrumentEnv.js.map +0 -1
  588. package/build/esm/instrumentations/worker/instrumentFetch.js.map +0 -1
  589. package/build/esm/instrumentations/worker/instrumentFetcher.js.map +0 -1
  590. package/build/esm/instrumentations/worker/instrumentQueue.js.map +0 -1
  591. package/build/esm/instrumentations/worker/instrumentQueueProducer.js.map +0 -1
  592. package/build/esm/instrumentations/worker/instrumentR2.js.map +0 -1
  593. package/build/esm/instrumentations/worker/instrumentRateLimit.js.map +0 -1
  594. package/build/esm/instrumentations/worker/instrumentScheduled.js.map +0 -1
  595. package/build/esm/instrumentations/worker/instrumentTail.js.map +0 -1
  596. package/build/esm/integrations/fetch.js.map +0 -1
  597. package/build/esm/integrations/hono.js +0 -49
  598. package/build/esm/integrations/hono.js.map +0 -1
  599. package/build/esm/integrations/httpServer.js.map +0 -1
  600. package/build/esm/integrations/spotlight.js.map +0 -1
  601. package/build/esm/integrations/tracing/vercelai.js.map +0 -1
  602. package/build/esm/nodejs_compat/index.js +0 -18
  603. package/build/esm/nodejs_compat/integrations/tracing/vercelai.js +0 -16
  604. package/build/esm/nodejs_compat/integrations/tracing/vercelai.js.map +0 -1
  605. package/build/esm/opentelemetry/tracer.js.map +0 -1
  606. package/build/esm/options.js.map +0 -1
  607. package/build/esm/package.json +0 -1
  608. package/build/esm/pages-plugin.js.map +0 -1
  609. package/build/esm/request.js.map +0 -1
  610. package/build/esm/scope-utils.js.map +0 -1
  611. package/build/esm/sdk.js.map +0 -1
  612. package/build/esm/transport.js.map +0 -1
  613. package/build/esm/utils/instrumentContext.js.map +0 -1
  614. package/build/esm/utils/internalSqlQuery.js.map +0 -1
  615. package/build/esm/utils/internalStorageKey.js.map +0 -1
  616. package/build/esm/utils/isBinding.js.map +0 -1
  617. package/build/esm/utils/isCloudflareClass.js.map +0 -1
  618. package/build/esm/utils/rpcMeta.js.map +0 -1
  619. package/build/esm/utils/rpcOptions.js +0 -24
  620. package/build/esm/utils/rpcOptions.js.map +0 -1
  621. package/build/esm/utils/streaming.js.map +0 -1
  622. package/build/esm/utils/traceLinks.js.map +0 -1
  623. package/build/esm/vendor/stacktrace.js.map +0 -1
  624. package/build/esm/vite/agentClass.js.map +0 -1
  625. package/build/esm/vite/autoInstrument.js.map +0 -1
  626. package/build/esm/vite/index.js.map +0 -1
  627. package/build/esm/vite/instrumentFile.js.map +0 -1
  628. package/build/esm/vite/moduleShape.js.map +0 -1
  629. package/build/esm/vite/transform.js.map +0 -1
  630. package/build/esm/vite/workerEntrypoint.js.map +0 -1
  631. package/build/esm/vite/wranglerConfig.js.map +0 -1
  632. package/build/esm/withSentry.js.map +0 -1
  633. package/build/esm/workflows.js.map +0 -1
  634. package/build/esm/wrapMethodWithSentry.js.map +0 -1
  635. package/build/types/async.d.ts +0 -11
  636. package/build/types/async.d.ts.map +0 -1
  637. package/build/types/integrations/hono.d.ts +0 -42
  638. package/build/types/integrations/hono.d.ts.map +0 -1
  639. package/build/types/nodejs_compat/index.d.ts +0 -4
  640. package/build/types/nodejs_compat/index.d.ts.map +0 -1
  641. package/build/types/nodejs_compat/integrations/tracing/vercelai.d.ts +0 -37
  642. package/build/types/nodejs_compat/integrations/tracing/vercelai.d.ts.map +0 -1
  643. package/build/types/utils/rpcOptions.d.ts +0 -13
  644. package/build/types/utils/rpcOptions.d.ts.map +0 -1
  645. package/build/types-ts3.8/async.d.ts +0 -11
  646. package/build/types-ts3.8/client.d.ts +0 -203
  647. package/build/types-ts3.8/debug-build.d.ts +0 -7
  648. package/build/types-ts3.8/defineCloudflareOptions.d.ts +0 -38
  649. package/build/types-ts3.8/durableobject.d.ts +0 -118
  650. package/build/types-ts3.8/executionContext.d.ts +0 -13
  651. package/build/types-ts3.8/flush.d.ts +0 -47
  652. package/build/types-ts3.8/index.d.ts +0 -19
  653. package/build/types-ts3.8/instrument.d.ts +0 -20
  654. package/build/types-ts3.8/instrumentations/agents/index.d.ts +0 -24
  655. package/build/types-ts3.8/instrumentations/agents/instrumentAgentCallableRpc.d.ts +0 -11
  656. package/build/types-ts3.8/instrumentations/agents/instrumentChatAgentConversation.d.ts +0 -22
  657. package/build/types-ts3.8/instrumentations/agents/types.d.ts +0 -49
  658. package/build/types-ts3.8/instrumentations/instrumentDurableObjectNamespace.d.ts +0 -13
  659. package/build/types-ts3.8/instrumentations/instrumentDurableObjectStorage.d.ts +0 -19
  660. package/build/types-ts3.8/instrumentations/instrumentDurableObjectSyncKvStorage.d.ts +0 -3
  661. package/build/types-ts3.8/instrumentations/instrumentSqlStorage.d.ts +0 -9
  662. package/build/types-ts3.8/instrumentations/instrumentWorkerEntrypoint.d.ts +0 -42
  663. package/build/types-ts3.8/instrumentations/worker/instrumentD1.d.ts +0 -19
  664. package/build/types-ts3.8/instrumentations/worker/instrumentEmail.d.ts +0 -8
  665. package/build/types-ts3.8/instrumentations/worker/instrumentEnv.d.ts +0 -18
  666. package/build/types-ts3.8/instrumentations/worker/instrumentFetch.d.ts +0 -12
  667. package/build/types-ts3.8/instrumentations/worker/instrumentFetcher.d.ts +0 -10
  668. package/build/types-ts3.8/instrumentations/worker/instrumentQueue.d.ts +0 -12
  669. package/build/types-ts3.8/instrumentations/worker/instrumentQueueProducer.d.ts +0 -10
  670. package/build/types-ts3.8/instrumentations/worker/instrumentR2.d.ts +0 -9
  671. package/build/types-ts3.8/instrumentations/worker/instrumentRateLimit.d.ts +0 -6
  672. package/build/types-ts3.8/instrumentations/worker/instrumentScheduled.d.ts +0 -12
  673. package/build/types-ts3.8/instrumentations/worker/instrumentTail.d.ts +0 -12
  674. package/build/types-ts3.8/integrations/fetch.d.ts +0 -19
  675. package/build/types-ts3.8/integrations/hono.d.ts +0 -42
  676. package/build/types-ts3.8/integrations/httpServer.d.ts +0 -63
  677. package/build/types-ts3.8/integrations/spotlight.d.ts +0 -22
  678. package/build/types-ts3.8/integrations/tracing/vercelai.d.ts +0 -47
  679. package/build/types-ts3.8/nodejs_compat/index.d.ts +0 -4
  680. package/build/types-ts3.8/nodejs_compat/integrations/tracing/vercelai.d.ts +0 -37
  681. package/build/types-ts3.8/opentelemetry/tracer.d.ts +0 -6
  682. package/build/types-ts3.8/options.d.ts +0 -17
  683. package/build/types-ts3.8/pages-plugin.d.ts +0 -34
  684. package/build/types-ts3.8/request.d.ts +0 -25
  685. package/build/types-ts3.8/scope-utils.d.ts +0 -15
  686. package/build/types-ts3.8/sdk.d.ts +0 -10
  687. package/build/types-ts3.8/transport.d.ts +0 -34
  688. package/build/types-ts3.8/utils/instrumentContext.d.ts +0 -16
  689. package/build/types-ts3.8/utils/internalSqlQuery.d.ts +0 -20
  690. package/build/types-ts3.8/utils/internalStorageKey.d.ts +0 -22
  691. package/build/types-ts3.8/utils/isBinding.d.ts +0 -77
  692. package/build/types-ts3.8/utils/isCloudflareClass.d.ts +0 -30
  693. package/build/types-ts3.8/utils/rpcMeta.d.ts +0 -15
  694. package/build/types-ts3.8/utils/rpcOptions.d.ts +0 -13
  695. package/build/types-ts3.8/utils/streaming.d.ts +0 -17
  696. package/build/types-ts3.8/utils/traceLinks.d.ts +0 -28
  697. package/build/types-ts3.8/vendor/stacktrace.d.ts +0 -11
  698. package/build/types-ts3.8/vite/agentClass.d.ts +0 -41
  699. package/build/types-ts3.8/vite/autoInstrument.d.ts +0 -22
  700. package/build/types-ts3.8/vite/index.d.ts +0 -98
  701. package/build/types-ts3.8/vite/instrumentFile.d.ts +0 -22
  702. package/build/types-ts3.8/vite/moduleShape.d.ts +0 -52
  703. package/build/types-ts3.8/vite/transform.d.ts +0 -65
  704. package/build/types-ts3.8/vite/workerEntrypoint.d.ts +0 -12
  705. package/build/types-ts3.8/vite/wranglerConfig.d.ts +0 -43
  706. package/build/types-ts3.8/withSentry.d.ts +0 -16
  707. package/build/types-ts3.8/workflows.d.ts +0 -25
  708. package/build/types-ts3.8/wrapMethodWithSentry.d.ts +0 -43
  709. /package/build/cjs/{client.js → dev/client.js} +0 -0
  710. /package/build/cjs/{debug-build.js → dev/debug-build.js} +0 -0
  711. /package/build/cjs/{defineCloudflareOptions.js → dev/defineCloudflareOptions.js} +0 -0
  712. /package/build/cjs/{flush.js → dev/flush.js} +0 -0
  713. /package/build/cjs/{instrument.js → dev/instrument.js} +0 -0
  714. /package/build/cjs/{instrumentations → dev/instrumentations}/instrumentDurableObjectNamespace.js +0 -0
  715. /package/build/cjs/{instrumentations → dev/instrumentations}/instrumentDurableObjectStorage.js +0 -0
  716. /package/build/cjs/{instrumentations → dev/instrumentations}/instrumentDurableObjectSyncKvStorage.js +0 -0
  717. /package/build/cjs/{instrumentations → dev/instrumentations}/instrumentSqlStorage.js +0 -0
  718. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentFetcher.js +0 -0
  719. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentQueueProducer.js +0 -0
  720. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentR2.js +0 -0
  721. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentRateLimit.js +0 -0
  722. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentTail.js +0 -0
  723. /package/build/cjs/{integrations → dev/integrations}/spotlight.js +0 -0
  724. /package/build/cjs/{opentelemetry → dev/opentelemetry}/tracer.js +0 -0
  725. /package/build/cjs/{scope-utils.js → dev/scope-utils.js} +0 -0
  726. /package/build/cjs/{transport.js → dev/transport.js} +0 -0
  727. /package/build/cjs/{utils → dev/utils}/internalSqlQuery.js +0 -0
  728. /package/build/cjs/{utils → dev/utils}/internalStorageKey.js +0 -0
  729. /package/build/cjs/{utils → dev/utils}/isBinding.js +0 -0
  730. /package/build/cjs/{utils → dev/utils}/isCloudflareClass.js +0 -0
  731. /package/build/cjs/{utils → dev/utils}/streaming.js +0 -0
  732. /package/build/cjs/{utils → dev/utils}/traceLinks.js +0 -0
  733. /package/build/cjs/{vendor → dev/vendor}/stacktrace.js +0 -0
  734. /package/build/cjs/{vite → dev/vite}/agentClass.js +0 -0
  735. /package/build/cjs/{vite → dev/vite}/autoInstrument.js +0 -0
  736. /package/build/cjs/{vite → dev/vite}/instrumentFile.js +0 -0
  737. /package/build/cjs/{vite → dev/vite}/moduleShape.js +0 -0
  738. /package/build/cjs/{vite → dev/vite}/transform.js +0 -0
  739. /package/build/cjs/{vite → dev/vite}/workerEntrypoint.js +0 -0
  740. /package/build/cjs/{vite → dev/vite}/wranglerConfig.js +0 -0
  741. /package/build/esm/{client.js → dev/client.js} +0 -0
  742. /package/build/esm/{debug-build.js → dev/debug-build.js} +0 -0
  743. /package/build/esm/{defineCloudflareOptions.js → dev/defineCloudflareOptions.js} +0 -0
  744. /package/build/esm/{flush.js → dev/flush.js} +0 -0
  745. /package/build/esm/{instrument.js → dev/instrument.js} +0 -0
  746. /package/build/esm/{instrumentations → dev/instrumentations}/instrumentDurableObjectNamespace.js +0 -0
  747. /package/build/esm/{instrumentations → dev/instrumentations}/instrumentDurableObjectStorage.js +0 -0
  748. /package/build/esm/{instrumentations → dev/instrumentations}/instrumentDurableObjectSyncKvStorage.js +0 -0
  749. /package/build/esm/{instrumentations → dev/instrumentations}/instrumentSqlStorage.js +0 -0
  750. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentFetcher.js +0 -0
  751. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentQueueProducer.js +0 -0
  752. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentR2.js +0 -0
  753. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentRateLimit.js +0 -0
  754. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentTail.js +0 -0
  755. /package/build/esm/{integrations → dev/integrations}/spotlight.js +0 -0
  756. /package/build/esm/{opentelemetry → dev/opentelemetry}/tracer.js +0 -0
  757. /package/build/esm/{scope-utils.js → dev/scope-utils.js} +0 -0
  758. /package/build/esm/{transport.js → dev/transport.js} +0 -0
  759. /package/build/esm/{utils → dev/utils}/internalSqlQuery.js +0 -0
  760. /package/build/esm/{utils → dev/utils}/internalStorageKey.js +0 -0
  761. /package/build/esm/{utils → dev/utils}/isBinding.js +0 -0
  762. /package/build/esm/{utils → dev/utils}/isCloudflareClass.js +0 -0
  763. /package/build/esm/{utils → dev/utils}/streaming.js +0 -0
  764. /package/build/esm/{vendor → dev/vendor}/stacktrace.js +0 -0
  765. /package/build/esm/{vite → dev/vite}/agentClass.js +0 -0
  766. /package/build/esm/{vite → dev/vite}/autoInstrument.js +0 -0
  767. /package/build/esm/{vite → dev/vite}/instrumentFile.js +0 -0
  768. /package/build/esm/{vite → dev/vite}/moduleShape.js +0 -0
  769. /package/build/esm/{vite → dev/vite}/transform.js +0 -0
  770. /package/build/esm/{vite → dev/vite}/workerEntrypoint.js +0 -0
  771. /package/build/esm/{vite → dev/vite}/wranglerConfig.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentTail.js","sources":["../../../../../src/instrumentations/worker/instrumentTail.ts"],"sourcesContent":["import type { TraceItem } from '@cloudflare/workers-types';\nimport type { AnyExportedHandler } from '../../types';\nimport type { env as cloudflareEnv, WorkerEntrypoint } from 'cloudflare:workers';\nimport { captureException, withIsolationScope } from '@sentry/core';\nimport type { CloudflareOptions } from '../../client';\nimport { flushAndDispose } from '../../flush';\nimport { ensureInstrumented } from '../../instrument';\nimport { getFinalOptions } from '../../options';\nimport { addCloudResourceContext } from '../../scope-utils';\nimport { init } from '../../sdk';\nimport { instrumentContext } from '../../utils/instrumentContext';\nimport { instrumentEnv } from './instrumentEnv';\n\n/**\n * Core tail handler logic - wraps execution with Sentry instrumentation.\n * Note: tail handlers don't create spans, just error capture.\n */\nfunction wrapTailHandler(options: CloudflareOptions, context: ExecutionContext, fn: () => unknown): unknown {\n return withIsolationScope(async isolationScope => {\n const waitUntil = context.waitUntil.bind(context);\n\n const client = init({ ...options, ctx: context });\n isolationScope.setClient(client);\n\n addCloudResourceContext(isolationScope);\n\n try {\n return await fn();\n } catch (e) {\n captureException(e, { mechanism: { handled: false, type: 'auto.faas.cloudflare.tail' } });\n throw e;\n } finally {\n waitUntil(flushAndDispose(client));\n }\n });\n}\n\n/**\n * Instruments a tail handler for ExportedHandler (env/ctx come from args).\n */\nexport function instrumentExportedHandlerTail<T extends AnyExportedHandler>(\n handler: T,\n optionsCallback: (env: typeof cloudflareEnv) => CloudflareOptions | undefined,\n): void {\n if (!('tail' in handler) || typeof handler.tail !== 'function') {\n return;\n }\n\n handler.tail = ensureInstrumented(\n handler.tail,\n original =>\n new Proxy(original, {\n apply(target, thisArg, args: Parameters<NonNullable<T['tail']>>) {\n const [, env, ctx] = args;\n const context = instrumentContext(ctx);\n const options = getFinalOptions(optionsCallback(env), env);\n args[1] = instrumentEnv(env, options);\n args[2] = context;\n\n return wrapTailHandler(options, context, () => target.apply(thisArg, args));\n },\n }),\n );\n}\n\n/**\n * Instruments a tail method for WorkerEntrypoint (options/context already available).\n */\nexport function instrumentWorkerEntrypointTail<T extends WorkerEntrypoint>(\n instance: T,\n options: CloudflareOptions,\n context: ExecutionContext,\n): void {\n if (!instance.tail) {\n return;\n }\n\n const original = instance.tail.bind(instance);\n instance.tail = new Proxy(original, {\n apply(target, thisArg, args: [TraceItem[]]) {\n return wrapTailHandler(options, context, () => Reflect.apply(target, thisArg, args));\n },\n });\n}\n"],"names":["withIsolationScope","init","addCloudResourceContext","captureException","flushAndDispose","ensureInstrumented","instrumentContext","options","getFinalOptions","instrumentEnv"],"mappings":";;;;;;;;;;;AAiBA,SAAS,eAAA,CAAgB,OAAA,EAA4B,OAAA,EAA2B,EAAA,EAA4B;AAC1G,EAAA,OAAOA,uBAAA,CAAmB,OAAM,cAAA,KAAkB;AAChD,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA;AAEhD,IAAA,MAAM,SAASC,QAAA,CAAK,EAAE,GAAG,OAAA,EAAS,GAAA,EAAK,SAAS,CAAA;AAChD,IAAA,cAAA,CAAe,UAAU,MAAM,CAAA;AAE/B,IAAAC,kCAAA,CAAwB,cAAc,CAAA;AAEtC,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,EAAA,EAAG;AAAA,IAClB,SAAS,CAAA,EAAG;AACV,MAAAC,qBAAA,CAAiB,CAAA,EAAG,EAAE,SAAA,EAAW,EAAE,SAAS,KAAA,EAAO,IAAA,EAAM,2BAAA,EAA4B,EAAG,CAAA;AACxF,MAAA,MAAM,CAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,SAAA,CAAUC,qBAAA,CAAgB,MAAM,CAAC,CAAA;AAAA,IACnC;AAAA,EACF,CAAC,CAAA;AACH;AAKO,SAAS,6BAAA,CACd,SACA,eAAA,EACM;AACN,EAAA,IAAI,EAAE,MAAA,IAAU,OAAA,CAAA,IAAY,OAAO,OAAA,CAAQ,SAAS,UAAA,EAAY;AAC9D,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,IAAA,GAAOC,6BAAA;AAAA,IACb,OAAA,CAAQ,IAAA;AAAA,IACR,CAAA,QAAA,KACE,IAAI,KAAA,CAAM,QAAA,EAAU;AAAA,MAClB,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAA0C;AAC/D,QAAA,MAAM,GAAG,GAAA,EAAK,GAAG,CAAA,GAAI,IAAA;AACrB,QAAA,MAAM,OAAA,GAAUC,oCAAkB,GAAG,CAAA;AACrC,QAAA,MAAMC,SAAA,GAAUC,uBAAA,CAAgB,eAAA,CAAgB,GAAG,GAAG,GAAG,CAAA;AACzD,QAAA,IAAA,CAAK,CAAC,CAAA,GAAIC,2BAAA,CAAc,GAAA,EAAKF,SAAO,CAAA;AACpC,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,OAAA;AAEV,QAAA,OAAO,eAAA,CAAgBA,WAAS,OAAA,EAAS,MAAM,OAAO,KAAA,CAAM,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,MAC5E;AAAA,KACD;AAAA,GACL;AACF;AAKO,SAAS,8BAAA,CACd,QAAA,EACA,OAAA,EACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,SAAS,IAAA,EAAM;AAClB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AAC5C,EAAA,QAAA,CAAS,IAAA,GAAO,IAAI,KAAA,CAAM,QAAA,EAAU;AAAA,IAClC,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAqB;AAC1C,MAAA,OAAO,eAAA,CAAgB,SAAS,OAAA,EAAS,MAAM,QAAQ,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,IACrF;AAAA,GACD,CAAA;AACH;;;;;"}
@@ -0,0 +1,119 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+
5
+ const INTEGRATION_NAME = "Fetch";
6
+ const HAS_CLIENT_MAP = /* @__PURE__ */ new WeakMap();
7
+ const _fetchIntegration = ((options = {}) => {
8
+ const breadcrumbs = options.breadcrumbs === void 0 ? true : options.breadcrumbs;
9
+ const shouldCreateSpanForRequest = options.shouldCreateSpanForRequest;
10
+ const _createSpanUrlMap = new core.LRUMap(100);
11
+ const _headersUrlMap = new core.LRUMap(100);
12
+ const spans = {};
13
+ function _shouldAttachTraceData(url) {
14
+ const client = core.getClient();
15
+ if (!client) {
16
+ return false;
17
+ }
18
+ const clientOptions = client.getOptions();
19
+ if (clientOptions.tracePropagationTargets === void 0) {
20
+ return true;
21
+ }
22
+ const cachedDecision = _headersUrlMap.get(url);
23
+ if (cachedDecision !== void 0) {
24
+ return cachedDecision;
25
+ }
26
+ const decision = core.stringMatchesSomePattern(url, clientOptions.tracePropagationTargets);
27
+ _headersUrlMap.set(url, decision);
28
+ return decision;
29
+ }
30
+ function _shouldCreateSpan(url) {
31
+ if (shouldCreateSpanForRequest === void 0) {
32
+ return true;
33
+ }
34
+ const cachedDecision = _createSpanUrlMap.get(url);
35
+ if (cachedDecision !== void 0) {
36
+ return cachedDecision;
37
+ }
38
+ const decision = shouldCreateSpanForRequest(url);
39
+ _createSpanUrlMap.set(url, decision);
40
+ return decision;
41
+ }
42
+ return {
43
+ name: INTEGRATION_NAME,
44
+ setupOnce() {
45
+ core.addFetchInstrumentationHandler((handlerData) => {
46
+ const client = core.getClient();
47
+ const { propagateTraceparent } = client?.getOptions() || {};
48
+ if (!client || !HAS_CLIENT_MAP.get(client)) {
49
+ return;
50
+ }
51
+ if (core.isSentryRequestUrl(handlerData.fetchData.url, client)) {
52
+ return;
53
+ }
54
+ core.instrumentFetchRequest(handlerData, _shouldCreateSpan, _shouldAttachTraceData, spans, {
55
+ spanOrigin: "auto.http.fetch",
56
+ propagateTraceparent
57
+ });
58
+ if (breadcrumbs) {
59
+ createBreadcrumb(handlerData);
60
+ }
61
+ });
62
+ },
63
+ setup(client) {
64
+ HAS_CLIENT_MAP.set(client, true);
65
+ }
66
+ };
67
+ });
68
+ const fetchIntegration = core.defineIntegration(_fetchIntegration);
69
+ function createBreadcrumb(handlerData) {
70
+ const { startTimestamp, endTimestamp } = handlerData;
71
+ if (!endTimestamp) {
72
+ return;
73
+ }
74
+ const breadcrumbData = {
75
+ method: handlerData.fetchData.method,
76
+ url: handlerData.fetchData.url
77
+ };
78
+ if (handlerData.error) {
79
+ const hint = {
80
+ data: handlerData.error,
81
+ input: handlerData.args,
82
+ startTimestamp,
83
+ endTimestamp
84
+ };
85
+ core.addBreadcrumb(
86
+ {
87
+ category: "fetch",
88
+ data: breadcrumbData,
89
+ level: "error",
90
+ type: "http"
91
+ },
92
+ hint
93
+ );
94
+ } else {
95
+ const response = handlerData.response;
96
+ breadcrumbData.request_body_size = handlerData.fetchData.request_body_size;
97
+ breadcrumbData.response_body_size = handlerData.fetchData.response_body_size;
98
+ breadcrumbData.status_code = response?.status;
99
+ const hint = {
100
+ input: handlerData.args,
101
+ response,
102
+ startTimestamp,
103
+ endTimestamp
104
+ };
105
+ const level = core.getBreadcrumbLogLevelFromHttpStatusCode(breadcrumbData.status_code);
106
+ core.addBreadcrumb(
107
+ {
108
+ category: "fetch",
109
+ data: breadcrumbData,
110
+ type: "http",
111
+ level
112
+ },
113
+ hint
114
+ );
115
+ }
116
+ }
117
+
118
+ exports.fetchIntegration = fetchIntegration;
119
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sources":["../../../../src/integrations/fetch.ts"],"sourcesContent":["import type {\n Client,\n FetchBreadcrumbData,\n FetchBreadcrumbHint,\n HandlerDataFetch,\n IntegrationFn,\n Span,\n} from '@sentry/core';\nimport {\n addBreadcrumb,\n addFetchInstrumentationHandler,\n defineIntegration,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n instrumentFetchRequest,\n isSentryRequestUrl,\n LRUMap,\n stringMatchesSomePattern,\n} from '@sentry/core';\n\nconst INTEGRATION_NAME = 'Fetch' as const;\n\nconst HAS_CLIENT_MAP = new WeakMap<Client, boolean>();\n\nexport interface Options {\n /**\n * Whether breadcrumbs should be recorded for requests\n * Defaults to true\n */\n breadcrumbs: boolean;\n\n /**\n * Function determining whether or not to create spans to track outgoing requests to the given URL.\n * By default, spans will be created for all outgoing requests.\n */\n shouldCreateSpanForRequest?: (url: string) => boolean;\n}\n\nconst _fetchIntegration = ((options: Partial<Options> = {}) => {\n const breadcrumbs = options.breadcrumbs === undefined ? true : options.breadcrumbs;\n const shouldCreateSpanForRequest = options.shouldCreateSpanForRequest;\n\n const _createSpanUrlMap = new LRUMap<string, boolean>(100);\n const _headersUrlMap = new LRUMap<string, boolean>(100);\n\n const spans: Record<string, Span> = {};\n\n /** Decides whether to attach trace data to the outgoing fetch request */\n function _shouldAttachTraceData(url: string): boolean {\n const client = getClient();\n\n if (!client) {\n return false;\n }\n\n const clientOptions = client.getOptions();\n\n if (clientOptions.tracePropagationTargets === undefined) {\n return true;\n }\n\n const cachedDecision = _headersUrlMap.get(url);\n if (cachedDecision !== undefined) {\n return cachedDecision;\n }\n\n const decision = stringMatchesSomePattern(url, clientOptions.tracePropagationTargets);\n _headersUrlMap.set(url, decision);\n return decision;\n }\n\n /** Helper that wraps shouldCreateSpanForRequest option */\n function _shouldCreateSpan(url: string): boolean {\n if (shouldCreateSpanForRequest === undefined) {\n return true;\n }\n\n const cachedDecision = _createSpanUrlMap.get(url);\n if (cachedDecision !== undefined) {\n return cachedDecision;\n }\n\n const decision = shouldCreateSpanForRequest(url);\n _createSpanUrlMap.set(url, decision);\n return decision;\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n addFetchInstrumentationHandler(handlerData => {\n const client = getClient();\n const { propagateTraceparent } = client?.getOptions() || {};\n if (!client || !HAS_CLIENT_MAP.get(client)) {\n return;\n }\n\n if (isSentryRequestUrl(handlerData.fetchData.url, client)) {\n return;\n }\n\n instrumentFetchRequest(handlerData, _shouldCreateSpan, _shouldAttachTraceData, spans, {\n spanOrigin: 'auto.http.fetch',\n propagateTraceparent,\n });\n\n if (breadcrumbs) {\n createBreadcrumb(handlerData);\n }\n });\n },\n setup(client) {\n HAS_CLIENT_MAP.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Creates spans and attaches tracing headers to fetch requests.\n */\nexport const fetchIntegration = defineIntegration(_fetchIntegration);\n\nfunction createBreadcrumb(handlerData: HandlerDataFetch): void {\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n const breadcrumbData: FetchBreadcrumbData = {\n method: handlerData.fetchData.method,\n url: handlerData.fetchData.url,\n };\n\n if (handlerData.error) {\n const hint: FetchBreadcrumbHint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'fetch',\n data: breadcrumbData,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const response = handlerData.response as Response | undefined;\n\n breadcrumbData.request_body_size = handlerData.fetchData.request_body_size;\n breadcrumbData.response_body_size = handlerData.fetchData.response_body_size;\n breadcrumbData.status_code = response?.status;\n\n const hint: FetchBreadcrumbHint = {\n input: handlerData.args,\n response,\n startTimestamp,\n endTimestamp,\n };\n const level = getBreadcrumbLogLevelFromHttpStatusCode(breadcrumbData.status_code);\n\n addBreadcrumb(\n {\n category: 'fetch',\n data: breadcrumbData,\n type: 'http',\n level,\n },\n hint,\n );\n }\n}\n"],"names":["LRUMap","getClient","stringMatchesSomePattern","addFetchInstrumentationHandler","isSentryRequestUrl","instrumentFetchRequest","defineIntegration","addBreadcrumb","getBreadcrumbLogLevelFromHttpStatusCode"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+
5
+ const INTEGRATION_NAME = "HttpServer";
6
+ const _httpServerIntegration = ((options = {}) => {
7
+ return {
8
+ name: INTEGRATION_NAME,
9
+ maxRequestBodySize: options.maxRequestBodySize,
10
+ ignoreRequestBody: options.ignoreRequestBody
11
+ };
12
+ });
13
+ const httpServerIntegration = core.defineIntegration(_httpServerIntegration);
14
+ async function captureIncomingRequestBody(client, request) {
15
+ const integration = client.getIntegrationByName(INTEGRATION_NAME);
16
+ if (!integration) {
17
+ return;
18
+ }
19
+ const configuredBodySize = integration.maxRequestBodySize;
20
+ const effectiveBodySize = configuredBodySize ?? (client.getDataCollectionOptions().httpBodies.includes("incomingRequest") ? "medium" : "none");
21
+ if (effectiveBodySize === "none") {
22
+ return;
23
+ }
24
+ if (request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") {
25
+ return;
26
+ }
27
+ if (integration.ignoreRequestBody?.(request.url, request)) {
28
+ return;
29
+ }
30
+ const isolationScope = core.getIsolationScope();
31
+ await core.captureBodyFromWinterCGRequest(request, isolationScope, effectiveBodySize);
32
+ }
33
+
34
+ exports.captureIncomingRequestBody = captureIncomingRequestBody;
35
+ exports.httpServerIntegration = httpServerIntegration;
36
+ //# sourceMappingURL=httpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpServer.js","sources":["../../../../src/integrations/httpServer.ts"],"sourcesContent":["import type { Client, IntegrationFn, MaxRequestBodySize } from '@sentry/core';\nimport { captureBodyFromWinterCGRequest, defineIntegration, getIsolationScope } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'HttpServer' as const;\n\nexport interface HttpServerIntegrationOptions {\n /**\n * Controls the maximum size of incoming request bodies attached to events.\n *\n * Only applies to requests with textual content types (text/*, application/json,\n * application/x-www-form-urlencoded, application/xml, application/graphql).\n * Binary data is not captured.\n *\n * Available options:\n * - `'none'`: No request bodies will be attached\n * - `'small'`: Request bodies up to 1,000 bytes will be attached\n * - `'medium'`: Request bodies up to 10,000 bytes will be attached (default)\n * - `'always'`: Request bodies will always be attached (up to 1MB limit)\n *\n * @default 'medium'\n */\n maxRequestBodySize?: MaxRequestBodySize;\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed, health check endpoints,\n * or requests containing sensitive data that should not be captured.\n *\n * @param url The full URL of the incoming request, including query string, protocol, host, etc.\n * @param request The incoming Request object.\n * @returns `true` to skip body capture for this request, `false` to capture normally.\n *\n * @example\n * ```ts\n * Sentry.httpServerIntegration({\n * ignoreRequestBody: (url) => url.includes('/health') || url.includes('/upload'),\n * })\n * ```\n */\n ignoreRequestBody?: (url: string, request: Request) => boolean;\n}\n\ninterface HttpServerIntegrationInstance {\n name: string;\n maxRequestBodySize: MaxRequestBodySize | undefined;\n ignoreRequestBody?: (url: string, request: Request) => boolean;\n}\n\nconst _httpServerIntegration = ((options: HttpServerIntegrationOptions = {}): HttpServerIntegrationInstance => {\n return {\n name: INTEGRATION_NAME,\n maxRequestBodySize: options.maxRequestBodySize,\n ignoreRequestBody: options.ignoreRequestBody,\n };\n}) satisfies IntegrationFn;\n\n/**\n * Configures incoming HTTP request handling for Cloudflare Workers.\n *\n * This integration controls how incoming HTTP request data is captured,\n * matching the API of `httpServerIntegration` in Node.js.\n *\n * @example\n * ```ts\n * Sentry.init({\n * integrations: [\n * Sentry.httpServerIntegration({\n * maxRequestBodySize: 'medium',\n * ignoreRequestBody: (url) => url.includes('/health'),\n * }),\n * ],\n * });\n * ```\n */\nexport const httpServerIntegration = defineIntegration(_httpServerIntegration);\n\n/**\n * Capture the request body based on the HttpServer integration config.\n * Called internally by `wrapRequestHandler`.\n */\nexport async function captureIncomingRequestBody(client: Client, request: Request): Promise<void> {\n const integration = client.getIntegrationByName<HttpServerIntegrationInstance>(INTEGRATION_NAME);\n\n if (!integration) {\n return;\n }\n\n const configuredBodySize = integration.maxRequestBodySize;\n const effectiveBodySize: MaxRequestBodySize =\n configuredBodySize ??\n (client.getDataCollectionOptions().httpBodies.includes('incomingRequest') ? 'medium' : 'none');\n\n if (effectiveBodySize === 'none') {\n return;\n }\n\n // Skip GET and HEAD requests - they don't have bodies\n // Also skip OPTIONS, even if they may have a body, they might not give a lot of extra value\n if (request.method === 'GET' || request.method === 'HEAD' || request.method === 'OPTIONS') {\n return;\n }\n\n if (integration.ignoreRequestBody?.(request.url, request)) {\n return;\n }\n\n const isolationScope = getIsolationScope();\n await captureBodyFromWinterCGRequest(request, isolationScope, effectiveBodySize);\n}\n"],"names":["defineIntegration","getIsolationScope","captureBodyFromWinterCGRequest"],"mappings":";;;;AAGA,MAAM,gBAAA,GAAmB,YAAA;AA6CzB,MAAM,sBAAA,IAA0B,CAAC,OAAA,GAAwC,EAAC,KAAqC;AAC7G,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,oBAAoB,OAAA,CAAQ,kBAAA;AAAA,IAC5B,mBAAmB,OAAA,CAAQ;AAAA,GAC7B;AACF,CAAA,CAAA;AAoBO,MAAM,qBAAA,GAAwBA,uBAAkB,sBAAsB;AAM7E,eAAsB,0BAAA,CAA2B,QAAgB,OAAA,EAAiC;AAChG,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,oBAAA,CAAoD,gBAAgB,CAAA;AAE/F,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,qBAAqB,WAAA,CAAY,kBAAA;AACvC,EAAA,MAAM,iBAAA,GACJ,uBACC,MAAA,CAAO,wBAAA,GAA2B,UAAA,CAAW,QAAA,CAAS,iBAAiB,CAAA,GAAI,QAAA,GAAW,MAAA,CAAA;AAEzF,EAAA,IAAI,sBAAsB,MAAA,EAAQ;AAChC,IAAA;AAAA,EACF;AAIA,EAAA,IAAI,OAAA,CAAQ,WAAW,KAAA,IAAS,OAAA,CAAQ,WAAW,MAAA,IAAU,OAAA,CAAQ,WAAW,SAAA,EAAW;AACzF,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,WAAA,CAAY,iBAAA,GAAoB,OAAA,CAAQ,GAAA,EAAK,OAAO,CAAA,EAAG;AACzD,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,iBAAiBC,sBAAA,EAAkB;AACzC,EAAA,MAAMC,mCAAA,CAA+B,OAAA,EAAS,cAAA,EAAgB,iBAAiB,CAAA;AACjF;;;;;"}
@@ -0,0 +1,64 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+ const debugBuild = require('../debug-build.js');
5
+
6
+ const INTEGRATION_NAME = "Spotlight";
7
+ const _spotlightIntegration = ((options = {}) => {
8
+ const sidecarUrl = options.sidecarUrl || "http://localhost:8969/stream";
9
+ return {
10
+ name: INTEGRATION_NAME,
11
+ setup(client) {
12
+ debugBuild.DEBUG_BUILD && core.debug.log("[Spotlight] Using Sidecar URL", sidecarUrl);
13
+ setupSidecarForwarding(client, sidecarUrl);
14
+ }
15
+ };
16
+ });
17
+ const spotlightIntegration = core.defineIntegration(_spotlightIntegration);
18
+ function setupSidecarForwarding(client, sidecarUrl) {
19
+ const parsedUrl = parseSidecarUrl(sidecarUrl);
20
+ if (!parsedUrl) {
21
+ return;
22
+ }
23
+ let failCount = 0;
24
+ client.on("beforeEnvelope", (envelope) => {
25
+ if (failCount > 3) {
26
+ debugBuild.DEBUG_BUILD && core.debug.warn("[Spotlight] Disabled Sentry -> Spotlight forwarding due to too many failed requests");
27
+ return;
28
+ }
29
+ const body = core.serializeEnvelope(envelope);
30
+ core.suppressTracing(() => {
31
+ fetch(parsedUrl.href, {
32
+ method: "POST",
33
+ body,
34
+ headers: {
35
+ "Content-Type": "application/x-sentry-envelope"
36
+ }
37
+ }).then(
38
+ (res) => {
39
+ res.text().catch(() => {
40
+ });
41
+ if (res.status >= 200 && res.status < 400) {
42
+ failCount = 0;
43
+ }
44
+ },
45
+ () => {
46
+ failCount++;
47
+ debugBuild.DEBUG_BUILD && core.debug.warn("[Spotlight] Failed to send envelope to Spotlight Sidecar");
48
+ }
49
+ );
50
+ });
51
+ });
52
+ }
53
+ function parseSidecarUrl(url) {
54
+ try {
55
+ return new URL(url);
56
+ } catch {
57
+ debugBuild.DEBUG_BUILD && core.debug.warn(`[Spotlight] Invalid sidecar URL: ${url}`);
58
+ return void 0;
59
+ }
60
+ }
61
+
62
+ exports.INTEGRATION_NAME = INTEGRATION_NAME;
63
+ exports.spotlightIntegration = spotlightIntegration;
64
+ //# sourceMappingURL=spotlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spotlight.js","sources":["../../../../src/integrations/spotlight.ts"],"sourcesContent":["import type { Client, Envelope, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, serializeEnvelope, suppressTracing } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\n\ntype SpotlightConnectionOptions = {\n /**\n * Set this if the Spotlight Sidecar is not running on localhost:8969.\n * By default, the URL is set to http://localhost:8969/stream\n */\n sidecarUrl?: string;\n};\n\nexport const INTEGRATION_NAME = 'Spotlight' as const;\n\nconst _spotlightIntegration = ((options: Partial<SpotlightConnectionOptions> = {}) => {\n const sidecarUrl = options.sidecarUrl || 'http://localhost:8969/stream';\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n DEBUG_BUILD && debug.log('[Spotlight] Using Sidecar URL', sidecarUrl);\n setupSidecarForwarding(client, sidecarUrl);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Use this integration to send errors and transactions to Spotlight.\n *\n * Learn more about spotlight at https://spotlightjs.com\n *\n * Important: This integration is intended for local development only.\n * Each forwarded envelope counts as a Worker subrequest (50 free / 1000 paid\n * per invocation), so it should not be enabled in production.\n */\nexport const spotlightIntegration = defineIntegration(_spotlightIntegration);\n\nfunction setupSidecarForwarding(client: Client, sidecarUrl: string): void {\n const parsedUrl = parseSidecarUrl(sidecarUrl);\n if (!parsedUrl) {\n return;\n }\n\n let failCount = 0;\n\n client.on('beforeEnvelope', (envelope: Envelope) => {\n if (failCount > 3) {\n DEBUG_BUILD && debug.warn('[Spotlight] Disabled Sentry -> Spotlight forwarding due to too many failed requests');\n return;\n }\n\n const body = serializeEnvelope(envelope);\n\n suppressTracing(() => {\n fetch(parsedUrl.href, {\n method: 'POST',\n body,\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n }).then(\n res => {\n // Consume the response body to satisfy Cloudflare Workers' requirement\n // that all fetch response bodies are read or cancelled.\n res.text().catch(() => {\n // no-op\n });\n\n if (res.status >= 200 && res.status < 400) {\n failCount = 0;\n }\n },\n () => {\n failCount++;\n DEBUG_BUILD && debug.warn('[Spotlight] Failed to send envelope to Spotlight Sidecar');\n },\n );\n });\n });\n}\n\nfunction parseSidecarUrl(url: string): URL | undefined {\n try {\n return new URL(url);\n } catch {\n DEBUG_BUILD && debug.warn(`[Spotlight] Invalid sidecar URL: ${url}`);\n return undefined;\n }\n}\n"],"names":["DEBUG_BUILD","debug","defineIntegration","serializeEnvelope","suppressTracing"],"mappings":";;;;;AAYO,MAAM,gBAAA,GAAmB;AAEhC,MAAM,qBAAA,IAAyB,CAAC,OAAA,GAA+C,EAAC,KAAM;AACpF,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,8BAAA;AAEzC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,MAAM,MAAA,EAAQ;AACZ,MAAAA,sBAAA,IAAeC,UAAA,CAAM,GAAA,CAAI,+BAAA,EAAiC,UAAU,CAAA;AACpE,MAAA,sBAAA,CAAuB,QAAQ,UAAU,CAAA;AAAA,IAC3C;AAAA,GACF;AACF,CAAA,CAAA;AAWO,MAAM,oBAAA,GAAuBC,uBAAkB,qBAAqB;AAE3E,SAAS,sBAAA,CAAuB,QAAgB,UAAA,EAA0B;AACxE,EAAA,MAAM,SAAA,GAAY,gBAAgB,UAAU,CAAA;AAC5C,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,MAAA,CAAO,EAAA,CAAG,gBAAA,EAAkB,CAAC,QAAA,KAAuB;AAClD,IAAA,IAAI,YAAY,CAAA,EAAG;AACjB,MAAAF,sBAAA,IAAeC,UAAA,CAAM,KAAK,qFAAqF,CAAA;AAC/G,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAOE,uBAAkB,QAAQ,CAAA;AAEvC,IAAAC,oBAAA,CAAgB,MAAM;AACpB,MAAA,KAAA,CAAM,UAAU,IAAA,EAAM;AAAA,QACpB,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA;AAAA,QACA,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA,CAAE,IAAA;AAAA,QACD,CAAA,GAAA,KAAO;AAGL,UAAA,GAAA,CAAI,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM;AAAA,UAEvB,CAAC,CAAA;AAED,UAAA,IAAI,GAAA,CAAI,MAAA,IAAU,GAAA,IAAO,GAAA,CAAI,SAAS,GAAA,EAAK;AACzC,YAAA,SAAA,GAAY,CAAA;AAAA,UACd;AAAA,QACF,CAAA;AAAA,QACA,MAAM;AACJ,UAAA,SAAA,EAAA;AACA,UAAAJ,sBAAA,IAAeC,UAAA,CAAM,KAAK,0DAA0D,CAAA;AAAA,QACtF;AAAA,OACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACH;AAEA,SAAS,gBAAgB,GAAA,EAA8B;AACrD,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,IAAI,GAAG,CAAA;AAAA,EACpB,CAAA,CAAA,MAAQ;AACN,IAAAD,sBAAA,IAAeC,UAAA,CAAM,IAAA,CAAK,CAAA,iCAAA,EAAoC,GAAG,CAAA,CAAE,CAAA;AACnE,IAAA,OAAO,MAAA;AAAA,EACT;AACF;;;;;"}
@@ -1,16 +1,16 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const core = require('@sentry/core');
4
+ const serverUtils = require('@sentry/server-utils');
4
5
 
5
- const INTEGRATION_NAME = "VercelAI";
6
6
  const _vercelAIIntegration = ((options = {}) => {
7
- return {
8
- name: INTEGRATION_NAME,
7
+ const inner = serverUtils.vercelAiIntegration(options);
8
+ return core.extendIntegration(inner, {
9
9
  options,
10
10
  setup(client) {
11
- core.addVercelAiProcessors(client);
11
+ serverUtils.addVercelAiProcessors(client);
12
12
  }
13
- };
13
+ });
14
14
  });
15
15
  const vercelAIIntegration = core.defineIntegration(_vercelAIIntegration);
16
16
 
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercelai.js","sources":["../../../../../src/integrations/tracing/vercelai.ts"],"sourcesContent":["/**\n * This is a copy of the Vercel AI integration from the node SDK.\n *\n * The only difference is that it does not use `@opentelemetry/instrumentation`\n * because Cloudflare Workers do not support it.\n *\n * Therefore, we cannot automatically patch setting `experimental_telemetry: { isEnabled: true }`\n * and users have to manually set this to get spans.\n */\n\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, extendIntegration } from '@sentry/core';\nimport { addVercelAiProcessors, vercelAiIntegration, type VercelAiOptions } from '@sentry/server-utils';\n\nconst _vercelAIIntegration = ((options: VercelAiOptions = {}) => {\n const inner = vercelAiIntegration(options);\n\n return extendIntegration(inner, {\n options,\n setup(client) {\n addVercelAiProcessors(client);\n },\n });\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [ai](https://www.npmjs.com/package/ai) library.\n * This integration is not enabled by default, you need to manually add it.\n *\n * For more information, see the [`ai` documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry).\n *\n * You need to enable collecting spans for a specific call by setting\n * `experimental_telemetry.isEnabled` to `true` in the first argument of the function call.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true },\n * });\n * ```\n *\n * If you want to collect inputs and outputs for a specific call, you must specifically opt-in to each\n * function call by setting `experimental_telemetry.recordInputs` and `experimental_telemetry.recordOutputs`\n * to `true`.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true, recordInputs: true, recordOutputs: true },\n * });\n */\nexport const vercelAIIntegration = defineIntegration(_vercelAIIntegration);\n"],"names":["vercelAiIntegration","extendIntegration","addVercelAiProcessors","defineIntegration"],"mappings":";;;;;AAcA,MAAM,oBAAA,IAAwB,CAAC,OAAA,GAA2B,EAAC,KAAM;AAC/D,EAAA,MAAM,KAAA,GAAQA,gCAAoB,OAAO,CAAA;AAEzC,EAAA,OAAOC,uBAAkB,KAAA,EAAO;AAAA,IAC9B,OAAA;AAAA,IACA,MAAM,MAAA,EAAQ;AACZ,MAAAC,iCAAA,CAAsB,MAAM,CAAA;AAAA,IAC9B;AAAA,GACD,CAAA;AACH,CAAA,CAAA;AA4BO,MAAM,mBAAA,GAAsBC,uBAAkB,oBAAoB;;;;"}
@@ -0,0 +1,49 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const api = require('@opentelemetry/api');
4
+ const core = require('@sentry/core');
5
+
6
+ function setupOpenTelemetryTracer() {
7
+ api.trace.setGlobalTracerProvider(new SentryCloudflareTraceProvider());
8
+ }
9
+ class SentryCloudflareTraceProvider {
10
+ constructor() {
11
+ this._tracers = /* @__PURE__ */ new Map();
12
+ }
13
+ getTracer(name, version, options) {
14
+ const key = `${name}@${version || ""}:${options?.schemaUrl || ""}`;
15
+ if (!this._tracers.has(key)) {
16
+ this._tracers.set(key, new SentryCloudflareTracer());
17
+ }
18
+ return this._tracers.get(key);
19
+ }
20
+ }
21
+ class SentryCloudflareTracer {
22
+ startSpan(name, options) {
23
+ return core.startInactiveSpan({
24
+ ...options,
25
+ name,
26
+ attributes: {
27
+ ...options?.attributes,
28
+ "sentry.cloudflare_tracer": true
29
+ }
30
+ });
31
+ }
32
+ startActiveSpan(name, options, context, fn) {
33
+ const opts = typeof options === "object" && options !== null ? options : {};
34
+ const spanOpts = {
35
+ ...opts,
36
+ name,
37
+ attributes: {
38
+ ...opts.attributes,
39
+ "sentry.cloudflare_tracer": true
40
+ }
41
+ };
42
+ const callback = typeof options === "function" ? options : typeof context === "function" ? context : typeof fn === "function" ? fn : () => {
43
+ };
44
+ return core.startSpanManual(spanOpts, callback);
45
+ }
46
+ }
47
+
48
+ exports.setupOpenTelemetryTracer = setupOpenTelemetryTracer;
49
+ //# sourceMappingURL=tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.js","sources":["../../../../src/opentelemetry/tracer.ts"],"sourcesContent":["import type { Context, Span, SpanOptions, Tracer, TracerProvider } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\nimport { startInactiveSpan, startSpanManual } from '@sentry/core';\n\n/**\n * Set up a mock OTEL tracer to allow inter-op with OpenTelemetry emitted spans.\n * This is not perfect but handles easy/common use cases.\n */\nexport function setupOpenTelemetryTracer(): void {\n trace.setGlobalTracerProvider(new SentryCloudflareTraceProvider());\n}\n\nclass SentryCloudflareTraceProvider implements TracerProvider {\n private readonly _tracers: Map<string, Tracer> = new Map();\n\n public getTracer(name: string, version?: string, options?: { schemaUrl?: string }): Tracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(key, new SentryCloudflareTracer());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\n}\n\nclass SentryCloudflareTracer implements Tracer {\n public startSpan(name: string, options?: SpanOptions): Span {\n return startInactiveSpan({\n ...options,\n name,\n attributes: {\n ...options?.attributes,\n 'sentry.cloudflare_tracer': true,\n },\n });\n }\n\n /**\n * NOTE: This does not handle `context` being passed in. It will always put spans on the current scope.\n */\n public startActiveSpan<F extends (span: Span) => unknown>(name: string, fn: F): ReturnType<F>;\n public startActiveSpan<F extends (span: Span) => unknown>(name: string, options: SpanOptions, fn: F): ReturnType<F>;\n public startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n context: Context,\n fn: F,\n ): ReturnType<F>;\n public startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: unknown,\n context?: unknown,\n fn?: F,\n ): ReturnType<F> {\n const opts = (typeof options === 'object' && options !== null ? options : {}) as SpanOptions;\n\n const spanOpts = {\n ...opts,\n name,\n attributes: {\n ...opts.attributes,\n 'sentry.cloudflare_tracer': true,\n },\n };\n\n const callback = (\n typeof options === 'function'\n ? options\n : typeof context === 'function'\n ? context\n : typeof fn === 'function'\n ? fn\n : () => {}\n ) as F;\n\n // In OTEL the semantic matches `startSpanManual` because spans are not auto-ended\n return startSpanManual(spanOpts, callback) as ReturnType<F>;\n }\n}\n"],"names":["trace","startInactiveSpan","startSpanManual"],"mappings":";;;;;AAQO,SAAS,wBAAA,GAAiC;AAC/C,EAAAA,SAAA,CAAM,uBAAA,CAAwB,IAAI,6BAAA,EAA+B,CAAA;AACnE;AAEA,MAAM,6BAAA,CAAwD;AAAA,EAA9D,WAAA,GAAA;AACE,IAAA,IAAA,CAAiB,QAAA,uBAAoC,GAAA,EAAI;AAAA,EAAA;AAAA,EAElD,SAAA,CAAU,IAAA,EAAc,OAAA,EAAkB,OAAA,EAA0C;AACzF,IAAA,MAAM,GAAA,GAAM,GAAG,IAAI,CAAA,CAAA,EAAI,WAAW,EAAE,CAAA,CAAA,EAAI,OAAA,EAAS,SAAA,IAAa,EAAE,CAAA,CAAA;AAChE,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,EAAG;AAC3B,MAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAA,EAAK,IAAI,wBAAwB,CAAA;AAAA,IACrD;AAGA,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AAAA,EAC9B;AACF;AAEA,MAAM,sBAAA,CAAyC;AAAA,EACtC,SAAA,CAAU,MAAc,OAAA,EAA6B;AAC1D,IAAA,OAAOC,sBAAA,CAAkB;AAAA,MACvB,GAAG,OAAA;AAAA,MACH,IAAA;AAAA,MACA,UAAA,EAAY;AAAA,QACV,GAAG,OAAA,EAAS,UAAA;AAAA,QACZ,0BAAA,EAA4B;AAAA;AAC9B,KACD,CAAA;AAAA,EACH;AAAA,EAaO,eAAA,CACL,IAAA,EACA,OAAA,EACA,OAAA,EACA,EAAA,EACe;AACf,IAAA,MAAM,OAAQ,OAAO,OAAA,KAAY,YAAY,OAAA,KAAY,IAAA,GAAO,UAAU,EAAC;AAE3E,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,GAAG,IAAA;AAAA,MACH,IAAA;AAAA,MACA,UAAA,EAAY;AAAA,QACV,GAAG,IAAA,CAAK,UAAA;AAAA,QACR,0BAAA,EAA4B;AAAA;AAC9B,KACF;AAEA,IAAA,MAAM,QAAA,GACJ,OAAO,OAAA,KAAY,UAAA,GACf,OAAA,GACA,OAAO,OAAA,KAAY,UAAA,GACjB,OAAA,GACA,OAAO,EAAA,KAAO,UAAA,GACZ,KACA,MAAM;AAAA,IAAC,CAAA;AAIjB,IAAA,OAAOC,oBAAA,CAAgB,UAAU,QAAQ,CAAA;AAAA,EAC3C;AACF;;;;"}
@@ -0,0 +1,33 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+
5
+ function isVersionMetadata(value) {
6
+ return core.isObjectLike(value) && "id" in value && typeof value.id === "string";
7
+ }
8
+ function getEnvVar(env, varName) {
9
+ return core.isObjectLike(env) && varName in env && typeof env[varName] === "string" ? env[varName] : void 0;
10
+ }
11
+ function getFinalOptions(userOptions = {}, env) {
12
+ if (typeof env !== "object" || env === null) {
13
+ return userOptions;
14
+ }
15
+ const release = "SENTRY_RELEASE" in env && typeof env.SENTRY_RELEASE === "string" ? env.SENTRY_RELEASE : "CF_VERSION_METADATA" in env && isVersionMetadata(env.CF_VERSION_METADATA) ? env.CF_VERSION_METADATA.id : void 0;
16
+ const tracesSampleRate = userOptions.tracesSampleRate ?? parseFloat(getEnvVar(env, "SENTRY_TRACES_SAMPLE_RATE") ?? "");
17
+ return {
18
+ release,
19
+ ...userOptions,
20
+ dsn: userOptions.dsn ?? getEnvVar(env, "SENTRY_DSN"),
21
+ environment: userOptions.environment ?? getEnvVar(env, "SENTRY_ENVIRONMENT"),
22
+ tracesSampleRate: isFinite(tracesSampleRate) ? tracesSampleRate : void 0,
23
+ debug: userOptions.debug ?? core.envToBool(getEnvVar(env, "SENTRY_DEBUG")),
24
+ tunnel: userOptions.tunnel ?? getEnvVar(env, "SENTRY_TUNNEL"),
25
+ traceLifecycle: userOptions.traceLifecycle ?? getTraceLifecycleFromEnv(getEnvVar(env, "SENTRY_TRACE_LIFECYCLE"))
26
+ };
27
+ }
28
+ function getTraceLifecycleFromEnv(envVar) {
29
+ return envVar === "stream" || envVar === "static" ? envVar : void 0;
30
+ }
31
+
32
+ exports.getFinalOptions = getFinalOptions;
33
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sources":["../../../src/options.ts"],"sourcesContent":["import { isObjectLike, envToBool } from '@sentry/core';\nimport type { CloudflareOptions } from './client';\n\n/**\n * Cloudflare's version metadata binding structure.\n * @see https://developers.cloudflare.com/workers/runtime-apis/bindings/version-metadata/\n */\ninterface CfVersionMetadata {\n id: string;\n tag?: string;\n timestamp?: string;\n}\n\n/**\n * Checks if the value is a valid CF_VERSION_METADATA binding.\n */\nfunction isVersionMetadata(value: unknown): value is CfVersionMetadata {\n return isObjectLike(value) && 'id' in value && typeof value.id === 'string';\n}\n\nfunction getEnvVar<T extends Record<string, unknown>>(env: unknown, varName: keyof T): string | undefined {\n return isObjectLike(env) && varName in env && typeof (env as T)[varName] === 'string'\n ? ((env as T)[varName] as string)\n : undefined;\n}\n\n/**\n * Merges the options passed in from the user with the options we read from\n * the Cloudflare `env` environment variable object.\n *\n * Release is determined with the following priority (highest to lowest):\n * 1. User-provided release option\n * 2. SENTRY_RELEASE environment variable\n * 3. CF_VERSION_METADATA.id binding (if configured in the wrangler config)\n *\n * @param userOptions - The options passed in from the user.\n * @param env - The environment variables.\n *\n * @returns The final options.\n */\nexport function getFinalOptions(userOptions: CloudflareOptions = {}, env: unknown): CloudflareOptions {\n if (typeof env !== 'object' || env === null) {\n return userOptions;\n }\n\n // Priority: userOptions.release > SENTRY_RELEASE > CF_VERSION_METADATA.id\n const release =\n 'SENTRY_RELEASE' in env && typeof env.SENTRY_RELEASE === 'string'\n ? env.SENTRY_RELEASE\n : 'CF_VERSION_METADATA' in env && isVersionMetadata(env.CF_VERSION_METADATA)\n ? env.CF_VERSION_METADATA.id\n : undefined;\n\n const tracesSampleRate =\n userOptions.tracesSampleRate ?? parseFloat(getEnvVar(env, 'SENTRY_TRACES_SAMPLE_RATE') ?? '');\n\n // Spotlight precedence (mirrors node-core's getSpotlightConfig):\n // - false or explicit string from options: use as-is\n // - true: enable, but prefer a custom URL from the env var if set\n // - undefined: defer entirely to the env var (bool or URL)\n /*! rollup-include-development-only */\n const spotlight = getSpotlightFromEnv(userOptions.spotlight, getEnvVar(env, 'SENTRY_SPOTLIGHT'));\n /*! rollup-include-development-only-end */\n\n return {\n release,\n ...userOptions,\n dsn: userOptions.dsn ?? getEnvVar(env, 'SENTRY_DSN'),\n environment: userOptions.environment ?? getEnvVar(env, 'SENTRY_ENVIRONMENT'),\n tracesSampleRate: isFinite(tracesSampleRate) ? tracesSampleRate : undefined,\n debug: userOptions.debug ?? envToBool(getEnvVar(env, 'SENTRY_DEBUG')),\n tunnel: userOptions.tunnel ?? getEnvVar(env, 'SENTRY_TUNNEL'),\n traceLifecycle: userOptions.traceLifecycle ?? getTraceLifecycleFromEnv(getEnvVar(env, 'SENTRY_TRACE_LIFECYCLE')),\n /*! rollup-include-development-only */\n spotlight,\n /*! rollup-include-development-only-end */\n };\n}\n\n/**\n * Resolve the spotlight option from a user-supplied value and an env binding string.\n * Mirrors node-core's `getSpotlightConfig` precedence:\n * - `false` or explicit string from options → use as-is\n * - `true` → enable, but prefer a custom URL from the env var if set\n * - `undefined` → defer entirely to the env var (bool or URL)\n */\nfunction getSpotlightFromEnv(\n optionsSpotlight: boolean | string | undefined,\n envVar: string | undefined,\n): boolean | string | undefined {\n if (optionsSpotlight === false) {\n return false;\n }\n if (typeof optionsSpotlight === 'string') {\n return optionsSpotlight;\n }\n\n // optionsSpotlight is true or undefined\n const envBool = envToBool(envVar, { strict: true });\n const envUrl = envBool === null && envVar ? envVar : undefined;\n\n return optionsSpotlight === true\n ? (envUrl ?? true) // true: use env URL if present, otherwise true\n : (envBool ?? envUrl); // undefined: use env var (bool or URL)\n}\n\nfunction getTraceLifecycleFromEnv(envVar: string | undefined): 'static' | 'stream' | undefined {\n return envVar === 'stream' || envVar === 'static' ? envVar : undefined;\n}\n"],"names":["isObjectLike","envToBool"],"mappings":";;;;AAgBA,SAAS,kBAAkB,KAAA,EAA4C;AACrE,EAAA,OAAOA,kBAAa,KAAK,CAAA,IAAK,QAAQ,KAAA,IAAS,OAAO,MAAM,EAAA,KAAO,QAAA;AACrE;AAEA,SAAS,SAAA,CAA6C,KAAc,OAAA,EAAsC;AACxG,EAAA,OAAOA,iBAAA,CAAa,GAAG,CAAA,IAAK,OAAA,IAAW,GAAA,IAAO,OAAQ,GAAA,CAAU,OAAO,CAAA,KAAM,QAAA,GACvE,GAAA,CAAU,OAAO,CAAA,GACnB,MAAA;AACN;AAgBO,SAAS,eAAA,CAAgB,WAAA,GAAiC,EAAC,EAAG,GAAA,EAAiC;AACpG,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,KAAQ,IAAA,EAAM;AAC3C,IAAA,OAAO,WAAA;AAAA,EACT;AAGA,EAAA,MAAM,UACJ,gBAAA,IAAoB,GAAA,IAAO,OAAO,GAAA,CAAI,mBAAmB,QAAA,GACrD,GAAA,CAAI,cAAA,GACJ,qBAAA,IAAyB,OAAO,iBAAA,CAAkB,GAAA,CAAI,mBAAmB,CAAA,GACvE,GAAA,CAAI,oBAAoB,EAAA,GACxB,MAAA;AAER,EAAA,MAAM,gBAAA,GACJ,YAAY,gBAAA,IAAoB,UAAA,CAAW,UAAU,GAAA,EAAK,2BAA2B,KAAK,EAAE,CAAA;AAM9F,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,GAAG,WAAA;AAAA,IACH,GAAA,EAAK,WAAA,CAAY,GAAA,IAAO,SAAA,CAAU,KAAK,YAAY,CAAA;AAAA,IACnD,WAAA,EAAa,WAAA,CAAY,WAAA,IAAe,SAAA,CAAU,KAAK,oBAAoB,CAAA;AAAA,IAC3E,gBAAA,EAAkB,QAAA,CAAS,gBAAgB,CAAA,GAAI,gBAAA,GAAmB,MAAA;AAAA,IAClE,OAAO,WAAA,CAAY,KAAA,IAASC,eAAU,SAAA,CAAU,GAAA,EAAK,cAAc,CAAC,CAAA;AAAA,IACpE,MAAA,EAAQ,WAAA,CAAY,MAAA,IAAU,SAAA,CAAU,KAAK,eAAe,CAAA;AAAA,IAC5D,gBAAgB,WAAA,CAAY,cAAA,IAAkB,yBAAyB,SAAA,CAAU,GAAA,EAAK,wBAAwB,CAAC;AAAA,GAC/G;AACJ;AA6BA,SAAS,yBAAyB,MAAA,EAA6D;AAC7F,EAAA,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,QAAA,GAAW,MAAA,GAAS,MAAA;AAC/D;;;;"}
@@ -0,0 +1,24 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const noDiagnosticChannels = require('@sentry/server-utils/no-diagnostic-channels');
4
+ const request = require('./request.js');
5
+ const sdk = require('./sdk.js');
6
+
7
+ function sentryPagesPlugin(handlerOrOptions) {
8
+ noDiagnosticChannels.setAsyncLocalStorageAsyncContextStrategy();
9
+ return (context) => {
10
+ if (context.request.method === "OPTIONS" || context.request.method === "HEAD") {
11
+ return context.next();
12
+ }
13
+ const options = typeof handlerOrOptions === "function" ? handlerOrOptions(context) : handlerOrOptions;
14
+ const executionContext = { ...context, props: {} };
15
+ return request.wrapRequestHandlerWithInit(
16
+ { options, request: context.request, context: executionContext },
17
+ () => context.next(),
18
+ sdk.init
19
+ );
20
+ };
21
+ }
22
+
23
+ exports.sentryPagesPlugin = sentryPagesPlugin;
24
+ //# sourceMappingURL=pages-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages-plugin.js","sources":["../../../src/pages-plugin.ts"],"sourcesContent":["import { setAsyncLocalStorageAsyncContextStrategy } from '@sentry/server-utils/no-diagnostic-channels';\nimport type { CloudflareOptions } from './client';\nimport type { ExecutionContextCompat } from './executionContext';\nimport { wrapRequestHandlerWithInit } from './request';\nimport { init } from './sdk';\n\n/**\n * Plugin middleware for Cloudflare Pages.\n *\n * Initializes the SDK and wraps cloudflare pages requests with SDK instrumentation.\n *\n * @example Simple usage\n *\n * ```javascript\n * // functions/_middleware.js\n * import * as Sentry from '@sentry/cloudflare';\n *\n * export const onRequest = Sentry.sentryPagesPlugin({\n * dsn: process.env.SENTRY_DSN,\n * tracesSampleRate: 1.0,\n * });\n * ```\n *\n * @example Usage with handler function to access context for environmental variables\n *\n * ```javascript\n * import * as Sentry from '@sentry/cloudflare';\n *\n * const const onRequest = Sentry.sentryPagesPlugin((context) => ({\n * dsn: context.env.SENTRY_DSN,\n * tracesSampleRate: 1.0,\n * })\n * ```\n *\n * @param handlerOrOptions Configuration options or a function that returns configuration options.\n * @returns A plugin function that can be used in Cloudflare Pages.\n */\nexport function sentryPagesPlugin<\n // oxlint-disable-next-line typescript/no-explicit-any\n Env = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Params extends string = any,\n Data extends Record<string, unknown> = Record<string, unknown>,\n // Although it is not ideal to use `any` here, it makes usage more flexible for different setups.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PluginParams = any,\n>(\n handlerOrOptions:\n | CloudflareOptions\n | ((context: EventPluginContext<Env, Params, Data, PluginParams>) => CloudflareOptions),\n): PagesPluginFunction<Env, Params, Data, PluginParams> {\n setAsyncLocalStorageAsyncContextStrategy();\n return context => {\n if (context.request.method === 'OPTIONS' || context.request.method === 'HEAD') {\n return context.next();\n }\n\n const options = typeof handlerOrOptions === 'function' ? handlerOrOptions(context) : handlerOrOptions;\n // A Pages `EventPluginContext` is not a Workers `ExecutionContext`, but `wrapRequestHandler` only\n // uses `waitUntil` and a `'storage' in context` check, both of which this satisfies.\n const executionContext = { ...context, props: {} } as unknown as ExecutionContextCompat;\n return wrapRequestHandlerWithInit(\n { options, request: context.request, context: executionContext },\n () => context.next(),\n init,\n );\n };\n}\n"],"names":["setAsyncLocalStorageAsyncContextStrategy","wrapRequestHandlerWithInit","init"],"mappings":";;;;;;AAqCO,SAAS,kBAUd,gBAAA,EAGsD;AACtD,EAAAA,6DAAA,EAAyC;AACzC,EAAA,OAAO,CAAA,OAAA,KAAW;AAChB,IAAA,IAAI,QAAQ,OAAA,CAAQ,MAAA,KAAW,aAAa,OAAA,CAAQ,OAAA,CAAQ,WAAW,MAAA,EAAQ;AAC7E,MAAA,OAAO,QAAQ,IAAA,EAAK;AAAA,IACtB;AAEA,IAAA,MAAM,UAAU,OAAO,gBAAA,KAAqB,UAAA,GAAa,gBAAA,CAAiB,OAAO,CAAA,GAAI,gBAAA;AAGrF,IAAA,MAAM,mBAAmB,EAAE,GAAG,OAAA,EAAS,KAAA,EAAO,EAAC,EAAE;AACjD,IAAA,OAAOC,kCAAA;AAAA,MACL,EAAE,OAAA,EAAS,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS,SAAS,gBAAA,EAAiB;AAAA,MAC/D,MAAM,QAAQ,IAAA,EAAK;AAAA,MACnBC;AAAA,KACF;AAAA,EACF,CAAA;AACF;;;;"}
@@ -0,0 +1,132 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+ const httpServer = require('./integrations/httpServer.js');
5
+ const baseSdk = require('./baseSdk.js');
6
+ const flush = require('./flush.js');
7
+ const scopeUtils = require('./scope-utils.js');
8
+ const invocationScope = require('./utils/invocationScope.js');
9
+ const streaming = require('./utils/streaming.js');
10
+
11
+ function getRequestErrorMechanismType(context) {
12
+ return context && "storage" in context ? "auto.faas.cloudflare.durable_object" : "auto.http.cloudflare";
13
+ }
14
+ function wrapRequestHandler(wrapperOptions, handler) {
15
+ return wrapRequestHandlerWithInit(wrapperOptions, handler, baseSdk.initBaseSdk);
16
+ }
17
+ function wrapRequestHandlerWithInit(wrapperOptions, handler, initSdk) {
18
+ return invocationScope.withInvocationIsolationScope(async (isolationScope) => {
19
+ const { options, request, captureErrors = true } = wrapperOptions;
20
+ const context = wrapperOptions.context;
21
+ const waitUntil = context ? flush.getOriginalWaitUntil(context).bind(context) : void 0;
22
+ const errorMechanismType = getRequestErrorMechanismType(context);
23
+ const client = initSdk({ ...options, ctx: context });
24
+ isolationScope.setClient(client);
25
+ const urlObject = core.parseStringToURLObject(request.url);
26
+ const [name, attributes] = core.getHttpSpanDetailsFromUrlObject(
27
+ urlObject,
28
+ "server",
29
+ "auto.http.cloudflare",
30
+ request,
31
+ void 0,
32
+ client
33
+ );
34
+ const contentLength = request.headers.get("content-length");
35
+ if (contentLength) {
36
+ attributes["http.request.body.size"] = parseInt(contentLength, 10);
37
+ }
38
+ const userAgentHeader = request.headers.get("user-agent");
39
+ if (userAgentHeader) {
40
+ attributes["user_agent.original"] = userAgentHeader;
41
+ }
42
+ if (client) {
43
+ Object.assign(
44
+ attributes,
45
+ core.httpHeadersToSpanAttributes(core.winterCGHeadersToDict(request.headers), client.getDataCollectionOptions())
46
+ );
47
+ }
48
+ attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_OP] = "http.server";
49
+ scopeUtils.addCloudResourceContext(isolationScope);
50
+ scopeUtils.addRequest(isolationScope, request);
51
+ if (request.cf) {
52
+ scopeUtils.addCultureContext(isolationScope, request.cf);
53
+ if (typeof request.cf.httpProtocol === "string") {
54
+ attributes["network.protocol.name"] = request.cf.httpProtocol;
55
+ }
56
+ }
57
+ if (request.method === "OPTIONS" || request.method === "HEAD") {
58
+ try {
59
+ return await handler();
60
+ } catch (e) {
61
+ if (captureErrors) {
62
+ core.captureException(e, { mechanism: { handled: false, type: errorMechanismType } });
63
+ }
64
+ throw e;
65
+ } finally {
66
+ waitUntil?.(flush.flushAndDispose(client));
67
+ }
68
+ }
69
+ if (client) {
70
+ await httpServer.captureIncomingRequestBody(client, request);
71
+ }
72
+ return core.continueTrace(
73
+ { sentryTrace: request.headers.get("sentry-trace") || "", baggage: request.headers.get("baggage") },
74
+ () => {
75
+ return core.startSpanManual({ name, attributes }, async (span) => {
76
+ let res;
77
+ try {
78
+ res = await handler();
79
+ core.setHttpStatus(span, res.status);
80
+ } catch (e) {
81
+ span.end();
82
+ if (captureErrors) {
83
+ core.captureException(e, { mechanism: { handled: false, type: errorMechanismType } });
84
+ }
85
+ waitUntil?.(flush.flushAndDispose(client));
86
+ throw e;
87
+ }
88
+ const classification = streaming.classifyResponseStreaming(res);
89
+ if (classification.isStreaming && res.body) {
90
+ try {
91
+ let ended = false;
92
+ const endSpanOnce = () => {
93
+ if (ended) return;
94
+ ended = true;
95
+ span.end();
96
+ waitUntil?.(flush.flushAndDispose(client));
97
+ };
98
+ const transform = new TransformStream({
99
+ flush() {
100
+ endSpanOnce();
101
+ },
102
+ cancel() {
103
+ endSpanOnce();
104
+ }
105
+ });
106
+ return new Response(res.body.pipeThrough(transform), {
107
+ status: res.status,
108
+ statusText: res.statusText,
109
+ headers: res.headers
110
+ });
111
+ } catch {
112
+ span.end();
113
+ waitUntil?.(flush.flushAndDispose(client));
114
+ return res;
115
+ }
116
+ }
117
+ span.end();
118
+ if (res.status === 101) {
119
+ waitUntil?.(client?.flush(2e3));
120
+ } else {
121
+ waitUntil?.(flush.flushAndDispose(client));
122
+ }
123
+ return res;
124
+ });
125
+ }
126
+ );
127
+ });
128
+ }
129
+
130
+ exports.wrapRequestHandler = wrapRequestHandler;
131
+ exports.wrapRequestHandlerWithInit = wrapRequestHandlerWithInit;
132
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sources":["../../../src/request.ts"],"sourcesContent":["import type { CfProperties, IncomingRequestCfProperties } from '@cloudflare/workers-types';\nimport {\n captureException,\n continueTrace,\n getHttpSpanDetailsFromUrlObject,\n httpHeadersToSpanAttributes,\n parseStringToURLObject,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n setHttpStatus,\n startSpanManual,\n winterCGHeadersToDict,\n} from '@sentry/core';\nimport { captureIncomingRequestBody } from './integrations/httpServer';\nimport { initBaseSdk } from './baseSdk';\nimport type { CloudflareClient, CloudflareOptions } from './client';\nimport type { ExecutionContextCompat } from './executionContext';\nimport { flushAndDispose, getOriginalWaitUntil } from './flush';\nimport { addCloudResourceContext, addCultureContext, addRequest } from './scope-utils';\nimport { withInvocationIsolationScope } from './utils/invocationScope';\nimport { classifyResponseStreaming } from './utils/streaming';\n\nfunction getRequestErrorMechanismType(context: ExecutionContextCompat | undefined): string {\n // Durable Object fetch handlers use DO state as context (see instrumentDurableObjectWithSentry)\n return context && 'storage' in context ? 'auto.faas.cloudflare.durable_object' : 'auto.http.cloudflare';\n}\n\ninterface RequestHandlerWrapperOptions {\n options: CloudflareOptions;\n request: Request<unknown, IncomingRequestCfProperties<unknown> | CfProperties<unknown>>;\n context: ExecutionContextCompat | undefined;\n /**\n * If true, errors will be captured, rethrown and sent to Sentry.\n * Otherwise, errors are rethrown but not captured.\n *\n * You most likely don't want to set this to `false`, if you use `wrapRequestHandler` directly.\n * This is primarily meant as an escape hatch for higher-level SDKs relying on additional error\n * capturing mechanisms where this wrapper captures errors too early or too generally.\n *\n * @default true\n */\n captureErrors?: boolean;\n}\n\ntype InitSdk = (options: CloudflareOptions) => CloudflareClient | undefined;\n\n/**\n * Wraps a cloudflare request handler in Sentry instrumentation.\n *\n * The client is set up with the default integrations that work without the `nodejs_compat`\n * compatibility flag, so that this also works on runtimes that cannot enable it (e.g. Shopify\n * Oxygen). On a runtime that has `nodejs_compat`, pass `defaultIntegrations:\n * getDefaultIntegrations(options)` in `options` to get the full set instead.\n */\nexport function wrapRequestHandler(\n wrapperOptions: RequestHandlerWrapperOptions,\n handler: (...args: unknown[]) => Response | Promise<Response>,\n): Promise<Response> {\n return wrapRequestHandlerWithInit(wrapperOptions, handler, initBaseSdk);\n}\n\n/**\n * Same as {@link wrapRequestHandler}, but with the SDK initialization injected.\n *\n * Wrappers that are only reachable from the main entry point — where `nodejs_compat` is a\n * requirement anyway — pass `init` from `sdk.ts` to get the full default integrations.\n *\n * @internal\n */\nexport function wrapRequestHandlerWithInit(\n wrapperOptions: RequestHandlerWrapperOptions,\n handler: (...args: unknown[]) => Response | Promise<Response>,\n initSdk: InitSdk,\n): Promise<Response> {\n return withInvocationIsolationScope(async isolationScope => {\n const { options, request, captureErrors = true } = wrapperOptions;\n const context = wrapperOptions.context;\n\n // Use getOriginalWaitUntil to get the un-instrumented waitUntil function.\n // This is crucial to avoid deadlock: the flush lock mechanism wraps waitUntil\n // to track pending tasks. If we use the instrumented version for flushAndDispose,\n // it acquires the lock, then flushAndDispose tries to wait for the same lock,\n // creating a deadlock.\n const waitUntil = context ? getOriginalWaitUntil(context).bind(context) : undefined;\n const errorMechanismType = getRequestErrorMechanismType(context);\n\n const client = initSdk({ ...options, ctx: context });\n isolationScope.setClient(client);\n\n const urlObject = parseStringToURLObject(request.url);\n const [name, attributes] = getHttpSpanDetailsFromUrlObject(\n urlObject,\n 'server',\n 'auto.http.cloudflare',\n request,\n undefined,\n client,\n );\n\n const contentLength = request.headers.get('content-length');\n if (contentLength) {\n attributes['http.request.body.size'] = parseInt(contentLength, 10);\n }\n\n const userAgentHeader = request.headers.get('user-agent');\n if (userAgentHeader) {\n attributes['user_agent.original'] = userAgentHeader;\n }\n\n if (client) {\n Object.assign(\n attributes,\n httpHeadersToSpanAttributes(winterCGHeadersToDict(request.headers), client.getDataCollectionOptions()),\n );\n }\n\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] = 'http.server';\n\n addCloudResourceContext(isolationScope);\n addRequest(isolationScope, request);\n if (request.cf) {\n addCultureContext(isolationScope, request.cf);\n\n if (typeof request.cf.httpProtocol === 'string') {\n attributes['network.protocol.name'] = request.cf.httpProtocol;\n }\n }\n\n // Do not capture spans for OPTIONS and HEAD requests\n if (request.method === 'OPTIONS' || request.method === 'HEAD') {\n try {\n return await handler();\n } catch (e) {\n if (captureErrors) {\n captureException(e, { mechanism: { handled: false, type: errorMechanismType } });\n }\n throw e;\n } finally {\n waitUntil?.(flushAndDispose(client));\n }\n }\n\n if (client) {\n await captureIncomingRequestBody(client, request);\n }\n\n return continueTrace(\n { sentryTrace: request.headers.get('sentry-trace') || '', baggage: request.headers.get('baggage') },\n () => {\n // Note: This span will not have a duration unless I/O happens in the handler. This is\n // because of how the cloudflare workers runtime works.\n // See: https://developers.cloudflare.com/workers/runtime-apis/performance/\n\n // Use startSpanManual to control when span ends (needed for streaming responses)\n return startSpanManual({ name, attributes }, async span => {\n let res: Response;\n\n try {\n res = await handler();\n setHttpStatus(span, res.status);\n\n // After the handler runs, the span name might have been updated by nested instrumentation\n // (e.g., Remix parameterizing routes). The span should already have the correct name\n // from that instrumentation, so we don't need to do anything here.\n } catch (e) {\n span.end();\n if (captureErrors) {\n captureException(e, { mechanism: { handled: false, type: errorMechanismType } });\n }\n waitUntil?.(flushAndDispose(client));\n throw e;\n }\n\n // Classify response to detect actual streaming\n const classification = classifyResponseStreaming(res);\n\n if (classification.isStreaming && res.body) {\n try {\n let ended = false;\n\n const endSpanOnce = (): void => {\n if (ended) return;\n\n ended = true;\n span.end();\n waitUntil?.(flushAndDispose(client));\n };\n\n const transform = new TransformStream({\n flush() {\n // Source stream completed normally.\n endSpanOnce();\n },\n cancel() {\n // Client disconnected (or downstream cancelled). The `cancel`\n // is being called while the response is still considered\n // active, so this is a safe place to end the span.\n endSpanOnce();\n },\n });\n\n return new Response(res.body.pipeThrough(transform), {\n status: res.status,\n statusText: res.statusText,\n headers: res.headers,\n });\n } catch {\n span.end();\n waitUntil?.(flushAndDispose(client));\n return res;\n }\n }\n\n // Non-streaming response - end span immediately and return original\n span.end();\n\n // Don't dispose for protocol upgrades (101 Switching Protocols) - the connection stays alive.\n // This includes WebSocket upgrades where webSocketMessage/webSocketClose handlers\n // will still be called and may need the client to capture errors.\n if (res.status === 101) {\n waitUntil?.(client?.flush(2000));\n } else {\n waitUntil?.(flushAndDispose(client));\n }\n return res;\n });\n },\n );\n });\n}\n"],"names":["initBaseSdk","withInvocationIsolationScope","getOriginalWaitUntil","parseStringToURLObject","getHttpSpanDetailsFromUrlObject","httpHeadersToSpanAttributes","winterCGHeadersToDict","SEMANTIC_ATTRIBUTE_SENTRY_OP","addCloudResourceContext","addRequest","addCultureContext","captureException","flushAndDispose","captureIncomingRequestBody","continueTrace","startSpanManual","setHttpStatus","classifyResponseStreaming"],"mappings":"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"}