@sentry/node 10.57.0 → 10.59.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 (523) hide show
  1. package/build/cjs/index.js +2 -0
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/integrations/fs/index.js +3 -84
  4. package/build/cjs/integrations/fs/index.js.map +1 -1
  5. package/build/cjs/integrations/fs/vendored/constants.js.map +1 -1
  6. package/build/cjs/integrations/fs/vendored/instrumentation.js +145 -175
  7. package/build/cjs/integrations/fs/vendored/instrumentation.js.map +1 -1
  8. package/build/cjs/integrations/fs/vendored/utils.js.map +1 -1
  9. package/build/cjs/integrations/node-fetch/vendored/undici.js.map +1 -1
  10. package/build/cjs/integrations/tracing/amqplib/vendored/amqplib.js.map +1 -1
  11. package/build/cjs/integrations/tracing/amqplib/vendored/semconv-obsolete.js.map +1 -1
  12. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  13. package/build/cjs/integrations/tracing/amqplib/vendored/types.js.map +1 -1
  14. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  15. package/build/cjs/integrations/tracing/connect/index.js +0 -21
  16. package/build/cjs/integrations/tracing/connect/index.js.map +1 -1
  17. package/build/cjs/integrations/tracing/connect/vendored/enums/AttributeNames.js +0 -6
  18. package/build/cjs/integrations/tracing/connect/vendored/enums/AttributeNames.js.map +1 -1
  19. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +33 -42
  20. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  21. package/build/cjs/integrations/tracing/connect/vendored/internal-types.js.map +1 -1
  22. package/build/cjs/integrations/tracing/connect/vendored/utils.js +3 -2
  23. package/build/cjs/integrations/tracing/connect/vendored/utils.js.map +1 -1
  24. package/build/cjs/integrations/tracing/dataloader/index.js +2 -22
  25. package/build/cjs/integrations/tracing/dataloader/index.js.map +1 -1
  26. package/build/cjs/integrations/tracing/dataloader/vendored/instrumentation.js +93 -120
  27. package/build/cjs/integrations/tracing/dataloader/vendored/instrumentation.js.map +1 -1
  28. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +1 -1
  29. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  30. package/build/cjs/integrations/tracing/fastify/vendored/instrumentation.js.map +1 -1
  31. package/build/cjs/integrations/tracing/genericPool/index.js +1 -15
  32. package/build/cjs/integrations/tracing/genericPool/index.js.map +1 -1
  33. package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js +37 -37
  34. package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js.map +1 -1
  35. package/build/cjs/integrations/tracing/graphql/index.js +1 -51
  36. package/build/cjs/integrations/tracing/graphql/index.js.map +1 -1
  37. package/build/cjs/integrations/tracing/graphql/vendored/enum.js.map +1 -1
  38. package/build/cjs/integrations/tracing/graphql/vendored/enums/AttributeNames.js +0 -2
  39. package/build/cjs/integrations/tracing/graphql/vendored/enums/AttributeNames.js.map +1 -1
  40. package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js +67 -57
  41. package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  42. package/build/cjs/integrations/tracing/graphql/vendored/internal-types.js.map +1 -1
  43. package/build/cjs/integrations/tracing/graphql/vendored/symbols.js.map +1 -1
  44. package/build/cjs/integrations/tracing/graphql/vendored/utils.js +28 -62
  45. package/build/cjs/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  46. package/build/cjs/integrations/tracing/hapi/index.js +0 -17
  47. package/build/cjs/integrations/tracing/hapi/index.js.map +1 -1
  48. package/build/cjs/integrations/tracing/hapi/vendored/enums/AttributeNames.js.map +1 -1
  49. package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js +28 -45
  50. package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js.map +1 -1
  51. package/build/cjs/integrations/tracing/hapi/vendored/internal-types.js.map +1 -1
  52. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js.map +1 -1
  53. package/build/cjs/integrations/tracing/hapi/vendored/utils.js +4 -9
  54. package/build/cjs/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  55. package/build/cjs/integrations/tracing/index.js +1 -0
  56. package/build/cjs/integrations/tracing/index.js.map +1 -1
  57. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  58. package/build/cjs/integrations/tracing/kafka/vendored/internal-types.js.map +1 -1
  59. package/build/cjs/integrations/tracing/kafka/vendored/propagator.js.map +1 -1
  60. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  61. package/build/cjs/integrations/tracing/knex/index.js +2 -17
  62. package/build/cjs/integrations/tracing/knex/index.js.map +1 -1
  63. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +65 -93
  64. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  65. package/build/cjs/integrations/tracing/knex/vendored/semconv.js +2 -0
  66. package/build/cjs/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  67. package/build/cjs/integrations/tracing/knex/vendored/utils.js +2 -15
  68. package/build/cjs/integrations/tracing/knex/vendored/utils.js.map +1 -1
  69. package/build/cjs/integrations/tracing/koa/index.js +1 -24
  70. package/build/cjs/integrations/tracing/koa/index.js.map +1 -1
  71. package/build/cjs/integrations/tracing/koa/vendored/enums/AttributeNames.js.map +1 -1
  72. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +29 -41
  73. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  74. package/build/cjs/integrations/tracing/koa/vendored/internal-types.js.map +1 -1
  75. package/build/cjs/integrations/tracing/koa/vendored/types.js.map +1 -1
  76. package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
  77. package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  78. package/build/cjs/integrations/tracing/mongo/index.js +1 -42
  79. package/build/cjs/integrations/tracing/mongo/index.js.map +1 -1
  80. package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js +12 -562
  81. package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js.map +1 -1
  82. package/build/cjs/integrations/tracing/mongo/vendored/internal-types.js.map +1 -1
  83. package/build/cjs/integrations/tracing/mongo/vendored/patches.js +151 -0
  84. package/build/cjs/integrations/tracing/mongo/vendored/patches.js.map +1 -0
  85. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -4
  86. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  87. package/build/cjs/integrations/tracing/mongo/vendored/utils.js +153 -0
  88. package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -0
  89. package/build/cjs/integrations/tracing/mongoose/index.js +1 -8
  90. package/build/cjs/integrations/tracing/mongoose/index.js.map +1 -1
  91. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +56 -203
  92. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  93. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -4
  94. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  95. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +19 -49
  96. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  97. package/build/cjs/integrations/tracing/mysql/vendored/AttributeNames.js.map +1 -1
  98. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  99. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  100. package/build/cjs/integrations/tracing/mysql/vendored/utils.js.map +1 -1
  101. package/build/cjs/integrations/tracing/mysql2/index.js +1 -8
  102. package/build/cjs/integrations/tracing/mysql2/index.js.map +1 -1
  103. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +21 -59
  104. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  105. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  106. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js +14 -33
  107. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  108. package/build/cjs/integrations/tracing/postgres/index.js +0 -4
  109. package/build/cjs/integrations/tracing/postgres/index.js.map +1 -1
  110. package/build/cjs/integrations/tracing/postgres/vendored/enums/AttributeNames.js +0 -1
  111. package/build/cjs/integrations/tracing/postgres/vendored/enums/AttributeNames.js.map +1 -1
  112. package/build/cjs/integrations/tracing/postgres/vendored/enums/SpanNames.js.map +1 -1
  113. package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js +51 -261
  114. package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js.map +1 -1
  115. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js +0 -12
  116. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  117. package/build/cjs/integrations/tracing/postgres/vendored/utils.js +43 -167
  118. package/build/cjs/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  119. package/build/cjs/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +1 -1
  120. package/build/cjs/integrations/tracing/prisma/vendored/constants.js.map +1 -1
  121. package/build/cjs/integrations/tracing/prisma/vendored/global.js.map +1 -1
  122. package/build/cjs/integrations/tracing/prisma/vendored/instrumentation.js.map +1 -1
  123. package/build/cjs/integrations/tracing/redis/index.js +1 -1
  124. package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
  125. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +89 -160
  126. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  127. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js.map +1 -1
  128. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +92 -231
  129. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  130. package/build/cjs/integrations/tracing/redis/vendored/semconv.js +0 -2
  131. package/build/cjs/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  132. package/build/cjs/integrations/tracing/tedious/index.js +1 -25
  133. package/build/cjs/integrations/tracing/tedious/index.js.map +1 -1
  134. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js +25 -76
  135. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  136. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  137. package/build/cjs/integrations/tracing/tedious/vendored/utils.js.map +1 -1
  138. package/build/cjs/sdk/diagnosticsChannelInjection.js +21 -0
  139. package/build/cjs/sdk/diagnosticsChannelInjection.js.map +1 -0
  140. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +19 -0
  141. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -0
  142. package/build/cjs/sdk/index.js +17 -1
  143. package/build/cjs/sdk/index.js.map +1 -1
  144. package/build/esm/index.js +1 -0
  145. package/build/esm/index.js.map +1 -1
  146. package/build/esm/integrations/fs/index.js +4 -85
  147. package/build/esm/integrations/fs/index.js.map +1 -1
  148. package/build/esm/integrations/fs/vendored/constants.js.map +1 -1
  149. package/build/esm/integrations/fs/vendored/instrumentation.js +147 -177
  150. package/build/esm/integrations/fs/vendored/instrumentation.js.map +1 -1
  151. package/build/esm/integrations/fs/vendored/utils.js.map +1 -1
  152. package/build/esm/integrations/node-fetch/vendored/undici.js.map +1 -1
  153. package/build/esm/integrations/tracing/amqplib/vendored/amqplib.js.map +1 -1
  154. package/build/esm/integrations/tracing/amqplib/vendored/semconv-obsolete.js.map +1 -1
  155. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  156. package/build/esm/integrations/tracing/amqplib/vendored/types.js.map +1 -1
  157. package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  158. package/build/esm/integrations/tracing/connect/index.js +1 -22
  159. package/build/esm/integrations/tracing/connect/index.js.map +1 -1
  160. package/build/esm/integrations/tracing/connect/vendored/enums/AttributeNames.js +1 -6
  161. package/build/esm/integrations/tracing/connect/vendored/enums/AttributeNames.js.map +1 -1
  162. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +36 -44
  163. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  164. package/build/esm/integrations/tracing/connect/vendored/internal-types.js.map +1 -1
  165. package/build/esm/integrations/tracing/connect/vendored/utils.js +3 -2
  166. package/build/esm/integrations/tracing/connect/vendored/utils.js.map +1 -1
  167. package/build/esm/integrations/tracing/dataloader/index.js +4 -24
  168. package/build/esm/integrations/tracing/dataloader/index.js.map +1 -1
  169. package/build/esm/integrations/tracing/dataloader/vendored/instrumentation.js +95 -122
  170. package/build/esm/integrations/tracing/dataloader/vendored/instrumentation.js.map +1 -1
  171. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +1 -1
  172. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  173. package/build/esm/integrations/tracing/fastify/vendored/instrumentation.js.map +1 -1
  174. package/build/esm/integrations/tracing/genericPool/index.js +3 -17
  175. package/build/esm/integrations/tracing/genericPool/index.js.map +1 -1
  176. package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js +38 -38
  177. package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js.map +1 -1
  178. package/build/esm/integrations/tracing/graphql/index.js +3 -53
  179. package/build/esm/integrations/tracing/graphql/index.js.map +1 -1
  180. package/build/esm/integrations/tracing/graphql/vendored/enum.js.map +1 -1
  181. package/build/esm/integrations/tracing/graphql/vendored/enums/AttributeNames.js +0 -2
  182. package/build/esm/integrations/tracing/graphql/vendored/enums/AttributeNames.js.map +1 -1
  183. package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js +69 -59
  184. package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  185. package/build/esm/integrations/tracing/graphql/vendored/internal-types.js.map +1 -1
  186. package/build/esm/integrations/tracing/graphql/vendored/symbols.js.map +1 -1
  187. package/build/esm/integrations/tracing/graphql/vendored/utils.js +29 -62
  188. package/build/esm/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  189. package/build/esm/integrations/tracing/hapi/index.js +1 -18
  190. package/build/esm/integrations/tracing/hapi/index.js.map +1 -1
  191. package/build/esm/integrations/tracing/hapi/vendored/enums/AttributeNames.js.map +1 -1
  192. package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js +30 -47
  193. package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js.map +1 -1
  194. package/build/esm/integrations/tracing/hapi/vendored/internal-types.js.map +1 -1
  195. package/build/esm/integrations/tracing/hapi/vendored/semconv.js.map +1 -1
  196. package/build/esm/integrations/tracing/hapi/vendored/utils.js +5 -10
  197. package/build/esm/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  198. package/build/esm/integrations/tracing/index.js +1 -0
  199. package/build/esm/integrations/tracing/index.js.map +1 -1
  200. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  201. package/build/esm/integrations/tracing/kafka/vendored/internal-types.js.map +1 -1
  202. package/build/esm/integrations/tracing/kafka/vendored/propagator.js.map +1 -1
  203. package/build/esm/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  204. package/build/esm/integrations/tracing/knex/index.js +4 -19
  205. package/build/esm/integrations/tracing/knex/index.js.map +1 -1
  206. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +66 -94
  207. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  208. package/build/esm/integrations/tracing/knex/vendored/semconv.js +2 -1
  209. package/build/esm/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  210. package/build/esm/integrations/tracing/knex/vendored/utils.js +3 -15
  211. package/build/esm/integrations/tracing/knex/vendored/utils.js.map +1 -1
  212. package/build/esm/integrations/tracing/koa/index.js +3 -26
  213. package/build/esm/integrations/tracing/koa/index.js.map +1 -1
  214. package/build/esm/integrations/tracing/koa/vendored/enums/AttributeNames.js.map +1 -1
  215. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +31 -43
  216. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  217. package/build/esm/integrations/tracing/koa/vendored/internal-types.js.map +1 -1
  218. package/build/esm/integrations/tracing/koa/vendored/types.js.map +1 -1
  219. package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
  220. package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  221. package/build/esm/integrations/tracing/mongo/index.js +3 -43
  222. package/build/esm/integrations/tracing/mongo/index.js.map +1 -1
  223. package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js +13 -563
  224. package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js.map +1 -1
  225. package/build/esm/integrations/tracing/mongo/vendored/internal-types.js.map +1 -1
  226. package/build/esm/integrations/tracing/mongo/vendored/patches.js +143 -0
  227. package/build/esm/integrations/tracing/mongo/vendored/patches.js.map +1 -0
  228. package/build/esm/integrations/tracing/mongo/vendored/semconv.js +1 -3
  229. package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  230. package/build/esm/integrations/tracing/mongo/vendored/utils.js +146 -0
  231. package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -0
  232. package/build/esm/integrations/tracing/mongoose/index.js +2 -9
  233. package/build/esm/integrations/tracing/mongoose/index.js.map +1 -1
  234. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +59 -206
  235. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  236. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +1 -3
  237. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  238. package/build/esm/integrations/tracing/mongoose/vendored/utils.js +20 -50
  239. package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  240. package/build/esm/integrations/tracing/mysql/vendored/AttributeNames.js.map +1 -1
  241. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  242. package/build/esm/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  243. package/build/esm/integrations/tracing/mysql/vendored/utils.js.map +1 -1
  244. package/build/esm/integrations/tracing/mysql2/index.js +2 -9
  245. package/build/esm/integrations/tracing/mysql2/index.js.map +1 -1
  246. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +26 -64
  247. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  248. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  249. package/build/esm/integrations/tracing/mysql2/vendored/utils.js +15 -34
  250. package/build/esm/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  251. package/build/esm/integrations/tracing/postgres/index.js +1 -5
  252. package/build/esm/integrations/tracing/postgres/index.js.map +1 -1
  253. package/build/esm/integrations/tracing/postgres/vendored/enums/AttributeNames.js +0 -1
  254. package/build/esm/integrations/tracing/postgres/vendored/enums/AttributeNames.js.map +1 -1
  255. package/build/esm/integrations/tracing/postgres/vendored/enums/SpanNames.js.map +1 -1
  256. package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js +52 -262
  257. package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js.map +1 -1
  258. package/build/esm/integrations/tracing/postgres/vendored/semconv.js +1 -7
  259. package/build/esm/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  260. package/build/esm/integrations/tracing/postgres/vendored/utils.js +44 -165
  261. package/build/esm/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  262. package/build/esm/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +1 -1
  263. package/build/esm/integrations/tracing/prisma/vendored/constants.js.map +1 -1
  264. package/build/esm/integrations/tracing/prisma/vendored/global.js.map +1 -1
  265. package/build/esm/integrations/tracing/prisma/vendored/instrumentation.js.map +1 -1
  266. package/build/esm/integrations/tracing/redis/index.js +1 -1
  267. package/build/esm/integrations/tracing/redis/index.js.map +1 -1
  268. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +92 -163
  269. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  270. package/build/esm/integrations/tracing/redis/vendored/redis-common.js.map +1 -1
  271. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +94 -233
  272. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  273. package/build/esm/integrations/tracing/redis/vendored/semconv.js +1 -2
  274. package/build/esm/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  275. package/build/esm/integrations/tracing/tedious/index.js +3 -27
  276. package/build/esm/integrations/tracing/tedious/index.js.map +1 -1
  277. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js +29 -79
  278. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  279. package/build/esm/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  280. package/build/esm/integrations/tracing/tedious/vendored/utils.js.map +1 -1
  281. package/build/esm/package.json +1 -1
  282. package/build/esm/sdk/diagnosticsChannelInjection.js +17 -0
  283. package/build/esm/sdk/diagnosticsChannelInjection.js.map +1 -0
  284. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +17 -0
  285. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -0
  286. package/build/esm/sdk/index.js +17 -1
  287. package/build/esm/sdk/index.js.map +1 -1
  288. package/build/import-hook.mjs +6 -0
  289. package/build/types/index.d.ts +1 -0
  290. package/build/types/index.d.ts.map +1 -1
  291. package/build/types/integrations/fs/index.d.ts.map +1 -1
  292. package/build/types/integrations/fs/vendored/constants.d.ts.map +1 -1
  293. package/build/types/integrations/fs/vendored/instrumentation.d.ts +6 -10
  294. package/build/types/integrations/fs/vendored/instrumentation.d.ts.map +1 -1
  295. package/build/types/integrations/fs/vendored/types.d.ts +10 -15
  296. package/build/types/integrations/fs/vendored/types.d.ts.map +1 -1
  297. package/build/types/integrations/fs/vendored/utils.d.ts +2 -2
  298. package/build/types/integrations/fs/vendored/utils.d.ts.map +1 -1
  299. package/build/types/integrations/node-fetch/vendored/internal-types.d.ts.map +1 -1
  300. package/build/types/integrations/node-fetch/vendored/types.d.ts.map +1 -1
  301. package/build/types/integrations/node-fetch/vendored/undici.d.ts.map +1 -1
  302. package/build/types/integrations/tracing/amqplib/vendored/amqplib.d.ts.map +1 -1
  303. package/build/types/integrations/tracing/amqplib/vendored/semconv-obsolete.d.ts.map +1 -1
  304. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts.map +1 -1
  305. package/build/types/integrations/tracing/amqplib/vendored/types.d.ts.map +1 -1
  306. package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +1 -1
  307. package/build/types/integrations/tracing/connect/index.d.ts.map +1 -1
  308. package/build/types/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts +0 -4
  309. package/build/types/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts.map +1 -1
  310. package/build/types/integrations/tracing/connect/vendored/instrumentation.d.ts +5 -5
  311. package/build/types/integrations/tracing/connect/vendored/instrumentation.d.ts.map +1 -1
  312. package/build/types/integrations/tracing/connect/vendored/internal-types.d.ts +2 -2
  313. package/build/types/integrations/tracing/connect/vendored/internal-types.d.ts.map +1 -1
  314. package/build/types/integrations/tracing/connect/vendored/utils.d.ts +1 -1
  315. package/build/types/integrations/tracing/connect/vendored/utils.d.ts.map +1 -1
  316. package/build/types/integrations/tracing/dataloader/index.d.ts.map +1 -1
  317. package/build/types/integrations/tracing/dataloader/vendored/instrumentation.d.ts +2 -5
  318. package/build/types/integrations/tracing/dataloader/vendored/instrumentation.d.ts.map +1 -1
  319. package/build/types/integrations/tracing/dataloader/vendored/types.d.ts +20 -8
  320. package/build/types/integrations/tracing/dataloader/vendored/types.d.ts.map +1 -1
  321. package/build/types/integrations/tracing/fastify/vendored/instrumentation.d.ts.map +1 -1
  322. package/build/types/integrations/tracing/genericPool/index.d.ts.map +1 -1
  323. package/build/types/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts +1 -1
  324. package/build/types/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts.map +1 -1
  325. package/build/types/integrations/tracing/genericPool/vendored/instrumentation.d.ts +2 -1
  326. package/build/types/integrations/tracing/genericPool/vendored/instrumentation.d.ts.map +1 -1
  327. package/build/types/integrations/tracing/graphql/index.d.ts.map +1 -1
  328. package/build/types/integrations/tracing/graphql/vendored/enum.d.ts.map +1 -1
  329. package/build/types/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts +1 -3
  330. package/build/types/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts.map +1 -1
  331. package/build/types/integrations/tracing/graphql/vendored/instrumentation.d.ts +7 -2
  332. package/build/types/integrations/tracing/graphql/vendored/instrumentation.d.ts.map +1 -1
  333. package/build/types/integrations/tracing/graphql/vendored/internal-types.d.ts +4 -4
  334. package/build/types/integrations/tracing/graphql/vendored/internal-types.d.ts.map +1 -1
  335. package/build/types/integrations/tracing/graphql/vendored/symbols.d.ts.map +1 -1
  336. package/build/types/integrations/tracing/graphql/vendored/types.d.ts +5 -43
  337. package/build/types/integrations/tracing/graphql/vendored/types.d.ts.map +1 -1
  338. package/build/types/integrations/tracing/graphql/vendored/utils.d.ts +8 -11
  339. package/build/types/integrations/tracing/graphql/vendored/utils.d.ts.map +1 -1
  340. package/build/types/integrations/tracing/hapi/index.d.ts.map +1 -1
  341. package/build/types/integrations/tracing/hapi/vendored/enums/AttributeNames.d.ts.map +1 -1
  342. package/build/types/integrations/tracing/hapi/vendored/instrumentation.d.ts +2 -2
  343. package/build/types/integrations/tracing/hapi/vendored/instrumentation.d.ts.map +1 -1
  344. package/build/types/integrations/tracing/hapi/vendored/internal-types.d.ts.map +1 -1
  345. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts.map +1 -1
  346. package/build/types/integrations/tracing/hapi/vendored/utils.d.ts +3 -4
  347. package/build/types/integrations/tracing/hapi/vendored/utils.d.ts.map +1 -1
  348. package/build/types/integrations/tracing/index.d.ts.map +1 -1
  349. package/build/types/integrations/tracing/kafka/vendored/instrumentation.d.ts.map +1 -1
  350. package/build/types/integrations/tracing/kafka/vendored/internal-types.d.ts.map +1 -1
  351. package/build/types/integrations/tracing/kafka/vendored/propagator.d.ts.map +1 -1
  352. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts.map +1 -1
  353. package/build/types/integrations/tracing/kafka/vendored/types.d.ts.map +1 -1
  354. package/build/types/integrations/tracing/knex/index.d.ts.map +1 -1
  355. package/build/types/integrations/tracing/knex/vendored/instrumentation.d.ts +8 -10
  356. package/build/types/integrations/tracing/knex/vendored/instrumentation.d.ts.map +1 -1
  357. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts +1 -0
  358. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts.map +1 -1
  359. package/build/types/integrations/tracing/knex/vendored/utils.d.ts +0 -6
  360. package/build/types/integrations/tracing/knex/vendored/utils.d.ts.map +1 -1
  361. package/build/types/integrations/tracing/koa/index.d.ts.map +1 -1
  362. package/build/types/integrations/tracing/koa/vendored/enums/AttributeNames.d.ts.map +1 -1
  363. package/build/types/integrations/tracing/koa/vendored/instrumentation.d.ts +1 -1
  364. package/build/types/integrations/tracing/koa/vendored/instrumentation.d.ts.map +1 -1
  365. package/build/types/integrations/tracing/koa/vendored/internal-types.d.ts +4 -4
  366. package/build/types/integrations/tracing/koa/vendored/internal-types.d.ts.map +1 -1
  367. package/build/types/integrations/tracing/koa/vendored/types.d.ts +2 -39
  368. package/build/types/integrations/tracing/koa/vendored/types.d.ts.map +1 -1
  369. package/build/types/integrations/tracing/koa/vendored/utils.d.ts +3 -3
  370. package/build/types/integrations/tracing/koa/vendored/utils.d.ts.map +1 -1
  371. package/build/types/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts.map +1 -1
  372. package/build/types/integrations/tracing/mongo/index.d.ts +0 -4
  373. package/build/types/integrations/tracing/mongo/index.d.ts.map +1 -1
  374. package/build/types/integrations/tracing/mongo/vendored/instrumentation.d.ts +4 -72
  375. package/build/types/integrations/tracing/mongo/vendored/instrumentation.d.ts.map +1 -1
  376. package/build/types/integrations/tracing/mongo/vendored/internal-types.d.ts +0 -59
  377. package/build/types/integrations/tracing/mongo/vendored/internal-types.d.ts.map +1 -1
  378. package/build/types/integrations/tracing/mongo/vendored/patches.d.ts +15 -0
  379. package/build/types/integrations/tracing/mongo/vendored/patches.d.ts.map +1 -0
  380. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +0 -54
  381. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +1 -1
  382. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts +24 -0
  383. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -0
  384. package/build/types/integrations/tracing/mongoose/index.d.ts.map +1 -1
  385. package/build/types/integrations/tracing/mongoose/vendored/mongoose-types.d.ts +3 -0
  386. package/build/types/integrations/tracing/mongoose/vendored/mongoose-types.d.ts.map +1 -1
  387. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts +3 -8
  388. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
  389. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -14
  390. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +1 -1
  391. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts +4 -6
  392. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
  393. package/build/types/integrations/tracing/mysql/vendored/AttributeNames.d.ts.map +1 -1
  394. package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts.map +1 -1
  395. package/build/types/integrations/tracing/mysql/vendored/mysql-types.d.ts.map +1 -1
  396. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts.map +1 -1
  397. package/build/types/integrations/tracing/mysql/vendored/types.d.ts.map +1 -1
  398. package/build/types/integrations/tracing/mysql/vendored/utils.d.ts.map +1 -1
  399. package/build/types/integrations/tracing/mysql2/index.d.ts.map +1 -1
  400. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts +3 -6
  401. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +1 -1
  402. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts.map +1 -1
  403. package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts +3 -5
  404. package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts.map +1 -1
  405. package/build/types/integrations/tracing/postgres/index.d.ts.map +1 -1
  406. package/build/types/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts +0 -1
  407. package/build/types/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts.map +1 -1
  408. package/build/types/integrations/tracing/postgres/vendored/enums/SpanNames.d.ts.map +1 -1
  409. package/build/types/integrations/tracing/postgres/vendored/instrumentation.d.ts +1 -9
  410. package/build/types/integrations/tracing/postgres/vendored/instrumentation.d.ts.map +1 -1
  411. package/build/types/integrations/tracing/postgres/vendored/internal-types.d.ts +0 -2
  412. package/build/types/integrations/tracing/postgres/vendored/internal-types.d.ts.map +1 -1
  413. package/build/types/integrations/tracing/postgres/vendored/pg-pool-types.d.ts.map +1 -1
  414. package/build/types/integrations/tracing/postgres/vendored/pg-types.d.ts.map +1 -1
  415. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts +0 -50
  416. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts.map +1 -1
  417. package/build/types/integrations/tracing/postgres/vendored/types.d.ts +2 -56
  418. package/build/types/integrations/tracing/postgres/vendored/types.d.ts.map +1 -1
  419. package/build/types/integrations/tracing/postgres/vendored/utils.d.ts +13 -26
  420. package/build/types/integrations/tracing/postgres/vendored/utils.d.ts.map +1 -1
  421. package/build/types/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts.map +1 -1
  422. package/build/types/integrations/tracing/prisma/vendored/constants.d.ts.map +1 -1
  423. package/build/types/integrations/tracing/prisma/vendored/global.d.ts.map +1 -1
  424. package/build/types/integrations/tracing/prisma/vendored/instrumentation.d.ts.map +1 -1
  425. package/build/types/integrations/tracing/prisma/vendored/types.d.ts.map +1 -1
  426. package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
  427. package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts +3 -8
  428. package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts.map +1 -1
  429. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts.map +1 -1
  430. package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +1 -1
  431. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts.map +1 -1
  432. package/build/types/integrations/tracing/redis/vendored/types.d.ts +2 -36
  433. package/build/types/integrations/tracing/redis/vendored/types.d.ts.map +1 -1
  434. package/build/types/integrations/tracing/tedious/index.d.ts.map +1 -1
  435. package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts +3 -14
  436. package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts.map +1 -1
  437. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts.map +1 -1
  438. package/build/types/integrations/tracing/tedious/vendored/utils.d.ts.map +1 -1
  439. package/build/types/sdk/diagnosticsChannelInjection.d.ts +41 -0
  440. package/build/types/sdk/diagnosticsChannelInjection.d.ts.map +1 -0
  441. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +34 -0
  442. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +1 -0
  443. package/build/types/sdk/index.d.ts.map +1 -1
  444. package/build/types-ts3.8/index.d.ts +1 -0
  445. package/build/types-ts3.8/integrations/fs/vendored/instrumentation.d.ts +6 -10
  446. package/build/types-ts3.8/integrations/fs/vendored/types.d.ts +10 -15
  447. package/build/types-ts3.8/integrations/fs/vendored/utils.d.ts +2 -2
  448. package/build/types-ts3.8/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts +0 -4
  449. package/build/types-ts3.8/integrations/tracing/connect/vendored/instrumentation.d.ts +4 -4
  450. package/build/types-ts3.8/integrations/tracing/connect/vendored/internal-types.d.ts +2 -2
  451. package/build/types-ts3.8/integrations/tracing/dataloader/vendored/instrumentation.d.ts +2 -5
  452. package/build/types-ts3.8/integrations/tracing/dataloader/vendored/types.d.ts +20 -8
  453. package/build/types-ts3.8/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts +1 -1
  454. package/build/types-ts3.8/integrations/tracing/genericPool/vendored/instrumentation.d.ts +2 -1
  455. package/build/types-ts3.8/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts +1 -3
  456. package/build/types-ts3.8/integrations/tracing/graphql/vendored/instrumentation.d.ts +6 -1
  457. package/build/types-ts3.8/integrations/tracing/graphql/vendored/internal-types.d.ts +3 -3
  458. package/build/types-ts3.8/integrations/tracing/graphql/vendored/types.d.ts +4 -42
  459. package/build/types-ts3.8/integrations/tracing/graphql/vendored/utils.d.ts +6 -9
  460. package/build/types-ts3.8/integrations/tracing/hapi/vendored/instrumentation.d.ts +2 -2
  461. package/build/types-ts3.8/integrations/tracing/hapi/vendored/utils.d.ts +1 -2
  462. package/build/types-ts3.8/integrations/tracing/knex/vendored/instrumentation.d.ts +8 -10
  463. package/build/types-ts3.8/integrations/tracing/knex/vendored/semconv.d.ts +1 -0
  464. package/build/types-ts3.8/integrations/tracing/knex/vendored/utils.d.ts +0 -6
  465. package/build/types-ts3.8/integrations/tracing/koa/vendored/internal-types.d.ts +4 -4
  466. package/build/types-ts3.8/integrations/tracing/koa/vendored/types.d.ts +1 -38
  467. package/build/types-ts3.8/integrations/tracing/mongo/index.d.ts +0 -4
  468. package/build/types-ts3.8/integrations/tracing/mongo/vendored/instrumentation.d.ts +4 -72
  469. package/build/types-ts3.8/integrations/tracing/mongo/vendored/internal-types.d.ts +0 -59
  470. package/build/types-ts3.8/integrations/tracing/mongo/vendored/patches.d.ts +15 -0
  471. package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +0 -54
  472. package/build/types-ts3.8/integrations/tracing/mongo/vendored/utils.d.ts +24 -0
  473. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose-types.d.ts +3 -0
  474. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose.d.ts +3 -8
  475. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -14
  476. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/utils.d.ts +4 -6
  477. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/instrumentation.d.ts +3 -6
  478. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/utils.d.ts +3 -5
  479. package/build/types-ts3.8/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts +0 -1
  480. package/build/types-ts3.8/integrations/tracing/postgres/vendored/instrumentation.d.ts +0 -8
  481. package/build/types-ts3.8/integrations/tracing/postgres/vendored/internal-types.d.ts +0 -2
  482. package/build/types-ts3.8/integrations/tracing/postgres/vendored/semconv.d.ts +0 -50
  483. package/build/types-ts3.8/integrations/tracing/postgres/vendored/types.d.ts +1 -55
  484. package/build/types-ts3.8/integrations/tracing/postgres/vendored/utils.d.ts +13 -26
  485. package/build/types-ts3.8/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts +3 -8
  486. package/build/types-ts3.8/integrations/tracing/redis/vendored/types.d.ts +2 -36
  487. package/build/types-ts3.8/integrations/tracing/tedious/vendored/instrumentation.d.ts +3 -14
  488. package/build/types-ts3.8/sdk/diagnosticsChannelInjection.d.ts +41 -0
  489. package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +34 -0
  490. package/package.json +20 -6
  491. package/build/cjs/integrations/tracing/knex/vendored/constants.js +0 -16
  492. package/build/cjs/integrations/tracing/knex/vendored/constants.js.map +0 -1
  493. package/build/cjs/integrations/tracing/postgres/vendored/internal-types.js +0 -6
  494. package/build/cjs/integrations/tracing/postgres/vendored/internal-types.js.map +0 -1
  495. package/build/cjs/integrations/tracing/utils/sql-common.js +0 -43
  496. package/build/cjs/integrations/tracing/utils/sql-common.js.map +0 -1
  497. package/build/esm/integrations/tracing/knex/vendored/constants.js +0 -13
  498. package/build/esm/integrations/tracing/knex/vendored/constants.js.map +0 -1
  499. package/build/esm/integrations/tracing/postgres/vendored/internal-types.js +0 -4
  500. package/build/esm/integrations/tracing/postgres/vendored/internal-types.js.map +0 -1
  501. package/build/esm/integrations/tracing/utils/sql-common.js +0 -41
  502. package/build/esm/integrations/tracing/utils/sql-common.js.map +0 -1
  503. package/build/types/integrations/tracing/dataloader/vendored/dataloader-types.d.ts +0 -14
  504. package/build/types/integrations/tracing/dataloader/vendored/dataloader-types.d.ts.map +0 -1
  505. package/build/types/integrations/tracing/knex/vendored/constants.d.ts +0 -3
  506. package/build/types/integrations/tracing/knex/vendored/constants.d.ts.map +0 -1
  507. package/build/types/integrations/tracing/knex/vendored/types.d.ts +0 -8
  508. package/build/types/integrations/tracing/knex/vendored/types.d.ts.map +0 -1
  509. package/build/types/integrations/tracing/mongo/vendored/types.d.ts +0 -51
  510. package/build/types/integrations/tracing/mongo/vendored/types.d.ts.map +0 -1
  511. package/build/types/integrations/tracing/mongoose/vendored/types.d.ts +0 -36
  512. package/build/types/integrations/tracing/mongoose/vendored/types.d.ts.map +0 -1
  513. package/build/types/integrations/tracing/mysql2/vendored/types.d.ts +0 -18
  514. package/build/types/integrations/tracing/mysql2/vendored/types.d.ts.map +0 -1
  515. package/build/types/integrations/tracing/tedious/vendored/types.d.ts +0 -10
  516. package/build/types/integrations/tracing/tedious/vendored/types.d.ts.map +0 -1
  517. package/build/types-ts3.8/integrations/tracing/dataloader/vendored/dataloader-types.d.ts +0 -14
  518. package/build/types-ts3.8/integrations/tracing/knex/vendored/constants.d.ts +0 -3
  519. package/build/types-ts3.8/integrations/tracing/knex/vendored/types.d.ts +0 -8
  520. package/build/types-ts3.8/integrations/tracing/mongo/vendored/types.d.ts +0 -51
  521. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/types.d.ts +0 -36
  522. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/types.d.ts +0 -18
  523. package/build/types-ts3.8/integrations/tracing/tedious/vendored/types.d.ts +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n */\n/* eslint-disable */\n\nimport { context, trace, Span, SpanKind, SpanStatusCode, UpDownCounter, type Attributes } from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport {\n ATTR_DB_COLLECTION_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_MONGODB_COLLECTION,\n ATTR_DB_NAME,\n ATTR_DB_OPERATION,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_NAME_VALUE_MONGODB,\n DB_SYSTEM_VALUE_MONGODB,\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport { MongoDBInstrumentationConfig, CommandResult } from './types';\nimport {\n CursorState,\n ServerSession,\n MongodbCommandType,\n MongoInternalCommand,\n MongodbNamespace,\n MongoInternalTopology,\n WireProtocolInternal,\n V4Connection,\n V4ConnectionPool,\n Replacer,\n} from './internal-types';\nimport { V4Connect, V4Session } from './internal-types';\nimport { SDK_VERSION } from '@sentry/core';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongodb';\n\nconst DEFAULT_CONFIG: MongoDBInstrumentationConfig = {\n requireParentSpan: true,\n};\n\n/** mongodb instrumentation plugin for OpenTelemetry */\nexport class MongoDBInstrumentation extends InstrumentationBase<MongoDBInstrumentationConfig> {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n declare private _connectionsUsage: UpDownCounter;\n declare private _poolName: string;\n\n constructor(config: MongoDBInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, { ...DEFAULT_CONFIG, ...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 override setConfig(config: MongoDBInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n override _updateMetricInstruments() {\n this._connectionsUsage = 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 eventual 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, poolName: string, state: string) {\n this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n }\n\n init() {\n const { v3PatchConnection: v3PatchConnection, v3UnpatchConnection: v3UnpatchConnection } =\n this._getV3ConnectionPatches();\n\n const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n const { v4PatchConnectionCallback, v4PatchConnectionPromise, v4UnpatchConnection } = this._getV4ConnectionPatches();\n const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches();\n const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n\n return [\n new InstrumentationNodeModuleDefinition('mongodb', ['>=3.3.0 <4'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/core/wireprotocol/index.js',\n ['>=3.3.0 <4'],\n v3PatchConnection,\n v3UnpatchConnection,\n ),\n ]),\n new InstrumentationNodeModuleDefinition('mongodb', ['>=4.0.0 <8'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionCallback,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=6.4.0 <8'],\n v4PatchConnectionPromise,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection_pool.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionPool,\n v4UnpatchConnectionPool,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connect.js',\n ['>=4.0.0 <8'],\n v4PatchConnect,\n v4UnpatchConnect,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/sessions.js',\n ['>=4.0.0 <8'],\n v4PatchSessions,\n v4UnpatchSessions,\n ),\n ]),\n ];\n }\n\n private _getV3ConnectionPatches<T extends WireProtocolInternal>() {\n return {\n v3PatchConnection: (moduleExports: T) => {\n // patch insert operation\n if (isWrapped(moduleExports.insert)) {\n this._unwrap(moduleExports, 'insert');\n }\n this._wrap(moduleExports, 'insert', this._getV3PatchOperation('insert'));\n // patch remove operation\n if (isWrapped(moduleExports.remove)) {\n this._unwrap(moduleExports, 'remove');\n }\n this._wrap(moduleExports, 'remove', this._getV3PatchOperation('remove'));\n // patch update operation\n if (isWrapped(moduleExports.update)) {\n this._unwrap(moduleExports, 'update');\n }\n this._wrap(moduleExports, 'update', this._getV3PatchOperation('update'));\n // patch other command\n if (isWrapped(moduleExports.command)) {\n this._unwrap(moduleExports, 'command');\n }\n this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n // patch query\n if (isWrapped(moduleExports.query)) {\n this._unwrap(moduleExports, 'query');\n }\n this._wrap(moduleExports, 'query', this._getV3PatchFind());\n // patch get more operation on cursor\n if (isWrapped(moduleExports.getMore)) {\n this._unwrap(moduleExports, 'getMore');\n }\n this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n return moduleExports;\n },\n v3UnpatchConnection: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'insert');\n this._unwrap(moduleExports, 'remove');\n this._unwrap(moduleExports, 'update');\n this._unwrap(moduleExports, 'command');\n this._unwrap(moduleExports, 'query');\n this._unwrap(moduleExports, 'getMore');\n },\n };\n }\n\n private _getV4SessionsPatches<T extends V4Session>() {\n return {\n v4PatchSessions: (moduleExports: any) => {\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n this._wrap(moduleExports.ServerSessionPool.prototype, 'acquire', this._getV4AcquireCommand());\n\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n this._wrap(moduleExports.ServerSessionPool.prototype, 'release', this._getV4ReleaseCommand());\n return moduleExports;\n },\n v4UnpatchSessions: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n },\n };\n }\n\n private _getV4AcquireCommand() {\n const instrumentation = this;\n return (original: V4Session['acquire']) => {\n return function patchAcquire(this: any) {\n const nSessionsBeforeAcquire = this.sessions.length;\n const session = original.call(this);\n const nSessionsAfterAcquire = this.sessions.length;\n\n if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n //no session in the pool. a new session was created and used\n instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n } else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n //a session was already in the pool. remove it from the pool and use it.\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n }\n return session;\n };\n };\n }\n\n private _getV4ReleaseCommand() {\n const instrumentation = this;\n return (original: V4Session['release']) => {\n return function patchRelease(this: any, session: ServerSession) {\n const cmdPromise = original.call(this, session);\n\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n return cmdPromise;\n };\n };\n }\n\n private _getV4ConnectionPoolPatches<T extends V4ConnectionPool>() {\n return {\n v4PatchConnectionPool: (moduleExports: any) => {\n const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n if (isWrapped(poolPrototype.checkOut)) {\n this._unwrap(poolPrototype, 'checkOut');\n }\n\n this._wrap(poolPrototype, 'checkOut', this._getV4ConnectionPoolCheckOut());\n return moduleExports;\n },\n v4UnpatchConnectionPool: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n },\n };\n }\n\n private _getV4ConnectPatches<T extends V4Connect>() {\n return {\n v4PatchConnect: (moduleExports: any) => {\n if (isWrapped(moduleExports.connect)) {\n this._unwrap(moduleExports, 'connect');\n }\n\n this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n return moduleExports;\n },\n v4UnpatchConnect: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports, 'connect');\n },\n };\n }\n\n // This patch will become unnecessary once\n // https://jira.mongodb.org/browse/NODE-5639 is done.\n private _getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: any) {\n const patchedCallback = context.bind(context.active(), callback);\n return original.call(this, patchedCallback);\n };\n };\n }\n\n private _getV4ConnectCommand() {\n const instrumentation = this;\n\n return (original: V4Connect['connectCallback'] | V4Connect['connectPromise']) => {\n return function patchedConnect(this: unknown, options: any, callback: any) {\n // from v6.4 `connect` method only accepts an options param and returns a promise\n // with the connection\n if (original.length === 1) {\n const result = (original as V4Connect['connectPromise']).call(this, options);\n if (result && typeof result.then === 'function') {\n result.then(\n () => instrumentation.setPoolName(options),\n // this handler is set to pass the lint rules\n () => undefined,\n );\n }\n return result;\n }\n\n // Earlier versions expects a callback param and return void\n const patchedCallback = function (err: any, conn: any) {\n if (err || !conn) {\n callback(err, conn);\n return;\n }\n instrumentation.setPoolName(options);\n callback(err, conn);\n };\n\n return (original as V4Connect['connectCallback']).call(this, options, patchedCallback);\n };\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private _getV4ConnectionPatches<T extends V4Connection>() {\n return {\n v4PatchConnectionCallback: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandCallback());\n return moduleExports;\n },\n v4PatchConnectionPromise: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandPromise());\n return moduleExports;\n },\n v4UnpatchConnection: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports.Connection.prototype, 'command');\n },\n };\n }\n\n /** Creates spans for common operations */\n private _getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n const instrumentation = this;\n return (original: WireProtocolInternal[typeof operationName]) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n if (skipInstrumentation || typeof resultHandler !== 'function' || typeof ops !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, options);\n } else {\n return original.call(this, server, ns, ops, options, callback);\n }\n }\n\n const attributes = instrumentation._getV3SpanAttributes(\n ns,\n server,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ops[0] as any,\n operationName,\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, patchedCallback);\n } else {\n return original.call(this, server, ns, ops, options, patchedCallback);\n }\n };\n };\n }\n\n /** Creates spans for command operation */\n private _getV3PatchCommand() {\n const instrumentation = this;\n return (original: WireProtocolInternal['command']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, options);\n } else {\n return original.call(this, server, ns, cmd, options, callback);\n }\n }\n\n const commandType = MongoDBInstrumentation._getCommandType(cmd);\n const operationName = commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, operationName);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, options, patchedCallback);\n }\n };\n };\n }\n\n /** Creates spans for command operation */\n private _getV4PatchCommandCallback() {\n const instrumentation = this;\n return (original: V4Connection['commandCallback']) => {\n return function patchedV4ServerCommand(\n this: any,\n ns: MongodbNamespace,\n cmd: any,\n options: undefined | unknown,\n callback: any,\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n const resultHandler = callback;\n const commandType = Object.keys(cmd)[0];\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.call(this, ns, cmd, options, callback);\n }\n\n let span = undefined;\n if (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n }\n\n private _getV4PatchCommandPromise() {\n const instrumentation = this;\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const commandType = Object.keys(cmd)[0];\n const resultHandler = () => undefined;\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.apply(this, args);\n }\n\n let span = undefined;\n if (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n\n const result = original.apply(this, args);\n result.then(\n (res: any) => patchedCallback(null, res),\n (err: any) => patchedCallback(err),\n );\n\n return result;\n };\n };\n }\n\n /** Creates spans for find operation */\n private _getV3PatchFind() {\n const instrumentation = this;\n return (original: WireProtocolInternal['query']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, options);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, callback);\n }\n }\n\n const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, 'find');\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n }\n };\n };\n }\n\n /** Creates spans for find operation */\n private _getV3PatchCursor() {\n const instrumentation = this;\n return (original: WireProtocolInternal['getMore']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) {\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || typeof resultHandler !== 'function') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, options);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, callback);\n }\n }\n\n const attributes = instrumentation._getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore');\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n }\n };\n };\n }\n\n /**\n * Get the mongodb command type from the object.\n * @param command Internal mongodb command object\n */\n private static _getCommandType(command: MongoInternalCommand): MongodbCommandType {\n if (command.createIndexes !== undefined) {\n return MongodbCommandType.CREATE_INDEXES;\n } else if (command.findandmodify !== undefined) {\n return MongodbCommandType.FIND_AND_MODIFY;\n } else if (command.ismaster !== undefined) {\n return MongodbCommandType.IS_MASTER;\n } else if (command.count !== undefined) {\n return MongodbCommandType.COUNT;\n } else if (command.aggregate !== undefined) {\n return MongodbCommandType.AGGREGATE;\n } else {\n return MongodbCommandType.UNKNOWN;\n }\n }\n\n /**\n * Determine a span's attributes by fetching related metadata from the context\n * @param connectionCtx mongodb internal connection context\n * @param ns mongodb namespace\n * @param command mongodb internal representation of a command\n */\n private _getV4SpanAttributes(\n connectionCtx: any,\n ns: MongodbNamespace,\n command?: any,\n operation?: string,\n ): Attributes {\n let host, port: undefined | string;\n if (connectionCtx) {\n const hostParts = typeof connectionCtx.address === 'string' ? connectionCtx.address.split(':') : '';\n if (hostParts.length === 2) {\n host = hostParts[0];\n port = hostParts[1];\n }\n }\n // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n let commandObj: Record<string, unknown>;\n if (command?.documents && command.documents[0]) {\n commandObj = command.documents[0];\n } else if (command?.cursors) {\n commandObj = command.cursors;\n } else {\n commandObj = command;\n }\n\n return this._getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n }\n\n /**\n * Determine a span's attributes by fetching related metadata from the context\n * @param ns mongodb namespace\n * @param topology mongodb internal representation of the network topology\n * @param command mongodb internal representation of a command\n */\n private _getV3SpanAttributes(\n ns: string,\n topology: MongoInternalTopology,\n command?: MongoInternalCommand,\n operation?: string | undefined,\n ): Attributes {\n // Extract host/port info.\n let host: undefined | string;\n let port: undefined | string;\n if (topology && topology.s) {\n host = topology.s.options?.host ?? topology.s.host;\n port = (topology.s.options?.port ?? topology.s.port)?.toString();\n if (host == null || port == null) {\n const address = topology.description?.address;\n if (address) {\n const addressSegments = address.split(':');\n host = addressSegments[0];\n port = addressSegments[1];\n }\n }\n }\n\n // The namespace is a combination of the database name and the name of the\n // collection or index, like so: [database-name].[collection-or-index-name].\n // It could be a string or an instance of MongoDBNamespace, as such we\n // always coerce to a string to extract db and collection.\n const [dbName, dbCollection] = ns.toString().split('.');\n // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n const commandObj = command?.query ?? command?.q ?? command;\n\n return this._getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n }\n\n private _getSpanAttributes(\n dbName?: string,\n dbCollection?: string,\n host?: undefined | string,\n port?: undefined | string,\n commandObj?: any,\n operation?: string | undefined,\n ): Attributes {\n const attributes: Attributes = {};\n\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MONGODB;\n attributes[ATTR_DB_NAME] = dbName;\n attributes[ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n attributes[ATTR_DB_OPERATION] = operation;\n attributes[ATTR_DB_CONNECTION_STRING] = `mongodb://${host}:${port}/${dbName}`;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB;\n attributes[ATTR_DB_NAMESPACE] = dbName;\n attributes[ATTR_DB_OPERATION_NAME] = operation;\n attributes[ATTR_DB_COLLECTION_NAME] = dbCollection;\n }\n\n if (host && port) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n }\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_PORT] = portNumber;\n }\n }\n }\n\n if (commandObj) {\n const { dbStatementSerializer: configDbStatementSerializer } = this.getConfig();\n const dbStatementSerializer =\n typeof configDbStatementSerializer === 'function'\n ? configDbStatementSerializer\n : this._defaultDbStatementSerializer.bind(this);\n\n safeExecuteInTheMiddle(\n () => {\n const query = dbStatementSerializer(commandObj);\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = query;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = query;\n }\n },\n err => {\n if (err) {\n this._diag.error('Error running dbStatementSerializer hook', err);\n }\n },\n true,\n );\n }\n\n return attributes;\n }\n\n private _spanNameFromAttrs(attributes: Attributes): string {\n let spanName;\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n spanName =\n [attributes[ATTR_DB_OPERATION_NAME], attributes[ATTR_DB_COLLECTION_NAME]].filter(attr => attr).join(' ') ||\n DB_SYSTEM_NAME_VALUE_MONGODB;\n } else {\n spanName = `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`;\n }\n return spanName;\n }\n\n private _getDefaultDbStatementReplacer(): Replacer {\n const seen = new WeakSet();\n return (_key, value) => {\n // undefined, boolean, number, bigint, string, symbol, function || null\n if (typeof value !== 'object' || !value) return '?';\n\n // objects (including arrays)\n if (seen.has(value)) return '[Circular]';\n seen.add(value);\n return value;\n };\n }\n\n private _defaultDbStatementSerializer(commandObj: Record<string, unknown>) {\n const { enhancedDatabaseReporting } = this.getConfig();\n\n if (enhancedDatabaseReporting) {\n return JSON.stringify(commandObj);\n }\n\n return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n }\n\n /**\n * Triggers the response hook in case it is defined.\n * @param span The span to add the results to.\n * @param result The command result\n */\n private _handleExecutionResult(span: Span, result: CommandResult) {\n const { responseHook } = this.getConfig();\n if (typeof responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, { data: result });\n },\n err => {\n if (err) {\n this._diag.error('Error running response hook', err);\n }\n },\n true,\n );\n }\n }\n\n /**\n * Ends a created span.\n * @param span The created span to end.\n * @param resultHandler A callback function.\n * @param connectionId: The connection ID of the Command response.\n */\n private _patchEnd(\n span: Span | undefined,\n resultHandler: Function,\n connectionId?: number,\n commandType?: string,\n ): Function {\n // mongodb is using \"tick\" when calling a callback, this way the context\n // in final callback (resultHandler) is lost\n const activeContext = context.active();\n const instrumentation = this;\n let spanEnded = false;\n\n return function patchedEnd(this: {}, ...args: unknown[]) {\n if (!spanEnded) {\n spanEnded = true;\n const error = args[0];\n if (span) {\n if (error instanceof Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n } else {\n const result = args[1] as CommandResult;\n instrumentation._handleExecutionResult(span, result);\n }\n span.end();\n }\n\n if (commandType === 'endSessions') {\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n }\n }\n\n return context.with(activeContext, () => {\n return resultHandler.apply(this, args);\n });\n };\n }\n private setPoolName(options: any) {\n const host = options.hostAddress?.host;\n const port = options.hostAddress?.port;\n const database = options.dbName;\n const poolName = `mongodb://${host}:${port}/${database}`;\n this._poolName = poolName;\n }\n\n private _checkSkipInstrumentation(currentSpan: Span | undefined) {\n const requireParentSpan = this.getConfig().requireParentSpan;\n const hasNoParentSpan = currentSpan === undefined;\n return requireParentSpan === true && hasNoParentSpan;\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","semconvStabilityFromStr","METRIC_DB_CLIENT_CONNECTIONS_USAGE","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","isWrapped","context","trace","SpanKind","MongodbCommandType","SemconvStability","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MONGODB","ATTR_DB_NAME","ATTR_DB_MONGODB_COLLECTION","ATTR_DB_OPERATION","ATTR_DB_CONNECTION_STRING","ATTR_DB_SYSTEM_NAME","DB_SYSTEM_NAME_VALUE_MONGODB","ATTR_DB_NAMESPACE","ATTR_DB_OPERATION_NAME","ATTR_DB_COLLECTION_NAME","ATTR_NET_PEER_NAME","ATTR_SERVER_ADDRESS","ATTR_NET_PEER_PORT","ATTR_SERVER_PORT","safeExecuteInTheMiddle","ATTR_DB_STATEMENT","ATTR_DB_QUERY_TEXT","SpanStatusCode"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mongo/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-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n * - Dropped the OTel connection-usage metrics (no Sentry MeterProvider consumes them) and the\n * session/connect patches that existed only to feed them\n * - Dropped the env-gated stable-semconv dual emission; only the (default) old semantic\n * conventions are emitted, matching the previous default span output\n */\n\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport type { WireProtocolInternal } from './internal-types';\nimport * as patches from './patches';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongodb';\n\n/** mongodb instrumentation plugin */\nexport class MongoDBInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n public init(): InstrumentationNodeModuleDefinition[] {\n const { v3PatchConnection, v3UnpatchConnection } = this._getV3ConnectionPatches();\n\n const { v4PatchConnectionCallback, v4PatchConnectionPromise, v4UnpatchConnection } = this._getV4ConnectionPatches();\n const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches();\n\n return [\n new InstrumentationNodeModuleDefinition('mongodb', ['>=3.3.0 <4'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/core/wireprotocol/index.js',\n ['>=3.3.0 <4'],\n v3PatchConnection,\n v3UnpatchConnection,\n ),\n ]),\n new InstrumentationNodeModuleDefinition('mongodb', ['>=4.0.0 <8'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionCallback,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=6.4.0 <8'],\n v4PatchConnectionPromise,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection_pool.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionPool,\n v4UnpatchConnectionPool,\n ),\n ]),\n ];\n }\n\n private _getV3ConnectionPatches<T extends WireProtocolInternal>() {\n return {\n v3PatchConnection: (moduleExports: T) => {\n // patch insert operation\n if (isWrapped(moduleExports.insert)) {\n this._unwrap(moduleExports, 'insert');\n }\n this._wrap(moduleExports, 'insert', patches.getV3PatchOperation('insert'));\n // patch remove operation\n if (isWrapped(moduleExports.remove)) {\n this._unwrap(moduleExports, 'remove');\n }\n this._wrap(moduleExports, 'remove', patches.getV3PatchOperation('remove'));\n // patch update operation\n if (isWrapped(moduleExports.update)) {\n this._unwrap(moduleExports, 'update');\n }\n this._wrap(moduleExports, 'update', patches.getV3PatchOperation('update'));\n // patch other command\n if (isWrapped(moduleExports.command)) {\n this._unwrap(moduleExports, 'command');\n }\n this._wrap(moduleExports, 'command', patches.getV3PatchCommand());\n // patch query\n if (isWrapped(moduleExports.query)) {\n this._unwrap(moduleExports, 'query');\n }\n this._wrap(moduleExports, 'query', patches.getV3PatchFind());\n // patch get more operation on cursor\n if (isWrapped(moduleExports.getMore)) {\n this._unwrap(moduleExports, 'getMore');\n }\n this._wrap(moduleExports, 'getMore', patches.getV3PatchCursor());\n return moduleExports;\n },\n v3UnpatchConnection: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'insert');\n this._unwrap(moduleExports, 'remove');\n this._unwrap(moduleExports, 'update');\n this._unwrap(moduleExports, 'command');\n this._unwrap(moduleExports, 'query');\n this._unwrap(moduleExports, 'getMore');\n },\n };\n }\n\n private _getV4ConnectionPoolPatches() {\n return {\n v4PatchConnectionPool: (moduleExports: any) => {\n const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n if (isWrapped(poolPrototype.checkOut)) {\n this._unwrap(poolPrototype, 'checkOut');\n }\n\n this._wrap(poolPrototype, 'checkOut', patches.getV4ConnectionPoolCheckOut());\n return moduleExports;\n },\n v4UnpatchConnectionPool: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n },\n };\n }\n\n private _getV4ConnectionPatches() {\n return {\n v4PatchConnectionCallback: (moduleExports: any) => {\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', patches.getV4PatchCommandCallback());\n return moduleExports;\n },\n v4PatchConnectionPromise: (moduleExports: any) => {\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', patches.getV4PatchCommandPromise());\n return moduleExports;\n },\n v4UnpatchConnection: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports.Connection.prototype, 'command');\n },\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","isWrapped","patches.getV3PatchOperation","patches.getV3PatchCommand","patches.getV3PatchFind","patches.getV3PatchCursor","patches.getV4ConnectionPoolCheckOut","patches.getV4PatchCommandCallback","patches.getV4PatchCommandPromise"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"internal-types.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/internal-types.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n */\n/* eslint-disable */\n\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record<string, unknown>) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n /**\n * If true, additional information about query parameters and\n * results will be attached (as `attributes`) to spans representing\n * database operations.\n */\n enhancedDatabaseReporting?: boolean;\n\n /**\n * Hook that allows adding custom span attributes based on the data\n * returned from MongoDB actions.\n *\n * @default undefined\n */\n responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n /**\n * Custom serializer function for the db.statement tag\n */\n dbStatementSerializer?: DbStatementSerializer;\n}\n\nexport type Func<T> = (...args: unknown[]) => T;\nexport type MongoInternalCommand = {\n findandmodify: boolean;\n createIndexes: boolean;\n count: boolean;\n aggregate: boolean;\n ismaster: boolean;\n indexes?: unknown[];\n query?: Record<string, unknown>;\n limit?: number;\n q?: Record<string, unknown>;\n u?: Record<string, unknown>;\n};\n\nexport type ServerSession = {\n id: any;\n lastUse: number;\n txnNumber: number;\n isDirty: boolean;\n};\n\nexport type CursorState = { cmd: MongoInternalCommand } & Record<string, unknown>;\n\nexport interface MongoResponseHookInformation {\n data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n result?: unknown;\n connection?: unknown;\n message?: unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/wireprotocol/index.js\nexport type WireProtocolInternal = {\n insert: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n update: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n remove: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n killCursors: (server: MongoInternalTopology, ns: string, cursorState: CursorState, callback: Function) => unknown;\n getMore: (\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n query: (\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n command: (\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/topologies/server.js#L172\n// https://github.com/mongodb/node-mongodb-native/blob/2.2/lib/server.js#L174\nexport type MongoInternalTopology = {\n s?: {\n // those are for mongodb@3\n options?: {\n host?: string;\n port?: number;\n servername?: string;\n };\n // those are for mongodb@2\n host?: string;\n port?: number;\n };\n // mongodb@3 with useUnifiedTopology option\n description?: {\n address?: string;\n };\n};\n\nexport enum MongodbCommandType {\n CREATE_INDEXES = 'createIndexes',\n FIND_AND_MODIFY = 'findAndModify',\n IS_MASTER = 'isMaster',\n COUNT = 'count',\n AGGREGATE = 'aggregate',\n UNKNOWN = 'unknown',\n}\n\n// https://github.com/mongodb/js-bson/blob/main/src/bson.ts\nexport type Document = {\n [key: string]: any;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/utils.ts#L281\nexport interface MongodbNamespace {\n db: string;\n collection?: string;\n}\n\nexport type V4Connection = {\n command: Function;\n // From version 6.4.0 the method does not expect a callback and returns a promise\n // https://github.com/mongodb/node-mongodb-native/blob/v6.4.2/src/cmap/connection.ts\n commandPromise(\n ns: MongodbNamespace,\n cmd: Document,\n options: undefined | unknown,\n // From v6.6.0 we have this new param which is a constructor function\n // https://github.com/mongodb/node-mongodb-native/blob/v6.6.0/src/cmap/connection.ts#L588\n responseType: undefined | unknown,\n ): Promise<any>;\n // Earlier versions expect a callback param and return void\n // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts\n commandCallback(ns: MongodbNamespace, cmd: Document, options: undefined | unknown, callback: any): void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection_pool.ts\nexport type V4ConnectionPool = {\n // Instrumentation just cares about carrying the async context so\n // types of callback params are not needed\n checkOut: (callback: (error: any, connection: any) => void) => void;\n};\n\nexport type V4Connect = {\n connect: Function;\n // From version 6.4.0 the method does not expect a callback and returns a promise\n // https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/cmap/connect.ts\n connectPromise: (options: any) => Promise<any>;\n // Earlier versions expect a callback param and return void\n // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connect.ts\n connectCallback: (options: any, callback: any) => void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/sessions.ts\nexport type V4Session = {\n acquire: () => ServerSession;\n release: (session: ServerSession) => void;\n};\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer\n */\nexport type Replacer = (key: string, value: unknown) => unknown;\n"],"names":["MongodbCommandType"],"mappings":";;AAiKO,IAAK,kBAAA,qBAAAA,mBAAAA,KAAL;AACL,EAAAA,oBAAA,gBAAA,CAAA,GAAiB,eAAA;AACjB,EAAAA,oBAAA,iBAAA,CAAA,GAAkB,eAAA;AAClB,EAAAA,oBAAA,WAAA,CAAA,GAAY,UAAA;AACZ,EAAAA,oBAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,oBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AANA,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;;;;"}
1
+ {"version":3,"file":"internal-types.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/internal-types.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-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Trimmed to the driver-internal types actually used by the instrumentation\n */\n\nexport type MongoInternalCommand = {\n findandmodify: boolean;\n createIndexes: boolean;\n count: boolean;\n aggregate: boolean;\n ismaster: boolean;\n indexes?: unknown[];\n query?: Record<string, unknown>;\n limit?: number;\n q?: Record<string, unknown>;\n u?: Record<string, unknown>;\n};\n\nexport type CursorState = { cmd: MongoInternalCommand } & Record<string, unknown>;\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/wireprotocol/index.js\nexport type WireProtocolInternal = {\n insert: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n update: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n remove: (\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n killCursors: (server: MongoInternalTopology, ns: string, cursorState: CursorState, callback: Function) => unknown;\n getMore: (\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n query: (\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n command: (\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) => unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/topologies/server.js#L172\n// https://github.com/mongodb/node-mongodb-native/blob/2.2/lib/server.js#L174\nexport type MongoInternalTopology = {\n s?: {\n // those are for mongodb@3\n options?: {\n host?: string;\n port?: number;\n servername?: string;\n };\n // those are for mongodb@2\n host?: string;\n port?: number;\n };\n // mongodb@3 with useUnifiedTopology option\n description?: {\n address?: string;\n };\n};\n\nexport enum MongodbCommandType {\n CREATE_INDEXES = 'createIndexes',\n FIND_AND_MODIFY = 'findAndModify',\n IS_MASTER = 'isMaster',\n COUNT = 'count',\n AGGREGATE = 'aggregate',\n UNKNOWN = 'unknown',\n}\n\n// https://github.com/mongodb/js-bson/blob/main/src/bson.ts\nexport type Document = {\n [key: string]: any;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/utils.ts#L281\nexport interface MongodbNamespace {\n db: string;\n collection?: string;\n}\n\nexport type V4Connection = {\n command: Function;\n // From version 6.4.0 the method does not expect a callback and returns a promise\n // https://github.com/mongodb/node-mongodb-native/blob/v6.4.2/src/cmap/connection.ts\n commandPromise(\n ns: MongodbNamespace,\n cmd: Document,\n options: undefined | unknown,\n // From v6.6.0 we have this new param which is a constructor function\n // https://github.com/mongodb/node-mongodb-native/blob/v6.6.0/src/cmap/connection.ts#L588\n responseType: undefined | unknown,\n ): Promise<any>;\n // Earlier versions expect a callback param and return void\n // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts\n commandCallback(ns: MongodbNamespace, cmd: Document, options: undefined | unknown, callback: any): void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection_pool.ts\nexport type V4ConnectionPool = {\n // Instrumentation just cares about carrying the async context so\n // types of callback params are not needed\n checkOut: (callback: (error: any, connection: any) => void) => void;\n};\n"],"names":["MongodbCommandType"],"mappings":";;AA8FO,IAAK,kBAAA,qBAAAA,mBAAAA,KAAL;AACL,EAAAA,oBAAA,gBAAA,CAAA,GAAiB,eAAA;AACjB,EAAAA,oBAAA,iBAAA,CAAA,GAAkB,eAAA;AAClB,EAAAA,oBAAA,WAAA,CAAA,GAAY,UAAA;AACZ,EAAAA,oBAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,oBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AANA,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;;;;"}
@@ -0,0 +1,151 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const core = require('@sentry/core');
4
+ const internalTypes = require('./internal-types.js');
5
+ const utils = require('./utils.js');
6
+
7
+ function getV3PatchOperation(operationName) {
8
+ return (original) => {
9
+ return function patchedServerCommand(server, ns, ops, options, callback) {
10
+ const resultHandler = typeof options === "function" ? options : callback;
11
+ if (utils.shouldSkipInstrumentation() || typeof resultHandler !== "function" || typeof ops !== "object") {
12
+ if (typeof options === "function") {
13
+ return original.call(this, server, ns, ops, options);
14
+ } else {
15
+ return original.call(this, server, ns, ops, options, callback);
16
+ }
17
+ }
18
+ const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, ops[0], operationName));
19
+ const patchedCallback = utils.patchEnd(span, resultHandler);
20
+ if (typeof options === "function") {
21
+ return original.call(this, server, ns, ops, patchedCallback);
22
+ } else {
23
+ return original.call(this, server, ns, ops, options, patchedCallback);
24
+ }
25
+ };
26
+ };
27
+ }
28
+ function getV3PatchCommand() {
29
+ return (original) => {
30
+ return function patchedServerCommand(server, ns, cmd, options, callback) {
31
+ const resultHandler = typeof options === "function" ? options : callback;
32
+ if (utils.shouldSkipInstrumentation() || typeof resultHandler !== "function" || typeof cmd !== "object") {
33
+ if (typeof options === "function") {
34
+ return original.call(this, server, ns, cmd, options);
35
+ } else {
36
+ return original.call(this, server, ns, cmd, options, callback);
37
+ }
38
+ }
39
+ const commandType = utils.getCommandType(cmd);
40
+ const operationName = commandType === internalTypes.MongodbCommandType.UNKNOWN ? void 0 : commandType;
41
+ const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, operationName));
42
+ const patchedCallback = utils.patchEnd(span, resultHandler);
43
+ if (typeof options === "function") {
44
+ return original.call(this, server, ns, cmd, patchedCallback);
45
+ } else {
46
+ return original.call(this, server, ns, cmd, options, patchedCallback);
47
+ }
48
+ };
49
+ };
50
+ }
51
+ function getV4PatchCommandCallback() {
52
+ return (original) => {
53
+ return function patchedV4ServerCommand(ns, cmd, options, callback) {
54
+ const resultHandler = callback;
55
+ const commandType = Object.keys(cmd)[0];
56
+ if (typeof cmd !== "object" || cmd.ismaster || cmd.hello) {
57
+ return original.call(this, ns, cmd, options, callback);
58
+ }
59
+ let span = void 0;
60
+ if (!utils.shouldSkipInstrumentation()) {
61
+ span = utils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
62
+ }
63
+ const patchedCallback = utils.patchEnd(span, resultHandler);
64
+ return original.call(this, ns, cmd, options, patchedCallback);
65
+ };
66
+ };
67
+ }
68
+ function getV4PatchCommandPromise() {
69
+ return (original) => {
70
+ return function patchedV4ServerCommand(...args) {
71
+ const [ns, cmd] = args;
72
+ const commandType = Object.keys(cmd)[0];
73
+ const resultHandler = () => void 0;
74
+ if (typeof cmd !== "object" || cmd.ismaster || cmd.hello) {
75
+ return original.apply(this, args);
76
+ }
77
+ let span = void 0;
78
+ if (!utils.shouldSkipInstrumentation()) {
79
+ span = utils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
80
+ }
81
+ const patchedCallback = utils.patchEnd(span, resultHandler);
82
+ const result = original.apply(this, args);
83
+ result.then(
84
+ (res) => patchedCallback(null, res),
85
+ (err) => patchedCallback(err)
86
+ );
87
+ return result;
88
+ };
89
+ };
90
+ }
91
+ function getV3PatchFind() {
92
+ return (original) => {
93
+ return function patchedServerCommand(server, ns, cmd, cursorState, options, callback) {
94
+ const resultHandler = typeof options === "function" ? options : callback;
95
+ if (utils.shouldSkipInstrumentation() || typeof resultHandler !== "function" || typeof cmd !== "object") {
96
+ if (typeof options === "function") {
97
+ return original.call(this, server, ns, cmd, cursorState, options);
98
+ } else {
99
+ return original.call(this, server, ns, cmd, cursorState, options, callback);
100
+ }
101
+ }
102
+ const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, "find"));
103
+ const patchedCallback = utils.patchEnd(span, resultHandler);
104
+ if (typeof options === "function") {
105
+ return original.call(this, server, ns, cmd, cursorState, patchedCallback);
106
+ } else {
107
+ return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);
108
+ }
109
+ };
110
+ };
111
+ }
112
+ function getV3PatchCursor() {
113
+ return (original) => {
114
+ return function patchedServerCommand(server, ns, cursorState, batchSize, options, callback) {
115
+ const resultHandler = typeof options === "function" ? options : callback;
116
+ if (utils.shouldSkipInstrumentation() || typeof resultHandler !== "function") {
117
+ if (typeof options === "function") {
118
+ return original.call(this, server, ns, cursorState, batchSize, options);
119
+ } else {
120
+ return original.call(this, server, ns, cursorState, batchSize, options, callback);
121
+ }
122
+ }
123
+ const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cursorState.cmd, "getMore"));
124
+ const patchedCallback = utils.patchEnd(span, resultHandler);
125
+ if (typeof options === "function") {
126
+ return original.call(this, server, ns, cursorState, batchSize, patchedCallback);
127
+ } else {
128
+ return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);
129
+ }
130
+ };
131
+ };
132
+ }
133
+ function getV4ConnectionPoolCheckOut() {
134
+ return (original) => {
135
+ return function patchedCheckout(callback) {
136
+ const parentSpan = core.getActiveSpan();
137
+ return original.call(this, function(...args) {
138
+ return core.withActiveSpan(parentSpan ?? null, () => callback.apply(this, args));
139
+ });
140
+ };
141
+ };
142
+ }
143
+
144
+ exports.getV3PatchCommand = getV3PatchCommand;
145
+ exports.getV3PatchCursor = getV3PatchCursor;
146
+ exports.getV3PatchFind = getV3PatchFind;
147
+ exports.getV3PatchOperation = getV3PatchOperation;
148
+ exports.getV4ConnectionPoolCheckOut = getV4ConnectionPoolCheckOut;
149
+ exports.getV4PatchCommandCallback = getV4PatchCommandCallback;
150
+ exports.getV4PatchCommandPromise = getV4PatchCommandPromise;
151
+ //# sourceMappingURL=patches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patches.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/patches.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-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport { getActiveSpan, withActiveSpan } from '@sentry/core';\nimport type {\n CursorState,\n MongodbNamespace,\n MongoInternalCommand,\n MongoInternalTopology,\n V4Connection,\n V4ConnectionPool,\n WireProtocolInternal,\n} from './internal-types';\nimport { MongodbCommandType } from './internal-types';\nimport {\n getCommandType,\n getV3SpanAttributes,\n getV4SpanAttributes,\n patchEnd,\n shouldSkipInstrumentation,\n startMongoSpan,\n} from './utils';\n\n/** Creates spans for v3 common operations (insert/update/remove). */\nexport function getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n return (original: WireProtocolInternal[typeof operationName]) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof ops !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, options);\n } else {\n return original.call(this, server, ns, ops, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, ops[0] as any, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, patchedCallback);\n } else {\n return original.call(this, server, ns, ops, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 command operation. */\nexport function getV3PatchCommand() {\n return (original: WireProtocolInternal['command']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, options);\n } else {\n return original.call(this, server, ns, cmd, options, callback);\n }\n }\n\n const commandType = getCommandType(cmd);\n const operationName = commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v4 (<6.4) callback-style command operation. */\nexport function getV4PatchCommandCallback() {\n return (original: V4Connection['commandCallback']) => {\n return function patchedV4ServerCommand(\n this: any,\n ns: MongodbNamespace,\n cmd: any,\n options: undefined | unknown,\n callback: any,\n ) {\n const resultHandler = callback;\n const commandType = Object.keys(cmd)[0];\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.call(this, ns, cmd, options, callback);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n const patchedCallback = patchEnd(span, resultHandler);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n}\n\n/** Creates spans for the v4 (>=6.4) promise-style command operation. */\nexport function getV4PatchCommandPromise() {\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const commandType = Object.keys(cmd)[0];\n const resultHandler = () => undefined;\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.apply(this, args);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n\n const patchedCallback = patchEnd(span, resultHandler);\n\n const result = original.apply(this, args);\n result.then(\n (res: any) => patchedCallback(null, res),\n (err: any) => patchedCallback(err),\n );\n\n return result;\n };\n };\n}\n\n/** Creates spans for the v3 find operation. */\nexport function getV3PatchFind() {\n return (original: WireProtocolInternal['query']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, options);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, 'find'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 getMore (cursor) operation. */\nexport function getV3PatchCursor() {\n return (original: WireProtocolInternal['getMore']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, options);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n }\n };\n };\n}\n\n// This patch will become unnecessary once https://jira.mongodb.org/browse/NODE-5639 is done.\nexport function getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: (error: any, connection: any) => void) {\n // The pool runs the callback in a detached context, so re-activate the span that was\n // active when `checkOut` was called — otherwise the pooled operation finds no parent.\n const parentSpan = getActiveSpan();\n return original.call(this, function (this: unknown, ...args: [any, any]) {\n return withActiveSpan(parentSpan ?? null, () => callback.apply(this, args));\n });\n };\n };\n}\n"],"names":["shouldSkipInstrumentation","startMongoSpan","getV3SpanAttributes","patchEnd","getCommandType","MongodbCommandType","getV4SpanAttributes","getActiveSpan","withActiveSpan"],"mappings":"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"}
@@ -8,9 +8,7 @@ const ATTR_DB_STATEMENT = "db.statement";
8
8
  const ATTR_DB_SYSTEM = "db.system";
