dd-trace 5.84.0 → 5.86.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 (628) hide show
  1. package/ci/cypress/polyfills.js +1 -1
  2. package/ci/init.js +5 -5
  3. package/ext/exporters.js +1 -1
  4. package/ext/formats.js +1 -1
  5. package/ext/index.js +1 -1
  6. package/ext/kinds.js +1 -1
  7. package/ext/priority.js +1 -1
  8. package/ext/scopes.js +1 -1
  9. package/ext/tags.js +1 -1
  10. package/ext/types.js +1 -1
  11. package/index.d.ts +96 -24
  12. package/initialize.mjs +47 -31
  13. package/loader-hook.mjs +35 -22
  14. package/package.json +34 -31
  15. package/packages/datadog-code-origin/index.js +12 -10
  16. package/packages/datadog-core/src/storage.js +30 -12
  17. package/packages/datadog-core/src/utils/src/pick.js +2 -2
  18. package/packages/datadog-esbuild/index.js +75 -79
  19. package/packages/datadog-esbuild/src/log.js +32 -0
  20. package/packages/datadog-esbuild/src/utils.js +12 -8
  21. package/packages/datadog-instrumentations/src/aerospike.js +3 -3
  22. package/packages/datadog-instrumentations/src/ai.js +5 -5
  23. package/packages/datadog-instrumentations/src/amqp10.js +1 -1
  24. package/packages/datadog-instrumentations/src/amqplib.js +1 -1
  25. package/packages/datadog-instrumentations/src/anthropic.js +3 -3
  26. package/packages/datadog-instrumentations/src/apollo-server.js +4 -4
  27. package/packages/datadog-instrumentations/src/apollo.js +2 -2
  28. package/packages/datadog-instrumentations/src/avsc.js +1 -1
  29. package/packages/datadog-instrumentations/src/aws-sdk.js +4 -4
  30. package/packages/datadog-instrumentations/src/azure-event-hubs.js +2 -2
  31. package/packages/datadog-instrumentations/src/azure-functions.js +1 -1
  32. package/packages/datadog-instrumentations/src/azure-service-bus.js +1 -1
  33. package/packages/datadog-instrumentations/src/body-parser.js +2 -2
  34. package/packages/datadog-instrumentations/src/bunyan.js +1 -1
  35. package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
  36. package/packages/datadog-instrumentations/src/child_process.js +7 -7
  37. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +17 -16
  38. package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
  39. package/packages/datadog-instrumentations/src/couchbase.js +8 -6
  40. package/packages/datadog-instrumentations/src/crypto.js +1 -1
  41. package/packages/datadog-instrumentations/src/cucumber.js +19 -19
  42. package/packages/datadog-instrumentations/src/cypress.js +1 -1
  43. package/packages/datadog-instrumentations/src/dns.js +2 -2
  44. package/packages/datadog-instrumentations/src/elasticsearch.js +2 -2
  45. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +2 -2
  46. package/packages/datadog-instrumentations/src/express-session.js +1 -1
  47. package/packages/datadog-instrumentations/src/express.js +4 -4
  48. package/packages/datadog-instrumentations/src/fastify.js +1 -1
  49. package/packages/datadog-instrumentations/src/fetch.js +2 -2
  50. package/packages/datadog-instrumentations/src/fs.js +7 -7
  51. package/packages/datadog-instrumentations/src/generic-pool.js +2 -2
  52. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +8 -8
  53. package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +4 -4
  54. package/packages/datadog-instrumentations/src/google-genai.js +1 -1
  55. package/packages/datadog-instrumentations/src/graphql.js +10 -10
  56. package/packages/datadog-instrumentations/src/grpc/client.js +9 -13
  57. package/packages/datadog-instrumentations/src/grpc/types.js +1 -1
  58. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
  59. package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +1 -1
  60. package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +2 -2
  61. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -1
  62. package/packages/datadog-instrumentations/src/helpers/register.js +7 -7
  63. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +1 -1
  64. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/langchain.js +55 -55
  65. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +1 -1
  66. package/packages/datadog-instrumentations/src/helpers/router-helper.js +7 -7
  67. package/packages/datadog-instrumentations/src/helpers/shared-utils.js +1 -1
  68. package/packages/datadog-instrumentations/src/hono.js +6 -6
  69. package/packages/datadog-instrumentations/src/http/client.js +1 -1
  70. package/packages/datadog-instrumentations/src/http/server.js +4 -4
  71. package/packages/datadog-instrumentations/src/http2/server.js +1 -1
  72. package/packages/datadog-instrumentations/src/ioredis.js +1 -1
  73. package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
  74. package/packages/datadog-instrumentations/src/jest.js +196 -66
  75. package/packages/datadog-instrumentations/src/kafkajs.js +9 -8
  76. package/packages/datadog-instrumentations/src/knex.js +2 -2
  77. package/packages/datadog-instrumentations/src/koa.js +3 -1
  78. package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
  79. package/packages/datadog-instrumentations/src/light-my-request.js +1 -1
  80. package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
  81. package/packages/datadog-instrumentations/src/mariadb.js +1 -1
  82. package/packages/datadog-instrumentations/src/memcached.js +1 -1
  83. package/packages/datadog-instrumentations/src/mocha/common.js +3 -3
  84. package/packages/datadog-instrumentations/src/mocha/main.js +33 -24
  85. package/packages/datadog-instrumentations/src/mocha/utils.js +15 -11
  86. package/packages/datadog-instrumentations/src/mocha/worker.js +4 -4
  87. package/packages/datadog-instrumentations/src/moleculer/server.js +1 -1
  88. package/packages/datadog-instrumentations/src/mongodb-core.js +3 -3
  89. package/packages/datadog-instrumentations/src/mongodb.js +7 -7
  90. package/packages/datadog-instrumentations/src/mongoose.js +10 -10
  91. package/packages/datadog-instrumentations/src/mquery.js +6 -6
  92. package/packages/datadog-instrumentations/src/multer.js +1 -1
  93. package/packages/datadog-instrumentations/src/mysql.js +1 -1
  94. package/packages/datadog-instrumentations/src/net.js +6 -6
  95. package/packages/datadog-instrumentations/src/next.js +6 -6
  96. package/packages/datadog-instrumentations/src/nyc.js +34 -2
  97. package/packages/datadog-instrumentations/src/openai.js +24 -24
  98. package/packages/datadog-instrumentations/src/oracledb.js +2 -2
  99. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +1 -1
  100. package/packages/datadog-instrumentations/src/passport-http.js +1 -1
  101. package/packages/datadog-instrumentations/src/passport-local.js +1 -1
  102. package/packages/datadog-instrumentations/src/passport-utils.js +1 -1
  103. package/packages/datadog-instrumentations/src/passport.js +1 -1
  104. package/packages/datadog-instrumentations/src/pg.js +3 -3
  105. package/packages/datadog-instrumentations/src/pino.js +2 -2
  106. package/packages/datadog-instrumentations/src/playwright.js +59 -59
  107. package/packages/datadog-instrumentations/src/prisma.js +216 -75
  108. package/packages/datadog-instrumentations/src/promise-js.js +1 -1
  109. package/packages/datadog-instrumentations/src/promise.js +1 -1
  110. package/packages/datadog-instrumentations/src/protobufjs.js +6 -6
  111. package/packages/datadog-instrumentations/src/q.js +2 -2
  112. package/packages/datadog-instrumentations/src/redis.js +2 -2
  113. package/packages/datadog-instrumentations/src/rhea.js +5 -5
  114. package/packages/datadog-instrumentations/src/router.js +8 -8
  115. package/packages/datadog-instrumentations/src/selenium.js +3 -3
  116. package/packages/datadog-instrumentations/src/sequelize.js +1 -1
  117. package/packages/datadog-instrumentations/src/sharedb.js +2 -2
  118. package/packages/datadog-instrumentations/src/tedious.js +1 -1
  119. package/packages/datadog-instrumentations/src/undici.js +2 -2
  120. package/packages/datadog-instrumentations/src/url.js +5 -5
  121. package/packages/datadog-instrumentations/src/vitest.js +56 -45
  122. package/packages/datadog-instrumentations/src/when.js +1 -1
  123. package/packages/datadog-instrumentations/src/winston.js +1 -1
  124. package/packages/datadog-instrumentations/src/ws.js +150 -41
  125. package/packages/datadog-plugin-aerospike/src/index.js +4 -4
  126. package/packages/datadog-plugin-ai/src/index.js +1 -1
  127. package/packages/datadog-plugin-ai/src/tracing.js +2 -2
  128. package/packages/datadog-plugin-ai/src/utils.js +1 -1
  129. package/packages/datadog-plugin-amqp10/src/consumer.js +2 -2
  130. package/packages/datadog-plugin-amqp10/src/index.js +1 -1
  131. package/packages/datadog-plugin-amqp10/src/producer.js +2 -2
  132. package/packages/datadog-plugin-amqplib/src/client.js +2 -2
  133. package/packages/datadog-plugin-amqplib/src/consumer.js +2 -2
  134. package/packages/datadog-plugin-amqplib/src/index.js +1 -1
  135. package/packages/datadog-plugin-amqplib/src/producer.js +2 -2
  136. package/packages/datadog-plugin-amqplib/src/util.js +1 -1
  137. package/packages/datadog-plugin-anthropic/src/index.js +1 -1
  138. package/packages/datadog-plugin-anthropic/src/tracing.js +2 -2
  139. package/packages/datadog-plugin-apollo/src/gateway/fetch.js +1 -1
  140. package/packages/datadog-plugin-apollo/src/gateway/index.js +1 -1
  141. package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -5
  142. package/packages/datadog-plugin-apollo/src/index.js +1 -1
  143. package/packages/datadog-plugin-avsc/src/schema_iterator.js +3 -3
  144. package/packages/datadog-plugin-aws-sdk/src/base.js +11 -10
  145. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
  146. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +1 -1
  147. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +24 -24
  148. package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +1 -1
  149. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +1 -1
  150. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +6 -6
  151. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +3 -3
  152. package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +1 -1
  153. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +1 -1
  154. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +5 -5
  155. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +12 -12
  156. package/packages/datadog-plugin-aws-sdk/src/util.js +1 -1
  157. package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
  158. package/packages/datadog-plugin-azure-event-hubs/src/producer.js +3 -3
  159. package/packages/datadog-plugin-azure-functions/src/index.js +11 -10
  160. package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
  161. package/packages/datadog-plugin-azure-service-bus/src/producer.js +3 -3
  162. package/packages/datadog-plugin-bullmq/src/consumer.js +2 -2
  163. package/packages/datadog-plugin-bullmq/src/index.js +1 -1
  164. package/packages/datadog-plugin-bullmq/src/producer.js +11 -11
  165. package/packages/datadog-plugin-cassandra-driver/src/index.js +2 -2
  166. package/packages/datadog-plugin-child_process/src/index.js +2 -2
  167. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +5 -5
  168. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
  169. package/packages/datadog-plugin-couchbase/src/index.js +3 -3
  170. package/packages/datadog-plugin-cucumber/src/index.js +17 -23
  171. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +73 -56
  172. package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
  173. package/packages/datadog-plugin-cypress/src/support.js +56 -9
  174. package/packages/datadog-plugin-dd-trace-api/src/index.js +1 -1
  175. package/packages/datadog-plugin-dns/src/index.js +1 -1
  176. package/packages/datadog-plugin-dns/src/lookup.js +2 -2
  177. package/packages/datadog-plugin-dns/src/lookup_service.js +3 -3
  178. package/packages/datadog-plugin-dns/src/resolve.js +2 -2
  179. package/packages/datadog-plugin-dns/src/reverse.js +2 -2
  180. package/packages/datadog-plugin-elasticsearch/src/index.js +2 -2
  181. package/packages/datadog-plugin-express/src/index.js +1 -1
  182. package/packages/datadog-plugin-fastify/src/index.js +1 -1
  183. package/packages/datadog-plugin-fs/src/index.js +2 -2
  184. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +2 -2
  185. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +10 -10
  186. package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -1
  187. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +11 -10
  188. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +6 -6
  189. package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
  190. package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +2 -2
  191. package/packages/datadog-plugin-google-cloud-vertexai/src/utils.js +1 -1
  192. package/packages/datadog-plugin-google-genai/src/index.js +1 -1
  193. package/packages/datadog-plugin-google-genai/src/tracing.js +2 -2
  194. package/packages/datadog-plugin-graphql/src/execute.js +2 -2
  195. package/packages/datadog-plugin-graphql/src/index.js +2 -2
  196. package/packages/datadog-plugin-graphql/src/parse.js +1 -1
  197. package/packages/datadog-plugin-graphql/src/resolve.js +6 -6
  198. package/packages/datadog-plugin-graphql/src/utils.js +1 -1
  199. package/packages/datadog-plugin-graphql/src/validate.js +2 -2
  200. package/packages/datadog-plugin-grpc/src/client.js +3 -3
  201. package/packages/datadog-plugin-grpc/src/index.js +1 -1
  202. package/packages/datadog-plugin-grpc/src/server.js +3 -3
  203. package/packages/datadog-plugin-grpc/src/util.js +2 -2
  204. package/packages/datadog-plugin-http/src/client.js +10 -10
  205. package/packages/datadog-plugin-http/src/index.js +1 -1
  206. package/packages/datadog-plugin-http/src/server.js +23 -8
  207. package/packages/datadog-plugin-http2/src/client.js +6 -6
  208. package/packages/datadog-plugin-http2/src/index.js +1 -1
  209. package/packages/datadog-plugin-http2/src/server.js +1 -1
  210. package/packages/datadog-plugin-jest/src/index.js +67 -31
  211. package/packages/datadog-plugin-jest/src/util.js +8 -2
  212. package/packages/datadog-plugin-kafkajs/src/consumer.js +5 -5
  213. package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
  214. package/packages/datadog-plugin-kafkajs/src/producer.js +5 -5
  215. package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
  216. package/packages/datadog-plugin-langchain/src/tokens.js +2 -2
  217. package/packages/datadog-plugin-langchain/src/tracing.js +4 -4
  218. package/packages/datadog-plugin-memcached/src/index.js +2 -2
  219. package/packages/datadog-plugin-mocha/src/index.js +15 -27
  220. package/packages/datadog-plugin-moleculer/src/client.js +1 -1
  221. package/packages/datadog-plugin-moleculer/src/index.js +1 -1
  222. package/packages/datadog-plugin-moleculer/src/server.js +2 -2
  223. package/packages/datadog-plugin-moleculer/src/util.js +1 -1
  224. package/packages/datadog-plugin-mongodb-core/src/index.js +5 -5
  225. package/packages/datadog-plugin-mysql/src/index.js +2 -2
  226. package/packages/datadog-plugin-net/src/ipc.js +2 -2
  227. package/packages/datadog-plugin-net/src/tcp.js +4 -4
  228. package/packages/datadog-plugin-next/src/index.js +4 -4
  229. package/packages/datadog-plugin-nyc/src/index.js +60 -0
  230. package/packages/datadog-plugin-openai/src/index.js +1 -1
  231. package/packages/datadog-plugin-openai/src/services.js +3 -3
  232. package/packages/datadog-plugin-openai/src/stream-helpers.js +1 -1
  233. package/packages/datadog-plugin-openai/src/tracing.js +10 -10
  234. package/packages/datadog-plugin-oracledb/src/connection-parser.js +1 -1
  235. package/packages/datadog-plugin-oracledb/src/index.js +1 -1
  236. package/packages/datadog-plugin-pg/src/index.js +2 -2
  237. package/packages/datadog-plugin-playwright/src/index.js +22 -19
  238. package/packages/datadog-plugin-prisma/src/datadog-tracing-helper.js +118 -0
  239. package/packages/datadog-plugin-prisma/src/index.js +132 -10
  240. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +3 -3
  241. package/packages/datadog-plugin-redis/src/index.js +2 -2
  242. package/packages/datadog-plugin-restify/src/index.js +1 -1
  243. package/packages/datadog-plugin-rhea/src/consumer.js +2 -2
  244. package/packages/datadog-plugin-rhea/src/index.js +1 -1
  245. package/packages/datadog-plugin-rhea/src/producer.js +2 -2
  246. package/packages/datadog-plugin-router/src/index.js +31 -22
  247. package/packages/datadog-plugin-selenium/src/index.js +2 -2
  248. package/packages/datadog-plugin-sharedb/src/index.js +2 -2
  249. package/packages/datadog-plugin-tedious/src/index.js +2 -2
  250. package/packages/datadog-plugin-undici/src/index.js +5 -5
  251. package/packages/datadog-plugin-vitest/src/index.js +42 -25
  252. package/packages/datadog-plugin-ws/src/close.js +10 -11
  253. package/packages/datadog-plugin-ws/src/index.js +1 -1
  254. package/packages/datadog-plugin-ws/src/producer.js +8 -9
  255. package/packages/datadog-plugin-ws/src/receiver.js +8 -9
  256. package/packages/datadog-plugin-ws/src/server.js +25 -12
  257. package/packages/datadog-plugin-ws/src/util.js +48 -16
  258. package/packages/datadog-shimmer/src/shimmer.js +3 -3
  259. package/packages/dd-trace/index.js +2 -2
  260. package/packages/dd-trace/src/agent/info.js +2 -2
  261. package/packages/dd-trace/src/agent/url.js +1 -1
  262. package/packages/dd-trace/src/aiguard/client.js +3 -3
  263. package/packages/dd-trace/src/aiguard/sdk.js +6 -6
  264. package/packages/dd-trace/src/aiguard/tags.js +1 -1
  265. package/packages/dd-trace/src/analytics_sampler.js +1 -1
  266. package/packages/dd-trace/src/appsec/activation.js +1 -1
  267. package/packages/dd-trace/src/appsec/addresses.js +1 -1
  268. package/packages/dd-trace/src/appsec/api_security_sampler.js +1 -1
  269. package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
  270. package/packages/dd-trace/src/appsec/blocking.js +5 -5
  271. package/packages/dd-trace/src/appsec/channels.js +1 -1
  272. package/packages/dd-trace/src/appsec/graphql.js +13 -13
  273. package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +1 -1
  274. package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
  275. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +6 -5
  276. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +2 -2
  277. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-rule-type.js +1 -1
  278. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +148 -148
  279. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +148 -148
  280. package/packages/dd-trace/src/appsec/iast/analyzers/index.js +1 -1
  281. package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +1 -1
  282. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +7 -8
  283. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +2 -2
  284. package/packages/dd-trace/src/appsec/iast/analyzers/set-cookies-header-interceptor.js +2 -2
  285. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +2 -2
  286. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +3 -3
  287. package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
  288. package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +2 -2
  289. package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +3 -3
  290. package/packages/dd-trace/src/appsec/iast/iast-context.js +6 -3
  291. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +17 -9
  292. package/packages/dd-trace/src/appsec/iast/index.js +2 -2
  293. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +9 -9
  294. package/packages/dd-trace/src/appsec/iast/path-line.js +7 -6
  295. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +11 -11
  296. package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +49 -17
  297. package/packages/dd-trace/src/appsec/iast/tags.js +1 -1
  298. package/packages/dd-trace/src/appsec/iast/taint-tracking/constants.js +1 -1
  299. package/packages/dd-trace/src/appsec/iast/taint-tracking/csi-methods.js +2 -2
  300. package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +1 -1
  301. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +2 -2
  302. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -6
  303. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +2 -2
  304. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +5 -5
  305. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +4 -4
  306. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +5 -5
  307. package/packages/dd-trace/src/appsec/iast/taint-tracking/secure-marks.js +6 -4
  308. package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +1 -1
  309. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +8 -8
  310. package/packages/dd-trace/src/appsec/iast/telemetry/iast-metric.js +4 -4
  311. package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +2 -2
  312. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +6 -6
  313. package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -2
  314. package/packages/dd-trace/src/appsec/iast/utils.js +3 -3
  315. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/constants.js +1 -1
  316. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +1 -1
  317. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/hardcoded-password-analyzer.js +1 -1
  318. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +6 -6
  319. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/tainted-range-based-sensitive-analyzer.js +1 -1
  320. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +8 -8
  321. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +1 -1
  322. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +12 -11
  323. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +5 -5
  324. package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +1 -1
  325. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +4 -4
  326. package/packages/dd-trace/src/appsec/index.js +20 -22
  327. package/packages/dd-trace/src/appsec/rasp/command_injection.js +3 -3
  328. package/packages/dd-trace/src/appsec/rasp/fs-plugin.js +4 -4
  329. package/packages/dd-trace/src/appsec/rasp/index.js +2 -2
  330. package/packages/dd-trace/src/appsec/rasp/lfi.js +5 -5
  331. package/packages/dd-trace/src/appsec/rasp/sql_injection.js +2 -2
  332. package/packages/dd-trace/src/appsec/rasp/ssrf.js +1 -1
  333. package/packages/dd-trace/src/appsec/rasp/utils.js +4 -4
  334. package/packages/dd-trace/src/appsec/rc-products.js +1 -1
  335. package/packages/dd-trace/src/appsec/remote_config.js +3 -3
  336. package/packages/dd-trace/src/appsec/reporter.js +11 -11
  337. package/packages/dd-trace/src/appsec/rule_manager.js +1 -1
  338. package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
  339. package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
  340. package/packages/dd-trace/src/appsec/sdk/track_event.js +7 -7
  341. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +1 -1
  342. package/packages/dd-trace/src/appsec/sdk/utils.js +1 -1
  343. package/packages/dd-trace/src/appsec/stack_trace.js +5 -5
  344. package/packages/dd-trace/src/appsec/telemetry/common.js +3 -3
  345. package/packages/dd-trace/src/appsec/telemetry/index.js +5 -5
  346. package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -3
  347. package/packages/dd-trace/src/appsec/telemetry/user.js +4 -4
  348. package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -3
  349. package/packages/dd-trace/src/appsec/user_tracking.js +7 -7
  350. package/packages/dd-trace/src/appsec/waf/diagnostics.js +2 -2
  351. package/packages/dd-trace/src/appsec/waf/index.js +1 -1
  352. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +2 -2
  353. package/packages/dd-trace/src/azure_metadata.js +16 -9
  354. package/packages/dd-trace/src/baggage.js +1 -1
  355. package/packages/dd-trace/src/ci-visibility/coverage-report-discovery.js +82 -0
  356. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +5 -5
  357. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +9 -9
  358. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +9 -9
  359. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +8 -7
  360. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +4 -3
  361. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +5 -3
  362. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -0
  363. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +4 -3
  364. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +37 -11
  365. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +22 -22
  366. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +20 -1
  367. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +1 -1
  368. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +8 -8
  369. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +3 -3
  370. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +17 -12
  371. package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +107 -0
  372. package/packages/dd-trace/src/ci-visibility/telemetry.js +38 -2
  373. package/packages/dd-trace/src/ci-visibility/test-api-manual/test-api-manual-plugin.js +1 -1
  374. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +50 -7
  375. package/packages/dd-trace/src/ci-visibility/test-optimization-cache.js +61 -0
  376. package/packages/dd-trace/src/config/defaults.js +1 -1
  377. package/packages/dd-trace/src/config/git_properties.js +1 -1
  378. package/packages/dd-trace/src/config/helper.js +2 -2
  379. package/packages/dd-trace/src/config/index.js +612 -622
  380. package/packages/dd-trace/src/config/remote_config.js +1 -1
  381. package/packages/dd-trace/src/config/stable.js +2 -2
  382. package/packages/dd-trace/src/config/supported-configurations.json +1 -0
  383. package/packages/dd-trace/src/constants.js +3 -3
  384. package/packages/dd-trace/src/crashtracking/crashtracker.js +6 -6
  385. package/packages/dd-trace/src/datastreams/checkpointer.js +1 -1
  386. package/packages/dd-trace/src/datastreams/context.js +1 -1
  387. package/packages/dd-trace/src/datastreams/encoding.js +1 -1
  388. package/packages/dd-trace/src/datastreams/fnv.js +1 -1
  389. package/packages/dd-trace/src/datastreams/index.js +8 -8
  390. package/packages/dd-trace/src/datastreams/pathway.js +5 -3
  391. package/packages/dd-trace/src/datastreams/processor.js +14 -12
  392. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +27 -25
  393. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +1 -1
  394. package/packages/dd-trace/src/datastreams/size.js +3 -3
  395. package/packages/dd-trace/src/datastreams/writer.js +3 -3
  396. package/packages/dd-trace/src/debugger/config.js +2 -1
  397. package/packages/dd-trace/src/debugger/constants.js +7 -0
  398. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +14 -10
  399. package/packages/dd-trace/src/debugger/devtools_client/condition.js +2 -2
  400. package/packages/dd-trace/src/debugger/devtools_client/config.js +4 -5
  401. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
  402. package/packages/dd-trace/src/debugger/devtools_client/index.js +32 -25
  403. package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +1 -1
  404. package/packages/dd-trace/src/debugger/devtools_client/log.js +1 -1
  405. package/packages/dd-trace/src/debugger/devtools_client/send.js +54 -10
  406. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +94 -37
  407. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +4 -4
  408. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +7 -7
  409. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +2 -2
  410. package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +1 -1
  411. package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +1 -1
  412. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +10 -1
  413. package/packages/dd-trace/src/debugger/devtools_client/state.js +65 -8
  414. package/packages/dd-trace/src/debugger/devtools_client/status.js +9 -8
  415. package/packages/dd-trace/src/debugger/index.js +95 -37
  416. package/packages/dd-trace/src/dogstatsd.js +14 -9
  417. package/packages/dd-trace/src/encode/0.4.js +7 -6
  418. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
  419. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +3 -3
  420. package/packages/dd-trace/src/encode/span-stats.js +2 -2
  421. package/packages/dd-trace/src/encode/tags-processors.js +1 -1
  422. package/packages/dd-trace/src/exporters/agent/index.js +1 -1
  423. package/packages/dd-trace/src/exporters/agent/writer.js +2 -2
  424. package/packages/dd-trace/src/exporters/common/agents.js +1 -1
  425. package/packages/dd-trace/src/exporters/common/buffering-exporter.js +2 -2
  426. package/packages/dd-trace/src/exporters/common/docker.js +11 -7
  427. package/packages/dd-trace/src/exporters/common/request.js +41 -21
  428. package/packages/dd-trace/src/exporters/common/url-to-http-options-polyfill.js +2 -2
  429. package/packages/dd-trace/src/exporters/common/writer.js +2 -0
  430. package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
  431. package/packages/dd-trace/src/exporters/span-stats/writer.js +3 -3
  432. package/packages/dd-trace/src/external-logger/src/index.js +4 -4
  433. package/packages/dd-trace/src/flare/index.js +3 -3
  434. package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
  435. package/packages/dd-trace/src/heap_snapshots.js +1 -1
  436. package/packages/dd-trace/src/id.js +2 -2
  437. package/packages/dd-trace/src/iitm.js +1 -1
  438. package/packages/dd-trace/src/lambda/context.js +27 -0
  439. package/packages/dd-trace/src/lambda/handler.js +6 -19
  440. package/packages/dd-trace/src/lambda/runtime/errors.js +1 -1
  441. package/packages/dd-trace/src/lambda/runtime/ritm.js +3 -3
  442. package/packages/dd-trace/src/llmobs/constants/tags.js +1 -1
  443. package/packages/dd-trace/src/llmobs/constants/text.js +1 -1
  444. package/packages/dd-trace/src/llmobs/constants/writers.js +1 -1
  445. package/packages/dd-trace/src/llmobs/index.js +2 -4
  446. package/packages/dd-trace/src/llmobs/noop.js +2 -2
  447. package/packages/dd-trace/src/llmobs/plugins/ai/index.js +8 -8
  448. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +2 -2
  449. package/packages/dd-trace/src/llmobs/plugins/anthropic.js +5 -5
  450. package/packages/dd-trace/src/llmobs/plugins/base.js +1 -1
  451. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +8 -8
  452. package/packages/dd-trace/src/llmobs/plugins/genai/index.js +2 -2
  453. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +15 -15
  454. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +2 -2
  455. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +5 -5
  456. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
  457. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +3 -3
  458. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +1 -1
  459. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +17 -17
  460. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +3 -3
  461. package/packages/dd-trace/src/llmobs/plugins/vertexai.js +6 -6
  462. package/packages/dd-trace/src/llmobs/sdk.js +11 -11
  463. package/packages/dd-trace/src/llmobs/span_processor.js +6 -6
  464. package/packages/dd-trace/src/llmobs/tagger.js +4 -4
  465. package/packages/dd-trace/src/llmobs/telemetry.js +8 -8
  466. package/packages/dd-trace/src/llmobs/util.js +1 -1
  467. package/packages/dd-trace/src/llmobs/writers/base.js +9 -9
  468. package/packages/dd-trace/src/llmobs/writers/evaluations.js +5 -5
  469. package/packages/dd-trace/src/llmobs/writers/spans.js +3 -3
  470. package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
  471. package/packages/dd-trace/src/log/channels.js +2 -2
  472. package/packages/dd-trace/src/log/index.js +2 -2
  473. package/packages/dd-trace/src/log/log.js +1 -1
  474. package/packages/dd-trace/src/log/writer.js +2 -6
  475. package/packages/dd-trace/src/noop/span.js +2 -2
  476. package/packages/dd-trace/src/openfeature/constants/constants.js +1 -1
  477. package/packages/dd-trace/src/openfeature/flagging_provider.js +4 -4
  478. package/packages/dd-trace/src/openfeature/index.js +2 -2
  479. package/packages/dd-trace/src/openfeature/noop.js +3 -3
  480. package/packages/dd-trace/src/openfeature/remote_config.js +1 -1
  481. package/packages/dd-trace/src/openfeature/writers/base.js +12 -12
  482. package/packages/dd-trace/src/openfeature/writers/exposures.js +10 -10
  483. package/packages/dd-trace/src/openfeature/writers/util.js +1 -1
  484. package/packages/dd-trace/src/opentelemetry/context_manager.js +48 -29
  485. package/packages/dd-trace/src/opentelemetry/logs/index.js +2 -2
  486. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +2 -2
  487. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +10 -10
  488. package/packages/dd-trace/src/opentelemetry/metrics/constants.js +3 -3
  489. package/packages/dd-trace/src/opentelemetry/metrics/index.js +2 -2
  490. package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
  491. package/packages/dd-trace/src/opentelemetry/metrics/meter.js +1 -1
  492. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +11 -11
  493. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +18 -18
  494. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +6 -6
  495. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +10 -7
  496. package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +3 -3
  497. package/packages/dd-trace/src/opentelemetry/span.js +8 -8
  498. package/packages/dd-trace/src/opentelemetry/span_context.js +1 -1
  499. package/packages/dd-trace/src/opentelemetry/span_processor.js +1 -1
  500. package/packages/dd-trace/src/opentelemetry/tracer.js +4 -4
  501. package/packages/dd-trace/src/opentracing/propagation/log.js +2 -2
  502. package/packages/dd-trace/src/opentracing/propagation/text_map.js +14 -12
  503. package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +2 -0
  504. package/packages/dd-trace/src/opentracing/span.js +20 -20
  505. package/packages/dd-trace/src/opentracing/span_context.js +3 -3
  506. package/packages/dd-trace/src/opentracing/tracer.js +3 -3
  507. package/packages/dd-trace/src/payload-tagging/config/index.js +1 -1
  508. package/packages/dd-trace/src/payload-tagging/index.js +1 -1
  509. package/packages/dd-trace/src/payload-tagging/tagging.js +2 -2
  510. package/packages/dd-trace/src/plugin_manager.js +6 -6
  511. package/packages/dd-trace/src/plugins/apollo.js +4 -4
  512. package/packages/dd-trace/src/plugins/ci_plugin.js +164 -37
  513. package/packages/dd-trace/src/plugins/database.js +1 -1
  514. package/packages/dd-trace/src/plugins/index.js +1 -1
  515. package/packages/dd-trace/src/plugins/log_plugin.js +2 -2
  516. package/packages/dd-trace/src/plugins/outbound.js +9 -8
  517. package/packages/dd-trace/src/plugins/plugin.js +17 -7
  518. package/packages/dd-trace/src/plugins/producer.js +6 -5
  519. package/packages/dd-trace/src/plugins/tracing.js +37 -8
  520. package/packages/dd-trace/src/plugins/util/ci.js +40 -40
  521. package/packages/dd-trace/src/plugins/util/env.js +2 -2
  522. package/packages/dd-trace/src/plugins/util/git-cache.js +2 -2
  523. package/packages/dd-trace/src/plugins/util/git.js +46 -47
  524. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +6 -6
  525. package/packages/dd-trace/src/plugins/util/ip_extractor.js +3 -3
  526. package/packages/dd-trace/src/plugins/util/llm.js +1 -1
  527. package/packages/dd-trace/src/plugins/util/stacktrace.js +3 -3
  528. package/packages/dd-trace/src/plugins/util/tags.js +1 -1
  529. package/packages/dd-trace/src/plugins/util/test.js +49 -41
  530. package/packages/dd-trace/src/plugins/util/url.js +1 -1
  531. package/packages/dd-trace/src/plugins/util/urlfilter.js +1 -1
  532. package/packages/dd-trace/src/plugins/util/user-provided-git.js +2 -2
  533. package/packages/dd-trace/src/plugins/util/web.js +13 -12
  534. package/packages/dd-trace/src/priority_sampler.js +4 -4
  535. package/packages/dd-trace/src/process-tags/index.js +2 -2
  536. package/packages/dd-trace/src/profiler.js +1 -1
  537. package/packages/dd-trace/src/profiling/config.js +14 -22
  538. package/packages/dd-trace/src/profiling/constants.js +2 -2
  539. package/packages/dd-trace/src/profiling/exporter_cli.js +3 -3
  540. package/packages/dd-trace/src/profiling/exporters/agent.js +28 -29
  541. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +8 -8
  542. package/packages/dd-trace/src/profiling/index.js +1 -1
  543. package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
  544. package/packages/dd-trace/src/profiling/loggers/console.js +1 -1
  545. package/packages/dd-trace/src/profiling/profiler.js +23 -23
  546. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
  547. package/packages/dd-trace/src/profiling/profilers/event_plugins/fs.js +3 -3
  548. package/packages/dd-trace/src/profiling/profilers/events.js +27 -19
  549. package/packages/dd-trace/src/profiling/profilers/shared.js +2 -2
  550. package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
  551. package/packages/dd-trace/src/profiling/tagger.js +1 -1
  552. package/packages/dd-trace/src/profiling/webspan-utils.js +2 -2
  553. package/packages/dd-trace/src/proxy.js +13 -13
  554. package/packages/dd-trace/src/remote_config/apply_states.js +1 -1
  555. package/packages/dd-trace/src/remote_config/index.js +15 -15
  556. package/packages/dd-trace/src/remote_config/scheduler.js +1 -1
  557. package/packages/dd-trace/src/ritm.js +1 -1
  558. package/packages/dd-trace/src/runtime_metrics/index.js +2 -2
  559. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +3 -3
  560. package/packages/dd-trace/src/serverless.js +1 -1
  561. package/packages/dd-trace/src/service-naming/extra-services.js +1 -1
  562. package/packages/dd-trace/src/service-naming/index.js +1 -1
  563. package/packages/dd-trace/src/service-naming/schemas/v0/graphql.js +3 -3
  564. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +25 -25
  565. package/packages/dd-trace/src/service-naming/schemas/v0/serverless.js +3 -3
  566. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +18 -18
  567. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +23 -23
  568. package/packages/dd-trace/src/service-naming/schemas/v0/websocket.js +9 -9
  569. package/packages/dd-trace/src/service-naming/schemas/v1/graphql.js +3 -3
  570. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +21 -21
  571. package/packages/dd-trace/src/service-naming/schemas/v1/serverless.js +3 -3
  572. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +17 -17
  573. package/packages/dd-trace/src/service-naming/schemas/v1/web.js +23 -23
  574. package/packages/dd-trace/src/service-naming/schemas/v1/websocket.js +9 -9
  575. package/packages/dd-trace/src/span_format.js +4 -4
  576. package/packages/dd-trace/src/span_sampler.js +1 -1
  577. package/packages/dd-trace/src/span_stats.js +11 -11
  578. package/packages/dd-trace/src/spanleak.js +1 -1
  579. package/packages/dd-trace/src/standalone/index.js +1 -1
  580. package/packages/dd-trace/src/standalone/product.js +2 -2
  581. package/packages/dd-trace/src/standalone/tracesource.js +1 -1
  582. package/packages/dd-trace/src/startup-log.js +3 -2
  583. package/packages/dd-trace/src/tagger.js +3 -1
  584. package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
  585. package/packages/dd-trace/src/telemetry/endpoints.js +4 -4
  586. package/packages/dd-trace/src/telemetry/index.js +1 -1
  587. package/packages/dd-trace/src/telemetry/logs/index.js +2 -2
  588. package/packages/dd-trace/src/telemetry/logs/log-collector.js +2 -2
  589. package/packages/dd-trace/src/telemetry/metrics.js +6 -6
  590. package/packages/dd-trace/src/telemetry/send-data.js +5 -5
  591. package/packages/dd-trace/src/telemetry/telemetry.js +10 -10
  592. package/packages/dd-trace/src/tracer.js +3 -2
  593. package/packages/dd-trace/src/util.js +1 -1
  594. package/scripts/preinstall.js +1 -1
  595. package/vendor/dist/@datadog/sketches-js/index.js +1 -1
  596. package/vendor/dist/@datadog/source-map/index.js +1 -1
  597. package/vendor/dist/@isaacs/ttlcache/index.js +1 -1
  598. package/vendor/dist/@opentelemetry/core/index.js +1 -1
  599. package/vendor/dist/@opentelemetry/resources/index.js +1 -1
  600. package/vendor/dist/astring/index.js +1 -1
  601. package/vendor/dist/crypto-randomuuid/index.js +1 -1
  602. package/vendor/dist/escape-string-regexp/index.js +1 -1
  603. package/vendor/dist/esquery/index.js +1 -1
  604. package/vendor/dist/ignore/index.js +1 -1
  605. package/vendor/dist/istanbul-lib-coverage/index.js +1 -1
  606. package/vendor/dist/jest-docblock/index.js +1 -1
  607. package/vendor/dist/jsonpath-plus/index.js +1 -1
  608. package/vendor/dist/limiter/index.js +1 -1
  609. package/vendor/dist/lodash.sortby/index.js +1 -1
  610. package/vendor/dist/lru-cache/index.js +1 -1
  611. package/vendor/dist/meriyah/index.js +1 -1
  612. package/vendor/dist/module-details-from-path/index.js +1 -1
  613. package/vendor/dist/mutexify/promise/index.js +1 -1
  614. package/vendor/dist/opentracing/index.js +1 -1
  615. package/vendor/dist/path-to-regexp/index.js +1 -1
  616. package/vendor/dist/pprof-format/index.js +1 -1
  617. package/vendor/dist/protobufjs/index.js +1 -1
  618. package/vendor/dist/protobufjs/minimal/index.js +1 -1
  619. package/vendor/dist/retry/index.js +1 -1
  620. package/vendor/dist/rfdc/index.js +1 -1
  621. package/vendor/dist/semifies/index.js +1 -1
  622. package/vendor/dist/shell-quote/index.js +1 -1
  623. package/vendor/dist/source-map/index.js +1 -1
  624. package/vendor/dist/source-map/lib/util/index.js +1 -1
  625. package/vendor/dist/tlhunter-sorted-set/index.js +1 -1
  626. package/vendor/dist/ttl-set/index.js +1 -1
  627. package/packages/datadog-plugin-prisma/src/client.js +0 -60
  628. package/packages/datadog-plugin-prisma/src/engine.js +0 -81
