@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":"instrumentWorkerEntrypoint.js","sources":["../../../../src/instrumentations/instrumentWorkerEntrypoint.ts"],"sourcesContent":["import type { RpcStub, WorkerEntrypoint } from 'cloudflare:workers';\nimport { setAsyncLocalStorageAsyncContextStrategy } from '@sentry/server-utils/no-diagnostic-channels';\nimport type { CloudflareOptions } from '../client';\nimport { getFinalOptions } from '../options';\nimport type { DefaultEnv, ResolveEnv } from '../types';\nimport { instrumentContext } from '../utils/instrumentContext';\nimport { extractRpcMeta } from '../utils/rpcMeta';\nimport { type UncheckedMethod, wrapMethodWithSentry } from '../wrapMethodWithSentry';\nimport { instrumentEnv } from './worker/instrumentEnv';\nimport { instrumentWorkerEntrypointFetch } from './worker/instrumentFetch';\nimport { instrumentWorkerEntrypointQueue } from './worker/instrumentQueue';\nimport { instrumentWorkerEntrypointScheduled } from './worker/instrumentScheduled';\nimport { instrumentWorkerEntrypointTail } from './worker/instrumentTail';\n\nconst WORKER_ENTRYPOINT_ORIGIN = 'auto.faas.cloudflare.worker_entrypoint';\n\ntype ReservedMethod =\n | Exclude<Extract<keyof WorkerEntrypoint, string>, '__WORKER_ENTRYPOINT_BRAND'>\n | Extract<keyof ExportedHandler, string>\n | Exclude<Extract<keyof RpcStub<(...args: unknown[]) => unknown>, string>, '__RPC_STUB_BRAND'>\n | 'constructor';\n\nconst RESERVED_METHODS = new Set<string>([\n 'connect',\n 'constructor',\n 'dup',\n 'email',\n 'fetch',\n 'queue',\n 'scheduled',\n 'tail',\n 'tailStream',\n 'test',\n 'trace',\n] satisfies ReservedMethod[]);\n\ninterface CachedMethod {\n source: UncheckedMethod;\n wrapped: UncheckedMethod;\n}\n\nexport type WorkerEntrypointConstructor<Env = unknown, Props = {}> = new (\n ctx: ExecutionContext,\n // WorkerEntrypoint subclasses can define different `env` shapes, so this constructor must accept all of them.\n // oxlint-disable-next-line typescript/no-explicit-any\n env: any,\n) => InstanceType<typeof WorkerEntrypoint<Env, Props>>;\n\nfunction isPrototypeMethod(instance: object, prop: string, method: UncheckedMethod): boolean {\n let prototype = Object.getPrototypeOf(instance);\n\n while (prototype && prototype !== Object.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(prototype, prop);\n if (descriptor) {\n return descriptor.value === method;\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return false;\n}\n\nfunction bindToInstance(instance: object, proxy: object, method: UncheckedMethod): UncheckedMethod {\n return new Proxy(method, {\n apply(target, thisArg, args) {\n return Reflect.apply(target, thisArg === proxy ? instance : thisArg, args);\n },\n });\n}\n\nfunction instrumentMethod(\n instance: object,\n proxy: object,\n prop: PropertyKey,\n method: UncheckedMethod,\n options: CloudflareOptions,\n context: ExecutionContext,\n): UncheckedMethod {\n const ownDescriptor = Object.getOwnPropertyDescriptor(instance, prop);\n if (ownDescriptor && 'value' in ownDescriptor && !ownDescriptor.configurable && !ownDescriptor.writable) {\n return method;\n }\n\n const boundMethod = bindToInstance(instance, proxy, method);\n\n if (typeof prop !== 'string' || RESERVED_METHODS.has(prop) || !isPrototypeMethod(instance, prop, method)) {\n return boundMethod;\n }\n\n const captureMethod = wrapMethodWithSentry(\n { options, context, spanOp: 'rpc', origin: WORKER_ENTRYPOINT_ORIGIN },\n boundMethod,\n undefined,\n true,\n );\n\n if (options.enableRpcTracePropagation === false) {\n return captureMethod;\n }\n\n const tracedMethod = wrapMethodWithSentry(\n { options, context, spanName: prop, spanOp: 'rpc', origin: WORKER_ENTRYPOINT_ORIGIN },\n boundMethod,\n undefined,\n true,\n );\n\n return (...args: unknown[]) => {\n const { rpcMeta } = extractRpcMeta(args);\n return rpcMeta ? tracedMethod.call(proxy, ...args) : captureMethod.call(proxy, ...args);\n };\n}\n\n/**\n * Instruments a WorkerEntrypoint class to capture errors and performance data.\n *\n * Instruments the following methods (same as `withSentry` for ExportedHandler):\n * - fetch (HTTP requests)\n * - scheduled (cron triggers)\n * - queue (queue consumers)\n * - email (email handlers)\n * - tail (tail workers)\n *\n * as well as any other public RPC methods on the WorkerEntrypoint instance.\n *\n * @param optionsCallback Function that returns the options for the SDK initialization.\n * @param WorkerEntrypointClass The WorkerEntrypoint class to instrument.\n * @returns The instrumented WorkerEntrypoint class.\n *\n * @example\n * ```ts\n * class MyWorkerBase extends WorkerEntrypoint<Env> {\n * async fetch(request: Request): Promise<Response> {\n * return new Response('Hello World!');\n * }\n *\n * async myRpcMethod(arg: string): Promise<string> {\n * return `Hello ${arg}!`;\n * }\n * }\n *\n * export default instrumentWorkerEntrypoint(\n * env => ({\n * dsn: env.SENTRY_DSN,\n * tracesSampleRate: 1.0,\n * }),\n * MyWorkerBase,\n * );\n * ```\n */\nexport function instrumentWorkerEntrypoint<\n Env = DefaultEnv,\n Props = {},\n // oxlint-disable-next-line typescript/no-explicit-any\n T extends WorkerEntrypoint<any, any> = WorkerEntrypoint<Env, Props>,\n // oxlint-disable-next-line typescript/no-explicit-any\n C extends new (ctx: ExecutionContext, env: any) => T = new (ctx: ExecutionContext, env: any) => T,\n>(optionsCallback: (env: ResolveEnv<C, Env>) => CloudflareOptions | undefined, WorkerEntrypointClass: C): C {\n // Set up AsyncLocalStorage strategy ONCE at instrumentation time, not per-request\n // This is critical - calling this per-request would create a new AsyncLocalStorage\n // each time, breaking scope isolation for concurrent requests\n setAsyncLocalStorageAsyncContextStrategy();\n\n return new Proxy(WorkerEntrypointClass, {\n construct(target, [ctx, env]) {\n const context = instrumentContext(ctx);\n const options = getFinalOptions(optionsCallback(env), env);\n const instrumentedEnv = instrumentEnv(env, options);\n const obj = new target(context, instrumentedEnv);\n\n // Override this.ctx to ensure the instrumented context is used\n // This is necessary because the base WorkerEntrypoint class sets this.ctx\n // from the constructor parameter, but we want users accessing this.ctx\n // to get the instrumented version\n if ('ctx' in obj) {\n Object.defineProperty(obj, 'ctx', {\n value: context,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n\n if ('env' in obj) {\n Object.defineProperty(obj, 'env', {\n value: instrumentedEnv,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n\n Object.defineProperty(obj, '__SENTRY_CONTEXT__', {\n value: context,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n\n Object.defineProperty(obj, '__SENTRY_OPTIONS__', {\n value: options,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n\n const entrypoint = obj as WorkerEntrypoint;\n instrumentWorkerEntrypointFetch(entrypoint, options, context);\n instrumentWorkerEntrypointScheduled(entrypoint, options, context);\n instrumentWorkerEntrypointQueue(entrypoint, options, context);\n instrumentWorkerEntrypointTail(entrypoint, options, context);\n\n // workerd resolves RPC methods through property access.\n const methodCache = new Map<PropertyKey, CachedMethod>();\n\n const proxy: typeof obj = new Proxy(obj, {\n get(instance, prop) {\n const value = Reflect.get(instance, prop, instance);\n\n if (typeof value !== 'function') {\n return value;\n }\n\n const method = value as UncheckedMethod;\n\n const cached = methodCache.get(prop);\n if (cached?.source === method) {\n return cached.wrapped;\n }\n\n const wrapped = instrumentMethod(instance, proxy, prop, method, options, context);\n methodCache.set(prop, { source: method, wrapped });\n return wrapped;\n },\n });\n\n return proxy;\n },\n });\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAcA,MAAM,wBAAA,GAA2B,wCAAA;AAQjC,MAAM,gBAAA,uBAAuB,GAAA,CAAY;AAAA,EACvC,SAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAA4B,CAAA;AAc5B,SAAS,iBAAA,CAAkB,QAAA,EAAkB,IAAA,EAAc,MAAA,EAAkC;AAC3F,EAAA,IAAI,SAAA,GAAY,MAAA,CAAO,cAAA,CAAe,QAAQ,CAAA;AAE9C,EAAA,OAAO,SAAA,IAAa,SAAA,KAAc,MAAA,CAAO,SAAA,EAAW;AAClD,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,wBAAA,CAAyB,SAAA,EAAW,IAAI,CAAA;AAClE,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,OAAO,WAAW,KAAA,KAAU,MAAA;AAAA,IAC9B;AACA,IAAA,SAAA,GAAY,MAAA,CAAO,eAAe,SAAS,CAAA;AAAA,EAC7C;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,cAAA,CAAe,QAAA,EAAkB,KAAA,EAAe,MAAA,EAA0C;AACjG,EAAA,OAAO,IAAI,MAAM,MAAA,EAAQ;AAAA,IACvB,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM;AAC3B,MAAA,OAAO,QAAQ,KAAA,CAAM,MAAA,EAAQ,YAAY,KAAA,GAAQ,QAAA,GAAW,SAAS,IAAI,CAAA;AAAA,IAC3E;AAAA,GACD,CAAA;AACH;AAEA,SAAS,iBACP,QAAA,EACA,KAAA,EACA,IAAA,EACA,MAAA,EACA,SACA,OAAA,EACiB;AACjB,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,wBAAA,CAAyB,QAAA,EAAU,IAAI,CAAA;AACpE,EAAA,IAAI,aAAA,IAAiB,WAAW,aAAA,IAAiB,CAAC,cAAc,YAAA,IAAgB,CAAC,cAAc,QAAA,EAAU;AACvG,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,QAAA,EAAU,KAAA,EAAO,MAAM,CAAA;AAE1D,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,gBAAA,CAAiB,GAAA,CAAI,IAAI,CAAA,IAAK,CAAC,iBAAA,CAAkB,QAAA,EAAU,IAAA,EAAM,MAAM,CAAA,EAAG;AACxG,IAAA,OAAO,WAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAA,GAAgB,oBAAA;AAAA,IACpB,EAAE,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,QAAQ,wBAAA,EAAyB;AAAA,IACpE,WAAA;AAAA,IACA,KAAA,CAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,IAAI,OAAA,CAAQ,8BAA8B,KAAA,EAAO;AAC/C,IAAA,OAAO,aAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAA,GAAe,oBAAA;AAAA,IACnB,EAAE,SAAS,OAAA,EAAS,QAAA,EAAU,MAAM,MAAA,EAAQ,KAAA,EAAO,QAAQ,wBAAA,EAAyB;AAAA,IACpF,WAAA;AAAA,IACA,KAAA,CAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO,IAAI,IAAA,KAAoB;AAC7B,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,cAAA,CAAe,IAAI,CAAA;AACvC,IAAA,OAAO,OAAA,GAAU,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,GAAG,IAAI,CAAA,GAAI,aAAA,CAAc,IAAA,CAAK,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA,EACxF,CAAA;AACF;AAuCO,SAAS,0BAAA,CAOd,iBAA6E,qBAAA,EAA6B;AAI1G,EAAA,wCAAA,EAAyC;AAEzC,EAAA,OAAO,IAAI,MAAM,qBAAA,EAAuB;AAAA,IACtC,SAAA,CAAU,MAAA,EAAQ,CAAC,GAAA,EAAK,GAAG,CAAA,EAAG;AAC5B,MAAA,MAAM,OAAA,GAAU,kBAAkB,GAAG,CAAA;AACrC,MAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,eAAA,CAAgB,GAAG,GAAG,GAAG,CAAA;AACzD,MAAA,MAAM,eAAA,GAAkB,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA;AAClD,MAAA,MAAM,GAAA,GAAM,IAAI,MAAA,CAAO,OAAA,EAAS,eAAe,CAAA;AAM/C,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAA,MAAA,CAAO,cAAA,CAAe,KAAK,KAAA,EAAO;AAAA,UAChC,KAAA,EAAO,OAAA;AAAA,UACP,QAAA,EAAU,IAAA;AAAA,UACV,UAAA,EAAY,IAAA;AAAA,UACZ,YAAA,EAAc;AAAA,SACf,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAA,MAAA,CAAO,cAAA,CAAe,KAAK,KAAA,EAAO;AAAA,UAChC,KAAA,EAAO,eAAA;AAAA,UACP,QAAA,EAAU,IAAA;AAAA,UACV,UAAA,EAAY,IAAA;AAAA,UACZ,YAAA,EAAc;AAAA,SACf,CAAA;AAAA,MACH;AAEA,MAAA,MAAA,CAAO,cAAA,CAAe,KAAK,oBAAA,EAAsB;AAAA,QAC/C,KAAA,EAAO,OAAA;AAAA,QACP,UAAA,EAAY,KAAA;AAAA,QACZ,QAAA,EAAU,KAAA;AAAA,QACV,YAAA,EAAc;AAAA,OACf,CAAA;AAED,MAAA,MAAA,CAAO,cAAA,CAAe,KAAK,oBAAA,EAAsB;AAAA,QAC/C,KAAA,EAAO,OAAA;AAAA,QACP,UAAA,EAAY,KAAA;AAAA,QACZ,QAAA,EAAU,KAAA;AAAA,QACV,YAAA,EAAc;AAAA,OACf,CAAA;AAED,MAAA,MAAM,UAAA,GAAa,GAAA;AACnB,MAAA,+BAAA,CAAgC,UAAA,EAAY,SAAS,OAAO,CAAA;AAC5D,MAAA,mCAAA,CAAoC,UAAA,EAAY,SAAS,OAAO,CAAA;AAChE,MAAA,+BAAA,CAAgC,UAAA,EAAY,SAAS,OAAO,CAAA;AAC5D,MAAA,8BAAA,CAA+B,UAAA,EAAY,SAAS,OAAO,CAAA;AAG3D,MAAA,MAAM,WAAA,uBAAkB,GAAA,EAA+B;AAEvD,MAAA,MAAM,KAAA,GAAoB,IAAI,KAAA,CAAM,GAAA,EAAK;AAAA,QACvC,GAAA,CAAI,UAAU,IAAA,EAAM;AAClB,UAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,QAAA,EAAU,MAAM,QAAQ,CAAA;AAElD,UAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAC/B,YAAA,OAAO,KAAA;AAAA,UACT;AAEA,UAAA,MAAM,MAAA,GAAS,KAAA;AAEf,UAAA,MAAM,MAAA,GAAS,WAAA,CAAY,GAAA,CAAI,IAAI,CAAA;AACnC,UAAA,IAAI,MAAA,EAAQ,WAAW,MAAA,EAAQ;AAC7B,YAAA,OAAO,MAAA,CAAO,OAAA;AAAA,UAChB;AAEA,UAAA,MAAM,UAAU,gBAAA,CAAiB,QAAA,EAAU,OAAO,IAAA,EAAM,MAAA,EAAQ,SAAS,OAAO,CAAA;AAChF,UAAA,WAAA,CAAY,IAAI,IAAA,EAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,SAAS,CAAA;AACjD,UAAA,OAAO,OAAA;AAAA,QACT;AAAA,OACD,CAAA;AAED,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;;;;"}
@@ -0,0 +1,159 @@
1
+ import { startSpan, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, addBreadcrumb, SPAN_STATUS_ERROR } from '@sentry/core';
2
+ import { ensureInstrumented } from '../../instrument.js';
3
+
4
+ const patchedStatement = /* @__PURE__ */ new WeakSet();
5
+ function instrumentD1PreparedStatementQueries(statement, query) {
6
+ if (patchedStatement.has(statement)) {
7
+ return statement;
8
+ }
9
+ statement.first = new Proxy(statement.first, {
10
+ apply(target, thisArg, args) {
11
+ return startSpan(createStartSpanOptions(query, "first"), async () => {
12
+ const res = await Reflect.apply(target, thisArg, args);
13
+ createD1Breadcrumb(query, "first");
14
+ return res;
15
+ });
16
+ }
17
+ });
18
+ statement.run = new Proxy(statement.run, {
19
+ apply(target, thisArg, args) {
20
+ return startSpan(createStartSpanOptions(query, "run"), async (span) => {
21
+ const d1Response = await Reflect.apply(target, thisArg, args);
22
+ applyD1ReturnObjectToSpan(span, d1Response);
23
+ createD1Breadcrumb(query, "run", d1Response);
24
+ return d1Response;
25
+ });
26
+ }
27
+ });
28
+ statement.all = new Proxy(statement.all, {
29
+ apply(target, thisArg, args) {
30
+ return startSpan(createStartSpanOptions(query, "all"), async (span) => {
31
+ const d1Result = await Reflect.apply(target, thisArg, args);
32
+ applyD1ReturnObjectToSpan(span, d1Result);
33
+ createD1Breadcrumb(query, "all", d1Result);
34
+ return d1Result;
35
+ });
36
+ }
37
+ });
38
+ statement.raw = new Proxy(statement.raw, {
39
+ apply(target, thisArg, args) {
40
+ return startSpan(createStartSpanOptions(query, "raw"), async () => {
41
+ const res = await Reflect.apply(target, thisArg, args);
42
+ createD1Breadcrumb(query, "raw");
43
+ return res;
44
+ });
45
+ }
46
+ });
47
+ patchedStatement.add(statement);
48
+ return statement;
49
+ }
50
+ function instrumentD1PreparedStatement(statement, query) {
51
+ statement.bind = new Proxy(statement.bind, {
52
+ apply(target, thisArg, args) {
53
+ return instrumentD1PreparedStatementQueries(Reflect.apply(target, thisArg, args), query);
54
+ }
55
+ });
56
+ return instrumentD1PreparedStatementQueries(statement, query);
57
+ }
58
+ function applyD1ReturnObjectToSpan(span, d1Result) {
59
+ if (!d1Result.success) {
60
+ span.setStatus({ code: SPAN_STATUS_ERROR });
61
+ }
62
+ span.setAttributes(getAttributesFromD1Response(d1Result));
63
+ }
64
+ function getAttributesFromD1Response(d1Result) {
65
+ return {
66
+ "cloudflare.d1.duration": d1Result.meta.duration,
67
+ "cloudflare.d1.rows_read": d1Result.meta.rows_read,
68
+ "cloudflare.d1.rows_written": d1Result.meta.rows_written
69
+ };
70
+ }
71
+ function createD1Breadcrumb(query, type, d1Result) {
72
+ addBreadcrumb({
73
+ category: "query",
74
+ message: query,
75
+ data: {
76
+ ...d1Result ? getAttributesFromD1Response(d1Result) : {},
77
+ "db.operation.name": type
78
+ }
79
+ });
80
+ }
81
+ function createStartSpanOptions(query, type) {
82
+ return {
83
+ op: "db.query",
84
+ name: query,
85
+ attributes: {
86
+ "db.system.name": "cloudflare-d1",
87
+ "db.operation.name": type,
88
+ "db.query.text": query,
89
+ [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.db.cloudflare.d1"
90
+ }
91
+ };
92
+ }
93
+ function instrumentPrepare(prepare) {
94
+ return new Proxy(prepare, {
95
+ apply(target, thisArg, args) {
96
+ const [query] = args;
97
+ return instrumentD1PreparedStatement(Reflect.apply(target, thisArg, args), query);
98
+ }
99
+ });
100
+ }
101
+ function instrumentBatch(batch) {
102
+ return new Proxy(batch, {
103
+ apply(target, thisArg, args) {
104
+ const statements = args[0];
105
+ const queryText = statements.map((statement) => statement.statement ?? "").filter(Boolean).join("\n");
106
+ return startSpan(
107
+ {
108
+ op: "db.query",
109
+ name: "D1 batch",
110
+ attributes: {
111
+ "db.system.name": "cloudflare-d1",
112
+ "db.operation.name": "batch",
113
+ "db.query.text": queryText || void 0,
114
+ "db.operation.batch.size": statements.length,
115
+ [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.db.cloudflare.d1"
116
+ }
117
+ },
118
+ async () => {
119
+ const res = await Reflect.apply(target, thisArg, args);
120
+ createD1Breadcrumb("D1 batch", "batch");
121
+ return res;
122
+ }
123
+ );
124
+ }
125
+ });
126
+ }
127
+ function instrumentD1Session(session) {
128
+ session.prepare = instrumentPrepare(session.prepare);
129
+ session.batch = instrumentBatch(session.batch);
130
+ return session;
131
+ }
132
+ function _instrumentD1(db) {
133
+ db.prepare = instrumentPrepare(db.prepare);
134
+ db.batch = instrumentBatch(db.batch);
135
+ db.exec = new Proxy(db.exec, {
136
+ apply(target, thisArg, args) {
137
+ const [query] = args;
138
+ return startSpan(createStartSpanOptions(query, "exec"), async () => {
139
+ const res = await Reflect.apply(target, thisArg, args);
140
+ createD1Breadcrumb(query, "exec");
141
+ return res;
142
+ });
143
+ }
144
+ });
145
+ if ("withSession" in db && typeof db.withSession === "function") {
146
+ db.withSession = new Proxy(db.withSession, {
147
+ apply(target, thisArg, args) {
148
+ return instrumentD1Session(Reflect.apply(target, thisArg, args));
149
+ }
150
+ });
151
+ }
152
+ return db;
153
+ }
154
+ function instrumentD1(db) {
155
+ return ensureInstrumented(db, _instrumentD1);
156
+ }
157
+
158
+ export { instrumentD1 };
159
+ //# sourceMappingURL=instrumentD1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentD1.js","sources":["../../../../../src/instrumentations/worker/instrumentD1.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/unbound-method */\nimport type { D1Database, D1DatabaseSession, D1PreparedStatement, D1Response } from '@cloudflare/workers-types';\nimport type { Span, SpanAttributes, StartSpanOptions } from '@sentry/core';\nimport { addBreadcrumb, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SPAN_STATUS_ERROR, startSpan } from '@sentry/core';\nimport { ensureInstrumented } from '../../instrument';\n\n// Patching is based on internal Cloudflare D1 API\n// https://github.com/cloudflare/workerd/blob/cd5279e7b305003f1d9c851e73efa9d67e4b68b2/src/cloudflare/internal/d1-api.ts\n\nconst patchedStatement = new WeakSet<D1PreparedStatement>();\n\n/**\n * Patches the query methods of a Cloudflare D1 prepared statement with Sentry.\n */\nfunction instrumentD1PreparedStatementQueries(statement: D1PreparedStatement, query: string): D1PreparedStatement {\n if (patchedStatement.has(statement)) {\n return statement;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n statement.first = new Proxy(statement.first, {\n apply(target, thisArg, args: Parameters<typeof statement.first>) {\n return startSpan(createStartSpanOptions(query, 'first'), async () => {\n const res = await Reflect.apply(target, thisArg, args);\n createD1Breadcrumb(query, 'first');\n return res;\n });\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n statement.run = new Proxy(statement.run, {\n apply(target, thisArg, args: Parameters<typeof statement.run>) {\n return startSpan(createStartSpanOptions(query, 'run'), async span => {\n const d1Response = await Reflect.apply(target, thisArg, args);\n applyD1ReturnObjectToSpan(span, d1Response);\n createD1Breadcrumb(query, 'run', d1Response);\n return d1Response;\n });\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n statement.all = new Proxy(statement.all, {\n apply(target, thisArg, args: Parameters<typeof statement.all>) {\n return startSpan(createStartSpanOptions(query, 'all'), async span => {\n const d1Result = await Reflect.apply(target, thisArg, args);\n applyD1ReturnObjectToSpan(span, d1Result);\n createD1Breadcrumb(query, 'all', d1Result);\n return d1Result;\n });\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n statement.raw = new Proxy(statement.raw, {\n apply(target, thisArg, args: Parameters<typeof statement.raw>) {\n return startSpan(createStartSpanOptions(query, 'raw'), async () => {\n const res = await Reflect.apply(target, thisArg, args);\n createD1Breadcrumb(query, 'raw');\n return res;\n });\n },\n });\n\n patchedStatement.add(statement);\n\n return statement;\n}\n\n/**\n * Instruments a Cloudflare D1 prepared statement with Sentry.\n *\n * This is meant to be used as a top-level call, under the hood it calls `instrumentD1PreparedStatementQueries`\n * to patch the query methods. The reason for this abstraction is to ensure that the `bind` method is also patched.\n */\nfunction instrumentD1PreparedStatement(statement: D1PreparedStatement, query: string): D1PreparedStatement {\n // statement.bind() returns a new instance of D1PreparedStatement, so we have to patch it as well.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n statement.bind = new Proxy(statement.bind, {\n apply(target, thisArg, args: Parameters<typeof statement.bind>) {\n return instrumentD1PreparedStatementQueries(Reflect.apply(target, thisArg, args), query);\n },\n });\n\n return instrumentD1PreparedStatementQueries(statement, query);\n}\n\n/**\n * Add D1Response meta information to a span.\n *\n * See: https://developers.cloudflare.com/d1/build-with-d1/d1-client-api/#return-object\n */\nfunction applyD1ReturnObjectToSpan(span: Span, d1Result: D1Response): void {\n if (!d1Result.success) {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n }\n\n span.setAttributes(getAttributesFromD1Response(d1Result));\n}\n\nfunction getAttributesFromD1Response(d1Result: D1Response): SpanAttributes {\n return {\n 'cloudflare.d1.duration': d1Result.meta.duration,\n 'cloudflare.d1.rows_read': d1Result.meta.rows_read,\n 'cloudflare.d1.rows_written': d1Result.meta.rows_written,\n };\n}\n\ntype D1QueryType = 'first' | 'run' | 'all' | 'raw' | 'batch' | 'exec';\n\nfunction createD1Breadcrumb(query: string, type: D1QueryType, d1Result?: D1Response): void {\n addBreadcrumb({\n category: 'query',\n message: query,\n data: {\n ...(d1Result ? getAttributesFromD1Response(d1Result) : {}),\n 'db.operation.name': type,\n },\n });\n}\n\nfunction createStartSpanOptions(query: string, type: D1QueryType): StartSpanOptions {\n return {\n op: 'db.query',\n name: query,\n attributes: {\n 'db.system.name': 'cloudflare-d1',\n 'db.operation.name': type,\n 'db.query.text': query,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.cloudflare.d1',\n },\n };\n}\n\nfunction instrumentPrepare(\n prepare: D1Database['prepare'] | D1DatabaseSession['prepare'],\n): D1Database['prepare'] | D1DatabaseSession['prepare'] {\n return new Proxy(prepare, {\n apply(target, thisArg, args: Parameters<typeof prepare>) {\n const [query] = args;\n return instrumentD1PreparedStatement(Reflect.apply(target, thisArg, args), query);\n },\n });\n}\n\nfunction instrumentBatch(\n batch: D1Database['batch'] | D1DatabaseSession['batch'],\n): D1Database['batch'] | D1DatabaseSession['batch'] {\n return new Proxy(batch, {\n apply(target, thisArg, args: Parameters<typeof batch>) {\n const statements = args[0];\n // D1PreparedStatement exposes a `statement` property at runtime, but it's not in @cloudflare/workers-types.\n // https://github.com/cloudflare/workerd/blob/dc12d7650b4f5d4f9ba6a47aa45fad769cdf8db4/src/cloudflare/internal/d1-api.ts#L210\n const queryText = statements\n .map(statement => (statement as unknown as { statement?: string }).statement ?? '')\n .filter(Boolean)\n .join('\\n');\n\n return startSpan(\n {\n op: 'db.query',\n name: 'D1 batch',\n attributes: {\n 'db.system.name': 'cloudflare-d1',\n 'db.operation.name': 'batch',\n 'db.query.text': queryText || undefined,\n 'db.operation.batch.size': statements.length,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.cloudflare.d1',\n },\n },\n async () => {\n const res = await Reflect.apply(target, thisArg, args);\n createD1Breadcrumb('D1 batch', 'batch');\n return res;\n },\n );\n },\n });\n}\n\nfunction instrumentD1Session(session: D1DatabaseSession): D1DatabaseSession {\n session.prepare = instrumentPrepare(session.prepare);\n session.batch = instrumentBatch(session.batch);\n return session;\n}\n\nfunction _instrumentD1(db: D1Database): D1Database {\n db.prepare = instrumentPrepare(db.prepare);\n db.batch = instrumentBatch(db.batch);\n\n db.exec = new Proxy(db.exec, {\n apply(target, thisArg, args: Parameters<typeof db.exec>) {\n const [query] = args;\n return startSpan(createStartSpanOptions(query, 'exec'), async () => {\n const res = await Reflect.apply(target, thisArg, args);\n createD1Breadcrumb(query, 'exec');\n return res;\n });\n },\n });\n\n if ('withSession' in db && typeof db.withSession === 'function') {\n db.withSession = new Proxy(db.withSession, {\n apply(target, thisArg, args: [unknown]) {\n return instrumentD1Session(Reflect.apply(target, thisArg, args) as D1DatabaseSession);\n },\n });\n }\n\n return db;\n}\n\nexport function instrumentD1(db: D1Database): D1Database {\n return ensureInstrumented(db, _instrumentD1);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { SENTRY_OP } from '@sentry/conventions/attributes';
2
+ import { GENERAL_FUNCTION_SPAN_OP } from '@sentry/conventions/op';
3
+ import { withIsolationScope, startSpan, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, captureException } from '@sentry/core';
4
+ import { flushAndDispose } from '../../flush.js';
5
+ import { ensureInstrumented } from '../../instrument.js';
6
+ import { getFinalOptions } from '../../options.js';
7
+ import { addCloudResourceContext } from '../../scope-utils.js';
8
+ import { init } from '../../sdk.js';
9
+ import { instrumentContext } from '../../utils/instrumentContext.js';
10
+ import { instrumentEnv } from './instrumentEnv.js';
11
+
12
+ function wrapEmailHandler(emailMessage, options, context, fn) {
13
+ return withIsolationScope((isolationScope) => {
14
+ const waitUntil = context.waitUntil.bind(context);
15
+ const client = init({ ...options, ctx: context });
16
+ isolationScope.setClient(client);
17
+ addCloudResourceContext(isolationScope);
18
+ return startSpan(
19
+ {
20
+ name: `Handle Email ${emailMessage.to}`,
21
+ attributes: {
22
+ [SENTRY_OP]: GENERAL_FUNCTION_SPAN_OP,
23
+ "faas.trigger": "email",
24
+ [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.faas.cloudflare.email",
25
+ [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: "task"
26
+ }
27
+ },
28
+ async () => {
29
+ try {
30
+ return await fn();
31
+ } catch (e) {
32
+ captureException(e, { mechanism: { handled: false, type: "auto.faas.cloudflare.email" } });
33
+ throw e;
34
+ } finally {
35
+ waitUntil(flushAndDispose(client));
36
+ }
37
+ }
38
+ );
39
+ });
40
+ }
41
+ function instrumentExportedHandlerEmail(handler, optionsCallback) {
42
+ if (!("email" in handler) || typeof handler.email !== "function") {
43
+ return;
44
+ }
45
+ handler.email = ensureInstrumented(
46
+ handler.email,
47
+ (original) => new Proxy(original, {
48
+ apply(target, thisArg, args) {
49
+ const [emailMessage, env, ctx] = args;
50
+ const context = instrumentContext(ctx);
51
+ const options = getFinalOptions(optionsCallback(env), env);
52
+ args[1] = instrumentEnv(env, options);
53
+ args[2] = context;
54
+ return wrapEmailHandler(emailMessage, options, context, () => target.apply(thisArg, args));
55
+ }
56
+ })
57
+ );
58
+ }
59
+
60
+ export { instrumentExportedHandlerEmail };
61
+ //# sourceMappingURL=instrumentEmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentEmail.js","sources":["../../../../../src/instrumentations/worker/instrumentEmail.ts"],"sourcesContent":["import type { EmailMessage } from '@cloudflare/workers-types';\nimport type { AnyExportedHandler } from '../../types';\nimport type { env as cloudflareEnv } from 'cloudflare:workers';\nimport { SENTRY_OP } from '@sentry/conventions/attributes';\nimport { GENERAL_FUNCTION_SPAN_OP } from '@sentry/conventions/op';\nimport {\n captureException,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n startSpan,\n withIsolationScope,\n} 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 email handler logic - wraps execution with Sentry instrumentation.\n */\nfunction wrapEmailHandler(\n emailMessage: EmailMessage,\n options: CloudflareOptions,\n context: ExecutionContext,\n fn: () => unknown,\n): unknown {\n return withIsolationScope(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 return startSpan(\n {\n name: `Handle Email ${emailMessage.to}`,\n attributes: {\n [SENTRY_OP]: GENERAL_FUNCTION_SPAN_OP,\n 'faas.trigger': 'email',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.faas.cloudflare.email',\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'task',\n },\n },\n async () => {\n try {\n return await fn();\n } catch (e) {\n captureException(e, { mechanism: { handled: false, type: 'auto.faas.cloudflare.email' } });\n throw e;\n } finally {\n waitUntil(flushAndDispose(client));\n }\n },\n );\n });\n}\n\n/**\n * Instruments an email handler for ExportedHandler (env/ctx come from args).\n */\nexport function instrumentExportedHandlerEmail<T extends AnyExportedHandler>(\n handler: T,\n optionsCallback: (env: typeof cloudflareEnv) => CloudflareOptions | undefined,\n): void {\n if (!('email' in handler) || typeof handler.email !== 'function') {\n return;\n }\n\n handler.email = ensureInstrumented(\n handler.email,\n original =>\n new Proxy(original, {\n apply(target, thisArg, args: Parameters<NonNullable<T['email']>>) {\n const [emailMessage, 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 wrapEmailHandler(emailMessage, options, context, () => target.apply(thisArg, args));\n },\n }),\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAwBA,SAAS,gBAAA,CACP,YAAA,EACA,OAAA,EACA,OAAA,EACA,EAAA,EACS;AACT,EAAA,OAAO,mBAAmB,CAAA,cAAA,KAAkB;AAC1C,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA;AAEhD,IAAA,MAAM,SAAS,IAAA,CAAK,EAAE,GAAG,OAAA,EAAS,GAAA,EAAK,SAAS,CAAA;AAChD,IAAA,cAAA,CAAe,UAAU,MAAM,CAAA;AAE/B,IAAA,uBAAA,CAAwB,cAAc,CAAA;AAEtC,IAAA,OAAO,SAAA;AAAA,MACL;AAAA,QACE,IAAA,EAAM,CAAA,aAAA,EAAgB,YAAA,CAAa,EAAE,CAAA,CAAA;AAAA,QACrC,UAAA,EAAY;AAAA,UACV,CAAC,SAAS,GAAG,wBAAA;AAAA,UACb,cAAA,EAAgB,OAAA;AAAA,UAChB,CAAC,gCAAgC,GAAG,4BAAA;AAAA,UACpC,CAAC,gCAAgC,GAAG;AAAA;AACtC,OACF;AAAA,MACA,YAAY;AACV,QAAA,IAAI;AACF,UAAA,OAAO,MAAM,EAAA,EAAG;AAAA,QAClB,SAAS,CAAA,EAAG;AACV,UAAA,gBAAA,CAAiB,CAAA,EAAG,EAAE,SAAA,EAAW,EAAE,SAAS,KAAA,EAAO,IAAA,EAAM,4BAAA,EAA6B,EAAG,CAAA;AACzF,UAAA,MAAM,CAAA;AAAA,QACR,CAAA,SAAE;AACA,UAAA,SAAA,CAAU,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA,QACnC;AAAA,MACF;AAAA,KACF;AAAA,EACF,CAAC,CAAA;AACH;AAKO,SAAS,8BAAA,CACd,SACA,eAAA,EACM;AACN,EAAA,IAAI,EAAE,OAAA,IAAW,OAAA,CAAA,IAAY,OAAO,OAAA,CAAQ,UAAU,UAAA,EAAY;AAChE,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,KAAA,GAAQ,kBAAA;AAAA,IACd,OAAA,CAAQ,KAAA;AAAA,IACR,CAAA,QAAA,KACE,IAAI,KAAA,CAAM,QAAA,EAAU;AAAA,MAClB,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAA2C;AAChE,QAAA,MAAM,CAAC,YAAA,EAAc,GAAA,EAAK,GAAG,CAAA,GAAI,IAAA;AACjC,QAAA,MAAM,OAAA,GAAU,kBAAkB,GAAG,CAAA;AACrC,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,eAAA,CAAgB,GAAG,GAAG,GAAG,CAAA;AACzD,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA;AACpC,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,OAAA;AAEV,QAAA,OAAO,gBAAA,CAAiB,cAAc,OAAA,EAAS,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,CAAM,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,MAC3F;AAAA,KACD;AAAA,GACL;AACF;;;;"}
@@ -0,0 +1,88 @@
1
+ import { isObjectLike } from '@sentry/core';
2
+ import { instrumentWorkersAiClient } from '@sentry/server-utils';
3
+ import { isD1Database, isQueue, isR2Bucket, isRateLimit, isAiBinding, isDurableObjectNamespace, isJSRPC } from '../../utils/isBinding.js';
4
+ import { instrumentD1 } from './instrumentD1.js';
5
+ import { appendRpcMeta } from '../../utils/rpcMeta.js';
6
+ import { instrumentDurableObjectNamespace, STUB_NON_RPC_METHODS } from '../instrumentDurableObjectNamespace.js';
7
+ import { instrumentFetcher } from './instrumentFetcher.js';
8
+ import { instrumentQueueProducer } from './instrumentQueueProducer.js';
9
+ import { instrumentR2Bucket } from './instrumentR2.js';
10
+ import { instrumentRateLimit } from './instrumentRateLimit.js';
11
+
12
+ function isProxyable(item) {
13
+ return isObjectLike(item) || typeof item === "function";
14
+ }
15
+ const instrumentedBindings = /* @__PURE__ */ new WeakMap();
16
+ function instrumentEnv(env, options) {
17
+ if (!env || typeof env !== "object") {
18
+ return env;
19
+ }
20
+ return new Proxy(env, {
21
+ get(target, prop, receiver) {
22
+ const item = Reflect.get(target, prop, receiver);
23
+ if (!isProxyable(item)) {
24
+ return item;
25
+ }
26
+ const cached = instrumentedBindings.get(item);
27
+ if (cached) {
28
+ return cached;
29
+ }
30
+ if (isD1Database(item)) {
31
+ const instrumented = instrumentD1(item);
32
+ instrumentedBindings.set(item, instrumented);
33
+ return instrumented;
34
+ }
35
+ if (isQueue(item)) {
36
+ const bindingName = typeof prop === "string" ? prop : String(prop);
37
+ const instrumented = instrumentQueueProducer(item, bindingName);
38
+ instrumentedBindings.set(item, instrumented);
39
+ return instrumented;
40
+ }
41
+ if (isR2Bucket(item)) {
42
+ const bindingName = typeof prop === "string" ? prop : String(prop);
43
+ const instrumented = instrumentR2Bucket(item, bindingName);
44
+ instrumentedBindings.set(item, instrumented);
45
+ return instrumented;
46
+ }
47
+ if (isRateLimit(item)) {
48
+ const bindingName = typeof prop === "string" ? prop : String(prop);
49
+ const instrumented = instrumentRateLimit(item, bindingName);
50
+ instrumentedBindings.set(item, instrumented);
51
+ return instrumented;
52
+ }
53
+ if (isAiBinding(item)) {
54
+ const instrumented = instrumentWorkersAiClient(item);
55
+ instrumentedBindings.set(item, instrumented);
56
+ return instrumented;
57
+ }
58
+ if (options?.enableRpcTracePropagation === false) {
59
+ return item;
60
+ }
61
+ if (isDurableObjectNamespace(item)) {
62
+ const instrumented = instrumentDurableObjectNamespace(item);
63
+ instrumentedBindings.set(item, instrumented);
64
+ return instrumented;
65
+ }
66
+ if (isJSRPC(item)) {
67
+ const instrumented = new Proxy(item, {
68
+ get(target2, p) {
69
+ const value = Reflect.get(target2, p);
70
+ if (p === "fetch" && typeof value === "function") {
71
+ return instrumentFetcher((...args) => Reflect.apply(value, target2, args));
72
+ }
73
+ if (typeof value === "function" && typeof p === "string" && !STUB_NON_RPC_METHODS.has(p)) {
74
+ return (...args) => Reflect.apply(value, target2, appendRpcMeta(args));
75
+ }
76
+ return value;
77
+ }
78
+ });
79
+ instrumentedBindings.set(item, instrumented);
80
+ return instrumented;
81
+ }
82
+ return item;
83
+ }
84
+ });
85
+ }
86
+
87
+ export { instrumentEnv };
88
+ //# sourceMappingURL=instrumentEnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentEnv.js","sources":["../../../../../src/instrumentations/worker/instrumentEnv.ts"],"sourcesContent":["import { isObjectLike } from '@sentry/core';\nimport { instrumentWorkersAiClient } from '@sentry/server-utils';\nimport type { CloudflareOptions } from '../../client';\nimport {\n isAiBinding,\n isD1Database,\n isDurableObjectNamespace,\n isJSRPC,\n isQueue,\n isR2Bucket,\n isRateLimit,\n} from '../../utils/isBinding';\nimport { instrumentD1 } from './instrumentD1';\nimport { appendRpcMeta } from '../../utils/rpcMeta';\nimport { instrumentDurableObjectNamespace, STUB_NON_RPC_METHODS } from '../instrumentDurableObjectNamespace';\nimport { instrumentFetcher } from './instrumentFetcher';\nimport { instrumentQueueProducer } from './instrumentQueueProducer';\nimport { instrumentR2Bucket } from './instrumentR2';\nimport { instrumentRateLimit } from './instrumentRateLimit';\n\nfunction isProxyable(item: unknown): item is object {\n return isObjectLike(item) || typeof item === 'function';\n}\n\nconst instrumentedBindings = new WeakMap<object, unknown>();\n\n/**\n * Wraps the Cloudflare `env` object in a Proxy that detects binding types\n * on property access and returns instrumented versions.\n *\n * Currently detects:\n * - DurableObjectNamespace (via `idFromName` duck-typing)\n * - Service bindings / JSRPC proxies\n * - Queue producers (via `send` + `sendBatch` duck-typing)\n * - R2 Buckets (via `head` + `put` + `createMultipartUpload` duck-typing)\n * - Rate limiters (via `limit` duck-typing)\n * - Workers AI (via `run` + `gateway` + `toMarkdown` duck-typing)\n *\n * @param env - The Cloudflare env object to instrument\n * @param options - Optional CloudflareOptions to control RPC trace propagation\n */\nexport function instrumentEnv<Env extends Record<string, unknown>>(env: Env, options?: CloudflareOptions): Env {\n if (!env || typeof env !== 'object') {\n return env;\n }\n\n return new Proxy(env, {\n get(target, prop, receiver) {\n const item = Reflect.get(target, prop, receiver);\n\n if (!isProxyable(item)) {\n return item;\n }\n\n const cached = instrumentedBindings.get(item);\n\n if (cached) {\n return cached;\n }\n\n if (isD1Database(item)) {\n const instrumented = instrumentD1(item);\n instrumentedBindings.set(item, instrumented);\n return instrumented;\n }\n\n if (isQueue(item)) {\n const bindingName = typeof prop === 'string' ? prop : String(prop);\n const instrumented = instrumentQueueProducer(item, bindingName);\n instrumentedBindings.set(item, instrumented);\n return instrumented;\n }\n\n if (isR2Bucket(item)) {\n const bindingName = typeof prop === 'string' ? prop : String(prop);\n const instrumented = instrumentR2Bucket(item, bindingName);\n instrumentedBindings.set(item, instrumented);\n return instrumented;\n }\n\n if (isRateLimit(item)) {\n const bindingName = typeof prop === 'string' ? prop : String(prop);\n const instrumented = instrumentRateLimit(item, bindingName);\n instrumentedBindings.set(item, instrumented);\n return instrumented;\n }\n\n if (isAiBinding(item)) {\n const instrumented = instrumentWorkersAiClient(item);\n instrumentedBindings.set(item, instrumented);\n return instrumented;\n }\n\n if (options?.enableRpcTracePropagation === false) {\n return item;\n }\n\n if (isDurableObjectNamespace(item)) {\n const instrumented = instrumentDurableObjectNamespace(item);\n instrumentedBindings.set(item, instrumented);\n return instrumented;\n }\n\n if (isJSRPC(item)) {\n const instrumented = new Proxy(item, {\n get(target, p) {\n const value = Reflect.get(target, p);\n\n if (p === 'fetch' && typeof value === 'function') {\n return instrumentFetcher((...args) => Reflect.apply(value, target, args));\n }\n\n if (typeof value === 'function' && typeof p === 'string' && !STUB_NON_RPC_METHODS.has(p)) {\n return (...args: unknown[]) => Reflect.apply(value, target, appendRpcMeta(args));\n }\n\n return value;\n },\n });\n\n instrumentedBindings.set(item, instrumented);\n return instrumented;\n }\n\n return item;\n },\n });\n}\n"],"names":["target"],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { ensureInstrumented } from '../../instrument.js';
2
+ import { getFinalOptions } from '../../options.js';
3
+ import { wrapRequestHandlerWithInit } from '../../request.js';
4
+ import { init } from '../../sdk.js';
5
+ import { instrumentContext } from '../../utils/instrumentContext.js';
6
+ import { instrumentEnv } from './instrumentEnv.js';
7
+
8
+ function instrumentExportedHandlerFetch(handler, optionsCallback) {
9
+ if (!("fetch" in handler) || typeof handler.fetch !== "function") {
10
+ return;
11
+ }
12
+ handler.fetch = ensureInstrumented(
13
+ handler.fetch,
14
+ (original) => new Proxy(original, {
15
+ apply(target, thisArg, args) {
16
+ const [rawRequest, env, ctx] = args;
17
+ const request = rawRequest;
18
+ if (request.method === "OPTIONS" || request.method === "HEAD") {
19
+ return target.apply(thisArg, args);
20
+ }
21
+ const context = instrumentContext(ctx);
22
+ const options = getFinalOptions(optionsCallback(env), env);
23
+ args[1] = instrumentEnv(env, options);
24
+ args[2] = context;
25
+ return wrapRequestHandlerWithInit({ options, request, context }, () => target.apply(thisArg, args), init);
26
+ }
27
+ })
28
+ );
29
+ }
30
+ function instrumentWorkerEntrypointFetch(instance, options, context) {
31
+ if (!instance.fetch) {
32
+ return;
33
+ }
34
+ const original = instance.fetch.bind(instance);
35
+ instance.fetch = new Proxy(original, {
36
+ apply(target, thisArg, args) {
37
+ const [request] = args;
38
+ if (request.method === "OPTIONS" || request.method === "HEAD") {
39
+ return Reflect.apply(target, thisArg, args);
40
+ }
41
+ return wrapRequestHandlerWithInit(
42
+ { options, request, context },
43
+ () => Reflect.apply(target, thisArg, args),
44
+ init
45
+ );
46
+ }
47
+ });
48
+ }
49
+
50
+ export { instrumentExportedHandlerFetch, instrumentWorkerEntrypointFetch };
51
+ //# sourceMappingURL=instrumentFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentFetch.js","sources":["../../../../../src/instrumentations/worker/instrumentFetch.ts"],"sourcesContent":["import type { AnyExportedHandler } from '../../types';\nimport type { env as cloudflareEnv, WorkerEntrypoint } from 'cloudflare:workers';\nimport type { CloudflareOptions } from '../../client';\nimport { ensureInstrumented } from '../../instrument';\nimport { getFinalOptions } from '../../options';\nimport { wrapRequestHandlerWithInit } from '../../request';\nimport { init } from '../../sdk';\nimport { instrumentContext } from '../../utils/instrumentContext';\nimport { instrumentEnv } from './instrumentEnv';\n\n/**\n * Instruments a fetch handler for ExportedHandler (env/ctx come from args).\n */\nexport function instrumentExportedHandlerFetch<T extends AnyExportedHandler>(\n handler: T,\n optionsCallback: (env: typeof cloudflareEnv) => CloudflareOptions | undefined,\n): void {\n if (!('fetch' in handler) || typeof handler.fetch !== 'function') {\n return;\n }\n\n handler.fetch = ensureInstrumented(\n handler.fetch,\n original =>\n new Proxy(original, {\n apply(target, thisArg, args: Parameters<NonNullable<T['fetch']>>) {\n const [rawRequest, env, ctx] = args;\n // `T['fetch']` resolves to the structural `AnyHandlerMethod`, whose parameters are\n // `any` — but the fetch event is always a `Request` at runtime.\n const request = rawRequest as Request;\n\n if (request.method === 'OPTIONS' || request.method === 'HEAD') {\n return target.apply(thisArg, args);\n }\n\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 wrapRequestHandlerWithInit({ options, request, context }, () => target.apply(thisArg, args), init);\n },\n }),\n );\n}\n\n/**\n * Instruments a fetch method for WorkerEntrypoint (options/context already available).\n */\nexport function instrumentWorkerEntrypointFetch<T extends WorkerEntrypoint>(\n instance: T,\n options: CloudflareOptions,\n context: ExecutionContext,\n): void {\n if (!instance.fetch) {\n return;\n }\n\n const original = instance.fetch.bind(instance);\n instance.fetch = new Proxy(original, {\n apply(target, thisArg, args: [Request]) {\n const [request] = args;\n\n if (request.method === 'OPTIONS' || request.method === 'HEAD') {\n return Reflect.apply(target, thisArg, args);\n }\n\n return wrapRequestHandlerWithInit(\n { options, request, context },\n () => Reflect.apply(target, thisArg, args),\n init,\n );\n },\n });\n}\n"],"names":[],"mappings":";;;;;;;AAaO,SAAS,8BAAA,CACd,SACA,eAAA,EACM;AACN,EAAA,IAAI,EAAE,OAAA,IAAW,OAAA,CAAA,IAAY,OAAO,OAAA,CAAQ,UAAU,UAAA,EAAY;AAChE,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,KAAA,GAAQ,kBAAA;AAAA,IACd,OAAA,CAAQ,KAAA;AAAA,IACR,CAAA,QAAA,KACE,IAAI,KAAA,CAAM,QAAA,EAAU;AAAA,MAClB,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAA2C;AAChE,QAAA,MAAM,CAAC,UAAA,EAAY,GAAA,EAAK,GAAG,CAAA,GAAI,IAAA;AAG/B,QAAA,MAAM,OAAA,GAAU,UAAA;AAEhB,QAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,SAAA,IAAa,OAAA,CAAQ,WAAW,MAAA,EAAQ;AAC7D,UAAA,OAAO,MAAA,CAAO,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAAA,QACnC;AAEA,QAAA,MAAM,OAAA,GAAU,kBAAkB,GAAG,CAAA;AACrC,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,eAAA,CAAgB,GAAG,GAAG,GAAG,CAAA;AACzD,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA;AACpC,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,OAAA;AAEV,QAAA,OAAO,0BAAA,CAA2B,EAAE,OAAA,EAAS,OAAA,EAAS,OAAA,EAAQ,EAAG,MAAM,MAAA,CAAO,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA,EAAG,IAAI,CAAA;AAAA,MAC1G;AAAA,KACD;AAAA,GACL;AACF;AAKO,SAAS,+BAAA,CACd,QAAA,EACA,OAAA,EACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,SAAS,KAAA,EAAO;AACnB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA;AAC7C,EAAA,QAAA,CAAS,KAAA,GAAQ,IAAI,KAAA,CAAM,QAAA,EAAU;AAAA,IACnC,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAiB;AACtC,MAAA,MAAM,CAAC,OAAO,CAAA,GAAI,IAAA;AAElB,MAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,SAAA,IAAa,OAAA,CAAQ,WAAW,MAAA,EAAQ;AAC7D,QAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAI,CAAA;AAAA,MAC5C;AAEA,MAAA,OAAO,0BAAA;AAAA,QACL,EAAE,OAAA,EAAS,OAAA,EAAS,OAAA,EAAQ;AAAA,QAC5B,MAAM,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,IAAI,CAAA;AAAA,QACzC;AAAA,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACH;;;;"}
@@ -0,0 +1,22 @@
1
+ import { _INTERNAL_getTracingHeadersForFetchRequest } from '@sentry/core';
2
+
3
+ function instrumentFetcher(fetchFn) {
4
+ return function(input, init) {
5
+ const headers = _INTERNAL_getTracingHeadersForFetchRequest(input, { headers: init?.headers });
6
+ if (input instanceof Request && init === void 0) {
7
+ if (!headers) {
8
+ return fetchFn(input);
9
+ }
10
+ const requestWithTracing = new Request(input, { headers });
11
+ return fetchFn(requestWithTracing);
12
+ }
13
+ const mergedInit = {
14
+ ...init,
15
+ ...headers ? { headers } : {}
16
+ };
17
+ return fetchFn(input, mergedInit);
18
+ };
19
+ }
20
+
21
+ export { instrumentFetcher };
22
+ //# sourceMappingURL=instrumentFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentFetcher.js","sources":["../../../../../src/instrumentations/worker/instrumentFetcher.ts"],"sourcesContent":["import type { Fetcher } from '@cloudflare/workers-types';\nimport { _INTERNAL_getTracingHeadersForFetchRequest } from '@sentry/core';\n\n/**\n * Wraps a fetch-like function to create a span and propagate trace headers\n * (`sentry-trace` and `baggage`) on the outgoing request.\n *\n * Useful for instrumenting Cloudflare bindings that expose a `fetch` method\n * (e.g. Durable Object stubs, Service bindings).\n */\nexport function instrumentFetcher(fetchFn: Fetcher['fetch']): Fetcher['fetch'] {\n return function (input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n const headers = _INTERNAL_getTracingHeadersForFetchRequest(input, { headers: init?.headers });\n\n if (input instanceof Request && init === undefined) {\n if (!headers) {\n return fetchFn(input);\n }\n\n // Newly created headers already include the previous headers from the original request\n // so we can clone the request and pass in all headers.\n const requestWithTracing = new Request(input, { headers: headers as HeadersInit });\n\n return fetchFn(requestWithTracing);\n }\n\n const mergedInit = {\n ...init,\n ...(headers ? { headers } : {}),\n } as NonNullable<Parameters<Fetcher['fetch']>[1]>;\n\n return fetchFn(input, mergedInit);\n };\n}\n"],"names":[],"mappings":";;AAUO,SAAS,kBAAkB,OAAA,EAA6C;AAC7E,EAAA,OAAO,SAAU,OAA0B,IAAA,EAAuC;AAChF,IAAA,MAAM,UAAU,0CAAA,CAA2C,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,SAAS,CAAA;AAE5F,IAAA,IAAI,KAAA,YAAiB,OAAA,IAAW,IAAA,KAAS,MAAA,EAAW;AAClD,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,OAAO,QAAQ,KAAK,CAAA;AAAA,MACtB;AAIA,MAAA,MAAM,qBAAqB,IAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,SAAiC,CAAA;AAEjF,MAAA,OAAO,QAAQ,kBAAkB,CAAA;AAAA,IACnC;AAEA,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,GAAG,IAAA;AAAA,MACH,GAAI,OAAA,GAAU,EAAE,OAAA,KAAY;AAAC,KAC/B;AAEA,IAAA,OAAO,OAAA,CAAQ,OAAO,UAAU,CAAA;AAAA,EAClC,CAAA;AACF;;;;"}
@@ -0,0 +1,79 @@
1
+ import { SENTRY_OP } from '@sentry/conventions/attributes';
2
+ import { MESSAGING_QUEUE_PROCESS_SPAN_OP } from '@sentry/conventions/op';
3
+ import { withIsolationScope, startSpan, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, captureException } from '@sentry/core';
4
+ import { flushAndDispose } from '../../flush.js';
5
+ import { ensureInstrumented } from '../../instrument.js';
6
+ import { getFinalOptions } from '../../options.js';
7
+ import { addCloudResourceContext } from '../../scope-utils.js';
8
+ import { init } from '../../sdk.js';
9
+ import { instrumentContext } from '../../utils/instrumentContext.js';
10
+ import { instrumentEnv } from './instrumentEnv.js';
11
+
12
+ function wrapQueueHandler(batch, options, context, fn) {
13
+ return withIsolationScope((isolationScope) => {
14
+ const waitUntil = context.waitUntil.bind(context);
15
+ const client = init({ ...options, ctx: context });
16
+ isolationScope.setClient(client);
17
+ addCloudResourceContext(isolationScope);
18
+ return startSpan(
19
+ {
20
+ name: `process ${batch.queue}`,
21
+ attributes: {
22
+ [SENTRY_OP]: MESSAGING_QUEUE_PROCESS_SPAN_OP,
23
+ "faas.trigger": "pubsub",
24
+ "messaging.destination.name": batch.queue,
25
+ "messaging.system": "cloudflare",
26
+ "messaging.operation.type": "process",
27
+ "messaging.operation.name": "process",
28
+ "messaging.batch.message_count": batch.messages.length,
29
+ "messaging.message.retry.count": batch.messages.reduce((acc, message) => acc + message.attempts - 1, 0),
30
+ [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.faas.cloudflare.queue",
31
+ [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: "task"
32
+ }
33
+ },
34
+ async () => {
35
+ try {
36
+ return await fn();
37
+ } catch (e) {
38
+ captureException(e, { mechanism: { handled: false, type: "auto.faas.cloudflare.queue" } });
39
+ throw e;
40
+ } finally {
41
+ waitUntil(flushAndDispose(client));
42
+ }
43
+ }
44
+ );
45
+ });
46
+ }
47
+ function instrumentExportedHandlerQueue(handler, optionsCallback) {
48
+ if (!("queue" in handler) || typeof handler.queue !== "function") {
49
+ return;
50
+ }
51
+ handler.queue = ensureInstrumented(
52
+ handler.queue,
53
+ (original) => new Proxy(original, {
54
+ apply(target, thisArg, args) {
55
+ const [batch, env, ctx] = args;
56
+ const context = instrumentContext(ctx);
57
+ const options = getFinalOptions(optionsCallback(env), env);
58
+ args[1] = instrumentEnv(env, options);
59
+ args[2] = context;
60
+ return wrapQueueHandler(batch, options, context, () => target.apply(thisArg, args));
61
+ }
62
+ })
63
+ );
64
+ }
65
+ function instrumentWorkerEntrypointQueue(instance, options, context) {
66
+ if (!instance.queue) {
67
+ return;
68
+ }
69
+ const original = instance.queue.bind(instance);
70
+ instance.queue = new Proxy(original, {
71
+ apply(target, thisArg, args) {
72
+ const [batch] = args;
73
+ return wrapQueueHandler(batch, options, context, () => Reflect.apply(target, thisArg, args));
74
+ }
75
+ });
76
+ }
77
+
78
+ export { instrumentExportedHandlerQueue, instrumentWorkerEntrypointQueue };
79
+ //# sourceMappingURL=instrumentQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentQueue.js","sources":["../../../../../src/instrumentations/worker/instrumentQueue.ts"],"sourcesContent":["import type { MessageBatch } from '@cloudflare/workers-types';\nimport type { AnyExportedHandler } from '../../types';\nimport type { env as cloudflareEnv, WorkerEntrypoint } from 'cloudflare:workers';\nimport { SENTRY_OP } from '@sentry/conventions/attributes';\nimport { MESSAGING_QUEUE_PROCESS_SPAN_OP } from '@sentry/conventions/op';\nimport {\n captureException,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n startSpan,\n withIsolationScope,\n} 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 queue handler logic - wraps execution with Sentry instrumentation.\n */\nfunction wrapQueueHandler(\n batch: MessageBatch,\n options: CloudflareOptions,\n context: ExecutionContext,\n fn: () => unknown,\n): unknown {\n return withIsolationScope(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 return startSpan(\n {\n name: `process ${batch.queue}`,\n attributes: {\n [SENTRY_OP]: MESSAGING_QUEUE_PROCESS_SPAN_OP,\n 'faas.trigger': 'pubsub',\n 'messaging.destination.name': batch.queue,\n 'messaging.system': 'cloudflare',\n 'messaging.operation.type': 'process',\n 'messaging.operation.name': 'process',\n 'messaging.batch.message_count': batch.messages.length,\n 'messaging.message.retry.count': batch.messages.reduce((acc, message) => acc + message.attempts - 1, 0),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.faas.cloudflare.queue',\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'task',\n },\n },\n async () => {\n try {\n return await fn();\n } catch (e) {\n captureException(e, { mechanism: { handled: false, type: 'auto.faas.cloudflare.queue' } });\n throw e;\n } finally {\n waitUntil(flushAndDispose(client));\n }\n },\n );\n });\n}\n\n/**\n * Instruments a queue handler for ExportedHandler (env/ctx come from args).\n */\nexport function instrumentExportedHandlerQueue<T extends AnyExportedHandler>(\n handler: T,\n optionsCallback: (env: typeof cloudflareEnv) => CloudflareOptions | undefined,\n): void {\n if (!('queue' in handler) || typeof handler.queue !== 'function') {\n return;\n }\n\n handler.queue = ensureInstrumented(\n handler.queue,\n original =>\n new Proxy(original, {\n apply(target, thisArg, args: Parameters<NonNullable<T['queue']>>) {\n const [batch, 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 wrapQueueHandler(batch, options, context, () => target.apply(thisArg, args));\n },\n }),\n );\n}\n\n/**\n * Instruments a queue method for WorkerEntrypoint (options/context already available).\n */\nexport function instrumentWorkerEntrypointQueue<T extends WorkerEntrypoint>(\n instance: T,\n options: CloudflareOptions,\n context: ExecutionContext,\n): void {\n if (!instance.queue) {\n return;\n }\n\n const original = instance.queue.bind(instance);\n instance.queue = new Proxy(original, {\n apply(target, thisArg, args: [MessageBatch]) {\n const [batch] = args;\n\n return wrapQueueHandler(batch, options, context, () => Reflect.apply(target, thisArg, args));\n },\n });\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAwBA,SAAS,gBAAA,CACP,KAAA,EACA,OAAA,EACA,OAAA,EACA,EAAA,EACS;AACT,EAAA,OAAO,mBAAmB,CAAA,cAAA,KAAkB;AAC1C,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA;AAEhD,IAAA,MAAM,SAAS,IAAA,CAAK,EAAE,GAAG,OAAA,EAAS,GAAA,EAAK,SAAS,CAAA;AAChD,IAAA,cAAA,CAAe,UAAU,MAAM,CAAA;AAE/B,IAAA,uBAAA,CAAwB,cAAc,CAAA;AAEtC,IAAA,OAAO,SAAA;AAAA,MACL;AAAA,QACE,IAAA,EAAM,CAAA,QAAA,EAAW,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,QAC5B,UAAA,EAAY;AAAA,UACV,CAAC,SAAS,GAAG,+BAAA;AAAA,UACb,cAAA,EAAgB,QAAA;AAAA,UAChB,8BAA8B,KAAA,CAAM,KAAA;AAAA,UACpC,kBAAA,EAAoB,YAAA;AAAA,UACpB,0BAAA,EAA4B,SAAA;AAAA,UAC5B,0BAAA,EAA4B,SAAA;AAAA,UAC5B,+BAAA,EAAiC,MAAM,QAAA,CAAS,MAAA;AAAA,UAChD,+BAAA,EAAiC,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,CAAC,GAAA,EAAK,OAAA,KAAY,GAAA,GAAM,OAAA,CAAQ,QAAA,GAAW,CAAA,EAAG,CAAC,CAAA;AAAA,UACtG,CAAC,gCAAgC,GAAG,4BAAA;AAAA,UACpC,CAAC,gCAAgC,GAAG;AAAA;AACtC,OACF;AAAA,MACA,YAAY;AACV,QAAA,IAAI;AACF,UAAA,OAAO,MAAM,EAAA,EAAG;AAAA,QAClB,SAAS,CAAA,EAAG;AACV,UAAA,gBAAA,CAAiB,CAAA,EAAG,EAAE,SAAA,EAAW,EAAE,SAAS,KAAA,EAAO,IAAA,EAAM,4BAAA,EAA6B,EAAG,CAAA;AACzF,UAAA,MAAM,CAAA;AAAA,QACR,CAAA,SAAE;AACA,UAAA,SAAA,CAAU,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA,QACnC;AAAA,MACF;AAAA,KACF;AAAA,EACF,CAAC,CAAA;AACH;AAKO,SAAS,8BAAA,CACd,SACA,eAAA,EACM;AACN,EAAA,IAAI,EAAE,OAAA,IAAW,OAAA,CAAA,IAAY,OAAO,OAAA,CAAQ,UAAU,UAAA,EAAY;AAChE,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,KAAA,GAAQ,kBAAA;AAAA,IACd,OAAA,CAAQ,KAAA;AAAA,IACR,CAAA,QAAA,KACE,IAAI,KAAA,CAAM,QAAA,EAAU;AAAA,MAClB,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAA2C;AAChE,QAAA,MAAM,CAAC,KAAA,EAAO,GAAA,EAAK,GAAG,CAAA,GAAI,IAAA;AAC1B,QAAA,MAAM,OAAA,GAAU,kBAAkB,GAAG,CAAA;AACrC,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,eAAA,CAAgB,GAAG,GAAG,GAAG,CAAA;AACzD,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA;AACpC,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,OAAA;AAEV,QAAA,OAAO,gBAAA,CAAiB,OAAO,OAAA,EAAS,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,CAAM,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,MACpF;AAAA,KACD;AAAA,GACL;AACF;AAKO,SAAS,+BAAA,CACd,QAAA,EACA,OAAA,EACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,SAAS,KAAA,EAAO;AACnB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA;AAC7C,EAAA,QAAA,CAAS,KAAA,GAAQ,IAAI,KAAA,CAAM,QAAA,EAAU;AAAA,IACnC,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAsB;AAC3C,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI,IAAA;AAEhB,MAAA,OAAO,gBAAA,CAAiB,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,MAAM,QAAQ,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,IAC7F;AAAA,GACD,CAAA;AACH;;;;"}