@sentry/cloudflare 10.68.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 (759) hide show
  1. package/README.md +3 -7
  2. package/build/cjs/dev/baseSdk.js +83 -0
  3. package/build/cjs/dev/baseSdk.js.map +1 -0
  4. package/build/cjs/{client.js → dev/client.js} +5 -0
  5. package/build/cjs/dev/client.js.map +1 -0
  6. package/build/cjs/dev/debug-build.js.map +1 -0
  7. package/build/cjs/dev/defineCloudflareOptions.js.map +1 -0
  8. package/build/cjs/dev/durableobject.js +234 -0
  9. package/build/cjs/dev/durableobject.js.map +1 -0
  10. package/build/cjs/dev/flush.js.map +1 -0
  11. package/build/cjs/{index.js → dev/index.js} +18 -17
  12. package/build/cjs/{index.js.map → dev/index.js.map} +1 -1
  13. package/build/cjs/dev/instrument.js.map +1 -0
  14. package/build/cjs/dev/instrumentations/agents/index.js +16 -0
  15. package/build/cjs/dev/instrumentations/agents/index.js.map +1 -0
  16. package/build/cjs/dev/instrumentations/agents/instrumentAgentCallableRpc.js +52 -0
  17. package/build/cjs/dev/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  18. package/build/cjs/dev/instrumentations/agents/instrumentAgentRequestConversation.js +19 -0
  19. package/build/cjs/dev/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  20. package/build/cjs/dev/instrumentations/agents/instrumentChatAgentConversation.js +31 -0
  21. package/build/cjs/dev/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  22. package/build/cjs/dev/instrumentations/agents/types.js +77 -0
  23. package/build/cjs/dev/instrumentations/agents/types.js.map +1 -0
  24. package/build/cjs/dev/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  25. package/build/cjs/{instrumentations → dev/instrumentations}/instrumentDurableObjectStorage.js +6 -0
  26. package/build/cjs/dev/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  27. package/build/cjs/dev/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  28. package/build/cjs/{instrumentations → dev/instrumentations}/instrumentSqlStorage.js +1 -1
  29. package/build/cjs/dev/instrumentations/instrumentSqlStorage.js.map +1 -0
  30. package/build/cjs/{instrumentations → dev/instrumentations}/instrumentWorkerEntrypoint.js +3 -3
  31. package/build/cjs/dev/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  32. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentD1.js +0 -4
  33. package/build/cjs/dev/instrumentations/worker/instrumentD1.js.map +1 -0
  34. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentEmail.js +3 -1
  35. package/build/cjs/dev/instrumentations/worker/instrumentEmail.js.map +1 -0
  36. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentEnv.js +3 -4
  37. package/build/cjs/dev/instrumentations/worker/instrumentEnv.js.map +1 -0
  38. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentFetch.js +9 -3
  39. package/build/cjs/dev/instrumentations/worker/instrumentFetch.js.map +1 -0
  40. package/build/cjs/dev/instrumentations/worker/instrumentFetcher.js.map +1 -0
  41. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentQueue.js +3 -2
  42. package/build/cjs/dev/instrumentations/worker/instrumentQueue.js.map +1 -0
  43. package/build/cjs/dev/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  44. package/build/cjs/dev/instrumentations/worker/instrumentR2.js.map +1 -0
  45. package/build/cjs/dev/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  46. package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentScheduled.js +3 -1
  47. package/build/cjs/dev/instrumentations/worker/instrumentScheduled.js.map +1 -0
  48. package/build/cjs/dev/instrumentations/worker/instrumentTail.js.map +1 -0
  49. package/build/cjs/{integrations → dev/integrations}/fetch.js +1 -1
  50. package/build/cjs/dev/integrations/fetch.js.map +1 -0
  51. package/build/cjs/{integrations → dev/integrations}/httpServer.js +5 -4
  52. package/build/cjs/dev/integrations/httpServer.js.map +1 -0
  53. package/build/cjs/dev/integrations/spotlight.js +64 -0
  54. package/build/cjs/dev/integrations/spotlight.js.map +1 -0
  55. package/build/cjs/{nodejs_compat → dev}/integrations/tracing/vercelai.js +6 -6
  56. package/build/cjs/dev/integrations/tracing/vercelai.js.map +1 -0
  57. package/build/cjs/dev/opentelemetry/tracer.js.map +1 -0
  58. package/build/cjs/dev/options.js +50 -0
  59. package/build/cjs/dev/options.js.map +1 -0
  60. package/build/cjs/{pages-plugin.js → dev/pages-plugin.js} +8 -3
  61. package/build/cjs/dev/pages-plugin.js.map +1 -0
  62. package/build/cjs/{request.js → dev/request.js} +23 -12
  63. package/build/cjs/dev/request.js.map +1 -0
  64. package/build/cjs/dev/scope-utils.js.map +1 -0
  65. package/build/cjs/dev/sdk.js +19 -0
  66. package/build/cjs/dev/sdk.js.map +1 -0
  67. package/build/cjs/dev/transport.js.map +1 -0
  68. package/build/cjs/{utils → dev/utils}/instrumentContext.js +8 -13
  69. package/build/cjs/dev/utils/instrumentContext.js.map +1 -0
  70. package/build/cjs/dev/utils/internalSqlQuery.js +25 -0
  71. package/build/cjs/dev/utils/internalSqlQuery.js.map +1 -0
  72. package/build/cjs/dev/utils/internalStorageKey.js +44 -0
  73. package/build/cjs/dev/utils/internalStorageKey.js.map +1 -0
  74. package/build/cjs/dev/utils/invocationScope.js +12 -0
  75. package/build/cjs/dev/utils/invocationScope.js.map +1 -0
  76. package/build/cjs/dev/utils/isBinding.js.map +1 -0
  77. package/build/cjs/dev/utils/isCloudflareClass.js.map +1 -0
  78. package/build/cjs/{utils → dev/utils}/rpcMeta.js +4 -0
  79. package/build/cjs/dev/utils/rpcMeta.js.map +1 -0
  80. package/build/cjs/dev/utils/streaming.js.map +1 -0
  81. package/build/cjs/dev/utils/traceLinks.js.map +1 -0
  82. package/build/cjs/dev/vendor/stacktrace.js.map +1 -0
  83. package/build/cjs/dev/vite/agentClass.js +114 -0
  84. package/build/cjs/dev/vite/agentClass.js.map +1 -0
  85. package/build/cjs/{vite → dev/vite}/autoInstrument.js +17 -4
  86. package/build/cjs/dev/vite/autoInstrument.js.map +1 -0
  87. package/build/cjs/{vite → dev/vite}/index.js +4 -2
  88. package/build/cjs/dev/vite/index.js.map +1 -0
  89. package/build/cjs/dev/vite/instrumentFile.js.map +1 -0
  90. package/build/cjs/dev/vite/moduleShape.js +231 -0
  91. package/build/cjs/dev/vite/moduleShape.js.map +1 -0
  92. package/build/cjs/{vite → dev/vite}/transform.js +6 -1
  93. package/build/cjs/dev/vite/transform.js.map +1 -0
  94. package/build/cjs/dev/vite/workerEntrypoint.js.map +1 -0
  95. package/build/cjs/{vite → dev/vite}/wranglerConfig.js +1 -1
  96. package/build/cjs/dev/vite/wranglerConfig.js.map +1 -0
  97. package/build/cjs/{withSentry.js → dev/withSentry.js} +2 -19
  98. package/build/cjs/dev/withSentry.js.map +1 -0
  99. package/build/cjs/{workflows.js → dev/workflows.js} +9 -4
  100. package/build/cjs/dev/workflows.js.map +1 -0
  101. package/build/cjs/{wrapMethodWithSentry.js → dev/wrapMethodWithSentry.js} +2 -3
  102. package/build/cjs/dev/wrapMethodWithSentry.js.map +1 -0
  103. package/build/cjs/{sdk.js → prod/baseSdk.js} +25 -17
  104. package/build/cjs/prod/baseSdk.js.map +1 -0
  105. package/build/cjs/prod/client.js +122 -0
  106. package/build/cjs/prod/client.js.map +1 -0
  107. package/build/cjs/prod/debug-build.js +6 -0
  108. package/build/cjs/prod/debug-build.js.map +1 -0
  109. package/build/cjs/prod/defineCloudflareOptions.js +11 -0
  110. package/build/cjs/prod/defineCloudflareOptions.js.map +1 -0
  111. package/build/cjs/prod/durableobject.js +234 -0
  112. package/build/cjs/prod/durableobject.js.map +1 -0
  113. package/build/cjs/prod/flush.js +87 -0
  114. package/build/cjs/prod/flush.js.map +1 -0
  115. package/build/cjs/{nodejs_compat → prod}/index.js +34 -35
  116. package/build/cjs/{nodejs_compat → prod}/index.js.map +1 -1
  117. package/build/cjs/prod/instrument.js +52 -0
  118. package/build/cjs/prod/instrument.js.map +1 -0
  119. package/build/cjs/prod/instrumentations/agents/index.js +16 -0
  120. package/build/cjs/prod/instrumentations/agents/index.js.map +1 -0
  121. package/build/cjs/prod/instrumentations/agents/instrumentAgentCallableRpc.js +52 -0
  122. package/build/cjs/prod/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  123. package/build/cjs/prod/instrumentations/agents/instrumentAgentRequestConversation.js +19 -0
  124. package/build/cjs/prod/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  125. package/build/cjs/prod/instrumentations/agents/instrumentChatAgentConversation.js +31 -0
  126. package/build/cjs/prod/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  127. package/build/cjs/prod/instrumentations/agents/types.js +77 -0
  128. package/build/cjs/prod/instrumentations/agents/types.js.map +1 -0
  129. package/build/cjs/prod/instrumentations/instrumentDurableObjectNamespace.js +41 -0
  130. package/build/cjs/prod/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  131. package/build/cjs/prod/instrumentations/instrumentDurableObjectStorage.js +72 -0
  132. package/build/cjs/prod/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  133. package/build/cjs/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js +40 -0
  134. package/build/cjs/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  135. package/build/cjs/prod/instrumentations/instrumentSqlStorage.js +42 -0
  136. package/build/cjs/prod/instrumentations/instrumentSqlStorage.js.map +1 -0
  137. package/build/cjs/prod/instrumentations/instrumentWorkerEntrypoint.js +139 -0
  138. package/build/cjs/prod/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  139. package/build/cjs/prod/instrumentations/worker/instrumentD1.js +161 -0
  140. package/build/cjs/prod/instrumentations/worker/instrumentD1.js.map +1 -0
  141. package/build/cjs/prod/instrumentations/worker/instrumentEmail.js +63 -0
  142. package/build/cjs/prod/instrumentations/worker/instrumentEmail.js.map +1 -0
  143. package/build/cjs/prod/instrumentations/worker/instrumentEnv.js +90 -0
  144. package/build/cjs/prod/instrumentations/worker/instrumentEnv.js.map +1 -0
  145. package/build/cjs/prod/instrumentations/worker/instrumentFetch.js +54 -0
  146. package/build/cjs/prod/instrumentations/worker/instrumentFetch.js.map +1 -0
  147. package/build/cjs/prod/instrumentations/worker/instrumentFetcher.js +24 -0
  148. package/build/cjs/prod/instrumentations/worker/instrumentFetcher.js.map +1 -0
  149. package/build/cjs/prod/instrumentations/worker/instrumentQueue.js +82 -0
  150. package/build/cjs/prod/instrumentations/worker/instrumentQueue.js.map +1 -0
  151. package/build/cjs/prod/instrumentations/worker/instrumentQueueProducer.js +80 -0
  152. package/build/cjs/prod/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  153. package/build/cjs/prod/instrumentations/worker/instrumentR2.js +124 -0
  154. package/build/cjs/prod/instrumentations/worker/instrumentR2.js.map +1 -0
  155. package/build/cjs/prod/instrumentations/worker/instrumentRateLimit.js +29 -0
  156. package/build/cjs/prod/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  157. package/build/cjs/prod/instrumentations/worker/instrumentScheduled.js +78 -0
  158. package/build/cjs/prod/instrumentations/worker/instrumentScheduled.js.map +1 -0
  159. package/build/cjs/prod/instrumentations/worker/instrumentTail.js +60 -0
  160. package/build/cjs/prod/instrumentations/worker/instrumentTail.js.map +1 -0
  161. package/build/cjs/prod/integrations/fetch.js +119 -0
  162. package/build/cjs/prod/integrations/fetch.js.map +1 -0
  163. package/build/cjs/prod/integrations/httpServer.js +36 -0
  164. package/build/cjs/prod/integrations/httpServer.js.map +1 -0
  165. package/build/cjs/prod/integrations/spotlight.js +64 -0
  166. package/build/cjs/prod/integrations/spotlight.js.map +1 -0
  167. package/build/cjs/{integrations → prod/integrations}/tracing/vercelai.js +5 -5
  168. package/build/cjs/prod/integrations/tracing/vercelai.js.map +1 -0
  169. package/build/cjs/prod/opentelemetry/tracer.js +49 -0
  170. package/build/cjs/prod/opentelemetry/tracer.js.map +1 -0
  171. package/build/cjs/{options.js → prod/options.js} +5 -1
  172. package/build/cjs/prod/options.js.map +1 -0
  173. package/build/cjs/prod/pages-plugin.js +24 -0
  174. package/build/cjs/prod/pages-plugin.js.map +1 -0
  175. package/build/cjs/prod/request.js +132 -0
  176. package/build/cjs/prod/request.js.map +1 -0
  177. package/build/cjs/prod/scope-utils.js +22 -0
  178. package/build/cjs/prod/scope-utils.js.map +1 -0
  179. package/build/cjs/prod/sdk.js +19 -0
  180. package/build/cjs/prod/sdk.js.map +1 -0
  181. package/build/cjs/prod/transport.js +75 -0
  182. package/build/cjs/prod/transport.js.map +1 -0
  183. package/build/cjs/prod/utils/instrumentContext.js +63 -0
  184. package/build/cjs/prod/utils/instrumentContext.js.map +1 -0
  185. package/build/cjs/prod/utils/internalSqlQuery.js +25 -0
  186. package/build/cjs/prod/utils/internalSqlQuery.js.map +1 -0
  187. package/build/cjs/prod/utils/internalStorageKey.js +44 -0
  188. package/build/cjs/prod/utils/internalStorageKey.js.map +1 -0
  189. package/build/cjs/prod/utils/invocationScope.js +12 -0
  190. package/build/cjs/prod/utils/invocationScope.js.map +1 -0
  191. package/build/cjs/prod/utils/isBinding.js +37 -0
  192. package/build/cjs/prod/utils/isBinding.js.map +1 -0
  193. package/build/cjs/prod/utils/isCloudflareClass.js +23 -0
  194. package/build/cjs/prod/utils/isCloudflareClass.js.map +1 -0
  195. package/build/cjs/prod/utils/rpcMeta.js +39 -0
  196. package/build/cjs/prod/utils/rpcMeta.js.map +1 -0
  197. package/build/cjs/prod/utils/streaming.js +16 -0
  198. package/build/cjs/prod/utils/streaming.js.map +1 -0
  199. package/build/cjs/prod/utils/traceLinks.js +54 -0
  200. package/build/cjs/prod/utils/traceLinks.js.map +1 -0
  201. package/build/cjs/prod/vendor/stacktrace.js +28 -0
  202. package/build/cjs/prod/vendor/stacktrace.js.map +1 -0
  203. package/build/cjs/prod/vite/agentClass.js +114 -0
  204. package/build/cjs/prod/vite/agentClass.js.map +1 -0
  205. package/build/cjs/prod/vite/autoInstrument.js +94 -0
  206. package/build/cjs/prod/vite/autoInstrument.js.map +1 -0
  207. package/build/cjs/prod/vite/index.js +16 -0
  208. package/build/cjs/prod/vite/index.js.map +1 -0
  209. package/build/cjs/prod/vite/instrumentFile.js +31 -0
  210. package/build/cjs/prod/vite/instrumentFile.js.map +1 -0
  211. package/build/cjs/prod/vite/moduleShape.js +231 -0
  212. package/build/cjs/prod/vite/moduleShape.js.map +1 -0
  213. package/build/cjs/prod/vite/transform.js +149 -0
  214. package/build/cjs/prod/vite/transform.js.map +1 -0
  215. package/build/cjs/prod/vite/workerEntrypoint.js +66 -0
  216. package/build/cjs/prod/vite/workerEntrypoint.js.map +1 -0
  217. package/build/cjs/prod/vite/wranglerConfig.js +54 -0
  218. package/build/cjs/prod/vite/wranglerConfig.js.map +1 -0
  219. package/build/cjs/prod/withSentry.js +29 -0
  220. package/build/cjs/prod/withSentry.js.map +1 -0
  221. package/build/cjs/prod/workflows.js +139 -0
  222. package/build/cjs/prod/workflows.js.map +1 -0
  223. package/build/cjs/prod/wrapMethodWithSentry.js +134 -0
  224. package/build/cjs/prod/wrapMethodWithSentry.js.map +1 -0
  225. package/build/esm/dev/baseSdk.js +79 -0
  226. package/build/esm/dev/baseSdk.js.map +1 -0
  227. package/build/esm/{client.js → dev/client.js} +6 -1
  228. package/build/esm/dev/client.js.map +1 -0
  229. package/build/esm/dev/debug-build.js.map +1 -0
  230. package/build/esm/dev/defineCloudflareOptions.js.map +1 -0
  231. package/build/esm/dev/durableobject.js +229 -0
  232. package/build/esm/dev/durableobject.js.map +1 -0
  233. package/build/esm/dev/flush.js.map +1 -0
  234. package/build/esm/dev/index.js +15 -0
  235. package/build/esm/{index.js.map → dev/index.js.map} +1 -1
  236. package/build/esm/dev/instrument.js.map +1 -0
  237. package/build/esm/dev/instrumentations/agents/index.js +14 -0
  238. package/build/esm/dev/instrumentations/agents/index.js.map +1 -0
  239. package/build/esm/dev/instrumentations/agents/instrumentAgentCallableRpc.js +50 -0
  240. package/build/esm/dev/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  241. package/build/esm/dev/instrumentations/agents/instrumentAgentRequestConversation.js +17 -0
  242. package/build/esm/dev/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  243. package/build/esm/dev/instrumentations/agents/instrumentChatAgentConversation.js +29 -0
  244. package/build/esm/dev/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  245. package/build/esm/dev/instrumentations/agents/types.js +69 -0
  246. package/build/esm/dev/instrumentations/agents/types.js.map +1 -0
  247. package/build/esm/dev/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  248. package/build/esm/{instrumentations → dev/instrumentations}/instrumentDurableObjectStorage.js +7 -1
  249. package/build/esm/dev/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  250. package/build/esm/dev/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  251. package/build/esm/{instrumentations → dev/instrumentations}/instrumentSqlStorage.js +1 -1
  252. package/build/esm/dev/instrumentations/instrumentSqlStorage.js.map +1 -0
  253. package/build/esm/{instrumentations → dev/instrumentations}/instrumentWorkerEntrypoint.js +2 -2
  254. package/build/esm/dev/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  255. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentD1.js +1 -4
  256. package/build/esm/dev/instrumentations/worker/instrumentD1.js.map +1 -0
  257. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentEmail.js +3 -1
  258. package/build/esm/dev/instrumentations/worker/instrumentEmail.js.map +1 -0
  259. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentEnv.js +3 -4
  260. package/build/esm/dev/instrumentations/worker/instrumentEnv.js.map +1 -0
  261. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentFetch.js +10 -4
  262. package/build/esm/dev/instrumentations/worker/instrumentFetch.js.map +1 -0
  263. package/build/esm/dev/instrumentations/worker/instrumentFetcher.js.map +1 -0
  264. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentQueue.js +4 -3
  265. package/build/esm/dev/instrumentations/worker/instrumentQueue.js.map +1 -0
  266. package/build/esm/dev/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  267. package/build/esm/dev/instrumentations/worker/instrumentR2.js.map +1 -0
  268. package/build/esm/dev/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  269. package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentScheduled.js +3 -1
  270. package/build/esm/dev/instrumentations/worker/instrumentScheduled.js.map +1 -0
  271. package/build/esm/dev/instrumentations/worker/instrumentTail.js.map +1 -0
  272. package/build/esm/{integrations → dev/integrations}/fetch.js +1 -1
  273. package/build/esm/dev/integrations/fetch.js.map +1 -0
  274. package/build/esm/{integrations → dev/integrations}/httpServer.js +5 -4
  275. package/build/esm/dev/integrations/httpServer.js.map +1 -0
  276. package/build/esm/dev/integrations/spotlight.js +61 -0
  277. package/build/esm/dev/integrations/spotlight.js.map +1 -0
  278. package/build/esm/{integrations → dev/integrations}/tracing/vercelai.js +5 -5
  279. package/build/esm/dev/integrations/tracing/vercelai.js.map +1 -0
  280. package/build/esm/dev/opentelemetry/tracer.js.map +1 -0
  281. package/build/esm/dev/options.js +48 -0
  282. package/build/esm/dev/options.js.map +1 -0
  283. package/build/esm/dev/package.json +1 -0
  284. package/build/esm/{pages-plugin.js → dev/pages-plugin.js} +8 -3
  285. package/build/esm/dev/pages-plugin.js.map +1 -0
  286. package/build/esm/{request.js → dev/request.js} +24 -14
  287. package/build/esm/dev/request.js.map +1 -0
  288. package/build/esm/dev/scope-utils.js.map +1 -0
  289. package/build/esm/dev/sdk.js +16 -0
  290. package/build/esm/dev/sdk.js.map +1 -0
  291. package/build/esm/dev/transport.js.map +1 -0
  292. package/build/esm/{utils → dev/utils}/instrumentContext.js +8 -13
  293. package/build/esm/dev/utils/instrumentContext.js.map +1 -0
  294. package/build/esm/dev/utils/internalSqlQuery.js +23 -0
  295. package/build/esm/dev/utils/internalSqlQuery.js.map +1 -0
  296. package/build/esm/dev/utils/internalStorageKey.js +41 -0
  297. package/build/esm/dev/utils/internalStorageKey.js.map +1 -0
  298. package/build/esm/dev/utils/invocationScope.js +10 -0
  299. package/build/esm/dev/utils/invocationScope.js.map +1 -0
  300. package/build/esm/dev/utils/isBinding.js.map +1 -0
  301. package/build/esm/dev/utils/isCloudflareClass.js.map +1 -0
  302. package/build/esm/{utils → dev/utils}/rpcMeta.js +4 -1
  303. package/build/esm/dev/utils/rpcMeta.js.map +1 -0
  304. package/build/esm/dev/utils/streaming.js.map +1 -0
  305. package/build/esm/dev/utils/traceLinks.js.map +1 -0
  306. package/build/esm/dev/vendor/stacktrace.js.map +1 -0
  307. package/build/esm/dev/vite/agentClass.js +111 -0
  308. package/build/esm/dev/vite/agentClass.js.map +1 -0
  309. package/build/esm/{vite → dev/vite}/autoInstrument.js +17 -4
  310. package/build/esm/dev/vite/autoInstrument.js.map +1 -0
  311. package/build/esm/{vite → dev/vite}/index.js +4 -2
  312. package/build/esm/dev/vite/index.js.map +1 -0
  313. package/build/esm/dev/vite/instrumentFile.js.map +1 -0
  314. package/build/esm/dev/vite/moduleShape.js +227 -0
  315. package/build/esm/dev/vite/moduleShape.js.map +1 -0
  316. package/build/esm/{vite → dev/vite}/transform.js +6 -1
  317. package/build/esm/dev/vite/transform.js.map +1 -0
  318. package/build/esm/dev/vite/workerEntrypoint.js.map +1 -0
  319. package/build/esm/{vite → dev/vite}/wranglerConfig.js +1 -1
  320. package/build/esm/dev/vite/wranglerConfig.js.map +1 -0
  321. package/build/esm/{withSentry.js → dev/withSentry.js} +1 -18
  322. package/build/esm/dev/withSentry.js.map +1 -0
  323. package/build/esm/{workflows.js → dev/workflows.js} +9 -4
  324. package/build/esm/dev/workflows.js.map +1 -0
  325. package/build/esm/{wrapMethodWithSentry.js → dev/wrapMethodWithSentry.js} +3 -4
  326. package/build/esm/dev/wrapMethodWithSentry.js.map +1 -0
  327. package/build/esm/{sdk.js → prod/baseSdk.js} +24 -17
  328. package/build/esm/prod/baseSdk.js.map +1 -0
  329. package/build/esm/prod/client.js +120 -0
  330. package/build/esm/prod/client.js.map +1 -0
  331. package/build/esm/prod/debug-build.js +4 -0
  332. package/build/esm/prod/debug-build.js.map +1 -0
  333. package/build/esm/prod/defineCloudflareOptions.js +9 -0
  334. package/build/esm/prod/defineCloudflareOptions.js.map +1 -0
  335. package/build/esm/prod/durableobject.js +229 -0
  336. package/build/esm/prod/durableobject.js.map +1 -0
  337. package/build/esm/prod/flush.js +83 -0
  338. package/build/esm/prod/flush.js.map +1 -0
  339. package/build/esm/prod/index.js +15 -0
  340. package/build/esm/{nodejs_compat → prod}/index.js.map +1 -1
  341. package/build/esm/prod/instrument.js +48 -0
  342. package/build/esm/prod/instrument.js.map +1 -0
  343. package/build/esm/prod/instrumentations/agents/index.js +14 -0
  344. package/build/esm/prod/instrumentations/agents/index.js.map +1 -0
  345. package/build/esm/prod/instrumentations/agents/instrumentAgentCallableRpc.js +50 -0
  346. package/build/esm/prod/instrumentations/agents/instrumentAgentCallableRpc.js.map +1 -0
  347. package/build/esm/prod/instrumentations/agents/instrumentAgentRequestConversation.js +17 -0
  348. package/build/esm/prod/instrumentations/agents/instrumentAgentRequestConversation.js.map +1 -0
  349. package/build/esm/prod/instrumentations/agents/instrumentChatAgentConversation.js +29 -0
  350. package/build/esm/prod/instrumentations/agents/instrumentChatAgentConversation.js.map +1 -0
  351. package/build/esm/prod/instrumentations/agents/types.js +69 -0
  352. package/build/esm/prod/instrumentations/agents/types.js.map +1 -0
  353. package/build/esm/prod/instrumentations/instrumentDurableObjectNamespace.js +38 -0
  354. package/build/esm/prod/instrumentations/instrumentDurableObjectNamespace.js.map +1 -0
  355. package/build/esm/prod/instrumentations/instrumentDurableObjectStorage.js +70 -0
  356. package/build/esm/prod/instrumentations/instrumentDurableObjectStorage.js.map +1 -0
  357. package/build/esm/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js +38 -0
  358. package/build/esm/prod/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +1 -0
  359. package/build/esm/prod/instrumentations/instrumentSqlStorage.js +40 -0
  360. package/build/esm/prod/instrumentations/instrumentSqlStorage.js.map +1 -0
  361. package/build/esm/prod/instrumentations/instrumentWorkerEntrypoint.js +137 -0
  362. package/build/esm/prod/instrumentations/instrumentWorkerEntrypoint.js.map +1 -0
  363. package/build/esm/prod/instrumentations/worker/instrumentD1.js +159 -0
  364. package/build/esm/prod/instrumentations/worker/instrumentD1.js.map +1 -0
  365. package/build/esm/prod/instrumentations/worker/instrumentEmail.js +61 -0
  366. package/build/esm/prod/instrumentations/worker/instrumentEmail.js.map +1 -0
  367. package/build/esm/prod/instrumentations/worker/instrumentEnv.js +88 -0
  368. package/build/esm/prod/instrumentations/worker/instrumentEnv.js.map +1 -0
  369. package/build/esm/prod/instrumentations/worker/instrumentFetch.js +51 -0
  370. package/build/esm/prod/instrumentations/worker/instrumentFetch.js.map +1 -0
  371. package/build/esm/prod/instrumentations/worker/instrumentFetcher.js +22 -0
  372. package/build/esm/prod/instrumentations/worker/instrumentFetcher.js.map +1 -0
  373. package/build/esm/prod/instrumentations/worker/instrumentQueue.js +79 -0
  374. package/build/esm/prod/instrumentations/worker/instrumentQueue.js.map +1 -0
  375. package/build/esm/prod/instrumentations/worker/instrumentQueueProducer.js +78 -0
  376. package/build/esm/prod/instrumentations/worker/instrumentQueueProducer.js.map +1 -0
  377. package/build/esm/prod/instrumentations/worker/instrumentR2.js +122 -0
  378. package/build/esm/prod/instrumentations/worker/instrumentR2.js.map +1 -0
  379. package/build/esm/prod/instrumentations/worker/instrumentRateLimit.js +27 -0
  380. package/build/esm/prod/instrumentations/worker/instrumentRateLimit.js.map +1 -0
  381. package/build/esm/prod/instrumentations/worker/instrumentScheduled.js +75 -0
  382. package/build/esm/prod/instrumentations/worker/instrumentScheduled.js.map +1 -0
  383. package/build/esm/prod/instrumentations/worker/instrumentTail.js +57 -0
  384. package/build/esm/prod/instrumentations/worker/instrumentTail.js.map +1 -0
  385. package/build/esm/prod/integrations/fetch.js +117 -0
  386. package/build/esm/prod/integrations/fetch.js.map +1 -0
  387. package/build/esm/prod/integrations/httpServer.js +33 -0
  388. package/build/esm/prod/integrations/httpServer.js.map +1 -0
  389. package/build/esm/prod/integrations/spotlight.js +61 -0
  390. package/build/esm/prod/integrations/spotlight.js.map +1 -0
  391. package/build/esm/prod/integrations/tracing/vercelai.js +16 -0
  392. package/build/esm/prod/integrations/tracing/vercelai.js.map +1 -0
  393. package/build/esm/prod/opentelemetry/tracer.js +47 -0
  394. package/build/esm/prod/opentelemetry/tracer.js.map +1 -0
  395. package/build/esm/{options.js → prod/options.js} +5 -1
  396. package/build/esm/prod/options.js.map +1 -0
  397. package/build/esm/prod/package.json +1 -0
  398. package/build/esm/prod/pages-plugin.js +22 -0
  399. package/build/esm/prod/pages-plugin.js.map +1 -0
  400. package/build/esm/prod/request.js +129 -0
  401. package/build/esm/prod/request.js.map +1 -0
  402. package/build/esm/prod/scope-utils.js +18 -0
  403. package/build/esm/prod/scope-utils.js.map +1 -0
  404. package/build/esm/prod/sdk.js +16 -0
  405. package/build/esm/prod/sdk.js.map +1 -0
  406. package/build/esm/prod/transport.js +72 -0
  407. package/build/esm/prod/transport.js.map +1 -0
  408. package/build/esm/prod/utils/instrumentContext.js +61 -0
  409. package/build/esm/prod/utils/instrumentContext.js.map +1 -0
  410. package/build/esm/prod/utils/internalSqlQuery.js +23 -0
  411. package/build/esm/prod/utils/internalSqlQuery.js.map +1 -0
  412. package/build/esm/prod/utils/internalStorageKey.js +41 -0
  413. package/build/esm/prod/utils/internalStorageKey.js.map +1 -0
  414. package/build/esm/prod/utils/invocationScope.js +10 -0
  415. package/build/esm/prod/utils/invocationScope.js.map +1 -0
  416. package/build/esm/prod/utils/isBinding.js +29 -0
  417. package/build/esm/prod/utils/isBinding.js.map +1 -0
  418. package/build/esm/prod/utils/isCloudflareClass.js +21 -0
  419. package/build/esm/prod/utils/isCloudflareClass.js.map +1 -0
  420. package/build/esm/prod/utils/rpcMeta.js +35 -0
  421. package/build/esm/prod/utils/rpcMeta.js.map +1 -0
  422. package/build/esm/prod/utils/streaming.js +14 -0
  423. package/build/esm/prod/utils/streaming.js.map +1 -0
  424. package/build/esm/prod/utils/traceLinks.js +49 -0
  425. package/build/esm/prod/utils/traceLinks.js.map +1 -0
  426. package/build/esm/prod/vendor/stacktrace.js +25 -0
  427. package/build/esm/prod/vendor/stacktrace.js.map +1 -0
  428. package/build/esm/prod/vite/agentClass.js +111 -0
  429. package/build/esm/prod/vite/agentClass.js.map +1 -0
  430. package/build/esm/prod/vite/autoInstrument.js +92 -0
  431. package/build/esm/prod/vite/autoInstrument.js.map +1 -0
  432. package/build/esm/prod/vite/index.js +14 -0
  433. package/build/esm/prod/vite/index.js.map +1 -0
  434. package/build/esm/prod/vite/instrumentFile.js +27 -0
  435. package/build/esm/prod/vite/instrumentFile.js.map +1 -0
  436. package/build/esm/prod/vite/moduleShape.js +227 -0
  437. package/build/esm/prod/vite/moduleShape.js.map +1 -0
  438. package/build/esm/prod/vite/transform.js +147 -0
  439. package/build/esm/prod/vite/transform.js.map +1 -0
  440. package/build/esm/prod/vite/workerEntrypoint.js +64 -0
  441. package/build/esm/prod/vite/workerEntrypoint.js.map +1 -0
  442. package/build/esm/prod/vite/wranglerConfig.js +52 -0
  443. package/build/esm/prod/vite/wranglerConfig.js.map +1 -0
  444. package/build/esm/prod/withSentry.js +27 -0
  445. package/build/esm/prod/withSentry.js.map +1 -0
  446. package/build/esm/prod/workflows.js +136 -0
  447. package/build/esm/prod/workflows.js.map +1 -0
  448. package/build/esm/prod/wrapMethodWithSentry.js +132 -0
  449. package/build/esm/prod/wrapMethodWithSentry.js.map +1 -0
  450. package/build/types/baseSdk.d.ts +28 -0
  451. package/build/types/baseSdk.d.ts.map +1 -0
  452. package/build/types/client.d.ts +43 -33
  453. package/build/types/client.d.ts.map +1 -1
  454. package/build/types/defineCloudflareOptions.d.ts +2 -2
  455. package/build/types/defineCloudflareOptions.d.ts.map +1 -1
  456. package/build/types/durableobject.d.ts +93 -2
  457. package/build/types/durableobject.d.ts.map +1 -1
  458. package/build/types/flush.d.ts +1 -1
  459. package/build/types/flush.d.ts.map +1 -1
  460. package/build/types/index.d.ts +5 -6
  461. package/build/types/index.d.ts.map +1 -1
  462. package/build/types/instrumentations/agents/index.d.ts +25 -0
  463. package/build/types/instrumentations/agents/index.d.ts.map +1 -0
  464. package/build/types/instrumentations/agents/instrumentAgentCallableRpc.d.ts +14 -0
  465. package/build/types/instrumentations/agents/instrumentAgentCallableRpc.d.ts.map +1 -0
  466. package/build/types/instrumentations/agents/instrumentAgentRequestConversation.d.ts +16 -0
  467. package/build/types/instrumentations/agents/instrumentAgentRequestConversation.d.ts.map +1 -0
  468. package/build/types/instrumentations/agents/instrumentChatAgentConversation.d.ts +23 -0
  469. package/build/types/instrumentations/agents/instrumentChatAgentConversation.d.ts.map +1 -0
  470. package/build/types/instrumentations/agents/types.d.ts +94 -0
  471. package/build/types/instrumentations/agents/types.d.ts.map +1 -0
  472. package/build/types/instrumentations/instrumentDurableObjectStorage.d.ts.map +1 -1
  473. package/build/types/instrumentations/instrumentSqlStorage.d.ts.map +1 -1
  474. package/build/types/instrumentations/instrumentWorkerEntrypoint.d.ts +2 -1
  475. package/build/types/instrumentations/instrumentWorkerEntrypoint.d.ts.map +1 -1
  476. package/build/types/instrumentations/worker/instrumentD1.d.ts +0 -16
  477. package/build/types/instrumentations/worker/instrumentD1.d.ts.map +1 -1
  478. package/build/types/instrumentations/worker/instrumentEmail.d.ts +2 -2
  479. package/build/types/instrumentations/worker/instrumentEmail.d.ts.map +1 -1
  480. package/build/types/instrumentations/worker/instrumentEnv.d.ts.map +1 -1
  481. package/build/types/instrumentations/worker/instrumentFetch.d.ts +2 -2
  482. package/build/types/instrumentations/worker/instrumentFetch.d.ts.map +1 -1
  483. package/build/types/instrumentations/worker/instrumentQueue.d.ts +2 -2
  484. package/build/types/instrumentations/worker/instrumentQueue.d.ts.map +1 -1
  485. package/build/types/instrumentations/worker/instrumentScheduled.d.ts +2 -2
  486. package/build/types/instrumentations/worker/instrumentScheduled.d.ts.map +1 -1
  487. package/build/types/instrumentations/worker/instrumentTail.d.ts +2 -2
  488. package/build/types/instrumentations/worker/instrumentTail.d.ts.map +1 -1
  489. package/build/types/integrations/httpServer.d.ts.map +1 -1
  490. package/build/types/integrations/spotlight.d.ts +22 -0
  491. package/build/types/integrations/spotlight.d.ts.map +1 -0
  492. package/build/types/integrations/tracing/vercelai.d.ts +2 -9
  493. package/build/types/integrations/tracing/vercelai.d.ts.map +1 -1
  494. package/build/types/options.d.ts.map +1 -1
  495. package/build/types/pages-plugin.d.ts +1 -1
  496. package/build/types/pages-plugin.d.ts.map +1 -1
  497. package/build/types/request.d.ts +17 -2
  498. package/build/types/request.d.ts.map +1 -1
  499. package/build/types/sdk.d.ts +8 -3
  500. package/build/types/sdk.d.ts.map +1 -1
  501. package/build/types/transport.d.ts.map +1 -1
  502. package/build/types/types.d.ts +85 -0
  503. package/build/types/types.d.ts.map +1 -0
  504. package/build/types/utils/instrumentContext.d.ts.map +1 -1
  505. package/build/types/utils/internalSqlQuery.d.ts +4 -2
  506. package/build/types/utils/internalSqlQuery.d.ts.map +1 -1
  507. package/build/types/utils/internalStorageKey.d.ts +22 -0
  508. package/build/types/utils/internalStorageKey.d.ts.map +1 -0
  509. package/build/types/utils/invocationScope.d.ts +24 -0
  510. package/build/types/utils/invocationScope.d.ts.map +1 -0
  511. package/build/types/utils/isCloudflareClass.d.ts +1 -1
  512. package/build/types/utils/isCloudflareClass.d.ts.map +1 -1
  513. package/build/types/utils/rpcMeta.d.ts +8 -0
  514. package/build/types/utils/rpcMeta.d.ts.map +1 -1
  515. package/build/types/vite/agentClass.d.ts +41 -0
  516. package/build/types/vite/agentClass.d.ts.map +1 -0
  517. package/build/types/vite/autoInstrument.d.ts +7 -6
  518. package/build/types/vite/autoInstrument.d.ts.map +1 -1
  519. package/build/types/vite/index.d.ts +31 -45
  520. package/build/types/vite/index.d.ts.map +1 -1
  521. package/build/types/vite/moduleShape.d.ts +52 -0
  522. package/build/types/vite/moduleShape.d.ts.map +1 -0
  523. package/build/types/vite/transform.d.ts +6 -1
  524. package/build/types/vite/transform.d.ts.map +1 -1
  525. package/build/types/withSentry.d.ts +2 -2
  526. package/build/types/withSentry.d.ts.map +1 -1
  527. package/build/types/workflows.d.ts +5 -4
  528. package/build/types/workflows.d.ts.map +1 -1
  529. package/build/types/wrapMethodWithSentry.d.ts +1 -1
  530. package/build/types/wrapMethodWithSentry.d.ts.map +1 -1
  531. package/package.json +28 -51
  532. package/build/cjs/async.js +0 -63
  533. package/build/cjs/async.js.map +0 -1
  534. package/build/cjs/client.js.map +0 -1
  535. package/build/cjs/debug-build.js.map +0 -1
  536. package/build/cjs/defineCloudflareOptions.js.map +0 -1
  537. package/build/cjs/durableobject.js +0 -120
  538. package/build/cjs/durableobject.js.map +0 -1
  539. package/build/cjs/flush.js.map +0 -1
  540. package/build/cjs/instrument.js.map +0 -1
  541. package/build/cjs/instrumentations/instrumentDurableObjectNamespace.js.map +0 -1
  542. package/build/cjs/instrumentations/instrumentDurableObjectStorage.js.map +0 -1
  543. package/build/cjs/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +0 -1
  544. package/build/cjs/instrumentations/instrumentSqlStorage.js.map +0 -1
  545. package/build/cjs/instrumentations/instrumentWorkerEntrypoint.js.map +0 -1
  546. package/build/cjs/instrumentations/worker/instrumentD1.js.map +0 -1
  547. package/build/cjs/instrumentations/worker/instrumentEmail.js.map +0 -1
  548. package/build/cjs/instrumentations/worker/instrumentEnv.js.map +0 -1
  549. package/build/cjs/instrumentations/worker/instrumentFetch.js.map +0 -1
  550. package/build/cjs/instrumentations/worker/instrumentFetcher.js.map +0 -1
  551. package/build/cjs/instrumentations/worker/instrumentQueue.js.map +0 -1
  552. package/build/cjs/instrumentations/worker/instrumentQueueProducer.js.map +0 -1
  553. package/build/cjs/instrumentations/worker/instrumentR2.js.map +0 -1
  554. package/build/cjs/instrumentations/worker/instrumentRateLimit.js.map +0 -1
  555. package/build/cjs/instrumentations/worker/instrumentScheduled.js.map +0 -1
  556. package/build/cjs/instrumentations/worker/instrumentTail.js.map +0 -1
  557. package/build/cjs/integrations/fetch.js.map +0 -1
  558. package/build/cjs/integrations/hono.js +0 -52
  559. package/build/cjs/integrations/hono.js.map +0 -1
  560. package/build/cjs/integrations/httpServer.js.map +0 -1
  561. package/build/cjs/integrations/tracing/vercelai.js.map +0 -1
  562. package/build/cjs/nodejs_compat/integrations/tracing/vercelai.js.map +0 -1
  563. package/build/cjs/opentelemetry/tracer.js.map +0 -1
  564. package/build/cjs/options.js.map +0 -1
  565. package/build/cjs/pages-plugin.js.map +0 -1
  566. package/build/cjs/request.js.map +0 -1
  567. package/build/cjs/scope-utils.js.map +0 -1
  568. package/build/cjs/sdk.js.map +0 -1
  569. package/build/cjs/transport.js.map +0 -1
  570. package/build/cjs/utils/instrumentContext.js.map +0 -1
  571. package/build/cjs/utils/internalSqlQuery.js +0 -19
  572. package/build/cjs/utils/internalSqlQuery.js.map +0 -1
  573. package/build/cjs/utils/isBinding.js.map +0 -1
  574. package/build/cjs/utils/isCloudflareClass.js.map +0 -1
  575. package/build/cjs/utils/rpcMeta.js.map +0 -1
  576. package/build/cjs/utils/rpcOptions.js +0 -26
  577. package/build/cjs/utils/rpcOptions.js.map +0 -1
  578. package/build/cjs/utils/streaming.js.map +0 -1
  579. package/build/cjs/utils/traceLinks.js.map +0 -1
  580. package/build/cjs/vendor/stacktrace.js.map +0 -1
  581. package/build/cjs/vite/autoInstrument.js.map +0 -1
  582. package/build/cjs/vite/index.js.map +0 -1
  583. package/build/cjs/vite/instrumentFile.js.map +0 -1
  584. package/build/cjs/vite/transform.js.map +0 -1
  585. package/build/cjs/vite/workerEntrypoint.js.map +0 -1
  586. package/build/cjs/vite/wranglerConfig.js.map +0 -1
  587. package/build/cjs/withSentry.js.map +0 -1
  588. package/build/cjs/workflows.js.map +0 -1
  589. package/build/cjs/wrapMethodWithSentry.js.map +0 -1
  590. package/build/esm/async.js +0 -61
  591. package/build/esm/async.js.map +0 -1
  592. package/build/esm/client.js.map +0 -1
  593. package/build/esm/debug-build.js.map +0 -1
  594. package/build/esm/defineCloudflareOptions.js.map +0 -1
  595. package/build/esm/durableobject.js +0 -118
  596. package/build/esm/durableobject.js.map +0 -1
  597. package/build/esm/flush.js.map +0 -1
  598. package/build/esm/index.js +0 -16
  599. package/build/esm/instrument.js.map +0 -1
  600. package/build/esm/instrumentations/instrumentDurableObjectNamespace.js.map +0 -1
  601. package/build/esm/instrumentations/instrumentDurableObjectStorage.js.map +0 -1
  602. package/build/esm/instrumentations/instrumentDurableObjectSyncKvStorage.js.map +0 -1
  603. package/build/esm/instrumentations/instrumentSqlStorage.js.map +0 -1
  604. package/build/esm/instrumentations/instrumentWorkerEntrypoint.js.map +0 -1
  605. package/build/esm/instrumentations/worker/instrumentD1.js.map +0 -1
  606. package/build/esm/instrumentations/worker/instrumentEmail.js.map +0 -1
  607. package/build/esm/instrumentations/worker/instrumentEnv.js.map +0 -1
  608. package/build/esm/instrumentations/worker/instrumentFetch.js.map +0 -1
  609. package/build/esm/instrumentations/worker/instrumentFetcher.js.map +0 -1
  610. package/build/esm/instrumentations/worker/instrumentQueue.js.map +0 -1
  611. package/build/esm/instrumentations/worker/instrumentQueueProducer.js.map +0 -1
  612. package/build/esm/instrumentations/worker/instrumentR2.js.map +0 -1
  613. package/build/esm/instrumentations/worker/instrumentRateLimit.js.map +0 -1
  614. package/build/esm/instrumentations/worker/instrumentScheduled.js.map +0 -1
  615. package/build/esm/instrumentations/worker/instrumentTail.js.map +0 -1
  616. package/build/esm/integrations/fetch.js.map +0 -1
  617. package/build/esm/integrations/hono.js +0 -49
  618. package/build/esm/integrations/hono.js.map +0 -1
  619. package/build/esm/integrations/httpServer.js.map +0 -1
  620. package/build/esm/integrations/tracing/vercelai.js.map +0 -1
  621. package/build/esm/nodejs_compat/index.js +0 -17
  622. package/build/esm/nodejs_compat/integrations/tracing/vercelai.js +0 -16
  623. package/build/esm/nodejs_compat/integrations/tracing/vercelai.js.map +0 -1
  624. package/build/esm/opentelemetry/tracer.js.map +0 -1
  625. package/build/esm/options.js.map +0 -1
  626. package/build/esm/package.json +0 -1
  627. package/build/esm/pages-plugin.js.map +0 -1
  628. package/build/esm/request.js.map +0 -1
  629. package/build/esm/scope-utils.js.map +0 -1
  630. package/build/esm/sdk.js.map +0 -1
  631. package/build/esm/transport.js.map +0 -1
  632. package/build/esm/utils/instrumentContext.js.map +0 -1
  633. package/build/esm/utils/internalSqlQuery.js +0 -17
  634. package/build/esm/utils/internalSqlQuery.js.map +0 -1
  635. package/build/esm/utils/isBinding.js.map +0 -1
  636. package/build/esm/utils/isCloudflareClass.js.map +0 -1
  637. package/build/esm/utils/rpcMeta.js.map +0 -1
  638. package/build/esm/utils/rpcOptions.js +0 -24
  639. package/build/esm/utils/rpcOptions.js.map +0 -1
  640. package/build/esm/utils/streaming.js.map +0 -1
  641. package/build/esm/utils/traceLinks.js.map +0 -1
  642. package/build/esm/vendor/stacktrace.js.map +0 -1
  643. package/build/esm/vite/autoInstrument.js.map +0 -1
  644. package/build/esm/vite/index.js.map +0 -1
  645. package/build/esm/vite/instrumentFile.js.map +0 -1
  646. package/build/esm/vite/transform.js.map +0 -1
  647. package/build/esm/vite/workerEntrypoint.js.map +0 -1
  648. package/build/esm/vite/wranglerConfig.js.map +0 -1
  649. package/build/esm/withSentry.js.map +0 -1
  650. package/build/esm/workflows.js.map +0 -1
  651. package/build/esm/wrapMethodWithSentry.js.map +0 -1
  652. package/build/types/async.d.ts +0 -11
  653. package/build/types/async.d.ts.map +0 -1
  654. package/build/types/integrations/hono.d.ts +0 -42
  655. package/build/types/integrations/hono.d.ts.map +0 -1
  656. package/build/types/nodejs_compat/index.d.ts +0 -4
  657. package/build/types/nodejs_compat/index.d.ts.map +0 -1
  658. package/build/types/nodejs_compat/integrations/tracing/vercelai.d.ts +0 -37
  659. package/build/types/nodejs_compat/integrations/tracing/vercelai.d.ts.map +0 -1
  660. package/build/types/utils/rpcOptions.d.ts +0 -13
  661. package/build/types/utils/rpcOptions.d.ts.map +0 -1
  662. package/build/types-ts3.8/async.d.ts +0 -11
  663. package/build/types-ts3.8/client.d.ts +0 -166
  664. package/build/types-ts3.8/debug-build.d.ts +0 -7
  665. package/build/types-ts3.8/defineCloudflareOptions.d.ts +0 -38
  666. package/build/types-ts3.8/durableobject.d.ts +0 -37
  667. package/build/types-ts3.8/executionContext.d.ts +0 -13
  668. package/build/types-ts3.8/flush.d.ts +0 -47
  669. package/build/types-ts3.8/index.d.ts +0 -18
  670. package/build/types-ts3.8/instrument.d.ts +0 -20
  671. package/build/types-ts3.8/instrumentations/instrumentDurableObjectNamespace.d.ts +0 -13
  672. package/build/types-ts3.8/instrumentations/instrumentDurableObjectStorage.d.ts +0 -19
  673. package/build/types-ts3.8/instrumentations/instrumentDurableObjectSyncKvStorage.d.ts +0 -3
  674. package/build/types-ts3.8/instrumentations/instrumentSqlStorage.d.ts +0 -9
  675. package/build/types-ts3.8/instrumentations/instrumentWorkerEntrypoint.d.ts +0 -42
  676. package/build/types-ts3.8/instrumentations/worker/instrumentD1.d.ts +0 -19
  677. package/build/types-ts3.8/instrumentations/worker/instrumentEmail.d.ts +0 -8
  678. package/build/types-ts3.8/instrumentations/worker/instrumentEnv.d.ts +0 -18
  679. package/build/types-ts3.8/instrumentations/worker/instrumentFetch.d.ts +0 -12
  680. package/build/types-ts3.8/instrumentations/worker/instrumentFetcher.d.ts +0 -10
  681. package/build/types-ts3.8/instrumentations/worker/instrumentQueue.d.ts +0 -12
  682. package/build/types-ts3.8/instrumentations/worker/instrumentQueueProducer.d.ts +0 -10
  683. package/build/types-ts3.8/instrumentations/worker/instrumentR2.d.ts +0 -9
  684. package/build/types-ts3.8/instrumentations/worker/instrumentRateLimit.d.ts +0 -6
  685. package/build/types-ts3.8/instrumentations/worker/instrumentScheduled.d.ts +0 -12
  686. package/build/types-ts3.8/instrumentations/worker/instrumentTail.d.ts +0 -12
  687. package/build/types-ts3.8/integrations/fetch.d.ts +0 -19
  688. package/build/types-ts3.8/integrations/hono.d.ts +0 -42
  689. package/build/types-ts3.8/integrations/httpServer.d.ts +0 -63
  690. package/build/types-ts3.8/integrations/tracing/vercelai.d.ts +0 -47
  691. package/build/types-ts3.8/nodejs_compat/index.d.ts +0 -4
  692. package/build/types-ts3.8/nodejs_compat/integrations/tracing/vercelai.d.ts +0 -37
  693. package/build/types-ts3.8/opentelemetry/tracer.d.ts +0 -6
  694. package/build/types-ts3.8/options.d.ts +0 -17
  695. package/build/types-ts3.8/pages-plugin.d.ts +0 -34
  696. package/build/types-ts3.8/request.d.ts +0 -25
  697. package/build/types-ts3.8/scope-utils.d.ts +0 -15
  698. package/build/types-ts3.8/sdk.d.ts +0 -10
  699. package/build/types-ts3.8/transport.d.ts +0 -34
  700. package/build/types-ts3.8/utils/instrumentContext.d.ts +0 -16
  701. package/build/types-ts3.8/utils/internalSqlQuery.d.ts +0 -18
  702. package/build/types-ts3.8/utils/isBinding.d.ts +0 -77
  703. package/build/types-ts3.8/utils/isCloudflareClass.d.ts +0 -30
  704. package/build/types-ts3.8/utils/rpcMeta.d.ts +0 -15
  705. package/build/types-ts3.8/utils/rpcOptions.d.ts +0 -13
  706. package/build/types-ts3.8/utils/streaming.d.ts +0 -17
  707. package/build/types-ts3.8/utils/traceLinks.d.ts +0 -28
  708. package/build/types-ts3.8/vendor/stacktrace.d.ts +0 -11
  709. package/build/types-ts3.8/vite/autoInstrument.d.ts +0 -21
  710. package/build/types-ts3.8/vite/index.d.ts +0 -88
  711. package/build/types-ts3.8/vite/instrumentFile.d.ts +0 -22
  712. package/build/types-ts3.8/vite/transform.d.ts +0 -60
  713. package/build/types-ts3.8/vite/workerEntrypoint.d.ts +0 -12
  714. package/build/types-ts3.8/vite/wranglerConfig.d.ts +0 -43
  715. package/build/types-ts3.8/withSentry.d.ts +0 -16
  716. package/build/types-ts3.8/workflows.d.ts +0 -25
  717. package/build/types-ts3.8/wrapMethodWithSentry.d.ts +0 -43
  718. /package/build/cjs/{debug-build.js → dev/debug-build.js} +0 -0
  719. /package/build/cjs/{defineCloudflareOptions.js → dev/defineCloudflareOptions.js} +0 -0
  720. /package/build/cjs/{flush.js → dev/flush.js} +0 -0
  721. /package/build/cjs/{instrument.js → dev/instrument.js} +0 -0
  722. /package/build/cjs/{instrumentations → dev/instrumentations}/instrumentDurableObjectNamespace.js +0 -0
  723. /package/build/cjs/{instrumentations → dev/instrumentations}/instrumentDurableObjectSyncKvStorage.js +0 -0
  724. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentFetcher.js +0 -0
  725. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentQueueProducer.js +0 -0
  726. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentR2.js +0 -0
  727. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentRateLimit.js +0 -0
  728. /package/build/cjs/{instrumentations → dev/instrumentations}/worker/instrumentTail.js +0 -0
  729. /package/build/cjs/{opentelemetry → dev/opentelemetry}/tracer.js +0 -0
  730. /package/build/cjs/{scope-utils.js → dev/scope-utils.js} +0 -0
  731. /package/build/cjs/{transport.js → dev/transport.js} +0 -0
  732. /package/build/cjs/{utils → dev/utils}/isBinding.js +0 -0
  733. /package/build/cjs/{utils → dev/utils}/isCloudflareClass.js +0 -0
  734. /package/build/cjs/{utils → dev/utils}/streaming.js +0 -0
  735. /package/build/cjs/{utils → dev/utils}/traceLinks.js +0 -0
  736. /package/build/cjs/{vendor → dev/vendor}/stacktrace.js +0 -0
  737. /package/build/cjs/{vite → dev/vite}/instrumentFile.js +0 -0
  738. /package/build/cjs/{vite → dev/vite}/workerEntrypoint.js +0 -0
  739. /package/build/esm/{debug-build.js → dev/debug-build.js} +0 -0
  740. /package/build/esm/{defineCloudflareOptions.js → dev/defineCloudflareOptions.js} +0 -0
  741. /package/build/esm/{flush.js → dev/flush.js} +0 -0
  742. /package/build/esm/{instrument.js → dev/instrument.js} +0 -0
  743. /package/build/esm/{instrumentations → dev/instrumentations}/instrumentDurableObjectNamespace.js +0 -0
  744. /package/build/esm/{instrumentations → dev/instrumentations}/instrumentDurableObjectSyncKvStorage.js +0 -0
  745. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentFetcher.js +0 -0
  746. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentQueueProducer.js +0 -0
  747. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentR2.js +0 -0
  748. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentRateLimit.js +0 -0
  749. /package/build/esm/{instrumentations → dev/instrumentations}/worker/instrumentTail.js +0 -0
  750. /package/build/esm/{opentelemetry → dev/opentelemetry}/tracer.js +0 -0
  751. /package/build/esm/{scope-utils.js → dev/scope-utils.js} +0 -0
  752. /package/build/esm/{transport.js → dev/transport.js} +0 -0
  753. /package/build/esm/{utils → dev/utils}/isBinding.js +0 -0
  754. /package/build/esm/{utils → dev/utils}/isCloudflareClass.js +0 -0
  755. /package/build/esm/{utils → dev/utils}/streaming.js +0 -0
  756. /package/build/esm/{utils → dev/utils}/traceLinks.js +0 -0
  757. /package/build/esm/{vendor → dev/vendor}/stacktrace.js +0 -0
  758. /package/build/esm/{vite → dev/vite}/instrumentFile.js +0 -0
  759. /package/build/esm/{vite → dev/vite}/workerEntrypoint.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerEntrypoint.js","sources":["../../../../src/vite/workerEntrypoint.ts"],"sourcesContent":["import type { BaseNode, ProgramBody } from './transform';\n\n// ---------------------------------------------------------------------------\n// Minimal ESTree node shapes for structural WorkerEntrypoint detection.\n// ---------------------------------------------------------------------------\n\ninterface IdentifierNode extends BaseNode {\n name: string;\n}\n\ninterface MemberExpressionNode extends BaseNode {\n object?: { type: string; name?: string };\n property?: { type: string; name?: string };\n}\n\ninterface ClassDeclarationNode extends BaseNode {\n id?: IdentifierNode | null;\n superClass?: BaseNode | null;\n}\n\ninterface ExportNamedDeclNode extends BaseNode {\n declaration?: BaseNode | null;\n}\n\ninterface ImportSpecifierNode {\n type: string;\n imported?: { type: string; name?: string };\n local?: { type: string; name?: string };\n}\n\ninterface ImportDeclarationNode extends BaseNode {\n source?: { value?: unknown };\n specifiers?: ImportSpecifierNode[];\n}\n\ninterface WorkerEntrypointBases {\n /** Local identifiers bound to the named `WorkerEntrypoint` import. */\n named: Set<string>;\n /** Local identifiers bound to a `* as ns` import of `cloudflare:workers`. */\n namespaces: Set<string>;\n}\n\n/**\n * Find top-level classes that (transitively, within this module) extend\n * `WorkerEntrypoint` imported from `cloudflare:workers`. esbuild has already\n * stripped TypeScript by transform time, so a superclass is a plain identifier\n * (`extends WorkerEntrypoint`) or member access (`extends cf.WorkerEntrypoint`).\n *\n * Only same-file base chains are resolvable here; a base class imported from\n * another module is invisible and relies on the config self-binding fallback.\n */\nexport function detectWorkerEntrypointClasses(ast: ProgramBody): Set<string> {\n const bases = collectWorkerEntrypointImports(ast);\n if (bases.named.size === 0 && bases.namespaces.size === 0) {\n return new Set<string>();\n }\n\n // Every top-level class, including the `export class Foo {}` form (where the\n // class is nested inside an ExportNamedDeclaration) so directly-exported\n // entrypoints are seen too.\n const classes = new Map<string, ClassDeclarationNode>();\n for (const node of ast.body) {\n const classNode = asClassDeclaration(node);\n if (classNode?.id?.name) classes.set(classNode.id.name, classNode);\n }\n\n const entrypoints = new Set<string>();\n // Iterate to a fixed point so an indirect chain (A extends B extends WE) is\n // fully resolved regardless of declaration order.\n let changed = true;\n while (changed) {\n changed = false;\n for (const [name, classNode] of classes) {\n if (entrypoints.has(name)) continue;\n if (extendsWorkerEntrypoint(classNode.superClass, bases, entrypoints)) {\n entrypoints.add(name);\n changed = true;\n }\n }\n }\n return entrypoints;\n}\n\n/** Unwrap `export class Foo {}` to its ClassDeclaration; pass bare classes through. */\nfunction asClassDeclaration(node: BaseNode): ClassDeclarationNode | undefined {\n if (node.type === 'ClassDeclaration') return node;\n if (node.type === 'ExportNamedDeclaration') {\n const decl = (node as ExportNamedDeclNode).declaration;\n if (decl?.type === 'ClassDeclaration') return decl;\n }\n return undefined;\n}\n\nfunction collectWorkerEntrypointImports(ast: ProgramBody): WorkerEntrypointBases {\n const named = new Set<string>();\n const namespaces = new Set<string>();\n for (const node of ast.body) {\n if (node.type !== 'ImportDeclaration') continue;\n const importNode = node as ImportDeclarationNode;\n if (importNode.source?.value !== 'cloudflare:workers') continue;\n for (const specifier of importNode.specifiers ?? []) {\n if (\n specifier.type === 'ImportSpecifier' &&\n specifier.imported?.name === 'WorkerEntrypoint' &&\n specifier.local?.name\n ) {\n named.add(specifier.local.name);\n } else if (specifier.type === 'ImportNamespaceSpecifier' && specifier.local?.name) {\n namespaces.add(specifier.local.name);\n }\n }\n }\n return { named, namespaces };\n}\n\n/**\n * Whether a superclass expression resolves to `WorkerEntrypoint` — either a bare\n * identifier from the named import (or an already-detected local subclass), or a\n * `ns.WorkerEntrypoint` member access off a namespace import.\n */\nfunction extendsWorkerEntrypoint(\n superClass: BaseNode | null | undefined,\n bases: WorkerEntrypointBases,\n detected: Set<string>,\n): boolean {\n if (!superClass) return false;\n if (superClass.type === 'Identifier') {\n const name = (superClass as IdentifierNode).name;\n return bases.named.has(name) || detected.has(name);\n }\n if (superClass.type === 'MemberExpression') {\n const member = superClass as MemberExpressionNode;\n return (\n member.object?.type === 'Identifier' &&\n !!member.object.name &&\n bases.namespaces.has(member.object.name) &&\n member.property?.name === 'WorkerEntrypoint'\n );\n }\n return false;\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { resolve, dirname } from 'node:path';