@@ -1,10 +1,11 @@
1
1
  'use strict'
2
+ const path = require('node:path')
2
3
 
3
4
  const shimmer = require('../../datadog-shimmer')
4
5
  const log = require('../../dd-trace/src/log')
5
6
  const {
6
7
  VITEST_WORKER_TRACE_PAYLOAD_CODE,
7
- VITEST_WORKER_LOGS_PAYLOAD_CODE
8
+ VITEST_WORKER_LOGS_PAYLOAD_CODE,
8
9
  } = require('../../dd-trace/src/plugins/util/test')
9
10
  const { addHook, channel } = require('./helpers/instrument')
10
11
 
@@ -36,6 +37,7 @@ const modifiedFilesCh = channel('ci:vitest:modified-files')
36
37
 
37
38
  const workerReportTraceCh = channel('ci:vitest:worker-report:trace')
38
39
  const workerReportLogsCh = channel('ci:vitest:worker-report:logs')
40
+ const codeCoverageReportCh = channel('ci:vitest:coverage-report')
39
41
 
40
42
  const taskToCtx = new WeakMap()
41
43
  const taskToStatuses = new WeakMap()
@@ -59,6 +61,7 @@ let isImpactedTestsEnabled = false
59
61
  let testManagementAttemptToFixRetries = 0