9
9
  const ATTR_NET_PEER_NAME = "net.peer.name";
10
10
  const ATTR_NET_PEER_PORT = "net.peer.port";
11
- const DB_SYSTEM_NAME_VALUE_MONGODB = "mongodb";
12
11
  const DB_SYSTEM_VALUE_MONGODB = "mongodb";
13
- const METRIC_DB_CLIENT_CONNECTIONS_USAGE = "db.client.connections.usage";
14
12
 
15
13
  exports.ATTR_DB_CONNECTION_STRING = ATTR_DB_CONNECTION_STRING;
16
14
  exports.ATTR_DB_MONGODB_COLLECTION = ATTR_DB_MONGODB_COLLECTION;
@@ -20,7 +18,5 @@ exports.ATTR_DB_STATEMENT = ATTR_DB_STATEMENT;
20
18
  exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
21
19
  exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
22
20
  exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
23
- exports.DB_SYSTEM_NAME_VALUE_MONGODB = DB_SYSTEM_NAME_VALUE_MONGODB;
24
21
  exports.DB_SYSTEM_VALUE_MONGODB = DB_SYSTEM_VALUE_MONGODB;
25
- exports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = METRIC_DB_CLIENT_CONNECTIONS_USAGE;
26
22
  //# sourceMappingURL=semconv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.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.collection.name` instead.\n *\n * @example \"mytable\"\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.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' 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 * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\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.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' 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, 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 \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\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_NAME_VALUE_MONGODB = 'mongodb' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MongoDB\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_MONGODB = 'mongodb' 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":";;AAoCO,MAAM,yBAAA,GAA4B;AAWlC,MAAM,0BAAA,GAA6B;AAYnC,MAAM,YAAA,GAAe;AAarB,MAAM,iBAAA,GAAoB;AAY1B,MAAM,iBAAA,GAAoB;AAS1B,MAAM,cAAA,GAAiB;AAWvB,MAAM,kBAAA,GAAqB;AAW3B,MAAM,kBAAA,GAAqB;AAS3B,MAAM,4BAAA,GAA+B;AASrC,MAAM,uBAAA,GAA0B;AAShC,MAAM,kCAAA,GAAqC;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mongo/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-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.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 * @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.collection.name` instead.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * The database statement being executed.\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 * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\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 * @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 \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MONGODB = 'mongodb' as const;\n"],"names":[],"mappings":";;AAoBO,MAAM,yBAAA,GAA4B;AAOlC,MAAM,0BAAA,GAA6B;AAOnC,MAAM,YAAA,GAAe;AAOrB,MAAM,iBAAA,GAAoB;AAO1B,MAAM,iBAAA,GAAoB;AAO1B,MAAM,cAAA,GAAiB;AAOvB,MAAM,kBAAA,GAAqB;AAO3B,MAAM,kBAAA,GAAqB;AAK3B,MAAM,uBAAA,GAA0B;;;;;;;;;;;;"}
