@sentry/node 10.58.0 → 10.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/build/cjs/index.js +2 -0
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/integrations/fs/index.js +3 -84
  4. package/build/cjs/integrations/fs/index.js.map +1 -1
  5. package/build/cjs/integrations/fs/vendored/constants.js.map +1 -1
  6. package/build/cjs/integrations/fs/vendored/instrumentation.js +145 -175
  7. package/build/cjs/integrations/fs/vendored/instrumentation.js.map +1 -1
  8. package/build/cjs/integrations/fs/vendored/utils.js.map +1 -1
  9. package/build/cjs/integrations/node-fetch/vendored/undici.js.map +1 -1
  10. package/build/cjs/integrations/tracing/amqplib/vendored/amqplib.js.map +1 -1
  11. package/build/cjs/integrations/tracing/amqplib/vendored/semconv-obsolete.js.map +1 -1
  12. package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  13. package/build/cjs/integrations/tracing/amqplib/vendored/types.js.map +1 -1
  14. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  15. package/build/cjs/integrations/tracing/connect/index.js +0 -21
  16. package/build/cjs/integrations/tracing/connect/index.js.map +1 -1
  17. package/build/cjs/integrations/tracing/connect/vendored/enums/AttributeNames.js +0 -6
  18. package/build/cjs/integrations/tracing/connect/vendored/enums/AttributeNames.js.map +1 -1
  19. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +33 -42
  20. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  21. package/build/cjs/integrations/tracing/connect/vendored/internal-types.js.map +1 -1
  22. package/build/cjs/integrations/tracing/connect/vendored/utils.js +3 -2
  23. package/build/cjs/integrations/tracing/connect/vendored/utils.js.map +1 -1
  24. package/build/cjs/integrations/tracing/dataloader/vendored/instrumentation.js.map +1 -1
  25. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +1 -1
  26. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  27. package/build/cjs/integrations/tracing/fastify/vendored/instrumentation.js.map +1 -1
  28. package/build/cjs/integrations/tracing/genericPool/index.js +1 -15
  29. package/build/cjs/integrations/tracing/genericPool/index.js.map +1 -1
  30. package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js +30 -18
  31. package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js.map +1 -1
  32. package/build/cjs/integrations/tracing/graphql/index.js +1 -51
  33. package/build/cjs/integrations/tracing/graphql/index.js.map +1 -1
  34. package/build/cjs/integrations/tracing/graphql/vendored/enum.js.map +1 -1
  35. package/build/cjs/integrations/tracing/graphql/vendored/enums/AttributeNames.js +0 -2
  36. package/build/cjs/integrations/tracing/graphql/vendored/enums/AttributeNames.js.map +1 -1
  37. package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js +67 -57
  38. package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  39. package/build/cjs/integrations/tracing/graphql/vendored/internal-types.js.map +1 -1
  40. package/build/cjs/integrations/tracing/graphql/vendored/symbols.js.map +1 -1
  41. package/build/cjs/integrations/tracing/graphql/vendored/utils.js +28 -62
  42. package/build/cjs/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  43. package/build/cjs/integrations/tracing/hapi/index.js +0 -17
  44. package/build/cjs/integrations/tracing/hapi/index.js.map +1 -1
  45. package/build/cjs/integrations/tracing/hapi/vendored/enums/AttributeNames.js.map +1 -1
  46. package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js +28 -45
  47. package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js.map +1 -1
  48. package/build/cjs/integrations/tracing/hapi/vendored/internal-types.js.map +1 -1
  49. package/build/cjs/integrations/tracing/hapi/vendored/semconv.js.map +1 -1
  50. package/build/cjs/integrations/tracing/hapi/vendored/utils.js +4 -9
  51. package/build/cjs/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  52. package/build/cjs/integrations/tracing/index.js +1 -0
  53. package/build/cjs/integrations/tracing/index.js.map +1 -1
  54. package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  55. package/build/cjs/integrations/tracing/kafka/vendored/internal-types.js.map +1 -1
  56. package/build/cjs/integrations/tracing/kafka/vendored/propagator.js.map +1 -1
  57. package/build/cjs/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  58. package/build/cjs/integrations/tracing/knex/index.js +2 -17
  59. package/build/cjs/integrations/tracing/knex/index.js.map +1 -1
  60. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +65 -93
  61. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  62. package/build/cjs/integrations/tracing/knex/vendored/semconv.js +2 -0
  63. package/build/cjs/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  64. package/build/cjs/integrations/tracing/knex/vendored/utils.js +2 -15
  65. package/build/cjs/integrations/tracing/knex/vendored/utils.js.map +1 -1
  66. package/build/cjs/integrations/tracing/koa/index.js +1 -24
  67. package/build/cjs/integrations/tracing/koa/index.js.map +1 -1
  68. package/build/cjs/integrations/tracing/koa/vendored/enums/AttributeNames.js.map +1 -1
  69. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +29 -41
  70. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  71. package/build/cjs/integrations/tracing/koa/vendored/internal-types.js.map +1 -1
  72. package/build/cjs/integrations/tracing/koa/vendored/types.js.map +1 -1
  73. package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
  74. package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  75. package/build/cjs/integrations/tracing/mongo/index.js +1 -42
  76. package/build/cjs/integrations/tracing/mongo/index.js.map +1 -1
  77. package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js +12 -562
  78. package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js.map +1 -1
  79. package/build/cjs/integrations/tracing/mongo/vendored/internal-types.js.map +1 -1
  80. package/build/cjs/integrations/tracing/mongo/vendored/patches.js +151 -0
  81. package/build/cjs/integrations/tracing/mongo/vendored/patches.js.map +1 -0
  82. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -4
  83. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  84. package/build/cjs/integrations/tracing/mongo/vendored/utils.js +153 -0
  85. package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -0
  86. package/build/cjs/integrations/tracing/mongoose/index.js +1 -8
  87. package/build/cjs/integrations/tracing/mongoose/index.js.map +1 -1
  88. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +56 -203
  89. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  90. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -4
  91. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  92. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +19 -49
  93. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  94. package/build/cjs/integrations/tracing/mysql/vendored/AttributeNames.js.map +1 -1
  95. package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  96. package/build/cjs/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  97. package/build/cjs/integrations/tracing/mysql/vendored/utils.js.map +1 -1
  98. package/build/cjs/integrations/tracing/mysql2/index.js +1 -8
  99. package/build/cjs/integrations/tracing/mysql2/index.js.map +1 -1
  100. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +21 -59
  101. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  102. package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  103. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js +14 -33
  104. package/build/cjs/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  105. package/build/cjs/integrations/tracing/postgres/index.js +0 -4
  106. package/build/cjs/integrations/tracing/postgres/index.js.map +1 -1
  107. package/build/cjs/integrations/tracing/postgres/vendored/enums/AttributeNames.js +0 -1
  108. package/build/cjs/integrations/tracing/postgres/vendored/enums/AttributeNames.js.map +1 -1
  109. package/build/cjs/integrations/tracing/postgres/vendored/enums/SpanNames.js.map +1 -1
  110. package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js +51 -261
  111. package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js.map +1 -1
  112. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js +0 -12
  113. package/build/cjs/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  114. package/build/cjs/integrations/tracing/postgres/vendored/utils.js +43 -167
  115. package/build/cjs/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  116. package/build/cjs/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +1 -1
  117. package/build/cjs/integrations/tracing/prisma/vendored/constants.js.map +1 -1
  118. package/build/cjs/integrations/tracing/prisma/vendored/global.js.map +1 -1
  119. package/build/cjs/integrations/tracing/prisma/vendored/instrumentation.js.map +1 -1
  120. package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
  121. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +89 -160
  122. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  123. package/build/cjs/integrations/tracing/redis/vendored/redis-common.js.map +1 -1
  124. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +92 -231
  125. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  126. package/build/cjs/integrations/tracing/redis/vendored/semconv.js +0 -2
  127. package/build/cjs/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  128. package/build/cjs/integrations/tracing/tedious/index.js +1 -25
  129. package/build/cjs/integrations/tracing/tedious/index.js.map +1 -1
  130. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js +25 -76
  131. package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  132. package/build/cjs/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  133. package/build/cjs/integrations/tracing/tedious/vendored/utils.js.map +1 -1
  134. package/build/cjs/sdk/diagnosticsChannelInjection.js +21 -0
  135. package/build/cjs/sdk/diagnosticsChannelInjection.js.map +1 -0
  136. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +19 -0
  137. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -0
  138. package/build/cjs/sdk/index.js +17 -1
  139. package/build/cjs/sdk/index.js.map +1 -1
  140. package/build/esm/index.js +1 -0
  141. package/build/esm/index.js.map +1 -1
  142. package/build/esm/integrations/fs/index.js +4 -85
  143. package/build/esm/integrations/fs/index.js.map +1 -1
  144. package/build/esm/integrations/fs/vendored/constants.js.map +1 -1
  145. package/build/esm/integrations/fs/vendored/instrumentation.js +147 -177
  146. package/build/esm/integrations/fs/vendored/instrumentation.js.map +1 -1
  147. package/build/esm/integrations/fs/vendored/utils.js.map +1 -1
  148. package/build/esm/integrations/node-fetch/vendored/undici.js.map +1 -1
  149. package/build/esm/integrations/tracing/amqplib/vendored/amqplib.js.map +1 -1
  150. package/build/esm/integrations/tracing/amqplib/vendored/semconv-obsolete.js.map +1 -1
  151. package/build/esm/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
  152. package/build/esm/integrations/tracing/amqplib/vendored/types.js.map +1 -1
  153. package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  154. package/build/esm/integrations/tracing/connect/index.js +1 -22
  155. package/build/esm/integrations/tracing/connect/index.js.map +1 -1
  156. package/build/esm/integrations/tracing/connect/vendored/enums/AttributeNames.js +1 -6
  157. package/build/esm/integrations/tracing/connect/vendored/enums/AttributeNames.js.map +1 -1
  158. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +36 -44
  159. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  160. package/build/esm/integrations/tracing/connect/vendored/internal-types.js.map +1 -1
  161. package/build/esm/integrations/tracing/connect/vendored/utils.js +3 -2
  162. package/build/esm/integrations/tracing/connect/vendored/utils.js.map +1 -1
  163. package/build/esm/integrations/tracing/dataloader/vendored/instrumentation.js.map +1 -1
  164. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +1 -1
  165. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  166. package/build/esm/integrations/tracing/fastify/vendored/instrumentation.js.map +1 -1
  167. package/build/esm/integrations/tracing/genericPool/index.js +3 -17
  168. package/build/esm/integrations/tracing/genericPool/index.js.map +1 -1
  169. package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js +31 -19
  170. package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js.map +1 -1
  171. package/build/esm/integrations/tracing/graphql/index.js +3 -53
  172. package/build/esm/integrations/tracing/graphql/index.js.map +1 -1
  173. package/build/esm/integrations/tracing/graphql/vendored/enum.js.map +1 -1
  174. package/build/esm/integrations/tracing/graphql/vendored/enums/AttributeNames.js +0 -2
  175. package/build/esm/integrations/tracing/graphql/vendored/enums/AttributeNames.js.map +1 -1
  176. package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js +69 -59
  177. package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  178. package/build/esm/integrations/tracing/graphql/vendored/internal-types.js.map +1 -1
  179. package/build/esm/integrations/tracing/graphql/vendored/symbols.js.map +1 -1
  180. package/build/esm/integrations/tracing/graphql/vendored/utils.js +29 -62
  181. package/build/esm/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  182. package/build/esm/integrations/tracing/hapi/index.js +1 -18
  183. package/build/esm/integrations/tracing/hapi/index.js.map +1 -1
  184. package/build/esm/integrations/tracing/hapi/vendored/enums/AttributeNames.js.map +1 -1
  185. package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js +30 -47
  186. package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js.map +1 -1
  187. package/build/esm/integrations/tracing/hapi/vendored/internal-types.js.map +1 -1
  188. package/build/esm/integrations/tracing/hapi/vendored/semconv.js.map +1 -1
  189. package/build/esm/integrations/tracing/hapi/vendored/utils.js +5 -10
  190. package/build/esm/integrations/tracing/hapi/vendored/utils.js.map +1 -1
  191. package/build/esm/integrations/tracing/index.js +1 -0
  192. package/build/esm/integrations/tracing/index.js.map +1 -1
  193. package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
  194. package/build/esm/integrations/tracing/kafka/vendored/internal-types.js.map +1 -1
  195. package/build/esm/integrations/tracing/kafka/vendored/propagator.js.map +1 -1
  196. package/build/esm/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
  197. package/build/esm/integrations/tracing/knex/index.js +4 -19
  198. package/build/esm/integrations/tracing/knex/index.js.map +1 -1
  199. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +66 -94
  200. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  201. package/build/esm/integrations/tracing/knex/vendored/semconv.js +2 -1
  202. package/build/esm/integrations/tracing/knex/vendored/semconv.js.map +1 -1
  203. package/build/esm/integrations/tracing/knex/vendored/utils.js +3 -15
  204. package/build/esm/integrations/tracing/knex/vendored/utils.js.map +1 -1
  205. package/build/esm/integrations/tracing/koa/index.js +3 -26
  206. package/build/esm/integrations/tracing/koa/index.js.map +1 -1
  207. package/build/esm/integrations/tracing/koa/vendored/enums/AttributeNames.js.map +1 -1
  208. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +31 -43
  209. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  210. package/build/esm/integrations/tracing/koa/vendored/internal-types.js.map +1 -1
  211. package/build/esm/integrations/tracing/koa/vendored/types.js.map +1 -1
  212. package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
  213. package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  214. package/build/esm/integrations/tracing/mongo/index.js +3 -43
  215. package/build/esm/integrations/tracing/mongo/index.js.map +1 -1
  216. package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js +13 -563
  217. package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js.map +1 -1
  218. package/build/esm/integrations/tracing/mongo/vendored/internal-types.js.map +1 -1
  219. package/build/esm/integrations/tracing/mongo/vendored/patches.js +143 -0
  220. package/build/esm/integrations/tracing/mongo/vendored/patches.js.map +1 -0
  221. package/build/esm/integrations/tracing/mongo/vendored/semconv.js +1 -3
  222. package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
  223. package/build/esm/integrations/tracing/mongo/vendored/utils.js +146 -0
  224. package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -0
  225. package/build/esm/integrations/tracing/mongoose/index.js +2 -9
  226. package/build/esm/integrations/tracing/mongoose/index.js.map +1 -1
  227. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +59 -206
  228. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  229. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +1 -3
  230. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
  231. package/build/esm/integrations/tracing/mongoose/vendored/utils.js +20 -50
  232. package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  233. package/build/esm/integrations/tracing/mysql/vendored/AttributeNames.js.map +1 -1
  234. package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
  235. package/build/esm/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
  236. package/build/esm/integrations/tracing/mysql/vendored/utils.js.map +1 -1
  237. package/build/esm/integrations/tracing/mysql2/index.js +2 -9
  238. package/build/esm/integrations/tracing/mysql2/index.js.map +1 -1
  239. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +26 -64
  240. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  241. package/build/esm/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
  242. package/build/esm/integrations/tracing/mysql2/vendored/utils.js +15 -34
  243. package/build/esm/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
  244. package/build/esm/integrations/tracing/postgres/index.js +1 -5
  245. package/build/esm/integrations/tracing/postgres/index.js.map +1 -1
  246. package/build/esm/integrations/tracing/postgres/vendored/enums/AttributeNames.js +0 -1
  247. package/build/esm/integrations/tracing/postgres/vendored/enums/AttributeNames.js.map +1 -1
  248. package/build/esm/integrations/tracing/postgres/vendored/enums/SpanNames.js.map +1 -1
  249. package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js +52 -262
  250. package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js.map +1 -1
  251. package/build/esm/integrations/tracing/postgres/vendored/semconv.js +1 -7
  252. package/build/esm/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
  253. package/build/esm/integrations/tracing/postgres/vendored/utils.js +44 -165
  254. package/build/esm/integrations/tracing/postgres/vendored/utils.js.map +1 -1
  255. package/build/esm/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +1 -1
  256. package/build/esm/integrations/tracing/prisma/vendored/constants.js.map +1 -1
  257. package/build/esm/integrations/tracing/prisma/vendored/global.js.map +1 -1
  258. package/build/esm/integrations/tracing/prisma/vendored/instrumentation.js.map +1 -1
  259. package/build/esm/integrations/tracing/redis/index.js.map +1 -1
  260. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +92 -163
  261. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  262. package/build/esm/integrations/tracing/redis/vendored/redis-common.js.map +1 -1
  263. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +94 -233
  264. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  265. package/build/esm/integrations/tracing/redis/vendored/semconv.js +1 -2
  266. package/build/esm/integrations/tracing/redis/vendored/semconv.js.map +1 -1
  267. package/build/esm/integrations/tracing/tedious/index.js +3 -27
  268. package/build/esm/integrations/tracing/tedious/index.js.map +1 -1
  269. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js +29 -79
  270. package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
  271. package/build/esm/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
  272. package/build/esm/integrations/tracing/tedious/vendored/utils.js.map +1 -1
  273. package/build/esm/package.json +1 -1
  274. package/build/esm/sdk/diagnosticsChannelInjection.js +17 -0
  275. package/build/esm/sdk/diagnosticsChannelInjection.js.map +1 -0
  276. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +17 -0
  277. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -0
  278. package/build/esm/sdk/index.js +17 -1
  279. package/build/esm/sdk/index.js.map +1 -1
  280. package/build/import-hook.mjs +6 -0
  281. package/build/types/index.d.ts +1 -0
  282. package/build/types/index.d.ts.map +1 -1
  283. package/build/types/integrations/fs/index.d.ts.map +1 -1
  284. package/build/types/integrations/fs/vendored/constants.d.ts.map +1 -1
  285. package/build/types/integrations/fs/vendored/instrumentation.d.ts +6 -10
  286. package/build/types/integrations/fs/vendored/instrumentation.d.ts.map +1 -1
  287. package/build/types/integrations/fs/vendored/types.d.ts +10 -15
  288. package/build/types/integrations/fs/vendored/types.d.ts.map +1 -1
  289. package/build/types/integrations/fs/vendored/utils.d.ts +2 -2
  290. package/build/types/integrations/fs/vendored/utils.d.ts.map +1 -1
  291. package/build/types/integrations/node-fetch/vendored/internal-types.d.ts.map +1 -1
  292. package/build/types/integrations/node-fetch/vendored/types.d.ts.map +1 -1
  293. package/build/types/integrations/node-fetch/vendored/undici.d.ts.map +1 -1
  294. package/build/types/integrations/tracing/amqplib/vendored/amqplib.d.ts.map +1 -1
  295. package/build/types/integrations/tracing/amqplib/vendored/semconv-obsolete.d.ts.map +1 -1
  296. package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts.map +1 -1
  297. package/build/types/integrations/tracing/amqplib/vendored/types.d.ts.map +1 -1
  298. package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +1 -1
  299. package/build/types/integrations/tracing/connect/index.d.ts.map +1 -1
  300. package/build/types/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts +0 -4
  301. package/build/types/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts.map +1 -1
  302. package/build/types/integrations/tracing/connect/vendored/instrumentation.d.ts +5 -5
  303. package/build/types/integrations/tracing/connect/vendored/instrumentation.d.ts.map +1 -1
  304. package/build/types/integrations/tracing/connect/vendored/internal-types.d.ts +2 -2
  305. package/build/types/integrations/tracing/connect/vendored/internal-types.d.ts.map +1 -1
  306. package/build/types/integrations/tracing/connect/vendored/utils.d.ts +1 -1
  307. package/build/types/integrations/tracing/connect/vendored/utils.d.ts.map +1 -1
  308. package/build/types/integrations/tracing/dataloader/vendored/instrumentation.d.ts.map +1 -1
  309. package/build/types/integrations/tracing/dataloader/vendored/types.d.ts.map +1 -1
  310. package/build/types/integrations/tracing/fastify/vendored/instrumentation.d.ts.map +1 -1
  311. package/build/types/integrations/tracing/genericPool/index.d.ts.map +1 -1
  312. package/build/types/integrations/tracing/genericPool/vendored/instrumentation.d.ts.map +1 -1
  313. package/build/types/integrations/tracing/graphql/index.d.ts.map +1 -1
  314. package/build/types/integrations/tracing/graphql/vendored/enum.d.ts.map +1 -1
  315. package/build/types/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts +1 -3
  316. package/build/types/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts.map +1 -1
  317. package/build/types/integrations/tracing/graphql/vendored/instrumentation.d.ts +7 -2
  318. package/build/types/integrations/tracing/graphql/vendored/instrumentation.d.ts.map +1 -1
  319. package/build/types/integrations/tracing/graphql/vendored/internal-types.d.ts +4 -4
  320. package/build/types/integrations/tracing/graphql/vendored/internal-types.d.ts.map +1 -1
  321. package/build/types/integrations/tracing/graphql/vendored/symbols.d.ts.map +1 -1
  322. package/build/types/integrations/tracing/graphql/vendored/types.d.ts +5 -43
  323. package/build/types/integrations/tracing/graphql/vendored/types.d.ts.map +1 -1
  324. package/build/types/integrations/tracing/graphql/vendored/utils.d.ts +8 -11
  325. package/build/types/integrations/tracing/graphql/vendored/utils.d.ts.map +1 -1
  326. package/build/types/integrations/tracing/hapi/index.d.ts.map +1 -1
  327. package/build/types/integrations/tracing/hapi/vendored/enums/AttributeNames.d.ts.map +1 -1
  328. package/build/types/integrations/tracing/hapi/vendored/instrumentation.d.ts +2 -2
  329. package/build/types/integrations/tracing/hapi/vendored/instrumentation.d.ts.map +1 -1
  330. package/build/types/integrations/tracing/hapi/vendored/internal-types.d.ts.map +1 -1
  331. package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts.map +1 -1
  332. package/build/types/integrations/tracing/hapi/vendored/utils.d.ts +3 -4
  333. package/build/types/integrations/tracing/hapi/vendored/utils.d.ts.map +1 -1
  334. package/build/types/integrations/tracing/index.d.ts.map +1 -1
  335. package/build/types/integrations/tracing/kafka/vendored/instrumentation.d.ts.map +1 -1
  336. package/build/types/integrations/tracing/kafka/vendored/internal-types.d.ts.map +1 -1
  337. package/build/types/integrations/tracing/kafka/vendored/propagator.d.ts.map +1 -1
  338. package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts.map +1 -1
  339. package/build/types/integrations/tracing/kafka/vendored/types.d.ts.map +1 -1
  340. package/build/types/integrations/tracing/knex/index.d.ts.map +1 -1
  341. package/build/types/integrations/tracing/knex/vendored/instrumentation.d.ts +8 -10
  342. package/build/types/integrations/tracing/knex/vendored/instrumentation.d.ts.map +1 -1
  343. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts +1 -0
  344. package/build/types/integrations/tracing/knex/vendored/semconv.d.ts.map +1 -1
  345. package/build/types/integrations/tracing/knex/vendored/utils.d.ts +0 -6
  346. package/build/types/integrations/tracing/knex/vendored/utils.d.ts.map +1 -1
  347. package/build/types/integrations/tracing/koa/index.d.ts.map +1 -1
  348. package/build/types/integrations/tracing/koa/vendored/enums/AttributeNames.d.ts.map +1 -1
  349. package/build/types/integrations/tracing/koa/vendored/instrumentation.d.ts +1 -1
  350. package/build/types/integrations/tracing/koa/vendored/instrumentation.d.ts.map +1 -1
  351. package/build/types/integrations/tracing/koa/vendored/internal-types.d.ts +4 -4
  352. package/build/types/integrations/tracing/koa/vendored/internal-types.d.ts.map +1 -1
  353. package/build/types/integrations/tracing/koa/vendored/types.d.ts +2 -39
  354. package/build/types/integrations/tracing/koa/vendored/types.d.ts.map +1 -1
  355. package/build/types/integrations/tracing/koa/vendored/utils.d.ts +3 -3
  356. package/build/types/integrations/tracing/koa/vendored/utils.d.ts.map +1 -1
  357. package/build/types/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts.map +1 -1
  358. package/build/types/integrations/tracing/mongo/index.d.ts +0 -4
  359. package/build/types/integrations/tracing/mongo/index.d.ts.map +1 -1
  360. package/build/types/integrations/tracing/mongo/vendored/instrumentation.d.ts +4 -72
  361. package/build/types/integrations/tracing/mongo/vendored/instrumentation.d.ts.map +1 -1
  362. package/build/types/integrations/tracing/mongo/vendored/internal-types.d.ts +0 -59
  363. package/build/types/integrations/tracing/mongo/vendored/internal-types.d.ts.map +1 -1
  364. package/build/types/integrations/tracing/mongo/vendored/patches.d.ts +15 -0
  365. package/build/types/integrations/tracing/mongo/vendored/patches.d.ts.map +1 -0
  366. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +0 -54
  367. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +1 -1
  368. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts +24 -0
  369. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -0
  370. package/build/types/integrations/tracing/mongoose/index.d.ts.map +1 -1
  371. package/build/types/integrations/tracing/mongoose/vendored/mongoose-types.d.ts +3 -0
  372. package/build/types/integrations/tracing/mongoose/vendored/mongoose-types.d.ts.map +1 -1
  373. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts +3 -8
  374. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
  375. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -14
  376. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +1 -1
  377. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts +4 -6
  378. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
  379. package/build/types/integrations/tracing/mysql/vendored/AttributeNames.d.ts.map +1 -1
  380. package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts.map +1 -1
  381. package/build/types/integrations/tracing/mysql/vendored/mysql-types.d.ts.map +1 -1
  382. package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts.map +1 -1
  383. package/build/types/integrations/tracing/mysql/vendored/types.d.ts.map +1 -1
  384. package/build/types/integrations/tracing/mysql/vendored/utils.d.ts.map +1 -1
  385. package/build/types/integrations/tracing/mysql2/index.d.ts.map +1 -1
  386. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts +3 -6
  387. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +1 -1
  388. package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts.map +1 -1
  389. package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts +3 -5
  390. package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts.map +1 -1
  391. package/build/types/integrations/tracing/postgres/index.d.ts.map +1 -1
  392. package/build/types/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts +0 -1
  393. package/build/types/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts.map +1 -1
  394. package/build/types/integrations/tracing/postgres/vendored/enums/SpanNames.d.ts.map +1 -1
  395. package/build/types/integrations/tracing/postgres/vendored/instrumentation.d.ts +1 -9
  396. package/build/types/integrations/tracing/postgres/vendored/instrumentation.d.ts.map +1 -1
  397. package/build/types/integrations/tracing/postgres/vendored/internal-types.d.ts +0 -2
  398. package/build/types/integrations/tracing/postgres/vendored/internal-types.d.ts.map +1 -1
  399. package/build/types/integrations/tracing/postgres/vendored/pg-pool-types.d.ts.map +1 -1
  400. package/build/types/integrations/tracing/postgres/vendored/pg-types.d.ts.map +1 -1
  401. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts +0 -50
  402. package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts.map +1 -1
  403. package/build/types/integrations/tracing/postgres/vendored/types.d.ts +2 -56
  404. package/build/types/integrations/tracing/postgres/vendored/types.d.ts.map +1 -1
  405. package/build/types/integrations/tracing/postgres/vendored/utils.d.ts +13 -26
  406. package/build/types/integrations/tracing/postgres/vendored/utils.d.ts.map +1 -1
  407. package/build/types/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts.map +1 -1
  408. package/build/types/integrations/tracing/prisma/vendored/constants.d.ts.map +1 -1
  409. package/build/types/integrations/tracing/prisma/vendored/global.d.ts.map +1 -1
  410. package/build/types/integrations/tracing/prisma/vendored/instrumentation.d.ts.map +1 -1
  411. package/build/types/integrations/tracing/prisma/vendored/types.d.ts.map +1 -1
  412. package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
  413. package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts +3 -8
  414. package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts.map +1 -1
  415. package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts.map +1 -1
  416. package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +1 -1
  417. package/build/types/integrations/tracing/redis/vendored/semconv.d.ts.map +1 -1
  418. package/build/types/integrations/tracing/redis/vendored/types.d.ts +2 -36
  419. package/build/types/integrations/tracing/redis/vendored/types.d.ts.map +1 -1
  420. package/build/types/integrations/tracing/tedious/index.d.ts.map +1 -1
  421. package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts +3 -14
  422. package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts.map +1 -1
  423. package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts.map +1 -1
  424. package/build/types/integrations/tracing/tedious/vendored/utils.d.ts.map +1 -1
  425. package/build/types/sdk/diagnosticsChannelInjection.d.ts +41 -0
  426. package/build/types/sdk/diagnosticsChannelInjection.d.ts.map +1 -0
  427. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +34 -0
  428. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +1 -0
  429. package/build/types/sdk/index.d.ts.map +1 -1
  430. package/build/types-ts3.8/index.d.ts +1 -0
  431. package/build/types-ts3.8/integrations/fs/vendored/instrumentation.d.ts +6 -10
  432. package/build/types-ts3.8/integrations/fs/vendored/types.d.ts +10 -15
  433. package/build/types-ts3.8/integrations/fs/vendored/utils.d.ts +2 -2
  434. package/build/types-ts3.8/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts +0 -4
  435. package/build/types-ts3.8/integrations/tracing/connect/vendored/instrumentation.d.ts +4 -4
  436. package/build/types-ts3.8/integrations/tracing/connect/vendored/internal-types.d.ts +2 -2
  437. package/build/types-ts3.8/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts +1 -3
  438. package/build/types-ts3.8/integrations/tracing/graphql/vendored/instrumentation.d.ts +6 -1
  439. package/build/types-ts3.8/integrations/tracing/graphql/vendored/internal-types.d.ts +3 -3
  440. package/build/types-ts3.8/integrations/tracing/graphql/vendored/types.d.ts +4 -42
  441. package/build/types-ts3.8/integrations/tracing/graphql/vendored/utils.d.ts +6 -9
  442. package/build/types-ts3.8/integrations/tracing/hapi/vendored/instrumentation.d.ts +2 -2
  443. package/build/types-ts3.8/integrations/tracing/hapi/vendored/utils.d.ts +1 -2
  444. package/build/types-ts3.8/integrations/tracing/knex/vendored/instrumentation.d.ts +8 -10
  445. package/build/types-ts3.8/integrations/tracing/knex/vendored/semconv.d.ts +1 -0
  446. package/build/types-ts3.8/integrations/tracing/knex/vendored/utils.d.ts +0 -6
  447. package/build/types-ts3.8/integrations/tracing/koa/vendored/internal-types.d.ts +4 -4
  448. package/build/types-ts3.8/integrations/tracing/koa/vendored/types.d.ts +1 -38
  449. package/build/types-ts3.8/integrations/tracing/mongo/index.d.ts +0 -4
  450. package/build/types-ts3.8/integrations/tracing/mongo/vendored/instrumentation.d.ts +4 -72
  451. package/build/types-ts3.8/integrations/tracing/mongo/vendored/internal-types.d.ts +0 -59
  452. package/build/types-ts3.8/integrations/tracing/mongo/vendored/patches.d.ts +15 -0
  453. package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +0 -54
  454. package/build/types-ts3.8/integrations/tracing/mongo/vendored/utils.d.ts +24 -0
  455. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose-types.d.ts +3 -0
  456. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose.d.ts +3 -8
  457. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -14
  458. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/utils.d.ts +4 -6
  459. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/instrumentation.d.ts +3 -6
  460. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/utils.d.ts +3 -5
  461. package/build/types-ts3.8/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts +0 -1
  462. package/build/types-ts3.8/integrations/tracing/postgres/vendored/instrumentation.d.ts +0 -8
  463. package/build/types-ts3.8/integrations/tracing/postgres/vendored/internal-types.d.ts +0 -2
  464. package/build/types-ts3.8/integrations/tracing/postgres/vendored/semconv.d.ts +0 -50
  465. package/build/types-ts3.8/integrations/tracing/postgres/vendored/types.d.ts +1 -55
  466. package/build/types-ts3.8/integrations/tracing/postgres/vendored/utils.d.ts +13 -26
  467. package/build/types-ts3.8/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts +3 -8
  468. package/build/types-ts3.8/integrations/tracing/redis/vendored/types.d.ts +2 -36
  469. package/build/types-ts3.8/integrations/tracing/tedious/vendored/instrumentation.d.ts +3 -14
  470. package/build/types-ts3.8/sdk/diagnosticsChannelInjection.d.ts +41 -0
  471. package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +34 -0
  472. package/package.json +20 -6
  473. package/build/cjs/integrations/tracing/knex/vendored/constants.js +0 -16
  474. package/build/cjs/integrations/tracing/knex/vendored/constants.js.map +0 -1
  475. package/build/cjs/integrations/tracing/postgres/vendored/internal-types.js +0 -6
  476. package/build/cjs/integrations/tracing/postgres/vendored/internal-types.js.map +0 -1
  477. package/build/cjs/integrations/tracing/utils/sql-common.js +0 -43
  478. package/build/cjs/integrations/tracing/utils/sql-common.js.map +0 -1
  479. package/build/esm/integrations/tracing/knex/vendored/constants.js +0 -13
  480. package/build/esm/integrations/tracing/knex/vendored/constants.js.map +0 -1
  481. package/build/esm/integrations/tracing/postgres/vendored/internal-types.js +0 -4
  482. package/build/esm/integrations/tracing/postgres/vendored/internal-types.js.map +0 -1
  483. package/build/esm/integrations/tracing/utils/sql-common.js +0 -41
  484. package/build/esm/integrations/tracing/utils/sql-common.js.map +0 -1
  485. package/build/types/integrations/tracing/knex/vendored/constants.d.ts +0 -3
  486. package/build/types/integrations/tracing/knex/vendored/constants.d.ts.map +0 -1
  487. package/build/types/integrations/tracing/knex/vendored/types.d.ts +0 -8
  488. package/build/types/integrations/tracing/knex/vendored/types.d.ts.map +0 -1
  489. package/build/types/integrations/tracing/mongo/vendored/types.d.ts +0 -51
  490. package/build/types/integrations/tracing/mongo/vendored/types.d.ts.map +0 -1
  491. package/build/types/integrations/tracing/mongoose/vendored/types.d.ts +0 -36
  492. package/build/types/integrations/tracing/mongoose/vendored/types.d.ts.map +0 -1
  493. package/build/types/integrations/tracing/mysql2/vendored/types.d.ts +0 -18
  494. package/build/types/integrations/tracing/mysql2/vendored/types.d.ts.map +0 -1
  495. package/build/types/integrations/tracing/tedious/vendored/types.d.ts +0 -10
  496. package/build/types/integrations/tracing/tedious/vendored/types.d.ts.map +0 -1
  497. package/build/types-ts3.8/integrations/tracing/knex/vendored/constants.d.ts +0 -3
  498. package/build/types-ts3.8/integrations/tracing/knex/vendored/types.d.ts +0 -8
  499. package/build/types-ts3.8/integrations/tracing/mongo/vendored/types.d.ts +0 -51
  500. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/types.d.ts +0 -36
  501. package/build/types-ts3.8/integrations/tracing/mysql2/vendored/types.d.ts +0 -18
  502. package/build/types-ts3.8/integrations/tracing/tedious/vendored/types.d.ts +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/fastify/vendored/instrumentation.ts"],"sourcesContent":["/*\n * MIT License\n *\n * Copyright (c) 2024-present The Fastify team <https://github.com/fastify/fastify#team>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/fastify/otel/tree/bae80d6caef4287e7f01ff3c8dc753243706ea86\n * - Upstream version: @fastify/otel@0.18.1\n * - Converted from JavaScript to TypeScript with minimal type annotations\n * - Removed `ignorePaths` / `minimatch` support (not used by the Sentry integration)\n */\n/* eslint-disable */\n\nimport * as dc from 'node:diagnostics_channel';\nimport { context, trace, SpanStatusCode, propagation, diag, type Span } from '@opentelemetry/api';\nimport {\n ATTR_HTTP_ROUTE,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_PATH,\n} from '@opentelemetry/semantic-conventions';\nimport { InstrumentationBase, type InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { setHttpServerSpanRouteAttribute } from '../../../../utils/setHttpServerSpanRouteAttribute';\n\nconst PACKAGE_VERSION = SDK_VERSION;\nconst PACKAGE_NAME = '@sentry/instrumentation-fastify';\n\nconst SUPPORTED_VERSIONS = '>=4.0.0 <6';\nconst FASTIFY_HOOKS = [\n 'onRequest',\n 'preParsing',\n 'preValidation',\n 'preHandler',\n 'preSerialization',\n 'onSend',\n 'onResponse',\n 'onError',\n];\nconst ATTRIBUTE_NAMES = {\n HOOK_NAME: 'hook.name',\n FASTIFY_TYPE: 'fastify.type',\n HOOK_CALLBACK_NAME: 'hook.callback.name',\n ROOT: 'fastify.root',\n};\nconst HOOK_TYPES = {\n ROUTE: 'route-hook',\n INSTANCE: 'hook',\n HANDLER: 'request-handler',\n};\nconst ANONYMOUS_FUNCTION_NAME = 'anonymous';\n\nconst kInstrumentation = Symbol('fastify otel instance');\nconst kRequestSpan = Symbol('fastify otel request spans');\nconst kRequestContext = Symbol('fastify otel request context');\nconst kAddHookOriginal = Symbol('fastify otel addhook original');\nconst kSetNotFoundOriginal = Symbol('fastify otel setnotfound original');\nconst kRecordExceptions = Symbol('fastify otel record exceptions');\n\nexport interface FastifyOtelInstrumentationOpts extends InstrumentationConfig {\n registerOnInitialization?: boolean;\n requestHook?: (span: Span, request: any) => void;\n lifecycleHook?: (span: Span, info: { hookName: string; request: any; handler?: string }) => void;\n recordExceptions?: boolean;\n}\n\nexport class FastifyOtelInstrumentation extends InstrumentationBase<FastifyOtelInstrumentationOpts> {\n _otelLogger: any = null;\n _requestHook: ((span: Span, request: any) => void) | null = null;\n _lifecycleHook: ((span: Span, info: any) => void) | null = null;\n _handleInitialization: ((message: any) => void) | undefined = undefined;\n\n [kRecordExceptions]: boolean = true;\n\n constructor(config: FastifyOtelInstrumentationOpts = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._otelLogger = diag.createComponentLogger({ namespace: PACKAGE_NAME });\n this[kRecordExceptions] = true;\n\n if (config?.recordExceptions != null) {\n if (typeof config.recordExceptions !== 'boolean') {\n throw new TypeError('recordExceptions must be a boolean');\n }\n\n this[kRecordExceptions] = config.recordExceptions;\n }\n if (typeof config?.requestHook === 'function') {\n this._requestHook = config.requestHook;\n }\n if (typeof config?.lifecycleHook === 'function') {\n this._lifecycleHook = config.lifecycleHook;\n }\n }\n\n enable(): any {\n if (this._handleInitialization === undefined && this.getConfig().registerOnInitialization) {\n this._handleInitialization = (message: any) => {\n this.plugin()(message.fastify, undefined, () => {});\n const emptyPlugin: any = (_: any, __: any, done: () => void) => {\n done();\n };\n emptyPlugin[Symbol.for('skip-override')] = true;\n emptyPlugin[Symbol.for('fastify.display-name')] = PACKAGE_NAME;\n message.fastify.register(emptyPlugin);\n };\n dc.subscribe('fastify.initialization', this._handleInitialization);\n }\n return super.enable();\n }\n\n disable(): any {\n if (this._handleInitialization) {\n dc.unsubscribe('fastify.initialization', this._handleInitialization);\n this._handleInitialization = undefined;\n }\n return super.disable();\n }\n\n init() {\n return [];\n }\n\n plugin(): any {\n const instrumentation = this;\n\n const pluginAny = FastifyInstrumentationPlugin as any;\n pluginAny[Symbol.for('skip-override')] = true;\n pluginAny[Symbol.for('fastify.display-name')] = PACKAGE_NAME;\n pluginAny[Symbol.for('plugin-meta')] = {\n fastify: SUPPORTED_VERSIONS,\n name: PACKAGE_NAME,\n };\n\n return FastifyInstrumentationPlugin;\n\n function FastifyInstrumentationPlugin(instance: any, _opts: any, done: () => void) {\n instance.decorate(kInstrumentation, instrumentation);\n instance.decorate(kAddHookOriginal, instance.addHook);\n instance.decorate(kSetNotFoundOriginal, instance.setNotFoundHandler);\n instance.decorateRequest('opentelemetry', function opentelemetry(this: any) {\n const ctx = this[kRequestContext];\n const span = this[kRequestSpan];\n\n return {\n enabled: this.routeOptions.config?.otel !== false,\n span,\n tracer: instrumentation.tracer,\n context: ctx,\n inject: (carrier: any, setter?: any) => {\n return propagation.inject(ctx, carrier, setter);\n },\n extract: (carrier: any, getter?: any) => {\n return propagation.extract(ctx, carrier, getter);\n },\n };\n });\n instance.decorateRequest(kRequestSpan, null);\n instance.decorateRequest(kRequestContext, null);\n\n instance.addHook('onRoute', function otelWireRoute(this: any, routeOptions: any) {\n if (routeOptions.config?.otel === false) {\n instrumentation._otelLogger.debug(\n `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it is disabled`,\n );\n\n return;\n }\n\n for (const hook of FASTIFY_HOOKS) {\n if (routeOptions[hook] != null) {\n const handlerLike = routeOptions[hook];\n\n if (typeof handlerLike === 'function') {\n routeOptions[hook] = handlerWrapper(handlerLike, hook, {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n [ATTR_HTTP_ROUTE]: routeOptions.url,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n handlerLike.name?.length > 0 ? handlerLike.name : ANONYMOUS_FUNCTION_NAME,\n });\n } else if (Array.isArray(handlerLike)) {\n const wrappedHandlers: any[] = [];\n\n for (const handler of handlerLike) {\n wrappedHandlers.push(\n handlerWrapper(handler, hook, {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n [ATTR_HTTP_ROUTE]: routeOptions.url,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n handler.name?.length > 0 ? handler.name : ANONYMOUS_FUNCTION_NAME,\n }),\n );\n }\n\n routeOptions[hook] = wrappedHandlers;\n }\n }\n }\n\n if (routeOptions.onSend != null) {\n routeOptions.onSend = Array.isArray(routeOptions.onSend)\n ? [...routeOptions.onSend, finalizeResponseSpanHook]\n : [routeOptions.onSend, finalizeResponseSpanHook];\n } else {\n routeOptions.onSend = finalizeResponseSpanHook;\n }\n\n if (routeOptions.onError != null) {\n routeOptions.onError = Array.isArray(routeOptions.onError)\n ? [...routeOptions.onError, recordErrorInSpanHook]\n : [routeOptions.onError, recordErrorInSpanHook];\n } else {\n routeOptions.onError = recordErrorInSpanHook;\n }\n\n routeOptions.handler = handlerWrapper(routeOptions.handler, 'handler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route-handler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.HANDLER,\n [ATTR_HTTP_ROUTE]: routeOptions.url,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n routeOptions.handler.name.length > 0 ? routeOptions.handler.name : ANONYMOUS_FUNCTION_NAME,\n });\n });\n\n instance.addHook(\n 'onRequest',\n function startRequestSpanHook(this: any, request: any, _reply: any, hookDone: () => void) {\n if (this[kInstrumentation].isEnabled() === false || request.routeOptions.config?.otel === false) {\n return hookDone();\n }\n\n let ctx = context.active();\n\n if (trace.getSpan(ctx) == null) {\n ctx = propagation.extract(ctx, request.headers);\n }\n\n if (request.routeOptions.url != null) {\n setHttpServerSpanRouteAttribute(request.routeOptions.url);\n }\n\n const attributes: Record<string, string> = {\n [ATTRIBUTE_NAMES.ROOT]: PACKAGE_NAME,\n [ATTR_HTTP_REQUEST_METHOD]: request.method,\n [ATTR_URL_PATH]: request.url,\n };\n\n if (request.routeOptions.url != null) {\n attributes[ATTR_HTTP_ROUTE] = request.routeOptions.url;\n }\n\n const span = this[kInstrumentation].tracer.startSpan('request', { attributes }, ctx);\n\n try {\n this[kInstrumentation]._requestHook?.(span, request);\n } catch (err) {\n this[kInstrumentation]._otelLogger.error({ err }, 'requestHook threw');\n }\n\n request[kRequestContext] = trace.setSpan(ctx, span);\n request[kRequestSpan] = span;\n\n context.with(request[kRequestContext], () => {\n hookDone();\n });\n },\n );\n\n instance.addHook('onResponse', function finalizeNotFoundSpanHook(request: any, reply: any, hookDone: () => void) {\n const span = request[kRequestSpan];\n\n if (span != null) {\n span.setAttributes({\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode,\n });\n span.end();\n }\n\n request[kRequestSpan] = null;\n\n hookDone();\n });\n\n instance.addHook = addHookPatched;\n instance.setNotFoundHandler = setNotFoundHandlerPatched;\n\n done();\n\n function finalizeResponseSpanHook(\n request: any,\n reply: any,\n payload: any,\n hookDone: (err: null, payload: any) => void,\n ) {\n const span = request[kRequestSpan];\n\n if (span != null) {\n if (reply.statusCode >= 500) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n\n span.setAttributes({\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode,\n });\n span.end();\n }\n\n request[kRequestSpan] = null;\n\n hookDone(null, payload);\n }\n\n function recordErrorInSpanHook(request: any, _reply: any, error: any, hookDone: () => void) {\n const span = request[kRequestSpan];\n\n if (span != null) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n if (instrumentation[kRecordExceptions] !== false) {\n span.recordException(error);\n }\n }\n\n hookDone();\n }\n\n function addHookPatched(this: any, name: string, hook: (...args: any[]) => any) {\n const addHookOriginal = this[kAddHookOriginal];\n\n if (FASTIFY_HOOKS.includes(name)) {\n return addHookOriginal.call(\n this,\n name,\n handlerWrapper(hook, name, {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - ${name}`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]: hook.name?.length > 0 ? hook.name : ANONYMOUS_FUNCTION_NAME,\n }),\n );\n } else {\n return addHookOriginal.call(this, name, hook);\n }\n }\n\n function setNotFoundHandlerPatched(this: any, hooks: any, handler?: any) {\n const setNotFoundHandlerOriginal = this[kSetNotFoundOriginal];\n if (typeof hooks === 'function') {\n handler = handlerWrapper(hooks, 'notFoundHandler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]: hooks.name?.length > 0 ? hooks.name : ANONYMOUS_FUNCTION_NAME,\n });\n setNotFoundHandlerOriginal.call(this, handler);\n } else {\n if (hooks.preValidation != null) {\n hooks.preValidation = handlerWrapper(hooks.preValidation, 'notFoundHandler - preValidation', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preValidation`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n hooks.preValidation.name?.length > 0 ? hooks.preValidation.name : ANONYMOUS_FUNCTION_NAME,\n });\n }\n\n if (hooks.preHandler != null) {\n hooks.preHandler = handlerWrapper(hooks.preHandler, 'notFoundHandler - preHandler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preHandler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n hooks.preHandler.name?.length > 0 ? hooks.preHandler.name : ANONYMOUS_FUNCTION_NAME,\n });\n }\n\n handler = handlerWrapper(handler, 'notFoundHandler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]: handler.name?.length > 0 ? handler.name : ANONYMOUS_FUNCTION_NAME,\n });\n setNotFoundHandlerOriginal.call(this, hooks, handler);\n }\n }\n\n function getRequestFromArgs(args: any[]) {\n for (const arg of args) {\n if (arg?.routeOptions && arg.url && arg.method) {\n return arg;\n }\n }\n return null;\n }\n\n function handlerWrapper(\n handler: (...args: any[]) => any,\n hookName: string,\n spanAttributes: Record<string, string> = {},\n ) {\n return function handlerWrapped(this: any, ...args: any[]) {\n const instrumentation: FastifyOtelInstrumentation = this[kInstrumentation];\n\n const request = getRequestFromArgs(args);\n if (request === null) {\n instrumentation._otelLogger.debug(\n `Ignoring route instrumentation because ${hookName} was called without a Fastify request argument`,\n );\n return handler.call(this, ...args);\n }\n\n if (instrumentation.isEnabled() === false || request.routeOptions.config?.otel === false) {\n instrumentation._otelLogger.debug(\n `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it is disabled`,\n );\n return handler.call(this, ...args);\n }\n\n const ctx = request[kRequestContext] ?? context.active();\n const handlerName = handler.name?.length > 0 ? handler.name : (this.pluginName ?? ANONYMOUS_FUNCTION_NAME);\n\n const span = instrumentation.tracer.startSpan(\n `${hookName} - ${handlerName}`,\n {\n attributes: spanAttributes,\n },\n ctx,\n );\n\n if (instrumentation._lifecycleHook != null) {\n try {\n instrumentation._lifecycleHook(span, {\n hookName,\n request,\n handler: handlerName,\n });\n } catch (err) {\n instrumentation._otelLogger.error({ err }, 'Execution of lifecycleHook failed');\n }\n }\n\n return context.with(\n trace.setSpan(ctx, span),\n function (this: any) {\n try {\n const res = handler.call(this, ...args);\n\n if (typeof res?.then === 'function') {\n return res.then(\n (result: any) => {\n span.end();\n return result;\n },\n (error: any) => {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n if (instrumentation[kRecordExceptions] !== false) {\n span.recordException(error);\n }\n span.end();\n return Promise.reject(error);\n },\n );\n }\n\n span.end();\n return res;\n } catch (error: any) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n if (instrumentation[kRecordExceptions] !== false) {\n span.recordException(error);\n }\n span.end();\n throw error;\n }\n },\n this,\n );\n };\n }\n }\n }\n}\n"],"names":["SDK_VERSION","InstrumentationBase","diag","propagation","ATTR_HTTP_ROUTE","context","trace","setHttpServerSpanRouteAttribute","ATTR_HTTP_REQUEST_METHOD","ATTR_URL_PATH","ATTR_HTTP_RESPONSE_STATUS_CODE","SpanStatusCode","instrumentation"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/fastify/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright (c) 2024-present The Fastify team <https://github.com/fastify/fastify#team>\n * SPDX-License-Identifier: MIT\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/fastify/otel/tree/bae80d6caef4287e7f01ff3c8dc753243706ea86\n * - Upstream version: @fastify/otel@0.18.1\n * - Converted from JavaScript to TypeScript with minimal type annotations\n * - Removed `ignorePaths` / `minimatch` support (not used by the Sentry integration)\n */\n/* eslint-disable */\n\nimport * as dc from 'node:diagnostics_channel';\nimport { context, trace, SpanStatusCode, propagation, diag, type Span } from '@opentelemetry/api';\nimport {\n ATTR_HTTP_ROUTE,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_PATH,\n} from '@opentelemetry/semantic-conventions';\nimport { InstrumentationBase, type InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { setHttpServerSpanRouteAttribute } from '../../../../utils/setHttpServerSpanRouteAttribute';\n\nconst PACKAGE_VERSION = SDK_VERSION;\nconst PACKAGE_NAME = '@sentry/instrumentation-fastify';\n\nconst SUPPORTED_VERSIONS = '>=4.0.0 <6';\nconst FASTIFY_HOOKS = [\n 'onRequest',\n 'preParsing',\n 'preValidation',\n 'preHandler',\n 'preSerialization',\n 'onSend',\n 'onResponse',\n 'onError',\n];\nconst ATTRIBUTE_NAMES = {\n HOOK_NAME: 'hook.name',\n FASTIFY_TYPE: 'fastify.type',\n HOOK_CALLBACK_NAME: 'hook.callback.name',\n ROOT: 'fastify.root',\n};\nconst HOOK_TYPES = {\n ROUTE: 'route-hook',\n INSTANCE: 'hook',\n HANDLER: 'request-handler',\n};\nconst ANONYMOUS_FUNCTION_NAME = 'anonymous';\n\nconst kInstrumentation = Symbol('fastify otel instance');\nconst kRequestSpan = Symbol('fastify otel request spans');\nconst kRequestContext = Symbol('fastify otel request context');\nconst kAddHookOriginal = Symbol('fastify otel addhook original');\nconst kSetNotFoundOriginal = Symbol('fastify otel setnotfound original');\nconst kRecordExceptions = Symbol('fastify otel record exceptions');\n\nexport interface FastifyOtelInstrumentationOpts extends InstrumentationConfig {\n registerOnInitialization?: boolean;\n requestHook?: (span: Span, request: any) => void;\n lifecycleHook?: (span: Span, info: { hookName: string; request: any; handler?: string }) => void;\n recordExceptions?: boolean;\n}\n\nexport class FastifyOtelInstrumentation extends InstrumentationBase<FastifyOtelInstrumentationOpts> {\n _otelLogger: any = null;\n _requestHook: ((span: Span, request: any) => void) | null = null;\n _lifecycleHook: ((span: Span, info: any) => void) | null = null;\n _handleInitialization: ((message: any) => void) | undefined = undefined;\n\n [kRecordExceptions]: boolean = true;\n\n constructor(config: FastifyOtelInstrumentationOpts = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n this._otelLogger = diag.createComponentLogger({ namespace: PACKAGE_NAME });\n this[kRecordExceptions] = true;\n\n if (config?.recordExceptions != null) {\n if (typeof config.recordExceptions !== 'boolean') {\n throw new TypeError('recordExceptions must be a boolean');\n }\n\n this[kRecordExceptions] = config.recordExceptions;\n }\n if (typeof config?.requestHook === 'function') {\n this._requestHook = config.requestHook;\n }\n if (typeof config?.lifecycleHook === 'function') {\n this._lifecycleHook = config.lifecycleHook;\n }\n }\n\n enable(): any {\n if (this._handleInitialization === undefined && this.getConfig().registerOnInitialization) {\n this._handleInitialization = (message: any) => {\n this.plugin()(message.fastify, undefined, () => {});\n const emptyPlugin: any = (_: any, __: any, done: () => void) => {\n done();\n };\n emptyPlugin[Symbol.for('skip-override')] = true;\n emptyPlugin[Symbol.for('fastify.display-name')] = PACKAGE_NAME;\n message.fastify.register(emptyPlugin);\n };\n dc.subscribe('fastify.initialization', this._handleInitialization);\n }\n return super.enable();\n }\n\n disable(): any {\n if (this._handleInitialization) {\n dc.unsubscribe('fastify.initialization', this._handleInitialization);\n this._handleInitialization = undefined;\n }\n return super.disable();\n }\n\n init() {\n return [];\n }\n\n plugin(): any {\n const instrumentation = this;\n\n const pluginAny = FastifyInstrumentationPlugin as any;\n pluginAny[Symbol.for('skip-override')] = true;\n pluginAny[Symbol.for('fastify.display-name')] = PACKAGE_NAME;\n pluginAny[Symbol.for('plugin-meta')] = {\n fastify: SUPPORTED_VERSIONS,\n name: PACKAGE_NAME,\n };\n\n return FastifyInstrumentationPlugin;\n\n function FastifyInstrumentationPlugin(instance: any, _opts: any, done: () => void) {\n instance.decorate(kInstrumentation, instrumentation);\n instance.decorate(kAddHookOriginal, instance.addHook);\n instance.decorate(kSetNotFoundOriginal, instance.setNotFoundHandler);\n instance.decorateRequest('opentelemetry', function opentelemetry(this: any) {\n const ctx = this[kRequestContext];\n const span = this[kRequestSpan];\n\n return {\n enabled: this.routeOptions.config?.otel !== false,\n span,\n tracer: instrumentation.tracer,\n context: ctx,\n inject: (carrier: any, setter?: any) => {\n return propagation.inject(ctx, carrier, setter);\n },\n extract: (carrier: any, getter?: any) => {\n return propagation.extract(ctx, carrier, getter);\n },\n };\n });\n instance.decorateRequest(kRequestSpan, null);\n instance.decorateRequest(kRequestContext, null);\n\n instance.addHook('onRoute', function otelWireRoute(this: any, routeOptions: any) {\n if (routeOptions.config?.otel === false) {\n instrumentation._otelLogger.debug(\n `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it is disabled`,\n );\n\n return;\n }\n\n for (const hook of FASTIFY_HOOKS) {\n if (routeOptions[hook] != null) {\n const handlerLike = routeOptions[hook];\n\n if (typeof handlerLike === 'function') {\n routeOptions[hook] = handlerWrapper(handlerLike, hook, {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n [ATTR_HTTP_ROUTE]: routeOptions.url,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n handlerLike.name?.length > 0 ? handlerLike.name : ANONYMOUS_FUNCTION_NAME,\n });\n } else if (Array.isArray(handlerLike)) {\n const wrappedHandlers: any[] = [];\n\n for (const handler of handlerLike) {\n wrappedHandlers.push(\n handlerWrapper(handler, hook, {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n [ATTR_HTTP_ROUTE]: routeOptions.url,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n handler.name?.length > 0 ? handler.name : ANONYMOUS_FUNCTION_NAME,\n }),\n );\n }\n\n routeOptions[hook] = wrappedHandlers;\n }\n }\n }\n\n if (routeOptions.onSend != null) {\n routeOptions.onSend = Array.isArray(routeOptions.onSend)\n ? [...routeOptions.onSend, finalizeResponseSpanHook]\n : [routeOptions.onSend, finalizeResponseSpanHook];\n } else {\n routeOptions.onSend = finalizeResponseSpanHook;\n }\n\n if (routeOptions.onError != null) {\n routeOptions.onError = Array.isArray(routeOptions.onError)\n ? [...routeOptions.onError, recordErrorInSpanHook]\n : [routeOptions.onError, recordErrorInSpanHook];\n } else {\n routeOptions.onError = recordErrorInSpanHook;\n }\n\n routeOptions.handler = handlerWrapper(routeOptions.handler, 'handler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route-handler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.HANDLER,\n [ATTR_HTTP_ROUTE]: routeOptions.url,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n routeOptions.handler.name.length > 0 ? routeOptions.handler.name : ANONYMOUS_FUNCTION_NAME,\n });\n });\n\n instance.addHook(\n 'onRequest',\n function startRequestSpanHook(this: any, request: any, _reply: any, hookDone: () => void) {\n if (this[kInstrumentation].isEnabled() === false || request.routeOptions.config?.otel === false) {\n return hookDone();\n }\n\n let ctx = context.active();\n\n if (trace.getSpan(ctx) == null) {\n ctx = propagation.extract(ctx, request.headers);\n }\n\n if (request.routeOptions.url != null) {\n setHttpServerSpanRouteAttribute(request.routeOptions.url);\n }\n\n const attributes: Record<string, string> = {\n [ATTRIBUTE_NAMES.ROOT]: PACKAGE_NAME,\n [ATTR_HTTP_REQUEST_METHOD]: request.method,\n [ATTR_URL_PATH]: request.url,\n };\n\n if (request.routeOptions.url != null) {\n attributes[ATTR_HTTP_ROUTE] = request.routeOptions.url;\n }\n\n const span = this[kInstrumentation].tracer.startSpan('request', { attributes }, ctx);\n\n try {\n this[kInstrumentation]._requestHook?.(span, request);\n } catch (err) {\n this[kInstrumentation]._otelLogger.error({ err }, 'requestHook threw');\n }\n\n request[kRequestContext] = trace.setSpan(ctx, span);\n request[kRequestSpan] = span;\n\n context.with(request[kRequestContext], () => {\n hookDone();\n });\n },\n );\n\n instance.addHook('onResponse', function finalizeNotFoundSpanHook(request: any, reply: any, hookDone: () => void) {\n const span = request[kRequestSpan];\n\n if (span != null) {\n span.setAttributes({\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode,\n });\n span.end();\n }\n\n request[kRequestSpan] = null;\n\n hookDone();\n });\n\n instance.addHook = addHookPatched;\n instance.setNotFoundHandler = setNotFoundHandlerPatched;\n\n done();\n\n function finalizeResponseSpanHook(\n request: any,\n reply: any,\n payload: any,\n hookDone: (err: null, payload: any) => void,\n ) {\n const span = request[kRequestSpan];\n\n if (span != null) {\n if (reply.statusCode >= 500) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n\n span.setAttributes({\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode,\n });\n span.end();\n }\n\n request[kRequestSpan] = null;\n\n hookDone(null, payload);\n }\n\n function recordErrorInSpanHook(request: any, _reply: any, error: any, hookDone: () => void) {\n const span = request[kRequestSpan];\n\n if (span != null) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n if (instrumentation[kRecordExceptions] !== false) {\n span.recordException(error);\n }\n }\n\n hookDone();\n }\n\n function addHookPatched(this: any, name: string, hook: (...args: any[]) => any) {\n const addHookOriginal = this[kAddHookOriginal];\n\n if (FASTIFY_HOOKS.includes(name)) {\n return addHookOriginal.call(\n this,\n name,\n handlerWrapper(hook, name, {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - ${name}`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]: hook.name?.length > 0 ? hook.name : ANONYMOUS_FUNCTION_NAME,\n }),\n );\n } else {\n return addHookOriginal.call(this, name, hook);\n }\n }\n\n function setNotFoundHandlerPatched(this: any, hooks: any, handler?: any) {\n const setNotFoundHandlerOriginal = this[kSetNotFoundOriginal];\n if (typeof hooks === 'function') {\n handler = handlerWrapper(hooks, 'notFoundHandler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]: hooks.name?.length > 0 ? hooks.name : ANONYMOUS_FUNCTION_NAME,\n });\n setNotFoundHandlerOriginal.call(this, handler);\n } else {\n if (hooks.preValidation != null) {\n hooks.preValidation = handlerWrapper(hooks.preValidation, 'notFoundHandler - preValidation', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preValidation`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n hooks.preValidation.name?.length > 0 ? hooks.preValidation.name : ANONYMOUS_FUNCTION_NAME,\n });\n }\n\n if (hooks.preHandler != null) {\n hooks.preHandler = handlerWrapper(hooks.preHandler, 'notFoundHandler - preHandler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preHandler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n hooks.preHandler.name?.length > 0 ? hooks.preHandler.name : ANONYMOUS_FUNCTION_NAME,\n });\n }\n\n handler = handlerWrapper(handler, 'notFoundHandler', {\n [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]: handler.name?.length > 0 ? handler.name : ANONYMOUS_FUNCTION_NAME,\n });\n setNotFoundHandlerOriginal.call(this, hooks, handler);\n }\n }\n\n function getRequestFromArgs(args: any[]) {\n for (const arg of args) {\n if (arg?.routeOptions && arg.url && arg.method) {\n return arg;\n }\n }\n return null;\n }\n\n function handlerWrapper(\n handler: (...args: any[]) => any,\n hookName: string,\n spanAttributes: Record<string, string> = {},\n ) {\n return function handlerWrapped(this: any, ...args: any[]) {\n const instrumentation: FastifyOtelInstrumentation = this[kInstrumentation];\n\n const request = getRequestFromArgs(args);\n if (request === null) {\n instrumentation._otelLogger.debug(\n `Ignoring route instrumentation because ${hookName} was called without a Fastify request argument`,\n );\n return handler.call(this, ...args);\n }\n\n if (instrumentation.isEnabled() === false || request.routeOptions.config?.otel === false) {\n instrumentation._otelLogger.debug(\n `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it is disabled`,\n );\n return handler.call(this, ...args);\n }\n\n const ctx = request[kRequestContext] ?? context.active();\n const handlerName = handler.name?.length > 0 ? handler.name : (this.pluginName ?? ANONYMOUS_FUNCTION_NAME);\n\n const span = instrumentation.tracer.startSpan(\n `${hookName} - ${handlerName}`,\n {\n attributes: spanAttributes,\n },\n ctx,\n );\n\n if (instrumentation._lifecycleHook != null) {\n try {\n instrumentation._lifecycleHook(span, {\n hookName,\n request,\n handler: handlerName,\n });\n } catch (err) {\n instrumentation._otelLogger.error({ err }, 'Execution of lifecycleHook failed');\n }\n }\n\n return context.with(\n trace.setSpan(ctx, span),\n function (this: any) {\n try {\n const res = handler.call(this, ...args);\n\n if (typeof res?.then === 'function') {\n return res.then(\n (result: any) => {\n span.end();\n return result;\n },\n (error: any) => {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n if (instrumentation[kRecordExceptions] !== false) {\n span.recordException(error);\n }\n span.end();\n return Promise.reject(error);\n },\n );\n }\n\n span.end();\n return res;\n } catch (error: any) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n if (instrumentation[kRecordExceptions] !== false) {\n span.recordException(error);\n }\n span.end();\n throw error;\n }\n },\n this,\n );\n };\n }\n }\n }\n}\n"],"names":["SDK_VERSION","InstrumentationBase","diag","propagation","ATTR_HTTP_ROUTE","context","trace","setHttpServerSpanRouteAttribute","ATTR_HTTP_REQUEST_METHOD","ATTR_URL_PATH","ATTR_HTTP_RESPONSE_STATUS_CODE","SpanStatusCode","instrumentation"],"mappings":";;;;;;;;;AAAA,IAAA,EAAA,EAAA,EAAA;AAwBA,MAAM,eAAA,GAAkBA,gBAAA;AACxB,MAAM,YAAA,GAAe,iCAAA;AAErB,MAAM,kBAAA,GAAqB,YAAA;AAC3B,MAAM,aAAA,GAAgB;AAAA,EACpB,WAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA;AACA,MAAM,eAAA,GAAkB;AAAA,EACtB,SAAA,EAAW,WAAA;AAAA,EACX,YAAA,EAAc,cAAA;AAAA,EACd,kBAAA,EAAoB,oBAAA;AAAA,EACpB,IAAA,EAAM;AACR,CAAA;AACA,MAAM,UAAA,GAAa;AAAA,EACjB,KAAA,EAAO,YAAA;AAAA,EACP,QAAA,EAAU,MAAA;AAAA,EACV,OAAA,EAAS;AACX,CAAA;AACA,MAAM,uBAAA,GAA0B,WAAA;AAEhC,MAAM,gBAAA,0BAA0B,uBAAuB,CAAA;AACvD,MAAM,YAAA,0BAAsB,4BAA4B,CAAA;AACxD,MAAM,eAAA,0BAAyB,8BAA8B,CAAA;AAC7D,MAAM,gBAAA,0BAA0B,+BAA+B,CAAA;AAC/D,MAAM,oBAAA,0BAA8B,mCAAmC,CAAA;AACvE,MAAM,iBAAA,0BAA2B,gCAAgC,CAAA;AAS1D,MAAM,0BAAA,UAAmC,EAAA,GAAAC,mCAAA,EAM7C,EAAA,GAAA,iBAAA,EAN6C,EAAA,EAAoD;AAAA,EAQlG,WAAA,CAAY,MAAA,GAAyC,EAAC,EAAG;AACvD,IAAA,KAAA,CAAM,YAAA,EAAc,iBAAiB,MAAM,CAAA;AAR7C,IAAA,IAAA,CAAA,WAAA,GAAmB,IAAA;AACnB,IAAA,IAAA,CAAA,YAAA,GAA4D,IAAA;AAC5D,IAAA,IAAA,CAAA,cAAA,GAA2D,IAAA;AAC3D,IAAA,IAAA,CAAA,qBAAA,GAA8D,MAAA;AAE9D,IAAA,IAAA,CAAC,EAAA,CAAA,GAA8B,IAAA;AAI7B,IAAA,IAAA,CAAK,cAAcC,QAAA,CAAK,qBAAA,CAAsB,EAAE,SAAA,EAAW,cAAc,CAAA;AACzE,IAAA,IAAA,CAAK,iBAAiB,CAAA,GAAI,IAAA;AAE1B,IAAA,IAAI,MAAA,EAAQ,oBAAoB,IAAA,EAAM;AACpC,MAAA,IAAI,OAAO,MAAA,CAAO,gBAAA,KAAqB,SAAA,EAAW;AAChD,QAAA,MAAM,IAAI,UAAU,oCAAoC,CAAA;AAAA,MAC1D;AAEA,MAAA,IAAA,CAAK,iBAAiB,IAAI,MAAA,CAAO,gBAAA;AAAA,IACnC;AACA,IAAA,IAAI,OAAO,MAAA,EAAQ,WAAA,KAAgB,UAAA,EAAY;AAC7C,MAAA,IAAA,CAAK,eAAe,MAAA,CAAO,WAAA;AAAA,IAC7B;AACA,IAAA,IAAI,OAAO,MAAA,EAAQ,aAAA,KAAkB,UAAA,EAAY;AAC/C,MAAA,IAAA,CAAK,iBAAiB,MAAA,CAAO,aAAA;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,MAAA,GAAc;AACZ,IAAA,IAAI,KAAK,qBAAA,KAA0B,MAAA,IAAa,IAAA,CAAK,SAAA,GAAY,wBAAA,EAA0B;AACzF,MAAA,IAAA,CAAK,qBAAA,GAAwB,CAAC,OAAA,KAAiB;AAC7C,QAAA,IAAA,CAAK,MAAA,EAAO,CAAE,OAAA,CAAQ,OAAA,EAAS,QAAW,MAAM;AAAA,QAAC,CAAC,CAAA;AAClD,QAAA,MAAM,WAAA,GAAmB,CAAC,CAAA,EAAQ,EAAA,EAAS,IAAA,KAAqB;AAC9D,UAAA,IAAA,EAAK;AAAA,QACP,CAAA;AACA,QAAA,WAAA,iBAAY,MAAA,CAAO,GAAA,CAAI,eAAe,CAAC,CAAA,GAAI,IAAA;AAC3C,QAAA,WAAA,iBAAY,MAAA,CAAO,GAAA,CAAI,sBAAsB,CAAC,CAAA,GAAI,YAAA;AAClD,QAAA,OAAA,CAAQ,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,MACtC,CAAA;AACA,MAAA,EAAA,CAAG,SAAA,CAAU,wBAAA,EAA0B,IAAA,CAAK,qBAAqB,CAAA;AAAA,IACnE;AACA,IAAA,OAAO,MAAM,MAAA,EAAO;AAAA,EACtB;AAAA,EAEA,OAAA,GAAe;AACb,IAAA,IAAI,KAAK,qBAAA,EAAuB;AAC9B,MAAA,EAAA,CAAG,WAAA,CAAY,wBAAA,EAA0B,IAAA,CAAK,qBAAqB,CAAA;AACnE,MAAA,IAAA,CAAK,qBAAA,GAAwB,MAAA;AAAA,IAC/B;AACA,IAAA,OAAO,MAAM,OAAA,EAAQ;AAAA,EACvB;AAAA,EAEA,IAAA,GAAO;AACL,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAA,GAAc;AACZ,IAAA,MAAM,eAAA,GAAkB,IAAA;AAExB,IAAA,MAAM,SAAA,GAAY,4BAAA;AAClB,IAAA,SAAA,iBAAU,MAAA,CAAO,GAAA,CAAI,eAAe,CAAC,CAAA,GAAI,IAAA;AACzC,IAAA,SAAA,iBAAU,MAAA,CAAO,GAAA,CAAI,sBAAsB,CAAC,CAAA,GAAI,YAAA;AAChD,IAAA,SAAA,iBAAU,MAAA,CAAO,GAAA,CAAI,aAAa,CAAC,CAAA,GAAI;AAAA,MACrC,OAAA,EAAS,kBAAA;AAAA,MACT,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,OAAO,4BAAA;AAEP,IAAA,SAAS,4BAAA,CAA6B,QAAA,EAAe,KAAA,EAAY,IAAA,EAAkB;AACjF,MAAA,QAAA,CAAS,QAAA,CAAS,kBAAkB,eAAe,CAAA;AACnD,MAAA,QAAA,CAAS,QAAA,CAAS,gBAAA,EAAkB,QAAA,CAAS,OAAO,CAAA;AACpD,MAAA,QAAA,CAAS,QAAA,CAAS,oBAAA,EAAsB,QAAA,CAAS,kBAAkB,CAAA;AACnE,MAAA,QAAA,CAAS,eAAA,CAAgB,eAAA,EAAiB,SAAS,aAAA,GAAyB;AAC1E,QAAA,MAAM,GAAA,GAAM,KAAK,eAAe,CAAA;AAChC,QAAA,MAAM,IAAA,GAAO,KAAK,YAAY,CAAA;AAE9B,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,IAAA,KAAS,KAAA;AAAA,UAC5C,IAAA;AAAA,UACA,QAAQ,eAAA,CAAgB,MAAA;AAAA,UACxB,OAAA,EAAS,GAAA;AAAA,UACT,MAAA,EAAQ,CAAC,OAAA,EAAc,MAAA,KAAiB;AACtC,YAAA,OAAOC,eAAA,CAAY,MAAA,CAAO,GAAA,EAAK,OAAA,EAAS,MAAM,CAAA;AAAA,UAChD,CAAA;AAAA,UACA,OAAA,EAAS,CAAC,OAAA,EAAc,MAAA,KAAiB;AACvC,YAAA,OAAOA,eAAA,CAAY,OAAA,CAAQ,GAAA,EAAK,OAAA,EAAS,MAAM,CAAA;AAAA,UACjD;AAAA,SACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,QAAA,CAAS,eAAA,CAAgB,cAAc,IAAI,CAAA;AAC3C,MAAA,QAAA,CAAS,eAAA,CAAgB,iBAAiB,IAAI,CAAA;AAE9C,MAAA,QAAA,CAAS,OAAA,CAAQ,SAAA,EAAW,SAAS,aAAA,CAAyB,YAAA,EAAmB;AAC/E,QAAA,IAAI,YAAA,CAAa,MAAA,EAAQ,IAAA,KAAS,KAAA,EAAO;AACvC,UAAA,eAAA,CAAgB,WAAA,CAAY,KAAA;AAAA,YAC1B,CAAA,+BAAA,EAAkC,YAAA,CAAa,MAAM,CAAA,CAAA,EAAI,aAAa,GAAG,CAAA,uBAAA;AAAA,WAC3E;AAEA,UAAA;AAAA,QACF;AAEA,QAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,UAAA,IAAI,YAAA,CAAa,IAAI,CAAA,IAAK,IAAA,EAAM;AAC9B,YAAA,MAAM,WAAA,GAAc,aAAa,IAAI,CAAA;AAErC,YAAA,IAAI,OAAO,gBAAgB,UAAA,EAAY;AACrC,cAAA,YAAA,CAAa,IAAI,CAAA,GAAI,cAAA,CAAe,WAAA,EAAa,IAAA,EAAM;AAAA,gBACrD,CAAC,gBAAgB,SAAS,GAAG,GAAG,IAAA,CAAK,UAAU,eAAe,IAAI,CAAA,CAAA;AAAA,gBAClE,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,KAAA;AAAA,gBAC3C,CAACC,mCAAe,GAAG,YAAA,CAAa,GAAA;AAAA,gBAChC,CAAC,gBAAgB,kBAAkB,GACjC,YAAY,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,WAAA,CAAY,IAAA,GAAO;AAAA,eACrD,CAAA;AAAA,YACH,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AACrC,cAAA,MAAM,kBAAyB,EAAC;AAEhC,cAAA,KAAA,MAAW,WAAW,WAAA,EAAa;AACjC,gBAAA,eAAA,CAAgB,IAAA;AAAA,kBACd,cAAA,CAAe,SAAS,IAAA,EAAM;AAAA,oBAC5B,CAAC,gBAAgB,SAAS,GAAG,GAAG,IAAA,CAAK,UAAU,eAAe,IAAI,CAAA,CAAA;AAAA,oBAClE,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,KAAA;AAAA,oBAC3C,CAACA,mCAAe,GAAG,YAAA,CAAa,GAAA;AAAA,oBAChC,CAAC,gBAAgB,kBAAkB,GACjC,QAAQ,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,OAAA,CAAQ,IAAA,GAAO;AAAA,mBAC7C;AAAA,iBACH;AAAA,cACF;AAEA,cAAA,YAAA,CAAa,IAAI,CAAA,GAAI,eAAA;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,YAAA,CAAa,UAAU,IAAA,EAAM;AAC/B,UAAA,YAAA,CAAa,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA,GACnD,CAAC,GAAG,YAAA,CAAa,QAAQ,wBAAwB,CAAA,GACjD,CAAC,YAAA,CAAa,QAAQ,wBAAwB,CAAA;AAAA,QACpD,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,MAAA,GAAS,wBAAA;AAAA,QACxB;AAEA,QAAA,IAAI,YAAA,CAAa,WAAW,IAAA,EAAM;AAChC,UAAA,YAAA,CAAa,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,YAAA,CAAa,OAAO,CAAA,GACrD,CAAC,GAAG,YAAA,CAAa,SAAS,qBAAqB,CAAA,GAC/C,CAAC,YAAA,CAAa,SAAS,qBAAqB,CAAA;AAAA,QAClD,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,OAAA,GAAU,qBAAA;AAAA,QACzB;AAEA,QAAA,YAAA,CAAa,OAAA,GAAU,cAAA,CAAe,YAAA,CAAa,OAAA,EAAS,SAAA,EAAW;AAAA,UACrE,CAAC,eAAA,CAAgB,SAAS,GAAG,CAAA,EAAG,KAAK,UAAU,CAAA,gBAAA,CAAA;AAAA,UAC/C,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,OAAA;AAAA,UAC3C,CAACA,mCAAe,GAAG,YAAA,CAAa,GAAA;AAAA,UAChC,CAAC,eAAA,CAAgB,kBAAkB,GACjC,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,GAAI,YAAA,CAAa,OAAA,CAAQ,IAAA,GAAO;AAAA,SACtE,CAAA;AAAA,MACH,CAAC,CAAA;AAED,MAAA,QAAA,CAAS,OAAA;AAAA,QACP,WAAA;AAAA,QACA,SAAS,oBAAA,CAAgC,OAAA,EAAc,MAAA,EAAa,QAAA,EAAsB;AACxF,UAAA,IAAI,IAAA,CAAK,gBAAgB,CAAA,CAAE,SAAA,EAAU,KAAM,SAAS,OAAA,CAAQ,YAAA,CAAa,MAAA,EAAQ,IAAA,KAAS,KAAA,EAAO;AAC/F,YAAA,OAAO,QAAA,EAAS;AAAA,UAClB;AAEA,UAAA,IAAI,GAAA,GAAMC,YAAQ,MAAA,EAAO;AAEzB,UAAA,IAAIC,SAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,IAAK,IAAA,EAAM;AAC9B,YAAA,GAAA,GAAMH,eAAA,CAAY,OAAA,CAAQ,GAAA,EAAK,OAAA,CAAQ,OAAO,CAAA;AAAA,UAChD;AAEA,UAAA,IAAI,OAAA,CAAQ,YAAA,CAAa,GAAA,IAAO,IAAA,EAAM;AACpC,YAAAI,+DAAA,CAAgC,OAAA,CAAQ,aAAa,GAAG,CAAA;AAAA,UAC1D;AAEA,UAAA,MAAM,UAAA,GAAqC;AAAA,YACzC,CAAC,eAAA,CAAgB,IAAI,GAAG,YAAA;AAAA,YACxB,CAACC,4CAAwB,GAAG,OAAA,CAAQ,MAAA;AAAA,YACpC,CAACC,iCAAa,GAAG,OAAA,CAAQ;AAAA,WAC3B;AAEA,UAAA,IAAI,OAAA,CAAQ,YAAA,CAAa,GAAA,IAAO,IAAA,EAAM;AACpC,YAAA,UAAA,CAAWL,mCAAe,CAAA,GAAI,OAAA,CAAQ,YAAA,CAAa,GAAA;AAAA,UACrD;AAEA,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,gBAAgB,CAAA,CAAE,MAAA,CAAO,UAAU,SAAA,EAAW,EAAE,UAAA,EAAW,EAAG,GAAG,CAAA;AAEnF,UAAA,IAAI;AACF,YAAA,IAAA,CAAK,gBAAgB,CAAA,CAAE,YAAA,GAAe,IAAA,EAAM,OAAO,CAAA;AAAA,UACrD,SAAS,GAAA,EAAK;AACZ,YAAA,IAAA,CAAK,gBAAgB,CAAA,CAAE,WAAA,CAAY,MAAM,EAAE,GAAA,IAAO,mBAAmB,CAAA;AAAA,UACvE;AAEA,UAAA,OAAA,CAAQ,eAAe,CAAA,GAAIE,SAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,CAAA;AAClD,UAAA,OAAA,CAAQ,YAAY,CAAA,GAAI,IAAA;AAExB,UAAAD,WAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,eAAe,CAAA,EAAG,MAAM;AAC3C,YAAA,QAAA,EAAS;AAAA,UACX,CAAC,CAAA;AAAA,QACH;AAAA,OACF;AAEA,MAAA,QAAA,CAAS,QAAQ,YAAA,EAAc,SAAS,wBAAA,CAAyB,OAAA,EAAc,OAAY,QAAA,EAAsB;AAC/G,QAAA,MAAM,IAAA,GAAO,QAAQ,YAAY,CAAA;AAEjC,QAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,UAAA,IAAA,CAAK,aAAA,CAAc;AAAA,YACjB,CAACK,kDAA8B,GAAG,KAAA,CAAM;AAAA,WACzC,CAAA;AACD,UAAA,IAAA,CAAK,GAAA,EAAI;AAAA,QACX;AAEA,QAAA,OAAA,CAAQ,YAAY,CAAA,GAAI,IAAA;AAExB,QAAA,QAAA,EAAS;AAAA,MACX,CAAC,CAAA;AAED,MAAA,QAAA,CAAS,OAAA,GAAU,cAAA;AACnB,MAAA,QAAA,CAAS,kBAAA,GAAqB,yBAAA;AAE9B,MAAA,IAAA,EAAK;AAEL,MAAA,SAAS,wBAAA,CACP,OAAA,EACA,KAAA,EACA,OAAA,EACA,QAAA,EACA;AACA,QAAA,MAAM,IAAA,GAAO,QAAQ,YAAY,CAAA;AAEjC,QAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,UAAA,IAAI,KAAA,CAAM,cAAc,GAAA,EAAK;AAC3B,YAAA,IAAA,CAAK,SAAA,CAAU,EAAE,IAAA,EAAMC,kBAAA,CAAe,OAAO,CAAA;AAAA,UAC/C;AAEA,UAAA,IAAA,CAAK,aAAA,CAAc;AAAA,YACjB,CAACD,kDAA8B,GAAG,KAAA,CAAM;AAAA,WACzC,CAAA;AACD,UAAA,IAAA,CAAK,GAAA,EAAI;AAAA,QACX;AAEA,QAAA,OAAA,CAAQ,YAAY,CAAA,GAAI,IAAA;AAExB,QAAA,QAAA,CAAS,MAAM,OAAO,CAAA;AAAA,MACxB;AAEA,MAAA,SAAS,qBAAA,CAAsB,OAAA,EAAc,MAAA,EAAa,KAAA,EAAY,QAAA,EAAsB;AAC1F,QAAA,MAAM,IAAA,GAAO,QAAQ,YAAY,CAAA;AAEjC,QAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,UAAA,IAAA,CAAK,SAAA,CAAU;AAAA,YACb,MAAMC,kBAAA,CAAe,KAAA;AAAA,YACrB,SAAS,KAAA,CAAM;AAAA,WAChB,CAAA;AACD,UAAA,IAAI,eAAA,CAAgB,iBAAiB,CAAA,KAAM,KAAA,EAAO;AAChD,YAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA;AAAA,UAC5B;AAAA,QACF;AAEA,QAAA,QAAA,EAAS;AAAA,MACX;AAEA,MAAA,SAAS,cAAA,CAA0B,MAAc,IAAA,EAA+B;AAC9E,QAAA,MAAM,eAAA,GAAkB,KAAK,gBAAgB,CAAA;AAE7C,QAAA,IAAI,aAAA,CAAc,QAAA,CAAS,IAAI,CAAA,EAAG;AAChC,UAAA,OAAO,eAAA,CAAgB,IAAA;AAAA,YACrB,IAAA;AAAA,YACA,IAAA;AAAA,YACA,cAAA,CAAe,MAAM,IAAA,EAAM;AAAA,cACzB,CAAC,gBAAgB,SAAS,GAAG,GAAG,IAAA,CAAK,UAAU,MAAM,IAAI,CAAA,CAAA;AAAA,cACzD,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,QAAA;AAAA,cAC3C,CAAC,gBAAgB,kBAAkB,GAAG,KAAK,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,IAAA,GAAO;AAAA,aAC3E;AAAA,WACH;AAAA,QACF,CAAA,MAAO;AACL,UAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,QAC9C;AAAA,MACF;AAEA,MAAA,SAAS,yBAAA,CAAqC,OAAY,OAAA,EAAe;AACvE,QAAA,MAAM,0BAAA,GAA6B,KAAK,oBAAoB,CAAA;AAC5D,QAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAC/B,UAAA,OAAA,GAAU,cAAA,CAAe,OAAO,iBAAA,EAAmB;AAAA,YACjD,CAAC,eAAA,CAAgB,SAAS,GAAG,CAAA,EAAG,KAAK,UAAU,CAAA,oBAAA,CAAA;AAAA,YAC/C,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,QAAA;AAAA,YAC3C,CAAC,gBAAgB,kBAAkB,GAAG,MAAM,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,IAAA,GAAO;AAAA,WAC7E,CAAA;AACD,UAAA,0BAAA,CAA2B,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,QAC/C,CAAA,MAAO;AACL,UAAA,IAAI,KAAA,CAAM,iBAAiB,IAAA,EAAM;AAC/B,YAAA,KAAA,CAAM,aAAA,GAAgB,cAAA,CAAe,KAAA,CAAM,aAAA,EAAe,iCAAA,EAAmC;AAAA,cAC3F,CAAC,eAAA,CAAgB,SAAS,GAAG,CAAA,EAAG,KAAK,UAAU,CAAA,oCAAA,CAAA;AAAA,cAC/C,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,QAAA;AAAA,cAC3C,CAAC,eAAA,CAAgB,kBAAkB,GACjC,KAAA,CAAM,aAAA,CAAc,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,aAAA,CAAc,IAAA,GAAO;AAAA,aACrE,CAAA;AAAA,UACH;AAEA,UAAA,IAAI,KAAA,CAAM,cAAc,IAAA,EAAM;AAC5B,YAAA,KAAA,CAAM,UAAA,GAAa,cAAA,CAAe,KAAA,CAAM,UAAA,EAAY,8BAAA,EAAgC;AAAA,cAClF,CAAC,eAAA,CAAgB,SAAS,GAAG,CAAA,EAAG,KAAK,UAAU,CAAA,iCAAA,CAAA;AAAA,cAC/C,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,QAAA;AAAA,cAC3C,CAAC,eAAA,CAAgB,kBAAkB,GACjC,KAAA,CAAM,UAAA,CAAW,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,UAAA,CAAW,IAAA,GAAO;AAAA,aAC/D,CAAA;AAAA,UACH;AAEA,UAAA,OAAA,GAAU,cAAA,CAAe,SAAS,iBAAA,EAAmB;AAAA,YACnD,CAAC,eAAA,CAAgB,SAAS,GAAG,CAAA,EAAG,KAAK,UAAU,CAAA,oBAAA,CAAA;AAAA,YAC/C,CAAC,eAAA,CAAgB,YAAY,GAAG,UAAA,CAAW,QAAA;AAAA,YAC3C,CAAC,gBAAgB,kBAAkB,GAAG,QAAQ,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,OAAA,CAAQ,IAAA,GAAO;AAAA,WACjF,CAAA;AACD,UAAA,0BAAA,CAA2B,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,OAAO,CAAA;AAAA,QACtD;AAAA,MACF;AAEA,MAAA,SAAS,mBAAmB,IAAA,EAAa;AACvC,QAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,UAAA,IAAI,GAAA,EAAK,YAAA,IAAgB,GAAA,CAAI,GAAA,IAAO,IAAI,MAAA,EAAQ;AAC9C,YAAA,OAAO,GAAA;AAAA,UACT;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,SAAS,cAAA,CACP,OAAA,EACA,QAAA,EACA,cAAA,GAAyC,EAAC,EAC1C;AACA,QAAA,OAAO,SAAS,kBAA6B,IAAA,EAAa;AACxD,UAAA,MAAMC,gBAAAA,GAA8C,KAAK,gBAAgB,CAAA;AAEzE,UAAA,MAAM,OAAA,GAAU,mBAAmB,IAAI,CAAA;AACvC,UAAA,IAAI,YAAY,IAAA,EAAM;AACpB,YAAAA,iBAAgB,WAAA,CAAY,KAAA;AAAA,cAC1B,0CAA0C,QAAQ,CAAA,8CAAA;AAAA,aACpD;AACA,YAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,UACnC;AAEA,UAAA,IAAIA,gBAAAA,CAAgB,WAAU,KAAM,KAAA,IAAS,QAAQ,YAAA,CAAa,MAAA,EAAQ,SAAS,KAAA,EAAO;AACxF,YAAAA,iBAAgB,WAAA,CAAY,KAAA;AAAA,cAC1B,kCAAkC,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA,CAAA,EAAI,OAAA,CAAQ,aAAa,GAAG,CAAA,uBAAA;AAAA,aAC3F;AACA,YAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,UACnC;AAEA,UAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,eAAe,CAAA,IAAKP,YAAQ,MAAA,EAAO;AACvD,UAAA,MAAM,WAAA,GAAc,QAAQ,IAAA,EAAM,MAAA,GAAS,IAAI,OAAA,CAAQ,IAAA,GAAQ,KAAK,UAAA,IAAc,uBAAA;AAElF,UAAA,MAAM,IAAA,GAAOO,iBAAgB,MAAA,CAAO,SAAA;AAAA,YAClC,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,WAAW,CAAA,CAAA;AAAA,YAC5B;AAAA,cACE,UAAA,EAAY;AAAA,aACd;AAAA,YACA;AAAA,WACF;AAEA,UAAA,IAAIA,gBAAAA,CAAgB,kBAAkB,IAAA,EAAM;AAC1C,YAAA,IAAI;AACF,cAAAA,gBAAAA,CAAgB,eAAe,IAAA,EAAM;AAAA,gBACnC,QAAA;AAAA,gBACA,OAAA;AAAA,gBACA,OAAA,EAAS;AAAA,eACV,CAAA;AAAA,YACH,SAAS,GAAA,EAAK;AACZ,cAAAA,iBAAgB,WAAA,CAAY,KAAA,CAAM,EAAE,GAAA,IAAO,mCAAmC,CAAA;AAAA,YAChF;AAAA,UACF;AAEA,UAAA,OAAOP,WAAA,CAAQ,IAAA;AAAA,YACbC,SAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,IAAI,CAAA;AAAA,YACvB,WAAqB;AACnB,cAAA,IAAI;AACF,gBAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,GAAG,IAAI,CAAA;AAEtC,gBAAA,IAAI,OAAO,GAAA,EAAK,IAAA,KAAS,UAAA,EAAY;AACnC,kBAAA,OAAO,GAAA,CAAI,IAAA;AAAA,oBACT,CAAC,MAAA,KAAgB;AACf,sBAAA,IAAA,CAAK,GAAA,EAAI;AACT,sBAAA,OAAO,MAAA;AAAA,oBACT,CAAA;AAAA,oBACA,CAAC,KAAA,KAAe;AACd,sBAAA,IAAA,CAAK,SAAA,CAAU;AAAA,wBACb,MAAMK,kBAAA,CAAe,KAAA;AAAA,wBACrB,SAAS,KAAA,CAAM;AAAA,uBAChB,CAAA;AACD,sBAAA,IAAIC,gBAAAA,CAAgB,iBAAiB,CAAA,KAAM,KAAA,EAAO;AAChD,wBAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA;AAAA,sBAC5B;AACA,sBAAA,IAAA,CAAK,GAAA,EAAI;AACT,sBAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,oBAC7B;AAAA,mBACF;AAAA,gBACF;AAEA,gBAAA,IAAA,CAAK,GAAA,EAAI;AACT,gBAAA,OAAO,GAAA;AAAA,cACT,SAAS,KAAA,EAAY;AACnB,gBAAA,IAAA,CAAK,SAAA,CAAU;AAAA,kBACb,MAAMD,kBAAA,CAAe,KAAA;AAAA,kBACrB,SAAS,KAAA,CAAM;AAAA,iBAChB,CAAA;AACD,gBAAA,IAAIC,gBAAAA,CAAgB,iBAAiB,CAAA,KAAM,KAAA,EAAO;AAChD,kBAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA;AAAA,gBAC5B;AACA,gBAAA,IAAA,CAAK,GAAA,EAAI;AACT,gBAAA,MAAM,KAAA;AAAA,cACR;AAAA,YACF,CAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;;"}