60
62
  let isDiEnabled = false
61
63
  let testCodeCoverageLinesTotal
64
+ let coverageRootDir
62
65
  let isSessionStarted = false
63
66
  let vitestPool = null
64
67
 
@@ -93,7 +96,7 @@ function getProvidedContext () {
93
96
  _ddTestManagementTests: testManagementTests,
94
97
  _ddIsFlakyTestRetriesEnabled: isFlakyTestRetriesEnabled,
95
98
  _ddIsImpactedTestsEnabled: isImpactedTestsEnabled,
96
- _ddModifiedFiles: modifiedFiles
99
+ _ddModifiedFiles: modifiedFiles,
97
100
  } = globalThis.__vitest_worker__.providedContext
98
101
 
99
102
  return {
@@ -107,7 +110,7 @@ function getProvidedContext () {
107
110
  testManagementTests,
108
111
  isFlakyTestRetriesEnabled,
109
112
  isImpactedTestsEnabled,
110
- modifiedFiles
113
+ modifiedFiles,
111
114
  }
112
115
  } catch {
113
116
  log.error('Vitest workers could not parse provided context, so some features will not work.')
@@ -122,7 +125,7 @@ function getProvidedContext () {
122
125
  testManagementTests: {},
123
126
  isFlakyTestRetriesEnabled: false,
124
127
  isImpactedTestsEnabled: false,
125
- modifiedFiles: {}
128
+ modifiedFiles: {},
126
129
  }
127
130
  }
