@depup/dd-trace 5.90.0-depup.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 (929) hide show
  1. package/LICENSE +6 -0
  2. package/LICENSE-3rdparty.csv +102 -0
  3. package/LICENSE.Apache +200 -0
  4. package/LICENSE.BSD3 +29 -0
  5. package/README.md +25 -0
  6. package/changes.json +5 -0
  7. package/ci/cypress/after-run.js +3 -0
  8. package/ci/cypress/after-spec.js +3 -0
  9. package/ci/cypress/plugin.js +13 -0
  10. package/ci/cypress/polyfills.js +25 -0
  11. package/ci/cypress/support.js +3 -0
  12. package/ci/init.js +86 -0
  13. package/esbuild.js +3 -0
  14. package/ext/exporters.d.ts +14 -0
  15. package/ext/exporters.js +13 -0
  16. package/ext/formats.d.ts +11 -0
  17. package/ext/formats.js +9 -0
  18. package/ext/index.d.ts +8 -0
  19. package/ext/index.js +17 -0
  20. package/ext/kinds.d.ts +9 -0
  21. package/ext/kinds.js +9 -0
  22. package/ext/priority.d.ts +8 -0
  23. package/ext/priority.js +8 -0
  24. package/ext/scopes.d.ts +9 -0
  25. package/ext/scopes.js +9 -0
  26. package/ext/tags.d.ts +26 -0
  27. package/ext/tags.js +40 -0
  28. package/ext/types.d.ts +7 -0
  29. package/ext/types.js +7 -0
  30. package/index.d.ts +3811 -0
  31. package/index.js +3 -0
  32. package/init.js +7 -0
  33. package/initialize.mjs +85 -0
  34. package/loader-hook.mjs +77 -0
  35. package/package.json +215 -0
  36. package/packages/datadog-code-origin/index.js +66 -0
  37. package/packages/datadog-core/index.js +5 -0
  38. package/packages/datadog-core/src/storage.js +132 -0
  39. package/packages/datadog-core/src/utils/src/kebabcase.js +14 -0
  40. package/packages/datadog-core/src/utils/src/parse-tags.js +33 -0
  41. package/packages/datadog-core/src/utils/src/pick.js +11 -0
  42. package/packages/datadog-core/src/utils/src/set.js +18 -0
  43. package/packages/datadog-core/src/utils/src/uniq.js +5 -0
  44. package/packages/datadog-esbuild/index.js +403 -0
  45. package/packages/datadog-esbuild/src/log.js +32 -0
  46. package/packages/datadog-esbuild/src/utils.js +218 -0
  47. package/packages/datadog-instrumentations/index.js +5 -0
  48. package/packages/datadog-instrumentations/src/aerospike.js +48 -0
  49. package/packages/datadog-instrumentations/src/ai.js +119 -0
  50. package/packages/datadog-instrumentations/src/amqp10.js +73 -0
  51. package/packages/datadog-instrumentations/src/amqplib.js +146 -0
  52. package/packages/datadog-instrumentations/src/anthropic.js +127 -0
  53. package/packages/datadog-instrumentations/src/apollo-server-core.js +40 -0
  54. package/packages/datadog-instrumentations/src/apollo-server.js +135 -0
  55. package/packages/datadog-instrumentations/src/apollo.js +101 -0
  56. package/packages/datadog-instrumentations/src/avsc.js +39 -0
  57. package/packages/datadog-instrumentations/src/aws-sdk.js +264 -0
  58. package/packages/datadog-instrumentations/src/azure-durable-functions.js +75 -0
  59. package/packages/datadog-instrumentations/src/azure-event-hubs.js +38 -0
  60. package/packages/datadog-instrumentations/src/azure-functions.js +56 -0
  61. package/packages/datadog-instrumentations/src/azure-service-bus.js +71 -0
  62. package/packages/datadog-instrumentations/src/bluebird.js +26 -0
  63. package/packages/datadog-instrumentations/src/body-parser.js +44 -0
  64. package/packages/datadog-instrumentations/src/bullmq.js +11 -0
  65. package/packages/datadog-instrumentations/src/bunyan.js +22 -0
  66. package/packages/datadog-instrumentations/src/cassandra-driver.js +179 -0
  67. package/packages/datadog-instrumentations/src/child_process.js +246 -0
  68. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +421 -0
  69. package/packages/datadog-instrumentations/src/connect.js +118 -0
  70. package/packages/datadog-instrumentations/src/cookie-parser.js +36 -0
  71. package/packages/datadog-instrumentations/src/cookie.js +21 -0
  72. package/packages/datadog-instrumentations/src/couchbase.js +324 -0
  73. package/packages/datadog-instrumentations/src/crypto.js +33 -0
  74. package/packages/datadog-instrumentations/src/cucumber.js +1096 -0
  75. package/packages/datadog-instrumentations/src/cypress.js +11 -0
  76. package/packages/datadog-instrumentations/src/dd-trace-api.js +7 -0
  77. package/packages/datadog-instrumentations/src/dns.js +98 -0
  78. package/packages/datadog-instrumentations/src/elasticsearch.js +129 -0
  79. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +45 -0
  80. package/packages/datadog-instrumentations/src/express-session.js +41 -0
  81. package/packages/datadog-instrumentations/src/express.js +253 -0
  82. package/packages/datadog-instrumentations/src/fastify.js +300 -0
  83. package/packages/datadog-instrumentations/src/fetch.js +33 -0
  84. package/packages/datadog-instrumentations/src/find-my-way.js +31 -0
  85. package/packages/datadog-instrumentations/src/fs.js +372 -0
  86. package/packages/datadog-instrumentations/src/generic-pool.js +48 -0
  87. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +287 -0
  88. package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +101 -0
  89. package/packages/datadog-instrumentations/src/google-genai.js +120 -0
  90. package/packages/datadog-instrumentations/src/graphql.js +382 -0
  91. package/packages/datadog-instrumentations/src/grpc/client.js +258 -0
  92. package/packages/datadog-instrumentations/src/grpc/server.js +154 -0
  93. package/packages/datadog-instrumentations/src/grpc/types.js +10 -0
  94. package/packages/datadog-instrumentations/src/grpc.js +4 -0
  95. package/packages/datadog-instrumentations/src/handlebars.js +40 -0
  96. package/packages/datadog-instrumentations/src/hapi.js +178 -0
  97. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +68 -0
  98. package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +103 -0
  99. package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +42 -0
  100. package/packages/datadog-instrumentations/src/helpers/fetch.js +26 -0
  101. package/packages/datadog-instrumentations/src/helpers/hook.js +75 -0
  102. package/packages/datadog-instrumentations/src/helpers/hooks.js +151 -0
  103. package/packages/datadog-instrumentations/src/helpers/instrument.js +57 -0
  104. package/packages/datadog-instrumentations/src/helpers/instrumentations.js +8 -0
  105. package/packages/datadog-instrumentations/src/helpers/promise.js +29 -0
  106. package/packages/datadog-instrumentations/src/helpers/register.js +242 -0
  107. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +70 -0
  108. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/ai.js +103 -0
  109. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.js +108 -0
  110. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +7 -0
  111. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/langchain.js +237 -0
  112. package/packages/datadog-instrumentations/src/helpers/rewriter/loader.js +9 -0
  113. package/packages/datadog-instrumentations/src/helpers/rewriter/loader.mjs +11 -0
  114. package/packages/datadog-instrumentations/src/helpers/rewriter/orchestrion/compiler.js +74 -0
  115. package/packages/datadog-instrumentations/src/helpers/rewriter/orchestrion/index.js +43 -0
  116. package/packages/datadog-instrumentations/src/helpers/rewriter/orchestrion/matcher.js +49 -0
  117. package/packages/datadog-instrumentations/src/helpers/rewriter/orchestrion/transformer.js +121 -0
  118. package/packages/datadog-instrumentations/src/helpers/rewriter/orchestrion/transforms.js +322 -0
  119. package/packages/datadog-instrumentations/src/helpers/router-helper.js +238 -0
  120. package/packages/datadog-instrumentations/src/helpers/shared-utils.js +9 -0
  121. package/packages/datadog-instrumentations/src/hono.js +150 -0
  122. package/packages/datadog-instrumentations/src/http/client.js +315 -0
  123. package/packages/datadog-instrumentations/src/http/server.js +223 -0
  124. package/packages/datadog-instrumentations/src/http.js +4 -0
  125. package/packages/datadog-instrumentations/src/http2/client.js +76 -0
  126. package/packages/datadog-instrumentations/src/http2/server.js +64 -0
  127. package/packages/datadog-instrumentations/src/http2.js +4 -0
  128. package/packages/datadog-instrumentations/src/ioredis.js +57 -0
  129. package/packages/datadog-instrumentations/src/iovalkey.js +47 -0
  130. package/packages/datadog-instrumentations/src/jest.js +1895 -0
  131. package/packages/datadog-instrumentations/src/kafkajs.js +266 -0
  132. package/packages/datadog-instrumentations/src/knex.js +86 -0
  133. package/packages/datadog-instrumentations/src/koa.js +173 -0
  134. package/packages/datadog-instrumentations/src/langchain.js +7 -0
  135. package/packages/datadog-instrumentations/src/ldapjs.js +101 -0
  136. package/packages/datadog-instrumentations/src/light-my-request.js +93 -0
  137. package/packages/datadog-instrumentations/src/limitd-client.js +22 -0
  138. package/packages/datadog-instrumentations/src/lodash.js +30 -0
  139. package/packages/datadog-instrumentations/src/mariadb.js +186 -0
  140. package/packages/datadog-instrumentations/src/memcached.js +45 -0
  141. package/packages/datadog-instrumentations/src/microgateway-core.js +69 -0
  142. package/packages/datadog-instrumentations/src/mocha/common.js +50 -0
  143. package/packages/datadog-instrumentations/src/mocha/main.js +753 -0
  144. package/packages/datadog-instrumentations/src/mocha/utils.js +526 -0
  145. package/packages/datadog-instrumentations/src/mocha/worker.js +104 -0
  146. package/packages/datadog-instrumentations/src/mocha.js +13 -0
  147. package/packages/datadog-instrumentations/src/moleculer/client.js +44 -0
  148. package/packages/datadog-instrumentations/src/moleculer/server.js +58 -0
  149. package/packages/datadog-instrumentations/src/moleculer.js +4 -0
  150. package/packages/datadog-instrumentations/src/mongodb-core.js +213 -0
  151. package/packages/datadog-instrumentations/src/mongodb.js +59 -0
  152. package/packages/datadog-instrumentations/src/mongoose.js +179 -0
  153. package/packages/datadog-instrumentations/src/mquery.js +65 -0
  154. package/packages/datadog-instrumentations/src/multer.js +37 -0
  155. package/packages/datadog-instrumentations/src/mysql.js +105 -0
  156. package/packages/datadog-instrumentations/src/mysql2.js +380 -0
  157. package/packages/datadog-instrumentations/src/net.js +143 -0
  158. package/packages/datadog-instrumentations/src/next.js +320 -0
  159. package/packages/datadog-instrumentations/src/node-serialize.js +22 -0
  160. package/packages/datadog-instrumentations/src/nyc.js +59 -0
  161. package/packages/datadog-instrumentations/src/openai.js +326 -0
  162. package/packages/datadog-instrumentations/src/opensearch.js +11 -0
  163. package/packages/datadog-instrumentations/src/oracledb.js +162 -0
  164. package/packages/datadog-instrumentations/src/orchestrion-config/index.js +86 -0
  165. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +24 -0
  166. package/packages/datadog-instrumentations/src/passport-http.js +10 -0
  167. package/packages/datadog-instrumentations/src/passport-local.js +10 -0
  168. package/packages/datadog-instrumentations/src/passport-utils.js +61 -0
  169. package/packages/datadog-instrumentations/src/passport.js +45 -0
  170. package/packages/datadog-instrumentations/src/pg.js +201 -0
  171. package/packages/datadog-instrumentations/src/pino.js +117 -0
  172. package/packages/datadog-instrumentations/src/playwright.js +1383 -0
  173. package/packages/datadog-instrumentations/src/prisma.js +272 -0
  174. package/packages/datadog-instrumentations/src/process.js +29 -0
  175. package/packages/datadog-instrumentations/src/promise-js.js +15 -0
  176. package/packages/datadog-instrumentations/src/promise.js +14 -0
  177. package/packages/datadog-instrumentations/src/protobufjs.js +128 -0
  178. package/packages/datadog-instrumentations/src/pug.js +23 -0
  179. package/packages/datadog-instrumentations/src/q.js +21 -0
  180. package/packages/datadog-instrumentations/src/redis.js +161 -0
  181. package/packages/datadog-instrumentations/src/restify.js +89 -0
  182. package/packages/datadog-instrumentations/src/rhea.js +237 -0
  183. package/packages/datadog-instrumentations/src/router.js +326 -0
  184. package/packages/datadog-instrumentations/src/selenium.js +80 -0
  185. package/packages/datadog-instrumentations/src/sequelize.js +45 -0
  186. package/packages/datadog-instrumentations/src/sharedb.js +72 -0
  187. package/packages/datadog-instrumentations/src/stripe.js +92 -0
  188. package/packages/datadog-instrumentations/src/tedious.js +63 -0
  189. package/packages/datadog-instrumentations/src/undici.js +29 -0
  190. package/packages/datadog-instrumentations/src/url.js +80 -0
  191. package/packages/datadog-instrumentations/src/vitest.js +1116 -0
  192. package/packages/datadog-instrumentations/src/vm.js +49 -0
  193. package/packages/datadog-instrumentations/src/when.js +14 -0
  194. package/packages/datadog-instrumentations/src/winston.js +78 -0
  195. package/packages/datadog-instrumentations/src/ws.js +264 -0
  196. package/packages/datadog-plugin-aerospike/src/index.js +113 -0
  197. package/packages/datadog-plugin-ai/src/index.js +17 -0
  198. package/packages/datadog-plugin-ai/src/tracing.js +33 -0
  199. package/packages/datadog-plugin-ai/src/utils.js +28 -0
  200. package/packages/datadog-plugin-amqp10/src/consumer.js +34 -0
  201. package/packages/datadog-plugin-amqp10/src/index.js +17 -0
  202. package/packages/datadog-plugin-amqp10/src/producer.js +37 -0
  203. package/packages/datadog-plugin-amqp10/src/util.js +15 -0
  204. package/packages/datadog-plugin-amqplib/src/client.js +44 -0
  205. package/packages/datadog-plugin-amqplib/src/consumer.js +57 -0
  206. package/packages/datadog-plugin-amqplib/src/index.js +20 -0
  207. package/packages/datadog-plugin-amqplib/src/producer.js +63 -0
  208. package/packages/datadog-plugin-amqplib/src/util.js +14 -0
  209. package/packages/datadog-plugin-anthropic/src/index.js +17 -0
  210. package/packages/datadog-plugin-anthropic/src/tracing.js +30 -0
  211. package/packages/datadog-plugin-apollo/src/gateway/execute.js +18 -0
  212. package/packages/datadog-plugin-apollo/src/gateway/fetch.js +39 -0
  213. package/packages/datadog-plugin-apollo/src/gateway/index.js +36 -0
  214. package/packages/datadog-plugin-apollo/src/gateway/plan.js +18 -0
  215. package/packages/datadog-plugin-apollo/src/gateway/postprocessing.js +15 -0
  216. package/packages/datadog-plugin-apollo/src/gateway/request.js +122 -0
  217. package/packages/datadog-plugin-apollo/src/gateway/validate.js +23 -0
  218. package/packages/datadog-plugin-apollo/src/index.js +43 -0
  219. package/packages/datadog-plugin-avsc/src/index.js +11 -0
  220. package/packages/datadog-plugin-avsc/src/schema_iterator.js +176 -0
  221. package/packages/datadog-plugin-aws-sdk/src/base.js +335 -0
  222. package/packages/datadog-plugin-aws-sdk/src/index.js +26 -0
  223. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +16 -0
  224. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +31 -0
  225. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +487 -0
  226. package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +19 -0
  227. package/packages/datadog-plugin-aws-sdk/src/services/default.js +7 -0
  228. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +197 -0
  229. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +53 -0
  230. package/packages/datadog-plugin-aws-sdk/src/services/index.js +16 -0
  231. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +214 -0
  232. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +67 -0
  233. package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +19 -0
  234. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +55 -0
  235. package/packages/datadog-plugin-aws-sdk/src/services/sfn.js +7 -0
  236. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +125 -0
  237. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +298 -0
  238. package/packages/datadog-plugin-aws-sdk/src/services/states.js +7 -0
  239. package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +64 -0
  240. package/packages/datadog-plugin-aws-sdk/src/util.js +151 -0
  241. package/packages/datadog-plugin-azure-durable-functions/src/index.js +49 -0
  242. package/packages/datadog-plugin-azure-event-hubs/src/index.js +15 -0
  243. package/packages/datadog-plugin-azure-event-hubs/src/producer.js +96 -0
  244. package/packages/datadog-plugin-azure-functions/src/index.js +171 -0
  245. package/packages/datadog-plugin-azure-service-bus/src/index.js +15 -0
  246. package/packages/datadog-plugin-azure-service-bus/src/producer.js +97 -0
  247. package/packages/datadog-plugin-bullmq/src/consumer.js +82 -0
  248. package/packages/datadog-plugin-bullmq/src/index.js +18 -0
  249. package/packages/datadog-plugin-bullmq/src/producer.js +207 -0
  250. package/packages/datadog-plugin-bunyan/src/index.js +8 -0
  251. package/packages/datadog-plugin-cassandra-driver/src/index.js +47 -0
  252. package/packages/datadog-plugin-child_process/src/index.js +111 -0
  253. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +127 -0
  254. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/batch-consumer.js +9 -0
  255. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/consumer.js +9 -0
  256. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +25 -0
  257. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/producer.js +9 -0
  258. package/packages/datadog-plugin-connect/src/index.js +17 -0
  259. package/packages/datadog-plugin-couchbase/src/index.js +94 -0
  260. package/packages/datadog-plugin-cucumber/src/index.js +461 -0
  261. package/packages/datadog-plugin-cypress/src/after-run.js +5 -0
  262. package/packages/datadog-plugin-cypress/src/after-spec.js +5 -0
  263. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +1089 -0
  264. package/packages/datadog-plugin-cypress/src/index.js +11 -0
  265. package/packages/datadog-plugin-cypress/src/plugin.js +57 -0
  266. package/packages/datadog-plugin-cypress/src/source-map-utils.js +297 -0
  267. package/packages/datadog-plugin-cypress/src/support.js +303 -0
  268. package/packages/datadog-plugin-dd-trace-api/src/index.js +117 -0
  269. package/packages/datadog-plugin-dns/src/index.js +23 -0
  270. package/packages/datadog-plugin-dns/src/lookup.js +45 -0
  271. package/packages/datadog-plugin-dns/src/lookup_service.js +28 -0
  272. package/packages/datadog-plugin-dns/src/resolve.js +27 -0
  273. package/packages/datadog-plugin-dns/src/reverse.js +25 -0
  274. package/packages/datadog-plugin-elasticsearch/src/index.js +49 -0
  275. package/packages/datadog-plugin-express/src/code_origin.js +47 -0
  276. package/packages/datadog-plugin-express/src/index.js +17 -0
  277. package/packages/datadog-plugin-express/src/tracing.js +17 -0
  278. package/packages/datadog-plugin-fastify/src/code_origin.js +41 -0
  279. package/packages/datadog-plugin-fastify/src/index.js +17 -0
  280. package/packages/datadog-plugin-fastify/src/tracing.js +34 -0
  281. package/packages/datadog-plugin-fetch/src/index.js +40 -0
  282. package/packages/datadog-plugin-find-my-way/src/index.js +18 -0
  283. package/packages/datadog-plugin-fs/src/index.js +52 -0
  284. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +39 -0
  285. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +212 -0
  286. package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +19 -0
  287. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +191 -0
  288. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +217 -0
  289. package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +17 -0
  290. package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +49 -0
  291. package/packages/datadog-plugin-google-cloud-vertexai/src/utils.js +21 -0
  292. package/packages/datadog-plugin-google-genai/src/index.js +17 -0
  293. package/packages/datadog-plugin-google-genai/src/tracing.js +41 -0
  294. package/packages/datadog-plugin-graphql/src/execute.js +88 -0
  295. package/packages/datadog-plugin-graphql/src/index.js +72 -0
  296. package/packages/datadog-plugin-graphql/src/parse.js +35 -0
  297. package/packages/datadog-plugin-graphql/src/resolve.js +191 -0
  298. package/packages/datadog-plugin-graphql/src/tools/index.js +6 -0
  299. package/packages/datadog-plugin-graphql/src/tools/signature.js +9 -0
  300. package/packages/datadog-plugin-graphql/src/tools/transforms.js +108 -0
  301. package/packages/datadog-plugin-graphql/src/utils.js +49 -0
  302. package/packages/datadog-plugin-graphql/src/validate.js +40 -0
  303. package/packages/datadog-plugin-grpc/src/client.js +129 -0
  304. package/packages/datadog-plugin-grpc/src/index.js +17 -0
  305. package/packages/datadog-plugin-grpc/src/server.js +112 -0
  306. package/packages/datadog-plugin-grpc/src/util.js +66 -0
  307. package/packages/datadog-plugin-hapi/src/index.js +39 -0
  308. package/packages/datadog-plugin-hono/src/index.js +26 -0
  309. package/packages/datadog-plugin-http/src/client.js +244 -0
  310. package/packages/datadog-plugin-http/src/index.js +37 -0
  311. package/packages/datadog-plugin-http/src/server.js +92 -0
  312. package/packages/datadog-plugin-http2/src/client.js +217 -0
  313. package/packages/datadog-plugin-http2/src/index.js +17 -0
  314. package/packages/datadog-plugin-http2/src/server.js +73 -0
  315. package/packages/datadog-plugin-ioredis/src/index.js +9 -0
  316. package/packages/datadog-plugin-iovalkey/src/index.js +16 -0
  317. package/packages/datadog-plugin-jest/src/index.js +558 -0
  318. package/packages/datadog-plugin-jest/src/util.js +176 -0
  319. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +28 -0
  320. package/packages/datadog-plugin-kafkajs/src/consumer.js +128 -0
  321. package/packages/datadog-plugin-kafkajs/src/index.js +19 -0
  322. package/packages/datadog-plugin-kafkajs/src/producer.js +129 -0
  323. package/packages/datadog-plugin-kafkajs/src/utils.js +27 -0
  324. package/packages/datadog-plugin-koa/src/index.js +22 -0
  325. package/packages/datadog-plugin-langchain/src/handlers/default.js +11 -0
  326. package/packages/datadog-plugin-langchain/src/handlers/embedding.js +18 -0
  327. package/packages/datadog-plugin-langchain/src/handlers/language_models.js +18 -0
  328. package/packages/datadog-plugin-langchain/src/index.js +26 -0
  329. package/packages/datadog-plugin-langchain/src/tokens.js +35 -0
  330. package/packages/datadog-plugin-langchain/src/tracing.js +155 -0
  331. package/packages/datadog-plugin-mariadb/src/index.js +21 -0
  332. package/packages/datadog-plugin-memcached/src/index.js +54 -0
  333. package/packages/datadog-plugin-microgateway-core/src/index.js +26 -0
  334. package/packages/datadog-plugin-mocha/src/index.js +480 -0
  335. package/packages/datadog-plugin-moleculer/src/client.js +42 -0
  336. package/packages/datadog-plugin-moleculer/src/index.js +19 -0
  337. package/packages/datadog-plugin-moleculer/src/server.js +30 -0
  338. package/packages/datadog-plugin-moleculer/src/util.js +21 -0
  339. package/packages/datadog-plugin-mongodb-core/src/index.js +215 -0
  340. package/packages/datadog-plugin-mongoose/src/index.js +20 -0
  341. package/packages/datadog-plugin-mysql/src/index.js +42 -0
  342. package/packages/datadog-plugin-mysql2/src/index.js +25 -0
  343. package/packages/datadog-plugin-net/src/index.js +23 -0
  344. package/packages/datadog-plugin-net/src/ipc.js +23 -0
  345. package/packages/datadog-plugin-net/src/tcp.js +53 -0
  346. package/packages/datadog-plugin-next/src/index.js +155 -0
  347. package/packages/datadog-plugin-nyc/src/index.js +95 -0
  348. package/packages/datadog-plugin-openai/src/index.js +17 -0
  349. package/packages/datadog-plugin-openai/src/services.js +48 -0
  350. package/packages/datadog-plugin-openai/src/stream-helpers.js +159 -0
  351. package/packages/datadog-plugin-openai/src/token-estimator.js +20 -0
  352. package/packages/datadog-plugin-openai/src/tracing.js +723 -0
  353. package/packages/datadog-plugin-opensearch/src/index.js +9 -0
  354. package/packages/datadog-plugin-oracledb/src/connection-parser.js +37 -0
  355. package/packages/datadog-plugin-oracledb/src/index.js +44 -0
  356. package/packages/datadog-plugin-pg/src/index.js +41 -0
  357. package/packages/datadog-plugin-pino/src/index.js +9 -0
  358. package/packages/datadog-plugin-playwright/src/index.js +497 -0
  359. package/packages/datadog-plugin-prisma/src/datadog-tracing-helper.js +118 -0
  360. package/packages/datadog-plugin-prisma/src/index.js +144 -0
  361. package/packages/datadog-plugin-protobufjs/src/index.js +12 -0
  362. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +181 -0
  363. package/packages/datadog-plugin-redis/src/index.js +95 -0
  364. package/packages/datadog-plugin-restify/src/index.js +29 -0
  365. package/packages/datadog-plugin-rhea/src/consumer.js +68 -0
  366. package/packages/datadog-plugin-rhea/src/index.js +17 -0
  367. package/packages/datadog-plugin-rhea/src/producer.js +54 -0
  368. package/packages/datadog-plugin-router/src/index.js +170 -0
  369. package/packages/datadog-plugin-selenium/src/index.js +66 -0
  370. package/packages/datadog-plugin-sharedb/src/index.js +68 -0
  371. package/packages/datadog-plugin-tedious/src/index.js +36 -0
  372. package/packages/datadog-plugin-undici/src/index.js +313 -0
  373. package/packages/datadog-plugin-vitest/src/index.js +444 -0
  374. package/packages/datadog-plugin-web/src/index.js +18 -0
  375. package/packages/datadog-plugin-winston/src/index.js +8 -0
  376. package/packages/datadog-plugin-ws/src/close.js +121 -0
  377. package/packages/datadog-plugin-ws/src/index.js +30 -0
  378. package/packages/datadog-plugin-ws/src/producer.js +99 -0
  379. package/packages/datadog-plugin-ws/src/receiver.js +110 -0
  380. package/packages/datadog-plugin-ws/src/server.js +106 -0
  381. package/packages/datadog-plugin-ws/src/util.js +139 -0
  382. package/packages/datadog-shimmer/index.js +3 -0
  383. package/packages/datadog-shimmer/src/shimmer.js +279 -0
  384. package/packages/dd-trace/index.js +36 -0
  385. package/packages/dd-trace/src/agent/info.js +57 -0
  386. package/packages/dd-trace/src/agent/url.js +28 -0
  387. package/packages/dd-trace/src/aiguard/client.js +25 -0
  388. package/packages/dd-trace/src/aiguard/noop.js +9 -0
  389. package/packages/dd-trace/src/aiguard/sdk.js +223 -0
  390. package/packages/dd-trace/src/aiguard/tags.js +14 -0
  391. package/packages/dd-trace/src/analytics_sampler.js +15 -0
  392. package/packages/dd-trace/src/appsec/activation.js +29 -0
  393. package/packages/dd-trace/src/appsec/addresses.js +51 -0
  394. package/packages/dd-trace/src/appsec/api_security_sampler.js +117 -0
  395. package/packages/dd-trace/src/appsec/blocked_templates.js +14 -0
  396. package/packages/dd-trace/src/appsec/blocking.js +196 -0
  397. package/packages/dd-trace/src/appsec/channels.js +50 -0
  398. package/packages/dd-trace/src/appsec/downstream_requests.js +302 -0
  399. package/packages/dd-trace/src/appsec/graphql.js +166 -0
  400. package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +24 -0
  401. package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +36 -0
  402. package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +15 -0
  403. package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +62 -0
  404. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +72 -0
  405. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-analyzer.js +18 -0
  406. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +11 -0
  407. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-rule-type.js +6 -0
  408. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-analyzer.js +15 -0
  409. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +741 -0
  410. package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +44 -0
  411. package/packages/dd-trace/src/appsec/iast/analyzers/index.js +23 -0
  412. package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +42 -0
  413. package/packages/dd-trace/src/appsec/iast/analyzers/insecure-cookie-analyzer.js +12 -0
  414. package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +22 -0
  415. package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +82 -0
  416. package/packages/dd-trace/src/appsec/iast/analyzers/no-httponly-cookie-analyzer.js +12 -0
  417. package/packages/dd-trace/src/appsec/iast/analyzers/no-samesite-cookie-analyzer.js +12 -0
  418. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +192 -0
  419. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +108 -0
  420. package/packages/dd-trace/src/appsec/iast/analyzers/set-cookies-header-interceptor.js +58 -0
  421. package/packages/dd-trace/src/appsec/iast/analyzers/sql-injection-analyzer.js +102 -0
  422. package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +37 -0
  423. package/packages/dd-trace/src/appsec/iast/analyzers/stored-injection-analyzer.js +11 -0
  424. package/packages/dd-trace/src/appsec/iast/analyzers/template-injection-analyzer.js +18 -0
  425. package/packages/dd-trace/src/appsec/iast/analyzers/untrusted-deserialization-analyzer.js +16 -0
  426. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +64 -0
  427. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +181 -0
  428. package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +31 -0
  429. package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +64 -0
  430. package/packages/dd-trace/src/appsec/iast/analyzers/weak-randomness-analyzer.js +19 -0
  431. package/packages/dd-trace/src/appsec/iast/analyzers/xcontenttype-header-missing-analyzer.js +19 -0
  432. package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +89 -0
  433. package/packages/dd-trace/src/appsec/iast/context/kafka-ctx-plugin.js +14 -0
  434. package/packages/dd-trace/src/appsec/iast/iast-context.js +75 -0
  435. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +230 -0
  436. package/packages/dd-trace/src/appsec/iast/index.js +126 -0
  437. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +209 -0
  438. package/packages/dd-trace/src/appsec/iast/path-line.js +116 -0
  439. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +179 -0
  440. package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +128 -0
  441. package/packages/dd-trace/src/appsec/iast/tags.js +7 -0
  442. package/packages/dd-trace/src/appsec/iast/taint-tracking/constants.js +6 -0
  443. package/packages/dd-trace/src/appsec/iast/taint-tracking/csi-methods.js +24 -0
  444. package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +16 -0
  445. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +36 -0
  446. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +88 -0
  447. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +108 -0
  448. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +293 -0
  449. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +46 -0
  450. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +76 -0
  451. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-telemetry.js +13 -0
  452. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +266 -0
  453. package/packages/dd-trace/src/appsec/iast/taint-tracking/secure-marks-generator.js +13 -0
  454. package/packages/dd-trace/src/appsec/iast/taint-tracking/secure-marks.js +30 -0
  455. package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +15 -0
  456. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +258 -0
  457. package/packages/dd-trace/src/appsec/iast/telemetry/iast-metric.js +113 -0
  458. package/packages/dd-trace/src/appsec/iast/telemetry/index.js +41 -0
  459. package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +112 -0
  460. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +54 -0
  461. package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +41 -0
  462. package/packages/dd-trace/src/appsec/iast/utils.js +24 -0
  463. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/constants.js +7 -0
  464. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +36 -0
  465. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +22 -0
  466. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/hardcoded-password-analyzer.js +13 -0
  467. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/json-sensitive-analyzer.js +12 -0
  468. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +28 -0
  469. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +112 -0
  470. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/tainted-range-based-sensitive-analyzer.js +25 -0
  471. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/url-sensitive-analyzer.js +40 -0
  472. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +294 -0
  473. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +126 -0
  474. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +168 -0
  475. package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +24 -0
  476. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +169 -0
  477. package/packages/dd-trace/src/appsec/index.js +560 -0
  478. package/packages/dd-trace/src/appsec/rasp/command_injection.js +56 -0
  479. package/packages/dd-trace/src/appsec/rasp/fs-plugin.js +103 -0
  480. package/packages/dd-trace/src/appsec/rasp/index.js +140 -0
  481. package/packages/dd-trace/src/appsec/rasp/lfi.js +129 -0
  482. package/packages/dd-trace/src/appsec/rasp/sql_injection.js +108 -0
  483. package/packages/dd-trace/src/appsec/rasp/ssrf.js +102 -0
  484. package/packages/dd-trace/src/appsec/rasp/utils.js +85 -0
  485. package/packages/dd-trace/src/appsec/rc-products.js +10 -0
  486. package/packages/dd-trace/src/appsec/recommended.json +10731 -0
  487. package/packages/dd-trace/src/appsec/remote_config.js +177 -0
  488. package/packages/dd-trace/src/appsec/reporter.js +599 -0
  489. package/packages/dd-trace/src/appsec/rule_manager.js +168 -0
  490. package/packages/dd-trace/src/appsec/sdk/index.js +63 -0
  491. package/packages/dd-trace/src/appsec/sdk/noop.js +27 -0
  492. package/packages/dd-trace/src/appsec/sdk/set_user.js +44 -0
  493. package/packages/dd-trace/src/appsec/sdk/track_event.js +230 -0
  494. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +60 -0
  495. package/packages/dd-trace/src/appsec/sdk/utils.js +29 -0
  496. package/packages/dd-trace/src/appsec/stack_trace.js +117 -0
  497. package/packages/dd-trace/src/appsec/telemetry/common.js +28 -0
  498. package/packages/dd-trace/src/appsec/telemetry/index.js +184 -0
  499. package/packages/dd-trace/src/appsec/telemetry/rasp.js +103 -0
  500. package/packages/dd-trace/src/appsec/telemetry/user.js +32 -0
  501. package/packages/dd-trace/src/appsec/telemetry/waf.js +143 -0
  502. package/packages/dd-trace/src/appsec/user_tracking.js +190 -0
  503. package/packages/dd-trace/src/appsec/waf/diagnostics.js +15 -0
  504. package/packages/dd-trace/src/appsec/waf/index.js +149 -0
  505. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +188 -0
  506. package/packages/dd-trace/src/appsec/waf/waf_manager.js +98 -0
  507. package/packages/dd-trace/src/azure_metadata.js +137 -0
  508. package/packages/dd-trace/src/baggage.js +72 -0
  509. package/packages/dd-trace/src/ci-visibility/coverage-report-discovery.js +82 -0
  510. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +159 -0
  511. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +156 -0
  512. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +111 -0
  513. package/packages/dd-trace/src/ci-visibility/encode/json-encoder.js +27 -0
  514. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +104 -0
  515. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +78 -0
  516. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +56 -0
  517. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +52 -0
  518. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +83 -0
  519. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +420 -0
  520. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +317 -0
  521. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +114 -0
  522. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +76 -0
  523. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +120 -0
  524. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +54 -0
  525. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +156 -0
  526. package/packages/dd-trace/src/ci-visibility/requests/request.js +236 -0
  527. package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +107 -0
  528. package/packages/dd-trace/src/ci-visibility/telemetry.js +204 -0
  529. package/packages/dd-trace/src/ci-visibility/test-api-manual/test-api-manual-plugin.js +63 -0
  530. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +121 -0
  531. package/packages/dd-trace/src/ci-visibility/test-optimization-cache.js +61 -0
  532. package/packages/dd-trace/src/config/defaults.js +174 -0
  533. package/packages/dd-trace/src/config/git_properties.js +120 -0
  534. package/packages/dd-trace/src/config/helper.js +214 -0
  535. package/packages/dd-trace/src/config/index.js +1676 -0
  536. package/packages/dd-trace/src/config/remote_config.js +203 -0
  537. package/packages/dd-trace/src/config/stable.js +93 -0
  538. package/packages/dd-trace/src/config/supported-configurations.json +4136 -0
  539. package/packages/dd-trace/src/constants.js +61 -0
  540. package/packages/dd-trace/src/crashtracking/crashtracker.js +120 -0
  541. package/packages/dd-trace/src/crashtracking/index.js +15 -0
  542. package/packages/dd-trace/src/crashtracking/noop.js +11 -0
  543. package/packages/dd-trace/src/datastreams/checkpointer.js +80 -0
  544. package/packages/dd-trace/src/datastreams/context.js +20 -0
  545. package/packages/dd-trace/src/datastreams/encoding.js +99 -0
  546. package/packages/dd-trace/src/datastreams/fnv.js +25 -0
  547. package/packages/dd-trace/src/datastreams/index.js +129 -0
  548. package/packages/dd-trace/src/datastreams/manager.js +36 -0
  549. package/packages/dd-trace/src/datastreams/pathway.js +187 -0
  550. package/packages/dd-trace/src/datastreams/processor.js +494 -0
  551. package/packages/dd-trace/src/datastreams/schemas/schema.js +10 -0
  552. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +140 -0
  553. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +27 -0
  554. package/packages/dd-trace/src/datastreams/size.js +53 -0
  555. package/packages/dd-trace/src/datastreams/writer.js +70 -0
  556. package/packages/dd-trace/src/debugger/config.js +18 -0
  557. package/packages/dd-trace/src/debugger/constants.js +7 -0
  558. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +320 -0
  559. package/packages/dd-trace/src/debugger/devtools_client/condition.js +294 -0
  560. package/packages/dd-trace/src/debugger/devtools_client/config.js +23 -0
  561. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +7 -0
  562. package/packages/dd-trace/src/debugger/devtools_client/index.js +336 -0
  563. package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +27 -0
  564. package/packages/dd-trace/src/debugger/devtools_client/json-buffer.js +41 -0
  565. package/packages/dd-trace/src/debugger/devtools_client/log.js +30 -0
  566. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +106 -0
  567. package/packages/dd-trace/src/debugger/devtools_client/send.js +138 -0
  568. package/packages/dd-trace/src/debugger/devtools_client/session.js +17 -0
  569. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +336 -0
  570. package/packages/dd-trace/src/debugger/devtools_client/snapshot/constants.js +25 -0
  571. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +215 -0
  572. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +349 -0
  573. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +112 -0
  574. package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +8 -0
  575. package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +404 -0
  576. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +72 -0
  577. package/packages/dd-trace/src/debugger/devtools_client/state.js +238 -0
  578. package/packages/dd-trace/src/debugger/devtools_client/status.js +123 -0
  579. package/packages/dd-trace/src/debugger/index.js +259 -0
  580. package/packages/dd-trace/src/dogstatsd.js +412 -0
  581. package/packages/dd-trace/src/encode/0.4.js +425 -0
  582. package/packages/dd-trace/src/encode/0.5.js +77 -0
  583. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +361 -0
  584. package/packages/dd-trace/src/encode/agentless-json.js +200 -0
  585. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +131 -0
  586. package/packages/dd-trace/src/encode/span-stats.js +136 -0
  587. package/packages/dd-trace/src/encode/tags-processors.js +91 -0
  588. package/packages/dd-trace/src/exporter.js +32 -0
  589. package/packages/dd-trace/src/exporters/agent/index.js +65 -0
  590. package/packages/dd-trace/src/exporters/agent/writer.js +110 -0
  591. package/packages/dd-trace/src/exporters/agentless/index.js +132 -0
  592. package/packages/dd-trace/src/exporters/agentless/writer.js +201 -0
  593. package/packages/dd-trace/src/exporters/common/agents.js +42 -0
  594. package/packages/dd-trace/src/exporters/common/buffering-exporter.js +62 -0
  595. package/packages/dd-trace/src/exporters/common/docker.js +52 -0
  596. package/packages/dd-trace/src/exporters/common/form-data.js +59 -0
  597. package/packages/dd-trace/src/exporters/common/request.js +190 -0
  598. package/packages/dd-trace/src/exporters/common/url-to-http-options-polyfill.js +31 -0
  599. package/packages/dd-trace/src/exporters/common/util.js +13 -0
  600. package/packages/dd-trace/src/exporters/common/writer.js +49 -0
  601. package/packages/dd-trace/src/exporters/log/index.js +52 -0
  602. package/packages/dd-trace/src/exporters/span-stats/index.js +20 -0
  603. package/packages/dd-trace/src/exporters/span-stats/writer.js +54 -0
  604. package/packages/dd-trace/src/external-logger/src/index.js +139 -0
  605. package/packages/dd-trace/src/flare/file.js +40 -0
  606. package/packages/dd-trace/src/flare/index.js +101 -0
  607. package/packages/dd-trace/src/git_metadata_tagger.js +19 -0
  608. package/packages/dd-trace/src/guardrails/index.js +76 -0
  609. package/packages/dd-trace/src/guardrails/log.js +32 -0
  610. package/packages/dd-trace/src/guardrails/telemetry.js +92 -0
  611. package/packages/dd-trace/src/guardrails/util.js +8 -0
  612. package/packages/dd-trace/src/heap_snapshots.js +58 -0
  613. package/packages/dd-trace/src/histogram.js +35 -0
  614. package/packages/dd-trace/src/id.js +247 -0
  615. package/packages/dd-trace/src/iitm.js +15 -0
  616. package/packages/dd-trace/src/index.js +15 -0
  617. package/packages/dd-trace/src/lambda/context.js +27 -0
  618. package/packages/dd-trace/src/lambda/handler.js +87 -0
  619. package/packages/dd-trace/src/lambda/index.js +17 -0
  620. package/packages/dd-trace/src/lambda/runtime/errors.js +20 -0
  621. package/packages/dd-trace/src/lambda/runtime/patch.js +77 -0
  622. package/packages/dd-trace/src/lambda/runtime/ritm.js +133 -0
  623. package/packages/dd-trace/src/llmobs/constants/tags.js +55 -0
  624. package/packages/dd-trace/src/llmobs/constants/text.js +6 -0
  625. package/packages/dd-trace/src/llmobs/constants/writers.js +17 -0
  626. package/packages/dd-trace/src/llmobs/index.js +149 -0
  627. package/packages/dd-trace/src/llmobs/noop.js +88 -0
  628. package/packages/dd-trace/src/llmobs/plugins/ai/index.js +399 -0
  629. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +218 -0
  630. package/packages/dd-trace/src/llmobs/plugins/anthropic.js +288 -0
  631. package/packages/dd-trace/src/llmobs/plugins/base.js +96 -0
  632. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +137 -0
  633. package/packages/dd-trace/src/llmobs/plugins/genai/index.js +104 -0
  634. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +486 -0
  635. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +20 -0
  636. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +111 -0
  637. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +42 -0
  638. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +106 -0
  639. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/llm.js +32 -0
  640. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/tool.js +15 -0
  641. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +36 -0
  642. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +214 -0
  643. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
  644. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +501 -0
  645. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +126 -0
  646. package/packages/dd-trace/src/llmobs/plugins/vertexai.js +195 -0
  647. package/packages/dd-trace/src/llmobs/sdk.js +578 -0
  648. package/packages/dd-trace/src/llmobs/span_processor.js +311 -0
  649. package/packages/dd-trace/src/llmobs/storage.js +6 -0
  650. package/packages/dd-trace/src/llmobs/tagger.js +648 -0
  651. package/packages/dd-trace/src/llmobs/telemetry.js +174 -0
  652. package/packages/dd-trace/src/llmobs/util.js +182 -0
  653. package/packages/dd-trace/src/llmobs/writers/base.js +242 -0
  654. package/packages/dd-trace/src/llmobs/writers/evaluations.js +32 -0
  655. package/packages/dd-trace/src/llmobs/writers/spans.js +69 -0
  656. package/packages/dd-trace/src/llmobs/writers/util.js +54 -0
  657. package/packages/dd-trace/src/log/channels.js +78 -0
  658. package/packages/dd-trace/src/log/index.js +157 -0
  659. package/packages/dd-trace/src/log/log.js +76 -0
  660. package/packages/dd-trace/src/log/utils.js +16 -0
  661. package/packages/dd-trace/src/log/writer.js +72 -0
  662. package/packages/dd-trace/src/msgpack/chunk.js +69 -0
  663. package/packages/dd-trace/src/msgpack/encoder.js +308 -0
  664. package/packages/dd-trace/src/msgpack/index.js +6 -0
  665. package/packages/dd-trace/src/noop/dogstatsd.js +19 -0
  666. package/packages/dd-trace/src/noop/proxy.js +106 -0
  667. package/packages/dd-trace/src/noop/scope.js +19 -0
  668. package/packages/dd-trace/src/noop/span.js +50 -0
  669. package/packages/dd-trace/src/noop/span_context.js +16 -0
  670. package/packages/dd-trace/src/noop/tracer.js +47 -0
  671. package/packages/dd-trace/src/openfeature/constants/constants.js +51 -0
  672. package/packages/dd-trace/src/openfeature/flagging_provider.js +47 -0
  673. package/packages/dd-trace/src/openfeature/index.js +77 -0
  674. package/packages/dd-trace/src/openfeature/noop.js +101 -0
  675. package/packages/dd-trace/src/openfeature/remote_config.js +31 -0
  676. package/packages/dd-trace/src/openfeature/writers/base.js +174 -0
  677. package/packages/dd-trace/src/openfeature/writers/exposures.js +173 -0
  678. package/packages/dd-trace/src/openfeature/writers/util.js +38 -0
  679. package/packages/dd-trace/src/opentelemetry/context_manager.js +91 -0
  680. package/packages/dd-trace/src/opentelemetry/logs/batch_log_processor.js +100 -0
  681. package/packages/dd-trace/src/opentelemetry/logs/index.js +87 -0
  682. package/packages/dd-trace/src/opentelemetry/logs/logger.js +83 -0
  683. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +126 -0
  684. package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +55 -0
  685. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +245 -0
  686. package/packages/dd-trace/src/opentelemetry/metrics/constants.js +34 -0
  687. package/packages/dd-trace/src/opentelemetry/metrics/index.js +81 -0
  688. package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +225 -0
  689. package/packages/dd-trace/src/opentelemetry/metrics/meter.js +171 -0
  690. package/packages/dd-trace/src/opentelemetry/metrics/meter_provider.js +54 -0
  691. package/packages/dd-trace/src/opentelemetry/metrics/otlp_http_metric_exporter.js +62 -0
  692. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +251 -0
  693. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +557 -0
  694. package/packages/dd-trace/src/opentelemetry/otlp/common.proto +116 -0
  695. package/packages/dd-trace/src/opentelemetry/otlp/logs.proto +226 -0
  696. package/packages/dd-trace/src/opentelemetry/otlp/logs_service.proto +78 -0
  697. package/packages/dd-trace/src/opentelemetry/otlp/metrics.proto +720 -0
  698. package/packages/dd-trace/src/opentelemetry/otlp/metrics_service.proto +78 -0
  699. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +168 -0
  700. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +181 -0
  701. package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +66 -0
  702. package/packages/dd-trace/src/opentelemetry/otlp/resource.proto +45 -0
  703. package/packages/dd-trace/src/opentelemetry/sampler.js +18 -0
  704. package/packages/dd-trace/src/opentelemetry/span.js +317 -0
  705. package/packages/dd-trace/src/opentelemetry/span_context.js +44 -0
  706. package/packages/dd-trace/src/opentelemetry/span_processor.js +50 -0
  707. package/packages/dd-trace/src/opentelemetry/tracer.js +226 -0
  708. package/packages/dd-trace/src/opentelemetry/tracer_provider.js +80 -0
  709. package/packages/dd-trace/src/opentracing/propagation/binary.js +11 -0
  710. package/packages/dd-trace/src/opentracing/propagation/http.js +7 -0
  711. package/packages/dd-trace/src/opentracing/propagation/log.js +54 -0
  712. package/packages/dd-trace/src/opentracing/propagation/text_map.js +818 -0
  713. package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +47 -0
  714. package/packages/dd-trace/src/opentracing/propagation/tracestate.js +103 -0
  715. package/packages/dd-trace/src/opentracing/span.js +412 -0
  716. package/packages/dd-trace/src/opentracing/span_context.js +75 -0
  717. package/packages/dd-trace/src/opentracing/tracer.js +145 -0
  718. package/packages/dd-trace/src/payload-tagging/config/aws.json +106 -0
  719. package/packages/dd-trace/src/payload-tagging/config/index.js +44 -0
  720. package/packages/dd-trace/src/payload-tagging/index.js +110 -0
  721. package/packages/dd-trace/src/payload-tagging/tagging.js +94 -0
  722. package/packages/dd-trace/src/pkg.js +44 -0
  723. package/packages/dd-trace/src/plugin_manager.js +219 -0
  724. package/packages/dd-trace/src/plugins/apollo.js +59 -0
  725. package/packages/dd-trace/src/plugins/cache.js +16 -0
  726. package/packages/dd-trace/src/plugins/ci_plugin.js +786 -0
  727. package/packages/dd-trace/src/plugins/client.js +11 -0
  728. package/packages/dd-trace/src/plugins/composite.js +29 -0
  729. package/packages/dd-trace/src/plugins/consumer.js +21 -0
  730. package/packages/dd-trace/src/plugins/database.js +123 -0
  731. package/packages/dd-trace/src/plugins/inbound.js +11 -0
  732. package/packages/dd-trace/src/plugins/index.js +117 -0
  733. package/packages/dd-trace/src/plugins/log_plugin.js +54 -0
  734. package/packages/dd-trace/src/plugins/outbound.js +159 -0
  735. package/packages/dd-trace/src/plugins/plugin.js +195 -0
  736. package/packages/dd-trace/src/plugins/producer.js +27 -0
  737. package/packages/dd-trace/src/plugins/schema.js +35 -0
  738. package/packages/dd-trace/src/plugins/server.js +11 -0
  739. package/packages/dd-trace/src/plugins/storage.js +23 -0
  740. package/packages/dd-trace/src/plugins/structured_log_plugin.js +9 -0
  741. package/packages/dd-trace/src/plugins/tracing.js +222 -0
  742. package/packages/dd-trace/src/plugins/util/ci.js +843 -0
  743. package/packages/dd-trace/src/plugins/util/env.js +31 -0
  744. package/packages/dd-trace/src/plugins/util/git-cache.js +129 -0
  745. package/packages/dd-trace/src/plugins/util/git.js +613 -0
  746. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +157 -0
  747. package/packages/dd-trace/src/plugins/util/ip_extractor.js +139 -0
  748. package/packages/dd-trace/src/plugins/util/llm.js +54 -0
  749. package/packages/dd-trace/src/plugins/util/stacktrace.js +244 -0
  750. package/packages/dd-trace/src/plugins/util/tags.js +81 -0
  751. package/packages/dd-trace/src/plugins/util/test.js +1202 -0
  752. package/packages/dd-trace/src/plugins/util/url.js +146 -0
  753. package/packages/dd-trace/src/plugins/util/urlfilter.js +32 -0
  754. package/packages/dd-trace/src/plugins/util/user-provided-git.js +91 -0
  755. package/packages/dd-trace/src/plugins/util/web.js +631 -0
  756. package/packages/dd-trace/src/priority_sampler.js +374 -0
  757. package/packages/dd-trace/src/process-tags/index.js +83 -0
  758. package/packages/dd-trace/src/profiler.js +17 -0
  759. package/packages/dd-trace/src/profiling/config.js +473 -0
  760. package/packages/dd-trace/src/profiling/constants.js +15 -0
  761. package/packages/dd-trace/src/profiling/exporter_cli.js +74 -0
  762. package/packages/dd-trace/src/profiling/exporters/agent.js +199 -0
  763. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +91 -0
  764. package/packages/dd-trace/src/profiling/exporters/file.js +35 -0
  765. package/packages/dd-trace/src/profiling/index.js +20 -0
  766. package/packages/dd-trace/src/profiling/libuv-size.js +49 -0
  767. package/packages/dd-trace/src/profiling/loggers/console.js +41 -0
  768. package/packages/dd-trace/src/profiling/profiler.js +430 -0
  769. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns.js +11 -0
  770. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookup.js +16 -0
  771. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookupservice.js +16 -0
  772. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_resolve.js +24 -0
  773. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_reverse.js +16 -0
  774. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +66 -0
  775. package/packages/dd-trace/src/profiling/profilers/event_plugins/fs.js +45 -0
  776. package/packages/dd-trace/src/profiling/profilers/event_plugins/net.js +20 -0
  777. package/packages/dd-trace/src/profiling/profilers/events.js +466 -0
  778. package/packages/dd-trace/src/profiling/profilers/poisson.js +105 -0
  779. package/packages/dd-trace/src/profiling/profilers/shared.js +55 -0
  780. package/packages/dd-trace/src/profiling/profilers/space.js +77 -0
  781. package/packages/dd-trace/src/profiling/profilers/wall.js +434 -0
  782. package/packages/dd-trace/src/profiling/ssi-heuristics.js +84 -0
  783. package/packages/dd-trace/src/profiling/tagger.js +40 -0
  784. package/packages/dd-trace/src/profiling/webspan-utils.js +25 -0
  785. package/packages/dd-trace/src/propagation-hash/index.js +145 -0
  786. package/packages/dd-trace/src/proxy.js +351 -0
  787. package/packages/dd-trace/src/random_sampler.js +40 -0
  788. package/packages/dd-trace/src/rate_limiter.js +82 -0
  789. package/packages/dd-trace/src/remote_config/apply_states.js +7 -0
  790. package/packages/dd-trace/src/remote_config/capabilities.js +47 -0
  791. package/packages/dd-trace/src/remote_config/index.js +574 -0
  792. package/packages/dd-trace/src/remote_config/scheduler.js +30 -0
  793. package/packages/dd-trace/src/require-package-json.js +33 -0
  794. package/packages/dd-trace/src/ritm.js +211 -0
  795. package/packages/dd-trace/src/runtime_metrics/index.js +34 -0
  796. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +373 -0
  797. package/packages/dd-trace/src/sampler.js +63 -0
  798. package/packages/dd-trace/src/sampling_rule.js +267 -0
  799. package/packages/dd-trace/src/scope.js +63 -0
  800. package/packages/dd-trace/src/serverless.js +52 -0
  801. package/packages/dd-trace/src/service-naming/extra-services.js +24 -0
  802. package/packages/dd-trace/src/service-naming/index.js +75 -0
  803. package/packages/dd-trace/src/service-naming/schemas/definition.js +19 -0
  804. package/packages/dd-trace/src/service-naming/schemas/util.js +25 -0
  805. package/packages/dd-trace/src/service-naming/schemas/v0/graphql.js +14 -0
  806. package/packages/dd-trace/src/service-naming/schemas/v0/index.js +11 -0
  807. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +102 -0
  808. package/packages/dd-trace/src/service-naming/schemas/v0/serverless.js +18 -0
  809. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +118 -0
  810. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +92 -0
  811. package/packages/dd-trace/src/service-naming/schemas/v0/websocket.js +30 -0
  812. package/packages/dd-trace/src/service-naming/schemas/v1/graphql.js +14 -0
  813. package/packages/dd-trace/src/service-naming/schemas/v1/index.js +11 -0
  814. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +90 -0
  815. package/packages/dd-trace/src/service-naming/schemas/v1/serverless.js +18 -0
  816. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +86 -0
  817. package/packages/dd-trace/src/service-naming/schemas/v1/web.js +92 -0
  818. package/packages/dd-trace/src/service-naming/schemas/v1/websocket.js +30 -0
  819. package/packages/dd-trace/src/span_format.js +264 -0
  820. package/packages/dd-trace/src/span_processor.js +171 -0
  821. package/packages/dd-trace/src/span_sampler.js +58 -0
  822. package/packages/dd-trace/src/span_stats.js +227 -0
  823. package/packages/dd-trace/src/spanleak.js +97 -0
  824. package/packages/dd-trace/src/standalone/index.js +70 -0
  825. package/packages/dd-trace/src/standalone/product.js +36 -0
  826. package/packages/dd-trace/src/standalone/tracesource.js +36 -0
  827. package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +59 -0
  828. package/packages/dd-trace/src/startup-log.js +146 -0
  829. package/packages/dd-trace/src/tagger.js +58 -0
  830. package/packages/dd-trace/src/telemetry/dependencies.js +174 -0
  831. package/packages/dd-trace/src/telemetry/endpoints.js +212 -0
  832. package/packages/dd-trace/src/telemetry/index.js +26 -0
  833. package/packages/dd-trace/src/telemetry/logs/index.js +90 -0
  834. package/packages/dd-trace/src/telemetry/logs/log-collector.js +128 -0
  835. package/packages/dd-trace/src/telemetry/metrics.js +288 -0
  836. package/packages/dd-trace/src/telemetry/send-data.js +225 -0
  837. package/packages/dd-trace/src/telemetry/telemetry.js +535 -0
  838. package/packages/dd-trace/src/tracer.js +171 -0
  839. package/packages/dd-trace/src/tracer_metadata.js +29 -0
  840. package/packages/dd-trace/src/util.js +94 -0
  841. package/register.js +8 -0
  842. package/scripts/preinstall.js +34 -0
  843. package/vendor/dist/@datadog/sketches-js/LICENSE +39 -0
  844. package/vendor/dist/@datadog/sketches-js/index.js +1 -0
  845. package/vendor/dist/@datadog/source-map/LICENSE +28 -0
  846. package/vendor/dist/@datadog/source-map/index.js +1 -0
  847. package/vendor/dist/@isaacs/ttlcache/LICENSE +55 -0
  848. package/vendor/dist/@isaacs/ttlcache/index.js +1 -0
  849. package/vendor/dist/@opentelemetry/core/LICENSE +201 -0
  850. package/vendor/dist/@opentelemetry/core/index.js +1 -0
  851. package/vendor/dist/@opentelemetry/resources/LICENSE +201 -0
  852. package/vendor/dist/@opentelemetry/resources/index.js +1 -0
  853. package/vendor/dist/astring/LICENSE +19 -0
  854. package/vendor/dist/astring/index.js +1 -0
  855. package/vendor/dist/crypto-randomuuid/index.js +1 -0
  856. package/vendor/dist/escape-string-regexp/LICENSE +9 -0
  857. package/vendor/dist/escape-string-regexp/index.js +1 -0
  858. package/vendor/dist/esquery/LICENSE +24 -0
  859. package/vendor/dist/esquery/index.js +1 -0
  860. package/vendor/dist/ignore/LICENSE +21 -0
  861. package/vendor/dist/ignore/index.js +1 -0
  862. package/vendor/dist/istanbul-lib-coverage/LICENSE +24 -0
  863. package/vendor/dist/istanbul-lib-coverage/index.js +1 -0
  864. package/vendor/dist/jest-docblock/LICENSE +21 -0
  865. package/vendor/dist/jest-docblock/index.js +1 -0
  866. package/vendor/dist/jsonpath-plus/LICENSE +22 -0
  867. package/vendor/dist/jsonpath-plus/index.js +1 -0
  868. package/vendor/dist/limiter/LICENSE +19 -0
  869. package/vendor/dist/limiter/index.js +1 -0
  870. package/vendor/dist/lodash.sortby/LICENSE +47 -0
  871. package/vendor/dist/lodash.sortby/index.js +1 -0
  872. package/vendor/dist/lru-cache/LICENSE +15 -0
  873. package/vendor/dist/lru-cache/index.js +1 -0
  874. package/vendor/dist/meriyah/LICENSE +7 -0
  875. package/vendor/dist/meriyah/index.js +1 -0
  876. package/vendor/dist/module-details-from-path/LICENSE +21 -0
  877. package/vendor/dist/module-details-from-path/index.js +1 -0
  878. package/vendor/dist/mutexify/promise/LICENSE +21 -0
  879. package/vendor/dist/mutexify/promise/index.js +1 -0
  880. package/vendor/dist/opentracing/LICENSE +201 -0
  881. package/vendor/dist/opentracing/binary_carrier.d.ts +11 -0
  882. package/vendor/dist/opentracing/constants.d.ts +61 -0
  883. package/vendor/dist/opentracing/examples/demo/demo.d.ts +2 -0
  884. package/vendor/dist/opentracing/ext/tags.d.ts +90 -0
  885. package/vendor/dist/opentracing/functions.d.ts +20 -0
  886. package/vendor/dist/opentracing/global_tracer.d.ts +14 -0
  887. package/vendor/dist/opentracing/index.d.ts +12 -0
  888. package/vendor/dist/opentracing/index.js +1 -0
  889. package/vendor/dist/opentracing/mock_tracer/index.d.ts +5 -0
  890. package/vendor/dist/opentracing/mock_tracer/mock_context.d.ts +13 -0
  891. package/vendor/dist/opentracing/mock_tracer/mock_report.d.ts +16 -0
  892. package/vendor/dist/opentracing/mock_tracer/mock_span.d.ts +50 -0
  893. package/vendor/dist/opentracing/mock_tracer/mock_tracer.d.ts +26 -0
  894. package/vendor/dist/opentracing/noop.d.ts +8 -0
  895. package/vendor/dist/opentracing/reference.d.ts +33 -0
  896. package/vendor/dist/opentracing/span.d.ts +147 -0
  897. package/vendor/dist/opentracing/span_context.d.ts +26 -0
  898. package/vendor/dist/opentracing/test/api_compatibility.d.ts +16 -0
  899. package/vendor/dist/opentracing/test/mocktracer_implemenation.d.ts +3 -0
  900. package/vendor/dist/opentracing/test/noop_implementation.d.ts +4 -0
  901. package/vendor/dist/opentracing/test/opentracing_api.d.ts +3 -0
  902. package/vendor/dist/opentracing/test/unittest.d.ts +2 -0
  903. package/vendor/dist/opentracing/tracer.d.ts +127 -0
  904. package/vendor/dist/path-to-regexp/LICENSE +21 -0
  905. package/vendor/dist/path-to-regexp/index.js +1 -0
  906. package/vendor/dist/pprof-format/LICENSE +8 -0
  907. package/vendor/dist/pprof-format/index.js +1 -0
  908. package/vendor/dist/protobufjs/LICENSE +39 -0
  909. package/vendor/dist/protobufjs/index.js +1 -0
  910. package/vendor/dist/protobufjs/minimal/LICENSE +39 -0
  911. package/vendor/dist/protobufjs/minimal/index.js +1 -0
  912. package/vendor/dist/retry/LICENSE +21 -0
  913. package/vendor/dist/retry/index.js +1 -0
  914. package/vendor/dist/rfdc/LICENSE +15 -0
  915. package/vendor/dist/rfdc/index.js +1 -0
  916. package/vendor/dist/semifies/LICENSE +201 -0
  917. package/vendor/dist/semifies/index.js +1 -0
  918. package/vendor/dist/shell-quote/LICENSE +24 -0
  919. package/vendor/dist/shell-quote/index.js +1 -0
  920. package/vendor/dist/source-map/LICENSE +28 -0
  921. package/vendor/dist/source-map/index.js +1 -0
  922. package/vendor/dist/source-map/lib/util/LICENSE +28 -0
  923. package/vendor/dist/source-map/lib/util/index.js +1 -0
  924. package/vendor/dist/source-map/mappings.wasm +0 -0
  925. package/vendor/dist/tlhunter-sorted-set/LICENSE +21 -0
  926. package/vendor/dist/tlhunter-sorted-set/index.js +1 -0
  927. package/vendor/dist/ttl-set/LICENSE +21 -0
  928. package/vendor/dist/ttl-set/index.js +1 -0
  929. package/version.js +18 -0
