@sentry/node 10.63.0 → 10.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/build/cjs/index.js +15 -14
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/integrations/node-fetch.js +24 -0
  4. package/build/cjs/integrations/node-fetch.js.map +1 -0
  5. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js +0 -6
  6. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  7. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js +11 -10
  8. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  9. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +2 -2
  10. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  11. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +2 -2
  12. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  13. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js +9 -9
  14. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  15. package/build/cjs/integrations/tracing/hapi/vendored/utils.js +8 -9
  16. package/build/cjs/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  17. package/build/cjs/integrations/tracing/hono/index.js +7 -7
  18. package/build/cjs/integrations/tracing/hono/index.js.map +1 -1
  19. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js +2 -1
  20. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  21. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js +0 -12
  22. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  23. package/build/cjs/integrations/tracing/kafka/vendored/utils.js +12 -11
  24. package/build/cjs/integrations/tracing/kafka/vendored/utils.js.map +1 -1
  25. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +11 -10
  26. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  27. package/build/cjs/integrations/tracing/knex/vendored/semconv.js +0 -16
  28. package/build/cjs/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  29. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +2 -2
  30. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  31. package/build/cjs/integrations/tracing/koa/vendored/utils.js +2 -2
  32. package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
  33. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -12
  34. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  35. package/build/cjs/integrations/tracing/mongo/vendored/utils.js +12 -11
  36. package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  37. package/build/cjs/integrations/tracing/mongoose/index.js +3 -2
  38. package/build/cjs/integrations/tracing/mongoose/index.js.map +1 -1
  39. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +11 -8
  40. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  41. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -12
  42. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  43. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +9 -9
  44. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  45. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js +9 -8
  46. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  47. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js +0 -12
  48. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  49. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +7 -4
  50. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  51. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js +0 -12
  52. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  53. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js +7 -4
  54. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  55. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js +0 -12
  56. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  57. package/build/cjs/integrations/tracing/postgres/vendored/utils.js +12 -11
  58. package/build/cjs/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  59. package/build/cjs/integrations/tracing/postgresjs.js +8 -7
  60. package/build/cjs/integrations/tracing/postgresjs.js.map +1 -1
  61. package/build/cjs/integrations/tracing/prisma/index.js +48 -53
  62. package/build/cjs/integrations/tracing/prisma/index.js.map +1 -1
  63. package/build/cjs/integrations/tracing/redis/cache.js +41 -0
  64. package/build/cjs/integrations/tracing/redis/cache.js.map +1 -0
  65. package/build/cjs/integrations/tracing/redis/index.js +14 -36
  66. package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
  67. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +22 -13
  68. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  69. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +21 -15
  70. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  71. package/build/cjs/integrations/tracing/redis/vendored/semconv.js +0 -8
  72. package/build/cjs/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  73. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js +9 -8
  74. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  75. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js +0 -12
  76. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  77. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +12 -2
  78. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  79. package/build/cjs/sdk/index.js +2 -2
  80. package/build/cjs/sdk/index.js.map +1 -1
  81. package/build/cjs/sdk/initOtel.js +36 -0
  82. package/build/cjs/sdk/initOtel.js.map +1 -1
  83. package/build/esm/index.js +2 -2
  84. package/build/esm/integrations/node-fetch.js +22 -0
  85. package/build/esm/integrations/node-fetch.js.map +1 -0
  86. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js +1 -4
  87. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  88. package/build/esm/integrations/tracing/amqplib/vendored/utils.js +7 -6
  89. package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  90. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +2 -2
  91. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  92. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +2 -2
  93. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  94. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js +7 -7
  95. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  96. package/build/esm/integrations/tracing/hapi/vendored/utils.js +3 -4
  97. package/build/esm/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  98. package/build/esm/integrations/tracing/hono/index.js +3 -3
  99. package/build/esm/integrations/tracing/hono/index.js.map +1 -1
  100. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js +3 -2
  101. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  102. package/build/esm/integrations/tracing/kafka/vendored/semconv.js +1 -7
  103. package/build/esm/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  104. package/build/esm/integrations/tracing/kafka/vendored/utils.js +11 -10
  105. package/build/esm/integrations/tracing/kafka/vendored/utils.js.map +1 -1
  106. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +10 -9
  107. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  108. package/build/esm/integrations/tracing/knex/vendored/semconv.js +1 -9
  109. package/build/esm/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  110. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +2 -2
  111. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  112. package/build/esm/integrations/tracing/koa/vendored/utils.js +2 -2
  113. package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
  114. package/build/esm/integrations/tracing/mongo/vendored/semconv.js +1 -7
  115. package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  116. package/build/esm/integrations/tracing/mongo/vendored/utils.js +9 -8
  117. package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  118. package/build/esm/integrations/tracing/mongoose/index.js +4 -3
  119. package/build/esm/integrations/tracing/mongoose/index.js.map +1 -1
  120. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +9 -6
  121. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  122. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +1 -7
  123. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  124. package/build/esm/integrations/tracing/mongoose/vendored/utils.js +10 -10
  125. package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  126. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js +8 -7
  127. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  128. package/build/esm/integrations/tracing/mysql/vendored/semconv.js +1 -7
  129. package/build/esm/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  130. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +6 -3
  131. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  132. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js +1 -7
  133. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  134. package/build/esm/integrations/tracing/mysql2/vendored/utils.js +8 -5
  135. package/build/esm/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  136. package/build/esm/integrations/tracing/postgres/vendored/semconv.js +1 -7
  137. package/build/esm/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  138. package/build/esm/integrations/tracing/postgres/vendored/utils.js +13 -12
  139. package/build/esm/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  140. package/build/esm/integrations/tracing/postgresjs.js +7 -6
  141. package/build/esm/integrations/tracing/postgresjs.js.map +1 -1
  142. package/build/esm/integrations/tracing/prisma/index.js +49 -54
  143. package/build/esm/integrations/tracing/prisma/index.js.map +1 -1
  144. package/build/esm/integrations/tracing/redis/cache.js +38 -0
  145. package/build/esm/integrations/tracing/redis/cache.js.map +1 -0
  146. package/build/esm/integrations/tracing/redis/index.js +9 -34
  147. package/build/esm/integrations/tracing/redis/index.js.map +1 -1
  148. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +19 -10
  149. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  150. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +16 -10
  151. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  152. package/build/esm/integrations/tracing/redis/vendored/semconv.js +1 -5
  153. package/build/esm/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  154. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js +8 -7
  155. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  156. package/build/esm/integrations/tracing/tedious/vendored/semconv.js +1 -7
  157. package/build/esm/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  158. package/build/esm/package.json +1 -1
  159. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +13 -4
  160. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  161. package/build/esm/sdk/index.js +1 -1
  162. package/build/esm/sdk/initOtel.js +38 -2
  163. package/build/esm/sdk/initOtel.js.map +1 -1
  164. package/build/types/index.d.ts +1 -1
  165. package/build/types/index.d.ts.map +1 -1
  166. package/build/types/integrations/node-fetch.d.ts +9 -0
  167. package/build/types/integrations/node-fetch.d.ts.map +1 -0
  168. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
  169. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts.map +1 -1
  170. package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +1 -1
  171. package/build/types/integrations/tracing/hapi/vendored/utils.d.ts.map +1 -1
  172. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
  173. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts.map +1 -1
  174. package/build/types/integrations/tracing/kafka/vendored/utils.d.ts.map +1 -1
  175. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
  176. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts.map +1 -1
  177. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
  178. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +1 -1
  179. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -1
  180. package/build/types/integrations/tracing/mongoose/index.d.ts.map +1 -1
  181. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
  182. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
  183. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +1 -1
  184. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
  185. package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts.map +1 -1
  186. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts +1 -62
  187. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts.map +1 -1
  188. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +1 -1
  189. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
  190. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts.map +1 -1
  191. package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts.map +1 -1
  192. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
  193. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts.map +1 -1
  194. package/build/types/integrations/tracing/postgres/vendored/utils.d.ts.map +1 -1
  195. package/build/types/integrations/tracing/postgresjs.d.ts.map +1 -1
  196. package/build/types/integrations/tracing/prisma/index.d.ts.map +1 -1
  197. package/build/types/integrations/tracing/redis/cache.d.ts +22 -0
  198. package/build/types/integrations/tracing/redis/cache.d.ts.map +1 -0
  199. package/build/types/integrations/tracing/redis/index.d.ts +2 -20
  200. package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
  201. package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts.map +1 -1
  202. package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +1 -1
  203. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
  204. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts.map +1 -1
  205. package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts.map +1 -1
  206. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
  207. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts.map +1 -1
  208. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
  209. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +1 -1
  210. package/build/types/sdk/initOtel.d.ts +2 -3
  211. package/build/types/sdk/initOtel.d.ts.map +1 -1
  212. package/build/types-ts3.8/index.d.ts +1 -1
  213. package/build/types-ts3.8/integrations/node-fetch.d.ts +9 -0
  214. package/build/types-ts3.8/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
  215. package/build/types-ts3.8/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
  216. package/build/types-ts3.8/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
  217. package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
  218. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
  219. package/build/types-ts3.8/integrations/tracing/mysql/vendored/semconv.d.ts +1 -62
  220. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
  221. package/build/types-ts3.8/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
  222. package/build/types-ts3.8/integrations/tracing/redis/cache.d.ts +22 -0
  223. package/build/types-ts3.8/integrations/tracing/redis/index.d.ts +2 -20
  224. package/build/types-ts3.8/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
  225. package/build/types-ts3.8/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
  226. package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
  227. package/build/types-ts3.8/sdk/initOtel.d.ts +3 -4
  228. package/package.json +8 -9
  229. package/build/cjs/integrations/node-fetch/index.js +0 -38
  230. package/build/cjs/integrations/node-fetch/index.js.map +0 -1
  231. package/build/cjs/integrations/node-fetch/undici-instrumentation.js +0 -266
  232. package/build/cjs/integrations/node-fetch/undici-instrumentation.js.map +0 -1
  233. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js +0 -6
  234. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
  235. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js +0 -34
  236. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
  237. package/build/esm/integrations/node-fetch/index.js +0 -36
  238. package/build/esm/integrations/node-fetch/index.js.map +0 -1
  239. package/build/esm/integrations/node-fetch/undici-instrumentation.js +0 -264
  240. package/build/esm/integrations/node-fetch/undici-instrumentation.js.map +0 -1
  241. package/build/esm/integrations/tracing/hapi/vendored/semconv.js +0 -4
  242. package/build/esm/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
  243. package/build/esm/integrations/tracing/redis/vendored/redis-common.js +0 -32
  244. package/build/esm/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
  245. package/build/types/integrations/node-fetch/index.d.ts +0 -5
  246. package/build/types/integrations/node-fetch/index.d.ts.map +0 -1
  247. package/build/types/integrations/node-fetch/types.d.ts +0 -96
  248. package/build/types/integrations/node-fetch/types.d.ts.map +0 -1
  249. package/build/types/integrations/node-fetch/undici-instrumentation.d.ts +0 -14
  250. package/build/types/integrations/node-fetch/undici-instrumentation.d.ts.map +0 -1
  251. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
  252. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts.map +0 -1
  253. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
  254. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts.map +0 -1
  255. package/build/types-ts3.8/integrations/node-fetch/index.d.ts +0 -5
  256. package/build/types-ts3.8/integrations/node-fetch/types.d.ts +0 -96
  257. package/build/types-ts3.8/integrations/node-fetch/undici-instrumentation.d.ts +0 -14
  258. package/build/types-ts3.8/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
  259. package/build/types-ts3.8/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/knex/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-knex\n * - Upstream version: @opentelemetry/instrumentation-knex@0.62.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\n/* oxlint-disable typescript/no-deprecated */\n\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startSpan,\n} from '@sentry/core';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport {\n ATTR_DB_NAME,\n ATTR_DB_OPERATION,\n ATTR_DB_SQL_TABLE,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n ATTR_NET_TRANSPORT,\n} from './semconv';\nimport * as utils from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-knex';\nconst ORIGIN = 'auto.db.otel.knex';\n\nconst MODULE_NAME = 'knex';\nconst SUPPORTED_VERSIONS = [\n // use \"lib/execution\" for runner.js, \"lib\" for client.js as basepath, latest tested 0.95.6\n '>=0.22.0 <4',\n // use \"lib\" as basepath\n '>=0.10.0 <0.18.0',\n '>=0.19.0 <0.22.0',\n // use \"src\" as basepath\n '>=0.18.0 <0.19.0',\n];\n\n// Max length of the query text captured in the `db.statement` attribute; \"..\" is appended when truncated.\nconst MAX_QUERY_LENGTH = 1022;\n\nconst parentSpanSymbol = Symbol('sentry.instrumentation-knex.parent-span');\n\nexport class KnexInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n public init(): InstrumentationNodeModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(MODULE_NAME, SUPPORTED_VERSIONS);\n\n module.files.push(\n this._getClientNodeModuleFileInstrumentation('src'),\n this._getClientNodeModuleFileInstrumentation('lib'),\n this._getRunnerNodeModuleFileInstrumentation('src'),\n this._getRunnerNodeModuleFileInstrumentation('lib'),\n this._getRunnerNodeModuleFileInstrumentation('lib/execution'),\n );\n\n return module;\n }\n\n private _getRunnerNodeModuleFileInstrumentation(basePath: string): InstrumentationNodeModuleFile {\n return new InstrumentationNodeModuleFile(\n `knex/${basePath}/runner.js`,\n SUPPORTED_VERSIONS,\n (Runner: any, moduleVersion?: string) => {\n this._ensureWrapped(Runner.prototype, 'query', this._createQueryWrapper(moduleVersion));\n return Runner;\n },\n (Runner: any) => {\n this._unwrap(Runner.prototype, 'query');\n return Runner;\n },\n );\n }\n\n private _getClientNodeModuleFileInstrumentation(basePath: string): InstrumentationNodeModuleFile {\n return new InstrumentationNodeModuleFile(\n `knex/${basePath}/client.js`,\n SUPPORTED_VERSIONS,\n (Client: any) => {\n this._ensureWrapped(Client.prototype, 'queryBuilder', this._storeContext.bind(this));\n this._ensureWrapped(Client.prototype, 'schemaBuilder', this._storeContext.bind(this));\n this._ensureWrapped(Client.prototype, 'raw', this._storeContext.bind(this));\n return Client;\n },\n (Client: any) => {\n this._unwrap(Client.prototype, 'queryBuilder');\n this._unwrap(Client.prototype, 'schemaBuilder');\n this._unwrap(Client.prototype, 'raw');\n return Client;\n },\n );\n }\n\n private _createQueryWrapper(moduleVersion?: string) {\n return function wrapQuery(original: (...args: any[]) => any) {\n return function wrapped_logging_method(this: any, query: any) {\n const config = this.client.config;\n\n const table = utils.extractTableName(this.builder);\n const operation = query?.method;\n const connectionString = config?.connection?.connectionString;\n const name =\n config?.connection?.filename ||\n config?.connection?.database ||\n utils.extractDatabaseFromConnectionString(connectionString);\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n 'knex.version': moduleVersion,\n [ATTR_DB_SYSTEM]: utils.mapSystem(this.client.driverName),\n [ATTR_DB_SQL_TABLE]: table,\n [ATTR_DB_OPERATION]: operation,\n [ATTR_DB_USER]: config?.connection?.user,\n [ATTR_DB_NAME]: name,\n [ATTR_NET_PEER_NAME]: config?.connection?.host ?? utils.extractHostFromConnectionString(connectionString),\n [ATTR_NET_PEER_PORT]: config?.connection?.port ?? utils.extractPortFromConnectionString(connectionString),\n [ATTR_NET_TRANSPORT]: config?.connection?.filename === ':memory:' ? 'inproc' : undefined,\n [ATTR_DB_STATEMENT]: utils.limitLength(query?.sql, MAX_QUERY_LENGTH),\n };\n\n // The query builder captures the span active when it was created (see `_storeContext`).\n // `onlyIfParent` ensures we only instrument queries that run as part of an existing trace.\n const parentSpan: Span | undefined = this.builder[parentSpanSymbol] || getActiveSpan();\n\n const args = arguments;\n return startSpan(\n {\n name: utils.getName(name, operation, table),\n kind: SPAN_KIND.CLIENT,\n attributes,\n parentSpan,\n onlyIfParent: true,\n },\n span =>\n // `Runner.query` returns a real, already-executing Promise, so it is safe to let\n // `startSpan` await it and auto-end the span.\n original.apply(this, args).catch((err: any) => {\n const formatter = utils.getFormatter(this);\n const fullQuery = formatter(query.sql, query.bindings || []);\n const message = err.message.replace(`${fullQuery} - `, '');\n span.setStatus({ code: SPAN_STATUS_ERROR, message });\n throw err;\n }),\n );\n };\n };\n }\n\n private _storeContext(original: (...args: any[]) => any) {\n return function wrapped_logging_method(this: any) {\n const builder = original.apply(this, arguments);\n // Capture the span that is active when the query builder is created. The query often executes\n // in a different async context, so we reuse this span as the parent when the query runs.\n Object.defineProperty(builder, parentSpanSymbol, {\n value: getActiveSpan(),\n });\n return builder;\n };\n }\n\n private _ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any): void {\n if (isWrapped(obj[methodName])) {\n this._unwrap(obj, methodName);\n }\n this._wrap(obj, methodName, wrapper);\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","utils.extractTableName","utils.extractDatabaseFromConnectionString","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","ATTR_DB_SYSTEM","utils.mapSystem","ATTR_DB_SQL_TABLE","ATTR_DB_OPERATION","ATTR_DB_USER","ATTR_DB_NAME","ATTR_NET_PEER_NAME","utils.extractHostFromConnectionString","ATTR_NET_PEER_PORT","utils.extractPortFromConnectionString","ATTR_NET_TRANSPORT","ATTR_DB_STATEMENT","utils.limitLength","getActiveSpan","startSpan","utils.getName","SPAN_KIND","utils.getFormatter","SPAN_STATUS_ERROR","isWrapped"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/knex/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-knex\n * - Upstream version: @opentelemetry/instrumentation-knex@0.62.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\n/* oxlint-disable typescript/no-deprecated */\n\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startSpan,\n} from '@sentry/core';\nimport {\n DB_NAME,\n DB_OPERATION,\n DB_STATEMENT,\n DB_SYSTEM,\n DB_USER,\n NET_PEER_NAME,\n NET_PEER_PORT,\n NET_TRANSPORT,\n} from '@sentry/conventions/attributes';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport { ATTR_DB_SQL_TABLE } from './semconv';\nimport * as utils from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-knex';\nconst ORIGIN = 'auto.db.otel.knex';\n\nconst MODULE_NAME = 'knex';\nconst SUPPORTED_VERSIONS = [\n // use \"lib/execution\" for runner.js, \"lib\" for client.js as basepath, latest tested 0.95.6\n '>=0.22.0 <4',\n // use \"lib\" as basepath\n '>=0.10.0 <0.18.0',\n '>=0.19.0 <0.22.0',\n // use \"src\" as basepath\n '>=0.18.0 <0.19.0',\n];\n\n// Max length of the query text captured in the `db.statement` attribute; \"..\" is appended when truncated.\nconst MAX_QUERY_LENGTH = 1022;\n\nconst parentSpanSymbol = Symbol('sentry.instrumentation-knex.parent-span');\n\nexport class KnexInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n public init(): InstrumentationNodeModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(MODULE_NAME, SUPPORTED_VERSIONS);\n\n module.files.push(\n this._getClientNodeModuleFileInstrumentation('src'),\n this._getClientNodeModuleFileInstrumentation('lib'),\n this._getRunnerNodeModuleFileInstrumentation('src'),\n this._getRunnerNodeModuleFileInstrumentation('lib'),\n this._getRunnerNodeModuleFileInstrumentation('lib/execution'),\n );\n\n return module;\n }\n\n private _getRunnerNodeModuleFileInstrumentation(basePath: string): InstrumentationNodeModuleFile {\n return new InstrumentationNodeModuleFile(\n `knex/${basePath}/runner.js`,\n SUPPORTED_VERSIONS,\n (Runner: any, moduleVersion?: string) => {\n this._ensureWrapped(Runner.prototype, 'query', this._createQueryWrapper(moduleVersion));\n return Runner;\n },\n (Runner: any) => {\n this._unwrap(Runner.prototype, 'query');\n return Runner;\n },\n );\n }\n\n private _getClientNodeModuleFileInstrumentation(basePath: string): InstrumentationNodeModuleFile {\n return new InstrumentationNodeModuleFile(\n `knex/${basePath}/client.js`,\n SUPPORTED_VERSIONS,\n (Client: any) => {\n this._ensureWrapped(Client.prototype, 'queryBuilder', this._storeContext.bind(this));\n this._ensureWrapped(Client.prototype, 'schemaBuilder', this._storeContext.bind(this));\n this._ensureWrapped(Client.prototype, 'raw', this._storeContext.bind(this));\n return Client;\n },\n (Client: any) => {\n this._unwrap(Client.prototype, 'queryBuilder');\n this._unwrap(Client.prototype, 'schemaBuilder');\n this._unwrap(Client.prototype, 'raw');\n return Client;\n },\n );\n }\n\n private _createQueryWrapper(moduleVersion?: string) {\n return function wrapQuery(original: (...args: any[]) => any) {\n return function wrapped_logging_method(this: any, query: any) {\n const config = this.client.config;\n\n const table = utils.extractTableName(this.builder);\n const operation = query?.method;\n const connectionString = config?.connection?.connectionString;\n const name =\n config?.connection?.filename ||\n config?.connection?.database ||\n utils.extractDatabaseFromConnectionString(connectionString);\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n 'knex.version': moduleVersion,\n [DB_SYSTEM]: utils.mapSystem(this.client.driverName),\n [ATTR_DB_SQL_TABLE]: table,\n [DB_OPERATION]: operation,\n [DB_USER]: config?.connection?.user,\n [DB_NAME]: name,\n [NET_PEER_NAME]: config?.connection?.host ?? utils.extractHostFromConnectionString(connectionString),\n [NET_PEER_PORT]: config?.connection?.port ?? utils.extractPortFromConnectionString(connectionString),\n [NET_TRANSPORT]: config?.connection?.filename === ':memory:' ? 'inproc' : undefined,\n [DB_STATEMENT]: utils.limitLength(query?.sql, MAX_QUERY_LENGTH),\n };\n\n // The query builder captures the span active when it was created (see `_storeContext`).\n // `onlyIfParent` ensures we only instrument queries that run as part of an existing trace.\n const parentSpan: Span | undefined = this.builder[parentSpanSymbol] || getActiveSpan();\n\n const args = arguments;\n return startSpan(\n {\n name: utils.getName(name, operation, table),\n kind: SPAN_KIND.CLIENT,\n attributes,\n parentSpan,\n onlyIfParent: true,\n },\n span =>\n // `Runner.query` returns a real, already-executing Promise, so it is safe to let\n // `startSpan` await it and auto-end the span.\n original.apply(this, args).catch((err: any) => {\n const formatter = utils.getFormatter(this);\n const fullQuery = formatter(query.sql, query.bindings || []);\n const message = err.message.replace(`${fullQuery} - `, '');\n span.setStatus({ code: SPAN_STATUS_ERROR, message });\n throw err;\n }),\n );\n };\n };\n }\n\n private _storeContext(original: (...args: any[]) => any) {\n return function wrapped_logging_method(this: any) {\n const builder = original.apply(this, arguments);\n // Capture the span that is active when the query builder is created. The query often executes\n // in a different async context, so we reuse this span as the parent when the query runs.\n Object.defineProperty(builder, parentSpanSymbol, {\n value: getActiveSpan(),\n });\n return builder;\n };\n }\n\n private _ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any): void {\n if (isWrapped(obj[methodName])) {\n this._unwrap(obj, methodName);\n }\n this._wrap(obj, methodName, wrapper);\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","utils.extractTableName","utils.extractDatabaseFromConnectionString","attributes","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","DB_SYSTEM","utils.mapSystem","ATTR_DB_SQL_TABLE","DB_OPERATION","DB_USER","DB_NAME","NET_PEER_NAME","utils.extractHostFromConnectionString","NET_PEER_PORT","utils.extractPortFromConnectionString","NET_TRANSPORT","DB_STATEMENT","utils.limitLength","getActiveSpan","startSpan","utils.getName","SPAN_KIND","utils.getFormatter","SPAN_STATUS_ERROR","isWrapped"],"mappings":"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"}
@@ -1,26 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
- const ATTR_DB_NAME = "db.name";
4
- const ATTR_DB_OPERATION = "db.operation";
5
3
  const ATTR_DB_SQL_TABLE = "db.sql.table";
6
- const ATTR_DB_STATEMENT = "db.statement";
7
- const ATTR_DB_SYSTEM = "db.system";
8
- const ATTR_DB_USER = "db.user";
9
- const ATTR_NET_PEER_NAME = "net.peer.name";
10
- const ATTR_NET_PEER_PORT = "net.peer.port";
11
- const ATTR_NET_TRANSPORT = "net.transport";
12
4
  const DB_SYSTEM_NAME_VALUE_SQLITE = "sqlite";
13
5
  const DB_SYSTEM_NAME_VALUE_POSTGRESQL = "postgresql";
14
6
 
15
- exports.ATTR_DB_NAME = ATTR_DB_NAME;
16
- exports.ATTR_DB_OPERATION = ATTR_DB_OPERATION;
17
7
  exports.ATTR_DB_SQL_TABLE = ATTR_DB_SQL_TABLE;
18
- exports.ATTR_DB_STATEMENT = ATTR_DB_STATEMENT;
19
- exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
20
- exports.ATTR_DB_USER = ATTR_DB_USER;
21
- exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
22
- exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
23
- exports.ATTR_NET_TRANSPORT = ATTR_NET_TRANSPORT;
24
8
  exports.DB_SYSTEM_NAME_VALUE_POSTGRESQL = DB_SYSTEM_NAME_VALUE_POSTGRESQL;
25
9
  exports.DB_SYSTEM_NAME_VALUE_SQLITE = DB_SYSTEM_NAME_VALUE_SQLITE;
26
10
  //# sourceMappingURL=semconv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/knex/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-knex\n * - Upstream version: @opentelemetry/instrumentation-knex@0.62.0\n */\n\n/**\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\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 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 * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = 'sqlite' as const;\n\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = 'postgresql' as const;\n"],"names":[],"mappings":";;AAYO,MAAM,YAAA,GAAe;AAKrB,MAAM,iBAAA,GAAoB;AAK1B,MAAM,iBAAA,GAAoB;AAK1B,MAAM,iBAAA,GAAoB;AAK1B,MAAM,cAAA,GAAiB;AAKvB,MAAM,YAAA,GAAe;AAKrB,MAAM,kBAAA,GAAqB;AAK3B,MAAM,kBAAA,GAAqB;AAK3B,MAAM,kBAAA,GAAqB;AAE3B,MAAM,2BAAA,GAA8B;AAEpC,MAAM,+BAAA,GAAkC;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/knex/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-knex\n * - Upstream version: @opentelemetry/instrumentation-knex@0.62.0\n */\n\n/**\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = 'sqlite' as const;\n\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = 'postgresql' as const;\n"],"names":[],"mappings":";;AAYO,MAAM,iBAAA,GAAoB;AAE1B,MAAM,2BAAA,GAA8B;AAEpC,MAAM,+BAAA,GAAkC;;;;;;"}
@@ -4,7 +4,7 @@ const api = require('@opentelemetry/api');
4
4
  const instrumentation = require('@opentelemetry/instrumentation');
5
5
  const types = require('./types.js');
6
6
  const core = require('@sentry/core');
7
- const semanticConventions = require('@opentelemetry/semantic-conventions');
7
+ const attributes = require('@sentry/conventions/attributes');
8
8
  const utils = require('./utils.js');
9
9
  const setHttpServerSpanRouteAttribute = require('../../../../utils/setHttpServerSpanRouteAttribute.js');
10
10
  const debugBuild = require('../../../../debug-build.js');
@@ -109,7 +109,7 @@ class KoaInstrumentation extends instrumentation.InstrumentationBase {
109
109
  }
110
110
  },
