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
@@ -7,6 +7,7 @@ const { getSkippableSuites: getSkippableSuitesRequest } = require('../intelligen
7
7
  const { getKnownTests: getKnownTestsRequest } = require('../early-flake-detection/get-known-tests')
8
8
  const { getTestManagementTests: getTestManagementTestsRequest } =
9
9
  require('../test-management/get-test-management-tests')
10
+ const { uploadCoverageReport: uploadCoverageReportRequest } = require('../requests/upload-coverage-report')
10
11
  const log = require('../../log')
11
12
  const BufferingExporter = require('../../exporters/common/buffering-exporter')
12
13
  const { GIT_REPOSITORY_URL, GIT_COMMIT_SHA } = require('../../plugins/util/tags')
@@ -120,7 +121,7 @@ class CiVisibilityExporter extends BufferingExporter {
120
121
  isGzipCompatible: this._isGzipCompatible,
121
122
  evpProxyPrefix: this.evpProxyPrefix,
122
123
  custom: getTestConfigurationTags(this._config.tags),
123
- ...testConfiguration
124
+ ...testConfiguration,
124
125
  }
125
126
  }
126
127
 
@@ -211,7 +212,8 @@ class CiVisibilityExporter extends BufferingExporter {
211
212
  isKnownTestsEnabled,
212
213
  isTestManagementEnabled,
213
214
  testManagementAttemptToFixRetries,
214
- isImpactedTestsEnabled
215
+ isImpactedTestsEnabled,
216
+ isCoverageReportUploadEnabled,
215
217
  } = remoteConfiguration
216
218
  return {
217
219
  isCodeCoverageEnabled,
@@ -228,7 +230,8 @@ class CiVisibilityExporter extends BufferingExporter {
228
230
  isTestManagementEnabled: isTestManagementEnabled && this._config.isTestManagementEnabled,
229
231
  testManagementAttemptToFixRetries:
230
232
  testManagementAttemptToFixRetries ?? this._config.testManagementAttemptToFixRetries,
231
- isImpactedTestsEnabled: isImpactedTestsEnabled && this._config.isImpactedTestsEnabled
233
+ isImpactedTestsEnabled: isImpactedTestsEnabled && this._config.isImpactedTestsEnabled,
234
+ isCoverageReportUploadEnabled,
232
235
  }
233
236
  }
234
237
 
@@ -284,7 +287,7 @@ class CiVisibilityExporter extends BufferingExporter {
284
287
  formatLogMessage (testEnvironmentMetadata, logMessage) {
285
288
  const {
286
289
  [GIT_REPOSITORY_URL]: gitRepositoryUrl,
287
- [GIT_COMMIT_SHA]: gitCommitSha
290
+ [GIT_COMMIT_SHA]: gitCommitSha,
288
291
  } = testEnvironmentMetadata
289
292
 
290
293
  const { service, env, version } = this._config
@@ -293,7 +296,7 @@ class CiVisibilityExporter extends BufferingExporter {
293
296
  ddtags: [
294
297
  ...(logMessage.ddtags || []),
295
298
  `${GIT_REPOSITORY_URL}:${gitRepositoryUrl}`,
296
- `${GIT_COMMIT_SHA}:${gitCommitSha}`
299
+ `${GIT_COMMIT_SHA}:${gitCommitSha}`,
297
300
  ].join(','),
298
301
  level: 'error',
299
302
  service,
@@ -301,10 +304,10 @@ class CiVisibilityExporter extends BufferingExporter {
301
304
  ...(logMessage.dd || []),
302
305
  service,
303
306
  env,
304
- version
307
+ version,
305
308
  },
306
309
  ddsource: 'dd_debugger',
307
- ...logMessage
310
+ ...logMessage,
308
311
  }
309
312
  }
310
313
 
@@ -331,7 +334,7 @@ class CiVisibilityExporter extends BufferingExporter {
331
334
  const writers = [
332
335
  this._writer,
333
336
  this._coverageWriter,
334
- this._logsWriter
337
+ this._logsWriter,
335
338
  ].filter(Boolean)
336
339
 
337
340
  let remaining = writers.length
@@ -347,13 +350,13 @@ class CiVisibilityExporter extends BufferingExporter {
347
350
  }
348
351
  }
349
352
 
350
- writers.forEach(writer => writer.flush(onFlushComplete))
353
+ for (const writer of writers) writer.flush(onFlushComplete)
351
354
  }
