@sentry/node 10.63.0 → 10.65.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 (286) hide show
  1. package/build/cjs/index.js +15 -14
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/integrations/http.js +4 -7
  4. package/build/cjs/integrations/http.js.map +1 -1
  5. package/build/cjs/integrations/node-fetch.js +24 -0
  6. package/build/cjs/integrations/node-fetch.js.map +1 -0
  7. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js +0 -6
  8. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  9. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js +11 -10
  10. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  11. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +2 -2
  12. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  13. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +2 -2
  14. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  15. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js +9 -9
  16. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  17. package/build/cjs/integrations/tracing/graphql/index.js +3 -2
  18. package/build/cjs/integrations/tracing/graphql/index.js.map +1 -1
  19. package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  20. package/build/cjs/integrations/tracing/graphql/vendored/utils.js +1 -4
  21. package/build/cjs/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  22. package/build/cjs/integrations/tracing/hapi/vendored/utils.js +8 -9
  23. package/build/cjs/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  24. package/build/cjs/integrations/tracing/hono/index.js +7 -7
  25. package/build/cjs/integrations/tracing/hono/index.js.map +1 -1
  26. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js +2 -1
  27. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  28. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js +0 -12
  29. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  30. package/build/cjs/integrations/tracing/kafka/vendored/utils.js +12 -11
  31. package/build/cjs/integrations/tracing/kafka/vendored/utils.js.map +1 -1
  32. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +11 -10
  33. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  34. package/build/cjs/integrations/tracing/knex/vendored/semconv.js +0 -16
  35. package/build/cjs/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  36. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +2 -2
  37. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  38. package/build/cjs/integrations/tracing/koa/vendored/utils.js +2 -2
  39. package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
  40. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -12
  41. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  42. package/build/cjs/integrations/tracing/mongo/vendored/utils.js +13 -12
  43. package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  44. package/build/cjs/integrations/tracing/mongoose/index.js +3 -2
  45. package/build/cjs/integrations/tracing/mongoose/index.js.map +1 -1
  46. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +11 -8
  47. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  48. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -12
  49. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  50. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +9 -9
  51. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  52. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js +9 -8
  53. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  54. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js +0 -12
  55. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  56. package/build/cjs/integrations/tracing/mysql2/index.js +3 -2
  57. package/build/cjs/integrations/tracing/mysql2/index.js.map +1 -1
  58. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +8 -5
  59. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  60. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js +0 -12
  61. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  62. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js +7 -4
  63. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  64. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js +0 -12
  65. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  66. package/build/cjs/integrations/tracing/postgres/vendored/utils.js +12 -11
  67. package/build/cjs/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  68. package/build/cjs/integrations/tracing/postgresjs.js +8 -7
  69. package/build/cjs/integrations/tracing/postgresjs.js.map +1 -1
  70. package/build/cjs/integrations/tracing/prisma/index.js +48 -53
  71. package/build/cjs/integrations/tracing/prisma/index.js.map +1 -1
  72. package/build/cjs/integrations/tracing/redis/cache.js +41 -0
  73. package/build/cjs/integrations/tracing/redis/cache.js.map +1 -0
  74. package/build/cjs/integrations/tracing/redis/index.js +15 -42
  75. package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
  76. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +22 -13
  77. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  78. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +21 -15
  79. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  80. package/build/cjs/integrations/tracing/redis/vendored/semconv.js +0 -8
  81. package/build/cjs/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  82. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js +9 -8
  83. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  84. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js +0 -12
  85. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  86. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +14 -2
  87. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  88. package/build/cjs/sdk/index.js +2 -2
  89. package/build/cjs/sdk/index.js.map +1 -1
  90. package/build/cjs/sdk/initOtel.js +36 -0
  91. package/build/cjs/sdk/initOtel.js.map +1 -1
  92. package/build/esm/index.js +2 -2
  93. package/build/esm/integrations/http.js +5 -8
  94. package/build/esm/integrations/http.js.map +1 -1
  95. package/build/esm/integrations/node-fetch.js +22 -0
  96. package/build/esm/integrations/node-fetch.js.map +1 -0
  97. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js +1 -4
  98. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  99. package/build/esm/integrations/tracing/amqplib/vendored/utils.js +7 -6
  100. package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  101. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +2 -2
  102. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  103. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +2 -2
  104. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  105. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js +7 -7
  106. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  107. package/build/esm/integrations/tracing/graphql/index.js +4 -3
  108. package/build/esm/integrations/tracing/graphql/index.js.map +1 -1
  109. package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  110. package/build/esm/integrations/tracing/graphql/vendored/utils.js +1 -4
  111. package/build/esm/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  112. package/build/esm/integrations/tracing/hapi/vendored/utils.js +3 -4
  113. package/build/esm/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  114. package/build/esm/integrations/tracing/hono/index.js +3 -3
  115. package/build/esm/integrations/tracing/hono/index.js.map +1 -1
  116. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js +3 -2
  117. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  118. package/build/esm/integrations/tracing/kafka/vendored/semconv.js +1 -7
  119. package/build/esm/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  120. package/build/esm/integrations/tracing/kafka/vendored/utils.js +11 -10
  121. package/build/esm/integrations/tracing/kafka/vendored/utils.js.map +1 -1
  122. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +10 -9
  123. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  124. package/build/esm/integrations/tracing/knex/vendored/semconv.js +1 -9
  125. package/build/esm/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  126. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +2 -2
  127. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  128. package/build/esm/integrations/tracing/koa/vendored/utils.js +2 -2
  129. package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
  130. package/build/esm/integrations/tracing/mongo/vendored/semconv.js +1 -7
  131. package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  132. package/build/esm/integrations/tracing/mongo/vendored/utils.js +11 -10
  133. package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  134. package/build/esm/integrations/tracing/mongoose/index.js +4 -3
  135. package/build/esm/integrations/tracing/mongoose/index.js.map +1 -1
  136. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +9 -6
  137. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  138. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +1 -7
  139. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  140. package/build/esm/integrations/tracing/mongoose/vendored/utils.js +10 -10
  141. package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  142. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js +8 -7
  143. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  144. package/build/esm/integrations/tracing/mysql/vendored/semconv.js +1 -7
  145. package/build/esm/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  146. package/build/esm/integrations/tracing/mysql2/index.js +4 -3
  147. package/build/esm/integrations/tracing/mysql2/index.js.map +1 -1
  148. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +7 -4
  149. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  150. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js +1 -7
  151. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  152. package/build/esm/integrations/tracing/mysql2/vendored/utils.js +8 -5
  153. package/build/esm/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  154. package/build/esm/integrations/tracing/postgres/vendored/semconv.js +1 -7
  155. package/build/esm/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  156. package/build/esm/integrations/tracing/postgres/vendored/utils.js +13 -12
  157. package/build/esm/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  158. package/build/esm/integrations/tracing/postgresjs.js +7 -6
  159. package/build/esm/integrations/tracing/postgresjs.js.map +1 -1
  160. package/build/esm/integrations/tracing/prisma/index.js +49 -54
  161. package/build/esm/integrations/tracing/prisma/index.js.map +1 -1
  162. package/build/esm/integrations/tracing/redis/cache.js +38 -0
  163. package/build/esm/integrations/tracing/redis/cache.js.map +1 -0
  164. package/build/esm/integrations/tracing/redis/index.js +12 -42
  165. package/build/esm/integrations/tracing/redis/index.js.map +1 -1
  166. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +19 -10
  167. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  168. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +16 -10
  169. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  170. package/build/esm/integrations/tracing/redis/vendored/semconv.js +1 -5
  171. package/build/esm/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  172. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js +8 -7
  173. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  174. package/build/esm/integrations/tracing/tedious/vendored/semconv.js +1 -7
  175. package/build/esm/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  176. package/build/esm/package.json +1 -1
  177. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +15 -4
  178. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  179. package/build/esm/sdk/index.js +1 -1
  180. package/build/esm/sdk/initOtel.js +38 -2
  181. package/build/esm/sdk/initOtel.js.map +1 -1
  182. package/build/types/index.d.ts +1 -1
  183. package/build/types/index.d.ts.map +1 -1
  184. package/build/types/integrations/http.d.ts +2 -2
  185. package/build/types/integrations/http.d.ts.map +1 -1
  186. package/build/types/integrations/node-fetch.d.ts +9 -0
  187. package/build/types/integrations/node-fetch.d.ts.map +1 -0
  188. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
  189. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts.map +1 -1
  190. package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +1 -1
  191. package/build/types/integrations/tracing/graphql/index.d.ts.map +1 -1
  192. package/build/types/integrations/tracing/graphql/vendored/graphql-types.d.ts +1 -135
  193. package/build/types/integrations/tracing/graphql/vendored/graphql-types.d.ts.map +1 -1
  194. package/build/types/integrations/tracing/graphql/vendored/utils.d.ts.map +1 -1
  195. package/build/types/integrations/tracing/hapi/vendored/utils.d.ts.map +1 -1
  196. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
  197. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts.map +1 -1
  198. package/build/types/integrations/tracing/kafka/vendored/utils.d.ts.map +1 -1
  199. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
  200. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts.map +1 -1
  201. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
  202. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +1 -1
  203. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -1
  204. package/build/types/integrations/tracing/mongoose/index.d.ts.map +1 -1
  205. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
  206. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
  207. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +1 -1
  208. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
  209. package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts.map +1 -1
  210. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts +1 -62
  211. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts.map +1 -1
  212. package/build/types/integrations/tracing/mysql2/index.d.ts.map +1 -1
  213. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +1 -1
  214. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
  215. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts.map +1 -1
  216. package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts.map +1 -1
  217. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
  218. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts.map +1 -1
  219. package/build/types/integrations/tracing/postgres/vendored/utils.d.ts.map +1 -1
  220. package/build/types/integrations/tracing/postgresjs.d.ts.map +1 -1
  221. package/build/types/integrations/tracing/prisma/index.d.ts.map +1 -1
  222. package/build/types/integrations/tracing/redis/cache.d.ts +22 -0
  223. package/build/types/integrations/tracing/redis/cache.d.ts.map +1 -0
  224. package/build/types/integrations/tracing/redis/index.d.ts +2 -20
  225. package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
  226. package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts.map +1 -1
  227. package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +1 -1
  228. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
  229. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts.map +1 -1
  230. package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts.map +1 -1
  231. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
  232. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts.map +1 -1
  233. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
  234. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +1 -1
  235. package/build/types/sdk/initOtel.d.ts +2 -3
  236. package/build/types/sdk/initOtel.d.ts.map +1 -1
  237. package/build/types-ts3.8/index.d.ts +1 -1
  238. package/build/types-ts3.8/integrations/http.d.ts +2 -2
  239. package/build/types-ts3.8/integrations/node-fetch.d.ts +9 -0
  240. package/build/types-ts3.8/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
  241. package/build/types-ts3.8/integrations/tracing/graphql/vendored/graphql-types.d.ts +1 -135
  242. package/build/types-ts3.8/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
  243. package/build/types-ts3.8/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
  244. package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
  245. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
  246. package/build/types-ts3.8/integrations/tracing/mysql/vendored/semconv.d.ts +1 -62
  247. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
  248. package/build/types-ts3.8/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
  249. package/build/types-ts3.8/integrations/tracing/redis/cache.d.ts +22 -0
  250. package/build/types-ts3.8/integrations/tracing/redis/index.d.ts +2 -20
  251. package/build/types-ts3.8/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
  252. package/build/types-ts3.8/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
  253. package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
  254. package/build/types-ts3.8/sdk/initOtel.d.ts +3 -4
  255. package/package.json +8 -9
  256. package/build/cjs/integrations/node-fetch/index.js +0 -38
  257. package/build/cjs/integrations/node-fetch/index.js.map +0 -1
  258. package/build/cjs/integrations/node-fetch/undici-instrumentation.js +0 -266
  259. package/build/cjs/integrations/node-fetch/undici-instrumentation.js.map +0 -1
  260. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js +0 -6
  261. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
  262. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js +0 -34
  263. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
  264. package/build/esm/integrations/node-fetch/index.js +0 -36
  265. package/build/esm/integrations/node-fetch/index.js.map +0 -1
  266. package/build/esm/integrations/node-fetch/undici-instrumentation.js +0 -264
  267. package/build/esm/integrations/node-fetch/undici-instrumentation.js.map +0 -1
  268. package/build/esm/integrations/tracing/hapi/vendored/semconv.js +0 -4
  269. package/build/esm/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
  270. package/build/esm/integrations/tracing/redis/vendored/redis-common.js +0 -32
  271. package/build/esm/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
  272. package/build/types/integrations/node-fetch/index.d.ts +0 -5
  273. package/build/types/integrations/node-fetch/index.d.ts.map +0 -1
  274. package/build/types/integrations/node-fetch/types.d.ts +0 -96
  275. package/build/types/integrations/node-fetch/types.d.ts.map +0 -1
  276. package/build/types/integrations/node-fetch/undici-instrumentation.d.ts +0 -14
  277. package/build/types/integrations/node-fetch/undici-instrumentation.d.ts.map +0 -1
  278. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
  279. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts.map +0 -1
  280. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
  281. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts.map +0 -1
  282. package/build/types-ts3.8/integrations/node-fetch/index.d.ts +0 -5
  283. package/build/types-ts3.8/integrations/node-fetch/types.d.ts +0 -96
  284. package/build/types-ts3.8/integrations/node-fetch/undici-instrumentation.d.ts +0 -14
  285. package/build/types-ts3.8/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
  286. package/build/types-ts3.8/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"redis-instrumentation.js","sources":["../../../../../../src/integrations/tracing/redis/vendored/redis-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/instrumentation-redis-v0.62.0/packages/instrumentation-redis\n * - Upstream version: @opentelemetry/instrumentation-redis@0.62.0\n * - Minor TypeScript adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { TracerProvider } from '@opentelemetry/api';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n debug,\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../../../debug-build';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport { defaultDbStatementSerializer } from './redis-common';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_VALUE_REDIS,\n} from './semconv';\nimport type { RedisInstrumentationConfig, RedisResponseCustomAttributeFunction } from './types';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-redis';\nconst ORIGIN = 'auto.db.otel.redis';\n\n// node-redis >= 5.12.0 publishes via diagnostics_channel, which Sentry subscribes\n// to separately, so this monkey-patching instrumentation only covers the older\n// `redis` (v2-v3), `@redis/client`/`@node-redis/client` (v1, i.e. node-redis v4)\n// and node-redis 5.0-5.11 releases.\n\n// ---- Internal types ----\n\ninterface RedisPluginClientTypes {\n connection_options?: {\n port?: string | number;\n host?: string;\n };\n address?: string;\n}\n\ninterface RedisCommand {\n command: string;\n args: string[];\n buffer_args: boolean;\n callback: (err: Error | null, reply: unknown) => void;\n call_on_write: boolean;\n}\n\ninterface MultiErrorReply extends Error {\n replies: unknown[];\n errorIndexes: Array<number>;\n}\n\ninterface OpenSpanInfo {\n span: Span;\n commandName: string;\n commandArgs: Array<string | Buffer>;\n}\n\nconst OTEL_OPEN_SPANS = Symbol('opentelemetry.instrumentation.redis.open_spans');\nconst MULTI_COMMAND_OPTIONS = Symbol('opentelemetry.instrumentation.redis.multi_command_options');\n\n// ---- shared utils ----\n\nfunction endSpan(span: Span, err: Error | null | undefined): void {\n if (err) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: err.message });\n }\n span.end();\n}\n\nfunction runResponseHook(\n responseHook: RedisResponseCustomAttributeFunction | undefined,\n span: Span,\n commandName: string,\n commandArgs: Array<string | Buffer>,\n response: unknown,\n): void {\n if (!responseHook) {\n return;\n }\n try {\n responseHook(span, commandName, commandArgs, response);\n } catch {\n // never let a user-provided response hook break instrumentation\n }\n}\n\n// ---- v4-v5 utils ----\n\nfunction removeCredentialsFromDBConnectionStringAttribute(url: string | undefined): string | undefined {\n if (typeof url !== 'string' || !url) {\n return undefined;\n }\n try {\n const u = new URL(url);\n u.searchParams.delete('user_pwd');\n u.username = '';\n u.password = '';\n return u.href;\n } catch (err) {\n DEBUG_BUILD && debug.error('failed to sanitize redis connection url', err);\n }\n return undefined;\n}\n\nfunction getClientAttributes(options: any): SpanAttributes {\n return {\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n [ATTR_NET_PEER_NAME]: options?.socket?.host,\n [ATTR_NET_PEER_PORT]: options?.socket?.port,\n [ATTR_DB_CONNECTION_STRING]: removeCredentialsFromDBConnectionStringAttribute(options?.url),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n}\n\n// ---- RedisInstrumentationV2_V3 ----\n\nclass RedisInstrumentationV2_V3 extends InstrumentationBase<RedisInstrumentationConfig> {\n static COMPONENT = 'redis';\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'redis',\n ['>=2.6.0 <4'],\n (moduleExports: any) => {\n if (isWrapped(moduleExports.RedisClient.prototype['internal_send_command'])) {\n this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n }\n this._wrap(moduleExports.RedisClient.prototype, 'internal_send_command', this._getPatchInternalSendCommand());\n return moduleExports;\n },\n (moduleExports: any) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n },\n ),\n ];\n }\n\n private _getPatchInternalSendCommand() {\n const instrumentation = this;\n return function internal_send_command(original: Function) {\n return function internal_send_command_trace(this: RedisPluginClientTypes, cmd: RedisCommand) {\n if (arguments.length !== 1 || typeof cmd !== 'object') {\n return original.apply(this, arguments);\n }\n const attributes: SpanAttributes = {\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n [ATTR_DB_STATEMENT]: defaultDbStatementSerializer(cmd.command, cmd.args),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n if (this.connection_options) {\n attributes[ATTR_NET_PEER_NAME] = this.connection_options.host;\n attributes[ATTR_NET_PEER_PORT] = this.connection_options.port;\n }\n if (this.address) {\n attributes[ATTR_DB_CONNECTION_STRING] = `redis://${this.address}`;\n }\n const span = startInactiveSpan({\n name: `${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n const originalCallback = arguments[0].callback;\n if (originalCallback) {\n const parentSpan = getActiveSpan();\n arguments[0].callback = function callback(this: any, err: Error | null, reply: unknown) {\n runResponseHook(instrumentation.getConfig().responseHook, span, cmd.command, cmd.args, reply);\n endSpan(span, err);\n return withActiveSpan(parentSpan ?? null, () => originalCallback.apply(this, arguments));\n };\n }\n try {\n return original.apply(this, arguments);\n } catch (rethrow) {\n endSpan(span, rethrow as Error);\n throw rethrow;\n }\n };\n };\n }\n}\n\n// ---- RedisInstrumentationV4_V5 ----\n\nclass RedisInstrumentationV4_V5 extends InstrumentationBase<RedisInstrumentationConfig> {\n static COMPONENT = 'redis';\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n init() {\n return [\n this._getInstrumentationNodeModuleDefinition('@redis/client'),\n this._getInstrumentationNodeModuleDefinition('@node-redis/client'),\n ];\n }\n\n private _getInstrumentationNodeModuleDefinition(basePackageName: string) {\n const commanderModuleFile = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/commander.js`,\n ['^1.0.0'],\n (moduleExports: any, moduleVersion?: string) => {\n const transformCommandArguments = moduleExports.transformCommandArguments;\n if (!transformCommandArguments) {\n DEBUG_BUILD && debug.error('internal instrumentation error, missing transformCommandArguments function');\n return moduleExports;\n }\n const functionToPatch = moduleVersion?.startsWith('1.0.') ? 'extendWithCommands' : 'attachCommands';\n if (isWrapped(moduleExports?.[functionToPatch])) {\n this._unwrap(moduleExports, functionToPatch);\n }\n this._wrap(moduleExports, functionToPatch, this._getPatchExtendWithCommands(transformCommandArguments));\n return moduleExports;\n },\n (moduleExports: any) => {\n if (isWrapped(moduleExports?.extendWithCommands)) {\n this._unwrap(moduleExports, 'extendWithCommands');\n }\n if (isWrapped(moduleExports?.attachCommands)) {\n this._unwrap(moduleExports, 'attachCommands');\n }\n },\n );\n\n const multiCommanderModule = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/client/multi-command.js`,\n ['^1.0.0', '>=5.0.0 <5.12.0'],\n (moduleExports: any) => {\n const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n this._unwrap(redisClientMultiCommandPrototype, 'exec');\n }\n this._wrap(redisClientMultiCommandPrototype, 'exec', this._getPatchMultiCommandsExec());\n if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n }\n this._wrap(redisClientMultiCommandPrototype, 'execAsPipeline', this._getPatchMultiCommandsExec());\n if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n }\n this._wrap(redisClientMultiCommandPrototype, 'addCommand', this._getPatchMultiCommandsAddCommand());\n return moduleExports;\n },\n (moduleExports: any) => {\n const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n this._unwrap(redisClientMultiCommandPrototype, 'exec');\n }\n if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n }\n if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n }\n },\n );\n\n const clientIndexModule = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/client/index.js`,\n ['^1.0.0', '>=5.0.0 <5.12.0'],\n (moduleExports: any) => {\n const redisClientPrototype = moduleExports?.default?.prototype;\n if (redisClientPrototype?.multi) {\n if (isWrapped(redisClientPrototype?.multi)) {\n this._unwrap(redisClientPrototype, 'multi');\n }\n this._wrap(redisClientPrototype, 'multi', this._getPatchRedisClientMulti());\n }\n if (redisClientPrototype?.MULTI) {\n if (isWrapped(redisClientPrototype?.MULTI)) {\n this._unwrap(redisClientPrototype, 'MULTI');\n }\n this._wrap(redisClientPrototype, 'MULTI', this._getPatchRedisClientMulti());\n }\n if (isWrapped(redisClientPrototype?.sendCommand)) {\n this._unwrap(redisClientPrototype, 'sendCommand');\n }\n this._wrap(redisClientPrototype, 'sendCommand', this._getPatchRedisClientSendCommand());\n if (isWrapped(redisClientPrototype?.connect)) {\n this._unwrap(redisClientPrototype, 'connect');\n }\n this._wrap(redisClientPrototype, 'connect', this._getPatchedClientConnect());\n return moduleExports;\n },\n (moduleExports: any) => {\n const redisClientPrototype = moduleExports?.default?.prototype;\n if (isWrapped(redisClientPrototype?.multi)) {\n this._unwrap(redisClientPrototype, 'multi');\n }\n if (isWrapped(redisClientPrototype?.MULTI)) {\n this._unwrap(redisClientPrototype, 'MULTI');\n }\n if (isWrapped(redisClientPrototype?.sendCommand)) {\n this._unwrap(redisClientPrototype, 'sendCommand');\n }\n if (isWrapped(redisClientPrototype?.connect)) {\n this._unwrap(redisClientPrototype, 'connect');\n }\n },\n );\n\n return new InstrumentationNodeModuleDefinition(\n basePackageName,\n ['^1.0.0', '>=5.0.0 <5.12.0'],\n (moduleExports: any) => moduleExports,\n () => {},\n [commanderModuleFile, multiCommanderModule, clientIndexModule],\n );\n }\n\n private _getPatchExtendWithCommands(transformCommandArguments: Function) {\n const plugin = this;\n return function extendWithCommandsPatchWrapper(original: Function) {\n return function extendWithCommandsPatch(this: any, config: any) {\n if (config?.BaseClass?.name !== 'RedisClient') {\n return original.apply(this, arguments);\n }\n const origExecutor = config.executor;\n config.executor = function (this: any, command: any, args: any) {\n const redisCommandArguments = transformCommandArguments(command, args).args;\n return plugin._traceClientCommand(origExecutor, this, arguments, redisCommandArguments);\n };\n return original.apply(this, arguments);\n };\n };\n }\n\n private _getPatchMultiCommandsExec() {\n const plugin = this;\n return function execPatchWrapper(original: Function) {\n return function execPatch(this: any) {\n const execRes = original.apply(this, arguments);\n if (typeof execRes?.then !== 'function') {\n DEBUG_BUILD && debug.error('non-promise result when patching exec/execAsPipeline');\n return execRes;\n }\n return execRes\n .then((redisRes: unknown[]) => {\n const openSpans: OpenSpanInfo[] = this[OTEL_OPEN_SPANS];\n plugin._endSpansWithRedisReplies(openSpans, redisRes);\n return redisRes;\n })\n .catch((err: any) => {\n const openSpans: OpenSpanInfo[] = this[OTEL_OPEN_SPANS];\n if (!openSpans) {\n DEBUG_BUILD && debug.error('cannot find open spans to end for multi/pipeline');\n } else {\n const replies =\n err.constructor.name === 'MultiErrorReply'\n ? (err as MultiErrorReply).replies\n : new Array(openSpans.length).fill(err);\n plugin._endSpansWithRedisReplies(openSpans, replies);\n }\n return Promise.reject(err);\n });\n };\n };\n }\n\n private _getPatchMultiCommandsAddCommand() {\n const plugin = this;\n return function addCommandWrapper(original: Function) {\n return function addCommandPatch(this: any, args: any) {\n return plugin._traceClientCommand(original, this, arguments, args);\n };\n };\n }\n\n private _getPatchRedisClientMulti() {\n return function multiPatchWrapper(original: Function) {\n return function multiPatch(this: any) {\n const multiRes: any = original.apply(this, arguments);\n multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n return multiRes;\n };\n };\n }\n\n private _getPatchRedisClientSendCommand() {\n const plugin = this;\n return function sendCommandWrapper(original: Function) {\n return function sendCommandPatch(this: any, args: any) {\n return plugin._traceClientCommand(original, this, arguments, args);\n };\n };\n }\n\n private _getPatchedClientConnect() {\n return function connectWrapper(original: Function) {\n return function patchedConnect(this: any) {\n const attributes = getClientAttributes(this.options);\n const span = startInactiveSpan({\n name: `${RedisInstrumentationV4_V5.COMPONENT}-connect`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n const res = withActiveSpan(span, () => original.apply(this));\n return res.then(\n (result: any) => {\n span.end();\n return result;\n },\n (error: Error) => {\n endSpan(span, error);\n return Promise.reject(error);\n },\n );\n };\n };\n }\n\n _traceClientCommand(\n origFunction: Function,\n origThis: any,\n origArguments: IArguments,\n redisCommandArguments: Array<string | Buffer>,\n ): any {\n const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n const commandName = redisCommandArguments[0] as string;\n const commandArgs = redisCommandArguments.slice(1);\n const attributes = getClientAttributes(clientOptions);\n const dbStatement = defaultDbStatementSerializer(commandName, commandArgs);\n if (dbStatement != null) {\n attributes[ATTR_DB_STATEMENT] = dbStatement;\n }\n const span = startInactiveSpan({\n name: `${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n const res = withActiveSpan(span, () => origFunction.apply(origThis, origArguments));\n if (res instanceof Promise) {\n res.then(\n (redisRes: unknown) => {\n this._endSpanWithResponse(span, commandName, commandArgs, redisRes, undefined);\n },\n (err: Error) => {\n this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n },\n );\n } else {\n const redisClientMultiCommand: any = res;\n redisClientMultiCommand[OTEL_OPEN_SPANS] = redisClientMultiCommand[OTEL_OPEN_SPANS] || [];\n redisClientMultiCommand[OTEL_OPEN_SPANS].push({\n span,\n commandName,\n commandArgs,\n });\n }\n return res;\n }\n\n _endSpansWithRedisReplies(openSpans: OpenSpanInfo[] | undefined, replies: unknown[]): void {\n if (!openSpans) {\n DEBUG_BUILD && debug.error('cannot find open spans to end for redis multi/pipeline');\n return;\n }\n if (replies.length !== openSpans.length) {\n DEBUG_BUILD && debug.error('number of multi command spans does not match response from redis');\n return;\n }\n for (let i = 0; i < openSpans.length; i++) {\n const { span, commandName, commandArgs } = openSpans[i]!;\n const currCommandRes = replies[i];\n const [res, err] = currCommandRes instanceof Error ? [null, currCommandRes] : [currCommandRes, undefined];\n this._endSpanWithResponse(span, commandName, commandArgs, res, err);\n }\n }\n\n _endSpanWithResponse(\n span: Span,\n commandName: string,\n commandArgs: Array<string | Buffer>,\n response: unknown,\n error: Error | null | undefined,\n ): void {\n if (!error) {\n runResponseHook(this.getConfig().responseHook, span, commandName, commandArgs, response);\n }\n endSpan(span, error);\n }\n}\n\n// ---- RedisInstrumentation (wrapper) ----\n\nexport class RedisInstrumentation extends InstrumentationBase<RedisInstrumentationConfig> {\n private instrumentationV2_V3: RedisInstrumentationV2_V3;\n private instrumentationV4_V5: RedisInstrumentationV4_V5;\n private initialized = false;\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n this.instrumentationV2_V3 = new RedisInstrumentationV2_V3(this.getConfig());\n this.instrumentationV4_V5 = new RedisInstrumentationV4_V5(this.getConfig());\n this.initialized = true;\n }\n\n override setConfig(config: RedisInstrumentationConfig = {}): void {\n super.setConfig(config);\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.setConfig(config);\n this.instrumentationV4_V5.setConfig(config);\n }\n\n init() {}\n\n override getModuleDefinitions() {\n return [...this.instrumentationV2_V3.getModuleDefinitions(), ...this.instrumentationV4_V5.getModuleDefinitions()];\n }\n\n override setTracerProvider(tracerProvider: TracerProvider): void {\n super.setTracerProvider(tracerProvider);\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.setTracerProvider(tracerProvider);\n this.instrumentationV4_V5.setTracerProvider(tracerProvider);\n }\n\n override enable(): void {\n super.enable();\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.enable();\n this.instrumentationV4_V5.enable();\n }\n\n override disable(): void {\n super.disable();\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.disable();\n this.instrumentationV4_V5.disable();\n }\n}\n"],"names":["SPAN_STATUS_ERROR","DEBUG_BUILD","debug","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_REDIS","ATTR_NET_PEER_NAME","ATTR_NET_PEER_PORT","ATTR_DB_CONNECTION_STRING","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","ATTR_DB_STATEMENT","defaultDbStatementSerializer","startInactiveSpan","SPAN_KIND","getActiveSpan","withActiveSpan","InstrumentationNodeModuleFile"],"mappings":"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"}