128
131
  }
@@ -278,7 +281,7 @@ function getSortWrapper (sort, frameworkVersion) {
278
281
  testFilepaths,
279
282
  onDone: (isFaulty) => {
280
283
  isEarlyFlakeDetectionFaulty = isFaulty
281
- }
284
+ },
282
285
  })
283
286
  if (isEarlyFlakeDetectionFaulty) {
284
287
  isEarlyFlakeDetectionEnabled = false
@@ -354,6 +357,17 @@ function getSortWrapper (sort, frameworkVersion) {
354
357
  }
355
358
 
356
359
  if (this.ctx.coverageProvider?.generateCoverage) {
360
+ // Capture coverage root directory from config (default is 'coverage' in cwd)
361
+ try {
362
+ const coverageConfig = this.ctx.config?.coverage
363
+ const reportsDirectory = coverageConfig?.reportsDirectory || 'coverage'
364
+ const rootDir = this.ctx.config?.root || process.cwd()
365
+ coverageRootDir = path.isAbsolute(reportsDirectory) ? reportsDirectory : path.join(rootDir, reportsDirectory)
366
+ } catch {
367
+ // Fallback to cwd if we can't get config
368
+ coverageRootDir = process.cwd()
369
+ }
370
+
357
371
  shimmer.wrap(this.ctx.coverageProvider, 'generateCoverage', generateCoverage => async function () {
358
372
  const totalCodeCoverage = await generateCoverage.apply(this, arguments)
359
373
 
@@ -399,11 +413,18 @@ function getFinishWrapper (exitOrClose) {
399
413
  isEarlyFlakeDetectionFaulty,
400
414
  isTestManagementTestsEnabled,
401
415
  vitestPool,
402
- onFinish
416
+ onFinish,
403
417
  })
404
418
 
405
419
  await flushPromise
406
420
 
421
+ // If coverage was generated, publish coverage report channel for upload
422
+ if (coverageRootDir && codeCoverageReportCh.hasSubscribers) {
423
+ await new Promise((resolve) => {
424
+ codeCoverageReportCh.publish({ rootDir: coverageRootDir, onDone: resolve })
425
+ })
426
+ }
427
+
407
428
  return exitOrClose.apply(this, arguments)
408
429
  }
409
430
  }
@@ -462,8 +483,10 @@ function threadHandler (thread) {
462
483
  function wrapTinyPoolRun (TinyPool) {
463
484
  shimmer.wrap(TinyPool.prototype, 'run', run => async function () {
464
485
  // We have to do this before and after because the threads list gets recycled, that is, the processes are re-created
486
+ // eslint-disable-next-line unicorn/no-array-for-each
465
487
  this.threads.forEach(threadHandler)
466
488
  const runResult = await run.apply(this, arguments)
489
+ // eslint-disable-next-line unicorn/no-array-for-each
467
490
  this.threads.forEach(threadHandler)
468
491
  return runResult
469
492
  })
@@ -472,20 +495,9 @@ function wrapTinyPoolRun (TinyPool) {
472
495
  addHook({
473
496
  name: 'tinypool',
474
497
  // version from tinypool@0.8 was used in vitest@1.6.0
475
- versions: ['>=0.8.0 <1.0.0'],
476
- file: 'dist/esm/index.js'
477
- }, (TinyPool) => {
478
- wrapTinyPoolRun(TinyPool)
479
- return TinyPool
480
- })
481
-
482
- addHook({
483
- name: 'tinypool',
484
- versions: ['>=1.0.0'],
485
- file: 'dist/index.js'
498
+ versions: ['>=0.8.0'],
486
499
  }, (TinyPool) => {
487
500
  wrapTinyPoolRun(TinyPool)
488
-
489
501
  return TinyPool
490
502
  })
491
503
 
@@ -558,7 +570,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
558
570
  testManagementAttemptToFixRetries,
559
571
  testManagementTests,
560
572
  isImpactedTestsEnabled,
561
- modifiedFiles
573
+ modifiedFiles,
562
574
  } = getProvidedContext()
563
575
 
564
576
  if (isTestManagementTestsEnabled) {
@@ -573,7 +585,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
573
585
  attemptToFixTasks.add(task)
574
586
  taskToStatuses.set(task, [])
575
587
  }
576
- }
588
+ },
577
589
  })
