@sentry/node 10.62.0 → 10.64.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 (497) hide show
  1. package/build/cjs/index.js +15 -14
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/integrations/featureFlagShims/launchDarkly.js.map +1 -1
  4. package/build/cjs/integrations/featureFlagShims/openFeature.js.map +1 -1
  5. package/build/cjs/integrations/featureFlagShims/statsig.js.map +1 -1
  6. package/build/cjs/integrations/featureFlagShims/unleash.js.map +1 -1
  7. package/build/cjs/integrations/fs/index.js.map +1 -1
  8. package/build/cjs/integrations/http.js.map +1 -1
  9. package/build/cjs/integrations/node-fetch.js +24 -0
  10. package/build/cjs/integrations/node-fetch.js.map +1 -0
  11. package/build/cjs/integrations/tracing/amqplib/index.js.map +1 -1
  12. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js +0 -6
  13. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  14. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js +11 -10
  15. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  16. package/build/cjs/integrations/tracing/connect/index.js.map +1 -1
  17. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +2 -2
  18. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  19. package/build/cjs/integrations/tracing/dataloader/index.js.map +1 -1
  20. package/build/cjs/integrations/tracing/express.js.map +1 -1
  21. package/build/cjs/integrations/tracing/fastify/index.js +7 -103
  22. package/build/cjs/integrations/tracing/fastify/index.js.map +1 -1
  23. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +4 -5
  24. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  25. package/build/cjs/integrations/tracing/firebase/firebase.js.map +1 -1
  26. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js +9 -9
  27. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  28. package/build/cjs/integrations/tracing/genericPool/index.js.map +1 -1
  29. package/build/cjs/integrations/tracing/graphql/index.js.map +1 -1
  30. package/build/cjs/integrations/tracing/hapi/index.js.map +1 -1
  31. package/build/cjs/integrations/tracing/hapi/vendored/utils.js +8 -9
  32. package/build/cjs/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  33. package/build/cjs/integrations/tracing/hono/index.js +7 -7
  34. package/build/cjs/integrations/tracing/hono/index.js.map +1 -1
  35. package/build/cjs/integrations/tracing/index.js +0 -1
  36. package/build/cjs/integrations/tracing/index.js.map +1 -1
  37. package/build/cjs/integrations/tracing/kafka/index.js.map +1 -1
  38. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js +2 -1
  39. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  40. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js +0 -12
  41. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  42. package/build/cjs/integrations/tracing/kafka/vendored/utils.js +12 -11
  43. package/build/cjs/integrations/tracing/kafka/vendored/utils.js.map +1 -1
  44. package/build/cjs/integrations/tracing/knex/index.js.map +1 -1
  45. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +11 -10
  46. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  47. package/build/cjs/integrations/tracing/knex/vendored/semconv.js +0 -16
  48. package/build/cjs/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  49. package/build/cjs/integrations/tracing/koa/index.js.map +1 -1
  50. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +2 -2
  51. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  52. package/build/cjs/integrations/tracing/koa/vendored/utils.js +2 -2
  53. package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
  54. package/build/cjs/integrations/tracing/lrumemoizer/index.js.map +1 -1
  55. package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js +4 -2
  56. package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  57. package/build/cjs/integrations/tracing/mongo/index.js.map +1 -1
  58. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -12
  59. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  60. package/build/cjs/integrations/tracing/mongo/vendored/utils.js +12 -11
  61. package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  62. package/build/cjs/integrations/tracing/mongoose/index.js +3 -2
  63. package/build/cjs/integrations/tracing/mongoose/index.js.map +1 -1
  64. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +11 -8
  65. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  66. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -12
  67. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  68. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +9 -9
  69. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  70. package/build/cjs/integrations/tracing/mysql/index.js.map +1 -1
  71. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js +36 -129
  72. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  73. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js +0 -14
  74. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  75. package/build/cjs/integrations/tracing/mysql/vendored/utils.js +2 -27
  76. package/build/cjs/integrations/tracing/mysql/vendored/utils.js.map +1 -1
  77. package/build/cjs/integrations/tracing/mysql2/index.js.map +1 -1
  78. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +7 -4
  79. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  80. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js +0 -12
  81. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  82. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js +7 -4
  83. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  84. package/build/cjs/integrations/tracing/postgres/index.js.map +1 -1
  85. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js +0 -12
  86. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  87. package/build/cjs/integrations/tracing/postgres/vendored/utils.js +12 -11
  88. package/build/cjs/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  89. package/build/cjs/integrations/tracing/postgresjs.js +8 -7
  90. package/build/cjs/integrations/tracing/postgresjs.js.map +1 -1
  91. package/build/cjs/integrations/tracing/prisma/index.js +48 -62
  92. package/build/cjs/integrations/tracing/prisma/index.js.map +1 -1
  93. package/build/cjs/integrations/tracing/prisma/vendored/active-tracing-helper.js +83 -57
  94. package/build/cjs/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +1 -1
  95. package/build/cjs/integrations/tracing/prisma/vendored/constants.js.map +1 -1
  96. package/build/cjs/integrations/tracing/prisma/vendored/global.js +2 -2
  97. package/build/cjs/integrations/tracing/prisma/vendored/global.js.map +1 -1
  98. package/build/cjs/integrations/tracing/prisma/vendored/instrumentation.js +1 -6
  99. package/build/cjs/integrations/tracing/prisma/vendored/instrumentation.js.map +1 -1
  100. package/build/cjs/integrations/tracing/redis/cache.js +41 -0
  101. package/build/cjs/integrations/tracing/redis/cache.js.map +1 -0
  102. package/build/cjs/integrations/tracing/redis/index.js +16 -38
  103. package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
  104. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +22 -13
  105. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  106. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +21 -15
  107. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  108. package/build/cjs/integrations/tracing/redis/vendored/semconv.js +0 -8
  109. package/build/cjs/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  110. package/build/cjs/integrations/tracing/tedious/index.js.map +1 -1
  111. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js +9 -8
  112. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  113. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js +0 -12
  114. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  115. package/build/cjs/integrations/tracing/vercelai/constants.js.map +1 -1
  116. package/build/cjs/integrations/tracing/vercelai/index.js +2 -4
  117. package/build/cjs/integrations/tracing/vercelai/index.js.map +1 -1
  118. package/build/cjs/sdk/diagnosticsChannelInjection.js.map +1 -1
  119. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +18 -6
  120. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  121. package/build/cjs/sdk/index.js +2 -2
  122. package/build/cjs/sdk/index.js.map +1 -1
  123. package/build/cjs/sdk/initOtel.js +36 -0
  124. package/build/cjs/sdk/initOtel.js.map +1 -1
  125. package/build/esm/index.js +2 -2
  126. package/build/esm/integrations/featureFlagShims/launchDarkly.js.map +1 -1
  127. package/build/esm/integrations/featureFlagShims/openFeature.js.map +1 -1
  128. package/build/esm/integrations/featureFlagShims/statsig.js.map +1 -1
  129. package/build/esm/integrations/featureFlagShims/unleash.js.map +1 -1
  130. package/build/esm/integrations/fs/index.js.map +1 -1
  131. package/build/esm/integrations/http.js.map +1 -1
  132. package/build/esm/integrations/node-fetch.js +22 -0
  133. package/build/esm/integrations/node-fetch.js.map +1 -0
  134. package/build/esm/integrations/tracing/amqplib/index.js.map +1 -1
  135. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js +1 -4
  136. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  137. package/build/esm/integrations/tracing/amqplib/vendored/utils.js +7 -6
  138. package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  139. package/build/esm/integrations/tracing/connect/index.js.map +1 -1
  140. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +2 -2
  141. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  142. package/build/esm/integrations/tracing/dataloader/index.js.map +1 -1
  143. package/build/esm/integrations/tracing/express.js.map +1 -1
  144. package/build/esm/integrations/tracing/fastify/index.js +8 -103
  145. package/build/esm/integrations/tracing/fastify/index.js.map +1 -1
  146. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +5 -6
  147. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  148. package/build/esm/integrations/tracing/firebase/firebase.js.map +1 -1
  149. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js +7 -7
  150. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  151. package/build/esm/integrations/tracing/genericPool/index.js.map +1 -1
  152. package/build/esm/integrations/tracing/graphql/index.js.map +1 -1
  153. package/build/esm/integrations/tracing/hapi/index.js.map +1 -1
  154. package/build/esm/integrations/tracing/hapi/vendored/utils.js +3 -4
  155. package/build/esm/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  156. package/build/esm/integrations/tracing/hono/index.js +3 -3
  157. package/build/esm/integrations/tracing/hono/index.js.map +1 -1
  158. package/build/esm/integrations/tracing/index.js +1 -2
  159. package/build/esm/integrations/tracing/index.js.map +1 -1
  160. package/build/esm/integrations/tracing/kafka/index.js.map +1 -1
  161. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js +3 -2
  162. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  163. package/build/esm/integrations/tracing/kafka/vendored/semconv.js +1 -7
  164. package/build/esm/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  165. package/build/esm/integrations/tracing/kafka/vendored/utils.js +11 -10
  166. package/build/esm/integrations/tracing/kafka/vendored/utils.js.map +1 -1
  167. package/build/esm/integrations/tracing/knex/index.js.map +1 -1
  168. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +10 -9
  169. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  170. package/build/esm/integrations/tracing/knex/vendored/semconv.js +1 -9
  171. package/build/esm/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  172. package/build/esm/integrations/tracing/koa/index.js.map +1 -1
  173. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +2 -2
  174. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  175. package/build/esm/integrations/tracing/koa/vendored/utils.js +2 -2
  176. package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
  177. package/build/esm/integrations/tracing/lrumemoizer/index.js.map +1 -1
  178. package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js +5 -3
  179. package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  180. package/build/esm/integrations/tracing/mongo/index.js.map +1 -1
  181. package/build/esm/integrations/tracing/mongo/vendored/semconv.js +1 -7
  182. package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  183. package/build/esm/integrations/tracing/mongo/vendored/utils.js +9 -8
  184. package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  185. package/build/esm/integrations/tracing/mongoose/index.js +4 -3
  186. package/build/esm/integrations/tracing/mongoose/index.js.map +1 -1
  187. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +9 -6
  188. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  189. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +1 -7
  190. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  191. package/build/esm/integrations/tracing/mongoose/vendored/utils.js +10 -10
  192. package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  193. package/build/esm/integrations/tracing/mysql/index.js.map +1 -1
  194. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js +38 -131
  195. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  196. package/build/esm/integrations/tracing/mysql/vendored/semconv.js +1 -8
  197. package/build/esm/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  198. package/build/esm/integrations/tracing/mysql/vendored/utils.js +3 -25
  199. package/build/esm/integrations/tracing/mysql/vendored/utils.js.map +1 -1
  200. package/build/esm/integrations/tracing/mysql2/index.js.map +1 -1
  201. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +6 -3
  202. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  203. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js +1 -7
  204. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  205. package/build/esm/integrations/tracing/mysql2/vendored/utils.js +8 -5
  206. package/build/esm/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  207. package/build/esm/integrations/tracing/postgres/index.js.map +1 -1
  208. package/build/esm/integrations/tracing/postgres/vendored/semconv.js +1 -7
  209. package/build/esm/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  210. package/build/esm/integrations/tracing/postgres/vendored/utils.js +13 -12
  211. package/build/esm/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  212. package/build/esm/integrations/tracing/postgresjs.js +7 -6
  213. package/build/esm/integrations/tracing/postgresjs.js.map +1 -1
  214. package/build/esm/integrations/tracing/prisma/index.js +49 -63
  215. package/build/esm/integrations/tracing/prisma/index.js.map +1 -1
  216. package/build/esm/integrations/tracing/prisma/vendored/active-tracing-helper.js +83 -57
  217. package/build/esm/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +1 -1
  218. package/build/esm/integrations/tracing/prisma/vendored/constants.js.map +1 -1
  219. package/build/esm/integrations/tracing/prisma/vendored/global.js +2 -2
  220. package/build/esm/integrations/tracing/prisma/vendored/global.js.map +1 -1
  221. package/build/esm/integrations/tracing/prisma/vendored/instrumentation.js +1 -6
  222. package/build/esm/integrations/tracing/prisma/vendored/instrumentation.js.map +1 -1
  223. package/build/esm/integrations/tracing/redis/cache.js +38 -0
  224. package/build/esm/integrations/tracing/redis/cache.js.map +1 -0
  225. package/build/esm/integrations/tracing/redis/index.js +12 -37
  226. package/build/esm/integrations/tracing/redis/index.js.map +1 -1
  227. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +19 -10
  228. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  229. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +16 -10
  230. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  231. package/build/esm/integrations/tracing/redis/vendored/semconv.js +1 -5
  232. package/build/esm/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  233. package/build/esm/integrations/tracing/tedious/index.js.map +1 -1
  234. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js +8 -7
  235. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  236. package/build/esm/integrations/tracing/tedious/vendored/semconv.js +1 -7
  237. package/build/esm/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  238. package/build/esm/integrations/tracing/vercelai/constants.js.map +1 -1
  239. package/build/esm/integrations/tracing/vercelai/index.js +3 -5
  240. package/build/esm/integrations/tracing/vercelai/index.js.map +1 -1
  241. package/build/esm/package.json +1 -1
  242. package/build/esm/sdk/diagnosticsChannelInjection.js.map +1 -1
  243. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +19 -8
  244. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  245. package/build/esm/sdk/index.js +1 -1
  246. package/build/esm/sdk/initOtel.js +38 -2
  247. package/build/esm/sdk/initOtel.js.map +1 -1
  248. package/build/types/index.d.ts +1 -1
  249. package/build/types/index.d.ts.map +1 -1
  250. package/build/types/integrations/featureFlagShims/launchDarkly.d.ts +3 -1
  251. package/build/types/integrations/featureFlagShims/launchDarkly.d.ts.map +1 -1
  252. package/build/types/integrations/featureFlagShims/openFeature.d.ts +3 -1
  253. package/build/types/integrations/featureFlagShims/openFeature.d.ts.map +1 -1
  254. package/build/types/integrations/featureFlagShims/statsig.d.ts +3 -1
  255. package/build/types/integrations/featureFlagShims/statsig.d.ts.map +1 -1
  256. package/build/types/integrations/featureFlagShims/unleash.d.ts +3 -1
  257. package/build/types/integrations/featureFlagShims/unleash.d.ts.map +1 -1
  258. package/build/types/integrations/fs/index.d.ts +3 -1
  259. package/build/types/integrations/fs/index.d.ts.map +1 -1
  260. package/build/types/integrations/http.d.ts +3 -1
  261. package/build/types/integrations/http.d.ts.map +1 -1
  262. package/build/types/integrations/node-fetch.d.ts +9 -0
  263. package/build/types/integrations/node-fetch.d.ts.map +1 -0
  264. package/build/types/integrations/tracing/amqplib/index.d.ts +3 -1
  265. package/build/types/integrations/tracing/amqplib/index.d.ts.map +1 -1
  266. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
  267. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts.map +1 -1
  268. package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +1 -1
  269. package/build/types/integrations/tracing/anthropic-ai/index.d.ts +3 -1
  270. package/build/types/integrations/tracing/anthropic-ai/index.d.ts.map +1 -1
  271. package/build/types/integrations/tracing/connect/index.d.ts +3 -1
  272. package/build/types/integrations/tracing/connect/index.d.ts.map +1 -1
  273. package/build/types/integrations/tracing/dataloader/index.d.ts +3 -1
  274. package/build/types/integrations/tracing/dataloader/index.d.ts.map +1 -1
  275. package/build/types/integrations/tracing/express.d.ts +3 -1
  276. package/build/types/integrations/tracing/express.d.ts.map +1 -1
  277. package/build/types/integrations/tracing/fastify/index.d.ts +6 -6
  278. package/build/types/integrations/tracing/fastify/index.d.ts.map +1 -1
  279. package/build/types/integrations/tracing/fastify/v3/instrumentation.d.ts.map +1 -1
  280. package/build/types/integrations/tracing/firebase/firebase.d.ts +3 -1
  281. package/build/types/integrations/tracing/firebase/firebase.d.ts.map +1 -1
  282. package/build/types/integrations/tracing/genericPool/index.d.ts +3 -1
  283. package/build/types/integrations/tracing/genericPool/index.d.ts.map +1 -1
  284. package/build/types/integrations/tracing/google-genai/index.d.ts +3 -1
  285. package/build/types/integrations/tracing/google-genai/index.d.ts.map +1 -1
  286. package/build/types/integrations/tracing/graphql/index.d.ts +3 -1
  287. package/build/types/integrations/tracing/graphql/index.d.ts.map +1 -1
  288. package/build/types/integrations/tracing/hapi/index.d.ts +3 -1
  289. package/build/types/integrations/tracing/hapi/index.d.ts.map +1 -1
  290. package/build/types/integrations/tracing/hapi/vendored/utils.d.ts.map +1 -1
  291. package/build/types/integrations/tracing/hono/index.d.ts +3 -1
  292. package/build/types/integrations/tracing/hono/index.d.ts.map +1 -1
  293. package/build/types/integrations/tracing/index.d.ts.map +1 -1
  294. package/build/types/integrations/tracing/kafka/index.d.ts +3 -1
  295. package/build/types/integrations/tracing/kafka/index.d.ts.map +1 -1
  296. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
  297. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts.map +1 -1
  298. package/build/types/integrations/tracing/kafka/vendored/utils.d.ts.map +1 -1
  299. package/build/types/integrations/tracing/knex/index.d.ts +3 -1
  300. package/build/types/integrations/tracing/knex/index.d.ts.map +1 -1
  301. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
  302. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts.map +1 -1
  303. package/build/types/integrations/tracing/koa/index.d.ts +3 -1
  304. package/build/types/integrations/tracing/koa/index.d.ts.map +1 -1
  305. package/build/types/integrations/tracing/langchain/index.d.ts +3 -1
  306. package/build/types/integrations/tracing/langchain/index.d.ts.map +1 -1
  307. package/build/types/integrations/tracing/langgraph/index.d.ts +3 -1
  308. package/build/types/integrations/tracing/langgraph/index.d.ts.map +1 -1
  309. package/build/types/integrations/tracing/lrumemoizer/index.d.ts +3 -1
  310. package/build/types/integrations/tracing/lrumemoizer/index.d.ts.map +1 -1
  311. package/build/types/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts.map +1 -1
  312. package/build/types/integrations/tracing/mongo/index.d.ts +3 -1
  313. package/build/types/integrations/tracing/mongo/index.d.ts.map +1 -1
  314. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
  315. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +1 -1
  316. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -1
  317. package/build/types/integrations/tracing/mongoose/index.d.ts +3 -1
  318. package/build/types/integrations/tracing/mongoose/index.d.ts.map +1 -1
  319. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
  320. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
  321. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +1 -1
  322. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
  323. package/build/types/integrations/tracing/mysql/index.d.ts +3 -1
  324. package/build/types/integrations/tracing/mysql/index.d.ts.map +1 -1
  325. package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts +3 -17
  326. package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts.map +1 -1
  327. package/build/types/integrations/tracing/mysql/vendored/mysql-types.d.ts +16 -16
  328. package/build/types/integrations/tracing/mysql/vendored/mysql-types.d.ts.map +1 -1
  329. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts +1 -70
  330. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts.map +1 -1
  331. package/build/types/integrations/tracing/mysql/vendored/utils.d.ts +6 -9
  332. package/build/types/integrations/tracing/mysql/vendored/utils.d.ts.map +1 -1
  333. package/build/types/integrations/tracing/mysql2/index.d.ts +3 -1
  334. package/build/types/integrations/tracing/mysql2/index.d.ts.map +1 -1
  335. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +1 -1
  336. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
  337. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts.map +1 -1
  338. package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts.map +1 -1
  339. package/build/types/integrations/tracing/openai/index.d.ts +3 -1
  340. package/build/types/integrations/tracing/openai/index.d.ts.map +1 -1
  341. package/build/types/integrations/tracing/postgres/index.d.ts +3 -1
  342. package/build/types/integrations/tracing/postgres/index.d.ts.map +1 -1
  343. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
  344. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts.map +1 -1
  345. package/build/types/integrations/tracing/postgres/vendored/utils.d.ts.map +1 -1
  346. package/build/types/integrations/tracing/postgresjs.d.ts +3 -1
  347. package/build/types/integrations/tracing/postgresjs.d.ts.map +1 -1
  348. package/build/types/integrations/tracing/prisma/index.d.ts +5 -21
  349. package/build/types/integrations/tracing/prisma/index.d.ts.map +1 -1
  350. package/build/types/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts +5 -7
  351. package/build/types/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts.map +1 -1
  352. package/build/types/integrations/tracing/prisma/vendored/constants.d.ts.map +1 -1
  353. package/build/types/integrations/tracing/prisma/vendored/global.d.ts.map +1 -1
  354. package/build/types/integrations/tracing/prisma/vendored/instrumentation.d.ts +2 -4
  355. package/build/types/integrations/tracing/prisma/vendored/instrumentation.d.ts.map +1 -1
  356. package/build/types/integrations/tracing/prisma/vendored/types.d.ts +5 -23
  357. package/build/types/integrations/tracing/prisma/vendored/types.d.ts.map +1 -1
  358. package/build/types/integrations/tracing/redis/cache.d.ts +22 -0
  359. package/build/types/integrations/tracing/redis/cache.d.ts.map +1 -0
  360. package/build/types/integrations/tracing/redis/index.d.ts +6 -22
  361. package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
  362. package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts.map +1 -1
  363. package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +1 -1
  364. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
  365. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts.map +1 -1
  366. package/build/types/integrations/tracing/tedious/index.d.ts +3 -1
  367. package/build/types/integrations/tracing/tedious/index.d.ts.map +1 -1
  368. package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts.map +1 -1
  369. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
  370. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts.map +1 -1
  371. package/build/types/integrations/tracing/vercelai/constants.d.ts +1 -1
  372. package/build/types/integrations/tracing/vercelai/constants.d.ts.map +1 -1
  373. package/build/types/integrations/tracing/vercelai/index.d.ts +3 -1
  374. package/build/types/integrations/tracing/vercelai/index.d.ts.map +1 -1
  375. package/build/types/sdk/diagnosticsChannelInjection.d.ts +1 -1
  376. package/build/types/sdk/diagnosticsChannelInjection.d.ts.map +1 -1
  377. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
  378. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +1 -1
  379. package/build/types/sdk/initOtel.d.ts +2 -3
  380. package/build/types/sdk/initOtel.d.ts.map +1 -1
  381. package/build/types-ts3.8/index.d.ts +1 -1
  382. package/build/types-ts3.8/integrations/featureFlagShims/launchDarkly.d.ts +3 -1
  383. package/build/types-ts3.8/integrations/featureFlagShims/openFeature.d.ts +3 -1
  384. package/build/types-ts3.8/integrations/featureFlagShims/statsig.d.ts +3 -1
  385. package/build/types-ts3.8/integrations/featureFlagShims/unleash.d.ts +3 -1
  386. package/build/types-ts3.8/integrations/fs/index.d.ts +3 -1
  387. package/build/types-ts3.8/integrations/http.d.ts +3 -1
  388. package/build/types-ts3.8/integrations/node-fetch.d.ts +9 -0
  389. package/build/types-ts3.8/integrations/tracing/amqplib/index.d.ts +3 -1
  390. package/build/types-ts3.8/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
  391. package/build/types-ts3.8/integrations/tracing/anthropic-ai/index.d.ts +3 -1
  392. package/build/types-ts3.8/integrations/tracing/connect/index.d.ts +3 -1
  393. package/build/types-ts3.8/integrations/tracing/dataloader/index.d.ts +3 -1
  394. package/build/types-ts3.8/integrations/tracing/express.d.ts +3 -1
  395. package/build/types-ts3.8/integrations/tracing/fastify/index.d.ts +6 -6
  396. package/build/types-ts3.8/integrations/tracing/firebase/firebase.d.ts +3 -1
  397. package/build/types-ts3.8/integrations/tracing/genericPool/index.d.ts +3 -1
  398. package/build/types-ts3.8/integrations/tracing/google-genai/index.d.ts +3 -1
  399. package/build/types-ts3.8/integrations/tracing/graphql/index.d.ts +3 -1
  400. package/build/types-ts3.8/integrations/tracing/hapi/index.d.ts +3 -1
  401. package/build/types-ts3.8/integrations/tracing/hono/index.d.ts +3 -1
  402. package/build/types-ts3.8/integrations/tracing/kafka/index.d.ts +3 -1
  403. package/build/types-ts3.8/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
  404. package/build/types-ts3.8/integrations/tracing/knex/index.d.ts +3 -1
  405. package/build/types-ts3.8/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
  406. package/build/types-ts3.8/integrations/tracing/koa/index.d.ts +3 -1
  407. package/build/types-ts3.8/integrations/tracing/langchain/index.d.ts +3 -1
  408. package/build/types-ts3.8/integrations/tracing/langgraph/index.d.ts +3 -1
  409. package/build/types-ts3.8/integrations/tracing/lrumemoizer/index.d.ts +3 -1
  410. package/build/types-ts3.8/integrations/tracing/mongo/index.d.ts +3 -1
  411. package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
  412. package/build/types-ts3.8/integrations/tracing/mongoose/index.d.ts +3 -1
  413. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
  414. package/build/types-ts3.8/integrations/tracing/mysql/index.d.ts +3 -1
  415. package/build/types-ts3.8/integrations/tracing/mysql/vendored/instrumentation.d.ts +3 -17
  416. package/build/types-ts3.8/integrations/tracing/mysql/vendored/mysql-types.d.ts +16 -16
  417. package/build/types-ts3.8/integrations/tracing/mysql/vendored/semconv.d.ts +1 -70
  418. package/build/types-ts3.8/integrations/tracing/mysql/vendored/utils.d.ts +6 -9
  419. package/build/types-ts3.8/integrations/tracing/mysql2/index.d.ts +3 -1
  420. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
  421. package/build/types-ts3.8/integrations/tracing/openai/index.d.ts +3 -1
  422. package/build/types-ts3.8/integrations/tracing/postgres/index.d.ts +3 -1
  423. package/build/types-ts3.8/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
  424. package/build/types-ts3.8/integrations/tracing/postgresjs.d.ts +3 -1
  425. package/build/types-ts3.8/integrations/tracing/prisma/index.d.ts +5 -21
  426. package/build/types-ts3.8/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts +5 -7
  427. package/build/types-ts3.8/integrations/tracing/prisma/vendored/instrumentation.d.ts +2 -4
  428. package/build/types-ts3.8/integrations/tracing/prisma/vendored/types.d.ts +5 -23
  429. package/build/types-ts3.8/integrations/tracing/redis/cache.d.ts +22 -0
  430. package/build/types-ts3.8/integrations/tracing/redis/index.d.ts +6 -22
  431. package/build/types-ts3.8/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
  432. package/build/types-ts3.8/integrations/tracing/tedious/index.d.ts +3 -1
  433. package/build/types-ts3.8/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
  434. package/build/types-ts3.8/integrations/tracing/vercelai/constants.d.ts +1 -1
  435. package/build/types-ts3.8/integrations/tracing/vercelai/index.d.ts +3 -1
  436. package/build/types-ts3.8/sdk/diagnosticsChannelInjection.d.ts +1 -1
  437. package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
  438. package/build/types-ts3.8/sdk/initOtel.d.ts +3 -4
  439. package/package.json +8 -8
  440. package/build/cjs/integrations/node-fetch/index.js +0 -80
  441. package/build/cjs/integrations/node-fetch/index.js.map +0 -1
  442. package/build/cjs/integrations/node-fetch/vendored/semconv.js +0 -28
  443. package/build/cjs/integrations/node-fetch/vendored/semconv.js.map +0 -1
  444. package/build/cjs/integrations/node-fetch/vendored/undici.js +0 -302
  445. package/build/cjs/integrations/node-fetch/vendored/undici.js.map +0 -1
  446. package/build/cjs/integrations/tracing/fastify/vendored/instrumentation.js +0 -387
  447. package/build/cjs/integrations/tracing/fastify/vendored/instrumentation.js.map +0 -1
  448. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js +0 -6
  449. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
  450. package/build/cjs/integrations/tracing/mysql/vendored/AttributeNames.js +0 -9
  451. package/build/cjs/integrations/tracing/mysql/vendored/AttributeNames.js.map +0 -1
  452. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js +0 -34
  453. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
  454. package/build/esm/integrations/node-fetch/index.js +0 -77
  455. package/build/esm/integrations/node-fetch/index.js.map +0 -1
  456. package/build/esm/integrations/node-fetch/vendored/semconv.js +0 -15
  457. package/build/esm/integrations/node-fetch/vendored/semconv.js.map +0 -1
  458. package/build/esm/integrations/node-fetch/vendored/undici.js +0 -300
  459. package/build/esm/integrations/node-fetch/vendored/undici.js.map +0 -1
  460. package/build/esm/integrations/tracing/fastify/vendored/instrumentation.js +0 -385
  461. package/build/esm/integrations/tracing/fastify/vendored/instrumentation.js.map +0 -1
  462. package/build/esm/integrations/tracing/hapi/vendored/semconv.js +0 -4
  463. package/build/esm/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
  464. package/build/esm/integrations/tracing/mysql/vendored/AttributeNames.js +0 -7
  465. package/build/esm/integrations/tracing/mysql/vendored/AttributeNames.js.map +0 -1
  466. package/build/esm/integrations/tracing/redis/vendored/redis-common.js +0 -32
  467. package/build/esm/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
  468. package/build/types/integrations/node-fetch/index.d.ts +0 -36
  469. package/build/types/integrations/node-fetch/index.d.ts.map +0 -1
  470. package/build/types/integrations/node-fetch/vendored/internal-types.d.ts +0 -25
  471. package/build/types/integrations/node-fetch/vendored/internal-types.d.ts.map +0 -1
  472. package/build/types/integrations/node-fetch/vendored/semconv.d.ts +0 -13
  473. package/build/types/integrations/node-fetch/vendored/semconv.d.ts.map +0 -1
  474. package/build/types/integrations/node-fetch/vendored/types.d.ts +0 -60
  475. package/build/types/integrations/node-fetch/vendored/types.d.ts.map +0 -1
  476. package/build/types/integrations/node-fetch/vendored/undici.d.ts +0 -21
  477. package/build/types/integrations/node-fetch/vendored/undici.d.ts.map +0 -1
  478. package/build/types/integrations/tracing/fastify/vendored/instrumentation.d.ts +0 -27
  479. package/build/types/integrations/tracing/fastify/vendored/instrumentation.d.ts.map +0 -1
  480. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
  481. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts.map +0 -1
  482. package/build/types/integrations/tracing/mysql/vendored/AttributeNames.d.ts +0 -4
  483. package/build/types/integrations/tracing/mysql/vendored/AttributeNames.d.ts.map +0 -1
  484. package/build/types/integrations/tracing/mysql/vendored/types.d.ts +0 -9
  485. package/build/types/integrations/tracing/mysql/vendored/types.d.ts.map +0 -1
  486. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
  487. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts.map +0 -1
  488. package/build/types-ts3.8/integrations/node-fetch/index.d.ts +0 -36
  489. package/build/types-ts3.8/integrations/node-fetch/vendored/internal-types.d.ts +0 -25
  490. package/build/types-ts3.8/integrations/node-fetch/vendored/semconv.d.ts +0 -13
  491. package/build/types-ts3.8/integrations/node-fetch/vendored/types.d.ts +0 -60
  492. package/build/types-ts3.8/integrations/node-fetch/vendored/undici.d.ts +0 -21
  493. package/build/types-ts3.8/integrations/tracing/fastify/vendored/instrumentation.d.ts +0 -27
  494. package/build/types-ts3.8/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
  495. package/build/types-ts3.8/integrations/tracing/mysql/vendored/AttributeNames.d.ts +0 -4
  496. package/build/types-ts3.8/integrations/tracing/mysql/vendored/types.d.ts +0 -9
  497. package/build/types-ts3.8/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