352
355
 
353
356
  exportUncodedCoverages () {
354
- this._coverageBuffer.forEach(oldCoveragePayload => {
357
+ for (const oldCoveragePayload of this._coverageBuffer) {
355
358
  this.exportCoverage(oldCoveragePayload)
356
- })
359
+ }
357
360
  this._coverageBuffer = []
358
361
  }
359
362
 
@@ -386,6 +389,29 @@ class CiVisibilityExporter extends BufferingExporter {
386
389
  })
387
390
  }
388
391
  }
392
+
393
+ /**
394
+ * Uploads a single coverage report to the CI intake.
395
+ * @param {object} options - Upload options
396
+ * @param {string} options.filePath - Path to the coverage report file
397
+ * @param {string} options.format - Format of the coverage report
398
+ * @param {object} options.testEnvironmentMetadata - Test environment metadata containing git/CI tags
399
+ * @param {Function} callback - Callback function (err)
400
+ */
401
+ uploadCoverageReport ({ filePath, format, testEnvironmentMetadata }, callback) {
402
+ if (!this._codeCoverageReportUrl) {
403
+ return callback(new Error('Coverage report upload URL not configured'))
404
+ }
405
+
406
+ uploadCoverageReportRequest({
407
+ filePath,
408
+ format,
409
+ testEnvironmentMetadata,
410
+ url: this._codeCoverageReportUrl,
411
+ isEvpProxy: !!this._isUsingEvpProxy,
412
+ evpProxyPrefix: this.evpProxyPrefix,
413
+ }, callback)
414
+ }
389
415
  }
390
416
 
391
417
  module.exports = CiVisibilityExporter
@@ -16,7 +16,7 @@ const {
16
16
  getCommitsRevList,
17
17
  isShallowRepository,
18
18
  unshallowRepository,
19
- isGitAvailable
19
+ isGitAvailable,
20
20
  } = require('../../../plugins/util/git')
21
21
 