578
590
  isDisabledCh.publish({
579
591
  testManagementTests,
@@ -587,7 +599,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
587
599
  task.mode = 'skip'
588
600
  }
589
601
  }
590
- }
602
+ },
591
603
  })
592
604
  }
593
605
 
@@ -604,7 +616,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
604
616
  modifiedTasks.add(task)
605
617
  taskToStatuses.set(task, [])
606
618
  }
607
- }
619
+ },
608
620
  })
609
621
  }
610
622
 
@@ -622,7 +634,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
622
634
  newTasks.add(task)
623
635
  taskToStatuses.set(task, [])
624
636
  }
625
- }
637
+ },
626
638
  })
627
639
  }
628
640
 
@@ -679,7 +691,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
679
691
  isDiEnabled,
680
692
  isTestManagementTestsEnabled,
681
693
  testManagementTests,
682
- isFlakyTestRetriesEnabled
694
+ isFlakyTestRetriesEnabled,
683
695
  } = getProvidedContext()
684
696
 
685
697
  if (isKnownTestsEnabled) {
@@ -696,7 +708,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
696
708
  if (isTestQuarantined) {
697
709
  quarantinedTasks.add(task)
698
710
  }
699
- }
711
+ },
700
712
  })
701
713
  }
702
714
 
@@ -718,7 +730,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
718
730
  error: testError,