3
3
  import { unstable_readConfig } from 'wrangler';
4
4
 
5
5
  function resolveWranglerConfig(root, explicitPath) {
6
- const configPath = ["wrangler.json", "wrangler.jsonc", "wrangler.toml"].map((name) => resolve(root, name)).find(existsSync);
6
+ const configPath = explicitPath ? resolve(root, explicitPath) : ["wrangler.json", "wrangler.jsonc", "wrangler.toml"].map((name) => resolve(root, name)).find(existsSync);
7
7
  if (!configPath || !existsSync(configPath)) {
8
8
  return void 0;
9
9
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wranglerConfig.js","sources":["../../../../src/vite/wranglerConfig.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport { type Unstable_Config, unstable_readConfig } from 'wrangler';\n\n/**\n * The slice of the wrangler configuration the auto-instrument plugin cares\n * about. `main` is an absolute path (wrangler resolves it against the config\n * file's directory).\n */\nexport interface WranglerConfig {\n main?: string;\n durableObjects: Array<{ name: string; className: string }>;\n workflows: Array<{ name: string; className: string }>;\n /**\n * Named `WorkerEntrypoint` exports this worker binds to itself via a service\n * binding (`services[]` whose `service` is this worker's own `name`). Only\n * self-bindings appear here: a service binding's `entrypoint` otherwise names\n * an export on a *different* worker, which this build can't wrap.\n */\n workerEntrypoints: string[];\n}\n\n/**\n * Locate and resolve the wrangler configuration via wrangler's own\n * `unstable_readConfig` — the API `@cloudflare/vite-plugin` uses.\n *\n * We only locate the file (probing `wrangler.json`, `.jsonc`, `.toml` inside\n * `root` with wrangler's own precedence, since it discovers from `cwd` rather\n * than an arbitrary root); wrangler then parses it, flattens the active\n * environment (honoring `CLOUDFLARE_ENV`), and resolves `main` to an absolute\n * path. Durable Object and Workflow bindings are the active environment's,\n * matching what the deployed Worker actually binds.\n *\n * Returns `undefined` when no config file is found or it can't be read/parsed\n * (the caller warns and disables auto-instrumentation rather than failing the\n * whole build).\n */\nexport function resolveWranglerConfig(\n root: string,\n explicitPath?: string,\n): { config: WranglerConfig; configDir: string } | undefined {\n const configPath = explicitPath\n ? resolve(root, explicitPath)\n : ['wrangler.json', 'wrangler.jsonc', 'wrangler.toml'].map(name => resolve(root, name)).find(existsSync);\n\n if (!configPath || !existsSync(configPath)) {\n return undefined;\n }\n\n let raw: Unstable_Config;\n try {\n // `hideWarnings` keeps wrangler's config diagnostics (e.g. missing DO\n // migrations) out of the Vite build output.\n raw = unstable_readConfig({ config: configPath }, { hideWarnings: true });\n } catch {\n return undefined;\n }\n\n return {\n config: {\n main: raw.main,\n durableObjects: collectClassBindings(raw.durable_objects?.bindings),\n workflows: collectClassBindings(raw.workflows),\n workerEntrypoints: collectSelfBoundEntrypoints(raw),\n },\n configDir: dirname(raw.configPath ?? configPath),\n };\n}\n\n/**\n * Collect named `WorkerEntrypoint` exports the worker binds to itself. A service\n * binding's `entrypoint` normally names an export on the *target* worker, so it\n * is only ours when `service` equals this worker's own `name`. Without a `name`\n * there is nothing to match against, so no entrypoints are derivable.\n */\nfunction collectSelfBoundEntrypoints(raw: Unstable_Config): string[] {\n if (!raw.name) {\n return [];\n }\n const entrypoints = new Set<string>();\n for (const binding of raw.services ?? []) {\n if (binding?.service === raw.name && typeof binding.entrypoint === 'string') {\n entrypoints.add(binding.entrypoint);\n }\n }\n return [...entrypoints];\n}\n\n/**\n * Map wrangler class bindings (Durable Objects, Workflows — same shape) to the\n * `{ name, className }` the transform needs, skipping duplicates and bindings\n * with a `script_name` (those reference a class exported by a *different*\n * worker, so there is nothing to wrap in this worker's entry file).\n */\nfunction collectClassBindings(\n bindings: ReadonlyArray<{ name: string; class_name?: string; script_name?: string }> | undefined,\n): Array<{ name: string; className: string }> {\n const result: Array<{ name: string; className: string }> = [];\n const seenClassNames = new Set<string>();\n for (const binding of bindings ?? []) {\n if (typeof binding?.class_name !== 'string' || binding.script_name || seenClassNames.has(binding.class_name)) {\n continue;\n }\n seenClassNames.add(binding.class_name);\n result.push({ name: binding.name, className: binding.class_name });\n }\n return result;\n}\n"],"names":[],"mappings":";;;;AAqCO,SAAS,qBAAA,CACd,MACA,YAAA,EAC2D;AAC3D,EAAA,MAAM,aAAa,YAAA,GACf,OAAA,CAAQ,MAAM,YAAY,CAAA,GAC1B,CAAC,eAAA,EAAiB,gBAAA,EAAkB,eAAe,CAAA,CAAE,GAAA,CAAI,UAAQ,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAC,CAAA,CAAE,KAAK,UAAU,CAAA;AAEzG,EAAA,IAAI,CAAC,UAAA,IAAc,CAAC,UAAA,CAAW,UAAU,CAAA,EAAG;AAC1C,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI;AAGF,IAAA,GAAA,GAAM,mBAAA,CAAoB,EAAE,MAAA,EAAQ,UAAA,IAAc,EAAE,YAAA,EAAc,MAAM,CAAA;AAAA,EAC1E,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,MAAM,GAAA,CAAI,IAAA;AAAA,MACV,cAAA,EAAgB,oBAAA,CAAqB,GAAA,CAAI,eAAA,EAAiB,QAAQ,CAAA;AAAA,MAClE,SAAA,EAAW,oBAAA,CAAqB,GAAA,CAAI,SAAS,CAAA;AAAA,MAC7C,iBAAA,EAAmB,4BAA4B,GAAG;AAAA,KACpD;AAAA,IACA,SAAA,EAAW,OAAA,CAAQ,GAAA,CAAI,UAAA,IAAc,UAAU;AAAA,GACjD;AACF;AAQA,SAAS,4BAA4B,GAAA,EAAgC;AACnE,EAAA,IAAI,CAAC,IAAI,IAAA,EAAM;AACb,IAAA,OAAO,EAAC;AAAA,EACV;AACA,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AACpC,EAAA,KAAA,MAAW,OAAA,IAAW,GAAA,CAAI,QAAA,IAAY,EAAC,EAAG;AACxC,IAAA,IAAI,SAAS,OAAA,KAAY,GAAA,CAAI,QAAQ,OAAO,OAAA,CAAQ,eAAe,QAAA,EAAU;AAC3E,MAAA,WAAA,CAAY,GAAA,CAAI,QAAQ,UAAU,CAAA;AAAA,IACpC;AAAA,EACF;AACA,EAAA,OAAO,CAAC,GAAG,WAAW,CAAA;AACxB;AAQA,SAAS,qBACP,QAAA,EAC4C;AAC5C,EAAA,MAAM,SAAqD,EAAC;AAC5D,EAAA,MAAM,cAAA,uBAAqB,GAAA,EAAY;AACvC,EAAA,KAAA,MAAW,OAAA,IAAW,QAAA,IAAY,EAAC,EAAG;AACpC,IAAA,IAAI,OAAO,OAAA,EAAS,UAAA,KAAe,QAAA,IAAY,OAAA,CAAQ,eAAe,cAAA,CAAe,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC5G,MAAA;AAAA,IACF;AACA,IAAA,cAAA,CAAe,GAAA,CAAI,QAAQ,UAAU,CAAA;AACrC,IAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,CAAQ,MAAM,SAAA,EAAW,OAAA,CAAQ,YAAY,CAAA;AAAA,EACnE;AACA,EAAA,OAAO,MAAA;AACT;;;;"}
@@ -1,11 +1,9 @@
1
- import { setAsyncLocalStorageAsyncContextStrategy } from './async.js';
2
- import { ensureInstrumented } from './instrument.js';
1
+ import { setAsyncLocalStorageAsyncContextStrategy } from '@sentry/server-utils/no-diagnostic-channels';
3
2
  import { instrumentExportedHandlerEmail } from './instrumentations/worker/instrumentEmail.js';
4
3
  import { instrumentExportedHandlerFetch } from './instrumentations/worker/instrumentFetch.js';
5
4
  import { instrumentExportedHandlerQueue } from './instrumentations/worker/instrumentQueue.js';
6
5
  import { instrumentExportedHandlerScheduled } from './instrumentations/worker/instrumentScheduled.js';
7
6
  import { instrumentExportedHandlerTail } from './instrumentations/worker/instrumentTail.js';
8
- import { getHonoIntegration } from './integrations/hono.js';
9
7
  import { isCloudflareClass } from './utils/isCloudflareClass.js';
10
8
  import { instrumentWorkerEntrypoint } from './instrumentations/instrumentWorkerEntrypoint.js';
11
9
 
@@ -16,7 +14,6 @@ function withSentry(optionsCallback, handler) {
16
14
  setAsyncLocalStorageAsyncContextStrategy();
17
15
  try {
18
16
  instrumentExportedHandlerFetch(handler, optionsCallback);
19
- instrumentHonoErrorHandler(handler);
20
17
  instrumentExportedHandlerScheduled(handler, optionsCallback);
21
18
  instrumentExportedHandlerEmail(handler, optionsCallback);
22
19
  instrumentExportedHandlerQueue(handler, optionsCallback);
@@ -25,20 +22,6 @@ function withSentry(optionsCallback, handler) {
25
22
  }
26
23
  return handler;
27
24
  }
28
- function instrumentHonoErrorHandler(handler) {
29
- if ("onError" in handler && "errorHandler" in handler && typeof handler.errorHandler === "function") {
30
- handler.errorHandler = ensureInstrumented(
31
- handler.errorHandler,
32
- (original) => new Proxy(original, {
33
- apply(target, thisArg, args) {
34
- const [err, context] = args;
35
- getHonoIntegration()?.handleHonoException(err, context);
36
- return Reflect.apply(target, thisArg, args);
37
- }
38
- })
39
- );
40
- }
41
- }
42
25
 
43
26
  export { withSentry };
44
27
  //# sourceMappingURL=withSentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withSentry.js","sources":["../../../src/withSentry.ts"],"sourcesContent":["import { setAsyncLocalStorageAsyncContextStrategy } from '@sentry/server-utils/no-diagnostic-channels';\nimport type { CloudflareOptions } from './client';\nimport { instrumentExportedHandlerEmail } from './instrumentations/worker/instrumentEmail';\nimport { instrumentExportedHandlerFetch } from './instrumentations/worker/instrumentFetch';\nimport { instrumentExportedHandlerQueue } from './instrumentations/worker/instrumentQueue';\nimport { instrumentExportedHandlerScheduled } from './instrumentations/worker/instrumentScheduled';\nimport { instrumentExportedHandlerTail } from './instrumentations/worker/instrumentTail';\nimport { isCloudflareClass } from './utils/isCloudflareClass';\nimport type { AnyExportedHandler, DefaultEnv, ResolveEnv } from './types';\nimport {\n instrumentWorkerEntrypoint,\n type WorkerEntrypointConstructor,\n} from './instrumentations/instrumentWorkerEntrypoint';\n\n/**\n * Wrapper for Cloudflare handlers.\n *\n * Initializes the SDK and wraps the handler with Sentry instrumentation.\n *\n * Automatically instruments the `fetch` method of the handler.\n *\n * @param optionsCallback Function that returns the options for the SDK initialization.\n * @param handler {ExportedHandler} The handler to wrap.\n * @returns The wrapped handler.\n */\nexport function withSentry<\n Env = DefaultEnv,\n QueueHandlerMessage = unknown,\n CfHostMetadata = unknown,\n // oxlint-disable-next-line typescript/no-explicit-any\n T extends AnyExportedHandler | WorkerEntrypointConstructor<any, any> =\n | ExportedHandler<Env, QueueHandlerMessage, CfHostMetadata>\n | WorkerEntrypointConstructor<Env>,\n>(optionsCallback: (env: ResolveEnv<T, Env>) => CloudflareOptions | undefined, handler: T): T {\n if (isCloudflareClass(handler, 'WorkerEntrypoint')) {\n // oxlint-disable-next-line typescript/no-explicit-any\n return instrumentWorkerEntrypoint(optionsCallback as any, handler);\n }\n\n setAsyncLocalStorageAsyncContextStrategy();\n\n try {\n // oxlint-disable-next-line typescript/no-explicit-any\n instrumentExportedHandlerFetch(handler, optionsCallback as any);\n // oxlint-disable-next-line typescript/no-explicit-any\n instrumentExportedHandlerScheduled(handler, optionsCallback as any);\n // oxlint-disable-next-line typescript/no-explicit-any\n instrumentExportedHandlerEmail(handler, optionsCallback as any);\n // oxlint-disable-next-line typescript/no-explicit-any\n instrumentExportedHandlerQueue(handler, optionsCallback as any);\n // oxlint-disable-next-line typescript/no-explicit-any\n instrumentExportedHandlerTail(handler, optionsCallback as any);\n // This is here because Miniflare sometimes cannot get instrumented\n } catch {\n // Do not console anything here, we don't want to spam the console with errors\n }\n\n return handler;\n}\n"],"names":[],"mappings":";;;;;;;;;AAyBO,SAAS,UAAA,CAQd,iBAA6E,OAAA,EAAe;AAC5F,EAAA,IAAI,iBAAA,CAAkB,OAAA,EAAS,kBAAkB,CAAA,EAAG;AAElD,IAAA,OAAO,0BAAA,CAA2B,iBAAwB,OAAO,CAAA;AAAA,EACnE;AAEA,EAAA,wCAAA,EAAyC;AAEzC,EAAA,IAAI;AAEF,IAAA,8BAAA,CAA+B,SAAS,eAAsB,CAAA;AAE9D,IAAA,kCAAA,CAAmC,SAAS,eAAsB,CAAA;AAElE,IAAA,8BAAA,CAA+B,SAAS,eAAsB,CAAA;AAE9D,IAAA,8BAAA,CAA+B,SAAS,eAAsB,CAAA;AAE9D,IAAA,6BAAA,CAA8B,SAAS,eAAsB,CAAA;AAAA,EAE/D,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,OAAA;AACT;;;;"}
@@ -1,6 +1,8 @@
1
+ import { CODE_FUNCTION_NAME, SENTRY_OP } from '@sentry/conventions/attributes';
2
+ import { GENERAL_FUNCTION_SPAN_OP } from '@sentry/conventions/op';
1
3
  import { withIsolationScope, withScope, getCurrentScope, startSpan, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, captureException, flush } from '@sentry/core';
2
- import { setAsyncLocalStorageAsyncContextStrategy } from './async.js';
3
- import { flushAndDispose } from './flush.js';
4
+ import { setAsyncLocalStorageAsyncContextStrategy } from '@sentry/server-utils/no-diagnostic-channels';
5
+ import { getOriginalWaitUntil, flushAndDispose } from './flush.js';
4
6
  import { instrumentEnv } from './instrumentations/worker/instrumentEnv.js';
5
7
  import { addCloudResourceContext } from './scope-utils.js';
6
8
  import { init } from './sdk.js';
@@ -40,10 +42,12 @@ class WrappedWorkflowStep {
40
42
  const isFinalAttempt = !hasStepContext || attempt > retryLimit;
41
43
  return startSpan(
42
44
  {
43
- op: "function.step.do",
44
45
  name,
45
46
  scope: scopeForStep,
46
47
  attributes: {
48
+ [SENTRY_OP]: GENERAL_FUNCTION_SPAN_OP,
49
+ [CODE_FUNCTION_NAME]: name,
50
+ "workflow.step.name": name,
47
51
  "cloudflare.workflow.timeout": config?.timeout,
48
52
  "cloudflare.workflow.retries.backoff": config?.retries?.backoff,
49
53
  // In workers-types v5, `delay` may be a `WorkflowDelayFunction`, which isn't a valid span attribute value.
@@ -87,6 +91,7 @@ class WrappedWorkflowStep {
87
91
  }
88
92
  function instrumentWorkflowWithSentry(optionsCallback, WorkFlowClass) {
89
93
  return new Proxy(WorkFlowClass, {
94
+ // oxlint-disable-next-line typescript/no-explicit-any
90
95
  construct(target, args, newTarget) {
91
96
  const [ctx, env] = args;
92
97
  const context = instrumentContext(ctx);
@@ -100,7 +105,7 @@ function instrumentWorkflowWithSentry(optionsCallback, WorkFlowClass) {
100
105
  return async function(event, step) {
101
106
  setAsyncLocalStorageAsyncContextStrategy();
102
107
  return withIsolationScope(async (isolationScope) => {
103
- const waitUntil = context.waitUntil.bind(context);
108
+ const waitUntil = getOriginalWaitUntil(context).bind(context);
104
109
  const client = init({ ...options, ctx: context, enableDedupe: false });
105
110
  isolationScope.setClient(client);
106
111
  addCloudResourceContext(isolationScope);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sources":["../../../src/workflows.ts"],"sourcesContent":["import { CODE_FUNCTION_NAME, SENTRY_OP } from '@sentry/conventions/attributes';\nimport { GENERAL_FUNCTION_SPAN_OP } from '@sentry/conventions/op';\nimport type { PropagationContext } from '@sentry/core';\nimport {\n captureException,\n flush,\n getCurrentScope,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n startSpan,\n withIsolationScope,\n withScope,\n} from '@sentry/core';\nimport type {\n WorkflowDelayDuration,\n WorkflowEntrypoint,\n WorkflowEvent,\n WorkflowSleepDuration,\n WorkflowStep,\n WorkflowStepConfig,\n WorkflowStepContext,\n WorkflowStepEvent,\n WorkflowStepRollbackOptions,\n WorkflowTimeoutDuration,\n} from 'cloudflare:workers';\nimport { setAsyncLocalStorageAsyncContextStrategy } from '@sentry/server-utils/no-diagnostic-channels';\nimport type { CloudflareOptions } from './client';\nimport { flushAndDispose, getOriginalWaitUntil } from './flush';\nimport { instrumentEnv } from './instrumentations/worker/instrumentEnv';\nimport { addCloudResourceContext } from './scope-utils';\nimport { init } from './sdk';\nimport { instrumentContext } from './utils/instrumentContext';\nimport type { DefaultEnv, ResolveEnv } from './types';\n\nconst UUID_REGEX = /^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i;\n\n/**\n * Hashes a string to a UUID using SHA-1.\n */\nexport async function deterministicTraceIdFromInstanceId(instanceId: string): Promise<string> {\n const buf = await crypto.subtle.digest('SHA-1', new TextEncoder().encode(instanceId));\n return (\n Array.from(new Uint8Array(buf))\n // We only need the first 16 bytes for the 32 characters\n .slice(0, 16)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n );\n}\n\nasync function propagationContextFromInstanceId(instanceId: string): Promise<PropagationContext> {\n const traceId = UUID_REGEX.test(instanceId)\n ? instanceId.replace(/-/g, '')\n : await deterministicTraceIdFromInstanceId(instanceId);\n\n // Derive sampleRand from last 4 characters of the random UUID\n //\n // We cannot store any state between workflow steps, so we derive the\n // sampleRand from the traceId itself. This ensures that the sampling is\n // consistent across all steps in the same workflow instance.\n const sampleRand = parseInt(traceId.slice(-4), 16) / 0xffff;\n\n return {\n traceId,\n sampleRand,\n };\n}\n\nclass WrappedWorkflowStep implements WorkflowStep {\n public constructor(\n private _instanceId: string,\n private _options: CloudflareOptions,\n private _step: WorkflowStep,\n private _waitUntil: ExecutionContext['waitUntil'],\n ) {}\n\n public async do<T extends Rpc.Serializable<T>>(\n name: string,\n callback: (ctx: WorkflowStepContext) => Promise<T>,\n rollbackOptions?: WorkflowStepRollbackOptions<T>,\n ): Promise<T>;\n public async do<T extends Rpc.Serializable<T>, const C extends WorkflowStepConfig>(\n name: string,\n config: C,\n callback: (\n ctx: WorkflowStepContext<C['retries'] extends { delay: infer D } ? D : WorkflowDelayDuration | number>,\n ) => Promise<T>,\n rollbackOptions?: WorkflowStepRollbackOptions<T>,\n ): Promise<T>;\n public async do<T extends Rpc.Serializable<T>>(\n name: string,\n configOrCallback: WorkflowStepConfig | ((ctx: WorkflowStepContext) => Promise<T>),\n callbackOrRollback?: ((ctx: WorkflowStepContext) => Promise<T>) | WorkflowStepRollbackOptions<T>,\n maybeRollback?: WorkflowStepRollbackOptions<T>,\n ): Promise<T> {\n // Capture the current scope, so parent span (e.g., a startSpan surrounding step.do) is preserved\n const scopeForStep = getCurrentScope();\n\n const hasConfig = typeof configOrCallback !== 'function';\n const config = hasConfig ? configOrCallback : undefined;\n const userCallback = (hasConfig ? callbackOrRollback : configOrCallback) as (\n ctx: WorkflowStepContext,\n ) => Promise<T>;\n const rollbackOptions = (hasConfig ? maybeRollback : callbackOrRollback) as\n | WorkflowStepRollbackOptions<T>\n | undefined;\n\n const instrumentedCallback = async (...args: unknown[]): Promise<T> => {\n // Feature detection: Cloudflare Workflows (April 2026+) pass a step context\n // with `attempt` and `config.retries.limit`. When available, we only capture\n // errors on the final attempt to avoid duplicates during retries.\n const stepContext = args[0] as { attempt?: number; config?: { retries?: { limit?: number } } } | undefined;\n const attempt = stepContext?.attempt;\n const retryLimit = stepContext?.config?.retries?.limit;\n const hasStepContext = typeof attempt === 'number' && typeof retryLimit === 'number';\n\n // Only capture error on final attempt (attempt > retryLimit means no more retries left)\n // or when step context is unavailable (legacy behavior - capture all errors)\n const isFinalAttempt = !hasStepContext || attempt > retryLimit;\n\n return startSpan(\n {\n name,\n scope: scopeForStep,\n attributes: {\n [SENTRY_OP]: GENERAL_FUNCTION_SPAN_OP,\n [CODE_FUNCTION_NAME]: name,\n 'workflow.step.name': name,\n 'cloudflare.workflow.timeout': config?.timeout,\n 'cloudflare.workflow.retries.backoff': config?.retries?.backoff,\n // In workers-types v5, `delay` may be a `WorkflowDelayFunction`, which isn't a valid span attribute value.\n 'cloudflare.workflow.retries.delay':\n typeof config?.retries?.delay === 'function' ? undefined : config?.retries?.delay,\n 'cloudflare.workflow.retries.limit': config?.retries?.limit,\n 'cloudflare.workflow.attempt': attempt,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.faas.cloudflare.workflow',\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'task',\n },\n },\n async span => {\n try {\n const result = await (userCallback as (...args: unknown[]) => Promise<T>)(...args);\n span.setStatus({ code: 1 });\n return result;\n } catch (error) {\n if (isFinalAttempt) {\n captureException(error, { mechanism: { handled: true, type: 'auto.faas.cloudflare.workflow' } });\n }\n throw error;\n } finally {\n this._waitUntil(flush(2000));\n }\n },\n );\n };\n\n if (config) {\n return rollbackOptions\n ? this._step.do(name, config, instrumentedCallback, rollbackOptions)\n : this._step.do(name, config, instrumentedCallback);\n }\n\n return rollbackOptions\n ? this._step.do(name, instrumentedCallback, rollbackOptions)\n : this._step.do(name, instrumentedCallback);\n }\n\n public async sleep(name: string, duration: WorkflowSleepDuration): Promise<void> {\n return this._step.sleep(name, duration);\n }\n\n public async sleepUntil(name: string, timestamp: Date | number): Promise<void> {\n return this._step.sleepUntil(name, timestamp);\n }\n\n public async waitForEvent<T extends Rpc.Serializable<T>>(\n name: string,\n options: { type: string; timeout?: WorkflowTimeoutDuration | number },\n ): Promise<WorkflowStepEvent<T>> {\n return this._step.waitForEvent<T>(name, options);\n }\n}\n\n/**\n * Instruments a Cloudflare Workflow class with Sentry.\n *\n * @example\n * ```typescript\n * const InstrumentedWorkflow = instrumentWorkflowWithSentry(\n * (env) => ({ dsn: env.SENTRY_DSN }),\n * MyWorkflowClass\n * );\n *\n * export default InstrumentedWorkflow;\n * ```\n *\n * @param optionsCallback - Function that returns Sentry options to initialize Sentry\n * @param WorkflowClass - The workflow class to instrument\n * @returns Instrumented workflow class with the same interface\n */\nexport function instrumentWorkflowWithSentry<\n E = DefaultEnv, // Environment type\n P = unknown, // Payload type\n // oxlint-disable-next-line typescript/no-explicit-any\n T extends WorkflowEntrypoint<any, any> = WorkflowEntrypoint<E, P>, // WorkflowEntrypoint type\n // The constraint must not route through `T`: workers-types defaults `WorkflowEntrypoint`'s\n // `Env` to `unknown` (unlike `WorkerEntrypoint`/`DurableObject`, which default to\n // `Cloudflare.Env`), so a bare subclass would be rejected in a `wrangler types` project.\n // The callback env is resolved from the inferred constructor via `ResolveEnv` instead.\n // oxlint-disable-next-line typescript/no-explicit-any\n C extends new (ctx: ExecutionContext, env: any) => WorkflowEntrypoint<any, any> = new (\n ctx: ExecutionContext,\n // oxlint-disable-next-line typescript/no-explicit-any\n env: any,\n ) => T, // Constructor type of the WorkflowEntrypoint class\n>(optionsCallback: (env: ResolveEnv<C, E>) => CloudflareOptions, WorkFlowClass: C): C {\n return new Proxy(WorkFlowClass, {\n // oxlint-disable-next-line typescript/no-explicit-any\n construct(target: C, args: [ctx: ExecutionContext, env: any], newTarget) {\n const [ctx, env] = args;\n const context = instrumentContext(ctx);\n const options = optionsCallback(env);\n args[0] = context;\n args[1] = instrumentEnv(env as Record<string, unknown>, options) as E;\n const instance = Reflect.construct(target, args, newTarget) as T;\n return new Proxy(instance, {\n get(obj, prop, receiver) {\n if (prop === 'run') {\n return async function (event: WorkflowEvent<P>, step: WorkflowStep): Promise<unknown> {\n setAsyncLocalStorageAsyncContextStrategy();\n\n return withIsolationScope(async isolationScope => {\n const waitUntil = getOriginalWaitUntil(context).bind(context);\n const client = init({ ...options, ctx: context, enableDedupe: false });\n isolationScope.setClient(client);\n\n addCloudResourceContext(isolationScope);\n\n return withScope(async scope => {\n const propagationContext = await propagationContextFromInstanceId(event.instanceId);\n scope.setPropagationContext(propagationContext);\n\n try {\n return await obj.run.call(\n obj,\n event,\n new WrappedWorkflowStep(event.instanceId, options, step, waitUntil),\n );\n } finally {\n waitUntil(flushAndDispose(client));\n }\n });\n });\n };\n }\n return Reflect.get(obj, prop, receiver);\n },\n });\n },\n });\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { getClient, withIsolationScope, withScope, isThenable, SEMANTIC_ATTRIBUTE_SENTRY_OP, continueTrace, startNewTrace, captureException, startSpan, isObjectLike, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';
1
+ import { isThenable, SEMANTIC_ATTRIBUTE_SENTRY_OP, continueTrace, startNewTrace, captureException, startSpan, isObjectLike, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';
2
2
  import { getOriginalWaitUntil, flushAndDispose } from './flush.js';
3
3
  import { ensureInstrumented } from './instrument.js';
4
4
  import { init } from './sdk.js';
5
+ import { withInvocationIsolationScope } from './utils/invocationScope.js';
5
6
  import { extractRpcMeta } from './utils/rpcMeta.js';
6
7
  import { getStoredSpanContext, buildSpanLinks, storeSpanContext } from './utils/traceLinks.js';
7
8
 
@@ -30,8 +31,6 @@ function wrapMethodWithSentry(wrapperOptions, handler, callback, noMark) {
30
31
  args = extracted.args;
31
32
  rpcMeta = extracted.rpcMeta;
32
33
  }
33
- const currentClient = getClient();
34
- const sentryWithScope = startNewTrace$1 ? withIsolationScope : currentClient ? withScope : withIsolationScope;
35
34
  const wrappedFunction = (scope) => {
36
35
  const context = wrapperOptions.context;
37
36
  const waitUntil = context ? getOriginalWaitUntil(context)?.bind(context) : void 0;
@@ -122,7 +121,7 @@ function wrapMethodWithSentry(wrapperOptions, handler, callback, noMark) {
122
121
  }
123
122
  return executeSpan();
124
123
  };
125
- return sentryWithScope(wrappedFunction);
124
+ return withInvocationIsolationScope(wrappedFunction);
126
125
  }
127
126
  }),
128
127
  noMark
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapMethodWithSentry.js","sources":["../../../src/wrapMethodWithSentry.ts"],"sourcesContent":["import type { DurableObjectStorage } from '@cloudflare/workers-types';\nimport type { SerializedTraceData } from '@sentry/core';\nimport {\n isObjectLike,\n captureException,\n continueTrace,\n isThenable,\n type Scope,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n startNewTrace as startNewTraceCore,\n startSpan,\n} from '@sentry/core';\nimport type { CloudflareOptions } from './client';\nimport type { ExecutionContextCompat } from './executionContext';\nimport { flushAndDispose, getOriginalWaitUntil } from './flush';\nimport { ensureInstrumented } from './instrument';\nimport { init } from './sdk';\nimport { withInvocationIsolationScope } from './utils/invocationScope';\nimport { extractRpcMeta } from './utils/rpcMeta';\nimport { buildSpanLinks, getStoredSpanContext, storeSpanContext } from './utils/traceLinks';\n\n/** Extended DurableObjectState with originalStorage exposed by instrumentContext */\nexport interface InstrumentedDurableObjectState extends DurableObjectState {\n originalStorage?: DurableObjectStorage;\n}\n\n/**\n * Resolves uninstrumented DO storage for the current invocation.\n * Prefer `thisArg.ctx` (the live Durable Object instance) over the context captured at\n * construction time to avoid cross-DO I/O errors in the same isolate.\n */\nfunction resolveOriginalStorage(\n context: ExecutionContext | InstrumentedDurableObjectState | undefined,\n thisArg: unknown,\n): DurableObjectStorage | undefined {\n if (isObjectLike(thisArg) && 'ctx' in thisArg) {\n const doCtx = (thisArg as { ctx: InstrumentedDurableObjectState }).ctx;\n if (doCtx?.originalStorage) {\n return doCtx.originalStorage;\n }\n }\n\n if (context && 'originalStorage' in context && context.originalStorage) {\n return context.originalStorage;\n }\n\n return undefined;\n}\n\ntype MethodWrapperOptions = {\n spanName?: string;\n spanOp?: string;\n options: CloudflareOptions;\n context: ExecutionContext | InstrumentedDurableObjectState;\n /**\n * If true, starts a fresh trace instead of inheriting from a parent trace.\n * Useful for scheduled/independent invocations like alarms.\n *\n * If true, it also stores the current span context and links to the previous invocation's span.\n * Uses Durable Object storage to persist the link. The link is set asynchronously via `span.addLinks()`\n * in a `waitUntil` to avoid blocking.\n *\n * @default false\n */\n startNewTrace?: boolean;\n /**\n * The trace origin identifying which instrumentation created the span, e.g. `auto.faas.cloudflare.durable_object`.\n * Used both as the span's `sentry.origin` attribute and as the `mechanism.type` for captured exceptions.\n */\n origin: string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type UncheckedMethod = (...args: any[]) => any;\ntype OriginalMethod = UncheckedMethod;\n\n/**\n * Wraps a method with Sentry error tracking and optional tracing.\n * Supports starting new traces and linking to previous invocations via Durable Object storage.\n *\n * @param wrapperOptions - The options for the wrapper.\n * @param handler - The method to wrap.\n * @param callback - The callback to call.\n * @param noMark - Whether to mark the method as instrumented.\n * @returns The wrapped method.\n */\nexport function wrapMethodWithSentry<T extends OriginalMethod>(\n wrapperOptions: MethodWrapperOptions,\n handler: T,\n callback?: (...args: Parameters<T>) => void,\n noMark?: true,\n): T {\n return ensureInstrumented(\n handler,\n original =>\n new Proxy(original, {\n apply(target, thisArg, rawArgs: Parameters<T>) {\n const { startNewTrace, origin } = wrapperOptions;\n\n // For RPC methods, extract Sentry trace context from the trailing argument.\n // The caller side (instrumentDurableObjectStub / JSRPC proxy) appends it;\n // we strip it here so the user's method never sees it.\n let args = rawArgs;\n let rpcMeta: SerializedTraceData | undefined;\n\n if (wrapperOptions.spanOp === 'rpc') {\n const extracted = extractRpcMeta(rawArgs);\n args = extracted.args;\n rpcMeta = extracted.rpcMeta;\n }\n\n const wrappedFunction = (scope: Scope): unknown | Promise<unknown> => {\n // In certain situations, the passed context can become undefined.\n // For example, for Astro while prerendering pages at build time.\n // see: https://github.com/getsentry/sentry-javascript/issues/13217\n const context: typeof wrapperOptions.context | undefined = wrapperOptions.context;\n\n // see: https://github.com/getsentry/sentry-javascript/issues/22328\n const waitUntil = context\n ? getOriginalWaitUntil(context as ExecutionContextCompat)?.bind(context)\n : undefined;\n const storage = resolveOriginalStorage(context, thisArg);\n\n let scopeClient = scope.getClient();\n // Check if client exists AND is still usable (transport not disposed)\n // This handles the case where a previous handler disposed the client\n // but the scope still holds a reference to it (e.g., alarm handlers in Durable Objects)\n // For startNewTrace, always create a fresh client\n if (startNewTrace || !scopeClient?.getTransport()) {\n const client = init({\n ...wrapperOptions.options,\n ctx: context as unknown as ExecutionContext | undefined,\n });\n scope.setClient(client);\n scopeClient = client;\n }\n\n const clientToDispose = scopeClient;\n const methodName = wrapperOptions.spanName || 'unknown';\n\n const teardown = async (): Promise<void> => {\n if (startNewTrace && storage) {\n storeSpanContext(storage, methodName);\n }\n await flushAndDispose(clientToDispose);\n };\n\n const onFulfilled = (res: unknown) => {\n waitUntil?.(teardown());\n return res;\n };\n\n const onRejected = (e: unknown) => {\n captureException(e, {\n mechanism: {\n type: origin,\n handled: false,\n },\n });\n waitUntil?.(teardown());\n throw e;\n };\n\n if (!wrapperOptions.spanName) {\n try {\n if (callback) {\n callback(...args);\n }\n\n const result = Reflect.apply(target, thisArg, args);\n\n if (isThenable(result)) {\n return result.then(onFulfilled, onRejected);\n } else {\n return onFulfilled(result);\n }\n } catch (e) {\n return onRejected(e);\n }\n }\n\n const attributes = wrapperOptions.spanOp\n ? {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: wrapperOptions.spanOp,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n }\n : {};\n\n const executeSpan = (): unknown => {\n return startSpan({ name: methodName, attributes }, span => {\n if (startNewTrace && storage) {\n const storedContext = getStoredSpanContext(storage, methodName);\n\n if (storedContext) {\n span.addLinks(buildSpanLinks(storedContext));\n // TODO: Remove this once EAP can store span links. We currently only set this attribute so that we\n // can obtain the previous trace information from the EAP store. Long-term, EAP will handle\n // span links and then we should remove this again. Also throwing in a TODO(v11), to remind us\n // to check this at v11 time :)\n const sampledFlag = storedContext.sampled ? '1' : '0';\n span.setAttribute(\n 'sentry.previous_trace',\n `${storedContext.traceId}-${storedContext.spanId}-${sampledFlag}`,\n );\n }\n }\n\n try {\n const result = Reflect.apply(target, thisArg, args);\n\n if (isThenable(result)) {\n return result.then(onFulfilled, onRejected);\n } else {\n return onFulfilled(result);\n }\n } catch (e) {\n return onRejected(e);\n }\n });\n };\n\n if (rpcMeta) {\n return continueTrace(\n { sentryTrace: rpcMeta['sentry-trace'] || '', baggage: rpcMeta.baggage || '' },\n executeSpan,\n );\n }\n\n if (startNewTrace) {\n return startNewTraceCore(() => executeSpan());\n }\n\n return executeSpan();\n };\n\n return withInvocationIsolationScope(wrappedFunction);\n },\n }),\n noMark,\n );\n}\n"],"names":["startNewTrace","startNewTraceCore"],"mappings":"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"}
@@ -1,9 +1,8 @@
1
- import { dedupeIntegration, inboundFiltersIntegration, functionToStringIntegration, conversationIdIntegration, linkedErrorsIntegration, requestDataIntegration, consoleIntegration, GLOBAL_OBJ, getIntegrationsToSetup, stackParserFromStackParserOptions, initAndBind } from '@sentry/core';
1
+ import { dedupeIntegration, eventFiltersIntegration, functionToStringIntegration, conversationIdIntegration, linkedErrorsIntegration, requestDataIntegration, consoleIntegration, GLOBAL_OBJ, getIntegrationsToSetup, stackParserFromStackParserOptions, initAndBind } from '@sentry/core';
2
2
  import { CloudflareClient } from './client.js';
3
3
  import { makeFlushLock } from './flush.js';
4
- import { httpServerIntegration } from './integrations/httpServer.js';
5
4
  import { fetchIntegration } from './integrations/fetch.js';
6
- import { honoIntegration } from './integrations/hono.js';
5
+ import { httpServerIntegration } from './integrations/httpServer.js';
7
6
  import { setupOpenTelemetryTracer } from './opentelemetry/tracer.js';
8
7
  import { makeCloudflareTransport } from './transport.js';
9
8
  import { defaultStackParser } from './vendor/stacktrace.js';
@@ -12,23 +11,18 @@ function getRegisteredChannelIntegrations() {
12
11
  const registered = GLOBAL_OBJ.__SENTRY_ORCHESTRION__?.integrations;
13
12
  return registered ? [...registered.values()].map((factory) => factory()) : [];
14
13
  }
15
- function getDefaultIntegrations(options) {
16
- const cookiesEnabled = options.sendDefaultPii || options.dataCollection?.cookies != null;
14
+ function getBaseDefaultIntegrations(options) {
17
15
  return [
18
16
  // The Dedupe integration should not be used in workflows because we want to
19
17
  // capture all step failures, even if they are the same error.
20
18
  ...options.enableDedupe === false ? [] : [dedupeIntegration()],
21
- // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`
22
- // eslint-disable-next-line typescript/no-deprecated
23
- inboundFiltersIntegration(),
19
+ eventFiltersIntegration(),
24
20
  functionToStringIntegration(),
25
21
  conversationIdIntegration(),
26
22
  linkedErrorsIntegration(),
27
23
  fetchIntegration(),
28
- // eslint-disable-next-line typescript/no-deprecated
29
- honoIntegration(),
30
24
  httpServerIntegration(),
31
- requestDataIntegration(cookiesEnabled ? void 0 : { include: { cookies: false } }),
25
+ requestDataIntegration(),
32
26
  consoleIntegration(),
33
27
  // The orchestrion diagnostics-channel subscribers (mysql, pg, …). The
34
28
  // `@sentry/cloudflare/vite` plugin injects the channels at build time and,
@@ -39,9 +33,9 @@ function getDefaultIntegrations(options) {
39
33
  ...getRegisteredChannelIntegrations()
40
34
  ];
41
35
  }
42
- function init(options) {
36
+ function initWithDefaultIntegrations(options, getDefaultIntegrationsImpl) {
43
37
  if (options.defaultIntegrations === void 0) {
44
- options.defaultIntegrations = getDefaultIntegrations(options);
38
+ options.defaultIntegrations = getDefaultIntegrationsImpl(options);
45
39
  }
46
40
  const flushLock = options.ctx ? makeFlushLock(options.ctx) : void 0;
47
41
  delete options.ctx;
@@ -50,13 +44,26 @@ function init(options) {
50
44
  stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),
51
45
  integrations: getIntegrationsToSetup(options),
52
46
  transport: options.transport || makeCloudflareTransport,
47
+ // Like most Node-based SDKs, Cloudflare defaults to running without a Sentry OpenTelemetry tracer
48
+ // provider. Scope isolation is handled by the entrypoint wrappers' AsyncLocalStorage strategy.
49
+ skipOpenTelemetrySetup: options.skipOpenTelemetrySetup ?? true,
53
50
  flushLock
54
51
  };
55
- if (!options.skipOpenTelemetrySetup) {
52
+ if (!clientOptions.skipOpenTelemetrySetup) {
56
53
  setupOpenTelemetryTracer();
57
54
  }
58
- return initAndBind(CloudflareClient, clientOptions);
55
+ const client = initAndBind(CloudflareClient, clientOptions);
56
+ client.on("orchestrion.module-injected", (moduleName) => {
57
+ const factory = GLOBAL_OBJ.__SENTRY_ORCHESTRION__?.integrations?.get(moduleName);
58
+ if (factory) {
59
+ client.addIntegration(factory());
60
+ }
61
+ });
62
+ return client;
63
+ }
64
+ function initBaseSdk(options) {
65
+ return initWithDefaultIntegrations(options, getBaseDefaultIntegrations);
59
66
  }
60
67
 
61
- export { getDefaultIntegrations, init };
62
- //# sourceMappingURL=sdk.js.map
68
+ export { getBaseDefaultIntegrations, initBaseSdk, initWithDefaultIntegrations };
69
+ //# sourceMappingURL=baseSdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseSdk.js","sources":["../../../src/baseSdk.ts"],"sourcesContent":["import type { Integration } from '@sentry/core';\nimport {\n consoleIntegration,\n conversationIdIntegration,\n dedupeIntegration,\n eventFiltersIntegration,\n functionToStringIntegration,\n getIntegrationsToSetup,\n GLOBAL_OBJ,\n initAndBind,\n linkedErrorsIntegration,\n requestDataIntegration,\n stackParserFromStackParserOptions,\n} from '@sentry/core';\nimport type { CloudflareClientOptions, CloudflareOptions } from './client';\nimport { CloudflareClient } from './client';\nimport { makeFlushLock } from './flush';\nimport { fetchIntegration } from './integrations/fetch';\nimport { httpServerIntegration } from './integrations/httpServer';\nimport { INTEGRATION_NAME as SPOTLIGHT_INTEGRATION_NAME, spotlightIntegration } from './integrations/spotlight';\nimport { setupOpenTelemetryTracer } from './opentelemetry/tracer';\nimport { makeCloudflareTransport } from './transport';\nimport { defaultStackParser } from './vendor/stacktrace';\n\n/**\n * Instantiate the channel-subscriber factories the `@sentry/cloudflare/vite`\n * plugin registered on the global marker. The plugin splices a small snippet\n * into each instrumented module that `.set`s its factory here (keyed by module\n * name), so the marker holds one factory per package actually bundled.\n *\n * The marker is read directly instead of importing the factories, so a worker\n * built without the plugin — where the channels never fire — ships none of this\n * code.\n * TODO(v11): Use `@sentry/server-utils/orchestrion` once we move to `nodejs_compat` by default.\n */\nfunction getRegisteredChannelIntegrations(): Integration[] {\n const registered = GLOBAL_OBJ.__SENTRY_ORCHESTRION__?.integrations;\n\n return registered ? [...registered.values()].map(factory => factory()) : [];\n}\n\n/**\n * Get the default integrations that run on any Workers-compatible runtime, i.e. without the\n * `nodejs_compat` compatibility flag.\n *\n * `getDefaultIntegrations` in `sdk.ts` extends this set with the integrations that do depend on\n * Node.js APIs. Keeping the two apart is what allows `wrapRequestHandler` to stay usable on runtimes\n * that cannot enable `nodejs_compat`, such as Shopify Oxygen.\n */\nexport function getBaseDefaultIntegrations(options: CloudflareOptions): Integration[] {\n return [\n // The Dedupe integration should not be used in workflows because we want to\n // capture all step failures, even if they are the same error.\n ...(options.enableDedupe === false ? [] : [dedupeIntegration()]),\n eventFiltersIntegration(),\n functionToStringIntegration(),\n conversationIdIntegration(),\n linkedErrorsIntegration(),\n fetchIntegration(),\n httpServerIntegration(),\n requestDataIntegration(),\n consoleIntegration(),\n // The orchestrion diagnostics-channel subscribers (mysql, pg, …). The\n // `@sentry/cloudflare/vite` plugin injects the channels at build time and,\n // next to each, a snippet that registers the matching subscriber factory on\n // the global marker. Read from there instead of importing them so bundles\n // built without the plugin — where the channels would never fire — don't\n // ship the code.\n ...getRegisteredChannelIntegrations(),\n ];\n}\n\n/**\n * Initializes the Cloudflare SDK with the passed default integrations.\n *\n * The default integrations are injected rather than imported so that this module stays free of\n * Node.js-only code. `request.ts` — which backs both `wrapRequestHandler` and the\n * `@sentry/cloudflare/request` entry point, and therefore has to work on runtimes without the\n * `nodejs_compat` compatibility flag — creates its client from here instead of from `sdk.ts`.\n */\nexport function initWithDefaultIntegrations(\n options: CloudflareOptions,\n getDefaultIntegrationsImpl: (options: CloudflareOptions) => Integration[],\n): CloudflareClient | undefined {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = getDefaultIntegrationsImpl(options);\n }\n\n const flushLock = options.ctx ? makeFlushLock(options.ctx) : undefined;\n delete options.ctx;\n\n const clientOptions: CloudflareClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || makeCloudflareTransport,\n // Like most Node-based SDKs, Cloudflare defaults to running without a Sentry OpenTelemetry tracer\n // provider. Scope isolation is handled by the entrypoint wrappers' AsyncLocalStorage strategy.\n skipOpenTelemetrySetup: options.skipOpenTelemetrySetup ?? true,\n flushLock,\n };\n\n /*! rollup-include-development-only */\n if (options.spotlight && !clientOptions.integrations.some(({ name }) => name === SPOTLIGHT_INTEGRATION_NAME)) {\n clientOptions.integrations.push(\n spotlightIntegration({\n sidecarUrl: typeof options.spotlight === 'string' ? options.spotlight : undefined,\n }),\n );\n }\n /*! rollup-include-development-only-end */\n\n // Opt-in only: when `skipOpenTelemetrySetup` is `false`, set up a custom trace provider so spans\n // emitted via `@opentelemetry/api` are captured by Sentry. See the option's docs for the caveats.\n if (!clientOptions.skipOpenTelemetrySetup) {\n setupOpenTelemetryTracer();\n }\n\n const client = initAndBind(CloudflareClient, clientOptions) as CloudflareClient;\n\n // An instrumented module that first evaluates AFTER this init (e.g. a driver\n // lazily required on first use) stores its subscriber factory on the global\n // marker too late for the default-integrations snapshot above. Its injected\n // snippet emits this event right after storing the factory, so install the\n // integration on the live client here. `addIntegration` dedupes by\n // integration name, so already-installed integrations are no-ops.\n client.on('orchestrion.module-injected', moduleName => {\n const factory = GLOBAL_OBJ.__SENTRY_ORCHESTRION__?.integrations?.get(moduleName);\n if (factory) {\n client.addIntegration(factory());\n }\n });\n\n return client;\n}\n\n/**\n * Initializes the Cloudflare SDK with only the default integrations from\n * {@link getBaseDefaultIntegrations}, i.e. those that work without the `nodejs_compat`\n * compatibility flag.\n */\nexport function initBaseSdk(options: CloudflareOptions): CloudflareClient | undefined {\n return initWithDefaultIntegrations(options, getBaseDefaultIntegrations);\n}\n"],"names":[],"mappings":";;;;;;;;;AAmCA,SAAS,gCAAA,GAAkD;AACzD,EAAA,MAAM,UAAA,GAAa,WAAW,sBAAA,EAAwB,YAAA;AAEtD,EAAA,OAAO,UAAA,GAAa,CAAC,GAAG,UAAA,CAAW,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,CAAA,OAAA,KAAW,OAAA,EAAS,CAAA,GAAI,EAAC;AAC5E;AAUO,SAAS,2BAA2B,OAAA,EAA2C;AACpF,EAAA,OAAO;AAAA;AAAA;AAAA,IAGL,GAAI,QAAQ,YAAA,KAAiB,KAAA,GAAQ,EAAC,GAAI,CAAC,mBAAmB,CAAA;AAAA,IAC9D,uBAAA,EAAwB;AAAA,IACxB,2BAAA,EAA4B;AAAA,IAC5B,yBAAA,EAA0B;AAAA,IAC1B,uBAAA,EAAwB;AAAA,IACxB,gBAAA,EAAiB;AAAA,IACjB,qBAAA,EAAsB;AAAA,IACtB,sBAAA,EAAuB;AAAA,IACvB,kBAAA,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOnB,GAAG,gCAAA;AAAiC,GACtC;AACF;AAUO,SAAS,2BAAA,CACd,SACA,0BAAA,EAC8B;AAC9B,EAAA,IAAI,OAAA,CAAQ,wBAAwB,MAAA,EAAW;AAC7C,IAAA,OAAA,CAAQ,mBAAA,GAAsB,2BAA2B,OAAO,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,YAAY,OAAA,CAAQ,GAAA,GAAM,aAAA,CAAc,OAAA,CAAQ,GAAG,CAAA,GAAI,MAAA;AAC7D,EAAA,OAAO,OAAA,CAAQ,GAAA;AAEf,EAAA,MAAM,aAAA,GAAyC;AAAA,IAC7C,GAAG,OAAA;AAAA,IACH,WAAA,EAAa,iCAAA,CAAkC,OAAA,CAAQ,WAAA,IAAe,kBAAkB,CAAA;AAAA,IACxF,YAAA,EAAc,uBAAuB,OAAO,CAAA;AAAA,IAC5C,SAAA,EAAW,QAAQ,SAAA,IAAa,uBAAA;AAAA;AAAA;AAAA,IAGhC,sBAAA,EAAwB,QAAQ,sBAAA,IAA0B,IAAA;AAAA,IAC1D;AAAA,GACF;AAIA,EAAA,IAAI,CAAC,cAAc,sBAAA,EAAwB;AACzC,IAAA,wBAAA,EAAyB;AAAA,EAC3B;AAEA,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,gBAAA,EAAkB,aAAa,CAAA;AAQ1D,EAAA,MAAA,CAAO,EAAA,CAAG,+BAA+B,CAAA,UAAA,KAAc;AACrD,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,sBAAA,EAAwB,YAAA,EAAc,IAAI,UAAU,CAAA;AAC/E,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,MAAA,CAAO,cAAA,CAAe,SAAS,CAAA;AAAA,IACjC;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT;AAOO,SAAS,YAAY,OAAA,EAA0D;AACpF,EAAA,OAAO,2BAAA,CAA4B,SAAS,0BAA0B,CAAA;AACxE;;;;"}
@@ -0,0 +1,120 @@
1
+ import { ServerRuntimeClient, applySdkMetadata, debug, spanIsSampled, _INTERNAL_clearAiProviderSkips } from '@sentry/core';
2
+ import { DEBUG_BUILD } from './debug-build.js';
3
+
4
+ class CloudflareClient extends ServerRuntimeClient {
5
+ /**
6
+ * Creates a new Cloudflare SDK instance.
7
+ * @param options Configuration options for this SDK.
8
+ */
9
+ constructor(options) {
10
+ applySdkMetadata(options, "cloudflare");
11
+ options._metadata = options._metadata || {};
12
+ const { flushLock, ...serverOptions } = options;
13
+ const clientOptions = {
14
+ ...serverOptions,
15
+ platform: "javascript",
16
+ // TODO: Grab version information
17
+ runtime: { name: "cloudflare" },
18
+ // TODO: Add server name
19
+ _flushInterval: 0
20
+ };
21
+ super(clientOptions);
22
+ this._pendingSpans = /* @__PURE__ */ new Set();
23
+ this._spanCompletionPromise = null;
24
+ this._resolveSpanCompletion = null;
25
+ this._unsubscribeSpanStart = null;
26
+ this._unsubscribeSpanEnd = null;
27
+ this._flushLock = flushLock;
28
+ this._unsubscribeSpanStart = this.on("spanStart", (span) => {
29
+ const spanId = span.spanContext().spanId;
30
+ DEBUG_BUILD && debug.log("[CloudflareClient] Span started:", spanId);
31
+ if (!spanIsSampled(span)) {
32
+ return;
33
+ }
34
+ this._pendingSpans.add(spanId);
35
+ if (!this._spanCompletionPromise) {
36
+ this._spanCompletionPromise = new Promise((resolve) => {
37
+ this._resolveSpanCompletion = resolve;
38
+ });
39
+ }
40
+ });
41
+ this._unsubscribeSpanEnd = this.on("spanEnd", (span) => {
42
+ const spanId = span.spanContext().spanId;
43
+ DEBUG_BUILD && debug.log("[CloudflareClient] Span ended:", spanId);
44
+ this._pendingSpans.delete(spanId);
45
+ if (this._pendingSpans.size === 0 && this._resolveSpanCompletion) {
46
+ DEBUG_BUILD && debug.log("[CloudflareClient] All spans completed, resolving promise");
47
+ this._resolveSpanCompletion();
48
+ this._resetSpanCompletionPromise();
49
+ }
50
+ });
51
+ }
52
+ /**
53
+ * Flushes pending operations and ensures all data is processed.
54
+ * If a timeout is provided, the operation will be completed within the specified time limit.
55
+ *
56
+ * It will wait for all pending spans to complete before flushing.
57
+ *
58
+ * @param {number} [timeout] - Optional timeout in milliseconds to force the completion of the flush operation.
59
+ * @return {Promise<boolean>} A promise that resolves to a boolean indicating whether the flush operation was successful.
60
+ */
61
+ async flush(timeout) {
62
+ if (this._flushLock) {
63
+ await this._flushLock.finalize();
64
+ }
65
+ if (this._pendingSpans.size > 0 && this._spanCompletionPromise) {
66
+ DEBUG_BUILD && debug.log("[CloudflareClient] Waiting for", this._pendingSpans.size, "pending spans to complete...");
67
+ const timeoutMs = timeout ?? 5e3;
68
+ const spanCompletionRace = Promise.race([
69
+ this._spanCompletionPromise,
70
+ new Promise(
71
+ (resolve) => setTimeout(() => {
72
+ DEBUG_BUILD && debug.log("[CloudflareClient] Span completion timeout after", timeoutMs, "ms, flushing anyway");
73
+ resolve(void 0);
74
+ }, timeoutMs)
75
+ )
76
+ ]);
77
+ await spanCompletionRace;
78
+ }
79
+ return super.flush(timeout);
80
+ }
81
+ /**
82
+ * Disposes of the client and releases all resources.
83
+ *
84
+ * This method clears all Cloudflare-specific state in addition to the base client cleanup.
85
+ * It unsubscribes from span lifecycle events and clears pending span tracking.
86
+ *
87
+ * Call this method after flushing to allow the client to be garbage collected.
88
+ * After calling dispose(), the client should not be used anymore.
89
+ */
90
+ dispose() {
91
+ DEBUG_BUILD && debug.log("[CloudflareClient] Disposing client...");
92
+ super.dispose();
93
+ if (this._unsubscribeSpanStart) {
94
+ this._unsubscribeSpanStart();
95
+ this._unsubscribeSpanStart = null;
96
+ }
97
+ if (this._unsubscribeSpanEnd) {
98
+ this._unsubscribeSpanEnd();
99
+ this._unsubscribeSpanEnd = null;
100
+ }
101
+ this._resetSpanCompletionPromise();
102
+ this._flushLock = void 0;
103
+ }
104
+ /** @inheritDoc */
105
+ _setupIntegrations() {
106
+ _INTERNAL_clearAiProviderSkips();
107
+ super._setupIntegrations();
108
+ }
109
+ /**
110
+ * Resets the span completion promise and resolve function.
111
+ */
112
+ _resetSpanCompletionPromise() {
113
+ this._pendingSpans.clear();
114
+ this._spanCompletionPromise = null;
115
+ this._resolveSpanCompletion = null;
116
+ }
117
+ }
118
+
119
+ export { CloudflareClient };
120
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sources":["../../../src/client.ts"],"sourcesContent":["import type { ClientOptions, Options, ServerRuntimeClientOptions } from '@sentry/core';\nimport {\n _INTERNAL_clearAiProviderSkips,\n applySdkMetadata,\n debug,\n ServerRuntimeClient,\n spanIsSampled,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ExecutionContextCompat } from './executionContext';\nimport type { makeFlushLock } from './flush';\nimport type { CloudflareTransportOptions } from './transport';\n\n/**\n * The Sentry Cloudflare SDK Client.\n *\n * @see CloudflareClientOptions for documentation on configuration options.\n * @see ServerRuntimeClient for usage documentation.\n */\nexport class CloudflareClient extends ServerRuntimeClient {\n private readonly _flushLock: ReturnType<typeof makeFlushLock> | void;\n private _pendingSpans: Set<string> = new Set();\n private _spanCompletionPromise: Promise<void> | null = null;\n private _resolveSpanCompletion: (() => void) | null = null;\n\n private _unsubscribeSpanStart: (() => void) | null = null;\n private _unsubscribeSpanEnd: (() => void) | null = null;\n\n /**\n * Creates a new Cloudflare SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: CloudflareClientOptions) {\n applySdkMetadata(options, 'cloudflare');\n options._metadata = options._metadata || {};\n const { flushLock, ...serverOptions } = options;\n\n const clientOptions: ServerRuntimeClientOptions = {\n ...serverOptions,\n platform: 'javascript',\n // TODO: Grab version information\n runtime: { name: 'cloudflare' },\n // TODO: Add server name\n _flushInterval: 0,\n };\n\n super(clientOptions);\n this._flushLock = flushLock;\n\n // Track span lifecycle to know when to flush\n this._unsubscribeSpanStart = this.on('spanStart', span => {\n const spanId = span.spanContext().spanId;\n DEBUG_BUILD && debug.log('[CloudflareClient] Span started:', spanId);\n\n // Negatively sampled spans never emit spanEnd,\n // so tracking them would cause _pendingSpans to grow unboundedly.\n // We should fix the inconsistent behavior for NonRecordingSpans in the future but\n // for now, we just ignore them.\n if (!spanIsSampled(span)) {\n return;\n }\n\n this._pendingSpans.add(spanId);\n\n if (!this._spanCompletionPromise) {\n this._spanCompletionPromise = new Promise(resolve => {\n this._resolveSpanCompletion = resolve;\n });\n }\n });\n\n this._unsubscribeSpanEnd = this.on('spanEnd', span => {\n const spanId = span.spanContext().spanId;\n DEBUG_BUILD && debug.log('[CloudflareClient] Span ended:', spanId);\n this._pendingSpans.delete(spanId);\n\n // If no more pending spans, resolve the completion promise\n if (this._pendingSpans.size === 0 && this._resolveSpanCompletion) {\n DEBUG_BUILD && debug.log('[CloudflareClient] All spans completed, resolving promise');\n this._resolveSpanCompletion();\n this._resetSpanCompletionPromise();\n }\n });\n }\n\n /**\n * Flushes pending operations and ensures all data is processed.\n * If a timeout is provided, the operation will be completed within the specified time limit.\n *\n * It will wait for all pending spans to complete before flushing.\n *\n * @param {number} [timeout] - Optional timeout in milliseconds to force the completion of the flush operation.\n * @return {Promise<boolean>} A promise that resolves to a boolean indicating whether the flush operation was successful.\n */\n public async flush(timeout?: number): Promise<boolean> {\n if (this._flushLock) {\n await this._flushLock.finalize();\n }\n\n if (this._pendingSpans.size > 0 && this._spanCompletionPromise) {\n DEBUG_BUILD &&\n debug.log('[CloudflareClient] Waiting for', this._pendingSpans.size, 'pending spans to complete...');\n\n const timeoutMs = timeout ?? 5000;\n const spanCompletionRace = Promise.race([\n this._spanCompletionPromise,\n new Promise(resolve =>\n setTimeout(() => {\n DEBUG_BUILD &&\n debug.log('[CloudflareClient] Span completion timeout after', timeoutMs, 'ms, flushing anyway');\n resolve(undefined);\n }, timeoutMs),\n ),\n ]);\n\n await spanCompletionRace;\n }\n\n return super.flush(timeout);\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * This method clears all Cloudflare-specific state in addition to the base client cleanup.\n * It unsubscribes from span lifecycle events and clears pending span tracking.\n *\n * Call this method after flushing to allow the client to be garbage collected.\n * After calling dispose(), the client should not be used anymore.\n */\n public override dispose(): void {\n DEBUG_BUILD && debug.log('[CloudflareClient] Disposing client...');\n\n super.dispose();\n\n if (this._unsubscribeSpanStart) {\n this._unsubscribeSpanStart();\n this._unsubscribeSpanStart = null;\n }\n if (this._unsubscribeSpanEnd) {\n this._unsubscribeSpanEnd();\n this._unsubscribeSpanEnd = null;\n }\n\n this._resetSpanCompletionPromise();\n (this as unknown as { _flushLock: ReturnType<typeof makeFlushLock> | void })._flushLock = undefined;\n }\n\n /** @inheritDoc */\n protected override _setupIntegrations(): void {\n // Clear AI provider skip registrations before setting up integrations.\n // The registry is module-global and Cloudflare calls `init()` per request, so without this a\n // single `ai` SDK call would suppress direct `env.AI.run` spans for the rest of the isolate's\n // life. Mirrors the same reset in the Node client.\n _INTERNAL_clearAiProviderSkips();\n super._setupIntegrations();\n }\n\n /**\n * Resets the span completion promise and resolve function.\n */\n private _resetSpanCompletionPromise(): void {\n this._pendingSpans.clear();\n this._spanCompletionPromise = null;\n this._resolveSpanCompletion = null;\n }\n}\n\ninterface BaseCloudflareOptions {\n /**\n * @ignore Used internally to disable the deDupeIntegration for workflows.\n * @hidden Used internally to disable the deDupeIntegration for workflows.\n * @default true\n */\n enableDedupe?: boolean;\n\n /**\n * The Cloudflare SDK is not OpenTelemetry native. By default (`true`) it does not set up a tracer\n * provider; spans are emitted via the SDK's own instrumentation and scopes are isolated with\n * AsyncLocalStorage.\n *\n * Set this to `false` to opt into the OpenTelemetry compatibility tracer, which captures spans\n * emitted via `@opentelemetry/api`. Big caveat: it does not handle custom context, always working\n * off the current scope. This is good enough for many, but not all, integrations.\n *\n * @default true\n */\n skipOpenTelemetrySetup?: boolean;\n\n /**\n * Enable trace propagation for RPC calls between Workers, Durable Objects, and Service Bindings.\n *\n * When enabled, trace context (sentry-trace + baggage) is propagated across:\n * - `stub.fetch()` calls to Durable Objects (via HTTP headers)\n * - Service binding `fetch()` calls (via HTTP headers)\n * - RPC method calls to Durable Objects and WorkerEntrypoints (via trailing argument)\n *\n * When enabled on the **receiver side** (DurableObject or WorkerEntrypoint), the SDK will also:\n * - Extract and continue traces from incoming RPC calls\n * - Create spans for each RPC method invocation\n * - Capture errors thrown by RPC methods\n *\n * **Important:** This option is enabled by default. Set it to `false` to opt out, e.g. if you\n * do not want trace context to leave your Worker via RPC calls.\n *\n * @default true\n * @example\n * ```ts\n * // Opt out of RPC trace propagation\n * export default Sentry.withSentry(\n * (env) => ({\n * dsn: env.SENTRY_DSN,\n * enableRpcTracePropagation: false,\n * }),\n * handler,\n * );\n * ```\n */\n enableRpcTracePropagation?: boolean;\n\n /**\n * Table names that should stay instrumented even though they match the reserved `cf_` prefix used\n * by Durable Object frameworks (`agents`, `partyserver`, ...) for their internal SQLite tables.\n *\n * By default, `exec` queries against `cf_`-prefixed tables are treated as framework noise and no\n * `db.query` span is created for them. If one of your own tables happens to use this prefix, add it\n * here to opt it back into instrumentation. Entries are matched against each table name in the\n * query summary — strings must match exactly, while regular expressions give you prefix/pattern\n * matching.\n *\n * @default []\n * @example\n * ```ts\n * export default Sentry.withSentry(\n * (env) => ({\n * dsn: env.SENTRY_DSN,\n * durableObjectSqlSpanAllowlist: ['cf_my_table', /^cf_reports_/],\n * }),\n * handler,\n * );\n * ```\n */\n durableObjectSqlSpanAllowlist?: Array<string | RegExp>;\n\n /**\n * KV keys that should stay instrumented even though they match a reserved prefix used by Durable\n * Object frameworks (`agents`, `partyserver`, ...) for their internal storage entries.\n *\n * By default, KV reads/writes (`get`, `put`, `delete`, `list`) of `cf_`- or `__ps_`-prefixed keys\n * are treated as framework noise and no `durable_object_storage_*` span is created for them,\n * mirroring how `cf_`-prefixed SQL tables are handled (see {@link durableObjectSqlSpanAllowlist}).\n * If one of your own keys happens to use such a prefix, add it here to opt it back into\n * instrumentation. Strings must match exactly, while regular expressions give you prefix/pattern\n * matching.\n *\n * @default []\n * @example\n * ```ts\n * export default Sentry.withSentry(\n * (env) => ({\n * dsn: env.SENTRY_DSN,\n * durableObjectStorageSpanAllowlist: ['cf_my_key', /^cf_reports_/],\n * }),\n * handler,\n * );\n * ```\n */\n durableObjectStorageSpanAllowlist?: Array<string | RegExp>;\n\n /**\n * If you use Spotlight by Sentry during development, use\n * this option to forward captured Sentry events to Spotlight.\n *\n * Either set it to true, or provide a specific Spotlight Sidecar URL.\n *\n * More details: https://spotlightjs.com/\n *\n * IMPORTANT: Only set this option to `true` while developing, not in production!\n */\n spotlight?: boolean | string;\n}\n\n/**\n * Configuration options for the Sentry Cloudflare SDK\n *\n * @see @sentry/core Options for more information.\n */\nexport interface CloudflareOptions extends Options<CloudflareTransportOptions>, BaseCloudflareOptions {\n ctx?: ExecutionContextCompat;\n}\n\n/**\n * Configuration options for the Sentry Cloudflare SDK Client class\n *\n * @see CloudflareClient for more information.\n */\nexport interface CloudflareClientOptions extends ClientOptions<CloudflareTransportOptions>, BaseCloudflareOptions {\n flushLock?: ReturnType<typeof makeFlushLock>;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);
2
+
3
+ export { DEBUG_BUILD };
4
+ //# sourceMappingURL=debug-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-build.js","sources":["../../../src/debug-build.ts"],"sourcesContent":["declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n"],"names":[],"mappings":"AAOO,MAAM,WAAA,IAAc,OAAA,gBAAA,KAAA,WAAA,IAAA,gBAAA;;;;"}
@@ -0,0 +1,9 @@
1
+ function defineCloudflareOptions(optionsOrCallback) {
2
+ if (typeof optionsOrCallback === "function") {
3
+ return optionsOrCallback;
4
+ }
5
+ return () => optionsOrCallback;
6
+ }
7
+
8
+ export { defineCloudflareOptions };
9
+ //# sourceMappingURL=defineCloudflareOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineCloudflareOptions.js","sources":["../../../src/defineCloudflareOptions.ts"],"sourcesContent":["import type { CloudflareOptions } from './client';\nimport type { DefaultEnv } from './types';\n\n/**\n * Define the Sentry options for a Cloudflare Worker in a dedicated module.\n *\n * This is the recommended way to configure the SDK when using the Vite plugin's\n * auto-instrumentation: place an `instrument.server.{ts,js,mjs}` file next to\n * the worker entry whose **default export** is the result of this function. The\n * plugin picks it up automatically and hands it to `withSentry`.\n *\n * Unlike Node's `Sentry.init(...)`, the options cannot be applied at module\n * load time on Cloudflare: the DSN and other settings typically come from the\n * per-request `env`, which only exists inside the handler. Pass a callback to\n * read from `env`, or a static object when no `env` access is needed — either\n * way you get full type-checking and autocomplete on {@link CloudflareOptions}.\n *\n * At runtime this is a thin pass-through; it only normalizes a static object\n * into a callback so the plugin always imports a `(env) => options` function.\n *\n * @example\n * ```ts\n * // src/instrument.server.ts\n * import { defineCloudflareOptions } from '@sentry/cloudflare';\n *\n * export default defineCloudflareOptions((env) => ({\n * dsn: env.SENTRY_DSN,\n * tracesSampleRate: 1.0,\n * }));\n * ```\n *\n * @example\n * ```ts\n * // Static options — no `env` access needed\n * export default defineCloudflareOptions({ tracesSampleRate: 1.0 });\n * ```\n */\nexport function defineCloudflareOptions<Env = DefaultEnv>(\n optionsOrCallback: CloudflareOptions | ((env: Env) => CloudflareOptions | undefined),\n): (env: Env) => CloudflareOptions | undefined {\n if (typeof optionsOrCallback === 'function') {\n return optionsOrCallback;\n }\n\n return () => optionsOrCallback;\n}\n"],"names":[],"mappings":"AAqCO,SAAS,wBACd,iBAAA,EAC6C;AAC7C,EAAA,IAAI,OAAO,sBAAsB,UAAA,EAAY;AAC3C,IAAA,OAAO,iBAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAM,iBAAA;AACf;;;;"}