@@ -0,0 +1,153 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const api = require('@opentelemetry/api');
4
+ const core = require('@sentry/core');
5
+ const semconv = require('./semconv.js');
6
+ const internalTypes = require('./internal-types.js');
7
+
8
+ const ORIGIN = "auto.db.otel.mongo";
9
+ function serializeDbStatement(commandObj) {
10
+ return JSON.stringify(scrubStatement(commandObj));
11
+ }
12
+ function scrubStatement(value) {
13
+ if (Array.isArray(value)) {
14
+ return value.map((element) => scrubStatement(element));
15
+ }
16
+ if (isCommandObj(value)) {
17
+ const initial = {};
18
+ return Object.entries(value).map(([key, element]) => [key, scrubStatement(element)]).reduce((prev, current) => {
19
+ if (isCommandEntry(current)) {
20
+ prev[current[0]] = current[1];
21
+ }
22
+ return prev;
23
+ }, initial);
24
+ }
25
+ return "?";
26
+ }
27
+ function isCommandObj(value) {
28
+ return typeof value === "object" && value !== null && !isBuffer(value);
29
+ }
30
+ function isBuffer(value) {
31
+ return typeof Buffer !== "undefined" && Buffer.isBuffer(value);
32
+ }
33
+ function isCommandEntry(value) {
34
+ return Array.isArray(value);
35
+ }
36
+ function getCommandType(command) {
37
+ if (command.createIndexes !== void 0) {
38
+ return internalTypes.MongodbCommandType.CREATE_INDEXES;
39
+ } else if (command.findandmodify !== void 0) {
40
+ return internalTypes.MongodbCommandType.FIND_AND_MODIFY;
41
+ } else if (command.ismaster !== void 0) {
42
+ return internalTypes.MongodbCommandType.IS_MASTER;
43
+ } else if (command.count !== void 0) {
44
+ return internalTypes.MongodbCommandType.COUNT;
45
+ } else if (command.aggregate !== void 0) {
46
+ return internalTypes.MongodbCommandType.AGGREGATE;
47
+ } else {
48
+ return internalTypes.MongodbCommandType.UNKNOWN;
49
+ }
50
+ }
51
+ function getV4SpanAttributes(connectionCtx, ns, command, operation) {
52
+ let host, port;
53
+ if (connectionCtx) {
54
+ const hostParts = typeof connectionCtx.address === "string" ? connectionCtx.address.split(":") : "";
55
+ if (hostParts.length === 2) {
56
+ host = hostParts[0];
57
+ port = hostParts[1];
58
+ }
59
+ }
60
+ let commandObj;
61
+ if (command?.documents && command.documents[0]) {
62
+ commandObj = command.documents[0];
63
+ } else if (command?.cursors) {
64
+ commandObj = command.cursors;
65
+ } else {
66
+ commandObj = command;
67
+ }
68
+ return getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);
69
+ }
70
+ function getV3SpanAttributes(ns, topology, command, operation) {
71
+ let host;
72
+ let port;
73
+ if (topology?.s) {
74
+ host = topology.s.options?.host ?? topology.s.host;
75
+ port = (topology.s.options?.port ?? topology.s.port)?.toString();
76
+ if (host == null || port == null) {
77
+ const address = topology.description?.address;
78
+ if (address) {
79
+ const addressSegments = address.split(":");
80
+ host = addressSegments[0];
81
+ port = addressSegments[1];
82
+ }
83
+ }
84
+ }
85
+ const [dbName, dbCollection] = ns.toString().split(".");
86
+ const commandObj = command?.query ?? command?.q ?? command;
87
+ return getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);
88
+ }
89
+ function getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation) {
90
+ const attributes = {
91
+ [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
92
+ // eslint-disable-next-line typescript/no-deprecated
93
+ [semconv.ATTR_DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MONGODB,
94
+ // eslint-disable-next-line typescript/no-deprecated
95
+ [semconv.ATTR_DB_NAME]: dbName,
96
+ // eslint-disable-next-line typescript/no-deprecated
97
+ [semconv.ATTR_DB_MONGODB_COLLECTION]: dbCollection,
98
+ // eslint-disable-next-line typescript/no-deprecated
99
+ [semconv.ATTR_DB_OPERATION]: operation,
100
+ // eslint-disable-next-line typescript/no-deprecated
101
+ [semconv.ATTR_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`
102
+ };
103
+ if (host && port) {
104
+ attributes[semconv.ATTR_NET_PEER_NAME] = host;
105
+ const portNumber = parseInt(port, 10);
106
+ if (!isNaN(portNumber)) {
107
+ attributes[semconv.ATTR_NET_PEER_PORT] = portNumber;
108
+ }
109
+ }
110
+ if (commandObj) {
111
+ try {
112
+ attributes[semconv.ATTR_DB_STATEMENT] = serializeDbStatement(commandObj);
113
+ } catch {
114
+ }
115
+ }
116
+ return attributes;
117
+ }
118
+ function startMongoSpan(attributes) {
119
+ return core.startInactiveSpan({
120
+ // eslint-disable-next-line typescript/no-deprecated
121
+ name: `mongodb.${attributes[semconv.ATTR_DB_OPERATION] || "command"}`,
122
+ kind: api.SpanKind.CLIENT,
123
+ attributes
124
+ });
125
+ }
126
+ function patchEnd(span, resultHandler) {
127
+ const parentSpan = core.getActiveSpan();
128
+ let spanEnded = false;
129
+ return function patchedEnd(...args) {
130
+ if (!spanEnded) {
131
+ spanEnded = true;
132
+ const error = args[0];
133
+ if (span) {
134
+ if (error instanceof Error) {
135
+ span.setStatus({ code: core.SPAN_STATUS_ERROR, message: error.message });
136
+ }
137
+ span.end();
138
+ }
139
+ }
140
+ return core.withActiveSpan(parentSpan ?? null, () => resultHandler.apply(this, args));
141
+ };
142
+ }
143
+ function shouldSkipInstrumentation() {
144
+ return !core.getActiveSpan();
145
+ }
146
+
147
+ exports.getCommandType = getCommandType;
148
+ exports.getV3SpanAttributes = getV3SpanAttributes;
149
+ exports.getV4SpanAttributes = getV4SpanAttributes;
150
+ exports.patchEnd = patchEnd;
151
+ exports.shouldSkipInstrumentation = shouldSkipInstrumentation;
152
+ exports.startMongoSpan = startMongoSpan;
153
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mongo/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-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport { SpanKind } from '@opentelemetry/api';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_MONGODB_COLLECTION,\n ATTR_DB_NAME,\n ATTR_DB_OPERATION,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_VALUE_MONGODB,\n} from './semconv';\nimport type { MongodbNamespace, MongoInternalCommand, MongoInternalTopology } from './internal-types';\nimport { MongodbCommandType } from './internal-types';\n\nconst ORIGIN = 'auto.db.otel.mongo';\n\n/**\n * Replaces values in the command object with '?', hiding PII and helping grouping.\n */\nfunction serializeDbStatement(commandObj: Record<string, unknown>): string {\n return JSON.stringify(scrubStatement(commandObj));\n}\n\nfunction scrubStatement(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(element => scrubStatement(element));\n }\n\n if (isCommandObj(value)) {\n const initial: Record<string, unknown> = {};\n return Object.entries(value)\n .map(([key, element]) => [key, scrubStatement(element)])\n .reduce((prev, current) => {\n if (isCommandEntry(current)) {\n prev[current[0]] = current[1];\n }\n return prev;\n }, initial);\n }\n\n // A value like string or number, possibly contains PII, scrub it\n return '?';\n}\n\nfunction isCommandObj(value: Record<string, unknown> | unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !isBuffer(value);\n}\n\nfunction isBuffer(value: unknown): boolean {\n return typeof Buffer !== 'undefined' && Buffer.isBuffer(value);\n}\n\nfunction isCommandEntry(value: [string, unknown] | unknown): value is [string, unknown] {\n return Array.isArray(value);\n}\n\n/**\n * Get the mongodb command type from the object.\n */\nexport function getCommandType(command: MongoInternalCommand): MongodbCommandType {\n if (command.createIndexes !== undefined) {\n return MongodbCommandType.CREATE_INDEXES;\n } else if (command.findandmodify !== undefined) {\n return MongodbCommandType.FIND_AND_MODIFY;\n } else if (command.ismaster !== undefined) {\n return MongodbCommandType.IS_MASTER;\n } else if (command.count !== undefined) {\n return MongodbCommandType.COUNT;\n } else if (command.aggregate !== undefined) {\n return MongodbCommandType.AGGREGATE;\n } else {\n return MongodbCommandType.UNKNOWN;\n }\n}\n\n/**\n * Determine a span's attributes by fetching related metadata from the v4 connection context.\n */\nexport function getV4SpanAttributes(\n connectionCtx: any,\n ns: MongodbNamespace,\n command?: any,\n operation?: string,\n): SpanAttributes {\n let host, port: undefined | string;\n if (connectionCtx) {\n const hostParts = typeof connectionCtx.address === 'string' ? connectionCtx.address.split(':') : '';\n if (hostParts.length === 2) {\n host = hostParts[0];\n port = hostParts[1];\n }\n }\n let commandObj: Record<string, unknown>;\n if (command?.documents && command.documents[0]) {\n commandObj = command.documents[0];\n } else if (command?.cursors) {\n commandObj = command.cursors;\n } else {\n commandObj = command;\n }\n\n return getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n}\n\n/**\n * Determine a span's attributes by fetching related metadata from the v3 topology.\n */\nexport function getV3SpanAttributes(\n ns: string,\n topology: MongoInternalTopology,\n command?: MongoInternalCommand,\n operation?: string | undefined,\n): SpanAttributes {\n let host: undefined | string;\n let port: undefined | string;\n if (topology?.s) {\n host = topology.s.options?.host ?? topology.s.host;\n port = (topology.s.options?.port ?? topology.s.port)?.toString();\n if (host == null || port == null) {\n const address = topology.description?.address;\n if (address) {\n const addressSegments = address.split(':');\n host = addressSegments[0];\n port = addressSegments[1];\n }\n }\n }\n\n // The namespace is a combination of the database name and the name of the\n // collection or index, like so: [database-name].[collection-or-index-name].\n // It could be a string or an instance of MongoDBNamespace, as such we\n // always coerce to a string to extract db and collection.\n const [dbName, dbCollection] = ns.toString().split('.');\n const commandObj = command?.query ?? command?.q ?? command;\n\n return getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n}\n\nfunction getSpanAttributes(\n dbName?: string,\n dbCollection?: string,\n host?: undefined | string,\n port?: undefined | string,\n commandObj?: any,\n operation?: string | undefined,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_MONGODB,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_NAME]: dbName,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_MONGODB_COLLECTION]: dbCollection,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_OPERATION]: operation,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`,\n };\n\n if (host && port) {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[ATTR_NET_PEER_NAME] = host;\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n }\n\n if (commandObj) {\n try {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[ATTR_DB_STATEMENT] = serializeDbStatement(commandObj);\n } catch {\n // ignore serialization errors — the statement is best-effort metadata\n }\n }\n\n return attributes;\n}\n\nexport function startMongoSpan(attributes: SpanAttributes): Span {\n return startInactiveSpan({\n // eslint-disable-next-line typescript/no-deprecated\n name: `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`,\n kind: SpanKind.CLIENT,\n attributes,\n });\n}\n\n/**\n * Wraps the result handler so it ends the span (with error status on failure) and runs the\n * original callback re-activated under the parent span — mongodb loses the async context when\n * it invokes the callback on a later tick.\n */\nexport function patchEnd(span: Span | undefined, resultHandler: Function): Function {\n const parentSpan = getActiveSpan();\n let spanEnded = false;\n\n return function patchedEnd(this: {}, ...args: unknown[]) {\n if (!spanEnded) {\n spanEnded = true;\n const error = args[0];\n if (span) {\n if (error instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: error.message });\n }\n span.end();\n }\n }\n\n return withActiveSpan(parentSpan ?? null, () => resultHandler.apply(this, args));\n };\n}\n\n// The instrumentation only creates spans when there is an active parent span, to avoid emitting\n// orphaned mongodb spans.\nexport function shouldSkipInstrumentation(): boolean {\n return !getActiveSpan();\n}\n"],"names":["MongodbCommandType","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MONGODB","ATTR_DB_NAME","ATTR_DB_MONGODB_COLLECTION","ATTR_DB_OPERATION","ATTR_DB_CONNECTION_STRING","ATTR_NET_PEER_NAME","ATTR_NET_PEER_PORT","ATTR_DB_STATEMENT","startInactiveSpan","SpanKind","getActiveSpan","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":"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"}