@@ -1,35 +1,14 @@
1
- import { context, SpanKind, trace, SpanStatusCode } from '@opentelemetry/api';
2
- import { InstrumentationBase, semconvStabilityFromStr, InstrumentationNodeModuleDefinition, isWrapped, SemconvStability } from '@opentelemetry/instrumentation';
3
- import { DB_SYSTEM_NAME_VALUE_MYSQL, ATTR_DB_SYSTEM_NAME, ATTR_DB_NAMESPACE, ATTR_DB_QUERY_TEXT, ATTR_SERVER_ADDRESS, ATTR_SERVER_PORT } from '@opentelemetry/semantic-conventions';
4
- import { METRIC_DB_CLIENT_CONNECTIONS_USAGE, DB_SYSTEM_VALUE_MYSQL, ATTR_DB_SYSTEM, ATTR_DB_CONNECTION_STRING, ATTR_DB_NAME, ATTR_DB_USER, ATTR_DB_STATEMENT, ATTR_NET_PEER_NAME, ATTR_NET_PEER_PORT } from './semconv.js';
5
- import { AttributeNames } from './AttributeNames.js';
6
- import { getPoolNameOld, getConfig, getDbQueryText, getSpanName, getDbValues, getJDBCString } from './utils.js';
7
- import { SDK_VERSION } from '@sentry/core';
1
+ import { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';
2
+ import { SDK_VERSION, getCurrentScope, withScope, startInactiveSpan, SPAN_KIND, withActiveSpan, bindScopeToEmitter, SPAN_STATUS_ERROR, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';
3
+ import { DB_STATEMENT, NET_PEER_NAME, DB_USER, DB_NAME, DB_SYSTEM, NET_PEER_PORT } from '@sentry/conventions/attributes';
4
+ import { DB_SYSTEM_VALUE_MYSQL, ATTR_DB_CONNECTION_STRING } from './semconv.js';
5
+ import { getConfig, getDbQueryText, getSpanName, getJDBCString } from './utils.js';
8
6
 
9
7
  const PACKAGE_NAME = "@sentry/instrumentation-mysql";
8
+ const ORIGIN = "auto.db.otel.mysql";
10
9
  class MySQLInstrumentation extends InstrumentationBase {
11
10
  constructor(config = {}) {
12
11
  super(PACKAGE_NAME, SDK_VERSION, config);
13
- this._setSemconvStabilityFromEnv();
14
- }
15
- // Used for testing.
16
- _setSemconvStabilityFromEnv() {
17
- this._netSemconvStability = semconvStabilityFromStr("http", process.env.OTEL_SEMCONV_STABILITY_OPT_IN);
18
- this._dbSemconvStability = semconvStabilityFromStr("database", process.env.OTEL_SEMCONV_STABILITY_OPT_IN);
19
- }
20
- _updateMetricInstruments() {
21
- this._connectionsUsageOld = this.meter.createUpDownCounter(METRIC_DB_CLIENT_CONNECTIONS_USAGE, {
22
- description: "The number of connections that are currently in state described by the state attribute.",
23
- unit: "{connection}"
24
- });
25
- }
26
- /**
27
- * Convenience function for updating the `db.client.connections.usage` metric.
28
- * The name "count" comes from the eventually replacement for this metric per
29
- * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count
30
- */
31
- _connCountAdd(n, poolNameOld, state) {
32
- this._connectionsUsageOld?.add(n, { state, name: poolNameOld });
33
12
  }
34
13
  init() {
35
14
  return [
@@ -79,26 +58,10 @@ class MySQLInstrumentation extends InstrumentationBase {
79
58
  const pool = originalCreatePool(...arguments);
80
59
  thisPlugin._wrap(pool, "query", thisPlugin._patchQuery(pool));
81
60
  thisPlugin._wrap(pool, "getConnection", thisPlugin._patchGetConnection(pool));
82
- thisPlugin._wrap(pool, "end", thisPlugin._patchPoolEnd(pool));
83
- thisPlugin._setPoolCallbacks(pool, "");
84
61
  return pool;
85
62
  };
86
63
  };
87
64
  }
88
- _patchPoolEnd(pool) {
89
- return (originalPoolEnd) => {
90
- const thisPlugin = this;
91
- return function end(callback) {
92
- const nAll = pool._allConnections.length;
93
- const nFree = pool._freeConnections.length;
94
- const nUsed = nAll - nFree;
95
- const poolNameOld = getPoolNameOld(pool);
96
- thisPlugin._connCountAdd(-nUsed, poolNameOld, "used");
97
- thisPlugin._connCountAdd(-nFree, poolNameOld, "idle");
98
- originalPoolEnd.apply(pool, arguments);
99
- };
100
- };
101
- }
102
65
  // global export function
103
66
  _patchCreatePoolCluster() {
104
67
  return (originalCreatePoolCluster) => {
@@ -106,29 +69,10 @@ class MySQLInstrumentation extends InstrumentationBase {
106
69
  return function createPool(_config) {
107
70
  const cluster = originalCreatePoolCluster(...arguments);
108
71
  thisPlugin._wrap(cluster, "getConnection", thisPlugin._patchGetConnection(cluster));
109
- thisPlugin._wrap(cluster, "add", thisPlugin._patchAdd(cluster));
110
72
  return cluster;
111
73
  };
112
74
  };
113
75
  }
114
- _patchAdd(cluster) {
115
- return (originalAdd) => {
116
- const thisPlugin = this;
117
- return function add(id, config) {
118
- if (!thisPlugin["_enabled"]) {
119
- thisPlugin._unwrap(cluster, "add");
120
- return originalAdd.apply(cluster, arguments);
121
- }
122
- originalAdd.apply(cluster, arguments);
123
- const nodes = cluster["_nodes"];
124
- if (nodes) {
125
- const nodeId = typeof id === "object" ? "CLUSTER::" + cluster._lastId : String(id);
126
- const pool = nodes[nodeId].pool;
127
- thisPlugin._setPoolCallbacks(pool, id);
128
- }
129
- };
130
- };
131
- }
132
76
  // method on cluster or pool
133
77
  _patchGetConnection(pool) {
134
78
  return (originalGetConnection) => {
@@ -156,7 +100,7 @@ class MySQLInstrumentation extends InstrumentationBase {
156
100
  }
157
101
  _getConnectionCallbackPatchFn(cb) {
158
102
  const thisPlugin = this;
159
- const activeContext = context.active();
103
+ const scope = getCurrentScope();
160
104
  return function(err, connection) {
161
105
  if (connection) {
162
106
  if (!isWrapped(connection.query)) {
@@ -164,7 +108,7 @@ class MySQLInstrumentation extends InstrumentationBase {
164
108
  }
165
109
  }
166
110
  if (typeof cb === "function") {
167
- context.with(activeContext, cb, this, err, connection);
111
+ withScope(scope, () => cb.call(this, err, connection));
168
112
  }
169
113
  };
170
114
  }
@@ -176,100 +120,63 @@ class MySQLInstrumentation extends InstrumentationBase {
176
120
  thisPlugin._unwrap(connection, "query");
177
121
  return originalQuery.apply(connection, arguments);
178
122
  }
179
- const attributes = {};
180
123
  const { host, port, database, user } = getConfig(connection.config);
181
- const portNumber = parseInt(port, 10);
182
- const dbQueryText = getDbQueryText(query);
183
- if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {
184
- attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;
185
- attributes[ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);
186
- attributes[ATTR_DB_NAME] = database;
187
- attributes[ATTR_DB_USER] = user;
188
- attributes[ATTR_DB_STATEMENT] = dbQueryText;
189
- }
190
- if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {
191
- attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;
192
- attributes[ATTR_DB_NAMESPACE] = database;
193
- attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;
194
- }
195
- if (thisPlugin._netSemconvStability & SemconvStability.OLD) {
196
- attributes[ATTR_NET_PEER_NAME] = host;
197
- if (!isNaN(portNumber)) {
198
- attributes[ATTR_NET_PEER_PORT] = portNumber;
199
- }
200
- }
201
- if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {
202
- attributes[ATTR_SERVER_ADDRESS] = host;
203
- if (!isNaN(portNumber)) {
204
- attributes[ATTR_SERVER_PORT] = portNumber;
205
- }
206
- }
207
- const span = thisPlugin.tracer.startSpan(getSpanName(query), {
208
- kind: SpanKind.CLIENT,
124
+ const portNumber = parseInt(String(port), 10);
125
+ const attributes = {
126
+ [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
127
+ [DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,
128
+ [ATTR_DB_CONNECTION_STRING]: getJDBCString(host, port, database),
129
+ [DB_NAME]: database,
130
+ [DB_USER]: user,
131
+ [DB_STATEMENT]: getDbQueryText(query),
132
+ [NET_PEER_NAME]: host
133
+ };
134
+ if (!isNaN(portNumber)) {
135
+ attributes[NET_PEER_PORT] = portNumber;
136
+ }
137
+ const span = startInactiveSpan({
138
+ name: getSpanName(query),
139
+ kind: SPAN_KIND.CLIENT,
209
140
  attributes
210
141
  });
211
- if (thisPlugin.getConfig().enhancedDatabaseReporting) {
212
- let values;
213
- if (Array.isArray(_valuesOrCallback)) {
214
- values = _valuesOrCallback;
215
- } else if (arguments[2]) {
216
- values = [_valuesOrCallback];
217
- }
218
- span.setAttribute(AttributeNames.MYSQL_VALUES, getDbValues(query, values));
219
- }
220
142
  const cbIndex = Array.from(arguments).findIndex((arg) => typeof arg === "function");
221
- const parentContext = context.active();
143
+ const scope = getCurrentScope();
222
144
  if (cbIndex === -1) {
223
- const streamableQuery = context.with(trace.setSpan(context.active(), span), () => {
145
+ const streamableQuery = withActiveSpan(span, () => {
224
146
  return originalQuery.apply(connection, arguments);
225
147
  });
226
- context.bind(parentContext, streamableQuery);
227
- return streamableQuery.on(
228
- "error",
229
- (err) => span.setStatus({
230
- code: SpanStatusCode.ERROR,
148
+ bindScopeToEmitter(streamableQuery, scope);
149
+ return streamableQuery.on("error", (err) => {
150
+ span.setStatus({
151
+ code: SPAN_STATUS_ERROR,
231
152
  message: err.message
232
- })
233
- ).on("end", () => {
153
+ });
154
+ }).on("end", () => {
234
155
  span.end();
235
156
  });
236
157
  } else {
237
- thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, parentContext));
238
- return context.with(trace.setSpan(context.active(), span), () => {
158
+ thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, scope));
159
+ return withActiveSpan(span, () => {
239
160
  return originalQuery.apply(connection, arguments);
240
161
  });
241
162
  }
242
163
  };
243
164
  };
244
165
  }
245
- _patchCallbackQuery(span, parentContext) {
166
+ _patchCallbackQuery(span, scope) {
246
167
  return (originalCallback) => {
247
- return function(err, results, fields) {
168
+ return function(err, _results, _fields) {
248
169
  if (err) {
249
170
  span.setStatus({
250
- code: SpanStatusCode.ERROR,
171
+ code: SPAN_STATUS_ERROR,
251
172
  message: err.message
252
173
  });
253
174
  }
254
175
  span.end();
255
- return context.with(parentContext, () => originalCallback(...arguments));
176
+ return withScope(scope, () => originalCallback(...arguments));
256
177
  };
257
178
  };
258
179
  }
259
- _setPoolCallbacks(pool, id) {
260
- const poolNameOld = id || getPoolNameOld(pool);
261
- pool.on("connection", (_connection) => {
262
- this._connCountAdd(1, poolNameOld, "idle");
263
- });
264
- pool.on("acquire", (_connection) => {
265
- this._connCountAdd(-1, poolNameOld, "idle");
266
- this._connCountAdd(1, poolNameOld, "used");
267
- });
268
- pool.on("release", (_connection) => {
269
- this._connCountAdd(1, poolNameOld, "idle");
270
- this._connCountAdd(-1, poolNameOld, "used");
271
- });
272
- }
273
180
  }
274
181
 
275
182
  export { MySQLInstrumentation };
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n * - Types from the `mysql` package inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n/* eslint-disable */\n\nimport { context, Context, trace, Span, SpanKind, SpanStatusCode, type Attributes } from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n ATTR_DB_NAMESPACE,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_NAME,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_VALUE_MYSQL,\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport type * as mysqlTypes from './mysql-types';\nimport { AttributeNames } from './AttributeNames';\nimport { MySQLInstrumentationConfig } from './types';\nimport { getConfig, getDbQueryText, getDbValues, getJDBCString, getSpanName, getPoolNameOld } from './utils';\nimport { SDK_VERSION } from '@sentry/core';\nimport { UpDownCounter } from '@opentelemetry/api';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql';\n\ntype getConnectionCallbackType = (err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase<MySQLInstrumentationConfig> {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n declare private _connectionsUsageOld: UpDownCounter;\n\n constructor(config: MySQLInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._dbSemconvStability = semconvStabilityFromStr('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n\n protected override _updateMetricInstruments() {\n this._connectionsUsageOld = this.meter.createUpDownCounter(METRIC_DB_CLIENT_CONNECTIONS_USAGE, {\n description: 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n });\n }\n\n /**\n * Convenience function for updating the `db.client.connections.usage` metric.\n * The name \"count\" comes from the eventually replacement for this metric per\n * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n */\n private _connCountAdd(n: number, poolNameOld: string, state: string) {\n this._connectionsUsageOld?.add(n, { state, name: poolNameOld });\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql',\n ['>=2.0.0 <3'],\n (moduleExports: typeof mysqlTypes) => {\n if (isWrapped(moduleExports.createConnection)) {\n this._unwrap(moduleExports, 'createConnection');\n }\n this._wrap(moduleExports, 'createConnection', this._patchCreateConnection() as any);\n\n if (isWrapped(moduleExports.createPool)) {\n this._unwrap(moduleExports, 'createPool');\n }\n this._wrap(moduleExports, 'createPool', this._patchCreatePool() as any);\n\n if (isWrapped(moduleExports.createPoolCluster)) {\n this._unwrap(moduleExports, 'createPoolCluster');\n }\n this._wrap(moduleExports, 'createPoolCluster', this._patchCreatePoolCluster() as any);\n\n return moduleExports;\n },\n (moduleExports: typeof mysqlTypes) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'createConnection');\n this._unwrap(moduleExports, 'createPool');\n this._unwrap(moduleExports, 'createPoolCluster');\n },\n ),\n ];\n }\n\n // global export function\n private _patchCreateConnection() {\n return (originalCreateConnection: Function) => {\n const thisPlugin = this;\n\n return function createConnection(_connectionUri: string | mysqlTypes.ConnectionConfig) {\n const originalResult = originalCreateConnection(...arguments);\n\n // This is unwrapped on next call after unpatch\n thisPlugin._wrap(originalResult, 'query', thisPlugin._patchQuery(originalResult) as any);\n\n return originalResult;\n };\n };\n }\n\n // global export function\n private _patchCreatePool() {\n return (originalCreatePool: Function) => {\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const pool = originalCreatePool(...arguments);\n\n thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n thisPlugin._wrap(pool, 'getConnection', thisPlugin._patchGetConnection(pool));\n thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool));\n thisPlugin._setPoolCallbacks(pool, '');\n\n return pool;\n };\n };\n }\n\n private _patchPoolEnd(pool: any) {\n return (originalPoolEnd: Function) => {\n const thisPlugin = this;\n return function end(callback?: unknown) {\n const nAll = (pool as any)._allConnections.length;\n const nFree = (pool as any)._freeConnections.length;\n const nUsed = nAll - nFree;\n const poolNameOld = getPoolNameOld(pool);\n thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used');\n thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle');\n originalPoolEnd.apply(pool, arguments);\n };\n };\n }\n\n // global export function\n private _patchCreatePoolCluster() {\n return (originalCreatePoolCluster: Function) => {\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const cluster = originalCreatePoolCluster(...arguments);\n\n // This is unwrapped on next call after unpatch\n thisPlugin._wrap(cluster, 'getConnection', thisPlugin._patchGetConnection(cluster));\n thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster));\n\n return cluster;\n };\n };\n }\n private _patchAdd(cluster: mysqlTypes.PoolCluster) {\n return (originalAdd: Function) => {\n const thisPlugin = this;\n return function add(id: string, config: unknown) {\n // Unwrap if unpatch has been called\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(cluster, 'add');\n return originalAdd.apply(cluster, arguments);\n }\n originalAdd.apply(cluster, arguments);\n const nodes = cluster['_nodes' as keyof mysqlTypes.PoolCluster] as any;\n if (nodes) {\n const nodeId = typeof id === 'object' ? 'CLUSTER::' + (cluster as any)._lastId : String(id);\n\n const pool = nodes[nodeId].pool;\n thisPlugin._setPoolCallbacks(pool, id);\n }\n };\n };\n }\n\n // method on cluster or pool\n private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n return (originalGetConnection: Function) => {\n const thisPlugin = this;\n\n return function getConnection(arg1?: unknown, arg2?: unknown, arg3?: unknown) {\n // Unwrap if unpatch has been called\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(pool, 'getConnection');\n return originalGetConnection.apply(pool, arguments);\n }\n\n if (arguments.length === 1 && typeof arg1 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg1 as getConnectionCallbackType);\n return originalGetConnection.call(pool, patchFn);\n }\n if (arguments.length === 2 && typeof arg2 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg2 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, patchFn);\n }\n if (arguments.length === 3 && typeof arg3 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg3 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, arg2, patchFn);\n }\n\n return originalGetConnection.apply(pool, arguments);\n };\n };\n }\n\n private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n const thisPlugin = this;\n const activeContext = context.active();\n return function (this: any, err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) {\n if (connection) {\n // this is the callback passed into a query\n // no need to unwrap\n if (!isWrapped(connection.query)) {\n thisPlugin._wrap(connection, 'query', thisPlugin._patchQuery(connection));\n }\n }\n if (typeof cb === 'function') {\n context.with(activeContext, cb, this, err, connection);\n }\n };\n }\n\n private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n return (originalQuery: Function): mysqlTypes.QueryFunction => {\n const thisPlugin = this;\n\n return function query(\n query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n _callback?: mysqlTypes.queryCallback,\n ) {\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(connection, 'query');\n return originalQuery.apply(connection, arguments);\n }\n\n const attributes: Attributes = {};\n const { host, port, database, user } = getConfig(connection.config);\n const portNumber = parseInt(port, 10);\n const dbQueryText = getDbQueryText(query);\n if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n attributes[ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);\n attributes[ATTR_DB_NAME] = database;\n attributes[ATTR_DB_USER] = user;\n attributes[ATTR_DB_STATEMENT] = dbQueryText;\n }\n if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n attributes[ATTR_DB_NAMESPACE] = database;\n attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n }\n if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n if (!isNaN(portNumber)) {\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n }\n if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n if (!isNaN(portNumber)) {\n attributes[ATTR_SERVER_PORT] = portNumber;\n }\n }\n const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n if (thisPlugin.getConfig().enhancedDatabaseReporting) {\n let values;\n\n if (Array.isArray(_valuesOrCallback)) {\n values = _valuesOrCallback;\n } else if (arguments[2]) {\n values = [_valuesOrCallback];\n }\n\n span.setAttribute(AttributeNames.MYSQL_VALUES, getDbValues(query, values));\n }\n\n const cbIndex = Array.from(arguments).findIndex(arg => typeof arg === 'function');\n\n const parentContext = context.active();\n\n if (cbIndex === -1) {\n const streamableQuery: mysqlTypes.Query = context.with(trace.setSpan(context.active(), span), () => {\n return originalQuery.apply(connection, arguments);\n });\n context.bind(parentContext, streamableQuery);\n\n return streamableQuery\n .on('error', err =>\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n }),\n )\n .on('end', () => {\n span.end();\n });\n } else {\n thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, parentContext));\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return originalQuery.apply(connection, arguments);\n });\n }\n };\n };\n }\n\n private _patchCallbackQuery(span: Span, parentContext: Context) {\n return (originalCallback: Function) => {\n return function (err: mysqlTypes.MysqlError | null, results?: any, fields?: mysqlTypes.FieldInfo[]) {\n if (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n return context.with(parentContext, () => originalCallback(...arguments));\n };\n };\n }\n\n private _setPoolCallbacks(pool: mysqlTypes.Pool, id: string) {\n const poolNameOld = id || getPoolNameOld(pool);\n\n pool.on('connection', _connection => {\n this._connCountAdd(1, poolNameOld, 'idle');\n });\n\n pool.on('acquire', _connection => {\n this._connCountAdd(-1, poolNameOld, 'idle');\n this._connCountAdd(1, poolNameOld, 'used');\n });\n\n pool.on('release', _connection => {\n this._connCountAdd(1, poolNameOld, 'idle');\n this._connCountAdd(-1, poolNameOld, 'used');\n });\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n * - Types from the `mysql` package inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs, and the connection-pool\n * metrics / `enhancedDatabaseReporting` option were removed (unused by the Sentry SDK)\n */\n\nimport type { Span } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { Scope, SpanAttributes } from '@sentry/core';\nimport {\n bindScopeToEmitter,\n getCurrentScope,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n withScope,\n} from '@sentry/core';\nimport {\n DB_NAME,\n DB_STATEMENT,\n DB_SYSTEM,\n DB_USER,\n NET_PEER_NAME,\n NET_PEER_PORT,\n} from '@sentry/conventions/attributes';\nimport type * as mysqlTypes from './mysql-types';\nimport { ATTR_DB_CONNECTION_STRING, DB_SYSTEM_VALUE_MYSQL } from './semconv';\nimport { getConfig, getDbQueryText, getJDBCString, getSpanName } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql';\nconst ORIGIN = 'auto.db.otel.mysql';\n\ntype getConnectionCallbackType = (err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql',\n ['>=2.0.0 <3'],\n (moduleExports: typeof mysqlTypes) => {\n if (isWrapped(moduleExports.createConnection)) {\n this._unwrap(moduleExports, 'createConnection');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createConnection', this._patchCreateConnection() as any);\n\n if (isWrapped(moduleExports.createPool)) {\n this._unwrap(moduleExports, 'createPool');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createPool', this._patchCreatePool() as any);\n\n if (isWrapped(moduleExports.createPoolCluster)) {\n this._unwrap(moduleExports, 'createPoolCluster');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createPoolCluster', this._patchCreatePoolCluster() as any);\n\n return moduleExports;\n },\n (moduleExports: typeof mysqlTypes) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'createConnection');\n this._unwrap(moduleExports, 'createPool');\n this._unwrap(moduleExports, 'createPoolCluster');\n },\n ),\n ];\n }\n\n // global export function\n private _patchCreateConnection() {\n return (originalCreateConnection: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function createConnection(_connectionUri: string | mysqlTypes.ConnectionConfig) {\n const originalResult = originalCreateConnection(...arguments);\n\n // This is unwrapped on next call after unpatch\n // oxlint-disable-next-line typescript/no-explicit-any\n thisPlugin._wrap(originalResult, 'query', thisPlugin._patchQuery(originalResult) as any);\n\n return originalResult;\n };\n };\n }\n\n // global export function\n private _patchCreatePool() {\n return (originalCreatePool: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const pool = originalCreatePool(...arguments);\n\n thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n thisPlugin._wrap(pool, 'getConnection', thisPlugin._patchGetConnection(pool));\n\n return pool;\n };\n };\n }\n\n // global export function\n private _patchCreatePoolCluster() {\n return (originalCreatePoolCluster: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const cluster = originalCreatePoolCluster(...arguments);\n\n // This is unwrapped on next call after unpatch\n thisPlugin._wrap(cluster, 'getConnection', thisPlugin._patchGetConnection(cluster));\n\n return cluster;\n };\n };\n }\n\n // method on cluster or pool\n private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n return (originalGetConnection: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function getConnection(arg1?: unknown, arg2?: unknown, arg3?: unknown) {\n // Unwrap if unpatch has been called\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(pool, 'getConnection');\n return originalGetConnection.apply(pool, arguments);\n }\n\n if (arguments.length === 1 && typeof arg1 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg1 as getConnectionCallbackType);\n return originalGetConnection.call(pool, patchFn);\n }\n if (arguments.length === 2 && typeof arg2 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg2 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, patchFn);\n }\n if (arguments.length === 3 && typeof arg3 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg3 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, arg2, patchFn);\n }\n\n return originalGetConnection.apply(pool, arguments);\n };\n };\n }\n\n private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n const scope = getCurrentScope();\n return function (this: unknown, err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) {\n if (connection) {\n // this is the callback passed into a query\n // no need to unwrap\n if (!isWrapped(connection.query)) {\n // oxlint-disable-next-line typescript/no-explicit-any\n thisPlugin._wrap(connection, 'query', thisPlugin._patchQuery(connection) as any);\n }\n }\n if (typeof cb === 'function') {\n withScope(scope, () => cb.call(this, err, connection));\n }\n };\n }\n\n private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n return (originalQuery: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function query(\n query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n _callback?: mysqlTypes.queryCallback,\n ) {\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(connection, 'query');\n return originalQuery.apply(connection, arguments);\n }\n\n const { host, port, database, user } = getConfig(connection.config);\n const portNumber = parseInt(String(port), 10);\n /* eslint-disable @sentry/no-deprecated-attributes */\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,\n [ATTR_DB_CONNECTION_STRING]: getJDBCString(host, port, database),\n [DB_NAME]: database,\n [DB_USER]: user,\n [DB_STATEMENT]: getDbQueryText(query),\n [NET_PEER_NAME]: host,\n };\n\n if (!isNaN(portNumber)) {\n attributes[NET_PEER_PORT] = portNumber;\n }\n /* eslint-enable @sentry/no-deprecated-attributes */\n\n const span = startInactiveSpan({\n name: getSpanName(query),\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n\n const cbIndex = Array.from(arguments).findIndex(arg => typeof arg === 'function');\n\n const scope = getCurrentScope();\n if (cbIndex === -1) {\n const streamableQuery: mysqlTypes.Query = withActiveSpan(span, () => {\n return originalQuery.apply(connection, arguments);\n });\n bindScopeToEmitter(streamableQuery, scope);\n\n return streamableQuery\n .on('error', (err: unknown) => {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: (err as mysqlTypes.MysqlError).message,\n });\n })\n .on('end', () => {\n span.end();\n });\n } else {\n thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, scope));\n\n return withActiveSpan(span, () => {\n return originalQuery.apply(connection, arguments);\n });\n }\n };\n };\n }\n\n private _patchCallbackQuery(span: Span, scope: Scope) {\n return (originalCallback: Function) => {\n return function (err: mysqlTypes.MysqlError | null, _results?: unknown, _fields?: mysqlTypes.FieldInfo[]) {\n if (err) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: err.message,\n });\n }\n span.end();\n return withScope(scope, () => originalCallback(...arguments));\n };\n };\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,5 @@
1
1
  const ATTR_DB_CONNECTION_STRING = "db.connection_string";
2
- const ATTR_DB_NAME = "db.name";
3
- const ATTR_DB_STATEMENT = "db.statement";
4
- const ATTR_DB_SYSTEM = "db.system";
5
- const ATTR_DB_USER = "db.user";
6
- const ATTR_NET_PEER_NAME = "net.peer.name";
7
- const ATTR_NET_PEER_PORT = "net.peer.port";
8
2
  const DB_SYSTEM_VALUE_MYSQL = "mysql";
9
- const METRIC_DB_CLIENT_CONNECTIONS_USAGE = "db.client.connections.usage";
10
3
 
11
- export { ATTR_DB_CONNECTION_STRING, ATTR_DB_NAME, ATTR_DB_STATEMENT, ATTR_DB_SYSTEM, ATTR_DB_USER, ATTR_NET_PEER_NAME, ATTR_NET_PEER_PORT, DB_SYSTEM_VALUE_MYSQL, METRIC_DB_CLIENT_CONNECTIONS_USAGE };
4
+ export { ATTR_DB_CONNECTION_STRING, DB_SYSTEM_VALUE_MYSQL };
12
5
  //# sourceMappingURL=semconv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n */\n/* eslint-disable */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage' as const;\n"],"names":[],"mappings":"AAyBO,MAAM,yBAAA,GAA4B;AAYlC,MAAM,YAAA,GAAe;AAYrB,MAAM,iBAAA,GAAoB;AAS1B,MAAM,cAAA,GAAiB;AAYvB,MAAM,YAAA,GAAe;AAWrB,MAAM,kBAAA,GAAqB;AAW3B,MAAM,kBAAA,GAAqB;AAS3B,MAAM,qBAAA,GAAwB;AAS9B,MAAM,kCAAA,GAAqC;;;;"}
1
+ {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Enum value \"mysql\" for attribute `db.system`.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n"],"names":[],"mappings":"AAwBO,MAAM,yBAAA,GAA4B;AASlC,MAAM,qBAAA,GAAwB;;;;"}
@@ -1,5 +1,6 @@
1
1
  function getConfig(config) {
2
- const { host, port, database, user } = config && config.connectionConfig || config || {};
2
+ const resolved = config?.connectionConfig || config || {};
3
+ const { host, port, database, user } = resolved;
3
4
  return { host, port, database, user };
4
5
  }
5
6
  function getJDBCString(host, port, database) {
@@ -19,13 +20,6 @@ function getDbQueryText(query) {
19
20
  return query.sql;
20
21
  }
21
22
  }
22
- function getDbValues(query, values) {
23
- if (typeof query === "string") {
24
- return arrayStringifyHelper(values);
25
- } else {
26
- return arrayStringifyHelper(values || query.values);
27
- }
28
- }
29
23
  function getSpanName(query) {
30
24
  const rawQuery = typeof query === "object" ? query.sql : query;
31
25
  const firstSpace = rawQuery?.indexOf(" ");
@@ -34,22 +28,6 @@ function getSpanName(query) {
34
28
  }
35
29
  return rawQuery;
36
30
  }
37
- function arrayStringifyHelper(arr) {
38
- if (arr) return `[${arr.toString()}]`;
39
- return "";
40
- }
41
- function getPoolNameOld(pool) {
42
- const c = pool.config.connectionConfig;
43
- let poolName = "";
44
- poolName += c?.host ? `host: '${c.host}', ` : "";
45
- poolName += c?.port ? `port: ${c.port}, ` : "";
46
- poolName += c?.database ? `database: '${c.database}', ` : "";
47
- poolName += c?.user ? `user: '${c.user}'` : "";
48
- if (!c?.user) {
49
- poolName = poolName.substring(0, poolName.length - 2);
50
- }
51
- return poolName.trim();
52
- }
53
31
 
54
- export { arrayStringifyHelper, getConfig, getDbQueryText, getDbValues, getJDBCString, getPoolNameOld, getSpanName };
32
+ export { getConfig, getDbQueryText, getJDBCString, getSpanName };
55
33
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n * - Types from the `mysql` package inlined as simplified interfaces\n */\n/* eslint-disable */\n\nimport type { Pool, Query, QueryOptions } from './mysql-types';\n\nexport function getConfig(config: any) {\n const { host, port, database, user } = (config && config.connectionConfig) || config || {};\n return { host, port, database, user };\n}\n\nexport function getJDBCString(host: string | undefined, port: number | undefined, database: string | undefined) {\n let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n if (typeof port === 'number') {\n jdbcString += `:${port}`;\n }\n\n if (typeof database === 'string') {\n jdbcString += `/${database}`;\n }\n\n return jdbcString;\n}\n\n/**\n * @returns the database query being executed.\n */\nexport function getDbQueryText(query: string | Query | QueryOptions): string {\n if (typeof query === 'string') {\n return query;\n } else {\n return query.sql;\n }\n}\n\nexport function getDbValues(query: string | Query | QueryOptions, values?: any[]): string {\n if (typeof query === 'string') {\n return arrayStringifyHelper(values);\n } else {\n // According to https://github.com/mysqljs/mysql#performing-queries\n // The values argument will override the values in the option object.\n return arrayStringifyHelper(values || query.values);\n }\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n const rawQuery = typeof query === 'object' ? query.sql : query;\n // Extract the SQL verb\n const firstSpace = rawQuery?.indexOf(' ');\n if (typeof firstSpace === 'number' && firstSpace !== -1) {\n return rawQuery?.substring(0, firstSpace);\n }\n return rawQuery;\n}\n\nexport function arrayStringifyHelper(arr: Array<unknown> | undefined): string {\n if (arr) return `[${arr.toString()}]`;\n return '';\n}\n\nexport function getPoolNameOld(pool: Pool): string {\n const c = pool.config.connectionConfig;\n let poolName = '';\n poolName += c?.host ? `host: '${c.host}', ` : '';\n poolName += c?.port ? `port: ${c.port}, ` : '';\n poolName += c?.database ? `database: '${c.database}', ` : '';\n poolName += c?.user ? `user: '${c.user}'` : '';\n if (!c?.user) {\n poolName = poolName.substring(0, poolName.length - 2); //omit last comma\n }\n return poolName.trim();\n}\n"],"names":[],"mappings":"AAaO,SAAS,UAAU,MAAA,EAAa;AACrC,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,KAAU,MAAA,IAAU,MAAA,CAAO,gBAAA,IAAqB,MAAA,IAAU,EAAC;AACzF,EAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAK;AACtC;AAEO,SAAS,aAAA,CAAc,IAAA,EAA0B,IAAA,EAA0B,QAAA,EAA8B;AAC9G,EAAA,IAAI,UAAA,GAAa,CAAA,aAAA,EAAgB,IAAA,IAAQ,WAAW,CAAA,CAAA;AAEpD,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,UAAA,IAAc,IAAI,IAAI,CAAA,CAAA;AAAA,EACxB;AAEA,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,UAAA,IAAc,IAAI,QAAQ,CAAA,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,UAAA;AACT;AAKO,SAAS,eAAe,KAAA,EAA8C;AAC3E,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,OAAO,KAAA,CAAM,GAAA;AAAA,EACf;AACF;AAEO,SAAS,WAAA,CAAY,OAAsC,MAAA,EAAwB;AACxF,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,qBAAqB,MAAM,CAAA;AAAA,EACpC,CAAA,MAAO;AAGL,IAAA,OAAO,oBAAA,CAAqB,MAAA,IAAU,KAAA,CAAM,MAAM,CAAA;AAAA,EACpD;AACF;AAUO,SAAS,YAAY,KAAA,EAA8C;AACxE,EAAA,MAAM,QAAA,GAAW,OAAO,KAAA,KAAU,QAAA,GAAW,MAAM,GAAA,GAAM,KAAA;AAEzD,EAAA,MAAM,UAAA,GAAa,QAAA,EAAU,OAAA,CAAQ,GAAG,CAAA;AACxC,EAAA,IAAI,OAAO,UAAA,KAAe,QAAA,IAAY,UAAA,KAAe,EAAA,EAAI;AACvD,IAAA,OAAO,QAAA,EAAU,SAAA,CAAU,CAAA,EAAG,UAAU,CAAA;AAAA,EAC1C;AACA,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,qBAAqB,GAAA,EAAyC;AAC5E,EAAA,IAAI,GAAA,EAAK,OAAO,CAAA,CAAA,EAAI,GAAA,CAAI,UAAU,CAAA,CAAA,CAAA;AAClC,EAAA,OAAO,EAAA;AACT;AAEO,SAAS,eAAe,IAAA,EAAoB;AACjD,EAAA,MAAM,CAAA,GAAI,KAAK,MAAA,CAAO,gBAAA;AACtB,EAAA,IAAI,QAAA,GAAW,EAAA;AACf,EAAA,QAAA,IAAY,CAAA,EAAG,IAAA,GAAO,CAAA,OAAA,EAAU,CAAA,CAAE,IAAI,CAAA,GAAA,CAAA,GAAQ,EAAA;AAC9C,EAAA,QAAA,IAAY,CAAA,EAAG,IAAA,GAAO,CAAA,MAAA,EAAS,CAAA,CAAE,IAAI,CAAA,EAAA,CAAA,GAAO,EAAA;AAC5C,EAAA,QAAA,IAAY,CAAA,EAAG,QAAA,GAAW,CAAA,WAAA,EAAc,CAAA,CAAE,QAAQ,CAAA,GAAA,CAAA,GAAQ,EAAA;AAC1D,EAAA,QAAA,IAAY,CAAA,EAAG,IAAA,GAAO,CAAA,OAAA,EAAU,CAAA,CAAE,IAAI,CAAA,CAAA,CAAA,GAAM,EAAA;AAC5C,EAAA,IAAI,CAAC,GAAG,IAAA,EAAM;AACZ,IAAA,QAAA,GAAW,QAAA,CAAS,SAAA,CAAU,CAAA,EAAG,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,EACtD;AACA,EAAA,OAAO,SAAS,IAAA,EAAK;AACvB;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n * - Types from the `mysql` package inlined as simplified interfaces\n */\n\nimport type { ConnectionConfig, PoolConfig, Query, QueryOptions } from './mysql-types';\n\nexport function getConfig(config: ConnectionConfig | PoolConfig | undefined) {\n const resolved = (config as PoolConfig | undefined)?.connectionConfig || config || {};\n const { host, port, database, user } = resolved;\n return { host, port, database, user };\n}\n\nexport function getJDBCString(host: string | undefined, port: number | undefined, database: string | undefined) {\n let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n if (typeof port === 'number') {\n jdbcString += `:${port}`;\n }\n\n if (typeof database === 'string') {\n jdbcString += `/${database}`;\n }\n\n return jdbcString;\n}\n\n/**\n * @returns the database query being executed.\n */\nexport function getDbQueryText(query: string | Query | QueryOptions): string {\n if (typeof query === 'string') {\n return query;\n } else {\n return query.sql;\n }\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n const rawQuery = typeof query === 'object' ? query.sql : query;\n // Extract the SQL verb\n const firstSpace = rawQuery?.indexOf(' ');\n if (typeof firstSpace === 'number' && firstSpace !== -1) {\n return rawQuery?.substring(0, firstSpace);\n }\n return rawQuery;\n}\n"],"names":[],"mappings":"AAYO,SAAS,UAAU,MAAA,EAAmD;AAC3E,EAAA,MAAM,QAAA,GAAY,MAAA,EAAmC,gBAAA,IAAoB,MAAA,IAAU,EAAC;AACpF,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,MAAK,GAAI,QAAA;AACvC,EAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAK;AACtC;AAEO,SAAS,aAAA,CAAc,IAAA,EAA0B,IAAA,EAA0B,QAAA,EAA8B;AAC9G,EAAA,IAAI,UAAA,GAAa,CAAA,aAAA,EAAgB,IAAA,IAAQ,WAAW,CAAA,CAAA;AAEpD,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,UAAA,IAAc,IAAI,IAAI,CAAA,CAAA;AAAA,EACxB;AAEA,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,UAAA,IAAc,IAAI,QAAQ,CAAA,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,UAAA;AACT;AAKO,SAAS,eAAe,KAAA,EAA8C;AAC3E,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,OAAO,KAAA,CAAM,GAAA;AAAA,EACf;AACF;AAUO,SAAS,YAAY,KAAA,EAA8C;AACxE,EAAA,MAAM,QAAA,GAAW,OAAO,KAAA,KAAU,QAAA,GAAW,MAAM,GAAA,GAAM,KAAA;AAEzD,EAAA,MAAM,UAAA,GAAa,QAAA,EAAU,OAAA,CAAQ,GAAG,CAAA;AACxC,EAAA,IAAI,OAAO,UAAA,KAAe,QAAA,IAAY,UAAA,KAAe,EAAA,EAAI;AACvD,IAAA,OAAO,QAAA,EAAU,SAAA,CAAU,CAAA,EAAG,UAAU,CAAA;AAAA,EAC1C;AACA,EAAA,OAAO,QAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/mysql2/index.ts"],"sourcesContent":["import { MySQL2Instrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql2';\n\nexport const instrumentMysql2 = generateInstrumentOnce(INTEGRATION_NAME, () => new MySQL2Instrumentation());\n\nconst _mysql2Integration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMysql2();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql2](https://www.npmjs.com/package/mysql2) library.\n *\n * For more information, see the [`mysql2Integration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql2/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysql2Integration = defineIntegration(_mysql2Integration);\n"],"names":[],"mappings":";;;;AAKA,MAAM,gBAAA,GAAmB,QAAA;AAElB,MAAM,mBAAmB,sBAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAI,uBAAuB;AAE1G,MAAM,sBAAsB,MAAM;AAChC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,gBAAA,EAAiB;AAAA,IACnB;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,iBAAA,GAAoB,kBAAkB,kBAAkB;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/mysql2/index.ts"],"sourcesContent":["import { MySQL2Instrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql2' as const;\n\nexport const instrumentMysql2 = generateInstrumentOnce(INTEGRATION_NAME, () => new MySQL2Instrumentation());\n\nconst _mysql2Integration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMysql2();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql2](https://www.npmjs.com/package/mysql2) library.\n *\n * For more information, see the [`mysql2Integration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql2/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysql2Integration = defineIntegration(_mysql2Integration);\n"],"names":[],"mappings":";;;;AAKA,MAAM,gBAAA,GAAmB,QAAA;AAElB,MAAM,mBAAmB,sBAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAI,uBAAuB;AAE1G,MAAM,sBAAsB,MAAM;AAChC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,gBAAA,EAAiB;AAAA,IACnB;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,iBAAA,GAAoB,kBAAkB,kBAAkB;;;;"}
@@ -1,7 +1,8 @@
1
1
  import { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';
2
+ import { DB_STATEMENT, DB_SYSTEM } from '@sentry/conventions/attributes';
2
3
  import { SDK_VERSION, startInactiveSpan, SPAN_KIND, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SPAN_STATUS_ERROR } from '@sentry/core';
3
4
  import { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile.js';
4
- import { ATTR_DB_STATEMENT, DB_SYSTEM_VALUE_MYSQL, ATTR_DB_SYSTEM } from './semconv.js';
5
+ import { DB_SYSTEM_VALUE_MYSQL } from './semconv.js';
5
6
  import { getConnectionPrototypeToInstrument, getQueryText, getConnectionAttributes, getSpanName, once } from './utils.js';
6
7
 
7
8
  const PACKAGE_NAME = "@sentry/instrumentation-mysql2";
@@ -83,8 +84,10 @@ class MySQL2Instrumentation extends InstrumentationBase {
83
84
  }
84
85
  const attributes = {
85
86
  ...getConnectionAttributes(this.config),
86
- [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,
87
- [ATTR_DB_STATEMENT]: getQueryText(query, format, values),
87
+ // oxlint-disable-next-line typescript/no-deprecated
88
+ [DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,
89
+ // oxlint-disable-next-line typescript/no-deprecated
90
+ [DB_STATEMENT]: getQueryText(query, format, values),
88
91
  [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN
89
92
  };
90
93
  const span = startInactiveSpan({
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n * - Types from 'mysql2' inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { SpanAttributes } from '@sentry/core';\nimport {\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n} from '@sentry/core';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport type { Connection, FormatFunction, Query, QueryError, QueryOptions } from './mysql2-types';\nimport { ATTR_DB_STATEMENT, ATTR_DB_SYSTEM, DB_SYSTEM_VALUE_MYSQL } from './semconv';\nimport { getConnectionAttributes, getConnectionPrototypeToInstrument, getQueryText, getSpanName, once } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql2';\nconst ORIGIN = 'auto.db.otel.mysql2';\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\n// The raw imported `mysql2` module exposes the `format` helper used to render\n// parameterized queries. Typed shallowly since it is only read internally.\ntype MySQL2Module = { format?: FormatFunction; [key: string]: unknown };\n\nexport class MySQL2Instrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init(): InstrumentationNodeModuleDefinition[] {\n let format: FormatFunction | undefined;\n function setFormatFunction(moduleExports: MySQL2Module): void {\n if (!format && moduleExports.format) {\n format = moduleExports.format;\n }\n }\n const patch = (ConnectionPrototype: Connection): void => {\n if (isWrapped(ConnectionPrototype.query)) {\n this._unwrap(ConnectionPrototype, 'query');\n }\n this._wrap(ConnectionPrototype, 'query', this._patchQuery(format) as any);\n if (isWrapped(ConnectionPrototype.execute)) {\n this._unwrap(ConnectionPrototype, 'execute');\n }\n this._wrap(ConnectionPrototype, 'execute', this._patchQuery(format) as any);\n };\n const unpatch = (ConnectionPrototype: Connection): void => {\n this._unwrap(ConnectionPrototype, 'query');\n this._unwrap(ConnectionPrototype, 'execute');\n };\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql2',\n supportedVersions,\n (moduleExports: MySQL2Module) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'mysql2/promise.js',\n supportedVersions,\n (moduleExports: MySQL2Module) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n ),\n new InstrumentationNodeModuleFile(\n 'mysql2/lib/connection.js',\n supportedVersions,\n (moduleExports: any) => {\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n patch(ConnectionPrototype);\n return moduleExports;\n },\n (moduleExports: any) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n unpatch(ConnectionPrototype);\n },\n ),\n ],\n ),\n ];\n }\n\n private _patchQuery(format: FormatFunction | undefined) {\n const thisPlugin = this;\n return (originalQuery: Function): Function => {\n return function query(\n this: Connection,\n query: string | Query | QueryOptions,\n _valuesOrCallback?: unknown[] | Function,\n _callback?: Function,\n ) {\n let values;\n if (Array.isArray(_valuesOrCallback)) {\n values = _valuesOrCallback;\n } else if (arguments[2]) {\n values = [_valuesOrCallback];\n }\n\n const attributes: SpanAttributes = {\n ...getConnectionAttributes(this.config),\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,\n [ATTR_DB_STATEMENT]: getQueryText(query, format, values),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n\n const span = startInactiveSpan({\n name: getSpanName(query),\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n\n const endSpan = once((err?: QueryError | null) => {\n if (err) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: err.message });\n }\n span.end();\n });\n\n if (arguments.length === 1) {\n if (typeof (query as any).onResult === 'function') {\n thisPlugin._wrap(query as any, 'onResult', thisPlugin._patchCallbackQuery(endSpan));\n }\n\n const streamableQuery: Query = originalQuery.apply(this, arguments);\n\n streamableQuery\n .once('error', (err: any) => {\n endSpan(err);\n })\n .once('result', () => {\n endSpan();\n });\n\n return streamableQuery;\n }\n\n if (typeof arguments[1] === 'function') {\n thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan));\n } else if (typeof arguments[2] === 'function') {\n thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan));\n }\n\n return originalQuery.apply(this, arguments);\n };\n };\n }\n\n private _patchCallbackQuery(endSpan: (err?: QueryError | null) => void) {\n return (originalCallback: Function) => {\n return function (...args: [err: QueryError | null, ...rest: unknown[]]) {\n endSpan(args[0]);\n return originalCallback(...args);\n };\n };\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n * - Types from 'mysql2' inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport { DB_STATEMENT, DB_SYSTEM } from '@sentry/conventions/attributes';\nimport type { SpanAttributes } from '@sentry/core';\nimport {\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n} from '@sentry/core';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport type { Connection, FormatFunction, Query, QueryError, QueryOptions } from './mysql2-types';\nimport { DB_SYSTEM_VALUE_MYSQL } from './semconv';\nimport { getConnectionAttributes, getConnectionPrototypeToInstrument, getQueryText, getSpanName, once } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql2';\nconst ORIGIN = 'auto.db.otel.mysql2';\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\n// The raw imported `mysql2` module exposes the `format` helper used to render\n// parameterized queries. Typed shallowly since it is only read internally.\ntype MySQL2Module = { format?: FormatFunction; [key: string]: unknown };\n\nexport class MySQL2Instrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init(): InstrumentationNodeModuleDefinition[] {\n let format: FormatFunction | undefined;\n function setFormatFunction(moduleExports: MySQL2Module): void {\n if (!format && moduleExports.format) {\n format = moduleExports.format;\n }\n }\n const patch = (ConnectionPrototype: Connection): void => {\n if (isWrapped(ConnectionPrototype.query)) {\n this._unwrap(ConnectionPrototype, 'query');\n }\n this._wrap(ConnectionPrototype, 'query', this._patchQuery(format) as any);\n if (isWrapped(ConnectionPrototype.execute)) {\n this._unwrap(ConnectionPrototype, 'execute');\n }\n this._wrap(ConnectionPrototype, 'execute', this._patchQuery(format) as any);\n };\n const unpatch = (ConnectionPrototype: Connection): void => {\n this._unwrap(ConnectionPrototype, 'query');\n this._unwrap(ConnectionPrototype, 'execute');\n };\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql2',\n supportedVersions,\n (moduleExports: MySQL2Module) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'mysql2/promise.js',\n supportedVersions,\n (moduleExports: MySQL2Module) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n ),\n new InstrumentationNodeModuleFile(\n 'mysql2/lib/connection.js',\n supportedVersions,\n (moduleExports: any) => {\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n patch(ConnectionPrototype);\n return moduleExports;\n },\n (moduleExports: any) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n unpatch(ConnectionPrototype);\n },\n ),\n ],\n ),\n ];\n }\n\n private _patchQuery(format: FormatFunction | undefined) {\n const thisPlugin = this;\n return (originalQuery: Function): Function => {\n return function query(\n this: Connection,\n query: string | Query | QueryOptions,\n _valuesOrCallback?: unknown[] | Function,\n _callback?: Function,\n ) {\n let values;\n if (Array.isArray(_valuesOrCallback)) {\n values = _valuesOrCallback;\n } else if (arguments[2]) {\n values = [_valuesOrCallback];\n }\n\n const attributes: SpanAttributes = {\n ...getConnectionAttributes(this.config),\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_STATEMENT]: getQueryText(query, format, values),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n\n const span = startInactiveSpan({\n name: getSpanName(query),\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n\n const endSpan = once((err?: QueryError | null) => {\n if (err) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: err.message });\n }\n span.end();\n });\n\n if (arguments.length === 1) {\n if (typeof (query as any).onResult === 'function') {\n thisPlugin._wrap(query as any, 'onResult', thisPlugin._patchCallbackQuery(endSpan));\n }\n\n const streamableQuery: Query = originalQuery.apply(this, arguments);\n\n streamableQuery\n .once('error', (err: any) => {\n endSpan(err);\n })\n .once('result', () => {\n endSpan();\n });\n\n return streamableQuery;\n }\n\n if (typeof arguments[1] === 'function') {\n thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan));\n } else if (typeof arguments[2] === 'function') {\n thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan));\n }\n\n return originalQuery.apply(this, arguments);\n };\n };\n }\n\n private _patchCallbackQuery(endSpan: (err?: QueryError | null) => void) {\n return (originalCallback: Function) => {\n return function (...args: [err: QueryError | null, ...rest: unknown[]]) {\n endSpan(args[0]);\n return originalCallback(...args);\n };\n };\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,5 @@
1
1
  const ATTR_DB_CONNECTION_STRING = "db.connection_string";
2
- const ATTR_DB_NAME = "db.name";
3
- const ATTR_DB_STATEMENT = "db.statement";
4
- const ATTR_DB_SYSTEM = "db.system";
5
- const ATTR_DB_USER = "db.user";
6
- const ATTR_NET_PEER_NAME = "net.peer.name";
7
- const ATTR_NET_PEER_PORT = "net.peer.port";
8
2
  const DB_SYSTEM_VALUE_MYSQL = "mysql";
9
3
 
10
- export { ATTR_DB_CONNECTION_STRING, ATTR_DB_NAME, ATTR_DB_STATEMENT, ATTR_DB_SYSTEM, ATTR_DB_USER, ATTR_NET_PEER_NAME, ATTR_NET_PEER_PORT, DB_SYSTEM_VALUE_MYSQL };
4
+ export { ATTR_DB_CONNECTION_STRING, DB_SYSTEM_VALUE_MYSQL };
11
5
  //# sourceMappingURL=semconv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n */\n\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\nexport const ATTR_DB_NAME = 'db.name' as const;\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\nexport const ATTR_DB_USER = 'db.user' as const;\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n"],"names":[],"mappings":"AASO,MAAM,yBAAA,GAA4B;AAClC,MAAM,YAAA,GAAe;AACrB,MAAM,iBAAA,GAAoB;AAC1B,MAAM,cAAA,GAAiB;AACvB,MAAM,YAAA,GAAe;AACrB,MAAM,kBAAA,GAAqB;AAC3B,MAAM,kBAAA,GAAqB;AAC3B,MAAM,qBAAA,GAAwB;;;;"}
1
+ {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n */\n\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n"],"names":[],"mappings":"AASO,MAAM,yBAAA,GAA4B;AAClC,MAAM,qBAAA,GAAwB;;;;"}
@@ -1,16 +1,19 @@
1
- import { ATTR_NET_PEER_NAME, ATTR_DB_USER, ATTR_DB_NAME, ATTR_DB_CONNECTION_STRING, ATTR_NET_PEER_PORT } from './semconv.js';
1
+ import { NET_PEER_NAME, DB_USER, DB_NAME, NET_PEER_PORT } from '@sentry/conventions/attributes';
2
+ import { ATTR_DB_CONNECTION_STRING } from './semconv.js';
2
3
 
3
4
  function getConnectionAttributes(config) {
4
5
  const { host, port, database, user } = getConfig(config);
5
6
  const attrs = {
6
7
  [ATTR_DB_CONNECTION_STRING]: getJDBCString(host, port, database),
7
- [ATTR_DB_NAME]: database,
8
- [ATTR_DB_USER]: user,
9
- [ATTR_NET_PEER_NAME]: host
8
+ // oxlint-disable-next-line typescript/no-deprecated
9
+ [DB_NAME]: database,
10
+ [DB_USER]: user,
11
+ // oxlint-disable-next-line typescript/no-deprecated
12
+ [NET_PEER_NAME]: host
10
13
  };
11
14
  const portNumber = parseInt(port, 10);
12
15
  if (!isNaN(portNumber)) {
13
- attrs[ATTR_NET_PEER_PORT] = portNumber;
16
+ attrs[NET_PEER_PORT] = portNumber;
14
17
  }
15
18
  return attrs;
16
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n * - Types from 'mysql2' inlined as simplified interfaces\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FormatFunction } from './mysql2-types';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_NAME,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\n\ninterface QueryOptions {\n sql: string;\n values?: any | any[] | { [param: string]: any };\n}\n\ninterface Query {\n sql: string;\n}\n\ninterface Config {\n host?: string;\n port?: number;\n database?: string;\n user?: string;\n connectionConfig?: Config;\n}\n\nexport function getConnectionAttributes(config: Config): SpanAttributes {\n const { host, port, database, user } = getConfig(config);\n\n const attrs: SpanAttributes = {\n [ATTR_DB_CONNECTION_STRING]: getJDBCString(host, port, database),\n [ATTR_DB_NAME]: database,\n [ATTR_DB_USER]: user,\n [ATTR_NET_PEER_NAME]: host,\n };\n\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n attrs[ATTR_NET_PEER_PORT] = portNumber;\n }\n\n return attrs;\n}\n\nfunction getConfig(config: any) {\n const { host, port, database, user } = config?.connectionConfig || config || {};\n return { host, port, database, user };\n}\n\nfunction getJDBCString(host: string | undefined, port: number | undefined, database: string | undefined) {\n let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n if (typeof port === 'number') {\n jdbcString += `:${port}`;\n }\n\n if (typeof database === 'string') {\n jdbcString += `/${database}`;\n }\n\n return jdbcString;\n}\n\nexport function getQueryText(query: string | Query | QueryOptions, format?: FormatFunction, values?: any[]): string {\n const [querySql, queryValues] =\n typeof query === 'string' ? [query, values] : [query.sql, hasValues(query) ? values || query.values : values];\n try {\n if (format && queryValues) {\n return format(querySql, queryValues);\n } else {\n return querySql;\n }\n } catch {\n return 'Could not determine the query due to an error in formatting';\n }\n}\n\nfunction hasValues(obj: Query | QueryOptions): obj is QueryOptions {\n return 'values' in obj;\n}\n\nexport function getSpanName(query: string | Query | QueryOptions): string {\n const rawQuery = typeof query === 'object' ? query.sql : query;\n const firstSpace = rawQuery?.indexOf(' ');\n if (typeof firstSpace === 'number' && firstSpace !== -1) {\n return rawQuery?.substring(0, firstSpace);\n }\n return rawQuery;\n}\n\nexport const once = (fn: Function) => {\n let called = false;\n return (...args: unknown[]) => {\n if (called) return;\n called = true;\n return fn(...args);\n };\n};\n\nexport function getConnectionPrototypeToInstrument(connection: any) {\n const connectionPrototype = connection.prototype;\n const basePrototype = Object.getPrototypeOf(connectionPrototype);\n\n if (typeof basePrototype?.query === 'function' && typeof basePrototype?.execute === 'function') {\n return basePrototype;\n }\n\n return connectionPrototype;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n * - Types from 'mysql2' inlined as simplified interfaces\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport { DB_NAME, DB_USER, NET_PEER_NAME, NET_PEER_PORT } from '@sentry/conventions/attributes';\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FormatFunction } from './mysql2-types';\nimport { ATTR_DB_CONNECTION_STRING } from './semconv';\n\ninterface QueryOptions {\n sql: string;\n values?: any | any[] | { [param: string]: any };\n}\n\ninterface Query {\n sql: string;\n}\n\ninterface Config {\n host?: string;\n port?: number;\n database?: string;\n user?: string;\n connectionConfig?: Config;\n}\n\nexport function getConnectionAttributes(config: Config): SpanAttributes {\n const { host, port, database, user } = getConfig(config);\n\n const attrs: SpanAttributes = {\n [ATTR_DB_CONNECTION_STRING]: getJDBCString(host, port, database),\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_NAME]: database,\n [DB_USER]: user,\n // oxlint-disable-next-line typescript/no-deprecated\n [NET_PEER_NAME]: host,\n };\n\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n // oxlint-disable-next-line typescript/no-deprecated\n attrs[NET_PEER_PORT] = portNumber;\n }\n\n return attrs;\n}\n\nfunction getConfig(config: any) {\n const { host, port, database, user } = config?.connectionConfig || config || {};\n return { host, port, database, user };\n}\n\nfunction getJDBCString(host: string | undefined, port: number | undefined, database: string | undefined) {\n let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n if (typeof port === 'number') {\n jdbcString += `:${port}`;\n }\n\n if (typeof database === 'string') {\n jdbcString += `/${database}`;\n }\n\n return jdbcString;\n}\n\nexport function getQueryText(query: string | Query | QueryOptions, format?: FormatFunction, values?: any[]): string {\n const [querySql, queryValues] =\n typeof query === 'string' ? [query, values] : [query.sql, hasValues(query) ? values || query.values : values];\n try {\n if (format && queryValues) {\n return format(querySql, queryValues);\n } else {\n return querySql;\n }\n } catch {\n return 'Could not determine the query due to an error in formatting';\n }\n}\n\nfunction hasValues(obj: Query | QueryOptions): obj is QueryOptions {\n return 'values' in obj;\n}\n\nexport function getSpanName(query: string | Query | QueryOptions): string {\n const rawQuery = typeof query === 'object' ? query.sql : query;\n const firstSpace = rawQuery?.indexOf(' ');\n if (typeof firstSpace === 'number' && firstSpace !== -1) {\n return rawQuery?.substring(0, firstSpace);\n }\n return rawQuery;\n}\n\nexport const once = (fn: Function) => {\n let called = false;\n return (...args: unknown[]) => {\n if (called) return;\n called = true;\n return fn(...args);\n };\n};\n\nexport function getConnectionPrototypeToInstrument(connection: any) {\n const connectionPrototype = connection.prototype;\n const basePrototype = Object.getPrototypeOf(connectionPrototype);\n\n if (typeof basePrototype?.query === 'function' && typeof basePrototype?.execute === 'function') {\n return basePrototype;\n }\n\n return connectionPrototype;\n}\n"],"names":[],"mappings":";;;AAiCO,SAAS,wBAAwB,MAAA,EAAgC;AACtE,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK,GAAI,UAAU,MAAM,CAAA;AAEvD,EAAA,MAAM,KAAA,GAAwB;AAAA,IAC5B,CAAC,yBAAyB,GAAG,aAAA,CAAc,IAAA,EAAM,MAAM,QAAQ,CAAA;AAAA;AAAA,IAE/D,CAAC,OAAO,GAAG,QAAA;AAAA,IACX,CAAC,OAAO,GAAG,IAAA;AAAA;AAAA,IAEX,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA;AACpC,EAAA,IAAI,CAAC,KAAA,CAAM,UAAU,CAAA,EAAG;AAEtB,IAAA,KAAA,CAAM,aAAa,CAAA,GAAI,UAAA;AAAA,EACzB;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,UAAU,MAAA,EAAa;AAC9B,EAAA,MAAM,EAAE,MAAM,IAAA,EAAM,QAAA,EAAU,MAAK,GAAI,MAAA,EAAQ,gBAAA,IAAoB,MAAA,IAAU,EAAC;AAC9E,EAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAK;AACtC;AAEA,SAAS,aAAA,CAAc,IAAA,EAA0B,IAAA,EAA0B,QAAA,EAA8B;AACvG,EAAA,IAAI,UAAA,GAAa,CAAA,aAAA,EAAgB,IAAA,IAAQ,WAAW,CAAA,CAAA;AAEpD,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,UAAA,IAAc,IAAI,IAAI,CAAA,CAAA;AAAA,EACxB;AAEA,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,UAAA,IAAc,IAAI,QAAQ,CAAA,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,UAAA;AACT;AAEO,SAAS,YAAA,CAAa,KAAA,EAAsC,MAAA,EAAyB,MAAA,EAAwB;AAClH,EAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAC1B,OAAO,KAAA,KAAU,QAAA,GAAW,CAAC,KAAA,EAAO,MAAM,IAAI,CAAC,KAAA,CAAM,KAAK,SAAA,CAAU,KAAK,IAAI,MAAA,IAAU,KAAA,CAAM,SAAS,MAAM,CAAA;AAC9G,EAAA,IAAI;AACF,IAAA,IAAI,UAAU,WAAA,EAAa;AACzB,MAAA,OAAO,MAAA,CAAO,UAAU,WAAW,CAAA;AAAA,IACrC,CAAA,MAAO;AACL,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,6DAAA;AAAA,EACT;AACF;AAEA,SAAS,UAAU,GAAA,EAAgD;AACjE,EAAA,OAAO,QAAA,IAAY,GAAA;AACrB;AAEO,SAAS,YAAY,KAAA,EAA8C;AACxE,EAAA,MAAM,QAAA,GAAW,OAAO,KAAA,KAAU,QAAA,GAAW,MAAM,GAAA,GAAM,KAAA;AACzD,EAAA,MAAM,UAAA,GAAa,QAAA,EAAU,OAAA,CAAQ,GAAG,CAAA;AACxC,EAAA,IAAI,OAAO,UAAA,KAAe,QAAA,IAAY,UAAA,KAAe,EAAA,EAAI;AACvD,IAAA,OAAO,QAAA,EAAU,SAAA,CAAU,CAAA,EAAG,UAAU,CAAA;AAAA,EAC1C;AACA,EAAA,OAAO,QAAA;AACT;AAEO,MAAM,IAAA,GAAO,CAAC,EAAA,KAAiB;AACpC,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,OAAO,IAAI,IAAA,KAAoB;AAC7B,IAAA,IAAI,MAAA,EAAQ;AACZ,IAAA,MAAA,GAAS,IAAA;AACT,IAAA,OAAO,EAAA,CAAG,GAAG,IAAI,CAAA;AAAA,EACnB,CAAA;AACF;AAEO,SAAS,mCAAmC,UAAA,EAAiB;AAClE,EAAA,MAAM,sBAAsB,UAAA,CAAW,SAAA;AACvC,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,cAAA,CAAe,mBAAmB,CAAA;AAE/D,EAAA,IAAI,OAAO,aAAA,EAAe,KAAA,KAAU,cAAc,OAAO,aAAA,EAAe,YAAY,UAAA,EAAY;AAC9F,IAAA,OAAO,aAAA;AAAA,EACT;AAEA,EAAA,OAAO,mBAAA;AACT;;;;"}