@@ -0,0 +1,1089 @@
1
+ 'use strict'
2
+
3
+ const {
4
+ TEST_STATUS,
5
+ TEST_IS_RUM_ACTIVE,
6
+ TEST_CODE_OWNERS,
7
+ getTestEnvironmentMetadata,
8
+ CI_APP_ORIGIN,
9
+ getTestParentSpan,
10
+ getCodeOwnersFileEntries,
11
+ getCodeOwnersForFilename,
12
+ getTestCommonTags,
13
+ getTestSessionCommonTags,
14
+ getTestModuleCommonTags,
15
+ getTestSuiteCommonTags,
16
+ TEST_SUITE_ID,
17
+ TEST_MODULE_ID,
18
+ TEST_SESSION_ID,
19
+ TEST_COMMAND,
20
+ TEST_MODULE,
21
+ TEST_SOURCE_START,
22
+ finishAllTraceSpans,
23
+ getCoveredFilenamesFromCoverage,
24
+ getTestSuitePath,
25
+ addIntelligentTestRunnerSpanTags,
26
+ TEST_SKIPPED_BY_ITR,
27
+ TEST_ITR_UNSKIPPABLE,
28
+ TEST_ITR_FORCED_RUN,
29
+ ITR_CORRELATION_ID,
30
+ TEST_SOURCE_FILE,
31
+ TEST_IS_NEW,
32
+ TEST_IS_RETRY,
33
+ TEST_EARLY_FLAKE_ENABLED,
34
+ getTestSessionName,
35
+ TEST_SESSION_NAME,
36
+ TEST_LEVEL_EVENT_TYPES,
37
+ TEST_RETRY_REASON,
38
+ DD_TEST_IS_USER_PROVIDED_SERVICE,
39
+ TEST_MANAGEMENT_IS_QUARANTINED,
40
+ TEST_MANAGEMENT_ENABLED,
41
+ TEST_MANAGEMENT_IS_DISABLED,
42
+ TEST_MANAGEMENT_IS_ATTEMPT_TO_FIX,
43
+ TEST_MANAGEMENT_ATTEMPT_TO_FIX_PASSED,
44
+ TEST_HAS_FAILED_ALL_RETRIES,
45
+ getLibraryCapabilitiesTags,
46
+ TEST_RETRY_REASON_TYPES,
47
+ getPullRequestDiff,
48
+ getModifiedFilesFromDiff,
49
+ getSessionRequestErrorTags,
50
+ DD_CI_LIBRARY_CONFIGURATION_ERROR,
51
+ TEST_IS_MODIFIED,
52
+ getPullRequestBaseBranch,
53
+ } = require('../../dd-trace/src/plugins/util/test')
54
+ const { isMarkedAsUnskippable } = require('../../datadog-plugin-jest/src/util')
55
+ const { ORIGIN_KEY, COMPONENT } = require('../../dd-trace/src/constants')
56
+ const { getValueFromEnvSources } = require('../../dd-trace/src/config/helper')
57
+ const { appClosing: appClosingTelemetry } = require('../../dd-trace/src/telemetry')
58
+ const log = require('../../dd-trace/src/log')
59
+
60
+ const {
61
+ TELEMETRY_EVENT_CREATED,
62
+ TELEMETRY_EVENT_FINISHED,
63
+ TELEMETRY_ITR_FORCED_TO_RUN,
64
+ TELEMETRY_CODE_COVERAGE_EMPTY,
65
+ TELEMETRY_ITR_UNSKIPPABLE,
66
+ TELEMETRY_CODE_COVERAGE_NUM_FILES,
67
+ incrementCountMetric,
68
+ distributionMetric,
69
+ TELEMETRY_ITR_SKIPPED,
70
+ TELEMETRY_TEST_SESSION,
71
+ } = require('../../dd-trace/src/ci-visibility/telemetry')
72
+
73
+ const {
74
+ GIT_REPOSITORY_URL,
75
+ GIT_COMMIT_SHA,
76
+ GIT_BRANCH,
77
+ CI_PROVIDER_NAME,
78
+ CI_WORKSPACE_PATH,
79
+ GIT_COMMIT_MESSAGE,
80
+ GIT_TAG,
81
+ GIT_PULL_REQUEST_BASE_BRANCH_SHA,
82
+ GIT_COMMIT_HEAD_SHA,
83
+ GIT_PULL_REQUEST_BASE_BRANCH,
84
+ GIT_COMMIT_HEAD_MESSAGE,
85
+ } = require('../../dd-trace/src/plugins/util/tags')
86
+ const {
87
+ OS_VERSION,
88
+ OS_PLATFORM,
89
+ OS_ARCHITECTURE,
90
+ RUNTIME_NAME,
91
+ RUNTIME_VERSION,
92
+ } = require('../../dd-trace/src/plugins/util/env')
93
+ const { DD_MAJOR } = require('../../../version')
94
+ const {
95
+ resolveOriginalSourcePosition,
96
+ resolveSourceLineForTest,
97
+ shouldTrustInvocationDetailsLine,
98
+ } = require('./source-map-utils')
99
+
100
+ const TEST_FRAMEWORK_NAME = 'cypress'
101
+
102
+ const CYPRESS_STATUS_TO_TEST_STATUS = {
103
+ passed: 'pass',
104
+ failed: 'fail',
105
+ pending: 'skip',
106
+ skipped: 'skip',
107
+ }
108
+
109
+ function getSessionStatus (summary) {
110
+ if (summary.totalFailed !== undefined && summary.totalFailed > 0) {
111
+ return 'fail'
112
+ }
113
+ if (summary.totalSkipped !== undefined && summary.totalSkipped === summary.totalTests) {
114
+ return 'skip'
115
+ }
116
+ return 'pass'
117
+ }
118
+
119
+ function getCypressVersion (details) {
120
+ if (details?.cypressVersion) {
121
+ return details.cypressVersion
122
+ }
123
+ if (details?.config?.version) {
124
+ return details.config.version
125
+ }
126
+ return ''
127
+ }
128
+
129
+ function getRootDir (details) {
130
+ if (details?.config) {
131
+ return details.config.projectRoot || details.config.repoRoot || process.cwd()
132
+ }
133
+ return process.cwd()
134
+ }
135
+
136
+ function getCypressCommand (details) {
137
+ if (!details) {
138
+ return TEST_FRAMEWORK_NAME
139
+ }
140
+ return `${TEST_FRAMEWORK_NAME} ${details.specPattern || ''}`
141
+ }
142
+
143
+ function getIsTestIsolationEnabled (cypressConfig) {
144
+ if (!cypressConfig) {
145
+ // If we can't read testIsolation config parameter, we default to allowing retries
146
+ return true
147
+ }
148
+ return cypressConfig.testIsolation === undefined ? true : cypressConfig.testIsolation
149
+ }
150
+
151
+ function getLibraryConfiguration (tracer, testConfiguration) {
152
+ return new Promise(resolve => {
153
+ if (!tracer._tracer._exporter?.getLibraryConfiguration) {
154
+ return resolve({ err: new Error('Test Optimization was not initialized correctly') })
155
+ }
156
+
157
+ tracer._tracer._exporter.getLibraryConfiguration(testConfiguration, (err, libraryConfig) => {
158
+ resolve({ err, libraryConfig })
159
+ })
160
+ })
161
+ }
162
+
163
+ function getSkippableTests (tracer, testConfiguration) {
164
+ return new Promise(resolve => {
165
+ if (!tracer._tracer._exporter?.getSkippableSuites) {
166
+ return resolve({ err: new Error('Test Optimization was not initialized correctly') })
167
+ }
168
+ tracer._tracer._exporter.getSkippableSuites(testConfiguration, (err, skippableTests, correlationId) => {
169
+ resolve({
170
+ err,
171
+ skippableTests,
172
+ correlationId,
173
+ })
174
+ })
175
+ })
176
+ }
177
+
178
+ function getKnownTests (tracer, testConfiguration) {
179
+ return new Promise(resolve => {
180
+ if (!tracer._tracer._exporter?.getKnownTests) {
181
+ return resolve({ err: new Error('Test Optimization was not initialized correctly') })
182
+ }
183
+ tracer._tracer._exporter.getKnownTests(testConfiguration, (err, knownTests) => {
184
+ resolve({
185
+ err,
186
+ knownTests,
187
+ })
188
+ })
189
+ })
190
+ }
191
+
192
+ function getTestManagementTests (tracer, testConfiguration) {
193
+ return new Promise(resolve => {
194
+ if (!tracer._tracer._exporter?.getTestManagementTests) {
195
+ return resolve({ err: new Error('Test Optimization was not initialized correctly') })
196
+ }
197
+ tracer._tracer._exporter.getTestManagementTests(testConfiguration, (err, testManagementTests) => {
198
+ resolve({
199
+ err,
200
+ testManagementTests,
201
+ })
202
+ })
203
+ })
204
+ }
205
+
206
+ function getModifiedFiles (testEnvironmentMetadata) {
207
+ const {
208
+ [GIT_PULL_REQUEST_BASE_BRANCH]: pullRequestBaseBranch,
209
+ [GIT_PULL_REQUEST_BASE_BRANCH_SHA]: pullRequestBaseBranchSha,
210
+ [GIT_COMMIT_HEAD_SHA]: commitHeadSha,
211
+ } = testEnvironmentMetadata
212
+
213
+ const baseBranchSha = pullRequestBaseBranchSha || getPullRequestBaseBranch(pullRequestBaseBranch)
214
+
215
+ if (baseBranchSha) {
216
+ const diff = getPullRequestDiff(baseBranchSha, commitHeadSha)
217
+ const modifiedFiles = getModifiedFilesFromDiff(diff)
218
+ if (modifiedFiles) {
219
+ return modifiedFiles
220
+ }
221
+ }
222
+
223
+ throw new Error('Modified tests could not be retrieved')
224
+ }
225
+
226
+ function getSuiteStatus (suiteStats) {
227
+ if (!suiteStats) {
228
+ return 'skip'
229
+ }
230
+ if (suiteStats.failures !== undefined && suiteStats.failures > 0) {
231
+ return 'fail'
232
+ }
233
+ if (suiteStats.tests !== undefined &&
234
+ (suiteStats.tests === suiteStats.pending || suiteStats.tests === suiteStats.skipped)) {
235
+ return 'skip'
236
+ }
237
+ return 'pass'
238
+ }
239
+
240
+ class CypressPlugin {
241
+ _isInit = false
242
+ testEnvironmentMetadata = getTestEnvironmentMetadata(TEST_FRAMEWORK_NAME)
243
+
244
+ finishedTestsByFile = {}
245
+ testStatuses = {}
246
+ isTestsSkipped = false
247
+ isSuitesSkippingEnabled = false
248
+ isCodeCoverageEnabled = false
249
+ isFlakyTestRetriesEnabled = false
250
+ flakyTestRetriesCount = 0
251
+ isEarlyFlakeDetectionEnabled = false
252
+ isKnownTestsEnabled = false
253
+ earlyFlakeDetectionNumRetries = 0
254
+ testsToSkip = []
255
+ skippedTests = []
256
+ hasForcedToRunSuites = false
257
+ hasUnskippableSuites = false
258
+ unskippableSuites = []
259
+ knownTests = []
260
+ isTestManagementTestsEnabled = false
261
+ testManagementAttemptToFixRetries = 0
262
+ isImpactedTestsEnabled = false
263
+ modifiedFiles = []
264
+
265
+ constructor () {
266
+ const {
267
+ [GIT_REPOSITORY_URL]: repositoryUrl,
268
+ [GIT_COMMIT_SHA]: sha,
269
+ [OS_VERSION]: osVersion,
270
+ [OS_PLATFORM]: osPlatform,
271
+ [OS_ARCHITECTURE]: osArchitecture,
272
+ [RUNTIME_NAME]: runtimeName,
273
+ [RUNTIME_VERSION]: runtimeVersion,
274
+ [GIT_BRANCH]: branch,
275
+ [CI_PROVIDER_NAME]: ciProviderName,
276
+ [CI_WORKSPACE_PATH]: repositoryRoot,
277
+ [GIT_COMMIT_MESSAGE]: commitMessage,
278
+ [GIT_TAG]: tag,
279
+ [GIT_PULL_REQUEST_BASE_BRANCH_SHA]: pullRequestBaseSha,
280
+ [GIT_COMMIT_HEAD_SHA]: commitHeadSha,
281
+ [GIT_COMMIT_HEAD_MESSAGE]: commitHeadMessage,
282
+ } = this.testEnvironmentMetadata
283
+
284
+ this.repositoryRoot = repositoryRoot || process.cwd()
285
+ this.ciProviderName = ciProviderName
286
+ this.codeOwnersEntries = getCodeOwnersFileEntries(repositoryRoot)
287
+
288
+ this.testConfiguration = {
289
+ repositoryUrl,
290
+ sha,
291
+ osVersion,
292
+ osPlatform,
293
+ osArchitecture,
294
+ runtimeName,
295
+ runtimeVersion,
296
+ branch,
297
+ testLevel: 'test',
298
+ commitMessage,
299
+ tag,
300
+ pullRequestBaseSha,
301
+ commitHeadSha,
302
+ commitHeadMessage,
303
+ }
304
+ }
305
+
306
+ // Init function returns a promise that resolves with the Cypress configuration
307
+ // Depending on the received configuration, the Cypress configuration can be modified:
308
+ // for example, to enable retries for failed tests.
309
+ init (tracer, cypressConfig) {
310
+ this._isInit = true
311
+ this.tracer = tracer
312
+ this.cypressConfig = cypressConfig
313
+
314
+ this.isTestIsolationEnabled = getIsTestIsolationEnabled(cypressConfig)
315
+
316
+ const envFlushWait = Number(getValueFromEnvSources('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS'))
317
+ this.rumFlushWaitMillis = Number.isFinite(envFlushWait) ? envFlushWait : undefined
318
+
319
+ if (!this.isTestIsolationEnabled) {
320
+ log.warn('Test isolation is disabled, retries will not be enabled')
321
+ }
322
+
323
+ // we have to do it here because the tracer is not initialized in the constructor
324
+ this.testEnvironmentMetadata[DD_TEST_IS_USER_PROVIDED_SERVICE] =
325
+ tracer._tracer._config.isServiceUserProvided ? 'true' : 'false'
326
+
327
+ this._pendingRequestErrorTags = []
328
+ this.libraryConfigurationPromise = getLibraryConfiguration(this.tracer, this.testConfiguration)
329
+ .then((libraryConfigurationResponse) => {
330
+ if (libraryConfigurationResponse.err) {
331
+ log.error('Cypress plugin library config response error', libraryConfigurationResponse.err)
332
+ this._pendingRequestErrorTags.push({
333
+ tag: DD_CI_LIBRARY_CONFIGURATION_ERROR,
334
+ value: 'true',
335
+ })
336
+ } else {
337
+ const {
338
+ libraryConfig: {
339
+ isSuitesSkippingEnabled,
340
+ isCodeCoverageEnabled,
341
+ isEarlyFlakeDetectionEnabled,
342
+ earlyFlakeDetectionNumRetries,
343
+ isFlakyTestRetriesEnabled,
344
+ flakyTestRetriesCount,
345
+ isKnownTestsEnabled,
346
+ isTestManagementEnabled,
347
+ testManagementAttemptToFixRetries,
348
+ isImpactedTestsEnabled,
349
+ },
350
+ } = libraryConfigurationResponse
351
+ this.isSuitesSkippingEnabled = isSuitesSkippingEnabled
352
+ this.isCodeCoverageEnabled = isCodeCoverageEnabled
353
+ this.isEarlyFlakeDetectionEnabled = isEarlyFlakeDetectionEnabled
354
+ this.earlyFlakeDetectionNumRetries = earlyFlakeDetectionNumRetries
355
+ this.isKnownTestsEnabled = isKnownTestsEnabled
356
+ if (isFlakyTestRetriesEnabled && this.isTestIsolationEnabled) {
357
+ this.isFlakyTestRetriesEnabled = true
358
+ this.flakyTestRetriesCount = flakyTestRetriesCount ?? 0
359
+ this.cypressConfig.retries.runMode = this.flakyTestRetriesCount
360
+ } else {
361
+ this.flakyTestRetriesCount = 0
362
+ }
363
+ this.isTestManagementTestsEnabled = isTestManagementEnabled
364
+ this.testManagementAttemptToFixRetries = testManagementAttemptToFixRetries
365
+ this.isImpactedTestsEnabled = isImpactedTestsEnabled
366
+ }
367
+ return this.cypressConfig
368
+ })
369
+ return this.libraryConfigurationPromise
370
+ }
371
+
372
+ getIsTestModified (testSuiteAbsolutePath) {
373
+ const relativeTestSuitePath = getTestSuitePath(testSuiteAbsolutePath, this.repositoryRoot)
374
+ if (!this.modifiedFiles) {
375
+ return false
376
+ }
377
+ const lines = this.modifiedFiles[relativeTestSuitePath]
378
+ if (!lines) {
379
+ return false
380
+ }
381
+ return lines.length > 0
382
+ }
383
+
384
+ getTestSuiteProperties (testSuite) {
385
+ return this.testManagementTests?.cypress?.suites?.[testSuite]?.tests || {}
386
+ }
387
+
388
+ getTestProperties (testSuite, testName) {
389
+ const { attempt_to_fix: isAttemptToFix, disabled: isDisabled, quarantined: isQuarantined } =
390
+ this.getTestSuiteProperties(testSuite)?.[testName]?.properties || {}
391
+
392
+ return { isAttemptToFix, isDisabled, isQuarantined }
393
+ }
394
+
395
+ getTestSuiteSpan ({ testSuite, testSuiteAbsolutePath }) {
396
+ const testSuiteSpanMetadata =
397
+ getTestSuiteCommonTags(this.command, this.frameworkVersion, testSuite, TEST_FRAMEWORK_NAME)
398
+
399
+ this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'suite')
400
+
401
+ if (testSuiteAbsolutePath) {
402
+ const resolvedSuitePosition = resolveOriginalSourcePosition(testSuiteAbsolutePath, 1)
403
+ const resolvedSuiteAbsolutePath = resolvedSuitePosition ? resolvedSuitePosition.sourceFile : testSuiteAbsolutePath
404
+ const testSourceFile = getTestSuitePath(resolvedSuiteAbsolutePath, this.repositoryRoot)
405
+ testSuiteSpanMetadata[TEST_SOURCE_FILE] = testSourceFile
406
+ testSuiteSpanMetadata[TEST_SOURCE_START] = 1
407
+ const codeOwners = this.getTestCodeOwners({ testSuite, testSourceFile })
408
+ if (codeOwners) {
409
+ testSuiteSpanMetadata[TEST_CODE_OWNERS] = codeOwners
410
+ }
411
+ }
412
+
413
+ return this.tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test_suite`, {
414
+ childOf: this.testModuleSpan,
415
+ tags: {
416
+ [COMPONENT]: TEST_FRAMEWORK_NAME,
417
+ ...this.testEnvironmentMetadata,
418
+ ...testSuiteSpanMetadata,
419
+ },
420
+ integrationName: TEST_FRAMEWORK_NAME,
421
+ })
422
+ }
423
+
424
+ getTestSpan ({ testName, testSuite, isUnskippable, isForcedToRun, testSourceFile, isDisabled, isQuarantined }) {
425
+ const testSuiteTags = {
426
+ [TEST_COMMAND]: this.command,
427
+ [TEST_MODULE]: TEST_FRAMEWORK_NAME,
428
+ }
429
+ if (this.testSuiteSpan) {
430
+ testSuiteTags[TEST_SUITE_ID] = this.testSuiteSpan.context().toSpanId()
431
+ }
432
+ if (this.testSessionSpan && this.testModuleSpan) {
433
+ testSuiteTags[TEST_SESSION_ID] = this.testSessionSpan.context().toTraceId()
434
+ testSuiteTags[TEST_MODULE_ID] = this.testModuleSpan.context().toSpanId()
435
+ Object.assign(testSuiteTags, this.getSessionRequestErrorTags())
436
+ // If testSuiteSpan couldn't be created, we'll use the testModuleSpan as the parent
437
+ if (!this.testSuiteSpan) {
438
+ testSuiteTags[TEST_SUITE_ID] = this.testModuleSpan.context().toSpanId()
439
+ }
440
+ }
441
+
442
+ const childOf = getTestParentSpan(this.tracer)
443
+ const {
444
+ resource,
445
+ ...testSpanMetadata
446
+ } = getTestCommonTags(testName, testSuite, this.cypressConfig.version, TEST_FRAMEWORK_NAME)
447
+
448
+ if (testSourceFile) {
449
+ testSpanMetadata[TEST_SOURCE_FILE] = testSourceFile
450
+ }
451
+
452
+ const codeOwners = this.getTestCodeOwners({ testSuite, testSourceFile })
453
+ if (codeOwners) {
454
+ testSpanMetadata[TEST_CODE_OWNERS] = codeOwners
455
+ }
456
+
457
+ if (isUnskippable) {
458
+ this.hasUnskippableSuites = true
459
+ incrementCountMetric(TELEMETRY_ITR_UNSKIPPABLE, { testLevel: 'suite' })
460
+ testSpanMetadata[TEST_ITR_UNSKIPPABLE] = 'true'
461
+ }
462
+
463
+ if (isForcedToRun) {
464
+ this.hasForcedToRunSuites = true
465
+ incrementCountMetric(TELEMETRY_ITR_FORCED_TO_RUN, { testLevel: 'suite' })
466
+ testSpanMetadata[TEST_ITR_FORCED_RUN] = 'true'
467
+ }
468
+
469
+ if (isDisabled) {
470
+ testSpanMetadata[TEST_MANAGEMENT_IS_DISABLED] = 'true'
471
+ }
472
+
473
+ if (isQuarantined) {
474
+ testSpanMetadata[TEST_MANAGEMENT_IS_QUARANTINED] = 'true'
475
+ }
476
+
477
+ this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'test', { hasCodeOwners: !!codeOwners })
478
+
479
+ return this.tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test`, {
480
+ childOf,
481
+ tags: {
482
+ [COMPONENT]: TEST_FRAMEWORK_NAME,
483
+ [ORIGIN_KEY]: CI_APP_ORIGIN,
484
+ ...testSpanMetadata,
485
+ ...this.testEnvironmentMetadata,
486
+ ...testSuiteTags,
487
+ },
488
+ integrationName: TEST_FRAMEWORK_NAME,
489
+ })
490
+ }
491
+
492
+ /**
493
+ * Returns request error tags from the test session span for propagation to test spans.
494
+ * @returns {Record<string, string>}
495
+ */
496
+ getSessionRequestErrorTags () {
497
+ return getSessionRequestErrorTags(this.testSessionSpan)
498
+ }
499
+
500
+ ciVisEvent (name, testLevel, tags = {}) {
501
+ incrementCountMetric(name, {
502
+ testLevel,
503
+ testFramework: 'cypress',
504
+ isUnsupportedCIProvider: !this.ciProviderName,
505
+ ...tags,
506
+ })
507
+ }
508
+
509
+ async beforeRun (details) {
510
+ // We need to make sure that the plugin is initialized before running the tests
511
+ // This is for the case where the user has not returned the promise from the init function
512
+ await this.libraryConfigurationPromise
513
+
514
+ this.command = getCypressCommand(details)
515
+ this.frameworkVersion = getCypressVersion(details)
516
+ this.rootDir = getRootDir(details)
517
+
518
+ if (this.isKnownTestsEnabled) {
519
+ const knownTestsResponse = await getKnownTests(
520
+ this.tracer,
521
+ this.testConfiguration
522
+ )
523
+ if (knownTestsResponse.err) {
524
+ log.error('Cypress known tests response error', knownTestsResponse.err)
525
+ this.isEarlyFlakeDetectionEnabled = false
526
+ this.isKnownTestsEnabled = false
527
+ } else {
528
+ if (knownTestsResponse.knownTests[TEST_FRAMEWORK_NAME]) {
529
+ this.knownTestsByTestSuite = knownTestsResponse.knownTests[TEST_FRAMEWORK_NAME]
530
+ } else {
531
+ this.isEarlyFlakeDetectionEnabled = false
532
+ this.isKnownTestsEnabled = false
533
+ }
534
+ }
535
+ }
536
+
537
+ if (this.isSuitesSkippingEnabled) {
538
+ const skippableTestsResponse = await getSkippableTests(
539
+ this.tracer,
540
+ this.testConfiguration
541
+ )
542
+ if (skippableTestsResponse.err) {
543
+ log.error('Cypress skippable tests response error', skippableTestsResponse.err)
544
+ } else {
545
+ const { skippableTests, correlationId } = skippableTestsResponse
546
+ this.testsToSkip = skippableTests || []
547
+ this.itrCorrelationId = correlationId
548
+ incrementCountMetric(TELEMETRY_ITR_SKIPPED, { testLevel: 'test' }, this.testsToSkip.length)
549
+ }
550
+ }
551
+
552
+ if (this.isTestManagementTestsEnabled) {
553
+ const testManagementTestsResponse = await getTestManagementTests(
554
+ this.tracer,
555
+ this.testConfiguration
556
+ )
557
+ if (testManagementTestsResponse.err) {
558
+ log.error('Cypress test management tests response error', testManagementTestsResponse.err)
559
+ this.isTestManagementTestsEnabled = false
560
+ } else {
561
+ this.testManagementTests = testManagementTestsResponse.testManagementTests
562
+ }
563
+ }
564
+
565
+ if (this.isImpactedTestsEnabled) {
566
+ try {
567
+ this.modifiedFiles = getModifiedFiles(this.testEnvironmentMetadata)
568
+ } catch (error) {
569
+ log.error(error)
570
+ this.isImpactedTestsEnabled = false
571
+ }
572
+ }
573
+
574
+ // `details.specs` are test files
575
+ if (details.specs) {
576
+ for (const { absolute, relative } of details.specs) {
577
+ const isUnskippableSuite = isMarkedAsUnskippable({ path: absolute })
578
+ if (isUnskippableSuite) {
579
+ this.unskippableSuites.push(relative)
580
+ }
581
+ }
582
+ }
583
+
584
+ const childOf = getTestParentSpan(this.tracer)
585
+
586
+ const testSessionSpanMetadata =
587
+ getTestSessionCommonTags(this.command, this.frameworkVersion, TEST_FRAMEWORK_NAME)
588
+ const testModuleSpanMetadata =
589
+ getTestModuleCommonTags(this.command, this.frameworkVersion, TEST_FRAMEWORK_NAME)
590
+
591
+ if (this.isEarlyFlakeDetectionEnabled) {
592
+ testSessionSpanMetadata[TEST_EARLY_FLAKE_ENABLED] = 'true'
593
+ }
594
+
595
+ const trimmedCommand = DD_MAJOR < 6 ? this.command : 'cypress run'
596
+
597
+ const testSessionName = getTestSessionName(
598
+ this.tracer._tracer._config,
599
+ trimmedCommand,
600
+ this.testEnvironmentMetadata
601
+ )
602
+
603
+ if (this.tracer._tracer._exporter?.addMetadataTags) {
604
+ const metadataTags = {}
605
+ for (const testLevel of TEST_LEVEL_EVENT_TYPES) {
606
+ metadataTags[testLevel] = {
607
+ [TEST_SESSION_NAME]: testSessionName,
608
+ }
609
+ }
610
+ const libraryCapabilitiesTags = getLibraryCapabilitiesTags(this.constructor.id, false, this.frameworkVersion)
611
+ metadataTags.test = {
612
+ ...metadataTags.test,
613
+ ...libraryCapabilitiesTags,
614
+ }
615
+
616
+ this.tracer._tracer._exporter.addMetadataTags(metadataTags)
617
+ }
618
+
619
+ this.testSessionSpan = this.tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test_session`, {
620
+ childOf,
621
+ tags: {
622
+ [COMPONENT]: TEST_FRAMEWORK_NAME,
623
+ ...this.testEnvironmentMetadata,
624
+ ...testSessionSpanMetadata,
625
+ },
626
+ integrationName: TEST_FRAMEWORK_NAME,
627
+ })
628
+ for (const { tag, value } of this._pendingRequestErrorTags) {
629
+ this.testSessionSpan.setTag(tag, value)
630
+ }
631
+ this._pendingRequestErrorTags = []
632
+ this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'session')
633
+
634
+ const sessionRequestErrorTags = getSessionRequestErrorTags(this.testSessionSpan)
635
+ this.testModuleSpan = this.tracer.startSpan(`${TEST_FRAMEWORK_NAME}.test_module`, {
636
+ childOf: this.testSessionSpan,
637
+ tags: {
638
+ [COMPONENT]: TEST_FRAMEWORK_NAME,
639
+ ...this.testEnvironmentMetadata,
640
+ ...testModuleSpanMetadata,
641
+ ...sessionRequestErrorTags,
642
+ },
643
+ integrationName: TEST_FRAMEWORK_NAME,
644
+ })
645
+ this.ciVisEvent(TELEMETRY_EVENT_CREATED, 'module')
646
+
647
+ return details
648
+ }
649
+
650
+ afterRun (suiteStats) {
651
+ if (!this._isInit) {
652
+ log.warn('Attemping to call afterRun without initializating the plugin first')
653
+ return
654
+ }
655
+ if (this.testSessionSpan && this.testModuleSpan) {
656
+ const testStatus = getSessionStatus(suiteStats)
657
+ this.testModuleSpan.setTag(TEST_STATUS, testStatus)
658
+ this.testSessionSpan.setTag(TEST_STATUS, testStatus)
659
+
660
+ addIntelligentTestRunnerSpanTags(
661
+ this.testSessionSpan,
662
+ this.testModuleSpan,
663
+ {
664
+ isSuitesSkipped: this.isTestsSkipped,
665
+ isSuitesSkippingEnabled: this.isSuitesSkippingEnabled,
666
+ isCodeCoverageEnabled: this.isCodeCoverageEnabled,
667
+ skippingType: 'test',
668
+ skippingCount: this.skippedTests.length,
669
+ hasForcedToRunSuites: this.hasForcedToRunSuites,
670
+ hasUnskippableSuites: this.hasUnskippableSuites,
671
+ }
672
+ )
673
+
674
+ if (this.isTestManagementTestsEnabled) {
675
+ this.testSessionSpan.setTag(TEST_MANAGEMENT_ENABLED, 'true')
676
+ }
677
+
678
+ this.testModuleSpan.finish()
679
+ this.ciVisEvent(TELEMETRY_EVENT_FINISHED, 'module')
680
+ this.testSessionSpan.finish()
681
+ this.ciVisEvent(TELEMETRY_EVENT_FINISHED, 'session')
682
+ incrementCountMetric(TELEMETRY_TEST_SESSION, {
683
+ provider: this.ciProviderName,
684
+ autoInjected: !!getValueFromEnvSources('DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER'),
685
+ })
686
+
687
+ finishAllTraceSpans(this.testSessionSpan)
688
+ }
689
+
690
+ return new Promise(resolve => {
691
+ const exporter = this.tracer._tracer._exporter
692
+ if (!exporter) {
693
+ return resolve(null)
694
+ }
695
+ if (exporter.flush) {
696
+ exporter.flush(() => {
697
+ appClosingTelemetry()
698
+ resolve(null)
699
+ })
700
+ } else if (exporter._writer) {
701
+ exporter._writer.flush(() => {
702
+ appClosingTelemetry()
703
+ resolve(null)
704
+ })
705
+ }
706
+ })
707
+ }
708
+
709
+ afterSpec (spec, results) {
710
+ const { tests, stats } = results || {}
711
+ const cypressTests = tests || []
712
+ const finishedTests = this.finishedTestsByFile[spec.relative] || []
713
+
714
+ if (!this.testSuiteSpan) {
715
+ // dd:testSuiteStart hasn't been triggered for whatever reason
716
+ // We will create the test suite span on the spot if that's the case
717
+ log.warn('There was an error creating the test suite event.')
718
+ this.testSuiteSpan = this.getTestSuiteSpan({
719
+ testSuite: spec.relative,
720
+ testSuiteAbsolutePath: spec.absolute,
721
+ })
722
+ }
723
+
724
+ // Get tests that didn't go through `dd:afterEach`
725
+ // and create a skipped test span for each of them
726
+ for (const { title } of cypressTests) {
727
+ const cypressTestName = title.join(' ')
728
+ const isTestFinished = finishedTests.find(({ testName }) => cypressTestName === testName)
729
+
730
+ if (isTestFinished) {
731
+ continue
732
+ }
733
+
734
+ const isSkippedByItr = this.testsToSkip.find(test =>
735
+ cypressTestName === test.name && spec.relative === test.suite
736
+ )
737
+ const testSourceFile = spec.absolute && this.repositoryRoot
738
+ ? getTestSuitePath(spec.absolute, this.repositoryRoot)
739
+ : spec.relative
740
+
741
+ const skippedTestSpan = this.getTestSpan({ testName: cypressTestName, testSuite: spec.relative, testSourceFile })
742
+
743
+ skippedTestSpan.setTag(TEST_STATUS, 'skip')
744
+ if (isSkippedByItr) {
745
+ skippedTestSpan.setTag(TEST_SKIPPED_BY_ITR, 'true')
746
+ }
747
+ if (this.itrCorrelationId) {
748
+ skippedTestSpan.setTag(ITR_CORRELATION_ID, this.itrCorrelationId)
749
+ }
750
+
751
+ const { isDisabled, isQuarantined } = this.getTestProperties(spec.relative, cypressTestName)
752
+
753
+ if (isDisabled) {
754
+ skippedTestSpan.setTag(TEST_MANAGEMENT_IS_DISABLED, 'true')
755
+ } else if (isQuarantined) {
756
+ skippedTestSpan.setTag(TEST_MANAGEMENT_IS_QUARANTINED, 'true')
757
+ }
758
+
759
+ skippedTestSpan.finish()
760
+ }
761
+
762
+ // Make sure that reported test statuses are the same as Cypress reports.
763
+ // This is not always the case, such as when an `after` hook fails:
764
+ // Cypress will report the last run test as failed, but we don't know that yet at `dd:afterEach`
765
+ let latestError
766
+
767
+ const finishedTestsByTestName = finishedTests.reduce((acc, finishedTest) => {
768
+ if (!acc[finishedTest.testName]) {
769
+ acc[finishedTest.testName] = []
770
+ }
771
+ acc[finishedTest.testName].push(finishedTest)
772
+ return acc
773
+ }, {})
774
+
775
+ for (const [testName, finishedTestAttempts] of Object.entries(finishedTestsByTestName)) {
776
+ for (const [attemptIndex, finishedTest] of finishedTestAttempts.entries()) {
777
+ // TODO: there could be multiple if there have been retries!
778
+ // potentially we need to match the test status!
779
+ const cypressTest = cypressTests.find(test => test.title.join(' ') === testName)
780
+ if (!cypressTest) {
781
+ continue
782
+ }
783
+ // finishedTests can include multiple tests with the same name if they have been retried
784
+ // by early flake detection. Cypress is unaware of this so .attempts does not necessarily have
785
+ // the same length as `finishedTestAttempts`
786
+ let cypressTestStatus = CYPRESS_STATUS_TO_TEST_STATUS[cypressTest.state]
787
+ if (cypressTest.attempts && cypressTest.attempts[attemptIndex]) {
788
+ cypressTestStatus = CYPRESS_STATUS_TO_TEST_STATUS[cypressTest.attempts[attemptIndex].state]
789
+ const isAtrRetry = attemptIndex > 0 &&
790
+ this.isFlakyTestRetriesEnabled &&
791
+ !finishedTest.isAttemptToFix &&
792
+ !finishedTest.isEfdRetry
793
+ if (attemptIndex > 0) {
794
+ finishedTest.testSpan.setTag(TEST_IS_RETRY, 'true')
795
+ if (finishedTest.isEfdRetry) {
796
+ finishedTest.testSpan.setTag(TEST_RETRY_REASON, TEST_RETRY_REASON_TYPES.efd)
797
+ } else if (isAtrRetry) {
798
+ finishedTest.testSpan.setTag(TEST_RETRY_REASON, TEST_RETRY_REASON_TYPES.atr)
799
+ } else {
800
+ finishedTest.testSpan.setTag(TEST_RETRY_REASON, TEST_RETRY_REASON_TYPES.ext)
801
+ }
802
+ }
803
+ }
804
+ if (cypressTest.displayError) {
805
+ latestError = new Error(cypressTest.displayError)
806
+ }
807
+ // Update test status - but NOT for quarantined tests where we intentionally
808
+ // report 'fail' to Datadog even though Cypress sees it as 'pass'
809
+ const isQuarantinedTest = finishedTest.testSpan?.context()?._tags?.[TEST_MANAGEMENT_IS_QUARANTINED] === 'true'
810
+ if (cypressTestStatus !== finishedTest.testStatus && !isQuarantinedTest) {
811
+ finishedTest.testSpan.setTag(TEST_STATUS, cypressTestStatus)
812
+ finishedTest.testSpan.setTag('error', latestError)
813
+ }
814
+ if (this.itrCorrelationId) {
815
+ finishedTest.testSpan.setTag(ITR_CORRELATION_ID, this.itrCorrelationId)
816
+ }
817
+ const resolvedSpecPosition = spec.absolute ? resolveOriginalSourcePosition(spec.absolute, 1) : null
818
+ const resolvedSpecAbsolutePath = resolvedSpecPosition ? resolvedSpecPosition.sourceFile : spec.absolute
819
+ const testSourceFile = resolvedSpecAbsolutePath && this.repositoryRoot
820
+ ? getTestSuitePath(resolvedSpecAbsolutePath, this.repositoryRoot)
821
+ : spec.relative
822
+ if (testSourceFile) {
823
+ finishedTest.testSpan.setTag(TEST_SOURCE_FILE, testSourceFile)
824
+ }
825
+ const codeOwners = this.getTestCodeOwners({ testSuite: spec.relative, testSourceFile })
826
+
827
+ if (codeOwners) {
828
+ finishedTest.testSpan.setTag(TEST_CODE_OWNERS, codeOwners)
829
+ }
830
+
831
+ finishedTest.testSpan.finish(finishedTest.finishTime)
832
+ }
833
+ }
834
+
835
+ if (this.testSuiteSpan) {
836
+ const status = getSuiteStatus(stats)
837
+ this.testSuiteSpan.setTag(TEST_STATUS, status)
838
+
839
+ if (latestError) {
840
+ this.testSuiteSpan.setTag('error', latestError)
841
+ }
842
+ this.testSuiteSpan.finish()
843
+ this.testSuiteSpan = null
844
+ this.ciVisEvent(TELEMETRY_EVENT_FINISHED, 'suite')
845
+ }
846
+ }
847
+
848
+ getTasks () {
849
+ return {
850
+ 'dd:testSuiteStart': ({ testSuite, testSuiteAbsolutePath }) => {
851
+ const suitePayload = {
852
+ isEarlyFlakeDetectionEnabled: this.isEarlyFlakeDetectionEnabled,
853
+ knownTestsForSuite: this.knownTestsByTestSuite?.[testSuite] || [],
854
+ earlyFlakeDetectionNumRetries: this.earlyFlakeDetectionNumRetries,
855
+ isKnownTestsEnabled: this.isKnownTestsEnabled,
856
+ isTestManagementEnabled: this.isTestManagementTestsEnabled,
857
+ testManagementAttemptToFixRetries: this.testManagementAttemptToFixRetries,
858
+ testManagementTests: this.getTestSuiteProperties(testSuite),
859
+ isImpactedTestsEnabled: this.isImpactedTestsEnabled,
860
+ isModifiedTest: this.getIsTestModified(testSuiteAbsolutePath),
861
+ repositoryRoot: this.repositoryRoot,
862
+ isTestIsolationEnabled: this.isTestIsolationEnabled,
863
+ rumFlushWaitMillis: this.rumFlushWaitMillis,
864
+ }
865
+
866
+ if (this.testSuiteSpan) {
867
+ return suitePayload
868
+ }
869
+ this.testSuiteSpan = this.getTestSuiteSpan({ testSuite, testSuiteAbsolutePath })
870
+ return suitePayload
871
+ },
872
+ 'dd:beforeEach': (test) => {
873
+ const { testName, testSuite } = test
874
+ const shouldSkip = this.testsToSkip.some(test => {
875
+ return testName === test.name && testSuite === test.suite
876
+ })
877
+ const isUnskippable = this.unskippableSuites.includes(testSuite)
878
+ const isForcedToRun = shouldSkip && isUnskippable
879
+ const { isAttemptToFix, isDisabled, isQuarantined } = this.getTestProperties(testSuite, testName)
880
+ // skip test
881
+ if (shouldSkip && !isUnskippable) {
882
+ this.skippedTests.push(test)
883
+ this.isTestsSkipped = true
884
+ return { shouldSkip: true }
885
+ }
886
+
887
+ // For disabled tests (not attemptToFix), skip them
888
+ if (!isAttemptToFix && isDisabled) {
889
+ return { shouldSkip: true }
890
+ }
891
+ // Quarantined tests (not attemptToFix) run normally but their failures are caught
892
+ // by Cypress.on('fail') in support.js and suppressed, so Cypress sees them as passed
893
+
894
+ if (!this.activeTestSpan) {
895
+ this.activeTestSpan = this.getTestSpan({
896
+ testName,
897
+ testSuite,
898
+ isUnskippable,
899
+ isForcedToRun,
900
+ isDisabled,
901
+ isQuarantined,
902
+ })
903
+ }
904
+
905
+ return this.activeTestSpan ? { traceId: this.activeTestSpan.context().toTraceId() } : {}
906
+ },
907
+ 'dd:afterEach': ({ test, coverage }) => {
908
+ if (!this.activeTestSpan) {
909
+ log.warn('There is no active test span in dd:afterEach handler')
910
+ return null
911
+ }
912
+ const {
913
+ state,
914
+ error,
915
+ isRUMActive,
916
+ testSourceLine,
917
+ testSourceStack,
918
+ testSuite,
919
+ testSuiteAbsolutePath,
920
+ testName,
921
+ testItTitle,
922
+ isNew,
923
+ isEfdRetry,
924
+ isAttemptToFix,
925
+ isModified,
926
+ isQuarantined: isQuarantinedFromSupport,
927
+ } = test
928
+ if (coverage && this.isCodeCoverageEnabled && this.tracer._tracer._exporter?.exportCoverage) {
929
+ const coverageFiles = getCoveredFilenamesFromCoverage(coverage)
930
+ const relativeCoverageFiles = [...coverageFiles, testSuiteAbsolutePath].map(
931
+ file => getTestSuitePath(file, this.repositoryRoot || this.rootDir)
932
+ )
933
+ if (!relativeCoverageFiles.length) {
934
+ incrementCountMetric(TELEMETRY_CODE_COVERAGE_EMPTY)
935
+ }
936
+ distributionMetric(TELEMETRY_CODE_COVERAGE_NUM_FILES, {}, relativeCoverageFiles.length)
937
+ const { _traceId, _spanId } = this.testSuiteSpan.context()
938
+ const formattedCoverage = {
939
+ sessionId: _traceId,
940
+ suiteId: _spanId,
941
+ testId: this.activeTestSpan.context()._spanId,
942
+ files: relativeCoverageFiles,
943
+ }
944
+ this.tracer._tracer._exporter.exportCoverage(formattedCoverage)
945
+ }
946
+ const testStatus = CYPRESS_STATUS_TO_TEST_STATUS[state]
947
+ this.activeTestSpan.setTag(TEST_STATUS, testStatus)
948
+
949
+ // Save the test status to know if it has passed all retries
950
+ if (this.testStatuses[testName]) {
951
+ this.testStatuses[testName].push(testStatus)
952
+ } else {
953
+ this.testStatuses[testName] = [testStatus]
954
+ }
955
+ const testStatuses = this.testStatuses[testName]
956
+
957
+ if (error) {
958
+ this.activeTestSpan.setTag('error', error)
959
+ }
960
+ if (isRUMActive) {
961
+ this.activeTestSpan.setTag(TEST_IS_RUM_ACTIVE, 'true')
962
+ }
963
+ // Source-line resolution strategy:
964
+ // 1. If plain JS and no source map, trust invocationDetails.line directly.
965
+ // 2. Otherwise, try invocationDetails.stack line mapped through source map.
966
+ // 3. If that fails, scan generated file for it/test/specify declaration by test name.
967
+ // 4. If declaration found:
968
+ // - .ts file: use declaration line directly.
969
+ // - .js file: map declaration line through source map.
970
+ // 5. If all fail, keep original invocationDetails.line.
971
+ if (testSourceLine) {
972
+ let resolvedLine = testSourceLine
973
+ if (testSuiteAbsolutePath && testItTitle) {
974
+ // Use invocationDetails directly only for plain JS specs without source maps.
975
+ // Otherwise, resolve from the test declaration in the spec and map via source map.
976
+ const shouldTrustInvocationDetails = shouldTrustInvocationDetailsLine(testSuiteAbsolutePath, testSourceLine)
977
+ if (!shouldTrustInvocationDetails) {
978
+ resolvedLine = resolveSourceLineForTest(
979
+ testSuiteAbsolutePath,
980
+ testItTitle,
981
+ testSourceStack
982
+ ) ?? testSourceLine
983
+ }
984
+ }
985
+ this.activeTestSpan.setTag(TEST_SOURCE_START, resolvedLine)
986
+ }
987
+ if (isNew) {
988
+ this.activeTestSpan.setTag(TEST_IS_NEW, 'true')
989
+ if (isEfdRetry) {
990
+ this.activeTestSpan.setTag(TEST_IS_RETRY, 'true')
991
+ this.activeTestSpan.setTag(TEST_RETRY_REASON, TEST_RETRY_REASON_TYPES.efd)
992
+ }
993
+ }
994
+ if (isModified) {
995
+ this.activeTestSpan.setTag(TEST_IS_MODIFIED, 'true')
996
+ if (isEfdRetry) {
997
+ this.activeTestSpan.setTag(TEST_IS_RETRY, 'true')
998
+ this.activeTestSpan.setTag(TEST_RETRY_REASON, TEST_RETRY_REASON_TYPES.efd)
999
+ }
1000
+ }
1001
+ // Check if all EFD retries failed
1002
+ if ((isNew || isModified) && this.earlyFlakeDetectionNumRetries > 0) {
1003
+ const isLastEfdAttempt = testStatuses.length === this.earlyFlakeDetectionNumRetries + 1
1004
+ if (isLastEfdAttempt && testStatuses.every(status => status === 'fail')) {
1005
+ this.activeTestSpan.setTag(TEST_HAS_FAILED_ALL_RETRIES, 'true')
1006
+ }
1007
+ }
1008
+ if (isAttemptToFix) {
1009
+ this.activeTestSpan.setTag(TEST_MANAGEMENT_IS_ATTEMPT_TO_FIX, 'true')
1010
+ if (testStatuses.length > 1) {
1011
+ this.activeTestSpan.setTag(TEST_IS_RETRY, 'true')
1012
+ this.activeTestSpan.setTag(TEST_RETRY_REASON, TEST_RETRY_REASON_TYPES.atf)
1013
+ }
1014
+ const isLastAttempt = testStatuses.length === this.testManagementAttemptToFixRetries + 1
1015
+ if (isLastAttempt) {
1016
+ if (testStatuses.includes('fail')) {
1017
+ this.activeTestSpan.setTag(TEST_MANAGEMENT_ATTEMPT_TO_FIX_PASSED, 'false')
1018
+ }
1019
+ if (testStatuses.every(status => status === 'fail')) {
1020
+ this.activeTestSpan.setTag(TEST_HAS_FAILED_ALL_RETRIES, 'true')
1021
+ } else if (testStatuses.every(status => status === 'pass')) {
1022
+ this.activeTestSpan.setTag(TEST_MANAGEMENT_ATTEMPT_TO_FIX_PASSED, 'true')
1023
+ }
1024
+ }
1025
+ }
1026
+ // ATR: set TEST_HAS_FAILED_ALL_RETRIES when all auto test retries were exhausted and every attempt failed
1027
+ if (this.isFlakyTestRetriesEnabled && !isAttemptToFix && !isEfdRetry &&
1028
+ this.flakyTestRetriesCount > 0 && testStatuses.length === this.flakyTestRetriesCount + 1 &&
1029
+ testStatuses.every(status => status === 'fail')) {
1030
+ this.activeTestSpan.setTag(TEST_HAS_FAILED_ALL_RETRIES, 'true')
1031
+ }
1032
+
1033
+ // Ensure quarantined tests reported from support.js are tagged
1034
+ // (This catches cases where the test ran but failed, but Cypress saw it as passed)
1035
+ if (isQuarantinedFromSupport) {
1036
+ this.activeTestSpan.setTag(TEST_MANAGEMENT_IS_QUARANTINED, 'true')
1037
+ }
1038
+
1039
+ const finishedTest = {
1040
+ testName,
1041
+ testStatus,
1042
+ finishTime: this.activeTestSpan._getTime(), // we store the finish time here
1043
+ testSpan: this.activeTestSpan,
1044
+ isEfdRetry,
1045
+ isAttemptToFix,
1046
+ }
1047
+ if (this.finishedTestsByFile[testSuite]) {
1048
+ this.finishedTestsByFile[testSuite].push(finishedTest)
1049
+ } else {
1050
+ this.finishedTestsByFile[testSuite] = [finishedTest]
1051
+ }
1052
+ // test spans are finished at after:spec
1053
+ const activeSpanTags = this.activeTestSpan.context()._tags
1054
+ this.ciVisEvent(TELEMETRY_EVENT_FINISHED, 'test', {
1055
+ hasCodeOwners: !!activeSpanTags[TEST_CODE_OWNERS],
1056
+ isNew,
1057
+ isRum: isRUMActive,
1058
+ browserDriver: 'cypress',
1059
+ isQuarantined: isQuarantinedFromSupport,
1060
+ isModified,
1061
+ isDisabled: activeSpanTags[TEST_MANAGEMENT_IS_DISABLED] === 'true',
1062
+ })
1063
+ this.activeTestSpan = null
1064
+
1065
+ return null
1066
+ },
1067
+ 'dd:addTags': (tags) => {
1068
+ if (this.activeTestSpan) {
1069
+ this.activeTestSpan.addTags(tags)
1070
+ }
1071
+ return null
1072
+ },
1073
+ 'dd:log': (message) => {
1074
+ // eslint-disable-next-line no-console
1075
+ console.log(`[datadog] ${message}`)
1076
+ return null
1077
+ },
1078
+ }
1079
+ }
1080
+
1081
+ getTestCodeOwners ({ testSuite, testSourceFile }) {
1082
+ if (testSourceFile) {
1083
+ return getCodeOwnersForFilename(testSourceFile, this.codeOwnersEntries)
1084
+ }
1085
+ return getCodeOwnersForFilename(testSuite, this.codeOwnersEntries)
1086
+ }
1087
+ }
1088
+
1089
+ module.exports = new CypressPlugin()