1
+ {"version":3,"file":"redis-instrumentation.js","sources":["../../../../../../src/integrations/tracing/redis/vendored/redis-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/instrumentation-redis-v0.62.0/packages/instrumentation-redis\n * - Upstream version: @opentelemetry/instrumentation-redis@0.62.0\n * - Minor TypeScript adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { TracerProvider } from '@opentelemetry/api';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n debug,\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport { DB_STATEMENT, DB_SYSTEM, NET_PEER_NAME, NET_PEER_PORT } from '@sentry/conventions/attributes';\nimport { defaultDbStatementSerializer } from '@sentry/server-utils';\nimport { DEBUG_BUILD } from '../../../../debug-build';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport { ATTR_DB_CONNECTION_STRING, DB_SYSTEM_VALUE_REDIS } from './semconv';\nimport type { RedisInstrumentationConfig, RedisResponseCustomAttributeFunction } from './types';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-redis';\nconst ORIGIN = 'auto.db.otel.redis';\n\n// node-redis >= 5.12.0 publishes via diagnostics_channel, which Sentry subscribes\n// to separately, so this monkey-patching instrumentation only covers the older\n// `redis` (v2-v3), `@redis/client`/`@node-redis/client` (v1, i.e. node-redis v4)\n// and node-redis 5.0-5.11 releases.\n\n// ---- Internal types ----\n\ninterface RedisPluginClientTypes {\n connection_options?: {\n port?: string | number;\n host?: string;\n };\n address?: string;\n}\n\ninterface RedisCommand {\n command: string;\n args: string[];\n buffer_args: boolean;\n callback: (err: Error | null, reply: unknown) => void;\n call_on_write: boolean;\n}\n\ninterface MultiErrorReply extends Error {\n replies: unknown[];\n errorIndexes: Array<number>;\n}\n\ninterface OpenSpanInfo {\n span: Span;\n commandName: string;\n commandArgs: Array<string | Buffer>;\n}\n\nconst OTEL_OPEN_SPANS = Symbol('opentelemetry.instrumentation.redis.open_spans');\nconst MULTI_COMMAND_OPTIONS = Symbol('opentelemetry.instrumentation.redis.multi_command_options');\n\n// ---- shared utils ----\n\nfunction endSpan(span: Span, err: Error | null | undefined): void {\n if (err) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: err.message });\n }\n span.end();\n}\n\nfunction runResponseHook(\n responseHook: RedisResponseCustomAttributeFunction | undefined,\n span: Span,\n commandName: string,\n commandArgs: Array<string | Buffer>,\n response: unknown,\n): void {\n if (!responseHook) {\n return;\n }\n try {\n responseHook(span, commandName, commandArgs, response);\n } catch {\n // never let a user-provided response hook break instrumentation\n }\n}\n\n// ---- v4-v5 utils ----\n\nfunction removeCredentialsFromDBConnectionStringAttribute(url: string | undefined): string | undefined {\n if (typeof url !== 'string' || !url) {\n return undefined;\n }\n try {\n const u = new URL(url);\n u.searchParams.delete('user_pwd');\n u.username = '';\n u.password = '';\n return u.href;\n } catch (err) {\n DEBUG_BUILD && debug.error('failed to sanitize redis connection url', err);\n }\n return undefined;\n}\n\nfunction getClientAttributes(options: any): SpanAttributes {\n return {\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n // oxlint-disable-next-line typescript/no-deprecated\n [NET_PEER_NAME]: options?.socket?.host,\n // oxlint-disable-next-line typescript/no-deprecated\n [NET_PEER_PORT]: options?.socket?.port,\n [ATTR_DB_CONNECTION_STRING]: removeCredentialsFromDBConnectionStringAttribute(options?.url),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n}\n\n// ---- RedisInstrumentationV2_V3 ----\n\nclass RedisInstrumentationV2_V3 extends InstrumentationBase<RedisInstrumentationConfig> {\n static COMPONENT = 'redis';\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'redis',\n ['>=2.6.0 <4'],\n (moduleExports: any) => {\n if (isWrapped(moduleExports.RedisClient.prototype['internal_send_command'])) {\n this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n }\n this._wrap(moduleExports.RedisClient.prototype, 'internal_send_command', this._getPatchInternalSendCommand());\n return moduleExports;\n },\n (moduleExports: any) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n },\n ),\n ];\n }\n\n private _getPatchInternalSendCommand() {\n const instrumentation = this;\n return function internal_send_command(original: Function) {\n return function internal_send_command_trace(this: RedisPluginClientTypes, cmd: RedisCommand) {\n if (arguments.length !== 1 || typeof cmd !== 'object') {\n return original.apply(this, arguments);\n }\n const attributes: SpanAttributes = {\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_STATEMENT]: defaultDbStatementSerializer(cmd.command, cmd.args),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n if (this.connection_options) {\n // oxlint-disable-next-line typescript/no-deprecated\n attributes[NET_PEER_NAME] = this.connection_options.host;\n // oxlint-disable-next-line typescript/no-deprecated\n attributes[NET_PEER_PORT] = this.connection_options.port;\n }\n if (this.address) {\n attributes[ATTR_DB_CONNECTION_STRING] = `redis://${this.address}`;\n }\n const span = startInactiveSpan({\n name: `${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n const originalCallback = arguments[0].callback;\n if (originalCallback) {\n const parentSpan = getActiveSpan();\n arguments[0].callback = function callback(this: any, err: Error | null, reply: unknown) {\n runResponseHook(instrumentation.getConfig().responseHook, span, cmd.command, cmd.args, reply);\n endSpan(span, err);\n return withActiveSpan(parentSpan ?? null, () => originalCallback.apply(this, arguments));\n };\n }\n try {\n return original.apply(this, arguments);\n } catch (rethrow) {\n endSpan(span, rethrow as Error);\n throw rethrow;\n }\n };\n };\n }\n}\n\n// ---- RedisInstrumentationV4_V5 ----\n\nclass RedisInstrumentationV4_V5 extends InstrumentationBase<RedisInstrumentationConfig> {\n static COMPONENT = 'redis';\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n init() {\n return [\n this._getInstrumentationNodeModuleDefinition('@redis/client'),\n this._getInstrumentationNodeModuleDefinition('@node-redis/client'),\n ];\n }\n\n private _getInstrumentationNodeModuleDefinition(basePackageName: string) {\n const commanderModuleFile = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/commander.js`,\n ['^1.0.0'],\n (moduleExports: any, moduleVersion?: string) => {\n const transformCommandArguments = moduleExports.transformCommandArguments;\n if (!transformCommandArguments) {\n DEBUG_BUILD && debug.error('internal instrumentation error, missing transformCommandArguments function');\n return moduleExports;\n }\n const functionToPatch = moduleVersion?.startsWith('1.0.') ? 'extendWithCommands' : 'attachCommands';\n if (isWrapped(moduleExports?.[functionToPatch])) {\n this._unwrap(moduleExports, functionToPatch);\n }\n this._wrap(moduleExports, functionToPatch, this._getPatchExtendWithCommands(transformCommandArguments));\n return moduleExports;\n },\n (moduleExports: any) => {\n if (isWrapped(moduleExports?.extendWithCommands)) {\n this._unwrap(moduleExports, 'extendWithCommands');\n }\n if (isWrapped(moduleExports?.attachCommands)) {\n this._unwrap(moduleExports, 'attachCommands');\n }\n },\n );\n\n const multiCommanderModule = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/client/multi-command.js`,\n ['^1.0.0', '>=5.0.0 <5.12.0'],\n (moduleExports: any) => {\n const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n this._unwrap(redisClientMultiCommandPrototype, 'exec');\n }\n this._wrap(redisClientMultiCommandPrototype, 'exec', this._getPatchMultiCommandsExec());\n if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n }\n this._wrap(redisClientMultiCommandPrototype, 'execAsPipeline', this._getPatchMultiCommandsExec());\n if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n }\n this._wrap(redisClientMultiCommandPrototype, 'addCommand', this._getPatchMultiCommandsAddCommand());\n return moduleExports;\n },\n (moduleExports: any) => {\n const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n this._unwrap(redisClientMultiCommandPrototype, 'exec');\n }\n if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n }\n if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n }\n },\n );\n\n const clientIndexModule = new InstrumentationNodeModuleFile(\n `${basePackageName}/dist/lib/client/index.js`,\n ['^1.0.0', '>=5.0.0 <5.12.0'],\n (moduleExports: any) => {\n const redisClientPrototype = moduleExports?.default?.prototype;\n if (redisClientPrototype?.multi) {\n if (isWrapped(redisClientPrototype?.multi)) {\n this._unwrap(redisClientPrototype, 'multi');\n }\n this._wrap(redisClientPrototype, 'multi', this._getPatchRedisClientMulti());\n }\n if (redisClientPrototype?.MULTI) {\n if (isWrapped(redisClientPrototype?.MULTI)) {\n this._unwrap(redisClientPrototype, 'MULTI');\n }\n this._wrap(redisClientPrototype, 'MULTI', this._getPatchRedisClientMulti());\n }\n if (isWrapped(redisClientPrototype?.sendCommand)) {\n this._unwrap(redisClientPrototype, 'sendCommand');\n }\n this._wrap(redisClientPrototype, 'sendCommand', this._getPatchRedisClientSendCommand());\n if (isWrapped(redisClientPrototype?.connect)) {\n this._unwrap(redisClientPrototype, 'connect');\n }\n this._wrap(redisClientPrototype, 'connect', this._getPatchedClientConnect());\n return moduleExports;\n },\n (moduleExports: any) => {\n const redisClientPrototype = moduleExports?.default?.prototype;\n if (isWrapped(redisClientPrototype?.multi)) {\n this._unwrap(redisClientPrototype, 'multi');\n }\n if (isWrapped(redisClientPrototype?.MULTI)) {\n this._unwrap(redisClientPrototype, 'MULTI');\n }\n if (isWrapped(redisClientPrototype?.sendCommand)) {\n this._unwrap(redisClientPrototype, 'sendCommand');\n }\n if (isWrapped(redisClientPrototype?.connect)) {\n this._unwrap(redisClientPrototype, 'connect');\n }\n },\n );\n\n return new InstrumentationNodeModuleDefinition(\n basePackageName,\n ['^1.0.0', '>=5.0.0 <5.12.0'],\n (moduleExports: any) => moduleExports,\n () => {},\n [commanderModuleFile, multiCommanderModule, clientIndexModule],\n );\n }\n\n private _getPatchExtendWithCommands(transformCommandArguments: Function) {\n const plugin = this;\n return function extendWithCommandsPatchWrapper(original: Function) {\n return function extendWithCommandsPatch(this: any, config: any) {\n if (config?.BaseClass?.name !== 'RedisClient') {\n return original.apply(this, arguments);\n }\n const origExecutor = config.executor;\n config.executor = function (this: any, command: any, args: any) {\n const redisCommandArguments = transformCommandArguments(command, args).args;\n return plugin._traceClientCommand(origExecutor, this, arguments, redisCommandArguments);\n };\n return original.apply(this, arguments);\n };\n };\n }\n\n private _getPatchMultiCommandsExec() {\n const plugin = this;\n return function execPatchWrapper(original: Function) {\n return function execPatch(this: any) {\n const execRes = original.apply(this, arguments);\n if (typeof execRes?.then !== 'function') {\n DEBUG_BUILD && debug.error('non-promise result when patching exec/execAsPipeline');\n return execRes;\n }\n return execRes\n .then((redisRes: unknown[]) => {\n const openSpans: OpenSpanInfo[] = this[OTEL_OPEN_SPANS];\n plugin._endSpansWithRedisReplies(openSpans, redisRes);\n return redisRes;\n })\n .catch((err: any) => {\n const openSpans: OpenSpanInfo[] = this[OTEL_OPEN_SPANS];\n if (!openSpans) {\n DEBUG_BUILD && debug.error('cannot find open spans to end for multi/pipeline');\n } else {\n const replies =\n err.constructor.name === 'MultiErrorReply'\n ? (err as MultiErrorReply).replies\n : new Array(openSpans.length).fill(err);\n plugin._endSpansWithRedisReplies(openSpans, replies);\n }\n return Promise.reject(err);\n });\n };\n };\n }\n\n private _getPatchMultiCommandsAddCommand() {\n const plugin = this;\n return function addCommandWrapper(original: Function) {\n return function addCommandPatch(this: any, args: any) {\n return plugin._traceClientCommand(original, this, arguments, args);\n };\n };\n }\n\n private _getPatchRedisClientMulti() {\n return function multiPatchWrapper(original: Function) {\n return function multiPatch(this: any) {\n const multiRes: any = original.apply(this, arguments);\n multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n return multiRes;\n };\n };\n }\n\n private _getPatchRedisClientSendCommand() {\n const plugin = this;\n return function sendCommandWrapper(original: Function) {\n return function sendCommandPatch(this: any, args: any) {\n return plugin._traceClientCommand(original, this, arguments, args);\n };\n };\n }\n\n private _getPatchedClientConnect() {\n return function connectWrapper(original: Function) {\n return function patchedConnect(this: any) {\n const attributes = getClientAttributes(this.options);\n const span = startInactiveSpan({\n name: `${RedisInstrumentationV4_V5.COMPONENT}-connect`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n const res = withActiveSpan(span, () => original.apply(this));\n return res.then(\n (result: any) => {\n span.end();\n return result;\n },\n (error: Error) => {\n endSpan(span, error);\n return Promise.reject(error);\n },\n );\n };\n };\n }\n\n _traceClientCommand(\n origFunction: Function,\n origThis: any,\n origArguments: IArguments,\n redisCommandArguments: Array<string | Buffer>,\n ): any {\n const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n const commandName = redisCommandArguments[0] as string;\n const commandArgs = redisCommandArguments.slice(1);\n const attributes = getClientAttributes(clientOptions);\n const dbStatement = defaultDbStatementSerializer(commandName, commandArgs);\n if (dbStatement != null) {\n // oxlint-disable-next-line typescript/no-deprecated\n attributes[DB_STATEMENT] = dbStatement;\n }\n const span = startInactiveSpan({\n name: `${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n const res = withActiveSpan(span, () => origFunction.apply(origThis, origArguments));\n if (res instanceof Promise) {\n res.then(\n (redisRes: unknown) => {\n this._endSpanWithResponse(span, commandName, commandArgs, redisRes, undefined);\n },\n (err: Error) => {\n this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n },\n );\n } else {\n const redisClientMultiCommand: any = res;\n redisClientMultiCommand[OTEL_OPEN_SPANS] = redisClientMultiCommand[OTEL_OPEN_SPANS] || [];\n redisClientMultiCommand[OTEL_OPEN_SPANS].push({\n span,\n commandName,\n commandArgs,\n });\n }\n return res;\n }\n\n _endSpansWithRedisReplies(openSpans: OpenSpanInfo[] | undefined, replies: unknown[]): void {\n if (!openSpans) {\n DEBUG_BUILD && debug.error('cannot find open spans to end for redis multi/pipeline');\n return;\n }\n if (replies.length !== openSpans.length) {\n DEBUG_BUILD && debug.error('number of multi command spans does not match response from redis');\n return;\n }\n for (let i = 0; i < openSpans.length; i++) {\n const { span, commandName, commandArgs } = openSpans[i]!;\n const currCommandRes = replies[i];\n const [res, err] = currCommandRes instanceof Error ? [null, currCommandRes] : [currCommandRes, undefined];\n this._endSpanWithResponse(span, commandName, commandArgs, res, err);\n }\n }\n\n _endSpanWithResponse(\n span: Span,\n commandName: string,\n commandArgs: Array<string | Buffer>,\n response: unknown,\n error: Error | null | undefined,\n ): void {\n if (!error) {\n runResponseHook(this.getConfig().responseHook, span, commandName, commandArgs, response);\n }\n endSpan(span, error);\n }\n}\n\n// ---- RedisInstrumentation (wrapper) ----\n\nexport class RedisInstrumentation extends InstrumentationBase<RedisInstrumentationConfig> {\n private instrumentationV2_V3: RedisInstrumentationV2_V3;\n private instrumentationV4_V5: RedisInstrumentationV4_V5;\n private initialized = false;\n\n constructor(config: RedisInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n this.instrumentationV2_V3 = new RedisInstrumentationV2_V3(this.getConfig());\n this.instrumentationV4_V5 = new RedisInstrumentationV4_V5(this.getConfig());\n this.initialized = true;\n }\n\n override setConfig(config: RedisInstrumentationConfig = {}): void {\n super.setConfig(config);\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.setConfig(config);\n this.instrumentationV4_V5.setConfig(config);\n }\n\n init() {}\n\n override getModuleDefinitions() {\n return [...this.instrumentationV2_V3.getModuleDefinitions(), ...this.instrumentationV4_V5.getModuleDefinitions()];\n }\n\n override setTracerProvider(tracerProvider: TracerProvider): void {\n super.setTracerProvider(tracerProvider);\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.setTracerProvider(tracerProvider);\n this.instrumentationV4_V5.setTracerProvider(tracerProvider);\n }\n\n override enable(): void {\n super.enable();\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.enable();\n this.instrumentationV4_V5.enable();\n }\n\n override disable(): void {\n super.disable();\n if (!this.initialized) {\n return;\n }\n this.instrumentationV2_V3.disable();\n this.instrumentationV4_V5.disable();\n }\n}\n"],"names":["SPAN_STATUS_ERROR","DEBUG_BUILD","debug","DB_SYSTEM","DB_SYSTEM_VALUE_REDIS","NET_PEER_NAME","NET_PEER_PORT","ATTR_DB_CONNECTION_STRING","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","attributes","DB_STATEMENT","defaultDbStatementSerializer","startInactiveSpan","SPAN_KIND","getActiveSpan","withActiveSpan","InstrumentationNodeModuleFile"],"mappings":"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"}
@@ -1,16 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const ATTR_DB_CONNECTION_STRING = "db.connection_string";
4
- const ATTR_DB_STATEMENT = "db.statement";
5
- const ATTR_DB_SYSTEM = "db.system";
6
- const ATTR_NET_PEER_NAME = "net.peer.name";
7
- const ATTR_NET_PEER_PORT = "net.peer.port";
8
4
  const DB_SYSTEM_VALUE_REDIS = "redis";