719
731
  shouldSetProbe,
720
732
  promises,
721
- ...ctx.currentStore
733
+ ...ctx.currentStore,
722
734
  })
723
735
  // We wait for the probe to be set
724
736
  if (promises.setProbePromise) {
@@ -787,7 +799,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
787
799
  isDisabled: disabledTasks.has(task),
788
800
  isQuarantined,
789
801
  isRetryReasonAtr,
790
- isModified: modifiedTasks.has(task)
802
+ isModified: modifiedTasks.has(task),
791
803
  }
792
804
  taskToCtx.set(task, ctx)
793
805
 
@@ -843,7 +855,7 @@ function wrapVitestTestRunner (VitestTestRunner) {
843
855
  addHook({
844
856
  name: 'vitest',
845
857
  versions: ['>=4.0.0'],
846
- filePattern: 'dist/chunks/test.*'
858
+ filePattern: 'dist/chunks/test.*',
847
859
  }, (testPackage) => {
848
860
  if (!isTestPackage(testPackage)) {
849
861
  return testPackage
@@ -857,7 +869,7 @@ addHook({
857
869
  addHook({
858
870
  name: 'vitest',
859
871
  versions: ['>=1.6.0 <4.0.0'],
860
- file: 'dist/runners.js'
872
+ file: 'dist/runners.js',
861
873
  }, (vitestPackage) => {
862
874
  const { VitestTestRunner } = vitestPackage
863
875
 
@@ -871,7 +883,7 @@ addHook({
871
883
  addHook({
872
884
  name: 'vitest',
873
885
  versions: ['>=1.6.0 <2.0.0'],
874
- filePattern: 'dist/vendor/index.*'
886
+ filePattern: 'dist/vendor/index.*',
875
887
  }, (vitestPackage) => {
876
888
  if (isReporterPackage(vitestPackage)) {
877
889
  shimmer.wrap(vitestPackage.B.prototype, 'sort', getSortWrapper)
@@ -883,7 +895,7 @@ addHook({
883
895
  addHook({
884
896
  name: 'vitest',
885
897
  versions: ['>=2.0.0 <2.0.5'],
886
- filePattern: 'dist/vendor/index.*'
898
+ filePattern: 'dist/vendor/index.*',
887
899
  }, (vitestPackage) => {
888
900
  if (isReporterPackageNew(vitestPackage)) {
889
901
  shimmer.wrap(vitestPackage.e.prototype, 'sort', getSortWrapper)
@@ -895,7 +907,7 @@ addHook({
895
907
  addHook({
896
908
  name: 'vitest',
897
909
  versions: ['>=2.0.5 <2.1.0'],
898
- filePattern: 'dist/chunks/index.*'
910
+ filePattern: 'dist/chunks/index.*',
899
911
  }, (vitestPackage) => {
900
912
  if (isReporterPackageNewest(vitestPackage)) {
901
913
  shimmer.wrap(vitestPackage.h.prototype, 'sort', getSortWrapper)
@@ -907,7 +919,7 @@ addHook({
907
919
  addHook({
908
920
  name: 'vitest',
909
921
  versions: ['>=2.1.0 <3.0.0'],
910
- filePattern: 'dist/chunks/RandomSequencer.*'
922
+ filePattern: 'dist/chunks/RandomSequencer.*',
911
923
  }, (randomSequencerPackage) => {
912
924
  shimmer.wrap(randomSequencerPackage.B.prototype, 'sort', getSortWrapper)
913
925
  return randomSequencerPackage
@@ -916,7 +928,7 @@ addHook({
916
928
  addHook({
917
929
  name: 'vitest',
918
930
  versions: ['>=3.0.9'],
919
- filePattern: 'dist/chunks/coverage.*'
931
+ filePattern: 'dist/chunks/coverage.*',
920
932
  }, (coveragePackage) => {
921
933
  if (isBaseSequencer(coveragePackage)) {
922
934
  shimmer.wrap(coveragePackage.b.prototype, 'sort', getSortWrapper)
@@ -927,7 +939,7 @@ addHook({
927
939
  addHook({
928
940
  name: 'vitest',
929
941
  versions: ['>=3.0.0 <3.0.9'],
930
- filePattern: 'dist/chunks/resolveConfig.*'
942
+ filePattern: 'dist/chunks/resolveConfig.*',
931
943
  }, (resolveConfigPackage) => {
932
944
  shimmer.wrap(resolveConfigPackage.B.prototype, 'sort', getSortWrapper)
933
945
  return resolveConfigPackage
@@ -938,25 +950,25 @@ addHook({
938
950
  addHook({
939
951
  name: 'vitest',
940
952
  versions: ['>=1.6.0 <2.0.5'],
941
- filePattern: 'dist/vendor/cac.*'
953
+ filePattern: 'dist/vendor/cac.*',
942
954
  }, getCreateCliWrapper)
943
955
 
944
956
  addHook({
945
957
  name: 'vitest',
946
958
  versions: ['>=2.0.5'],
947
- filePattern: 'dist/chunks/cac.*'
959
+ filePattern: 'dist/chunks/cac.*',
948
960
  }, getCreateCliWrapper)
949
961
 
950
962
  addHook({
951
963
  name: 'vitest',
952
964
  versions: ['>=1.6.0 <2.0.5'],
953
- filePattern: 'dist/vendor/cli-api.*'
965
+ filePattern: 'dist/vendor/cli-api.*',
954
966
  }, getStartVitestWrapper)
955
967
 
956
968
  addHook({
957
969
  name: 'vitest',
958
970
  versions: ['>=2.0.5'],
959
- filePattern: 'dist/chunks/cli-api.*'
971
+ filePattern: 'dist/chunks/cli-api.*',
960
972
  }, getStartVitestWrapper)
961
973
 
962
974
  // test suite start and finish
@@ -964,7 +976,6 @@ addHook({
964
976
  addHook({
965
977
  name: '@vitest/runner',
966
978
  versions: ['>=1.6.0'],
967
- file: 'dist/index.js'
968
979
  }, (vitestPackage, frameworkVersion) => {
969
980
  shimmer.wrap(vitestPackage, 'startTests', startTests => async function (testPaths) {
970
981
  let testSuiteError = null
@@ -986,7 +997,7 @@ addHook({
986
997
  const testTasks = getTypeTasks(startTestsResponse[0].tasks)
987
998
 
988
999
  // Only one test task per test, even if there are retries
989
- testTasks.forEach(task => {
1000
+ for (const task of testTasks) {
990
1001
  const testCtx = taskToCtx.get(task)
991
1002
  const { result } = task
992
1003
  // We have to trick vitest into thinking that the test has passed
@@ -1000,7 +1011,7 @@ addHook({
1000
1011
  testName: getTestName(task),
1001
1012
  testSuiteAbsolutePath: task.file.filepath,
1002
1013
  isNew: newTasks.has(task),
1003
- isDisabled: disabledTasks.has(task)
1014
+ isDisabled: disabledTasks.has(task),
1004
1015
  })
1005
1016
  } else if (state === 'pass' && !isSwitchedStatus) {
1006
1017
  if (testCtx) {
@@ -1033,7 +1044,7 @@ addHook({
1033
1044
  error: testError,
1034
1045
  hasFailedAllRetries,
1035
1046
  attemptToFixFailed,
1036
- ...testCtx.currentStore
1047
+ ...testCtx.currentStore,
1037
1048
  })
1038
1049
  }
1039
1050
  if (errors?.length) {
@@ -1045,10 +1056,10 @@ addHook({
1045
1056
  testName: getTestName(task),
1046
1057
  testSuiteAbsolutePath: task.file.filepath,
1047
1058
  isNew: newTasks.has(task),
1048
- isDisabled: disabledTasks.has(task)
1059
+ isDisabled: disabledTasks.has(task),
1049
1060
  })
1050
1061
  }
1051
- })
1062
+ }
1052
1063
 
1053
1064
  const testSuiteResult = startTestsResponse[0].result
1054
1065
 
@@ -7,7 +7,7 @@ const { wrapThen } = require('./helpers/promise')
7
7
  addHook({
8
8
  name: 'when',
9
9
  file: 'lib/Promise.js',
10
- versions: ['>=3']
10
+ versions: ['>=3'],
11
11
  }, Promise => {
12
12
  shimmer.wrap(Promise.prototype, 'then', wrapThen)
13
13
  return Promise
@@ -3,7 +3,7 @@
3
3
  const shimmer = require('../../datadog-shimmer')
4
4
  const {
5
5
  channel,
6
- addHook
6
+ addHook,
7
7
  } = require('./helpers/instrument')
8
8
 
9
9
  const patched = new WeakSet()
@@ -1,11 +1,11 @@
1
1
  'use strict'
2
2
 
3
- const tracingChannel = require('dc-polyfill').tracingChannel
3
+ const { tracingChannel } = /** @type {import('node:diagnostics_channel')} */ (require('dc-polyfill'))
4
4
 
5
5
  const shimmer = require('../../datadog-shimmer')
6
6
  const {
7
7
  addHook,
8
- channel
8
+ channel,
9
9
  } = require('./helpers/instrument')
10
10
 
11
11
  const serverCh = tracingChannel('ws:server:connect')
@@ -13,9 +13,53 @@ const producerCh = tracingChannel('ws:send')
13
13
  const receiverCh = tracingChannel('ws:receive')
14
14
  const closeCh = tracingChannel('ws:close')
15
15
  const emitCh = channel('tracing:ws:server:connect:emit')
16
+ const setSocketCh = channel('tracing:ws:server:connect:setSocket')
16
17
  // TODO: Add a error channel / handle error events properly.
17
18
 
18
- const eventHandlerMap = new WeakMap()
19
+ /**
20
+ * @typedef {object} WebSocketServerPrototype
21
+ * @property {(...args: unknown[]) => unknown} handleUpgrade
22
+ * @property {(...args: unknown[]) => unknown} emit
23
+ */
24
+
25
+ /**
26
+ * @typedef {{ prototype: WebSocketServerPrototype }} WebSocketServerClass
27
+ */
28
+
29
+ /**
30
+ * @typedef {object} WebSocketPrototype
31
+ * @property {(...args: unknown[]) => unknown} send
32
+ * @property {(...args: unknown[]) => unknown} close
33
+ * @property {(...args: unknown[]) => unknown} setSocket
34
+ */
35
+
36
+ /**
37
+ * @typedef {{ prototype: WebSocketPrototype }} WebSocketClass
38
+ */
39
+
40
+ /**
41
+ * @typedef {object} ReceiverPrototype
42
+ * @property {(eventName: string, listener: (...args: unknown[]) => unknown) => unknown} on
43
+ * @property {(eventName: string, listener: (...args: unknown[]) => unknown) => unknown} addListener
44
+ */
45
+
46
+ /**
47
+ * @typedef {{ prototype: ReceiverPrototype }} ReceiverClass
48
+ */
49
+
50
+ /**
51
+ * @typedef {string | Buffer | ArrayBuffer | ArrayBufferView | Blob | Buffer[]} WebSocketMessageData
52
+ */
53
+
54
+ /**
55
+ * @typedef {object} WebSocketInstance
56
+ * @property {(...args: unknown[]) => unknown} emit
57
+ * @property {(eventName: string) => number} [listenerCount]
58
+ * @property {{ _socket?: unknown } | undefined} [_sender]
59
+ * @property {unknown} [_receiver]
60
+ */
61
+
62
+ let kWebSocketSymbol
19
63
 
20
64
  function wrapHandleUpgrade (handleUpgrade) {
21
65
  return function () {
@@ -41,7 +85,9 @@ function wrapHandleUpgrade (handleUpgrade) {
41
85
 
42
86
  function wrapSend (send) {
43
87
  return function wrappedSend (...args) {
44
- if (!producerCh.start.hasSubscribers) return send.apply(this, arguments)
88
+ if (!producerCh.start.hasSubscribers) {
89
+ return send.apply(this, arguments)
90
+ }
45
91
 
46
92
  const [data, options, cb] = arguments
47
93
 
@@ -55,7 +101,9 @@ function wrapSend (send) {
55
101
 
56
102
  function createWrapEmit (emit) {
57
103
  return function (title, headers, req) {
58
- if (!serverCh.start.hasSubscribers || title !== 'headers') return emit.apply(this, arguments)
104
+ if (!serverCh.start.hasSubscribers || title !== 'headers') {
105
+ return emit.apply(this, arguments)
106
+ }
59
107
 
60
108
  const ctx = { req }
61
109
  ctx.req.resStatus = headers[0].split(' ')[1]
@@ -70,35 +118,42 @@ function createWrapEmit (emit) {
70
118
  }
71
119
  }
72
120
 
73
- function createWrappedHandler (handler) {
74
- return shimmer.wrapFunction(handler, originalHandler => function (data, binary) {
75
- const byteLength = dataLength(data)
121
+ /**
122
+ * @param {Function} setSocket
123
+ * @returns {(...args: unknown[]) => unknown}
124
+ */
125
+ /**
126
+ * @param {Function} on
127
+ * @returns {(...args: unknown[]) => unknown}
128
+ */
129
+ function wrapReceiverOn (on) {
130
+ return function wrappedOn (eventName, handler) {
131
+ if (eventName !== 'message' || typeof handler !== 'function') {
132
+ return on.apply(this, arguments)
133
+ }
76
134
 
77
- const ctx = { data, binary, socket: this._sender?._socket, byteLength }
135
+ const wrappedHandler = function (data, isBinary) {
136
+ if (!receiverCh.start.hasSubscribers || !kWebSocketSymbol) {
137
+ return handler.call(this, data, isBinary)
138
+ }
78
139
 
79
- return receiverCh.traceSync(originalHandler, ctx, this, data, binary)
80
- })
81
- }
140
+ const websocket = /** @type {WebSocketInstance | undefined} */ (this[kWebSocketSymbol])
141
+ // Avoid receive spans when no one listens to messages.
142
+ if (websocket && typeof websocket.listenerCount === 'function' && websocket.listenerCount('message') === 0) {
143
+ return handler.call(this, data, isBinary)
144
+ }
145
+ const socket = websocket?._sender?._socket
146
+ if (!socket) {
147
+ return handler.call(this, data, isBinary)
148
+ }
82
149
 
83
- function wrapListener (originalOn) {
84
- return function (eventName, handler) {
85
- if (eventName === 'message') {
86
- // Prevent multiple wrapping of the same handler in case the user adds the listener multiple times
87
- const wrappedHandler = eventHandlerMap.get(handler) ?? createWrappedHandler(handler)
88
- eventHandlerMap.set(handler, wrappedHandler)
89
- return originalOn.call(this, eventName, wrappedHandler)
90
- }
91
- return originalOn.apply(this, arguments)
92
- }
93
- }
150
+ const byteLength = dataLength(/** @type {WebSocketMessageData} */ (data))
151
+ const ctx = { data, binary: isBinary, socket, byteLength }
94
152
 
95
- function removeListener (originalOff) {
96
- return function (eventName, handler) {
97
- if (eventName === 'message') {
98
- const wrappedHandler = eventHandlerMap.get(handler)
99
- return originalOff.call(this, eventName, wrappedHandler)
153
+ return receiverCh.traceSync(handler, ctx, this, data, isBinary)
100
154
  }
101
- return originalOff.apply(this, arguments)
155
+
156
+ return on.call(this, eventName, wrappedHandler)
102
157
  }
103
158
  }
104
159
 
@@ -119,31 +174,72 @@ function wrapClose (close) {
119
174
  addHook({
120
175
  name: 'ws',
121
176
  file: 'lib/websocket-server.js',
122
- versions: ['>=8.0.0']
123
- }, ws => {
177
+ versions: ['>=8.0.0'],
178
+ }, moduleExports => {
179
+ const ws = /** @type {WebSocketServerClass} */ (moduleExports)
124
180
  shimmer.wrap(ws.prototype, 'handleUpgrade', wrapHandleUpgrade)
125
181
  shimmer.wrap(ws.prototype, 'emit', createWrapEmit)
126
182
  return ws
127
183
  })
128
184
 
185
+ /**
186
+ * Prevent internal event handlers (data, close, etc.) registered by the ws library to
187
+ * capture the connection span in their async context. Otherwise, the
188
+ * finished connection span is retained for the entire lifetime of the WebSocket
189
+ * (via ACF -> handle -> WeakMap).
190
+ *
191
+ * @param {Function} setSocket
192
+ * @returns {(...args: unknown[]) => unknown}
193
+ */
194
+ function wrapSetSocket (setSocket) {
195
+ return function wrappedSetSocket (...args) {
196
+ if (!setSocketCh.hasSubscribers) {
197
+ return setSocket.apply(this, args)
198
+ }
199
+ return setSocketCh.runStores({}, () => {
200
+ return setSocket.apply(this, args)
201
+ })
202
+ }
203
+ }
204
+
129
205
  addHook({
130
206
  name: 'ws',
131
207
  file: 'lib/websocket.js',
132
- versions: ['>=8.0.0']
133
- }, ws => {
208
+ versions: ['>=8.0.0'],
209
+ }, moduleExports => {
210
+ const ws = /** @type {WebSocketClass} */ (moduleExports)
211
+ shimmer.wrap(ws.prototype, 'setSocket', wrapSetSocket)
134
212
  shimmer.wrap(ws.prototype, 'send', wrapSend)
135
213
  shimmer.wrap(ws.prototype, 'close', wrapClose)
136
214
 
137
- // TODO: Do not wrap these methods. Instead, add a listener to the websocket instance when one is created.
138
- // That way it avoids producing too many spans for the same websocket instance and less user code is impacted.
139
- shimmer.wrap(ws.prototype, 'on', wrapListener)
140
- shimmer.wrap(ws.prototype, 'addListener', wrapListener)
141
- shimmer.wrap(ws.prototype, 'off', removeListener)
142
- shimmer.wrap(ws.prototype, 'removeListener', removeListener)
143
-
144
215
  return ws
145
216
  })
146
217
 
218
+ addHook({
219
+ name: 'ws',
220
+ file: 'lib/constants.js',
221
+ versions: ['>=8.0.0'],
222
+ }, moduleExports => {
223
+ const constants = /** @type {{ kWebSocket?: symbol }} */ (moduleExports)
224
+ kWebSocketSymbol = constants.kWebSocket
225
+ return constants
226
+ })
227
+
228
+ addHook({
229
+ name: 'ws',
230
+ file: 'lib/receiver.js',
231
+ versions: ['>=8.0.0'],
232
+ }, moduleExports => {
233
+ const Receiver = /** @type {ReceiverClass} */ (moduleExports)
234
+ shimmer.wrap(Receiver.prototype, 'on', wrapReceiverOn)
235
+ shimmer.wrap(Receiver.prototype, 'addListener', wrapReceiverOn)
236
+ return Receiver
237
+ })
238
+
239
+ /**
240
+ * @param {WebSocketMessageData} data
241
+ * @returns {number}
242
+ */
147
243
  function dataLength (data) {
148
244
  if (typeof data === 'string') {
149
245
  return Buffer.byteLength(data)
@@ -151,5 +247,18 @@ function dataLength (data) {
151
247
  if (data instanceof Blob) {
152
248
  return data.size
153
249
  }
154
- return data?.length ?? 0
250
+ if (ArrayBuffer.isView(data)) {
251
+ return data.byteLength
252
+ }
253
+ if (data instanceof ArrayBuffer) {
254
+ return data.byteLength
255
+ }
256
+ let total = 0
257
+ if (Array.isArray(data)) {
258
+ const chunks = /** @type {Buffer[]} */ (data)
259
+ for (const chunk of chunks) {
260
+ total += chunk.length
261
+ }
262
+ }
263
+ return total
155
264
  }
@@ -26,7 +26,7 @@ class AerospikePlugin extends DatabasePlugin {
26
26
  type: 'aerospike',
27
27
  kind: 'client',
28
28
  resource: resourceName,
29
- meta
29
+ meta,
30
30
  }, false)
31
31
 
32
32
  ctx.parentStore = store
@@ -85,7 +85,7 @@ function getMetaForIndex (ns, set, bin, index) {
85
85
  [AEROSPIKE_PEER_SERVICE]: ns,
86
86
  'aerospike.setname': set,
87
87
  'aerospike.bin': bin,
88
- 'aerospike.index': index
88
+ 'aerospike.index': index,
89
89
  }
90
90
  }
91
91
 
@@ -94,7 +94,7 @@ function getMetaForKey (ns, set, key) {
94
94
  'aerospike.key': `${ns}:${set}:${key}`,
95
95
  [AEROSPIKE_PEER_SERVICE]: ns,
96
96
  'aerospike.setname': set,
97
- 'aerospike.userkey': key
97
+ 'aerospike.userkey': key,
98
98
  }
99
99
  }
100
100
 
@@ -102,7 +102,7 @@ function getMetaForQuery (queryObj) {
102
102
  const { ns, set } = queryObj
103
103
  return {
104
104
  [AEROSPIKE_PEER_SERVICE]: ns,
105
- 'aerospike.setname': set
105
+ 'aerospike.setname': set,
106
106
  }
107
107
  }
108
108
 
@@ -9,7 +9,7 @@ class VercelAIPlugin extends CompositePlugin {
9
9
  static get plugins () {
10
10
  return {
11
11
  llmobs: VercelAILLMObsPlugin,
12
- tracing: VercelAITracingPlugin
12
+ tracing: VercelAITracingPlugin,
13
13
  }
14
14
  }
15
15
  }
@@ -17,8 +17,8 @@ class VercelAITracingPlugin extends TracingPlugin {
17
17
  meta: {
18
18
  'resource.name': attributes['resource.name'] ?? name,
19
19
  'ai.request.model': model,
20
- 'ai.request.model_provider': modelProvider
21
- }
20
+ 'ai.request.model_provider': modelProvider,
21
+ },
22
22
  }, ctx)
23
23
 
24
24
  return ctx.currentStore