@@ -7,24 +7,10 @@ const nodeCore = require('@sentry/node-core');
7
7
  const INTEGRATION_NAME = "GenericPool";
8
8
  const instrumentGenericPool = nodeCore.generateInstrumentOnce(INTEGRATION_NAME, () => new instrumentation.GenericPoolInstrumentation({}));
9
9
  const _genericPoolIntegration = (() => {
10
- let instrumentationWrappedCallback;
11
10
  return {
12
11
  name: INTEGRATION_NAME,
13
12
  setupOnce() {
14
- const instrumentation = instrumentGenericPool();
15
- instrumentationWrappedCallback = nodeCore.instrumentWhenWrapped(instrumentation);
16
- },
17
- setup(client) {
18
- instrumentationWrappedCallback?.(
19
- () => client.on("spanStart", (span) => {
20
- const spanJSON = core.spanToJSON(span);
21
- const spanDescription = spanJSON.description;
22
- const isGenericPoolSpan = spanDescription === "generic-pool.acquire";
23
- if (isGenericPoolSpan) {
24
- span.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, "auto.db.otel.generic_pool");
25
- }
26
- })
27
- );
13
+ instrumentGenericPool();
28
14
  }
29
15
  };
30
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/genericPool/index.ts"],"sourcesContent":["import { GenericPoolInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nexport const instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentGenericPool();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const spanJSON = spanToJSON(span);\n const spanDescription = spanJSON.description;\n const isGenericPoolSpan = spanDescription === 'generic-pool.acquire';\n\n if (isGenericPoolSpan) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.generic_pool');\n }\n }),\n );\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nexport const genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n"],"names":["generateInstrumentOnce","GenericPoolInstrumentation","instrumentWhenWrapped","spanToJSON","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","defineIntegration"],"mappings":";;;;;;AAKA,MAAM,gBAAA,GAAmB,aAAA;AAElB,MAAM,qBAAA,GAAwBA,gCAAuB,gBAAA,EAAkB,MAAM,IAAIC,0CAAA,CAA2B,EAAE,CAAC;AAEtH,MAAM,2BAA2B,MAAM;AACrC,EAAA,IAAI,8BAAA;AAEJ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,MAAM,kBAAkB,qBAAA,EAAsB;AAC9C,MAAA,8BAAA,GAAiCC,+BAAsB,eAAe,CAAA;AAAA,IACxE,CAAA;AAAA,IAEA,MAAM,MAAA,EAAQ;AACZ,MAAA,8BAAA;AAAA,QAAiC,MAC/B,MAAA,CAAO,EAAA,CAAG,WAAA,EAAa,CAAA,IAAA,KAAQ;AAC7B,UAAA,MAAM,QAAA,GAAWC,gBAAW,IAAI,CAAA;AAChC,UAAA,MAAM,kBAAkB,QAAA,CAAS,WAAA;AACjC,UAAA,MAAM,oBAAoB,eAAA,KAAoB,sBAAA;AAE9C,UAAA,IAAI,iBAAA,EAAmB;AACrB,YAAA,IAAA,CAAK,YAAA,CAAaC,uCAAkC,2BAA2B,CAAA;AAAA,UACjF;AAAA,QACF,CAAC;AAAA,OACH;AAAA,IACF;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,sBAAA,GAAyBC,uBAAkB,uBAAuB;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/genericPool/index.ts"],"sourcesContent":["import { GenericPoolInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nexport const instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentGenericPool();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nexport const genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n"],"names":["generateInstrumentOnce","GenericPoolInstrumentation","defineIntegration"],"mappings":";;;;;;AAKA,MAAM,gBAAA,GAAmB,aAAA;AAElB,MAAM,qBAAA,GAAwBA,gCAAuB,gBAAA,EAAkB,MAAM,IAAIC,0CAAA,CAA2B,EAAE,CAAC;AAEtH,MAAM,2BAA2B,MAAM;AACrC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,qBAAA,EAAsB;AAAA,IACxB;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,sBAAA,GAAyBC,uBAAkB,uBAAuB;;;;;"}
@@ -67,9 +67,15 @@ class GenericPoolInstrumentation extends instrumentation.InstrumentationBase {
67
67
  }
68
68
  _acquirePatcher(original) {
69
69
  return function wrapped_acquire(...args) {
70
- return core.startSpan({ name: "generic-pool.acquire" }, () => {
71
- return original.call(this, ...args);
72
- });
70
+ return core.startSpan(
71
+ {
72
+ name: "generic-pool.acquire",
73
+ attributes: { [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.db.otel.generic_pool" }
74
+ },
75
+ () => {
76
+ return original.call(this, ...args);
77
+ }
78
+ );
73
79
  };
74
80
  }
75
81
  _poolWrapper(original) {
@@ -87,21 +93,27 @@ class GenericPoolInstrumentation extends instrumentation.InstrumentationBase {
87
93
  if (isDisabled()) {
88
94
  return original.call(this, cb, priority);
89
95
  }
90
- return core.startSpanManual({ name: "generic-pool.acquire" }, (span) => {
91
- original.call(
92
- this,
93
- (err, client) => {
94
- if (err) {
95
- span.setStatus({ code: core.SPAN_STATUS_ERROR, message: "internal_error" });
96
- }
97
- span.end();
98
- if (cb) {
99
- cb(err, client);
100
- }
101
- },
102
- priority
103
- );
104
- });
96
+ return core.startSpanManual(
97
+ {
98
+ name: "generic-pool.acquire",
99
+ attributes: { [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.db.otel.generic_pool" }
100
+ },
101
+ (span) => {
102
+ original.call(
103
+ this,
104
+ (err, client) => {
105
+ if (err) {
106
+ span.setStatus({ code: core.SPAN_STATUS_ERROR, message: "internal_error" });
107
+ }
108
+ span.end();
109
+ if (cb) {
110
+ cb(err, client);
111
+ }
112
+ },
113
+ priority
114
+ );
115
+ }
116
+ );
105
117
  };
106
118
  }
107
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/genericPool/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-generic-pool\n * - Upstream version: @opentelemetry/instrumentation-generic-pool@0.61.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, SPAN_STATUS_ERROR, startSpan, startSpanManual } from '@sentry/core';\nimport type * as genericPool from './generic-pool-types';\n\nconst MODULE_NAME = 'generic-pool';\nconst PACKAGE_NAME = '@sentry/instrumentation-generic-pool';\n\ntype AcquireFn = (this: unknown, ...args: unknown[]) => unknown;\ninterface PoolConstructor {\n prototype: { acquire: AcquireFn };\n}\ninterface GenericPoolModule {\n Pool: PoolConstructor;\n}\n\nexport class GenericPoolInstrumentation extends InstrumentationBase {\n // only used for v2 - v2.3)\n private _isDisabled = false;\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=3.0.0 <4'],\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(Pool.prototype, 'acquire', this._acquirePatcher.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n },\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.4.0 <3'],\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(Pool.prototype, 'acquire', this._acquireWithCallbacksPatcher.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n },\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.0.0 <2.4'],\n (moduleExports: GenericPoolModule) => {\n this._isDisabled = false;\n if (isWrapped(moduleExports.Pool)) {\n this._unwrap(moduleExports, 'Pool');\n }\n this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n // since the object is created on the fly every time, we need to use\n // a boolean switch here to disable the instrumentation\n this._isDisabled = true;\n return moduleExports;\n },\n ),\n ];\n }\n\n private _acquirePatcher(original: AcquireFn) {\n return function wrapped_acquire(this: genericPool.Pool<unknown>, ...args: unknown[]) {\n return startSpan({ name: 'generic-pool.acquire' }, () => {\n return original.call(this, ...args) as PromiseLike<unknown>;\n });\n };\n }\n\n private _poolWrapper(original: (this: unknown, ...args: unknown[]) => { acquire: AcquireFn }) {\n const wrap = this._wrap.bind(this);\n const acquireWithCallbacksPatcher = this._acquireWithCallbacksPatcher.bind(this);\n return function wrapped_pool(this: unknown, ...args: unknown[]) {\n const pool = original.apply(this, args);\n wrap(pool, 'acquire', acquireWithCallbacksPatcher);\n return pool;\n };\n }\n\n private _acquireWithCallbacksPatcher(original: AcquireFn) {\n const isDisabled = (): boolean => this._isDisabled;\n return function wrapped_acquire(\n this: genericPool.Pool<unknown>,\n cb: (err: unknown, client: unknown) => unknown,\n priority: number,\n ) {\n // only used for v2 - v2.3\n if (isDisabled()) {\n return original.call(this, cb, priority);\n }\n\n return startSpanManual({ name: 'generic-pool.acquire' }, span => {\n original.call(\n this,\n (err: unknown, client: unknown) => {\n if (err) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n // Not checking whether cb is a function because\n // the original code doesn't do that either.\n // The callback's return value is unused by generic-pool, so we don't return it.\n if (cb) {\n cb(err, client);\n }\n },\n priority,\n );\n });\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","startSpan","startSpanManual","SPAN_STATUS_ERROR"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/genericPool/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-generic-pool\n * - Upstream version: @opentelemetry/instrumentation-generic-pool@0.61.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport {\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_STATUS_ERROR,\n startSpan,\n startSpanManual,\n} from '@sentry/core';\nimport type * as genericPool from './generic-pool-types';\n\nconst MODULE_NAME = 'generic-pool';\nconst PACKAGE_NAME = '@sentry/instrumentation-generic-pool';\n\ntype AcquireFn = (this: unknown, ...args: unknown[]) => unknown;\ninterface PoolConstructor {\n prototype: { acquire: AcquireFn };\n}\ninterface GenericPoolModule {\n Pool: PoolConstructor;\n}\n\nexport class GenericPoolInstrumentation extends InstrumentationBase {\n // only used for v2 - v2.3)\n private _isDisabled = false;\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=3.0.0 <4'],\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(Pool.prototype, 'acquire', this._acquirePatcher.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n },\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.4.0 <3'],\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(Pool.prototype, 'acquire', this._acquireWithCallbacksPatcher.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n },\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.0.0 <2.4'],\n (moduleExports: GenericPoolModule) => {\n this._isDisabled = false;\n if (isWrapped(moduleExports.Pool)) {\n this._unwrap(moduleExports, 'Pool');\n }\n this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n // since the object is created on the fly every time, we need to use\n // a boolean switch here to disable the instrumentation\n this._isDisabled = true;\n return moduleExports;\n },\n ),\n ];\n }\n\n private _acquirePatcher(original: AcquireFn) {\n return function wrapped_acquire(this: genericPool.Pool<unknown>, ...args: unknown[]) {\n return startSpan(\n {\n name: 'generic-pool.acquire',\n attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.otel.generic_pool' },\n },\n () => {\n return original.call(this, ...args) as PromiseLike<unknown>;\n },\n );\n };\n }\n\n private _poolWrapper(original: (this: unknown, ...args: unknown[]) => { acquire: AcquireFn }) {\n const wrap = this._wrap.bind(this);\n const acquireWithCallbacksPatcher = this._acquireWithCallbacksPatcher.bind(this);\n return function wrapped_pool(this: unknown, ...args: unknown[]) {\n const pool = original.apply(this, args);\n wrap(pool, 'acquire', acquireWithCallbacksPatcher);\n return pool;\n };\n }\n\n private _acquireWithCallbacksPatcher(original: AcquireFn) {\n const isDisabled = (): boolean => this._isDisabled;\n return function wrapped_acquire(\n this: genericPool.Pool<unknown>,\n cb: (err: unknown, client: unknown) => unknown,\n priority: number,\n ) {\n // only used for v2 - v2.3\n if (isDisabled()) {\n return original.call(this, cb, priority);\n }\n\n return startSpanManual(\n {\n name: 'generic-pool.acquire',\n attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.otel.generic_pool' },\n },\n span => {\n original.call(\n this,\n (err: unknown, client: unknown) => {\n if (err) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n // Not checking whether cb is a function because\n // the original code doesn't do that either.\n // The callback's return value is unused by generic-pool, so we don't return it.\n if (cb) {\n cb(err, client);\n }\n },\n priority,\n );\n },\n );\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","startSpan","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","startSpanManual","SPAN_STATUS_ERROR"],"mappings":";;;;;AAqBA,MAAM,WAAA,GAAc,cAAA;AACpB,MAAM,YAAA,GAAe,sCAAA;AAUd,MAAM,mCAAmCA,mCAAA,CAAoB;AAAA,EAIlE,WAAA,CAAY,MAAA,GAAgC,EAAC,EAAG;AAC9C,IAAA,KAAA,CAAM,YAAA,EAAcC,kBAAa,MAAM,CAAA;AAHzC;AAAA,IAAA,IAAA,CAAQ,WAAA,GAAc,KAAA;AAAA,EAItB;AAAA,EAEA,IAAA,GAAO;AACL,IAAA,OAAO;AAAA,MACL,IAAIC,mDAAA;AAAA,QACF,WAAA;AAAA,QACA,CAAC,YAAY,CAAA;AAAA,QACb,CAAC,aAAA,KAAqC;AACpC,UAAA,MAAM,OAAO,aAAA,CAAc,IAAA;AAC3B,UAAA,IAAIC,yBAAA,CAAU,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG;AACrC,YAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAA,EAAW,SAAS,CAAA;AAAA,UACxC;AACA,UAAA,IAAA,CAAK,KAAA,CAAM,KAAK,SAAA,EAAW,SAAA,EAAW,KAAK,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAC,CAAA;AACrE,UAAA,OAAO,aAAA;AAAA,QACT,CAAA;AAAA,QACA,CAAC,aAAA,KAAqC;AACpC,UAAA,MAAM,OAAO,aAAA,CAAc,IAAA;AAC3B,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAA,EAAW,SAAS,CAAA;AACtC,UAAA,OAAO,aAAA;AAAA,QACT;AAAA,OACF;AAAA,MACA,IAAID,mDAAA;AAAA,QACF,WAAA;AAAA,QACA,CAAC,YAAY,CAAA;AAAA,QACb,CAAC,aAAA,KAAqC;AACpC,UAAA,MAAM,OAAO,aAAA,CAAc,IAAA;AAC3B,UAAA,IAAIC,yBAAA,CAAU,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG;AACrC,YAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAA,EAAW,SAAS,CAAA;AAAA,UACxC;AACA,UAAA,IAAA,CAAK,KAAA,CAAM,KAAK,SAAA,EAAW,SAAA,EAAW,KAAK,4BAAA,CAA6B,IAAA,CAAK,IAAI,CAAC,CAAA;AAClF,UAAA,OAAO,aAAA;AAAA,QACT,CAAA;AAAA,QACA,CAAC,aAAA,KAAqC;AACpC,UAAA,MAAM,OAAO,aAAA,CAAc,IAAA;AAC3B,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAA,EAAW,SAAS,CAAA;AACtC,UAAA,OAAO,aAAA;AAAA,QACT;AAAA,OACF;AAAA,MACA,IAAID,mDAAA;AAAA,QACF,WAAA;AAAA,QACA,CAAC,cAAc,CAAA;AAAA,QACf,CAAC,aAAA,KAAqC;AACpC,UAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,UAAA,IAAIC,yBAAA,CAAU,aAAA,CAAc,IAAI,CAAA,EAAG;AACjC,YAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,MAAM,CAAA;AAAA,UACpC;AACA,UAAA,IAAA,CAAK,MAAM,aAAA,EAAe,MAAA,EAAQ,KAAK,YAAA,CAAa,IAAA,CAAK,IAAI,CAAC,CAAA;AAC9D,UAAA,OAAO,aAAA;AAAA,QACT,CAAA;AAAA,QACA,CAAC,aAAA,KAAqC;AAGpC,UAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,UAAA,OAAO,aAAA;AAAA,QACT;AAAA;AACF,KACF;AAAA,EACF;AAAA,EAEQ,gBAAgB,QAAA,EAAqB;AAC3C,IAAA,OAAO,SAAS,mBAAoD,IAAA,EAAiB;AACnF,MAAA,OAAOC,cAAA;AAAA,QACL;AAAA,UACE,IAAA,EAAM,sBAAA;AAAA,UACN,UAAA,EAAY,EAAE,CAACC,qCAAgC,GAAG,2BAAA;AAA4B,SAChF;AAAA,QACA,MAAM;AACJ,UAAA,OAAO,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,GAAG,IAAI,CAAA;AAAA,QACpC;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EACF;AAAA,EAEQ,aAAa,QAAA,EAAyE;AAC5F,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AACjC,IAAA,MAAM,2BAAA,GAA8B,IAAA,CAAK,4BAAA,CAA6B,IAAA,CAAK,IAAI,CAAA;AAC/E,IAAA,OAAO,SAAS,gBAA+B,IAAA,EAAiB;AAC9D,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AACtC,MAAA,IAAA,CAAK,IAAA,EAAM,WAAW,2BAA2B,CAAA;AACjD,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,EACF;AAAA,EAEQ,6BAA6B,QAAA,EAAqB;AACxD,IAAA,MAAM,UAAA,GAAa,MAAe,IAAA,CAAK,WAAA;AACvC,IAAA,OAAO,SAAS,eAAA,CAEd,EAAA,EACA,QAAA,EACA;AAEA,MAAA,IAAI,YAAW,EAAG;AAChB,QAAA,OAAO,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,EAAA,EAAI,QAAQ,CAAA;AAAA,MACzC;AAEA,MAAA,OAAOC,oBAAA;AAAA,QACL;AAAA,UACE,IAAA,EAAM,sBAAA;AAAA,UACN,UAAA,EAAY,EAAE,CAACD,qCAAgC,GAAG,2BAAA;AAA4B,SAChF;AAAA,QACA,CAAA,IAAA,KAAQ;AACN,UAAA,QAAA,CAAS,IAAA;AAAA,YACP,IAAA;AAAA,YACA,CAAC,KAAc,MAAA,KAAoB;AACjC,cAAA,IAAI,GAAA,EAAK;AACP,gBAAA,IAAA,CAAK,UAAU,EAAE,IAAA,EAAME,sBAAA,EAAmB,OAAA,EAAS,kBAAkB,CAAA;AAAA,cACvE;AACA,cAAA,IAAA,CAAK,GAAA,EAAI;AAIT,cAAA,IAAI,EAAA,EAAI;AACN,gBAAA,EAAA,CAAG,KAAK,MAAM,CAAA;AAAA,cAChB;AAAA,YACF,CAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EACF;AACF;;;;"}
@@ -1,53 +1,14 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
- const api = require('@opentelemetry/api');
4
3
  const instrumentation = require('./vendored/instrumentation.js');
5
4
  const core = require('@sentry/core');
6
5
  const nodeCore = require('@sentry/node-core');
7
- const opentelemetry = require('@sentry/opentelemetry');
8
6
 
9
7
  const INTEGRATION_NAME = "Graphql";
10
8
  const instrumentGraphql = nodeCore.generateInstrumentOnce(
11
9
  INTEGRATION_NAME,
12
10
  instrumentation.GraphQLInstrumentation,
13
- (_options) => {
14
- const options = getOptionsWithDefaults(_options);
15
- return {
16
- ...options,
17
- responseHook(span, result) {
18
- nodeCore.addOriginToSpan(span, "auto.graphql.otel.graphql");
19
- const resultWithMaybeError = result;
20
- if (resultWithMaybeError.errors?.length && !core.spanToJSON(span).status) {
21
- span.setStatus({ code: api.SpanStatusCode.ERROR });
22
- }
23
- const attributes = core.spanToJSON(span).data;
24
- const operationType = attributes["graphql.operation.type"];
25
- const operationName = attributes["graphql.operation.name"];
26
- if (options.useOperationNameForRootSpan && operationType) {
27
- const rootSpan = core.getRootSpan(span);
28
- const rootSpanAttributes = core.spanToJSON(rootSpan).data;
29
- const existingOperations = rootSpanAttributes[opentelemetry.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || [];
30
- const newOperation = operationName ? `${operationType} ${operationName}` : `${operationType}`;
31
- if (Array.isArray(existingOperations)) {
32
- existingOperations.push(newOperation);
33
- rootSpan.setAttribute(opentelemetry.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, existingOperations);
34
- } else if (typeof existingOperations === "string") {
35
- rootSpan.setAttribute(opentelemetry.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, [existingOperations, newOperation]);
36
- } else {
37
- rootSpan.setAttribute(opentelemetry.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, newOperation);
38
- }
39
- if (!core.spanToJSON(rootSpan).data["original-description"]) {
40
- rootSpan.setAttribute("original-description", core.spanToJSON(rootSpan).description);
41
- }
42
- rootSpan.updateName(
43
- `${core.spanToJSON(rootSpan).data["original-description"]} (${getGraphqlOperationNamesFromAttribute(
44
- existingOperations
45
- )})`
46
- );
47
- }
48
- }
49
- };
50
- }
11
+ (_options) => getOptionsWithDefaults(_options)
51
12
  );
52
13
  const _graphqlIntegration = ((options = {}) => {
53
14
  return {
@@ -66,17 +27,6 @@ function getOptionsWithDefaults(options) {
66
27
  ...options
67
28
  };
68
29
  }
69
- function getGraphqlOperationNamesFromAttribute(attr) {
70
- if (Array.isArray(attr)) {
71
- const sorted = attr.slice().sort();
72
- if (sorted.length <= 5) {
73
- return sorted.join(", ");
74
- } else {
75
- return `${sorted.slice(0, 5).join(", ")}, +${sorted.length - 5}`;
76
- }
77
- }
78
- return `${attr}`;
79
- }
80
30
 
81
31
  exports.graphqlIntegration = graphqlIntegration;
82
32
  exports.instrumentGraphql = instrumentGraphql;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/graphql/index.ts"],"sourcesContent":["import type { AttributeValue } from '@opentelemetry/api';\nimport { SpanStatusCode } from '@opentelemetry/api';\nimport { GraphQLInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, getRootSpan, spanToJSON } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '@sentry/opentelemetry';\n\ninterface GraphqlOptions {\n /**\n * Do not create spans for resolvers.\n *\n * Defaults to true.\n */\n ignoreResolveSpans?: boolean;\n\n /**\n * Don't create spans for the execution of the default resolver on object properties.\n *\n * When a resolver function is not defined on the schema for a field, graphql will\n * use the default resolver which just looks for a property with that name on the object.\n * If the property is not a function, it's not very interesting to trace.\n * This option can reduce noise and number of spans created.\n *\n * Defaults to true.\n */\n ignoreTrivialResolveSpans?: boolean;\n\n /**\n * If this is enabled, a http.server root span containing this span will automatically be renamed to include the operation name.\n * Set this to `false` if you do not want this behavior, and want to keep the default http.server span name.\n *\n * Defaults to true.\n */\n useOperationNameForRootSpan?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Graphql';\n\nexport const instrumentGraphql = generateInstrumentOnce(\n INTEGRATION_NAME,\n GraphQLInstrumentation,\n (_options: GraphqlOptions) => {\n const options = getOptionsWithDefaults(_options);\n\n return {\n ...options,\n responseHook(span, result) {\n addOriginToSpan(span, 'auto.graphql.otel.graphql');\n\n // We want to ensure spans are marked as errored if there are errors in the result\n // We only do that if the span is not already marked with a status\n const resultWithMaybeError = result as { errors?: { message: string }[] };\n if (resultWithMaybeError.errors?.length && !spanToJSON(span).status) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n\n const attributes = spanToJSON(span).data;\n\n // If operation.name is not set, we fall back to use operation.type only\n const operationType = attributes['graphql.operation.type'];\n const operationName = attributes['graphql.operation.name'];\n\n if (options.useOperationNameForRootSpan && operationType) {\n const rootSpan = getRootSpan(span);\n const rootSpanAttributes = spanToJSON(rootSpan).data;\n\n const existingOperations = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || [];\n\n const newOperation = operationName ? `${operationType} ${operationName}` : `${operationType}`;\n\n // We keep track of each operation on the root span\n // This can either be a string, or an array of strings (if there are multiple operations)\n if (Array.isArray(existingOperations)) {\n (existingOperations as string[]).push(newOperation);\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, existingOperations);\n } else if (typeof existingOperations === 'string') {\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, [existingOperations, newOperation]);\n } else {\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, newOperation);\n }\n\n if (!spanToJSON(rootSpan).data['original-description']) {\n rootSpan.setAttribute('original-description', spanToJSON(rootSpan).description);\n }\n // Important for e.g. @sentry/aws-serverless because this would otherwise overwrite the name again\n rootSpan.updateName(\n `${spanToJSON(rootSpan).data['original-description']} (${getGraphqlOperationNamesFromAttribute(\n existingOperations,\n )})`,\n );\n }\n },\n };\n },\n);\n\nconst _graphqlIntegration = ((options: GraphqlOptions = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // We set defaults here, too, because otherwise we'd update the instrumentation config\n // to the config without defaults, as `generateInstrumentOnce` automatically calls `setConfig(options)`\n // when being called the second time\n instrumentGraphql(getOptionsWithDefaults(options));\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [graphql](https://www.npmjs.com/package/graphql) library.\n *\n * For more information, see the [`graphqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/graphql/).\n *\n * @param {GraphqlOptions} options Configuration options for the GraphQL integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.graphqlIntegration()],\n * });\n */\nexport const graphqlIntegration = defineIntegration(_graphqlIntegration);\n\nfunction getOptionsWithDefaults(options?: GraphqlOptions): GraphqlOptions {\n return {\n ignoreResolveSpans: true,\n ignoreTrivialResolveSpans: true,\n useOperationNameForRootSpan: true,\n ...options,\n };\n}\n\n// copy from packages/opentelemetry/utils\nfunction getGraphqlOperationNamesFromAttribute(attr: AttributeValue): string {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n"],"names":["generateInstrumentOnce","GraphQLInstrumentation","addOriginToSpan","spanToJSON","SpanStatusCode","getRootSpan","SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION","defineIntegration"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/graphql/index.ts"],"sourcesContent":["import { GraphQLInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\ninterface GraphqlOptions {\n /**\n * Do not create spans for resolvers.\n *\n * Defaults to true.\n */\n ignoreResolveSpans?: boolean;\n\n /**\n * Don't create spans for the execution of the default resolver on object properties.\n *\n * When a resolver function is not defined on the schema for a field, graphql will\n * use the default resolver which just looks for a property with that name on the object.\n * If the property is not a function, it's not very interesting to trace.\n * This option can reduce noise and number of spans created.\n *\n * Defaults to true.\n */\n ignoreTrivialResolveSpans?: boolean;\n\n /**\n * If this is enabled, a http.server root span containing this span will automatically be renamed to include the operation name.\n * Set this to `false` if you do not want this behavior, and want to keep the default http.server span name.\n *\n * Defaults to true.\n */\n useOperationNameForRootSpan?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Graphql';\n\nexport const instrumentGraphql = generateInstrumentOnce(\n INTEGRATION_NAME,\n GraphQLInstrumentation,\n (_options: GraphqlOptions) => getOptionsWithDefaults(_options),\n);\n\nconst _graphqlIntegration = ((options: GraphqlOptions = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // We set defaults here, too, because otherwise we'd update the instrumentation config\n // to the config without defaults, as `generateInstrumentOnce` automatically calls `setConfig(options)`\n // when being called the second time\n instrumentGraphql(getOptionsWithDefaults(options));\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [graphql](https://www.npmjs.com/package/graphql) library.\n *\n * For more information, see the [`graphqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/graphql/).\n *\n * @param {GraphqlOptions} options Configuration options for the GraphQL integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.graphqlIntegration()],\n * });\n */\nexport const graphqlIntegration = defineIntegration(_graphqlIntegration);\n\nfunction getOptionsWithDefaults(options?: GraphqlOptions): GraphqlOptions {\n return {\n ignoreResolveSpans: true,\n ignoreTrivialResolveSpans: true,\n useOperationNameForRootSpan: true,\n ...options,\n };\n}\n"],"names":["generateInstrumentOnce","GraphQLInstrumentation","defineIntegration"],"mappings":";;;;;;AAkCA,MAAM,gBAAA,GAAmB,SAAA;AAElB,MAAM,iBAAA,GAAoBA,+BAAA;AAAA,EAC/B,gBAAA;AAAA,EACAC,sCAAA;AAAA,EACA,CAAC,QAAA,KAA6B,sBAAA,CAAuB,QAAQ;AAC/D;AAEA,MAAM,mBAAA,IAAuB,CAAC,OAAA,GAA0B,EAAC,KAAM;AAC7D,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AAIV,MAAA,iBAAA,CAAkB,sBAAA,CAAuB,OAAO,CAAC,CAAA;AAAA,IACnD;AAAA,GACF;AACF,CAAA,CAAA;AAiBO,MAAM,kBAAA,GAAqBC,uBAAkB,mBAAmB;AAEvE,SAAS,uBAAuB,OAAA,EAA0C;AACxE,EAAA,OAAO;AAAA,IACL,kBAAA,EAAoB,IAAA;AAAA,IACpB,yBAAA,EAA2B,IAAA;AAAA,IAC3B,2BAAA,EAA6B,IAAA;AAAA,IAC7B,GAAG;AAAA,GACL;AACF;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"enum.js","sources":["../../../../../../src/integrations/tracing/graphql/vendored/enum.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-graphql\n * - Upstream version: @opentelemetry/instrumentation-graphql@0.66.0\n */\n/* eslint-disable */\n\nexport enum AllowedOperationTypes {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n\nexport enum TokenKind {\n SOF = '<SOF>',\n EOF = '<EOF>',\n BANG = '!',\n DOLLAR = '$',\n AMP = '&',\n PAREN_L = '(',\n PAREN_R = ')',\n SPREAD = '...',\n COLON = ':',\n EQUALS = '=',\n AT = '@',\n BRACKET_L = '[',\n BRACKET_R = ']',\n BRACE_L = '{',\n PIPE = '|',\n BRACE_R = '}',\n NAME = 'Name',\n INT = 'Int',\n FLOAT = 'Float',\n STRING = 'String',\n BLOCK_STRING = 'BlockString',\n COMMENT = 'Comment',\n}\n\nexport enum SpanNames {\n EXECUTE = 'graphql.execute',\n PARSE = 'graphql.parse',\n RESOLVE = 'graphql.resolve',\n VALIDATE = 'graphql.validate',\n SCHEMA_VALIDATE = 'graphql.validateSchema',\n SCHEMA_PARSE = 'graphql.parseSchema',\n}\n"],"names":["AllowedOperationTypes","TokenKind","SpanNames"],"mappings":";;AAqBO,IAAK,qBAAA,qBAAAA,sBAAAA,KAAL;AACL,EAAAA,uBAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,uBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,uBAAA,cAAA,CAAA,GAAe,cAAA;AAHL,EAAA,OAAAA,sBAAAA;AAAA,CAAA,EAAA,qBAAA,IAAA,EAAA;AAML,IAAK,SAAA,qBAAAC,UAAAA,KAAL;AACL,EAAAA,WAAA,KAAA,CAAA,GAAM,OAAA;AACN,EAAAA,WAAA,KAAA,CAAA,GAAM,OAAA;AACN,EAAAA,WAAA,MAAA,CAAA,GAAO,GAAA;AACP,EAAAA,WAAA,QAAA,CAAA,GAAS,GAAA;AACT,EAAAA,WAAA,KAAA,CAAA,GAAM,GAAA;AACN,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,QAAA,CAAA,GAAS,KAAA;AACT,EAAAA,WAAA,OAAA,CAAA,GAAQ,GAAA;AACR,EAAAA,WAAA,QAAA,CAAA,GAAS,GAAA;AACT,EAAAA,WAAA,IAAA,CAAA,GAAK,GAAA;AACL,EAAAA,WAAA,WAAA,CAAA,GAAY,GAAA;AACZ,EAAAA,WAAA,WAAA,CAAA,GAAY,GAAA;AACZ,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,MAAA,CAAA,GAAO,GAAA;AACP,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,WAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,WAAA,cAAA,CAAA,GAAe,aAAA;AACf,EAAAA,WAAA,SAAA,CAAA,GAAU,SAAA;AAtBA,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAyBL,IAAK,SAAA,qBAAAC,UAAAA,KAAL;AACL,EAAAA,WAAA,SAAA,CAAA,GAAU,iBAAA;AACV,EAAAA,WAAA,OAAA,CAAA,GAAQ,eAAA;AACR,EAAAA,WAAA,SAAA,CAAA,GAAU,iBAAA;AACV,EAAAA,WAAA,UAAA,CAAA,GAAW,kBAAA;AACX,EAAAA,WAAA,iBAAA,CAAA,GAAkB,wBAAA;AAClB,EAAAA,WAAA,cAAA,CAAA,GAAe,qBAAA;AANL,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;;;;;;"}
1
+ {"version":3,"file":"enum.js","sources":["../../../../../../src/integrations/tracing/graphql/vendored/enum.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-graphql\n * - Upstream version: @opentelemetry/instrumentation-graphql@0.66.0\n */\n\nexport enum AllowedOperationTypes {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n\nexport enum TokenKind {\n SOF = '<SOF>',\n EOF = '<EOF>',\n BANG = '!',\n DOLLAR = '$',\n AMP = '&',\n PAREN_L = '(',\n PAREN_R = ')',\n SPREAD = '...',\n COLON = ':',\n EQUALS = '=',\n AT = '@',\n BRACKET_L = '[',\n BRACKET_R = ']',\n BRACE_L = '{',\n PIPE = '|',\n BRACE_R = '}',\n NAME = 'Name',\n INT = 'Int',\n FLOAT = 'Float',\n STRING = 'String',\n BLOCK_STRING = 'BlockString',\n COMMENT = 'Comment',\n}\n\nexport enum SpanNames {\n EXECUTE = 'graphql.execute',\n PARSE = 'graphql.parse',\n RESOLVE = 'graphql.resolve',\n VALIDATE = 'graphql.validate',\n SCHEMA_VALIDATE = 'graphql.validateSchema',\n SCHEMA_PARSE = 'graphql.parseSchema',\n}\n"],"names":["AllowedOperationTypes","TokenKind","SpanNames"],"mappings":";;AASO,IAAK,qBAAA,qBAAAA,sBAAAA,KAAL;AACL,EAAAA,uBAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,uBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,uBAAA,cAAA,CAAA,GAAe,cAAA;AAHL,EAAA,OAAAA,sBAAAA;AAAA,CAAA,EAAA,qBAAA,IAAA,EAAA;AAML,IAAK,SAAA,qBAAAC,UAAAA,KAAL;AACL,EAAAA,WAAA,KAAA,CAAA,GAAM,OAAA;AACN,EAAAA,WAAA,KAAA,CAAA,GAAM,OAAA;AACN,EAAAA,WAAA,MAAA,CAAA,GAAO,GAAA;AACP,EAAAA,WAAA,QAAA,CAAA,GAAS,GAAA;AACT,EAAAA,WAAA,KAAA,CAAA,GAAM,GAAA;AACN,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,QAAA,CAAA,GAAS,KAAA;AACT,EAAAA,WAAA,OAAA,CAAA,GAAQ,GAAA;AACR,EAAAA,WAAA,QAAA,CAAA,GAAS,GAAA;AACT,EAAAA,WAAA,IAAA,CAAA,GAAK,GAAA;AACL,EAAAA,WAAA,WAAA,CAAA,GAAY,GAAA;AACZ,EAAAA,WAAA,WAAA,CAAA,GAAY,GAAA;AACZ,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,MAAA,CAAA,GAAO,GAAA;AACP,EAAAA,WAAA,SAAA,CAAA,GAAU,GAAA;AACV,EAAAA,WAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,WAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,WAAA,cAAA,CAAA,GAAe,aAAA;AACf,EAAAA,WAAA,SAAA,CAAA,GAAU,SAAA;AAtBA,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAyBL,IAAK,SAAA,qBAAAC,UAAAA,KAAL;AACL,EAAAA,WAAA,SAAA,CAAA,GAAU,iBAAA;AACV,EAAAA,WAAA,OAAA,CAAA,GAAQ,eAAA;AACR,EAAAA,WAAA,SAAA,CAAA,GAAU,iBAAA;AACV,EAAAA,WAAA,UAAA,CAAA,GAAW,kBAAA;AACX,EAAAA,WAAA,iBAAA,CAAA,GAAkB,wBAAA;AAClB,EAAAA,WAAA,cAAA,CAAA,GAAe,qBAAA;AANL,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;;;;;;"}
@@ -8,8 +8,6 @@ var AttributeNames = /* @__PURE__ */ ((AttributeNames2) => {
8
8
  AttributeNames2["PARENT_NAME"] = "graphql.parent.name";
9
9
  AttributeNames2["OPERATION_TYPE"] = "graphql.operation.type";
10
10
  AttributeNames2["OPERATION_NAME"] = "graphql.operation.name";
11
- AttributeNames2["VARIABLES"] = "graphql.variables.";
12
- AttributeNames2["ERROR_VALIDATION_NAME"] = "graphql.validation.error";
13
11
  return AttributeNames2;
14
12
  })(AttributeNames || {});
15
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeNames.js","sources":["../../../../../../../src/integrations/tracing/graphql/vendored/enums/AttributeNames.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-graphql\n * - Upstream version: @opentelemetry/instrumentation-graphql@0.66.0\n */\n/* eslint-disable */\n\nexport enum AttributeNames {\n SOURCE = 'graphql.source',\n FIELD_NAME = 'graphql.field.name',\n FIELD_PATH = 'graphql.field.path',\n FIELD_TYPE = 'graphql.field.type',\n PARENT_NAME = 'graphql.parent.name',\n OPERATION_TYPE = 'graphql.operation.type',\n OPERATION_NAME = 'graphql.operation.name',\n VARIABLES = 'graphql.variables.',\n ERROR_VALIDATION_NAME = 'graphql.validation.error',\n}\n"],"names":["AttributeNames"],"mappings":";;AAqBO,IAAK,cAAA,qBAAAA,eAAAA,KAAL;AACL,EAAAA,gBAAA,QAAA,CAAA,GAAS,gBAAA;AACT,EAAAA,gBAAA,YAAA,CAAA,GAAa,oBAAA;AACb,EAAAA,gBAAA,YAAA,CAAA,GAAa,oBAAA;AACb,EAAAA,gBAAA,YAAA,CAAA,GAAa,oBAAA;AACb,EAAAA,gBAAA,aAAA,CAAA,GAAc,qBAAA;AACd,EAAAA,gBAAA,gBAAA,CAAA,GAAiB,wBAAA;AACjB,EAAAA,gBAAA,gBAAA,CAAA,GAAiB,wBAAA;AACjB,EAAAA,gBAAA,WAAA,CAAA,GAAY,oBAAA;AACZ,EAAAA,gBAAA,uBAAA,CAAA,GAAwB,0BAAA;AATd,EAAA,OAAAA,eAAAA;AAAA,CAAA,EAAA,cAAA,IAAA,EAAA;;;;"}
1
+ {"version":3,"file":"AttributeNames.js","sources":["../../../../../../../src/integrations/tracing/graphql/vendored/enums/AttributeNames.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-graphql\n * - Upstream version: @opentelemetry/instrumentation-graphql@0.66.0\n */\n\nexport enum AttributeNames {\n SOURCE = 'graphql.source',\n FIELD_NAME = 'graphql.field.name',\n FIELD_PATH = 'graphql.field.path',\n FIELD_TYPE = 'graphql.field.type',\n PARENT_NAME = 'graphql.parent.name',\n OPERATION_TYPE = 'graphql.operation.type',\n OPERATION_NAME = 'graphql.operation.name',\n}\n"],"names":["AttributeNames"],"mappings":";;AASO,IAAK,cAAA,qBAAAA,eAAAA,KAAL;AACL,EAAAA,gBAAA,QAAA,CAAA,GAAS,gBAAA;AACT,EAAAA,gBAAA,YAAA,CAAA,GAAa,oBAAA;AACb,EAAAA,gBAAA,YAAA,CAAA,GAAa,oBAAA;AACb,EAAAA,gBAAA,YAAA,CAAA,GAAa,oBAAA;AACb,EAAAA,gBAAA,aAAA,CAAA,GAAc,qBAAA;AACd,EAAAA,gBAAA,gBAAA,CAAA,GAAiB,wBAAA;AACjB,EAAAA,gBAAA,gBAAA,CAAA,GAAiB,wBAAA;AAPP,EAAA,OAAAA,eAAAA;AAAA,CAAA,EAAA,cAAA,IAAA,EAAA;;;;"}