9
5
 
10
6
  exports.ATTR_DB_CONNECTION_STRING = ATTR_DB_CONNECTION_STRING;
11
- exports.ATTR_DB_STATEMENT = ATTR_DB_STATEMENT;
12
- exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
13
- exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
14
- exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
15
7
  exports.DB_SYSTEM_VALUE_REDIS = DB_SYSTEM_VALUE_REDIS;
16
8
  //# sourceMappingURL=semconv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/redis/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/instrumentation-redis-v0.62.0/packages/instrumentation-redis\n * - Upstream version: @opentelemetry/instrumentation-redis@0.62.0\n * - Minor TypeScript adjustments for this repository's compiler settings\n */\n/* eslint-disable -- vendored @opentelemetry/instrumentation-redis */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by the vendored redis/ioredis instrumentations.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n// Deprecated constants kept for backwards compatibility with older semconv\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string';\nexport const ATTR_DB_STATEMENT = 'db.statement';\nexport const ATTR_DB_SYSTEM = 'db.system';\nexport const ATTR_NET_PEER_NAME = 'net.peer.name';\nexport const ATTR_NET_PEER_PORT = 'net.peer.port';\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis';\nexport const DB_SYSTEM_VALUE_REDIS = 'redis';\n"],"names":[],"mappings":";;AAkBO,MAAM,yBAAA,GAA4B;AAClC,MAAM,iBAAA,GAAoB;AAC1B,MAAM,cAAA,GAAiB;AACvB,MAAM,kBAAA,GAAqB;AAC3B,MAAM,kBAAA,GAAqB;AAE3B,MAAM,qBAAA,GAAwB;;;;;;;;;"}