22
22
  const {
@@ -29,7 +29,7 @@ const {
29
29
  TELEMETRY_GIT_REQUESTS_OBJECT_PACKFILES,
30
30
  TELEMETRY_GIT_REQUESTS_OBJECT_PACKFILES_MS,
31
31
  TELEMETRY_GIT_REQUESTS_OBJECT_PACKFILES_ERRORS,
32
- TELEMETRY_GIT_REQUESTS_OBJECT_PACKFILES_BYTES
32
+ TELEMETRY_GIT_REQUESTS_OBJECT_PACKFILES_BYTES,
33
33
  } = require('../../../ci-visibility/telemetry')
34
34
 
35
35
  const isValidSha1 = (sha) => /^[0-9a-f]{40}$/.test(sha)
@@ -51,10 +51,10 @@ function getCommonRequestOptions (url) {
51
51
  return {
52
52
  method: 'POST',
53
53
  headers: {
54
- 'dd-api-key': getValueFromEnvSources('DD_API_KEY')
54
+ 'dd-api-key': getValueFromEnvSources('DD_API_KEY'),
55
55
  },
56
56
  timeout: 15_000,
57
- url
57
+ url,
58
58
  }
59
59
  }
60
60
 
@@ -70,9 +70,9 @@ function getCommitsToUpload ({ url, repositoryUrl, latestCommits, isEvpProxy, ev
70
70
  ...commonOptions,
71
71
  headers: {
72
72
  ...commonOptions.headers,
73
- 'Content-Type': 'application/json'
73
+ 'Content-Type': 'application/json',
74
74
  },
75
- path: '/api/v2/git/repository/search_commits'
75
+ path: '/api/v2/git/repository/search_commits',
76
76
  }
77
77
 
78
78
  if (isEvpProxy) {
@@ -83,12 +83,12 @@ function getCommitsToUpload ({ url, repositoryUrl, latestCommits, isEvpProxy, ev
83
83
 
84
84
  const localCommitData = JSON.stringify({
85
85
  meta: {
86
- repository_url: repositoryUrl
86
+ repository_url: repositoryUrl,
87
87
  },
88
88
  data: latestCommits.map(commit => ({
89
89
  id: commit,
90
- type: 'commit'
91
- }))
90
+ type: 'commit',
91
+ })),
92
92
  })
93
93
 
94
94
  incrementCountMetric(TELEMETRY_GIT_REQUESTS_SEARCH_COMMITS)
@@ -134,11 +134,11 @@ function uploadPackFile ({ url, isEvpProxy, evpProxyPrefix, packFileToUpload, re
134
134
  const pushedSha = JSON.stringify({
135
135
  data: {
136
136
  id: headCommit,
137
- type: 'commit'
137
+ type: 'commit',
138
138
  },
139
139
  meta: {
140
- repository_url: repositoryUrl
141
- }
140
+ repository_url: repositoryUrl,
141
+ },
142
142
  })
143
143
 
144
144
  form.append('pushedSha', pushedSha, { contentType: 'application/json' })
@@ -149,7 +149,7 @@ function uploadPackFile ({ url, isEvpProxy, evpProxyPrefix, packFileToUpload, re
149
149
  const [, filename] = path.basename(packFileToUpload).split('-')
150
150
  form.append('packfile', packFileContent, {
151
151
  filename,
152
- contentType: 'application/octet-stream'
152
+ contentType: 'application/octet-stream',
153
153
  })
154
154
  } catch {
155
155
  callback(new Error(`Could not read "${packFileToUpload}"`))
@@ -163,8 +163,8 @@ function uploadPackFile ({ url, isEvpProxy, evpProxyPrefix, packFileToUpload, re
163
163
  path: '/api/v2/git/repository/packfile',
164
164
  headers: {
165
165
  ...commonOptions.headers,
166
- ...form.getHeaders()
167
- }
166
+ ...form.getHeaders(),
167
+ },
168
168
  }
169
169
 
170
170
  if (isEvpProxy) {
@@ -195,7 +195,7 @@ function generateAndUploadPackFiles ({
195
195
  evpProxyPrefix,
196
196
  commitsToUpload,
197
197
  repositoryUrl,
198
- headCommit
198
+ headCommit,
199
199
  }, callback) {
200
200
  log.debug('There are %s commits to upload', commitsToUpload.length)
201
201
 
@@ -224,7 +224,7 @@ function generateAndUploadPackFiles ({
224
224
  isEvpProxy,
225
225
  evpProxyPrefix,
226
226
  repositoryUrl,
227
- headCommit
227
+ headCommit,
228
228
  },
229
229
  uploadPackFileCallback
230
230
  )
@@ -237,7 +237,7 @@ function generateAndUploadPackFiles ({
237
237
  isEvpProxy,
238
238
  evpProxyPrefix,
239
239
  repositoryUrl,
240
- headCommit
240
+ headCommit,
241
241
  },
242
242
  uploadPackFileCallback
243
243
  )
@@ -283,7 +283,7 @@ function sendGitMetadata (url, { isEvpProxy, evpProxyPrefix }, configRepositoryU
283
283
  evpProxyPrefix,
284
284
  commitsToUpload,
285
285
  repositoryUrl,
286
- headCommit
286
+ headCommit,
287
287
  }, callback)
288
288
  }
289
289
  // Otherwise we unshallow and get commits to upload again
@@ -299,7 +299,7 @@ function sendGitMetadata (url, { isEvpProxy, evpProxyPrefix }, configRepositoryU
299
299
  repositoryUrl,
300
300
  latestCommits,
301
301
  isEvpProxy,
302
- evpProxyPrefix
302
+ evpProxyPrefix,
303
303
  }, getOnFinishGetCommitsToUpload(true))
304
304
  }
305
305
 
@@ -308,10 +308,10 @@ function sendGitMetadata (url, { isEvpProxy, evpProxyPrefix }, configRepositoryU
308
308
  repositoryUrl,
309
309
  latestCommits,
310
310
  isEvpProxy,
311
- evpProxyPrefix
311
+ evpProxyPrefix,
312
312
  }, getOnFinishGetCommitsToUpload(false))
313
313
  }
314
314
 
315
315
  module.exports = {
316
- sendGitMetadata
316
+ sendGitMetadata,
317
317
  }
@@ -3,12 +3,13 @@
3
3
  const {
4
4
  JEST_WORKER_COVERAGE_PAYLOAD_CODE,
5
5
  JEST_WORKER_TRACE_PAYLOAD_CODE,
6
+ JEST_WORKER_TELEMETRY_PAYLOAD_CODE,
6
7
  CUCUMBER_WORKER_TRACE_PAYLOAD_CODE,
7
8
  MOCHA_WORKER_TRACE_PAYLOAD_CODE,
8
9
  JEST_WORKER_LOGS_PAYLOAD_CODE,
9
10
  PLAYWRIGHT_WORKER_TRACE_PAYLOAD_CODE,
10
11
  VITEST_WORKER_TRACE_PAYLOAD_CODE,
11
- VITEST_WORKER_LOGS_PAYLOAD_CODE
12
+ VITEST_WORKER_LOGS_PAYLOAD_CODE,
12
13
  } = require('../../../plugins/util/test')
13
14
  const { getEnvironmentVariable, getValueFromEnvSources } = require('../../../config/helper')
14
15
  const Writer = require('./writer')
@@ -56,6 +57,13 @@ function getInterprocessLogsCode () {
56
57
  return null
57
58
  }
58
59
 
60
+ function getInterprocessTelemetryCode () {
61
+ if (getEnvironmentVariable('JEST_WORKER_ID')) {
62
+ return JEST_WORKER_TELEMETRY_PAYLOAD_CODE
63
+ }
64
+ return null
65
+ }
66
+
59
67
  /**
60
68
  * Lightweight exporter whose writers only do simple JSON serialization
61
69
  * of trace, coverage and logs payloads, which they send to the test framework's main process.
@@ -66,10 +74,18 @@ class TestWorkerCiVisibilityExporter {
66
74
  const interprocessTraceCode = getInterprocessTraceCode()
67
75
  const interprocessCoverageCode = getInterprocessCoverageCode()
68
76
  const interprocessLogsCode = getInterprocessLogsCode()
77
+ const interprocessTelemetryCode = getInterprocessTelemetryCode()
69
78
 
70
79
  this._writer = new Writer(interprocessTraceCode)
71
80
  this._coverageWriter = new Writer(interprocessCoverageCode)
72
81
  this._logsWriter = new Writer(interprocessLogsCode)
82
+ // TODO: add support for test workers other than Jest
83
+ if (interprocessTelemetryCode) {
84
+ this._telemetryWriter = new Writer(interprocessTelemetryCode)
85
+ this.exportTelemetry = function (telemetryEvent) {
86
+ this._telemetryWriter.append(telemetryEvent)
87
+ }
88
+ }
73
89
  }
74
90
 
75
91
  export (payload) {
@@ -89,6 +105,9 @@ class TestWorkerCiVisibilityExporter {
89
105
  this._writer.flush(onDone)
90
106
  this._coverageWriter.flush()
91
107
  this._logsWriter.flush()
108
+ if (this._telemetryWriter) {
109
+ this._telemetryWriter.flush()
110
+ }
92
111
  }
93
112
  }
94
113
 
@@ -4,7 +4,7 @@ const { getEnvironmentVariable } = require('../../../config/helper')
4
4
  const log = require('../../../log')
5
5
  const {
6
6
  VITEST_WORKER_TRACE_PAYLOAD_CODE,
7
- VITEST_WORKER_LOGS_PAYLOAD_CODE
7
+ VITEST_WORKER_LOGS_PAYLOAD_CODE,
8
8
  } = require('../../../plugins/util/test')
9
9
 
10
10
  class Writer {
@@ -11,7 +11,7 @@ const {
11
11
  TELEMETRY_ITR_SKIPPABLE_TESTS_ERRORS,
12
12
  TELEMETRY_ITR_SKIPPABLE_TESTS_RESPONSE_SUITES,
13
13
  TELEMETRY_ITR_SKIPPABLE_TESTS_RESPONSE_TESTS,
14
- TELEMETRY_ITR_SKIPPABLE_TESTS_RESPONSE_BYTES
14
+ TELEMETRY_ITR_SKIPPABLE_TESTS_RESPONSE_BYTES,
15
15
  } = require('../../ci-visibility/telemetry')
16
16
 
17
17
  function getSkippableSuites ({
@@ -29,16 +29,16 @@ function getSkippableSuites ({
29
29
  runtimeName,
30
30
  runtimeVersion,
31
31
  custom,
32
- testLevel = 'suite'
32
+ testLevel = 'suite',
33
33
  }, done) {
34
34
  const options = {
35
35
  path: '/api/v2/ci/tests/skippable',
36
36
  method: 'POST',
37
37
  headers: {
38
- 'Content-Type': 'application/json'
38
+ 'Content-Type': 'application/json',
39
39
  },
40
40
  timeout: 20_000,
41
- url
41
+ url,
42
42
  }
43
43
 
44
44
  if (isGzipCompatible) {
@@ -68,14 +68,14 @@ function getSkippableSuites ({
68
68
  'os.architecture': osArchitecture,
69
69
  'runtime.name': runtimeName,
70
70
  'runtime.version': runtimeVersion,
71
- custom
71
+ custom,
72
72
  },
73
73
  service,
74
74
  env,
75
75
  repository_url: repositoryUrl,
76
- sha
77
- }
78
- }
76
+ sha,
77
+ },
78
+ },
79
79
  })
80
80
 
81
81
  incrementCountMetric(TELEMETRY_ITR_SKIPPABLE_TESTS)
@@ -12,8 +12,8 @@ function getWinstonLogSubmissionParameters (config) {
12
12
  path: `/api/v2/logs?ddsource=winston&service=${service}`,
13
13
  ssl: true,
14
14
  headers: {
15
- 'DD-API-KEY': getValueFromEnvSources('DD_API_KEY')
16
- }
15
+ 'DD-API-KEY': getValueFromEnvSources('DD_API_KEY'),
16
+ },
17
17
  }
18
18
 
19
19
  if (!getValueFromEnvSources('DD_AGENTLESS_LOG_SUBMISSION_URL')) {
@@ -27,7 +27,7 @@ function getWinstonLogSubmissionParameters (config) {
27
27
  port: url.port,
28
28
  ssl: url.protocol === 'https:',
29
29
  path: defaultParameters.path,
30
- headers: defaultParameters.headers
30
+ headers: defaultParameters.headers,
31
31
  }
32
32
  } catch {
33
33
  log.error('Could not parse DD_AGENTLESS_LOG_SUBMISSION_URL')
@@ -10,8 +10,9 @@ const {
10
10
  TELEMETRY_GIT_REQUESTS_SETTINGS,
11
11
  TELEMETRY_GIT_REQUESTS_SETTINGS_MS,
12
12
  TELEMETRY_GIT_REQUESTS_SETTINGS_ERRORS,
13
- TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE
13
+ TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE,
14
14
  } = require('../telemetry')
15
+ const { writeSettingsToCache } = require('../test-optimization-cache')
15
16
 
16
17
  const DEFAULT_EARLY_FLAKE_DETECTION_NUM_RETRIES = 2
17
18
  const DEFAULT_EARLY_FLAKE_DETECTION_ERROR_THRESHOLD = 30
@@ -32,16 +33,16 @@ function getLibraryConfiguration ({
32
33
  branch,
33
34
  testLevel = 'suite',
34
35
  custom,
35
- tag
36
+ tag,
36
37
  }, done) {
37
38
  const options = {
38
39
  path: '/api/v2/libraries/tests/services/setting',
39
40
  method: 'POST',
40
41
  headers: {
41
- 'Content-Type': 'application/json'
42
+ 'Content-Type': 'application/json',
42
43
  },
43
44
  url,
44
- timeout: 20_000
45
+ timeout: 20_000,
45
46
  }
46
47
 
47
48
  if (isEvpProxy) {
@@ -67,15 +68,15 @@ function getLibraryConfiguration ({
67
68
  'os.architecture': osArchitecture,
68
69
  'runtime.name': runtimeName,
69
70
  'runtime.version': runtimeVersion,
70
- custom
71
+ custom,
71
72
  },
72
73
  service,
73
74
  env,
74
75
  repository_url: repositoryUrl,
75
76
  sha,
76
- branch: branch || tag
77
- }
78
- }
77
+ branch: branch || tag,
78
+ },
79
+ },
79
80
  })
80
81
 
81
82
  incrementCountMetric(TELEMETRY_GIT_REQUESTS_SETTINGS)
@@ -100,9 +101,10 @@ function getLibraryConfiguration ({
100
101
  di_enabled: isDiEnabled,
101
102
  known_tests_enabled: isKnownTestsEnabled,
102
103
  test_management: testManagementConfig,
103
- impacted_tests_enabled: isImpactedTestsEnabled
104
- }
105
- }
104
+ impacted_tests_enabled: isImpactedTestsEnabled,
105
+ coverage_report_upload_enabled: isCoverageReportUploadEnabled,
106
+ },
107
+ },
106
108
  } = JSON.parse(res)
107
109
 
108
110
  const settings = {
@@ -121,7 +123,8 @@ function getLibraryConfiguration ({
121
123
  isTestManagementEnabled: (testManagementConfig?.enabled ?? false),
122
124
  testManagementAttemptToFixRetries:
123
125
  testManagementConfig?.attempt_to_fix_retries,
124
- isImpactedTestsEnabled
126
+ isImpactedTestsEnabled,
127
+ isCoverageReportUploadEnabled: isCoverageReportUploadEnabled ?? false,
125
128
  }
126
129
 
127
130
  log.debug('Remote settings: %j', settings)
@@ -137,6 +140,8 @@ function getLibraryConfiguration ({
137
140
 
138
141
  incrementCountMetric(TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE, settings)
139
142
 
143
+ writeSettingsToCache(settings)
144
+
140
145
  done(null, settings)
141
146
  } catch (err) {
142
147
  done(err)
@@ -0,0 +1,107 @@
1
+ 'use strict'
2
+
3
+ const { readFileSync } = require('node:fs')
4
+ const { gzipSync } = require('node:zlib')
5
+
6
+ const FormData = require('../../exporters/common/form-data')
7
+ const request = require('../../exporters/common/request')
8
+ const log = require('../../log')
9
+ const { getValueFromEnvSources } = require('../../config/helper')
10
+ const {
11
+ incrementCountMetric,
12
+ distributionMetric,
13
+ TELEMETRY_COVERAGE_UPLOAD,
14
+ TELEMETRY_COVERAGE_UPLOAD_MS,
15
+ TELEMETRY_COVERAGE_UPLOAD_ERRORS,
16
+ TELEMETRY_COVERAGE_UPLOAD_BYTES,
17
+ } = require('../telemetry')
18
+
19
+ const UPLOAD_TIMEOUT_MS = 30_000
20
+
21
+ /**
22
+ * Uploads a single coverage report to the Datadog CI intake.
23
+ * One file per request with field names 'coverage' and 'event'.
24
+ * @param {object} options - Upload options
25
+ * @param {string} options.filePath - Path to the coverage report file
26
+ * @param {string} options.format - Format of the coverage report (e.g., 'lcov', 'cobertura')
27
+ * @param {object} options.testEnvironmentMetadata - Test environment metadata containing git/CI tags
28
+ * @param {URL} options.url - The base URL for the coverage report upload
29
+ * @param {boolean} [options.isEvpProxy] - Whether to use EVP proxy for the upload
30
+ * @param {string} [options.evpProxyPrefix] - The EVP proxy prefix (e.g., '/evp_proxy/v4')
31
+ * @param {Function} callback - Callback function (err)
32
+ */
33
+ function uploadCoverageReport (
34
+ { filePath, format, testEnvironmentMetadata, url, isEvpProxy, evpProxyPrefix },
35
+ callback
36
+ ) {
37
+ const apiKey = getValueFromEnvSources('DD_API_KEY')
38
+
39
+ if (!apiKey && !isEvpProxy) {
40
+ return callback(new Error('DD_API_KEY is required for coverage report upload'))
41
+ }
42
+
43
+ let compressedCoverage
44
+ try {
45
+ const coverageContent = readFileSync(filePath)
46
+ compressedCoverage = gzipSync(coverageContent)
47
+ } catch (err) {
48
+ return callback(new Error(`Failed to read coverage report at ${filePath}: ${err.message}`))
49
+ }
50
+
51
+ // Build the event payload with format, type, and all tags from test environment metadata
52
+ const eventPayload = {
53
+ type: 'coverage_report',
54
+ format,
55
+ ...testEnvironmentMetadata,
56
+ }
57
+
58
+ // Create multipart form
59
+ const form = new FormData()
60
+
61
+ form.append('coverage', compressedCoverage, {
62
+ filename: 'coverage.gz',
63
+ contentType: 'application/gzip',
64
+ })
65
+
66
+ form.append('event', JSON.stringify(eventPayload), {
67
+ filename: 'event.json',
68
+ contentType: 'application/json',
69
+ })
70
+
71
+ const options = {
72
+ method: 'POST',
73
+ headers: {
74
+ ...form.getHeaders(),
75
+ },
76
+ timeout: UPLOAD_TIMEOUT_MS,
77
+ url,
78
+ }
79
+
80
+ if (isEvpProxy) {
81
+ options.path = `${evpProxyPrefix}/api/v2/cicovreprt`
82
+ options.headers['X-Datadog-EVP-Subdomain'] = 'ci-intake'
83
+ } else {
84
+ options.path = '/api/v2/cicovreprt'
85
+ options.headers['dd-api-key'] = apiKey
86
+ }
87
+
88
+ log.debug('Uploading coverage report %s to %s%s', filePath, url, options.path)
89
+
90
+ incrementCountMetric(TELEMETRY_COVERAGE_UPLOAD)
91
+ distributionMetric(TELEMETRY_COVERAGE_UPLOAD_BYTES, {}, compressedCoverage.length)
92
+
93
+ const startTime = Date.now()
94
+
95
+ request(form, options, (err, res, statusCode) => {
96
+ distributionMetric(TELEMETRY_COVERAGE_UPLOAD_MS, {}, Date.now() - startTime)
97
+ if (err) {
98
+ incrementCountMetric(TELEMETRY_COVERAGE_UPLOAD_ERRORS, { statusCode })
99
+ log.error('Error uploading coverage report: %s', err.message)
100
+ return callback(err)
101
+ }
102
+ log.debug('Coverage report uploaded successfully (status: %d)', statusCode)
103
+ callback(null)
104
+ })
105
+ }
106
+
107
+ module.exports = { uploadCoverageReport }
@@ -16,7 +16,23 @@ const formattedTags = {
16
16
  isNew: 'is_new',
17
17
  isRum: 'is_rum',
18
18
  browserDriver: 'browser_driver',
19
- autoInjected: 'auto_injected'
19
+ autoInjected: 'auto_injected',
20
+ isQuarantined: 'is_quarantined',
21
+ isDisabled: 'is_disabled',
22
+ isTestManagementEnabled: 'test_management_enabled',
23
+ isItrEnabled: 'itr_enabled',
24
+ isEarlyFlakeDetectionEnabled: 'early_flake_detection_enabled',
25
+ isFlakyTestRetriesEnabled: 'flaky_test_retries_enabled',
26
+ isKnownTestsEnabled: 'known_tests_enabled',
27
+ isImpactedTestsEnabled: 'impacted_tests_enabled',
28
+ hasFailedTestReplay: 'has_failed_test_replay',
29
+ isFailedTestReplayEnabled: 'is_failed_test_replay_enabled',
30
+ // isDiEnabled is specifically for the settings endpoint telemetry
31
+ isDiEnabled: 'failed_test_replay_enabled',
32
+ requireGit: 'require_git',
33
+ isModified: 'is_modified',
34
+ isRetry: 'is_retry',
35
+ retryReason: 'retry_reason',
20
36
  }
21
37
 
22
38
  // Transform tags dictionary to array of strings.
@@ -101,6 +117,17 @@ const TELEMETRY_KNOWN_TESTS_MS = 'early_flake_detection.request_ms'
101
117
  const TELEMETRY_KNOWN_TESTS_ERRORS = 'early_flake_detection.request_errors'
102
118
  const TELEMETRY_KNOWN_TESTS_RESPONSE_TESTS = 'early_flake_detection.response_tests'
103
119
  const TELEMETRY_KNOWN_TESTS_RESPONSE_BYTES = 'early_flake_detection.response_bytes'
120
+ // coverage upload
121
+ const TELEMETRY_COVERAGE_UPLOAD = 'coverage_upload.request'
122
+ const TELEMETRY_COVERAGE_UPLOAD_MS = 'coverage_upload.request_ms'
123
+ const TELEMETRY_COVERAGE_UPLOAD_ERRORS = 'coverage_upload.request_errors'
124
+ const TELEMETRY_COVERAGE_UPLOAD_BYTES = 'coverage_upload.request_bytes'
125
+ // test management
126
+ const TELEMETRY_TEST_MANAGEMENT_TESTS = 'test_management_tests.request'
127
+ const TELEMETRY_TEST_MANAGEMENT_TESTS_MS = 'test_management_tests.request_ms'
128
+ const TELEMETRY_TEST_MANAGEMENT_TESTS_ERRORS = 'test_management_tests.request_errors'
129
+ const TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_TESTS = 'test_management_tests.response_tests'
130
+ const TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_BYTES = 'test_management_tests.response_bytes'
104
131
 
105
132
  function isStatusCode400 (statusCode) {
106
133
  return statusCode >= 400 && statusCode < 500
@@ -164,5 +191,14 @@ module.exports = {
164
191
  TELEMETRY_KNOWN_TESTS_MS,
165
192
  TELEMETRY_KNOWN_TESTS_ERRORS,
166
193
  TELEMETRY_KNOWN_TESTS_RESPONSE_TESTS,
167
- TELEMETRY_KNOWN_TESTS_RESPONSE_BYTES
194
+ TELEMETRY_KNOWN_TESTS_RESPONSE_BYTES,
195
+ TELEMETRY_COVERAGE_UPLOAD,
196
+ TELEMETRY_COVERAGE_UPLOAD_MS,
197
+ TELEMETRY_COVERAGE_UPLOAD_ERRORS,
198
+ TELEMETRY_COVERAGE_UPLOAD_BYTES,
199
+ TELEMETRY_TEST_MANAGEMENT_TESTS,
200
+ TELEMETRY_TEST_MANAGEMENT_TESTS_MS,
201
+ TELEMETRY_TEST_MANAGEMENT_TESTS_ERRORS,
202
+ TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_TESTS,
203
+ TELEMETRY_TEST_MANAGEMENT_TESTS_RESPONSE_BYTES,
168
204
  }
@@ -4,7 +4,7 @@ const CiPlugin = require('../../plugins/ci_plugin')
4
4
  const {
5
5
  TEST_STATUS,
6
6
  finishAllTraceSpans,
7
- getTestSuitePath
7
+ getTestSuitePath,
8
8
  } = require('../../plugins/util/test')
9
9
  const { storage } = require('../../../../datadog-core')
10
10