111
111
  () => {
112
- const route = metadata.attributes[semanticConventions.ATTR_HTTP_ROUTE];
112
+ const route = metadata.attributes[attributes.HTTP_ROUTE];
113
113
  if (core.getIsolationScope() === core.getDefaultIsolationScope()) {
114
114
  debugBuild.DEBUG_BUILD && core.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");
115
115
  } else if (route) {
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/koa/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-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Span creation migrated to the @sentry/core API; op/origin/name and transaction name folded into\n * span creation (previously set via a Sentry requestHook)\n */\n\nimport * as api from '@opentelemetry/api';\nimport { isWrapped, InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport {\n debug,\n getDefaultIsolationScope,\n getIsolationScope,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n startSpan,\n} from '@sentry/core';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport { getMiddlewareMetadata, isLayerIgnored } from './utils';\nimport { setHttpServerSpanRouteAttribute } from '../../../../utils/setHttpServerSpanRouteAttribute';\nimport { DEBUG_BUILD } from '../../../../debug-build';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n kLayerPatched,\n type Next,\n type KoaContext,\n type KoaMiddleware,\n type KoaPatchedMiddleware,\n} from './internal-types';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-koa';\n\ninterface KoaModuleExports {\n prototype: { use: KoaMiddleware };\n}\n\ntype KoaModule = KoaModuleExports & { [Symbol.toStringTag]?: string; default?: KoaModuleExports };\n\n/** Koa instrumentation for OpenTelemetry */\nexport class KoaInstrumentation extends InstrumentationBase<KoaInstrumentationConfig> {\n constructor(config: KoaInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return new InstrumentationNodeModuleDefinition(\n 'koa',\n ['>=2.0.0 <4'],\n (module: KoaModule) => {\n const moduleExports =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n if (moduleExports == null) {\n return moduleExports;\n }\n if (isWrapped(moduleExports.prototype.use)) {\n this._unwrap(moduleExports.prototype, 'use');\n }\n this._wrap(moduleExports.prototype, 'use', this._getKoaUsePatch.bind(this));\n return module;\n },\n (module: KoaModule) => {\n const moduleExports =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n if (moduleExports && isWrapped(moduleExports.prototype.use)) {\n this._unwrap(moduleExports.prototype, 'use');\n }\n },\n );\n }\n\n /**\n * Patches the Koa.use function in order to instrument each original\n * middleware layer which is introduced\n * @param {KoaMiddleware} middleware - the original middleware function\n */\n private _getKoaUsePatch(original: (middleware: KoaMiddleware) => unknown) {\n const patchRouterDispatch = this._patchRouterDispatch.bind(this);\n const patchLayer = this._patchLayer.bind(this);\n return function use(this: unknown, middlewareFunction: KoaMiddleware) {\n const patchedFunction = middlewareFunction.router\n ? patchRouterDispatch(middlewareFunction)\n : patchLayer(middlewareFunction, false);\n return original.apply(this, [patchedFunction]);\n };\n }\n\n /**\n * Patches the dispatch function used by @koa/router. This function\n * goes through each routed middleware and adds instrumentation via a call\n * to the @function _patchLayer function.\n * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches\n * routed middleware\n */\n private _patchRouterDispatch(dispatchLayer: KoaMiddleware): KoaMiddleware {\n const router = dispatchLayer.router;\n\n const routesStack = router?.stack ?? [];\n for (const pathLayer of routesStack) {\n const path = pathLayer.path;\n const pathStack = pathLayer.stack;\n for (let j = 0; j < pathStack.length; j++) {\n const routedMiddleware: KoaMiddleware = pathStack[j]!;\n pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n }\n }\n\n return dispatchLayer;\n }\n\n /**\n * Patches each individual @param middlewareLayer function in order to create the\n * span and propagate context. It does not create spans when there is no parent span.\n * @param {KoaMiddleware} middlewareLayer - the original middleware function.\n * @param {boolean} isRouter - tracks whether the original middleware function\n * was dispatched by the router originally\n * @param {string?} layerPath - if present, provides additional data from the\n * router about the routed path which the middleware is attached to\n */\n private _patchLayer(\n middlewareLayer: KoaPatchedMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n ): KoaMiddleware {\n const layerType = isRouter ? KoaLayerType.ROUTER : KoaLayerType.MIDDLEWARE;\n // Skip patching layer if its ignored in the config\n if (middlewareLayer[kLayerPatched] === true || isLayerIgnored(layerType, this.getConfig())) return middlewareLayer;\n\n if (\n middlewareLayer.constructor.name === 'GeneratorFunction' ||\n middlewareLayer.constructor.name === 'AsyncGeneratorFunction'\n ) {\n return middlewareLayer;\n }\n\n middlewareLayer[kLayerPatched] = true;\n\n return (context: KoaContext, next: Next) => {\n const parent = api.trace.getSpan(api.context.active());\n if (parent === undefined) {\n return middlewareLayer(context, next);\n }\n const metadata = getMiddlewareMetadata(context, middlewareLayer, isRouter, layerPath);\n\n if (context._matchedRoute) {\n setHttpServerSpanRouteAttribute(context._matchedRoute.toString());\n }\n\n const koaName = metadata.attributes[AttributeNames.KOA_NAME];\n // Somehow, name is sometimes `''` for middleware spans\n // See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2220\n const name = typeof koaName === 'string' ? koaName || '< unknown >' : metadata.name;\n\n return startSpan(\n {\n name,\n op: `${layerType}.koa`,\n attributes: {\n ...metadata.attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.koa',\n },\n },\n () => {\n const route = metadata.attributes[ATTR_HTTP_ROUTE];\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n } else if (route) {\n const method = (context.request as { method?: string } | undefined)?.method?.toUpperCase() || 'GET';\n getIsolationScope().setTransactionName(`${method} ${route}`);\n }\n return middlewareLayer(context, next);\n },\n );\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","KoaLayerType","kLayerPatched","isLayerIgnored","getMiddlewareMetadata","setHttpServerSpanRouteAttribute","AttributeNames","startSpan","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","ATTR_HTTP_ROUTE","getIsolationScope","getDefaultIsolationScope","DEBUG_BUILD","debug"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/koa/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-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Span creation migrated to the @sentry/core API; op/origin/name and transaction name folded into\n * span creation (previously set via a Sentry requestHook)\n */\n\nimport * as api from '@opentelemetry/api';\nimport { isWrapped, InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport {\n debug,\n getDefaultIsolationScope,\n getIsolationScope,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n startSpan,\n} from '@sentry/core';\nimport { HTTP_ROUTE } from '@sentry/conventions/attributes';\nimport { getMiddlewareMetadata, isLayerIgnored } from './utils';\nimport { setHttpServerSpanRouteAttribute } from '../../../../utils/setHttpServerSpanRouteAttribute';\nimport { DEBUG_BUILD } from '../../../../debug-build';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n kLayerPatched,\n type Next,\n type KoaContext,\n type KoaMiddleware,\n type KoaPatchedMiddleware,\n} from './internal-types';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-koa';\n\ninterface KoaModuleExports {\n prototype: { use: KoaMiddleware };\n}\n\ntype KoaModule = KoaModuleExports & { [Symbol.toStringTag]?: string; default?: KoaModuleExports };\n\n/** Koa instrumentation for OpenTelemetry */\nexport class KoaInstrumentation extends InstrumentationBase<KoaInstrumentationConfig> {\n constructor(config: KoaInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return new InstrumentationNodeModuleDefinition(\n 'koa',\n ['>=2.0.0 <4'],\n (module: KoaModule) => {\n const moduleExports =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n if (moduleExports == null) {\n return moduleExports;\n }\n if (isWrapped(moduleExports.prototype.use)) {\n this._unwrap(moduleExports.prototype, 'use');\n }\n this._wrap(moduleExports.prototype, 'use', this._getKoaUsePatch.bind(this));\n return module;\n },\n (module: KoaModule) => {\n const moduleExports =\n module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n if (moduleExports && isWrapped(moduleExports.prototype.use)) {\n this._unwrap(moduleExports.prototype, 'use');\n }\n },\n );\n }\n\n /**\n * Patches the Koa.use function in order to instrument each original\n * middleware layer which is introduced\n * @param {KoaMiddleware} middleware - the original middleware function\n */\n private _getKoaUsePatch(original: (middleware: KoaMiddleware) => unknown) {\n const patchRouterDispatch = this._patchRouterDispatch.bind(this);\n const patchLayer = this._patchLayer.bind(this);\n return function use(this: unknown, middlewareFunction: KoaMiddleware) {\n const patchedFunction = middlewareFunction.router\n ? patchRouterDispatch(middlewareFunction)\n : patchLayer(middlewareFunction, false);\n return original.apply(this, [patchedFunction]);\n };\n }\n\n /**\n * Patches the dispatch function used by @koa/router. This function\n * goes through each routed middleware and adds instrumentation via a call\n * to the @function _patchLayer function.\n * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches\n * routed middleware\n */\n private _patchRouterDispatch(dispatchLayer: KoaMiddleware): KoaMiddleware {\n const router = dispatchLayer.router;\n\n const routesStack = router?.stack ?? [];\n for (const pathLayer of routesStack) {\n const path = pathLayer.path;\n const pathStack = pathLayer.stack;\n for (let j = 0; j < pathStack.length; j++) {\n const routedMiddleware: KoaMiddleware = pathStack[j]!;\n pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n }\n }\n\n return dispatchLayer;\n }\n\n /**\n * Patches each individual @param middlewareLayer function in order to create the\n * span and propagate context. It does not create spans when there is no parent span.\n * @param {KoaMiddleware} middlewareLayer - the original middleware function.\n * @param {boolean} isRouter - tracks whether the original middleware function\n * was dispatched by the router originally\n * @param {string?} layerPath - if present, provides additional data from the\n * router about the routed path which the middleware is attached to\n */\n private _patchLayer(\n middlewareLayer: KoaPatchedMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n ): KoaMiddleware {\n const layerType = isRouter ? KoaLayerType.ROUTER : KoaLayerType.MIDDLEWARE;\n // Skip patching layer if its ignored in the config\n if (middlewareLayer[kLayerPatched] === true || isLayerIgnored(layerType, this.getConfig())) return middlewareLayer;\n\n if (\n middlewareLayer.constructor.name === 'GeneratorFunction' ||\n middlewareLayer.constructor.name === 'AsyncGeneratorFunction'\n ) {\n return middlewareLayer;\n }\n\n middlewareLayer[kLayerPatched] = true;\n\n return (context: KoaContext, next: Next) => {\n const parent = api.trace.getSpan(api.context.active());\n if (parent === undefined) {\n return middlewareLayer(context, next);\n }\n const metadata = getMiddlewareMetadata(context, middlewareLayer, isRouter, layerPath);\n\n if (context._matchedRoute) {\n setHttpServerSpanRouteAttribute(context._matchedRoute.toString());\n }\n\n const koaName = metadata.attributes[AttributeNames.KOA_NAME];\n // Somehow, name is sometimes `''` for middleware spans\n // See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2220\n const name = typeof koaName === 'string' ? koaName || '< unknown >' : metadata.name;\n\n return startSpan(\n {\n name,\n op: `${layerType}.koa`,\n attributes: {\n ...metadata.attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.koa',\n },\n },\n () => {\n const route = metadata.attributes[HTTP_ROUTE];\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n } else if (route) {\n const method = (context.request as { method?: string } | undefined)?.method?.toUpperCase() || 'GET';\n getIsolationScope().setTransactionName(`${method} ${route}`);\n }\n return middlewareLayer(context, next);\n },\n );\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","KoaLayerType","kLayerPatched","isLayerIgnored","getMiddlewareMetadata","setHttpServerSpanRouteAttribute","AttributeNames","startSpan","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","HTTP_ROUTE","getIsolationScope","getDefaultIsolationScope","DEBUG_BUILD","debug"],"mappings":"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"}
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const types = require('./types.js');
4
4
  const AttributeNames = require('./enums/AttributeNames.js');