1
+ {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/redis/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/instrumentation-redis-v0.62.0/packages/instrumentation-redis\n * - Upstream version: @opentelemetry/instrumentation-redis@0.62.0\n * - Minor TypeScript adjustments for this repository's compiler settings\n */\n/* eslint-disable -- vendored @opentelemetry/instrumentation-redis */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by the vendored redis/ioredis instrumentations.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n// Deprecated constants kept for backwards compatibility with older semconv\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string';\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis';\nexport const DB_SYSTEM_VALUE_REDIS = 'redis';\n"],"names":[],"mappings":";;AAkBO,MAAM,yBAAA,GAA4B;AAElC,MAAM,qBAAA,GAAwB;;;;;"}
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const events = require('events');
4
4
  const instrumentation = require('@opentelemetry/instrumentation');
5
+ const attributes = require('@sentry/conventions/attributes');
5
6
  const semconv = require('./semconv.js');
6
7
  const utils = require('./utils.js');
7
8
  const core = require('@sentry/core');
@@ -79,28 +80,28 @@ const _TediousInstrumentation = class _TediousInstrumentation extends instrument
79
80
  }
80
81
  return request2.sqlTextOrProcedure;
81
82
  })(request);
82
- const attributes = {
83
+ const attributes$1 = {
83
84
  [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.db.otel.tedious",
84
85
  // eslint-disable-next-line typescript/no-deprecated
85
- [semconv.ATTR_DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MSSQL,
86
+ [attributes.DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MSSQL,
86
87
  // eslint-disable-next-line typescript/no-deprecated
87
- [semconv.ATTR_DB_NAME]: databaseName,
88
+ [attributes.DB_NAME]: databaseName,
88
89
  // >=4 uses `authentication` object; older versions just userName and password pair
89
90
  // eslint-disable-next-line typescript/no-deprecated
90
- [semconv.ATTR_DB_USER]: this.config?.userName ?? this.config?.authentication?.options?.userName,
91
+ [attributes.DB_USER]: this.config?.userName ?? this.config?.authentication?.options?.userName,
91
92
  // eslint-disable-next-line typescript/no-deprecated
92
- [semconv.ATTR_DB_STATEMENT]: sql,
93
+ [attributes.DB_STATEMENT]: sql,
93
94
  // eslint-disable-next-line typescript/no-deprecated
94
95
  [semconv.ATTR_DB_SQL_TABLE]: request.table,
95
96
  // eslint-disable-next-line typescript/no-deprecated
96
- [semconv.ATTR_NET_PEER_NAME]: this.config?.server,
97
+ [attributes.NET_PEER_NAME]: this.config?.server,
97
98
  // eslint-disable-next-line typescript/no-deprecated
98
- [semconv.ATTR_NET_PEER_PORT]: this.config?.options?.port
99
+ [attributes.NET_PEER_PORT]: this.config?.options?.port
99
100
  };
100
101
  const span = core.startInactiveSpan({
101
102
  name: utils.getSpanName(operation, databaseName, sql, request.table),
102
103
  kind: core.SPAN_KIND.CLIENT,
103
- attributes
104
+ attributes: attributes$1
104
105
  });
105
106
  const endSpan = utils.once((err) => {
106
107
  request.removeListener("done", incrementStatementCount);
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/tedious/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-tedious\n * - Upstream version: @opentelemetry/instrumentation-tedious@0.37.0\n * - Minor TypeScript strictness adjustments\n * - Span creation migrated to the @sentry/core API; origin folded into span creation\n */\n\nimport { EventEmitter } from 'events';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport {\n DB_SYSTEM_VALUE_MSSQL,\n ATTR_DB_NAME,\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} from './semconv';\nimport type * as tedious from './tedious-types';\nimport { getSpanName, once } from './utils';\nimport type { SpanAttributes } from '@sentry/core';\nimport {\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-tedious';\n\nconst CURRENT_DATABASE = Symbol('opentelemetry.instrumentation-tedious.current-database');\n\nconst PATCHED_METHODS = ['callProcedure', 'execSql', 'execSqlBatch', 'execBulkLoad', 'prepare', 'execute'];\n\ntype UnknownFunction = (...args: any[]) => any;\ntype ApproxConnection = EventEmitter & {\n [CURRENT_DATABASE]: string;\n config: any;\n};\ntype ApproxRequest = EventEmitter & {\n sqlTextOrProcedure: string | undefined;\n callback: any;\n table: string | undefined;\n parametersByName: any;\n};\n\nfunction setDatabase(this: ApproxConnection, databaseName: string) {\n Object.defineProperty(this, CURRENT_DATABASE, {\n value: databaseName,\n writable: true,\n });\n}\n\nexport class TediousInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n static readonly COMPONENT = 'tedious';\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n TediousInstrumentation.COMPONENT,\n ['>=1.11.0 <20'],\n (moduleExports: typeof tedious) => {\n const ConnectionPrototype: any = moduleExports.Connection.prototype;\n for (const method of PATCHED_METHODS) {\n if (isWrapped(ConnectionPrototype[method])) {\n this._unwrap(ConnectionPrototype, method);\n }\n this._wrap(ConnectionPrototype, method, this._patchQuery(method) as any);\n }\n\n if (isWrapped(ConnectionPrototype.connect)) {\n this._unwrap(ConnectionPrototype, 'connect');\n }\n // oxlint-disable-next-line typescript/unbound-method\n this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n\n return moduleExports;\n },\n (moduleExports: typeof tedious) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: any = moduleExports.Connection.prototype;\n for (const method of PATCHED_METHODS) {\n this._unwrap(ConnectionPrototype, method);\n }\n this._unwrap(ConnectionPrototype, 'connect');\n },\n ),\n ];\n }\n\n private _patchConnect(original: UnknownFunction): UnknownFunction {\n return function patchedConnect(this: ApproxConnection) {\n setDatabase.call(this, this.config?.options?.database);\n\n // remove the listener first in case it's already added\n this.removeListener('databaseChange', setDatabase);\n this.on('databaseChange', setDatabase);\n\n this.once('end', () => {\n this.removeListener('databaseChange', setDatabase);\n });\n return original.apply(this, arguments as unknown as any[]);\n };\n }\n\n private _patchQuery(operation: string) {\n return (originalMethod: UnknownFunction): UnknownFunction => {\n const thisPlugin = this;\n\n function patchedMethod(this: ApproxConnection, request: ApproxRequest) {\n if (!(request instanceof EventEmitter)) {\n thisPlugin._diag.warn(`Unexpected invocation of patched ${operation} method. Span not recorded`);\n return originalMethod.apply(this, arguments as unknown as any[]);\n }\n let procCount = 0;\n let statementCount = 0;\n const incrementStatementCount = () => statementCount++;\n const incrementProcCount = () => procCount++;\n const databaseName = this[CURRENT_DATABASE];\n const sql = (request => {\n // Required for <11.0.9\n if (request.sqlTextOrProcedure === 'sp_prepare' && request.parametersByName?.stmt?.value) {\n return request.parametersByName.stmt.value;\n }\n return request.sqlTextOrProcedure;\n })(request);\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.otel.tedious',\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_MSSQL,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_NAME]: databaseName,\n // >=4 uses `authentication` object; older versions just userName and password pair\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_USER]: this.config?.userName ?? this.config?.authentication?.options?.userName,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_STATEMENT]: sql,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_SQL_TABLE]: request.table,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_NET_PEER_NAME]: this.config?.server,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_NET_PEER_PORT]: this.config?.options?.port,\n };\n const span = startInactiveSpan({\n name: getSpanName(operation, databaseName, sql, request.table),\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n\n const endSpan = once((err?: any) => {\n request.removeListener('done', incrementStatementCount);\n request.removeListener('doneInProc', incrementStatementCount);\n request.removeListener('doneProc', incrementProcCount);\n request.removeListener('error', endSpan);\n this.removeListener('end', endSpan);\n\n span.setAttribute('tedious.procedure_count', procCount);\n span.setAttribute('tedious.statement_count', statementCount);\n if (err) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: err.message,\n });\n // TODO(3290): set `error.type` attribute?\n }\n span.end();\n });\n\n request.on('done', incrementStatementCount);\n request.on('doneInProc', incrementStatementCount);\n request.on('doneProc', incrementProcCount);\n request.once('error', endSpan);\n this.on('end', endSpan);\n\n if (typeof request.callback === 'function') {\n thisPlugin._wrap(request, 'callback', thisPlugin._patchCallbackQuery(endSpan));\n } else {\n thisPlugin._diag.error('Expected request.callback to be a function');\n }\n\n return withActiveSpan(span, () => originalMethod.apply(this, arguments as unknown as any[]));\n }\n\n Object.defineProperty(patchedMethod, 'length', {\n value: originalMethod.length,\n writable: false,\n });\n\n return patchedMethod;\n };\n }\n\n private _patchCallbackQuery(endSpan: Function) {\n return (originalCallback: Function) => {\n return function (this: any, err: Error | undefined | null, _rowCount?: number, _rows?: any) {\n endSpan(err);\n return originalCallback.apply(this, arguments);\n };\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","EventEmitter","request","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MSSQL","ATTR_DB_NAME","ATTR_DB_USER","ATTR_DB_STATEMENT","ATTR_DB_SQL_TABLE","ATTR_NET_PEER_NAME","ATTR_NET_PEER_PORT","startInactiveSpan","getSpanName","SPAN_KIND","once","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/tedious/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-tedious\n * - Upstream version: @opentelemetry/instrumentation-tedious@0.37.0\n * - Minor TypeScript strictness adjustments\n * - Span creation migrated to the @sentry/core API; origin folded into span creation\n */\n\nimport { EventEmitter } from 'events';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport {\n DB_NAME,\n DB_STATEMENT,\n DB_SYSTEM,\n DB_USER,\n NET_PEER_NAME,\n NET_PEER_PORT,\n} from '@sentry/conventions/attributes';\nimport { DB_SYSTEM_VALUE_MSSQL, ATTR_DB_SQL_TABLE } from './semconv';\nimport type * as tedious from './tedious-types';\nimport { getSpanName, once } from './utils';\nimport type { SpanAttributes } from '@sentry/core';\nimport {\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-tedious';\n\nconst CURRENT_DATABASE = Symbol('opentelemetry.instrumentation-tedious.current-database');\n\nconst PATCHED_METHODS = ['callProcedure', 'execSql', 'execSqlBatch', 'execBulkLoad', 'prepare', 'execute'];\n\ntype UnknownFunction = (...args: any[]) => any;\ntype ApproxConnection = EventEmitter & {\n [CURRENT_DATABASE]: string;\n config: any;\n};\ntype ApproxRequest = EventEmitter & {\n sqlTextOrProcedure: string | undefined;\n callback: any;\n table: string | undefined;\n parametersByName: any;\n};\n\nfunction setDatabase(this: ApproxConnection, databaseName: string) {\n Object.defineProperty(this, CURRENT_DATABASE, {\n value: databaseName,\n writable: true,\n });\n}\n\nexport class TediousInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n static readonly COMPONENT = 'tedious';\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n TediousInstrumentation.COMPONENT,\n ['>=1.11.0 <20'],\n (moduleExports: typeof tedious) => {\n const ConnectionPrototype: any = moduleExports.Connection.prototype;\n for (const method of PATCHED_METHODS) {\n if (isWrapped(ConnectionPrototype[method])) {\n this._unwrap(ConnectionPrototype, method);\n }\n this._wrap(ConnectionPrototype, method, this._patchQuery(method) as any);\n }\n\n if (isWrapped(ConnectionPrototype.connect)) {\n this._unwrap(ConnectionPrototype, 'connect');\n }\n // oxlint-disable-next-line typescript/unbound-method\n this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n\n return moduleExports;\n },\n (moduleExports: typeof tedious) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: any = moduleExports.Connection.prototype;\n for (const method of PATCHED_METHODS) {\n this._unwrap(ConnectionPrototype, method);\n }\n this._unwrap(ConnectionPrototype, 'connect');\n },\n ),\n ];\n }\n\n private _patchConnect(original: UnknownFunction): UnknownFunction {\n return function patchedConnect(this: ApproxConnection) {\n setDatabase.call(this, this.config?.options?.database);\n\n // remove the listener first in case it's already added\n this.removeListener('databaseChange', setDatabase);\n this.on('databaseChange', setDatabase);\n\n this.once('end', () => {\n this.removeListener('databaseChange', setDatabase);\n });\n return original.apply(this, arguments as unknown as any[]);\n };\n }\n\n private _patchQuery(operation: string) {\n return (originalMethod: UnknownFunction): UnknownFunction => {\n const thisPlugin = this;\n\n function patchedMethod(this: ApproxConnection, request: ApproxRequest) {\n if (!(request instanceof EventEmitter)) {\n thisPlugin._diag.warn(`Unexpected invocation of patched ${operation} method. Span not recorded`);\n return originalMethod.apply(this, arguments as unknown as any[]);\n }\n let procCount = 0;\n let statementCount = 0;\n const incrementStatementCount = () => statementCount++;\n const incrementProcCount = () => procCount++;\n const databaseName = this[CURRENT_DATABASE];\n const sql = (request => {\n // Required for <11.0.9\n if (request.sqlTextOrProcedure === 'sp_prepare' && request.parametersByName?.stmt?.value) {\n return request.parametersByName.stmt.value;\n }\n return request.sqlTextOrProcedure;\n })(request);\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.otel.tedious',\n // eslint-disable-next-line typescript/no-deprecated\n [DB_SYSTEM]: DB_SYSTEM_VALUE_MSSQL,\n // eslint-disable-next-line typescript/no-deprecated\n [DB_NAME]: databaseName,\n // >=4 uses `authentication` object; older versions just userName and password pair\n // eslint-disable-next-line typescript/no-deprecated\n [DB_USER]: this.config?.userName ?? this.config?.authentication?.options?.userName,\n // eslint-disable-next-line typescript/no-deprecated\n [DB_STATEMENT]: sql,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_SQL_TABLE]: request.table,\n // eslint-disable-next-line typescript/no-deprecated\n [NET_PEER_NAME]: this.config?.server,\n // eslint-disable-next-line typescript/no-deprecated\n [NET_PEER_PORT]: this.config?.options?.port,\n };\n const span = startInactiveSpan({\n name: getSpanName(operation, databaseName, sql, request.table),\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n\n const endSpan = once((err?: any) => {\n request.removeListener('done', incrementStatementCount);\n request.removeListener('doneInProc', incrementStatementCount);\n request.removeListener('doneProc', incrementProcCount);\n request.removeListener('error', endSpan);\n this.removeListener('end', endSpan);\n\n span.setAttribute('tedious.procedure_count', procCount);\n span.setAttribute('tedious.statement_count', statementCount);\n if (err) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: err.message,\n });\n // TODO(3290): set `error.type` attribute?\n }\n span.end();\n });\n\n request.on('done', incrementStatementCount);\n request.on('doneInProc', incrementStatementCount);\n request.on('doneProc', incrementProcCount);\n request.once('error', endSpan);\n this.on('end', endSpan);\n\n if (typeof request.callback === 'function') {\n thisPlugin._wrap(request, 'callback', thisPlugin._patchCallbackQuery(endSpan));\n } else {\n thisPlugin._diag.error('Expected request.callback to be a function');\n }\n\n return withActiveSpan(span, () => originalMethod.apply(this, arguments as unknown as any[]));\n }\n\n Object.defineProperty(patchedMethod, 'length', {\n value: originalMethod.length,\n writable: false,\n });\n\n return patchedMethod;\n };\n }\n\n private _patchCallbackQuery(endSpan: Function) {\n return (originalCallback: Function) => {\n return function (this: any, err: Error | undefined | null, _rowCount?: number, _rows?: any) {\n endSpan(err);\n return originalCallback.apply(this, arguments);\n };\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","EventEmitter","request","attributes","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","DB_SYSTEM","DB_SYSTEM_VALUE_MSSQL","DB_NAME","DB_USER","DB_STATEMENT","ATTR_DB_SQL_TABLE","NET_PEER_NAME","NET_PEER_PORT","startInactiveSpan","getSpanName","SPAN_KIND","once","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":"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"}
@@ -1,20 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
- const ATTR_DB_NAME = "db.name";
4
3
  const ATTR_DB_SQL_TABLE = "db.sql.table";
5
- const ATTR_DB_STATEMENT = "db.statement";
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
  const DB_SYSTEM_VALUE_MSSQL = "mssql";
11
5
 
12
- exports.ATTR_DB_NAME = ATTR_DB_NAME;
13
6
  exports.ATTR_DB_SQL_TABLE = ATTR_DB_SQL_TABLE;
14
- exports.ATTR_DB_STATEMENT = ATTR_DB_STATEMENT;
15
- exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
16
- exports.ATTR_DB_USER = ATTR_DB_USER;
17
- exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
18
- exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
19
7
  exports.DB_SYSTEM_VALUE_MSSQL = DB_SYSTEM_VALUE_MSSQL;
20
8
  //# sourceMappingURL=semconv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/tedious/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-tedious\n * - Upstream version: @opentelemetry/instrumentation-tedious@0.37.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 `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mssql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft SQL Server\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MSSQL = 'mssql' as const;\n"],"names":[],"mappings":";;AAyBO,MAAM,YAAA,GAAe;AAWrB,MAAM,iBAAA,GAAoB;AAY1B,MAAM,iBAAA,GAAoB;AAS1B,MAAM,cAAA,GAAiB;AAYvB,MAAM,YAAA,GAAe;AAWrB,MAAM,kBAAA,GAAqB;AAW3B,MAAM,kBAAA,GAAqB;AAS3B,MAAM,qBAAA,GAAwB;;;;;;;;;;;"}
1
+ {"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/tedious/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-tedious\n * - Upstream version: @opentelemetry/instrumentation-tedious@0.37.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 `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * Enum value \"mssql\" for attribute `db.system`.\n *\n * Microsoft SQL Server\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MSSQL = 'mssql' as const;\n"],"names":[],"mappings":";;AAwBO,MAAM,iBAAA,GAAoB;AAS1B,MAAM,qBAAA,GAAwB;;;;;"}
@@ -2,14 +2,25 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const orchestrion = require('@sentry/server-utils/orchestrion');
4
4
  const register = require('@sentry/server-utils/orchestrion/register');
5
+ const cache = require('../integrations/tracing/redis/cache.js');
5
6
  const diagnosticsChannelInjection = require('./diagnosticsChannelInjection.js');
6
7
 
8
+ function diagnosticsChannelInjectionIntegrations() {
9
+ return orchestrion.channelIntegrations;
10
+ }
7
11
  function experimentalUseDiagnosticsChannelInjection() {
8
12
  diagnosticsChannelInjection.setDiagnosticsChannelInjectionLoader(() => {
9
- const integrations = [orchestrion.mysqlChannelIntegration(), orchestrion.lruMemoizerChannelIntegration()];
13
+ const integrations = Object.values(orchestrion.channelIntegrations).map((createIntegration) => createIntegration());
10
14
  const replacedOtelIntegrationNames = integrations.map((i) => i.name);
11
15
  return {
12
- integrations,
16
+ // ioredis and redis are wired separately (not in `channelIntegrations`): they need the node
17
+ // redis cache `responseHook` and only partially replace the composite OTel `Redis` integration,
18
+ // so they're kept OUT of `replacedOtelIntegrationNames` — `Redis` must stay (batch + >=5.11 native DC).
19
+ integrations: [
20
+ ...integrations,
21
+ orchestrion.ioredisChannelIntegration({ responseHook: cache.cacheResponseHook }),
22
+ orchestrion.redisChannelIntegration({ responseHook: cache.cacheResponseHook })
23
+ ],
13
24
  replacedOtelIntegrationNames,
14
25
  register: register.registerDiagnosticsChannelInjection,
15
26
  detect: orchestrion.detectOrchestrionSetup
@@ -17,5 +28,6 @@ function experimentalUseDiagnosticsChannelInjection() {
17
28
  });
18
29
  }
19
30
 
31
+ exports.diagnosticsChannelInjectionIntegrations = diagnosticsChannelInjectionIntegrations;
20
32
  exports.experimentalUseDiagnosticsChannelInjection = experimentalUseDiagnosticsChannelInjection;
21
33
  //# sourceMappingURL=experimentalUseDiagnosticsChannelInjection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"experimentalUseDiagnosticsChannelInjection.js","sources":["../../../src/sdk/experimentalUseDiagnosticsChannelInjection.ts"],"sourcesContent":["import {\n mysqlChannelIntegration,\n lruMemoizerChannelIntegration,\n detectOrchestrionSetup,\n} from '@sentry/server-utils/orchestrion';\nimport { registerDiagnosticsChannelInjection } from '@sentry/server-utils/orchestrion/register';\nimport type { DiagnosticsChannelInjection } from './diagnosticsChannelInjection';\nimport { setDiagnosticsChannelInjectionLoader } from './diagnosticsChannelInjection';\n\n/**\n * EXPERIMENTAL: opt into diagnostics-channel-based auto-instrumentation.\n *\n * Call this BEFORE `Sentry.init()`:\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.experimentalUseDiagnosticsChannelInjection();\n * Sentry.init({\n * dsn: '__DSN__',\n * // other settings...\n * });\n * ```\n *\n * When this has been called AND span recording is enabled, `Sentry.init()`\n * uses the diagnostics-channel-injection-based integrations instead of the\n * OpenTelemetry ones, and installs the module hooks that inject the channels\n * (so libraries imported after `init()` publish the channel events).\n *\n * This is a standalone function rather than an `init()` option so that a\n * bundler drops all of it (and its transitive deps) when this function isn't\n * called. `init()` reads the loader registered below.\n *\n * An app that DOES call it gets the orchestrion code bundled as intended.\n *\n * In an unbundled (server-side runtime) app this eagerly loads only the small\n * subscriber/channel modules; the heavy code-transform dependencies stay lazy\n * inside `register()` and load only when injection actually runs.\n *\n * @experimental May change or be removed in any release.\n */\nexport function experimentalUseDiagnosticsChannelInjection(): void {\n setDiagnosticsChannelInjectionLoader((): DiagnosticsChannelInjection => {\n const integrations = [mysqlChannelIntegration(), lruMemoizerChannelIntegration()] as const;\n const replacedOtelIntegrationNames = integrations.map(i => i.name);\n\n return {\n integrations,\n replacedOtelIntegrationNames,\n register: registerDiagnosticsChannelInjection,\n detect: detectOrchestrionSetup,\n };\n });\n}\n"],"names":["setDiagnosticsChannelInjectionLoader","mysqlChannelIntegration","lruMemoizerChannelIntegration","registerDiagnosticsChannelInjection","detectOrchestrionSetup"],"mappings":";;;;;;AAyCO,SAAS,0CAAA,GAAmD;AACjE,EAAAA,gEAAA,CAAqC,MAAmC;AACtE,IAAA,MAAM,YAAA,GAAe,CAACC,mCAAA,EAAwB,EAAGC,2CAA+B,CAAA;AAChF,IAAA,MAAM,4BAAA,GAA+B,YAAA,CAAa,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI,CAAA;AAEjE,IAAA,OAAO;AAAA,MACL,YAAA;AAAA,MACA,4BAAA;AAAA,MACA,QAAA,EAAUC,4CAAA;AAAA,MACV,MAAA,EAAQC;AAAA,KACV;AAAA,EACF,CAAC,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"experimentalUseDiagnosticsChannelInjection.js","sources":["../../../src/sdk/experimentalUseDiagnosticsChannelInjection.ts"],"sourcesContent":["import {\n channelIntegrations,\n ioredisChannelIntegration,\n redisChannelIntegration,\n detectOrchestrionSetup,\n} from '@sentry/server-utils/orchestrion';\nimport { registerDiagnosticsChannelInjection } from '@sentry/server-utils/orchestrion/register';\nimport { cacheResponseHook } from '../integrations/tracing/redis/cache';\nimport type { DiagnosticsChannelInjection } from './diagnosticsChannelInjection';\nimport { setDiagnosticsChannelInjectionLoader } from './diagnosticsChannelInjection';\n\nexport function diagnosticsChannelInjectionIntegrations(): typeof channelIntegrations {\n return channelIntegrations;\n}\n\n/**\n * EXPERIMENTAL: opt into diagnostics-channel-based auto-instrumentation.\n *\n * Call this BEFORE `Sentry.init()`:\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.experimentalUseDiagnosticsChannelInjection();\n * Sentry.init({\n * dsn: '__DSN__',\n * // other settings...\n * });\n * ```\n *\n * When this has been called AND span recording is enabled, `Sentry.init()`\n * uses the diagnostics-channel-injection-based integrations instead of the\n * OpenTelemetry ones, and installs the module hooks that inject the channels\n * (so libraries imported after `init()` publish the channel events).\n *\n * This is a standalone function rather than an `init()` option so that a\n * bundler drops all of it (and its transitive deps) when this function isn't\n * called. `init()` reads the loader registered below.\n *\n * An app that DOES call it gets the orchestrion code bundled as intended.\n *\n * In an unbundled (server-side runtime) app this eagerly loads only the small\n * subscriber/channel modules; the heavy code-transform dependencies stay lazy\n * inside `register()` and load only when injection actually runs.\n *\n * @experimental May change or be removed in any release.\n */\nexport function experimentalUseDiagnosticsChannelInjection(): void {\n setDiagnosticsChannelInjectionLoader((): DiagnosticsChannelInjection => {\n // The registry integrations 1:1 replace the OTel integration of the same name.\n const integrations = Object.values(channelIntegrations).map(createIntegration => createIntegration());\n const replacedOtelIntegrationNames = integrations.map(i => i.name);\n\n return {\n // ioredis and redis are wired separately (not in `channelIntegrations`): they need the node\n // redis cache `responseHook` and only partially replace the composite OTel `Redis` integration,\n // so they're kept OUT of `replacedOtelIntegrationNames` — `Redis` must stay (batch + >=5.11 native DC).\n integrations: [\n ...integrations,\n ioredisChannelIntegration({ responseHook: cacheResponseHook }),\n redisChannelIntegration({ responseHook: cacheResponseHook }),\n ],\n replacedOtelIntegrationNames,\n register: registerDiagnosticsChannelInjection,\n detect: detectOrchestrionSetup,\n };\n });\n}\n"],"names":["channelIntegrations","setDiagnosticsChannelInjectionLoader","ioredisChannelIntegration","cacheResponseHook","redisChannelIntegration","registerDiagnosticsChannelInjection","detectOrchestrionSetup"],"mappings":";;;;;;;AAWO,SAAS,uCAAA,GAAsE;AACpF,EAAA,OAAOA,+BAAA;AACT;AAkCO,SAAS,0CAAA,GAAmD;AACjE,EAAAC,gEAAA,CAAqC,MAAmC;AAEtE,IAAA,MAAM,YAAA,GAAe,OAAO,MAAA,CAAOD,+BAAmB,EAAE,GAAA,CAAI,CAAA,iBAAA,KAAqB,mBAAmB,CAAA;AACpG,IAAA,MAAM,4BAAA,GAA+B,YAAA,CAAa,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI,CAAA;AAEjE,IAAA,OAAO;AAAA;AAAA;AAAA;AAAA,MAIL,YAAA,EAAc;AAAA,QACZ,GAAG,YAAA;AAAA,QACHE,qCAAA,CAA0B,EAAE,YAAA,EAAcC,uBAAA,EAAmB,CAAA;AAAA,QAC7DC,mCAAA,CAAwB,EAAE,YAAA,EAAcD,uBAAA,EAAmB;AAAA,OAC7D;AAAA,MACA,4BAAA;AAAA,MACA,QAAA,EAAUE,4CAAA;AAAA,MACV,MAAA,EAAQC;AAAA,KACV;AAAA,EACF,CAAC,CAAA;AACH;;;;;"}
@@ -3,14 +3,14 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
3
  const core = require('@sentry/core');
4
4
  const nodeCore = require('@sentry/node-core');
5
5
  const http = require('../integrations/http.js');
6
- const index$1 = require('../integrations/node-fetch/index.js');
6
+ const nodeFetch = require('../integrations/node-fetch.js');
7
7
  const index = require('../integrations/tracing/index.js');
8
8
  const diagnosticsChannelInjection = require('./diagnosticsChannelInjection.js');
9
9
  const initOtel = require('./initOtel.js');
10
10
 
11
11
  function getDefaultIntegrationsWithoutPerformance() {
12
12
  const nodeCoreIntegrations = nodeCore.getDefaultIntegrations();
13
- return nodeCoreIntegrations.filter((integration) => integration.name !== "Http" && integration.name !== "NodeFetch").concat(http.httpIntegration(), index$1.nativeNodeFetchIntegration());
13
+ return nodeCoreIntegrations.filter((integration) => integration.name !== "Http" && integration.name !== "NodeFetch").concat(http.httpIntegration(), nodeFetch.nativeNodeFetchIntegration());
14
14
  }
15
15
  function getDefaultIntegrations(options) {
16
16
  const integrations = [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/sdk/index.ts"],"sourcesContent":["import type { Integration, Options } from '@sentry/core';\nimport { applySdkMetadata, hasSpansEnabled } from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport {\n getDefaultIntegrations as getNodeCoreDefaultIntegrations,\n init as initNodeCore,\n validateOpenTelemetrySetup,\n} from '@sentry/node-core';\nimport { httpIntegration } from '../integrations/http';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { getAutoPerformanceIntegrations } from '../integrations/tracing';\nimport type { NodeOptions } from '../types';\nimport {\n isDiagnosticsChannelInjectionEnabled,\n resolveDiagnosticsChannelInjection,\n} from './diagnosticsChannelInjection';\nimport { initOpenTelemetry } from './initOtel';\n\n/**\n * Get default integrations, excluding performance.\n */\nexport function getDefaultIntegrationsWithoutPerformance(): Integration[] {\n const nodeCoreIntegrations = getNodeCoreDefaultIntegrations();\n\n // Filter out the node-core HTTP and NodeFetch integrations and replace them with Node SDK's composite versions\n return nodeCoreIntegrations\n .filter(integration => integration.name !== 'Http' && integration.name !== 'NodeFetch')\n .concat(httpIntegration(), nativeNodeFetchIntegration());\n}\n\n/** Get the default integrations for the Node SDK. */\nexport function getDefaultIntegrations(options: Options): Integration[] {\n const integrations: Integration[] = [\n ...getDefaultIntegrationsWithoutPerformance(),\n // We only add performance integrations if tracing is enabled\n // Note that this means that without tracing enabled, e.g. `expressIntegration()` will not be added\n // This means that generally request isolation will work (because that is done by httpIntegration)\n // But `transactionName` will not be set automatically\n ...(hasSpansEnabled(options) ? getAutoPerformanceIntegrations() : []),\n ];\n\n // When the app opted into diagnostics-channel injection (via\n // `experimentalUseDiagnosticsChannelInjection()`) AND span recording is\n // enabled, swap the channel-based integrations in place of OTel equivalents\n // so the two don't both instrument the same library.\n //\n // Every channel-based integration we ship today is a 1:1 replacement for an\n // OTel performance/tracing integration and produces nothing but spans (those\n // only come from `getAutoPerformanceIntegrations()` above), so it's gated on\n // span recording.\n if (isDiagnosticsChannelInjectionEnabled() && hasSpansEnabled(options)) {\n const diagnosticsChannelInjection = resolveDiagnosticsChannelInjection();\n if (diagnosticsChannelInjection) {\n const replaced = new Set(diagnosticsChannelInjection.replacedOtelIntegrationNames);\n return [...integrations.filter(i => !replaced.has(i.name)), ...diagnosticsChannelInjection.integrations];\n }\n }\n return integrations;\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Internal initialization function.\n */\nfunction _init(\n options: NodeOptions | undefined = {},\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient | undefined {\n applySdkMetadata(options, 'node');\n\n // EXPERIMENTAL: diagnostics-channel injection, opted into via\n // `experimentalUseDiagnosticsChannelInjection()`. Gated on span recording to\n // match the OTel integrations it replaces. With tracing off there are no\n // channel subscribers, so injecting is pointless work. `resolve...()` is\n // memoized, so `getDefaultIntegrations()` (below) sees the same instance.\n const diagnosticsChannelInjection =\n isDiagnosticsChannelInjectionEnabled() && hasSpansEnabled(options)\n ? resolveDiagnosticsChannelInjection()\n : undefined;\n\n // Install the channel-injection hooks as early as possible, before the app\n // imports its instrumented modules.\n if (diagnosticsChannelInjection) {\n diagnosticsChannelInjection.register();\n }\n\n const client = initNodeCore({\n ...options,\n // Only use Node SDK defaults if none provided\n defaultIntegrations: options.defaultIntegrations ?? getDefaultIntegrationsImpl(options),\n });\n\n // Add Node SDK specific OpenTelemetry setup\n if (client && !options.skipOpenTelemetrySetup) {\n initOpenTelemetry(client, {\n spanProcessors: options.openTelemetrySpanProcessors,\n });\n validateOpenTelemetrySetup();\n }\n\n // Warn about missing or doubled channel injection. Runs after the client\n // is created so the debug logger is enabled and the warning is emitted.\n if (diagnosticsChannelInjection) {\n diagnosticsChannelInjection.detect();\n }\n\n return client;\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient | undefined {\n return _init(options, () => []);\n}\n"],"names":["getNodeCoreDefaultIntegrations","httpIntegration","nativeNodeFetchIntegration","hasSpansEnabled","getAutoPerformanceIntegrations","isDiagnosticsChannelInjectionEnabled","diagnosticsChannelInjection","resolveDiagnosticsChannelInjection","applySdkMetadata","initNodeCore","initOpenTelemetry","validateOpenTelemetrySetup"],"mappings":";;;;;;;;;;AAqBO,SAAS,wCAAA,GAA0D;AACxE,EAAA,MAAM,uBAAuBA,+BAAA,EAA+B;AAG5D,EAAA,OAAO,oBAAA,CACJ,MAAA,CAAO,CAAA,WAAA,KAAe,WAAA,CAAY,SAAS,MAAA,IAAU,WAAA,CAAY,IAAA,KAAS,WAAW,CAAA,CACrF,MAAA,CAAOC,oBAAA,EAAgB,EAAGC,oCAA4B,CAAA;AAC3D;AAGO,SAAS,uBAAuB,OAAA,EAAiC;AACtE,EAAA,MAAM,YAAA,GAA8B;AAAA,IAClC,GAAG,wCAAA,EAAyC;AAAA;AAAA;AAAA;AAAA;AAAA,IAK5C,GAAIC,oBAAA,CAAgB,OAAO,CAAA,GAAIC,oCAAA,KAAmC;AAAC,GACrE;AAWA,EAAA,IAAIC,gEAAA,EAAqC,IAAKF,oBAAA,CAAgB,OAAO,CAAA,EAAG;AACtE,IAAA,MAAMG,gCAA8BC,8DAAA,EAAmC;AACvE,IAAA,IAAID,6BAAA,EAA6B;AAC/B,MAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAIA,6BAAA,CAA4B,4BAA4B,CAAA;AACjF,MAAA,OAAO,CAAC,GAAG,YAAA,CAAa,MAAA,CAAO,OAAK,CAAC,QAAA,CAAS,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,GAAGA,8BAA4B,YAAY,CAAA;AAAA,IACzG;AAAA,EACF;AACA,EAAA,OAAO,YAAA;AACT;AAKO,SAAS,IAAA,CAAK,OAAA,GAAmC,EAAC,EAA2B;AAClF,EAAA,OAAO,KAAA,CAAM,SAAS,sBAAsB,CAAA;AAC9C;AAKA,SAAS,KAAA,CACP,OAAA,GAAmC,EAAC,EACpC,0BAAA,EACwB;AACxB,EAAAE,qBAAA,CAAiB,SAAS,MAAM,CAAA;AAOhC,EAAA,MAAMF,gCACJD,gEAAA,EAAqC,IAAKF,qBAAgB,OAAO,CAAA,GAC7DI,gEAAmC,GACnC,MAAA;AAIN,EAAA,IAAID,6BAAA,EAA6B;AAC/B,IAAAA,6BAAA,CAA4B,QAAA,EAAS;AAAA,EACvC;AAEA,EAAA,MAAM,SAASG,aAAA,CAAa;AAAA,IAC1B,GAAG,OAAA;AAAA;AAAA,IAEH,mBAAA,EAAqB,OAAA,CAAQ,mBAAA,IAAuB,0BAAA,CAA2B,OAAO;AAAA,GACvF,CAAA;AAGD,EAAA,IAAI,MAAA,IAAU,CAAC,OAAA,CAAQ,sBAAA,EAAwB;AAC7C,IAAAC,0BAAA,CAAkB,MAAA,EAAQ;AAAA,MACxB,gBAAgB,OAAA,CAAQ;AAAA,KACzB,CAAA;AACD,IAAAC,mCAAA,EAA2B;AAAA,EAC7B;AAIA,EAAA,IAAIL,6BAAA,EAA6B;AAC/B,IAAAA,6BAAA,CAA4B,MAAA,EAAO;AAAA,EACrC;AAEA,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,8BAAA,CAA+B,OAAA,GAAmC,EAAC,EAA2B;AAC5G,EAAA,OAAO,KAAA,CAAM,OAAA,EAAS,MAAM,EAAE,CAAA;AAChC;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/sdk/index.ts"],"sourcesContent":["import type { Integration, Options } from '@sentry/core';\nimport { applySdkMetadata, hasSpansEnabled } from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport {\n getDefaultIntegrations as getNodeCoreDefaultIntegrations,\n init as initNodeCore,\n validateOpenTelemetrySetup,\n} from '@sentry/node-core';\nimport { httpIntegration } from '../integrations/http';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { getAutoPerformanceIntegrations } from '../integrations/tracing';\nimport type { NodeOptions } from '../types';\nimport {\n isDiagnosticsChannelInjectionEnabled,\n resolveDiagnosticsChannelInjection,\n} from './diagnosticsChannelInjection';\nimport { initOpenTelemetry } from './initOtel';\n\n/**\n * Get default integrations, excluding performance.\n */\nexport function getDefaultIntegrationsWithoutPerformance(): Integration[] {\n const nodeCoreIntegrations = getNodeCoreDefaultIntegrations();\n\n // Filter out the node-core HTTP and NodeFetch integrations and replace them with Node SDK's composite versions\n return nodeCoreIntegrations\n .filter(integration => integration.name !== 'Http' && integration.name !== 'NodeFetch')\n .concat(httpIntegration(), nativeNodeFetchIntegration());\n}\n\n/** Get the default integrations for the Node SDK. */\nexport function getDefaultIntegrations(options: Options): Integration[] {\n const integrations: Integration[] = [\n ...getDefaultIntegrationsWithoutPerformance(),\n // We only add performance integrations if tracing is enabled\n // Note that this means that without tracing enabled, e.g. `expressIntegration()` will not be added\n // This means that generally request isolation will work (because that is done by httpIntegration)\n // But `transactionName` will not be set automatically\n ...(hasSpansEnabled(options) ? getAutoPerformanceIntegrations() : []),\n ];\n\n // When the app opted into diagnostics-channel injection (via\n // `experimentalUseDiagnosticsChannelInjection()`) AND span recording is\n // enabled, swap the channel-based integrations in place of OTel equivalents\n // so the two don't both instrument the same library.\n //\n // Every channel-based integration we ship today is a 1:1 replacement for an\n // OTel performance/tracing integration and produces nothing but spans (those\n // only come from `getAutoPerformanceIntegrations()` above), so it's gated on\n // span recording.\n if (isDiagnosticsChannelInjectionEnabled() && hasSpansEnabled(options)) {\n const diagnosticsChannelInjection = resolveDiagnosticsChannelInjection();\n if (diagnosticsChannelInjection) {\n const replaced = new Set(diagnosticsChannelInjection.replacedOtelIntegrationNames);\n return [...integrations.filter(i => !replaced.has(i.name)), ...diagnosticsChannelInjection.integrations];\n }\n }\n return integrations;\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Internal initialization function.\n */\nfunction _init(\n options: NodeOptions | undefined = {},\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient | undefined {\n applySdkMetadata(options, 'node');\n\n // EXPERIMENTAL: diagnostics-channel injection, opted into via\n // `experimentalUseDiagnosticsChannelInjection()`. Gated on span recording to\n // match the OTel integrations it replaces. With tracing off there are no\n // channel subscribers, so injecting is pointless work. `resolve...()` is\n // memoized, so `getDefaultIntegrations()` (below) sees the same instance.\n const diagnosticsChannelInjection =\n isDiagnosticsChannelInjectionEnabled() && hasSpansEnabled(options)\n ? resolveDiagnosticsChannelInjection()\n : undefined;\n\n // Install the channel-injection hooks as early as possible, before the app\n // imports its instrumented modules.\n if (diagnosticsChannelInjection) {\n diagnosticsChannelInjection.register();\n }\n\n const client = initNodeCore({\n ...options,\n // Only use Node SDK defaults if none provided\n defaultIntegrations: options.defaultIntegrations ?? getDefaultIntegrationsImpl(options),\n });\n\n // Add Node SDK specific OpenTelemetry setup\n if (client && !options.skipOpenTelemetrySetup) {\n initOpenTelemetry(client, {\n spanProcessors: options.openTelemetrySpanProcessors,\n });\n validateOpenTelemetrySetup();\n }\n\n // Warn about missing or doubled channel injection. Runs after the client\n // is created so the debug logger is enabled and the warning is emitted.\n if (diagnosticsChannelInjection) {\n diagnosticsChannelInjection.detect();\n }\n\n return client;\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient | undefined {\n return _init(options, () => []);\n}\n"],"names":["getNodeCoreDefaultIntegrations","httpIntegration","nativeNodeFetchIntegration","hasSpansEnabled","getAutoPerformanceIntegrations","isDiagnosticsChannelInjectionEnabled","diagnosticsChannelInjection","resolveDiagnosticsChannelInjection","applySdkMetadata","initNodeCore","initOpenTelemetry","validateOpenTelemetrySetup"],"mappings":";;;;;;;;;;AAqBO,SAAS,wCAAA,GAA0D;AACxE,EAAA,MAAM,uBAAuBA,+BAAA,EAA+B;AAG5D,EAAA,OAAO,oBAAA,CACJ,MAAA,CAAO,CAAA,WAAA,KAAe,WAAA,CAAY,SAAS,MAAA,IAAU,WAAA,CAAY,IAAA,KAAS,WAAW,CAAA,CACrF,MAAA,CAAOC,oBAAA,EAAgB,EAAGC,sCAA4B,CAAA;AAC3D;AAGO,SAAS,uBAAuB,OAAA,EAAiC;AACtE,EAAA,MAAM,YAAA,GAA8B;AAAA,IAClC,GAAG,wCAAA,EAAyC;AAAA;AAAA;AAAA;AAAA;AAAA,IAK5C,GAAIC,oBAAA,CAAgB,OAAO,CAAA,GAAIC,oCAAA,KAAmC;AAAC,GACrE;AAWA,EAAA,IAAIC,gEAAA,EAAqC,IAAKF,oBAAA,CAAgB,OAAO,CAAA,EAAG;AACtE,IAAA,MAAMG,gCAA8BC,8DAAA,EAAmC;AACvE,IAAA,IAAID,6BAAA,EAA6B;AAC/B,MAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAIA,6BAAA,CAA4B,4BAA4B,CAAA;AACjF,MAAA,OAAO,CAAC,GAAG,YAAA,CAAa,MAAA,CAAO,OAAK,CAAC,QAAA,CAAS,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,GAAGA,8BAA4B,YAAY,CAAA;AAAA,IACzG;AAAA,EACF;AACA,EAAA,OAAO,YAAA;AACT;AAKO,SAAS,IAAA,CAAK,OAAA,GAAmC,EAAC,EAA2B;AAClF,EAAA,OAAO,KAAA,CAAM,SAAS,sBAAsB,CAAA;AAC9C;AAKA,SAAS,KAAA,CACP,OAAA,GAAmC,EAAC,EACpC,0BAAA,EACwB;AACxB,EAAAE,qBAAA,CAAiB,SAAS,MAAM,CAAA;AAOhC,EAAA,MAAMF,gCACJD,gEAAA,EAAqC,IAAKF,qBAAgB,OAAO,CAAA,GAC7DI,gEAAmC,GACnC,MAAA;AAIN,EAAA,IAAID,6BAAA,EAA6B;AAC/B,IAAAA,6BAAA,CAA4B,QAAA,EAAS;AAAA,EACvC;AAEA,EAAA,MAAM,SAASG,aAAA,CAAa;AAAA,IAC1B,GAAG,OAAA;AAAA;AAAA,IAEH,mBAAA,EAAqB,OAAA,CAAQ,mBAAA,IAAuB,0BAAA,CAA2B,OAAO;AAAA,GACvF,CAAA;AAGD,EAAA,IAAI,MAAA,IAAU,CAAC,OAAA,CAAQ,sBAAA,EAAwB;AAC7C,IAAAC,0BAAA,CAAkB,MAAA,EAAQ;AAAA,MACxB,gBAAgB,OAAA,CAAQ;AAAA,KACzB,CAAA;AACD,IAAAC,mCAAA,EAA2B;AAAA,EAC7B;AAIA,EAAA,IAAIL,6BAAA,EAA6B;AAC/B,IAAAA,6BAAA,CAA4B,MAAA,EAAO;AAAA,EACrC;AAEA,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,8BAAA,CAA+B,OAAA,GAAmC,EAAC,EAA2B;AAC5G,EAAA,OAAO,KAAA,CAAM,OAAA,EAAS,MAAM,EAAE,CAAA;AAChC;;;;;;;"}
@@ -41,6 +41,10 @@ function getPreloadMethods(integrationNames) {
41
41
  });
42
42
  }
43
43
  function setupOtel(client, options = {}) {
44
+ const shouldUseBasicTracerProvider = client.getOptions().openTelemetryBasicTracerProvider || !!options.spanProcessors?.length;
45
+ if (!shouldUseBasicTracerProvider) {
46
+ return setupSentryTracerProvider(client);
47
+ }
44
48
  const provider = new sdkTraceBase.BasicTracerProvider({
45
49
  sampler: new opentelemetry.SentrySampler(client),
46
50
  resource: opentelemetry.getSentryResource("node"),
@@ -59,6 +63,38 @@ function setupOtel(client, options = {}) {
59
63
  api.context.setGlobalContextManager(ctxManager);
60
64
  return [provider, ctxManager.getAsyncLocalStorageLookup()];
61
65
  }
66
+ function setupSentryTracerProvider(client) {
67
+ const provider = new opentelemetry.SentryTracerProvider({ resource: opentelemetry.getSentryResource("node") });
68
+ if (!api.trace.setGlobalTracerProvider(provider)) {
69
+ debugBuild.DEBUG_BUILD && core.debug.warn(
70
+ "Could not register SentryTracerProvider because another OpenTelemetry tracer provider is already registered."
71
+ );
72
+ return [void 0, void 0];
73
+ }
74
+ opentelemetry.setIsSetup("SentryTracerProvider");
75
+ api.propagation.setGlobalPropagator(new opentelemetry.SentryPropagator());
76
+ const ctxManager = new nodeCore.SentryContextManager();
77
+ api.context.setGlobalContextManager(ctxManager);
78
+ client.on("spanEnd", (span) => {
79
+ opentelemetry.applyOtelSpanData(span, { finalizeStatus: true });
80
+ });
81
+ if (core.hasSpanStreamingEnabled(client)) {
82
+ client.on("preprocessSpan", opentelemetry.backfillStreamedSpanDataFromOtel);
83
+ }
84
+ client.on("preprocessEvent", (event) => {
85
+ if (event.type !== "transaction") {
86
+ return;
87
+ }
88
+ event.contexts = {
89
+ ...event.contexts,
90
+ otel: {
91
+ resource: provider.resource?.attributes,
92
+ ...event.contexts?.otel
93
+ }
94
+ };
95
+ });
96
+ return [provider, ctxManager.getAsyncLocalStorageLookup()];
97
+ }
62
98
  function _clampSpanProcessorTimeout(maxSpanWaitDuration) {
63
99
  if (maxSpanWaitDuration == null) {
64
100
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"initOtel.js","sources":["../../../src/sdk/initOtel.ts"],"sourcesContent":["import { context, propagation, trace } from '@opentelemetry/api';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport { debug as coreDebug } from '@sentry/core';\nimport {\n initializeEsmLoader,\n type NodeClient,\n SentryContextManager,\n setupOpenTelemetryLogger,\n} from '@sentry/node-core';\nimport {\n type AsyncLocalStorageLookup,\n getSentryResource,\n SentryPropagator,\n SentrySampler,\n SentrySpanProcessor,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing';\n\n// About 277h - this must fit into new Array(len)!\nconst MAX_MAX_SPAN_WAIT_DURATION = 1_000_000;\n\ninterface AdditionalOpenTelemetryOptions {\n /** Additional SpanProcessor instances that should be used. */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Initialize OpenTelemetry for Node.\n */\nexport function initOpenTelemetry(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): void {\n if (client.getOptions().debug) {\n setupOpenTelemetryLogger();\n }\n\n const [provider, asyncLocalStorageLookup] = setupOtel(client, options);\n client.traceProvider = provider;\n client.asyncLocalStorageLookup = asyncLocalStorageLookup;\n}\n\ninterface NodePreloadOptions {\n debug?: boolean;\n integrations?: string[];\n}\n\n/**\n * Preload OpenTelemetry for Node.\n * This can be used to preload instrumentation early, but set up Sentry later.\n * By preloading the OTEL instrumentation wrapping still happens early enough that everything works.\n */\nexport function preloadOpenTelemetry(options: NodePreloadOptions = {}): void {\n const { debug } = options;\n\n if (debug) {\n coreDebug.enable();\n }\n\n initializeEsmLoader();\n\n // These are all integrations that we need to pre-load to ensure they are set up before any other code runs\n getPreloadMethods(options.integrations).forEach(fn => {\n fn();\n\n if (debug) {\n coreDebug.log(`[Sentry] Preloaded ${fn.id} instrumentation`);\n }\n });\n}\n\nfunction getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: string })[] {\n const instruments = getOpenTelemetryInstrumentationToPreload();\n\n if (!integrationNames) {\n return instruments;\n }\n\n // We match exact matches of instrumentation, but also match prefixes, e.g. \"Fastify.v5\" will match \"Fastify\"\n return instruments.filter(instrumentation => {\n const id = instrumentation.id;\n return integrationNames.some(integrationName => id === integrationName || id.startsWith(`${integrationName}.`));\n });\n}\n\n/** Just exported for tests. */\nexport function setupOtel(\n client: NodeClient,\n options: AdditionalOpenTelemetryOptions = {},\n): [BasicTracerProvider, AsyncLocalStorageLookup] {\n // Create and configure NodeTracerProvider\n const provider = new BasicTracerProvider({\n sampler: new SentrySampler(client),\n resource: getSentryResource('node'),\n forceFlushTimeoutMillis: 500,\n spanProcessors: [\n new SentrySpanProcessor({\n timeout: _clampSpanProcessorTimeout(client.getOptions().maxSpanWaitDuration),\n client,\n }),\n ...(options.spanProcessors || []),\n ],\n });\n\n // Register as globals\n trace.setGlobalTracerProvider(provider);\n propagation.setGlobalPropagator(new SentryPropagator());\n\n const ctxManager = new SentryContextManager();\n context.setGlobalContextManager(ctxManager);\n\n return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\n/** Just exported for tests. */\nexport function _clampSpanProcessorTimeout(maxSpanWaitDuration: number | undefined): number | undefined {\n if (maxSpanWaitDuration == null) {\n return undefined;\n }\n\n // We guard for a max. value here, because we create an array with this length\n // So if this value is too large, this would fail\n if (maxSpanWaitDuration > MAX_MAX_SPAN_WAIT_DURATION) {\n DEBUG_BUILD &&\n coreDebug.warn(`\\`maxSpanWaitDuration\\` is too high, using the maximum value of ${MAX_MAX_SPAN_WAIT_DURATION}`);\n return MAX_MAX_SPAN_WAIT_DURATION;\n } else if (maxSpanWaitDuration <= 0 || Number.isNaN(maxSpanWaitDuration)) {\n DEBUG_BUILD && coreDebug.warn('`maxSpanWaitDuration` must be a positive number, using default value instead.');\n return undefined;\n }\n\n return maxSpanWaitDuration;\n}\n"],"names":["setupOpenTelemetryLogger","coreDebug","initializeEsmLoader","getOpenTelemetryInstrumentationToPreload","BasicTracerProvider","SentrySampler","getSentryResource","SentrySpanProcessor","trace","propagation","SentryPropagator","SentryContextManager","context","DEBUG_BUILD"],"mappings":"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"}
1
+ {"version":3,"file":"initOtel.js","sources":["../../../src/sdk/initOtel.ts"],"sourcesContent":["import { context, propagation, trace } from '@opentelemetry/api';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport { debug as coreDebug, hasSpanStreamingEnabled } from '@sentry/core';\nimport {\n initializeEsmLoader,\n type NodeClient,\n SentryContextManager,\n setupOpenTelemetryLogger,\n} from '@sentry/node-core';\nimport {\n applyOtelSpanData,\n type AsyncLocalStorageLookup,\n backfillStreamedSpanDataFromOtel,\n getSentryResource,\n type OpenTelemetryTracerProvider,\n SentryPropagator,\n SentrySampler,\n SentrySpanProcessor,\n SentryTracerProvider,\n setIsSetup,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing';\n\n// About 277h - this must fit into new Array(len)!\nconst MAX_MAX_SPAN_WAIT_DURATION = 1_000_000;\n\ninterface AdditionalOpenTelemetryOptions {\n /** Additional SpanProcessor instances that should be used. */\n spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Initialize OpenTelemetry for Node.\n */\nexport function initOpenTelemetry(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): void {\n if (client.getOptions().debug) {\n setupOpenTelemetryLogger();\n }\n\n const [provider, asyncLocalStorageLookup] = setupOtel(client, options);\n client.traceProvider = provider;\n client.asyncLocalStorageLookup = asyncLocalStorageLookup;\n}\n\ninterface NodePreloadOptions {\n debug?: boolean;\n integrations?: string[];\n}\n\n/**\n * Preload OpenTelemetry for Node.\n * This can be used to preload instrumentation early, but set up Sentry later.\n * By preloading the OTEL instrumentation wrapping still happens early enough that everything works.\n */\nexport function preloadOpenTelemetry(options: NodePreloadOptions = {}): void {\n const { debug } = options;\n\n if (debug) {\n coreDebug.enable();\n }\n\n initializeEsmLoader();\n\n // These are all integrations that we need to pre-load to ensure they are set up before any other code runs\n getPreloadMethods(options.integrations).forEach(fn => {\n fn();\n\n if (debug) {\n coreDebug.log(`[Sentry] Preloaded ${fn.id} instrumentation`);\n }\n });\n}\n\nfunction getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: string })[] {\n const instruments = getOpenTelemetryInstrumentationToPreload();\n\n if (!integrationNames) {\n return instruments;\n }\n\n // We match exact matches of instrumentation, but also match prefixes, e.g. \"Fastify.v5\" will match \"Fastify\"\n return instruments.filter(instrumentation => {\n const id = instrumentation.id;\n return integrationNames.some(integrationName => id === integrationName || id.startsWith(`${integrationName}.`));\n });\n}\n\n/** Just exported for tests. */\nexport function setupOtel(\n client: NodeClient,\n options: AdditionalOpenTelemetryOptions = {},\n): [OpenTelemetryTracerProvider | undefined, AsyncLocalStorageLookup | undefined] {\n // Sentry's minimal tracer provider is the default. We fall back to the full OpenTelemetry SDK\n // `BasicTracerProvider` when the user explicitly opts in via `openTelemetryBasicTracerProvider`, or\n // when they provide custom `openTelemetrySpanProcessors` — those require the SDK span pipeline\n // that the minimal provider does not run.\n const shouldUseBasicTracerProvider =\n client.getOptions().openTelemetryBasicTracerProvider || !!options.spanProcessors?.length;\n\n if (!shouldUseBasicTracerProvider) {\n return setupSentryTracerProvider(client);\n }\n\n // Create and configure NodeTracerProvider\n const provider = new BasicTracerProvider({\n sampler: new SentrySampler(client),\n resource: getSentryResource('node'),\n forceFlushTimeoutMillis: 500,\n spanProcessors: [\n new SentrySpanProcessor({\n timeout: _clampSpanProcessorTimeout(client.getOptions().maxSpanWaitDuration),\n client,\n }),\n ...(options.spanProcessors || []),\n ],\n });\n\n // Register as globals\n trace.setGlobalTracerProvider(provider);\n propagation.setGlobalPropagator(new SentryPropagator());\n\n const ctxManager = new SentryContextManager();\n context.setGlobalContextManager(ctxManager);\n\n return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\nfunction setupSentryTracerProvider(\n client: NodeClient,\n): [SentryTracerProvider | undefined, AsyncLocalStorageLookup | undefined] {\n const provider = new SentryTracerProvider({ resource: getSentryResource('node') });\n\n if (!trace.setGlobalTracerProvider(provider)) {\n DEBUG_BUILD &&\n coreDebug.warn(\n 'Could not register SentryTracerProvider because another OpenTelemetry tracer provider is already registered.',\n );\n return [undefined, undefined];\n }\n\n // Only mark the provider as set up once it is actually the registered global\n // tracer provider, so setup validation doesn't skip required checks when\n // registration failed.\n setIsSetup('SentryTracerProvider');\n\n propagation.setGlobalPropagator(new SentryPropagator());\n\n const ctxManager = new SentryContextManager();\n context.setGlobalContextManager(ctxManager);\n\n client.on('spanEnd', span => {\n applyOtelSpanData(span, { finalizeStatus: true });\n });\n\n if (hasSpanStreamingEnabled(client)) {\n // Streamed spans skip the exporter, so per-span data inferred from OTel semantic conventions\n // (notably `sentry.source` on child spans, which `applyOtelSpanData` only sets on segment roots)\n // is backfilled here, reusing the exact inference the OTel SDK `SentrySpanProcessor` applies.\n client.on('preprocessSpan', backfillStreamedSpanDataFromOtel);\n }\n\n client.on('preprocessEvent', event => {\n if (event.type !== 'transaction') {\n return;\n }\n\n event.contexts = {\n ...event.contexts,\n otel: {\n resource: provider.resource?.attributes,\n ...event.contexts?.otel,\n },\n };\n });\n\n return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\n/** Just exported for tests. */\nexport function _clampSpanProcessorTimeout(maxSpanWaitDuration: number | undefined): number | undefined {\n if (maxSpanWaitDuration == null) {\n return undefined;\n }\n\n // We guard for a max. value here, because we create an array with this length\n // So if this value is too large, this would fail\n if (maxSpanWaitDuration > MAX_MAX_SPAN_WAIT_DURATION) {\n DEBUG_BUILD &&\n coreDebug.warn(`\\`maxSpanWaitDuration\\` is too high, using the maximum value of ${MAX_MAX_SPAN_WAIT_DURATION}`);\n return MAX_MAX_SPAN_WAIT_DURATION;\n } else if (maxSpanWaitDuration <= 0 || Number.isNaN(maxSpanWaitDuration)) {\n DEBUG_BUILD && coreDebug.warn('`maxSpanWaitDuration` must be a positive number, using default value instead.');\n return undefined;\n }\n\n return maxSpanWaitDuration;\n}\n"],"names":["setupOpenTelemetryLogger","coreDebug","initializeEsmLoader","getOpenTelemetryInstrumentationToPreload","BasicTracerProvider","SentrySampler","getSentryResource","SentrySpanProcessor","trace","propagation","SentryPropagator","SentryContextManager","context","SentryTracerProvider","DEBUG_BUILD","setIsSetup","applyOtelSpanData","hasSpanStreamingEnabled","backfillStreamedSpanDataFromOtel"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { httpIntegration } from './integrations/http.js';
2
- export { nativeNodeFetchIntegration } from './integrations/node-fetch/index.js';
2
+ export { nativeNodeFetchIntegration } from './integrations/node-fetch.js';
3
3
  export { fsIntegration } from './integrations/fs/index.js';
4
4
  export { expressIntegration, setupExpressErrorHandler } from './integrations/tracing/express.js';
5
5
  export { fastifyIntegration, setupFastifyErrorHandler } from './integrations/tracing/fastify/index.js';
@@ -36,7 +36,7 @@ export { unleashIntegrationShim as unleashIntegration } from './integrations/fea
36
36
  export { growthbookIntegrationShim as growthbookIntegration } from './integrations/featureFlagShims/growthbook.js';
37
37
  export { firebaseIntegration } from './integrations/tracing/firebase/firebase.js';
38
38
  export { getDefaultIntegrations, getDefaultIntegrationsWithoutPerformance, init, initWithoutDefaultIntegrations } from './sdk/index.js';
39
- export { experimentalUseDiagnosticsChannelInjection } from './sdk/experimentalUseDiagnosticsChannelInjection.js';
39
+ export { diagnosticsChannelInjectionIntegrations, experimentalUseDiagnosticsChannelInjection } from './sdk/experimentalUseDiagnosticsChannelInjection.js';
40
40
  export { initOpenTelemetry, preloadOpenTelemetry } from './sdk/initOtel.js';
41
41
  export { getAutoPerformanceIntegrations } from './integrations/tracing/index.js';
42
42
  export { setOpenTelemetryContextAsyncContextStrategy as setNodeAsyncContextStrategy } from '@sentry/opentelemetry';