5
- const semanticConventions = require('@opentelemetry/semantic-conventions');
5
+ const attributes = require('@sentry/conventions/attributes');
6
6
 
7
7
  const getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {
8
8
  if (isRouter) {
@@ -10,7 +10,7 @@ const getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {
10
10
  attributes: {
11
11
  [AttributeNames.AttributeNames.KOA_NAME]: layerPath?.toString(),
12
12
  [AttributeNames.AttributeNames.KOA_TYPE]: types.KoaLayerType.ROUTER,
13
- [semanticConventions.ATTR_HTTP_ROUTE]: layerPath?.toString()
13
+ [attributes.HTTP_ROUTE]: layerPath?.toString()
14
14
  },
15
15
  name: context._matchedRouteName || `router - ${layerPath}`
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/koa/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-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n */\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport type { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type { Attributes } from '@opentelemetry/api';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\n\nexport const getMiddlewareMetadata = (\n context: KoaContext,\n layer: KoaMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (isRouter) {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layerPath?.toString(),\n [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n [ATTR_HTTP_ROUTE]: layerPath?.toString(),\n },\n name: context._matchedRouteName || `router - ${layerPath}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (type: KoaLayerType, config?: KoaInstrumentationConfig): boolean => {\n return !!(Array.isArray(config?.ignoreLayersType) && config?.ignoreLayersType?.includes(type));\n};\n"],"names":["AttributeNames","KoaLayerType","ATTR_HTTP_ROUTE"],"mappings":";;;;;;AAeO,MAAM,qBAAA,GAAwB,CACnC,OAAA,EACA,KAAA,EACA,UACA,SAAA,KAIG;AACH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACA,6BAAA,CAAe,QAAQ,GAAG,WAAW,QAAA,EAAS;AAAA,QAC/C,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,MAAA;AAAA,QACxC,CAACC,mCAAe,GAAG,SAAA,EAAW,QAAA;AAAS,OACzC;AAAA,MACA,IAAA,EAAM,OAAA,CAAQ,iBAAA,IAAqB,CAAA,SAAA,EAAY,SAAS,CAAA;AAAA,KAC1D;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACF,6BAAA,CAAe,QAAQ,GAAG,MAAM,IAAA,IAAQ,YAAA;AAAA,QACzC,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa;AAAA,OAC1C;AAAA,MACA,IAAA,EAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,KAClC;AAAA,EACF;AACF;AAQO,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAoB,MAAA,KAA+C;AAChG,EAAA,OAAO,CAAC,EAAE,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,gBAAgB,CAAA,IAAK,MAAA,EAAQ,gBAAA,EAAkB,QAAA,CAAS,IAAI,CAAA,CAAA;AAC9F;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/koa/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-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n */\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport type { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type { Attributes } from '@opentelemetry/api';\nimport { HTTP_ROUTE } from '@sentry/conventions/attributes';\n\nexport const getMiddlewareMetadata = (\n context: KoaContext,\n layer: KoaMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (isRouter) {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layerPath?.toString(),\n [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n [HTTP_ROUTE]: layerPath?.toString(),\n },\n name: context._matchedRouteName || `router - ${layerPath}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (type: KoaLayerType, config?: KoaInstrumentationConfig): boolean => {\n return !!(Array.isArray(config?.ignoreLayersType) && config?.ignoreLayersType?.includes(type));\n};\n"],"names":["AttributeNames","KoaLayerType","HTTP_ROUTE"],"mappings":";;;;;;AAeO,MAAM,qBAAA,GAAwB,CACnC,OAAA,EACA,KAAA,EACA,UACA,SAAA,KAIG;AACH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACA,6BAAA,CAAe,QAAQ,GAAG,WAAW,QAAA,EAAS;AAAA,QAC/C,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,MAAA;AAAA,QACxC,CAACC,qBAAU,GAAG,SAAA,EAAW,QAAA;AAAS,OACpC;AAAA,MACA,IAAA,EAAM,OAAA,CAAQ,iBAAA,IAAqB,CAAA,SAAA,EAAY,SAAS,CAAA;AAAA,KAC1D;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACF,6BAAA,CAAe,QAAQ,GAAG,MAAM,IAAA,IAAQ,YAAA;AAAA,QACzC,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa;AAAA,OAC1C;AAAA,MACA,IAAA,EAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,KAClC;AAAA,EACF;AACF;AAQO,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAoB,MAAA,KAA+C;AAChG,EAAA,OAAO,CAAC,EAAE,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,gBAAgB,CAAA,IAAK,MAAA,EAAQ,gBAAA,EAAkB,QAAA,CAAS,IAAI,CAAA,CAAA;AAC9F;;;;;"}
@@ -2,21 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const ATTR_DB_CONNECTION_STRING = "db.connection_string";
4
4
  const ATTR_DB_MONGODB_COLLECTION = "db.mongodb.collection";
5
- const ATTR_DB_NAME = "db.name";
6
- const ATTR_DB_OPERATION = "db.operation";
7
- const ATTR_DB_STATEMENT = "db.statement";
8
- const ATTR_DB_SYSTEM = "db.system";
9
- const ATTR_NET_PEER_NAME = "net.peer.name";
10
- const ATTR_NET_PEER_PORT = "net.peer.port";
11
5
  const DB_SYSTEM_VALUE_MONGODB = "mongodb";
12
6
 
13
7
  exports.ATTR_DB_CONNECTION_STRING = ATTR_DB_CONNECTION_STRING;
14
8
  exports.ATTR_DB_MONGODB_COLLECTION = ATTR_DB_MONGODB_COLLECTION;
15
- exports.ATTR_DB_NAME = ATTR_DB_NAME;
16
- exports.ATTR_DB_OPERATION = ATTR_DB_OPERATION;
17
- exports.ATTR_DB_STATEMENT = ATTR_DB_STATEMENT;
18
- exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
19
- exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
20
- exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
21
9
  exports.DB_SYSTEM_VALUE_MONGODB = DB_SYSTEM_VALUE_MONGODB;
22
10
  //# 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 * 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;;;;;;;;;;;;"}
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 * Enum value \"mongodb\" for attribute `db.system`.\n */\nexport const DB_SYSTEM_VALUE_MONGODB = 'mongodb' as const;\n"],"names":[],"mappings":";;AAoBO,MAAM,yBAAA,GAA4B;AAOlC,MAAM,0BAAA,GAA6B;AAKnC,MAAM,uBAAA,GAA0B;;;;;;"}
@@ -1,6 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const core = require('@sentry/core');
4
+ const attributes = require('@sentry/conventions/attributes');
4
5
  const semconv = require('./semconv.js');
5
6
  const internalTypes = require('./internal-types.js');
6
7
 
@@ -86,40 +87,40 @@ function getV3SpanAttributes(ns, topology, command, operation) {
86
87
  return getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);
87
88
  }
88
89
  function getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation) {
89
- const attributes = {
90
+ const attributes$1 = {
90
91
  [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
91
92
  // eslint-disable-next-line typescript/no-deprecated
92
- [semconv.ATTR_DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MONGODB,
93
+ [attributes.DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MONGODB,
93
94
  // eslint-disable-next-line typescript/no-deprecated
94
- [semconv.ATTR_DB_NAME]: dbName,
95
+ [attributes.DB_NAME]: dbName,
95
96
  // eslint-disable-next-line typescript/no-deprecated
96
97
  [semconv.ATTR_DB_MONGODB_COLLECTION]: dbCollection,
97
98
  // eslint-disable-next-line typescript/no-deprecated
98
- [semconv.ATTR_DB_OPERATION]: operation,
99
+ [attributes.DB_OPERATION]: operation,
99
100
  // eslint-disable-next-line typescript/no-deprecated
100
101
  [semconv.ATTR_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`
101
102
  };
102
103
  if (host && port) {
103
- attributes[semconv.ATTR_NET_PEER_NAME] = host;
104
+ attributes$1[attributes.NET_PEER_NAME] = host;
104
105
  const portNumber = parseInt(port, 10);
105
106
  if (!isNaN(portNumber)) {
106
- attributes[semconv.ATTR_NET_PEER_PORT] = portNumber;
107
+ attributes$1[attributes.NET_PEER_PORT] = portNumber;
107
108
  }
108
109
  }
109
110
  if (commandObj) {
110
111
  try {
111
- attributes[semconv.ATTR_DB_STATEMENT] = serializeDbStatement(commandObj);
112
+ attributes$1[attributes.DB_STATEMENT] = serializeDbStatement(commandObj);
112
113
  } catch {
113
114
  }
114
115
  }
115
- return attributes;
116
+ return attributes$1;
116
117
  }
117
- function startMongoSpan(attributes) {
118
+ function startMongoSpan(attributes$1) {
118
119
  return core.startInactiveSpan({
119
120
  // eslint-disable-next-line typescript/no-deprecated
120
- name: `mongodb.${attributes[semconv.ATTR_DB_OPERATION] || "command"}`,
121
+ name: `mongodb.${attributes$1[attributes.DB_OPERATION] || "command"}`,
121
122
  kind: core.SPAN_KIND.CLIENT,
122
- attributes
123
+ attributes: attributes$1
123
124
  });
124
125
  }
125
126
  function patchEnd(span, resultHandler) {
@@ -1 +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 type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\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: SPAN_KIND.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","SPAN_KIND","getActiveSpan","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":"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"}
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 type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport {\n DB_NAME,\n DB_OPERATION,\n DB_STATEMENT,\n DB_SYSTEM,\n NET_PEER_NAME,\n NET_PEER_PORT,\n} from '@sentry/conventions/attributes';\nimport { ATTR_DB_CONNECTION_STRING, ATTR_DB_MONGODB_COLLECTION, DB_SYSTEM_VALUE_MONGODB } 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 [DB_SYSTEM]: DB_SYSTEM_VALUE_MONGODB,\n // eslint-disable-next-line typescript/no-deprecated\n [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 [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[NET_PEER_NAME] = host;\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[NET_PEER_PORT] = portNumber;\n }\n }\n\n if (commandObj) {\n try {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[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[DB_OPERATION] || 'command'}`,\n kind: SPAN_KIND.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","attributes","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","DB_SYSTEM","DB_SYSTEM_VALUE_MONGODB","DB_NAME","ATTR_DB_MONGODB_COLLECTION","DB_OPERATION","ATTR_DB_CONNECTION_STRING","NET_PEER_NAME","NET_PEER_PORT","DB_STATEMENT","startInactiveSpan","SPAN_KIND","getActiveSpan","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":"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"}
@@ -3,16 +3,17 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
3
  const mongoose = require('./vendored/mongoose.js');
4
4
  const core = require('@sentry/core');
5
5
  const nodeCore = require('@sentry/node-core');
6
+ const serverUtils = require('@sentry/server-utils');
6
7
 
7
8
  const INTEGRATION_NAME = "Mongoose";
8
9
  const instrumentMongoose = nodeCore.generateInstrumentOnce(INTEGRATION_NAME, () => new mongoose.MongooseInstrumentation());
9
10
  const _mongooseIntegration = (() => {
10
- return {
11
+ return core.extendIntegration(serverUtils.mongooseIntegration(), {
11
12
  name: INTEGRATION_NAME,
12
13
  setupOnce() {
13
14
  instrumentMongoose();
14
15
  }
15
- };
16
+ });
16
17
  });
17
18
  const mongooseIntegration = core.defineIntegration(_mongooseIntegration);
18
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/mongoose/index.ts"],"sourcesContent":["import { MongooseInstrumentation } from './vendored/mongoose';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongoose' as const;\n\nexport const instrumentMongoose = generateInstrumentOnce(INTEGRATION_NAME, () => new MongooseInstrumentation());\n\nconst _mongooseIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongoose();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nexport const mongooseIntegration = defineIntegration(_mongooseIntegration);\n"],"names":["generateInstrumentOnce","MongooseInstrumentation","defineIntegration"],"mappings":";;;;;;AAKA,MAAM,gBAAA,GAAmB,UAAA;AAElB,MAAM,qBAAqBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,kCAAyB;AAE9G,MAAM,wBAAwB,MAAM;AAClC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,kBAAA,EAAmB;AAAA,IACrB;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,mBAAA,GAAsBC,uBAAkB,oBAAoB;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/mongoose/index.ts"],"sourcesContent":["import { MongooseInstrumentation } from './vendored/mongoose';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, extendIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { mongooseIntegration as mongooseChannelIntegration } from '@sentry/server-utils';\n\nconst INTEGRATION_NAME = 'Mongoose' as const;\n\nexport const instrumentMongoose = generateInstrumentOnce(INTEGRATION_NAME, () => new MongooseInstrumentation());\n\nconst _mongooseIntegration = (() => {\n // The diagnostics_channel subscription (mongoose >= 9.7) lives in server-utils so it is shared\n // across server runtimes; we extend it here to also run the IITM-based patcher for mongoose < 9.7.\n return extendIntegration(mongooseChannelIntegration(), {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongoose();\n },\n });\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nexport const mongooseIntegration = defineIntegration(_mongooseIntegration);\n"],"names":["generateInstrumentOnce","MongooseInstrumentation","extendIntegration","mongooseChannelIntegration","defineIntegration"],"mappings":";;;;;;;AAMA,MAAM,gBAAA,GAAmB,UAAA;AAElB,MAAM,qBAAqBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,kCAAyB;AAE9G,MAAM,wBAAwB,MAAM;AAGlC,EAAA,OAAOC,sBAAA,CAAkBC,iCAA2B,EAAG;AAAA,IACrD,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,kBAAA,EAAmB;AAAA,IACrB;AAAA,GACD,CAAA;AACH,CAAA,CAAA;AAgBO,MAAM,mBAAA,GAAsBC,uBAAkB,oBAAoB;;;;;"}
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const instrumentation = require('@opentelemetry/instrumentation');
4
+ const attributes = require('@sentry/conventions/attributes');
4
5
  const core = require('@sentry/core');
5
- const semconv = require('./semconv.js');
6
6
  const utils = require('./utils.js');
7
7
 
8
8
  const PACKAGE_NAME = "@sentry/instrumentation-mongoose";
@@ -54,7 +54,10 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
54
54
  init() {
55
55
  const module = new instrumentation.InstrumentationNodeModuleDefinition(
56
56
  "mongoose",
57
- [">=5.9.7 <10"],
57
+ // mongoose >= 9.7.0 publishes via diagnostics_channel and is instrumented by
58
+ // `subscribeMongooseDiagnosticChannels` instead, so this IITM patcher must not
59
+ // overlap it — otherwise every operation would emit two mongoose spans.
60
+ [">=5.9.7 <9.7.0"],
58
61
  this.patch.bind(this),
59
62
  this.unpatch.bind(this)
60
63
  );
@@ -193,19 +196,19 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
193
196
  };
194
197
  }
195
198
  _startSpan(collection, modelName, operation, parentSpan) {
196
- const attributes = {
199
+ const attributes$1 = {
197
200
  ...utils.getAttributesFromCollection(collection),
198
- // eslint-disable-next-line typescript/no-deprecated
199
- [semconv.ATTR_DB_OPERATION]: operation,
200
- // eslint-disable-next-line typescript/no-deprecated
201
- [semconv.ATTR_DB_SYSTEM]: "mongoose",
201
+ // oxlint-disable-next-line typescript/no-deprecated
202
+ [attributes.DB_OPERATION]: operation,
203
+ // oxlint-disable-next-line typescript/no-deprecated
204
+ [attributes.DB_SYSTEM]: "mongoose",
202
205
  // keep for backwards compatibility
203
206
  [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN
204
207
  };
205
208
  return core.startInactiveSpan({
206
209
  name: `mongoose.${modelName}.${operation}`,
207
210
  kind: core.SPAN_KIND.CLIENT,
208
- attributes,
211
+ attributes: attributes$1,
209
212
  parentSpan
210
213
  });
211
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mongoose.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/mongoose.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-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n * - Types vendored from mongoose as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport {\n type InstrumentationConfig,\n InstrumentationBase,\n type InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport type * as mongoose from './mongoose-types';\nimport { ATTR_DB_OPERATION, ATTR_DB_SYSTEM } from './semconv';\nimport { getAttributesFromCollection, handleCallbackResponse, handlePromiseResponse } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongoose';\nconst ORIGIN = 'auto.db.otel.mongoose';\n\ntype MongooseModuleExports = typeof mongoose;\n\n// The raw imported `mongoose` module: either the CJS object itself, or an ESM\n// namespace wrapper exposing the same shape under `.default`.\ntype MongooseModule = MongooseModuleExports & {\n default?: MongooseModuleExports;\n [Symbol.toStringTag]?: string;\n};\n\nconst contextCaptureFunctionsCommon = [\n 'deleteOne',\n 'deleteMany',\n 'find',\n 'findOne',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n];\n\nconst contextCaptureFunctions6 = ['remove', 'count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions7 = ['count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(moduleVersion: string | undefined): string[] {\n /* istanbul ignore next */\n if (!moduleVersion) {\n return contextCaptureFunctionsCommon;\n } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n return contextCaptureFunctions6;\n } else if (moduleVersion.startsWith('7.')) {\n return contextCaptureFunctions7;\n } else {\n return contextCaptureFunctions8;\n }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n return (moduleVersion && (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) || false;\n}\n\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion: string | undefined): boolean {\n if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n return false;\n }\n\n const minor = parseInt(moduleVersion.split('.')[1]!, 10);\n return minor >= 21;\n}\n\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol('already-instrumented');\n\nexport class MongooseInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n 'mongoose',\n ['>=5.9.7 <10'],\n this.patch.bind(this),\n this.unpatch.bind(this),\n );\n return module;\n }\n\n private patch(module: MongooseModule, moduleVersion: string | undefined) {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save'));\n // mongoose applies this code on module require:\n // Model.prototype.$save = Model.prototype.save;\n // which captures the save function before it is patched.\n // so we need to apply the same logic after instrumenting the save function.\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove'));\n }\n\n // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne'));\n this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne'));\n }\n\n this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec());\n this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec());\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._wrap(moduleExports.Query.prototype, funcName as any, this.patchAndCaptureSpanContext(funcName));\n });\n this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany'));\n this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite'));\n\n return moduleExports;\n }\n\n private unpatch(module: MongooseModule, moduleVersion: string | undefined): void {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n this._unwrap(moduleExports.Model.prototype, 'save');\n // revert the patch for $save which we applied by aliasing it to patched `save`\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'remove');\n }\n\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'updateOne');\n this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n }\n\n this._unwrap(moduleExports.Query.prototype, 'exec');\n this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._unwrap(moduleExports.Query.prototype, funcName as any);\n });\n this._unwrap(moduleExports.Model, 'aggregate');\n\n this._unwrap(moduleExports.Model, 'insertMany');\n this._unwrap(moduleExports.Model, 'bulkWrite');\n }\n\n private patchAggregateExec() {\n const self = this;\n return (originalAggregate: Function) => {\n return function exec(this: any, callback?: Function) {\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', parentSpan);\n\n return self._handleResponse(span, originalAggregate, this, arguments, callback);\n };\n };\n }\n\n private patchQueryExec() {\n const self = this;\n return (originalExec: Function) => {\n return function exec(this: any, callback?: Function) {\n // Skip if already instrumented by document instance method patch\n if (this[_ALREADY_INSTRUMENTED]) {\n return originalExec.apply(this, arguments);\n }\n\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, parentSpan);\n\n return self._handleResponse(span, originalExec, this, arguments, callback);\n };\n };\n }\n\n private patchOnModelMethods(op: string) {\n const self = this;\n return (originalOnModelFunction: Function) => {\n return function method(this: any, options?: any, callback?: Function) {\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n if (options instanceof Function) {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n return self._handleResponse(span, originalOnModelFunction, this, arguments, callback);\n };\n };\n }\n\n // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n private _patchDocumentUpdateMethods(op: string) {\n const self = this;\n return (originalMethod: Function) => {\n return function method(this: any, update?: any, options?: any, callback?: Function) {\n // determine actual callback since different argument patterns are allowed\n let actualCallback: Function | undefined = callback;\n if (typeof update === 'function') {\n actualCallback = update;\n } else if (typeof options === 'function') {\n actualCallback = options;\n }\n\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback);\n\n // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n if (result && typeof result === 'object') {\n result[_ALREADY_INSTRUMENTED] = true;\n }\n\n return result;\n };\n };\n }\n\n private patchModelStatic(op: string) {\n const self = this;\n return (original: Function) => {\n return function patchedStatic(this: any, docsOrOps: any, options?: any, callback?: Function) {\n if (typeof options === 'function') {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n const span = self._startSpan(this.collection, this.modelName, op);\n\n return self._handleResponse(span, original, this, arguments, callback);\n };\n };\n }\n\n // we want to capture the otel span on the object which is calling exec.\n // in the special case of aggregate, we need have no function to path\n // on the Aggregate object to capture the context on, so we patch\n // the aggregate of Model, and set the context on the Aggregate object\n private patchModelAggregate() {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n const currentSpan = getActiveSpan();\n const aggregate = original.apply(this, arguments);\n if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n return aggregate;\n };\n };\n }\n\n private patchAndCaptureSpanContext(_funcName: string) {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n this[_STORED_PARENT_SPAN] = getActiveSpan();\n return original.apply(this, arguments);\n };\n };\n }\n\n private _startSpan(collection: mongoose.Collection, modelName: string, operation: string, parentSpan?: Span): Span {\n const attributes: SpanAttributes = {\n ...getAttributesFromCollection(collection),\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_OPERATION]: operation,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_SYSTEM]: 'mongoose', // keep for backwards compatibility\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n\n return startInactiveSpan({\n name: `mongoose.${modelName}.${operation}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n parentSpan,\n });\n }\n\n private _handleResponse(span: Span, exec: Function, originalThis: any, args: IArguments, callback?: Function) {\n // Activate the span while the underlying operation runs so that nested instrumentation\n // (e.g. the mongodb driver spans) is parented to this span. `withActiveSpan` returns the\n // callback's result untouched, so lazy mongoose Query thenables are handed back unexecuted.\n return withActiveSpan(span, () => {\n if (callback instanceof Function) {\n return handleCallbackResponse(callback, exec, originalThis, span, args);\n } else {\n const response = exec.apply(originalThis, args);\n return handlePromiseResponse(response, span);\n }\n });\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","getActiveSpan","getAttributesFromCollection","ATTR_DB_OPERATION","ATTR_DB_SYSTEM","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","startInactiveSpan","SPAN_KIND","withActiveSpan","handleCallbackResponse","handlePromiseResponse"],"mappings":"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"}
1
+ {"version":3,"file":"mongoose.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/mongoose.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-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n * - Types vendored from mongoose as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport {\n type InstrumentationConfig,\n InstrumentationBase,\n type InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport { DB_OPERATION, DB_SYSTEM } from '@sentry/conventions/attributes';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport type * as mongoose from './mongoose-types';\nimport { getAttributesFromCollection, handleCallbackResponse, handlePromiseResponse } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongoose';\nconst ORIGIN = 'auto.db.otel.mongoose';\n\ntype MongooseModuleExports = typeof mongoose;\n\n// The raw imported `mongoose` module: either the CJS object itself, or an ESM\n// namespace wrapper exposing the same shape under `.default`.\ntype MongooseModule = MongooseModuleExports & {\n default?: MongooseModuleExports;\n [Symbol.toStringTag]?: string;\n};\n\nconst contextCaptureFunctionsCommon = [\n 'deleteOne',\n 'deleteMany',\n 'find',\n 'findOne',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n];\n\nconst contextCaptureFunctions6 = ['remove', 'count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions7 = ['count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(moduleVersion: string | undefined): string[] {\n /* istanbul ignore next */\n if (!moduleVersion) {\n return contextCaptureFunctionsCommon;\n } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n return contextCaptureFunctions6;\n } else if (moduleVersion.startsWith('7.')) {\n return contextCaptureFunctions7;\n } else {\n return contextCaptureFunctions8;\n }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n return (moduleVersion && (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) || false;\n}\n\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion: string | undefined): boolean {\n if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n return false;\n }\n\n const minor = parseInt(moduleVersion.split('.')[1]!, 10);\n return minor >= 21;\n}\n\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol('already-instrumented');\n\nexport class MongooseInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n 'mongoose',\n // mongoose >= 9.7.0 publishes via diagnostics_channel and is instrumented by\n // `subscribeMongooseDiagnosticChannels` instead, so this IITM patcher must not\n // overlap it — otherwise every operation would emit two mongoose spans.\n ['>=5.9.7 <9.7.0'],\n this.patch.bind(this),\n this.unpatch.bind(this),\n );\n return module;\n }\n\n private patch(module: MongooseModule, moduleVersion: string | undefined) {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save'));\n // mongoose applies this code on module require:\n // Model.prototype.$save = Model.prototype.save;\n // which captures the save function before it is patched.\n // so we need to apply the same logic after instrumenting the save function.\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove'));\n }\n\n // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne'));\n this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne'));\n }\n\n this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec());\n this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec());\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._wrap(moduleExports.Query.prototype, funcName as any, this.patchAndCaptureSpanContext(funcName));\n });\n this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany'));\n this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite'));\n\n return moduleExports;\n }\n\n private unpatch(module: MongooseModule, moduleVersion: string | undefined): void {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n this._unwrap(moduleExports.Model.prototype, 'save');\n // revert the patch for $save which we applied by aliasing it to patched `save`\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'remove');\n }\n\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'updateOne');\n this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n }\n\n this._unwrap(moduleExports.Query.prototype, 'exec');\n this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._unwrap(moduleExports.Query.prototype, funcName as any);\n });\n this._unwrap(moduleExports.Model, 'aggregate');\n\n this._unwrap(moduleExports.Model, 'insertMany');\n this._unwrap(moduleExports.Model, 'bulkWrite');\n }\n\n private patchAggregateExec() {\n const self = this;\n return (originalAggregate: Function) => {\n return function exec(this: any, callback?: Function) {\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', parentSpan);\n\n return self._handleResponse(span, originalAggregate, this, arguments, callback);\n };\n };\n }\n\n private patchQueryExec() {\n const self = this;\n return (originalExec: Function) => {\n return function exec(this: any, callback?: Function) {\n // Skip if already instrumented by document instance method patch\n if (this[_ALREADY_INSTRUMENTED]) {\n return originalExec.apply(this, arguments);\n }\n\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, parentSpan);\n\n return self._handleResponse(span, originalExec, this, arguments, callback);\n };\n };\n }\n\n private patchOnModelMethods(op: string) {\n const self = this;\n return (originalOnModelFunction: Function) => {\n return function method(this: any, options?: any, callback?: Function) {\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n if (options instanceof Function) {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n return self._handleResponse(span, originalOnModelFunction, this, arguments, callback);\n };\n };\n }\n\n // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n private _patchDocumentUpdateMethods(op: string) {\n const self = this;\n return (originalMethod: Function) => {\n return function method(this: any, update?: any, options?: any, callback?: Function) {\n // determine actual callback since different argument patterns are allowed\n let actualCallback: Function | undefined = callback;\n if (typeof update === 'function') {\n actualCallback = update;\n } else if (typeof options === 'function') {\n actualCallback = options;\n }\n\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback);\n\n // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n if (result && typeof result === 'object') {\n result[_ALREADY_INSTRUMENTED] = true;\n }\n\n return result;\n };\n };\n }\n\n private patchModelStatic(op: string) {\n const self = this;\n return (original: Function) => {\n return function patchedStatic(this: any, docsOrOps: any, options?: any, callback?: Function) {\n if (typeof options === 'function') {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n const span = self._startSpan(this.collection, this.modelName, op);\n\n return self._handleResponse(span, original, this, arguments, callback);\n };\n };\n }\n\n // we want to capture the otel span on the object which is calling exec.\n // in the special case of aggregate, we need have no function to path\n // on the Aggregate object to capture the context on, so we patch\n // the aggregate of Model, and set the context on the Aggregate object\n private patchModelAggregate() {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n const currentSpan = getActiveSpan();\n const aggregate = original.apply(this, arguments);\n if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n return aggregate;\n };\n };\n }\n\n private patchAndCaptureSpanContext(_funcName: string) {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n this[_STORED_PARENT_SPAN] = getActiveSpan();\n return original.apply(this, arguments);\n };\n };\n }\n\n private _startSpan(collection: mongoose.Collection, modelName: string, operation: string, parentSpan?: Span): Span {\n const attributes: SpanAttributes = {\n ...getAttributesFromCollection(collection),\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_OPERATION]: operation,\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_SYSTEM]: 'mongoose', // keep for backwards compatibility\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n\n return startInactiveSpan({\n name: `mongoose.${modelName}.${operation}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n parentSpan,\n });\n }\n\n private _handleResponse(span: Span, exec: Function, originalThis: any, args: IArguments, callback?: Function) {\n // Activate the span while the underlying operation runs so that nested instrumentation\n // (e.g. the mongodb driver spans) is parented to this span. `withActiveSpan` returns the\n // callback's result untouched, so lazy mongoose Query thenables are handed back unexecuted.\n return withActiveSpan(span, () => {\n if (callback instanceof Function) {\n return handleCallbackResponse(callback, exec, originalThis, span, args);\n } else {\n const response = exec.apply(originalThis, args);\n return handlePromiseResponse(response, span);\n }\n });\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","getActiveSpan","attributes","getAttributesFromCollection","DB_OPERATION","DB_SYSTEM","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","startInactiveSpan","SPAN_KIND","withActiveSpan","handleCallbackResponse","handlePromiseResponse"],"mappings":"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"}
@@ -1,18 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const ATTR_DB_MONGODB_COLLECTION = "db.mongodb.collection";
4
- const ATTR_DB_NAME = "db.name";
5
- const ATTR_DB_OPERATION = "db.operation";
6
- const ATTR_DB_SYSTEM = "db.system";
7
- const ATTR_DB_USER = "db.user";
8
- const ATTR_NET_PEER_NAME = "net.peer.name";
9
- const ATTR_NET_PEER_PORT = "net.peer.port";
10
4
 
11
5
  exports.ATTR_DB_MONGODB_COLLECTION = ATTR_DB_MONGODB_COLLECTION;
12
- exports.ATTR_DB_NAME = ATTR_DB_NAME;
13
- exports.ATTR_DB_OPERATION = ATTR_DB_OPERATION;
14
- exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
15
- exports.ATTR_DB_USER = ATTR_DB_USER;
16
- exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
17
- exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
18
6
  //# sourceMappingURL=semconv.js.map