dd-trace 5.53.0 → 5.55.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 (368) hide show
  1. package/LICENSE-3rdparty.csv +2 -1
  2. package/ci/cypress/plugin.js +8 -0
  3. package/ci/cypress/polyfills.js +23 -0
  4. package/ci/init.js +8 -7
  5. package/index.d.ts +33 -16
  6. package/initialize.mjs +5 -6
  7. package/package.json +40 -38
  8. package/packages/datadog-code-origin/index.js +22 -4
  9. package/packages/datadog-core/src/utils/src/get.js +1 -1
  10. package/packages/datadog-core/src/utils/src/has.js +1 -1
  11. package/packages/datadog-core/src/utils/src/kebabcase.js +4 -6
  12. package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
  13. package/packages/datadog-core/src/utils/src/pick.js +2 -2
  14. package/packages/datadog-core/src/utils/src/set.js +1 -1
  15. package/packages/datadog-core/src/utils/src/uniq.js +1 -1
  16. package/packages/datadog-instrumentations/src/amqp10.js +19 -17
  17. package/packages/datadog-instrumentations/src/amqplib.js +52 -35
  18. package/packages/datadog-instrumentations/src/apollo.js +2 -2
  19. package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
  20. package/packages/datadog-instrumentations/src/cassandra-driver.js +10 -10
  21. package/packages/datadog-instrumentations/src/child_process.js +1 -2
  22. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +89 -75
  23. package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
  24. package/packages/datadog-instrumentations/src/couchbase.js +6 -9
  25. package/packages/datadog-instrumentations/src/cucumber.js +108 -68
  26. package/packages/datadog-instrumentations/src/cypress.js +2 -1
  27. package/packages/datadog-instrumentations/src/dns.js +5 -5
  28. package/packages/datadog-instrumentations/src/elasticsearch.js +9 -10
  29. package/packages/datadog-instrumentations/src/fastify.js +7 -9
  30. package/packages/datadog-instrumentations/src/fs.js +1 -1
  31. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +35 -43
  32. package/packages/datadog-instrumentations/src/graphql.js +7 -10
  33. package/packages/datadog-instrumentations/src/grpc/client.js +11 -23
  34. package/packages/datadog-instrumentations/src/grpc/server.js +7 -20
  35. package/packages/datadog-instrumentations/src/hapi.js +10 -11
  36. package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +16 -10
  37. package/packages/datadog-instrumentations/src/helpers/fetch.js +4 -5
  38. package/packages/datadog-instrumentations/src/helpers/hook.js +2 -3
  39. package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -1
  40. package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
  41. package/packages/datadog-instrumentations/src/helpers/register.js +11 -12
  42. package/packages/datadog-instrumentations/src/http/client.js +14 -20
  43. package/packages/datadog-instrumentations/src/jest.js +201 -143
  44. package/packages/datadog-instrumentations/src/kafkajs.js +52 -44
  45. package/packages/datadog-instrumentations/src/knex.js +4 -4
  46. package/packages/datadog-instrumentations/src/koa.js +2 -3
  47. package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
  48. package/packages/datadog-instrumentations/src/mariadb.js +49 -65
  49. package/packages/datadog-instrumentations/src/mocha/main.js +116 -73
  50. package/packages/datadog-instrumentations/src/mocha/utils.js +36 -12
  51. package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
  52. package/packages/datadog-instrumentations/src/mocha.js +3 -1
  53. package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
  54. package/packages/datadog-instrumentations/src/mysql.js +30 -37
  55. package/packages/datadog-instrumentations/src/mysql2.js +53 -47
  56. package/packages/datadog-instrumentations/src/net.js +1 -1
  57. package/packages/datadog-instrumentations/src/next.js +1 -0
  58. package/packages/datadog-instrumentations/src/nyc.js +3 -2
  59. package/packages/datadog-instrumentations/src/openai.js +22 -24
  60. package/packages/datadog-instrumentations/src/oracledb.js +1 -1
  61. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +4 -3
  62. package/packages/datadog-instrumentations/src/pg.js +3 -5
  63. package/packages/datadog-instrumentations/src/playwright.js +123 -83
  64. package/packages/datadog-instrumentations/src/protobufjs.js +3 -4
  65. package/packages/datadog-instrumentations/src/redis.js +4 -4
  66. package/packages/datadog-instrumentations/src/restify.js +9 -13
  67. package/packages/datadog-instrumentations/src/rhea.js +42 -54
  68. package/packages/datadog-instrumentations/src/router.js +30 -32
  69. package/packages/datadog-instrumentations/src/tedious.js +2 -3
  70. package/packages/datadog-instrumentations/src/vitest.js +87 -52
  71. package/packages/datadog-plugin-amqp10/src/consumer.js +7 -3
  72. package/packages/datadog-plugin-amqp10/src/producer.js +7 -3
  73. package/packages/datadog-plugin-amqplib/src/client.js +6 -2
  74. package/packages/datadog-plugin-amqplib/src/consumer.js +7 -3
  75. package/packages/datadog-plugin-amqplib/src/producer.js +7 -3
  76. package/packages/datadog-plugin-amqplib/src/util.js +1 -1
  77. package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -6
  78. package/packages/datadog-plugin-apollo/src/gateway/validate.js +2 -3
  79. package/packages/datadog-plugin-avsc/src/schema_iterator.js +12 -12
  80. package/packages/datadog-plugin-aws-sdk/src/base.js +15 -10
  81. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
  82. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +13 -13
  83. package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +3 -5
  84. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +28 -43
  85. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
  86. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +10 -11
  87. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +4 -6
  88. package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +3 -5
  89. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +3 -5
  90. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -3
  91. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +11 -15
  92. package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
  93. package/packages/datadog-plugin-aws-sdk/src/util.js +5 -6
  94. package/packages/datadog-plugin-cassandra-driver/src/index.js +1 -1
  95. package/packages/datadog-plugin-child_process/src/index.js +4 -4
  96. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +23 -23
  97. package/packages/datadog-plugin-cucumber/src/index.js +60 -4
  98. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +99 -28
  99. package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
  100. package/packages/datadog-plugin-cypress/src/support.js +24 -5
  101. package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -1
  102. package/packages/datadog-plugin-elasticsearch/src/index.js +1 -1
  103. package/packages/datadog-plugin-express/src/code_origin.js +30 -0
  104. package/packages/datadog-plugin-express/src/index.js +10 -12
  105. package/packages/datadog-plugin-express/src/tracing.js +19 -0
  106. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +7 -3
  107. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +12 -7
  108. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +6 -2
  109. package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +27 -10
  110. package/packages/datadog-plugin-graphql/src/execute.js +2 -2
  111. package/packages/datadog-plugin-graphql/src/index.js +10 -8
  112. package/packages/datadog-plugin-graphql/src/resolve.js +19 -12
  113. package/packages/datadog-plugin-graphql/src/tools/index.js +1 -0
  114. package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -0
  115. package/packages/datadog-plugin-graphql/src/tools/transforms.js +1 -0
  116. package/packages/datadog-plugin-grpc/src/client.js +2 -2
  117. package/packages/datadog-plugin-grpc/src/util.js +2 -2
  118. package/packages/datadog-plugin-http/src/client.js +23 -13
  119. package/packages/datadog-plugin-http2/src/client.js +24 -25
  120. package/packages/datadog-plugin-jest/src/index.js +26 -23
  121. package/packages/datadog-plugin-jest/src/util.js +8 -8
  122. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +3 -1
  123. package/packages/datadog-plugin-kafkajs/src/consumer.js +9 -5
  124. package/packages/datadog-plugin-kafkajs/src/producer.js +8 -3
  125. package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
  126. package/packages/datadog-plugin-langchain/src/handlers/chain.js +7 -7
  127. package/packages/datadog-plugin-langchain/src/handlers/embedding.js +2 -2
  128. package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +6 -4
  129. package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +5 -4
  130. package/packages/datadog-plugin-langchain/src/tracing.js +11 -10
  131. package/packages/datadog-plugin-mariadb/src/index.js +3 -9
  132. package/packages/datadog-plugin-mocha/src/index.js +39 -14
  133. package/packages/datadog-plugin-mongodb-core/src/index.js +3 -2
  134. package/packages/datadog-plugin-mysql/src/index.js +22 -9
  135. package/packages/datadog-plugin-mysql2/src/index.js +16 -0
  136. package/packages/datadog-plugin-net/src/tcp.js +1 -1
  137. package/packages/datadog-plugin-next/src/index.js +7 -6
  138. package/packages/datadog-plugin-openai/src/services.js +6 -10
  139. package/packages/datadog-plugin-openai/src/tracing.js +12 -18
  140. package/packages/datadog-plugin-oracledb/src/index.js +1 -1
  141. package/packages/datadog-plugin-playwright/src/index.js +25 -4
  142. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +8 -9
  143. package/packages/datadog-plugin-redis/src/index.js +2 -4
  144. package/packages/datadog-plugin-rhea/src/consumer.js +8 -6
  145. package/packages/datadog-plugin-rhea/src/producer.js +5 -2
  146. package/packages/datadog-plugin-router/src/index.js +1 -1
  147. package/packages/datadog-plugin-selenium/src/index.js +1 -6
  148. package/packages/datadog-plugin-vitest/src/index.js +52 -35
  149. package/packages/datadog-shimmer/src/shimmer.js +4 -8
  150. package/packages/dd-trace/src/appsec/api_security_sampler.js +2 -2
  151. package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
  152. package/packages/dd-trace/src/appsec/blocking.js +6 -20
  153. package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +0 -1
  154. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +0 -1
  155. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +0 -1
  156. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +0 -1
  157. package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +7 -12
  158. package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +5 -8
  159. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +4 -0
  160. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +9 -12
  161. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +5 -4
  162. package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +2 -3
  163. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
  164. package/packages/dd-trace/src/appsec/iast/index.js +1 -0
  165. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +102 -7
  166. package/packages/dd-trace/src/appsec/iast/path-line.js +7 -8
  167. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +16 -24
  168. package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +6 -6
  169. package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +2 -2
  170. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -3
  171. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +4 -28
  172. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -8
  173. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +3 -4
  174. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
  175. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +7 -8
  176. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
  177. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +7 -7
  178. package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -3
  179. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +10 -11
  180. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +1 -1
  181. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +1 -1
  182. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +7 -7
  183. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +23 -28
  184. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +3 -3
  185. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +4 -4
  186. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +6 -11
  187. package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +0 -1
  188. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +9 -11
  189. package/packages/dd-trace/src/appsec/index.js +5 -5
  190. package/packages/dd-trace/src/appsec/rasp/index.js +15 -15
  191. package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
  192. package/packages/dd-trace/src/appsec/reporter.js +232 -41
  193. package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
  194. package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
  195. package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -3
  196. package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
  197. package/packages/dd-trace/src/appsec/telemetry/index.js +31 -1
  198. package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -5
  199. package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -5
  200. package/packages/dd-trace/src/appsec/user_tracking.js +3 -5
  201. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +8 -4
  202. package/packages/dd-trace/src/azure_metadata.js +9 -9
  203. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +9 -8
  204. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +2 -2
  205. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +3 -2
  206. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +3 -3
  207. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +3 -2
  208. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +3 -2
  209. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +3 -2
  210. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +6 -4
  211. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -5
  212. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +7 -6
  213. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +0 -2
  214. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +3 -2
  215. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +5 -4
  216. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +12 -8
  217. package/packages/dd-trace/src/ci-visibility/telemetry.js +4 -0
  218. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +3 -2
  219. package/packages/dd-trace/src/config-helper.js +89 -0
  220. package/packages/dd-trace/src/config.js +159 -129
  221. package/packages/dd-trace/src/config_stable.js +10 -7
  222. package/packages/dd-trace/src/datastreams/encoding.js +9 -9
  223. package/packages/dd-trace/src/datastreams/fnv.js +2 -2
  224. package/packages/dd-trace/src/datastreams/pathway.js +4 -4
  225. package/packages/dd-trace/src/datastreams/processor.js +5 -7
  226. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +7 -7
  227. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +4 -6
  228. package/packages/dd-trace/src/datastreams/size.js +1 -1
  229. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +75 -69
  230. package/packages/dd-trace/src/debugger/devtools_client/condition.js +7 -10
  231. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
  232. package/packages/dd-trace/src/debugger/devtools_client/index.js +9 -2
  233. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
  234. package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -2
  235. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +1 -2
  236. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +1 -1
  237. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +11 -14
  238. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +4 -4
  239. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
  240. package/packages/dd-trace/src/debugger/devtools_client/state.js +10 -3
  241. package/packages/dd-trace/src/debugger/index.js +1 -0
  242. package/packages/dd-trace/src/dogstatsd.js +7 -6
  243. package/packages/dd-trace/src/encode/0.4.js +14 -11
  244. package/packages/dd-trace/src/encode/0.5.js +4 -6
  245. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
  246. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
  247. package/packages/dd-trace/src/encode/tags-processors.js +1 -1
  248. package/packages/dd-trace/src/exporter.js +7 -6
  249. package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
  250. package/packages/dd-trace/src/exporters/common/docker.js +4 -3
  251. package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
  252. package/packages/dd-trace/src/exporters/common/request.js +5 -2
  253. package/packages/dd-trace/src/exporters/common/util.js +4 -2
  254. package/packages/dd-trace/src/external-logger/src/index.js +5 -5
  255. package/packages/dd-trace/src/flare/file.js +1 -5
  256. package/packages/dd-trace/src/format.js +1 -1
  257. package/packages/dd-trace/src/git_properties.js +1 -1
  258. package/packages/dd-trace/src/id.js +15 -9
  259. package/packages/dd-trace/src/iitm.js +10 -22
  260. package/packages/dd-trace/src/index.js +4 -3
  261. package/packages/dd-trace/src/lambda/handler.js +7 -6
  262. package/packages/dd-trace/src/lambda/index.js +2 -1
  263. package/packages/dd-trace/src/lambda/runtime/patch.js +7 -6
  264. package/packages/dd-trace/src/lambda/runtime/ritm.js +4 -3
  265. package/packages/dd-trace/src/llmobs/constants/tags.js +1 -0
  266. package/packages/dd-trace/src/llmobs/index.js +21 -5
  267. package/packages/dd-trace/src/llmobs/noop.js +18 -20
  268. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +6 -6
  269. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +2 -6
  270. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -3
  271. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +11 -13
  272. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +6 -6
  273. package/packages/dd-trace/src/llmobs/plugins/openai.js +2 -3
  274. package/packages/dd-trace/src/llmobs/sdk.js +4 -3
  275. package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
  276. package/packages/dd-trace/src/llmobs/tagger.js +129 -102
  277. package/packages/dd-trace/src/llmobs/util.js +9 -9
  278. package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
  279. package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
  280. package/packages/dd-trace/src/log/index.js +9 -8
  281. package/packages/dd-trace/src/log/log.js +1 -1
  282. package/packages/dd-trace/src/log/writer.js +3 -4
  283. package/packages/dd-trace/src/msgpack/chunk.js +3 -3
  284. package/packages/dd-trace/src/msgpack/encoder.js +31 -31
  285. package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
  286. package/packages/dd-trace/src/noop/span.js +4 -6
  287. package/packages/dd-trace/src/noop/tracer.js +1 -2
  288. package/packages/dd-trace/src/opentelemetry/span_processor.js +2 -2
  289. package/packages/dd-trace/src/opentelemetry/tracer.js +7 -6
  290. package/packages/dd-trace/src/opentracing/propagation/log.js +10 -13
  291. package/packages/dd-trace/src/opentracing/propagation/text_map.js +40 -37
  292. package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
  293. package/packages/dd-trace/src/opentracing/span.js +16 -20
  294. package/packages/dd-trace/src/opentracing/tracer.js +9 -6
  295. package/packages/dd-trace/src/payload-tagging/config/index.js +17 -21
  296. package/packages/dd-trace/src/payload-tagging/index.js +1 -1
  297. package/packages/dd-trace/src/payload-tagging/tagging.js +6 -6
  298. package/packages/dd-trace/src/pkg.js +1 -1
  299. package/packages/dd-trace/src/plugin_manager.js +4 -3
  300. package/packages/dd-trace/src/plugins/ci_plugin.js +87 -11
  301. package/packages/dd-trace/src/plugins/consumer.js +2 -2
  302. package/packages/dd-trace/src/plugins/inbound.js +5 -1
  303. package/packages/dd-trace/src/plugins/index.js +0 -1
  304. package/packages/dd-trace/src/plugins/outbound.js +4 -5
  305. package/packages/dd-trace/src/plugins/plugin.js +1 -1
  306. package/packages/dd-trace/src/plugins/producer.js +2 -2
  307. package/packages/dd-trace/src/plugins/storage.js +2 -2
  308. package/packages/dd-trace/src/plugins/util/ci.js +28 -20
  309. package/packages/dd-trace/src/plugins/util/git.js +166 -12
  310. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +1 -1
  311. package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
  312. package/packages/dd-trace/src/plugins/util/llm.js +27 -10
  313. package/packages/dd-trace/src/plugins/util/stacktrace.js +9 -2
  314. package/packages/dd-trace/src/plugins/util/test.js +315 -51
  315. package/packages/dd-trace/src/plugins/util/url.js +1 -1
  316. package/packages/dd-trace/src/plugins/util/urlfilter.js +13 -17
  317. package/packages/dd-trace/src/plugins/util/user-provided-git.js +14 -4
  318. package/packages/dd-trace/src/plugins/util/web.js +8 -8
  319. package/packages/dd-trace/src/priority_sampler.js +64 -53
  320. package/packages/dd-trace/src/profiling/config.js +51 -35
  321. package/packages/dd-trace/src/profiling/exporter_cli.js +20 -20
  322. package/packages/dd-trace/src/profiling/exporters/agent.js +1 -1
  323. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +7 -6
  324. package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
  325. package/packages/dd-trace/src/profiling/index.js +2 -1
  326. package/packages/dd-trace/src/profiling/profiler.js +44 -6
  327. package/packages/dd-trace/src/profiling/profilers/events.js +14 -17
  328. package/packages/dd-trace/src/profiling/profilers/shared.js +6 -1
  329. package/packages/dd-trace/src/profiling/profilers/space.js +3 -3
  330. package/packages/dd-trace/src/profiling/profilers/wall.js +6 -7
  331. package/packages/dd-trace/src/profiling/ssi-heuristics.js +3 -5
  332. package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +3 -1
  333. package/packages/dd-trace/src/profiling/tagger.js +21 -13
  334. package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
  335. package/packages/dd-trace/src/proxy.js +9 -10
  336. package/packages/dd-trace/src/random_sampler.js +40 -0
  337. package/packages/dd-trace/src/rate_limiter.js +4 -4
  338. package/packages/dd-trace/src/remote_config/index.js +3 -7
  339. package/packages/dd-trace/src/remote_config/manager.js +25 -13
  340. package/packages/dd-trace/src/require-package-json.js +1 -1
  341. package/packages/dd-trace/src/ritm.js +8 -8
  342. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +5 -4
  343. package/packages/dd-trace/src/sampler.js +41 -4
  344. package/packages/dd-trace/src/sampling_rule.js +12 -3
  345. package/packages/dd-trace/src/scope.js +1 -1
  346. package/packages/dd-trace/src/serverless.js +11 -4
  347. package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
  348. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
  349. package/packages/dd-trace/src/span_processor.js +5 -4
  350. package/packages/dd-trace/src/span_sampler.js +4 -1
  351. package/packages/dd-trace/src/standalone/tracesource.js +2 -3
  352. package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +1 -2
  353. package/packages/dd-trace/src/startup-log.js +6 -18
  354. package/packages/dd-trace/src/supported-configurations.json +439 -0
  355. package/packages/dd-trace/src/telemetry/dependencies.js +64 -59
  356. package/packages/dd-trace/src/telemetry/logs/log-collector.js +9 -10
  357. package/packages/dd-trace/src/telemetry/metrics.js +10 -5
  358. package/packages/dd-trace/src/telemetry/send-data.js +8 -7
  359. package/packages/dd-trace/src/telemetry/telemetry.js +31 -45
  360. package/packages/dd-trace/src/tracer.js +3 -7
  361. package/packages/dd-trace/src/util.js +1 -6
  362. package/version.js +1 -0
  363. package/packages/datadog-instrumentations/src/paperplane.js +0 -77
  364. package/packages/datadog-plugin-paperplane/src/index.js +0 -25
  365. package/packages/datadog-plugin-paperplane/src/logger.js +0 -11
  366. package/packages/datadog-plugin-paperplane/src/server.js +0 -24
  367. package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +0 -122
  368. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/header-sensitive-analyzer.js +0 -20
@@ -75,12 +75,12 @@ breakpointSetChannel.on('message', async (probe) => {
75
75
  async function removeBreakpoint (probeId) {
76
76
  if (!sessionStarted) {
77
77
  // We should not get in this state, but abort if we do, so the code doesn't fail unexpected
78
- throw Error(`Cannot remove probe ${probeId}: Debugger not started`)
78
+ throw new Error(`Cannot remove probe ${probeId}: Debugger not started`)
79
79
  }
80
80
 
81
81
  const breakpointId = probeIdToBreakpointId.get(probeId)
82
82
  if (!breakpointId) {
83
- throw Error(`Unknown probe id: ${probeId}`)
83
+ throw new Error(`Unknown probe id: ${probeId}`)
84
84
  }
85
85
  await session.post('Debugger.removeBreakpoint', { breakpointId })
86
86
  probeIdToBreakpointId.delete(probeId)
@@ -1,6 +1,7 @@
1
1
  const request = require('../../exporters/common/request')
2
2
  const id = require('../../id')
3
3
  const log = require('../../log')
4
+ const { getEnvironmentVariable } = require('../../config-helper')
4
5
 
5
6
  const {
6
7
  incrementCountMetric,
@@ -36,7 +37,7 @@ function getKnownTests ({
36
37
  headers: {
37
38
  'Content-Type': 'application/json'
38
39
  },
39
- timeout: 20000,
40
+ timeout: 20_000,
40
41
  url
41
42
  }
42
43
 
@@ -48,7 +49,7 @@ function getKnownTests ({
48
49
  options.path = `${evpProxyPrefix}/api/v2/ci/libraries/tests`
49
50
  options.headers['X-Datadog-EVP-Subdomain'] = 'api'
50
51
  } else {
51
- const apiKey = process.env.DATADOG_API_KEY || process.env.DD_API_KEY
52
+ const apiKey = getEnvironmentVariable('DD_API_KEY')
52
53
  if (!apiKey) {
53
54
  return done(new Error('Known tests were not fetched because Datadog API key is not defined.'))
54
55
  }
@@ -16,17 +16,17 @@ function getLatestEvpProxyVersion (err, agentInfo) {
16
16
  return agentInfo.endpoints.reduce((acc, endpoint) => {
17
17
  if (endpoint.includes(AGENT_EVP_PROXY_PATH_PREFIX)) {
18
18
  const version = Number(endpoint.replace(AGENT_EVP_PROXY_PATH_REGEX, '$1'))
19
- if (isNaN(version)) {
19
+ if (Number.isNaN(version)) {
20
20
  return acc
21
21
  }
22
- return version > acc ? version : acc
22
+ return Math.max(version, acc)
23
23
  }
24
24
  return acc
25
25
  }, 0)
26
26
  }
27
27
 
28
28
  function getCanForwardDebuggerLogs (err, agentInfo) {
29
- return !err && agentInfo.endpoints.some(endpoint => endpoint === AGENT_DEBUGGER_INPUT)
29
+ return !err && agentInfo.endpoints.includes(AGENT_DEBUGGER_INPUT)
30
30
  }
31
31
 
32
32
  class AgentProxyCiVisibilityExporter extends CiVisibilityExporter {
@@ -2,6 +2,7 @@
2
2
  const request = require('../../../exporters/common/request')
3
3
  const log = require('../../../log')
4
4
  const { safeJSONStringify } = require('../../../exporters/common/util')
5
+ const { getEnvironmentVariable } = require('../../../config-helper')
5
6
 
6
7
  const { CoverageCIVisibilityEncoder } = require('../../../encode/coverage-ci-visibility')
7
8
  const BaseWriter = require('../../../exporters/common/writer')
@@ -28,10 +29,10 @@ class Writer extends BaseWriter {
28
29
  path: '/api/v2/citestcov',
29
30
  method: 'POST',
30
31
  headers: {
31
- 'dd-api-key': process.env.DATADOG_API_KEY || process.env.DD_API_KEY,
32
+ 'dd-api-key': getEnvironmentVariable('DD_API_KEY'),
32
33
  ...form.getHeaders()
33
34
  },
34
- timeout: 15000,
35
+ timeout: 15_000,
35
36
  url: this._url
36
37
  }
37
38
 
@@ -3,6 +3,7 @@ const request = require('../../../exporters/common/request')
3
3
  const log = require('../../../log')
4
4
  const { safeJSONStringify } = require('../../../exporters/common/util')
5
5
  const { JSONEncoder } = require('../../encode/json-encoder')
6
+ const { getEnvironmentVariable } = require('../../../config-helper')
6
7
 
7
8
  const BaseWriter = require('../../../exporters/common/writer')
8
9
 
@@ -23,11 +24,11 @@ class DynamicInstrumentationLogsWriter extends BaseWriter {
23
24
  path: '/api/v2/logs',
24
25
  method: 'POST',
25
26
  headers: {
26
- 'dd-api-key': process.env.DATADOG_API_KEY || process.env.DD_API_KEY,
27
+ 'dd-api-key': getEnvironmentVariable('DD_API_KEY'),
27
28
  'Content-Type': 'application/json'
28
29
  },
29
30
  // TODO: what's a good value for timeout for the logs intake?
30
- timeout: this.timeout || 15000,
31
+ timeout: this.timeout || 15_000,
31
32
  url: this._url
32
33
  }
33
34
 
@@ -2,6 +2,7 @@
2
2
  const request = require('../../../exporters/common/request')
3
3
  const { safeJSONStringify } = require('../../../exporters/common/util')
4
4
  const log = require('../../../log')
5
+ const { getEnvironmentVariable } = require('../../../config-helper')
5
6
 
6
7
  const { AgentlessCiVisibilityEncoder } = require('../../../encode/agentless-ci-visibility')
7
8
  const BaseWriter = require('../../../exporters/common/writer')
@@ -29,10 +30,10 @@ class Writer extends BaseWriter {
29
30
  path: '/api/v2/citestcycle',
30
31
  method: 'POST',
31
32
  headers: {
32
- 'dd-api-key': process.env.DATADOG_API_KEY || process.env.DD_API_KEY,
33
+ 'dd-api-key': getEnvironmentVariable('DD_API_KEY'),
33
34
  'Content-Type': 'application/msgpack'
34
35
  },
35
- timeout: 15000,
36
+ timeout: 15_000,
36
37
  url: this._url
37
38
  }
38
39
 
@@ -31,7 +31,7 @@ function getIsTestSessionTrace (trace) {
31
31
  )
32
32
  }
33
33
 
34
- const GIT_UPLOAD_TIMEOUT = 60000 // 60 seconds
34
+ const GIT_UPLOAD_TIMEOUT = 60_000 // 60 seconds
35
35
  const CAN_USE_CI_VIS_PROTOCOL_TIMEOUT = GIT_UPLOAD_TIMEOUT
36
36
 
37
37
  class CiVisibilityExporter extends AgentInfoExporter {
@@ -216,7 +216,8 @@ class CiVisibilityExporter extends AgentInfoExporter {
216
216
  isDiEnabled,
217
217
  isKnownTestsEnabled,
218
218
  isTestManagementEnabled,
219
- testManagementAttemptToFixRetries
219
+ testManagementAttemptToFixRetries,
220
+ isImpactedTestsEnabled
220
221
  } = remoteConfiguration
221
222
  return {
222
223
  isCodeCoverageEnabled,
@@ -232,7 +233,8 @@ class CiVisibilityExporter extends AgentInfoExporter {
232
233
  isKnownTestsEnabled,
233
234
  isTestManagementEnabled: isTestManagementEnabled && this._config.isTestManagementEnabled,
234
235
  testManagementAttemptToFixRetries:
235
- testManagementAttemptToFixRetries ?? this._config.testManagementAttemptToFixRetries
236
+ testManagementAttemptToFixRetries ?? this._config.testManagementAttemptToFixRetries,
237
+ isImpactedTestsEnabled: isImpactedTestsEnabled && this._config.isImpactedTestsEnabled
236
238
  }
237
239
  }
238
240
 
@@ -336,7 +338,7 @@ class CiVisibilityExporter extends AgentInfoExporter {
336
338
  this._writer,
337
339
  this._coverageWriter,
338
340
  this._logsWriter
339
- ].filter(writer => writer)
341
+ ].filter(Boolean)
340
342
 
341
343
  let remaining = writers.length
342
344
 
@@ -3,6 +3,7 @@ const path = require('path')
3
3
 
4
4
  const FormData = require('../../../exporters/common/form-data')
5
5
  const request = require('../../../exporters/common/request')
6
+ const { getEnvironmentVariable } = require('../../../config-helper')
6
7
 
7
8
  const log = require('../../../log')
8
9
  const { isFalse } = require('../../../util')
@@ -38,7 +39,7 @@ function validateCommits (commits) {
38
39
  throw new Error('Invalid commit type response')
39
40
  }
40
41
  if (isValidSha1(commitSha) || isValidSha256(commitSha)) {
41
- return commitSha.replace(/[^0-9a-f]+/g, '')
42
+ return commitSha.replaceAll(/[^0-9a-f]+/g, '')
42
43
  }
43
44
  throw new Error('Invalid commit format')
44
45
  })
@@ -48,9 +49,9 @@ function getCommonRequestOptions (url) {
48
49
  return {
49
50
  method: 'POST',
50
51
  headers: {
51
- 'dd-api-key': process.env.DATADOG_API_KEY || process.env.DD_API_KEY
52
+ 'dd-api-key': getEnvironmentVariable('DD_API_KEY')
52
53
  },
53
- timeout: 15000,
54
+ timeout: 15_000,
54
55
  url
55
56
  }
56
57
  }
@@ -148,7 +149,7 @@ function uploadPackFile ({ url, isEvpProxy, evpProxyPrefix, packFileToUpload, re
148
149
  filename,
149
150
  contentType: 'application/octet-stream'
150
151
  })
151
- } catch (e) {
152
+ } catch {
152
153
  callback(new Error(`Could not read "${packFileToUpload}"`))
153
154
  return
154
155
  }
@@ -285,7 +286,7 @@ function sendGitMetadata (url, { isEvpProxy, evpProxyPrefix }, configRepositoryU
285
286
  }
286
287
  // Otherwise we unshallow and get commits to upload again
287
288
  log.debug('It is shallow clone, unshallowing...')
288
- if (!isFalse(process.env.DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED)) {
289
+ if (!isFalse(getEnvironmentVariable('DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED'))) {
289
290
  unshallowRepository()
290
291
  }
291
292
 
@@ -9,18 +9,19 @@ const {
9
9
  JEST_WORKER_LOGS_PAYLOAD_CODE,
10
10
  PLAYWRIGHT_WORKER_TRACE_PAYLOAD_CODE
11
11
  } = require('../../../plugins/util/test')
12
+ const { getEnvironmentVariable } = require('../../../config-helper')
12
13
 
13
14
  function getInterprocessTraceCode () {
14
- if (process.env.JEST_WORKER_ID) {
15
+ if (getEnvironmentVariable('JEST_WORKER_ID')) {
15
16
  return JEST_WORKER_TRACE_PAYLOAD_CODE
16
17
  }
17
- if (process.env.CUCUMBER_WORKER_ID) {
18
+ if (getEnvironmentVariable('CUCUMBER_WORKER_ID')) {
18
19
  return CUCUMBER_WORKER_TRACE_PAYLOAD_CODE
19
20
  }
20
- if (process.env.MOCHA_WORKER_ID) {
21
+ if (getEnvironmentVariable('MOCHA_WORKER_ID')) {
21
22
  return MOCHA_WORKER_TRACE_PAYLOAD_CODE
22
23
  }
23
- if (process.env.DD_PLAYWRIGHT_WORKER) {
24
+ if (getEnvironmentVariable('DD_PLAYWRIGHT_WORKER')) {
24
25
  return PLAYWRIGHT_WORKER_TRACE_PAYLOAD_CODE
25
26
  }
26
27
  return null
@@ -28,14 +29,14 @@ function getInterprocessTraceCode () {
28
29
 
29
30
  // TODO: make it available with cucumber
30
31
  function getInterprocessCoverageCode () {
31
- if (process.env.JEST_WORKER_ID) {
32
+ if (getEnvironmentVariable('JEST_WORKER_ID')) {
32
33
  return JEST_WORKER_COVERAGE_PAYLOAD_CODE
33
34
  }
34
35
  return null
35
36
  }
36
37
 
37
38
  function getInterprocessLogsCode () {
38
- if (process.env.JEST_WORKER_ID) {
39
+ if (getEnvironmentVariable('JEST_WORKER_ID')) {
39
40
  return JEST_WORKER_LOGS_PAYLOAD_CODE
40
41
  }
41
42
  return null
@@ -25,7 +25,6 @@ class Writer {
25
25
  _sendPayload (data, onDone = () => {}) {
26
26
  // ## Jest
27
27
  // Only available when `child_process` is used for the jest worker.
28
- // eslint-disable-next-line
29
28
  // https://github.com/facebook/jest/blob/bb39cb2c617a3334bf18daeca66bd87b7ccab28b/packages/jest-worker/README.md#experimental-worker
30
29
  // If worker_threads is used, this will not work
31
30
  // TODO: make it compatible with worker_threads
@@ -33,7 +32,6 @@ class Writer {
33
32
  // ## Cucumber
34
33
  // This reports to the test's main process the same way test data is reported by Cucumber
35
34
  // See cucumber code:
36
- // eslint-disable-next-line
37
35
  // https://github.com/cucumber/cucumber-js/blob/5ce371870b677fe3d1a14915dc535688946f734c/src/runtime/parallel/run_worker.ts#L13
38
36
  if (process.send) { // it only works if process.send is available
39
37
  process.send([this._interprocessCode, data], () => {
@@ -1,5 +1,6 @@
1
1
  const request = require('../../exporters/common/request')
2
2
  const log = require('../../log')
3
+ const { getEnvironmentVariable } = require('../../config-helper')
3
4
  const {
4
5
  incrementCountMetric,
5
6
  distributionMetric,
@@ -34,7 +35,7 @@ function getSkippableSuites ({
34
35
  headers: {
35
36
  'Content-Type': 'application/json'
36
37
  },
37
- timeout: 20000,
38
+ timeout: 20_000,
38
39
  url
39
40
  }
40
41
 
@@ -46,7 +47,7 @@ function getSkippableSuites ({
46
47
  options.path = `${evpProxyPrefix}/api/v2/ci/tests/skippable`
47
48
  options.headers['X-Datadog-EVP-Subdomain'] = 'api'
48
49
  } else {
49
- const apiKey = process.env.DATADOG_API_KEY || process.env.DD_API_KEY
50
+ const apiKey = getEnvironmentVariable('DD_API_KEY')
50
51
  if (!apiKey) {
51
52
  return done(new Error('Skippable suites were not fetched because Datadog API key is not defined.'))
52
53
  }
@@ -1,5 +1,6 @@
1
1
  const Plugin = require('../../plugins/plugin')
2
2
  const log = require('../../log')
3
+ const { getEnvironmentVariable } = require('../../config-helper')
3
4
 
4
5
  function getWinstonLogSubmissionParameters (config) {
5
6
  const { site, service } = config
@@ -9,16 +10,16 @@ function getWinstonLogSubmissionParameters (config) {
9
10
  path: `/api/v2/logs?ddsource=winston&service=${service}`,
10
11
  ssl: true,
11
12
  headers: {
12
- 'DD-API-KEY': process.env.DD_API_KEY
13
+ 'DD-API-KEY': getEnvironmentVariable('DD_API_KEY')
13
14
  }
14
15
  }
15
16
 
16
- if (!process.env.DD_AGENTLESS_LOG_SUBMISSION_URL) {
17
+ if (!getEnvironmentVariable('DD_AGENTLESS_LOG_SUBMISSION_URL')) {
17
18
  return defaultParameters
18
19
  }
19
20
 
20
21
  try {
21
- const url = new URL(process.env.DD_AGENTLESS_LOG_SUBMISSION_URL)
22
+ const url = new URL(getEnvironmentVariable('DD_AGENTLESS_LOG_SUBMISSION_URL'))
22
23
  return {
23
24
  host: url.hostname,
24
25
  port: url.port,
@@ -26,7 +27,7 @@ function getWinstonLogSubmissionParameters (config) {
26
27
  path: defaultParameters.path,
27
28
  headers: defaultParameters.headers
28
29
  }
29
- } catch (e) {
30
+ } catch {
30
31
  log.error('Could not parse DD_AGENTLESS_LOG_SUBMISSION_URL')
31
32
  return defaultParameters
32
33
  }
@@ -1,6 +1,7 @@
1
1
  const request = require('../../exporters/common/request')
2
2
  const id = require('../../id')
3
3
  const log = require('../../log')
4
+ const { getEnvironmentVariable } = require('../../config-helper')
4
5
  const {
5
6
  incrementCountMetric,
6
7
  distributionMetric,
@@ -28,7 +29,8 @@ function getLibraryConfiguration ({
28
29
  runtimeVersion,
29
30
  branch,
30
31
  testLevel = 'suite',
31
- custom
32
+ custom,
33
+ tag
32
34
  }, done) {
33
35
  const options = {
34
36
  path: '/api/v2/libraries/tests/services/setting',
@@ -37,14 +39,14 @@ function getLibraryConfiguration ({
37
39
  'Content-Type': 'application/json'
38
40
  },
39
41
  url,
40
- timeout: 20000
42
+ timeout: 20_000
41
43
  }
42
44
 
43
45
  if (isEvpProxy) {
44
46
  options.path = `${evpProxyPrefix}/api/v2/libraries/tests/services/setting`
45
47
  options.headers['X-Datadog-EVP-Subdomain'] = 'api'
46
48
  } else {
47
- const apiKey = process.env.DATADOG_API_KEY || process.env.DD_API_KEY
49
+ const apiKey = getEnvironmentVariable('DD_API_KEY')
48
50
  if (!apiKey) {
49
51
  return done(new Error('Request to settings endpoint was not done because Datadog API key is not defined.'))
50
52
  }
@@ -69,7 +71,7 @@ function getLibraryConfiguration ({
69
71
  env,
70
72
  repository_url: repositoryUrl,
71
73
  sha,
72
- branch
74
+ branch: branch || tag
73
75
  }
74
76
  }
75
77
  })
@@ -95,7 +97,8 @@ function getLibraryConfiguration ({
95
97
  flaky_test_retries_enabled: isFlakyTestRetriesEnabled,
96
98
  di_enabled: isDiEnabled,
97
99
  known_tests_enabled: isKnownTestsEnabled,
98
- test_management: testManagementConfig
100
+ test_management: testManagementConfig,
101
+ impacted_tests_enabled: isImpactedTestsEnabled
99
102
  }
100
103
  }
101
104
  } = JSON.parse(res)
@@ -115,16 +118,17 @@ function getLibraryConfiguration ({
115
118
  isKnownTestsEnabled,
116
119
  isTestManagementEnabled: (testManagementConfig?.enabled ?? false),
117
120
  testManagementAttemptToFixRetries:
118
- testManagementConfig?.attempt_to_fix_retries
121
+ testManagementConfig?.attempt_to_fix_retries,
122
+ isImpactedTestsEnabled
119
123
  }
120
124
 
121
125
  log.debug(() => `Remote settings: ${JSON.stringify(settings)}`)
122
126
 
123
- if (process.env.DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE) {
127
+ if (getEnvironmentVariable('DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE')) {
124
128
  settings.isCodeCoverageEnabled = true
125
129
  log.debug(() => 'Dangerously set code coverage to true')
126
130
  }
127
- if (process.env.DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING) {
131
+ if (getEnvironmentVariable('DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING')) {
128
132
  settings.isSuitesSkippingEnabled = true
129
133
  log.debug(() => 'Dangerously set test skipping to true')
130
134
  }
@@ -81,6 +81,8 @@ const TELEMETRY_GIT_REQUESTS_SETTINGS = 'git_requests.settings'
81
81
  const TELEMETRY_GIT_REQUESTS_SETTINGS_MS = 'git_requests.settings_ms'
82
82
  const TELEMETRY_GIT_REQUESTS_SETTINGS_ERRORS = 'git_requests.settings_errors'
83
83
  const TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE = 'git_requests.settings_response'
84
+ const TELEMETRY_GIT_SHA_MATCH = 'git.commit_sha_match'
85
+ const TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY = 'git.commit_sha_discrepancy'
84
86
  const TELEMETRY_ITR_SKIPPABLE_TESTS = 'itr_skippable_tests.request'
85
87
  const TELEMETRY_ITR_SKIPPABLE_TESTS_MS = 'itr_skippable_tests.request_ms'
86
88
  const TELEMETRY_ITR_SKIPPABLE_TESTS_ERRORS = 'itr_skippable_tests.request_errors'
@@ -144,6 +146,8 @@ module.exports = {
144
146
  TELEMETRY_GIT_REQUESTS_SETTINGS_MS,
145
147
  TELEMETRY_GIT_REQUESTS_SETTINGS_ERRORS,
146
148
  TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE,
149
+ TELEMETRY_GIT_SHA_MATCH,
150
+ TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY,
147
151
  TELEMETRY_ITR_SKIPPABLE_TESTS,
148
152
  TELEMETRY_ITR_SKIPPABLE_TESTS_MS,
149
153
  TELEMETRY_ITR_SKIPPABLE_TESTS_ERRORS,
@@ -1,5 +1,6 @@
1
1
  const request = require('../../exporters/common/request')
2
2
  const id = require('../../id')
3
+ const { getEnvironmentVariable } = require('../../config-helper')
3
4
 
4
5
  function getTestManagementTests ({
5
6
  url,
@@ -16,7 +17,7 @@ function getTestManagementTests ({
16
17
  headers: {
17
18
  'Content-Type': 'application/json'
18
19
  },
19
- timeout: 20000,
20
+ timeout: 20_000,
20
21
  url
21
22
  }
22
23
 
@@ -28,7 +29,7 @@ function getTestManagementTests ({
28
29
  options.path = `${evpProxyPrefix}/api/v2/test/libraries/test-management/tests`
29
30
  options.headers['X-Datadog-EVP-Subdomain'] = 'api'
30
31
  } else {
31
- const apiKey = process.env.DATADOG_API_KEY || process.env.DD_API_KEY
32
+ const apiKey = getEnvironmentVariable('DD_API_KEY')
32
33
  if (!apiKey) {
33
34
  return done(new Error('Test management tests were not fetched because Datadog API key is not defined.'))
34
35
  }
@@ -0,0 +1,89 @@
1
+ 'use strict'
2
+
3
+ /* eslint-disable eslint-rules/eslint-process-env */
4
+
5
+ const { deprecate } = require('util')
6
+ const { supportedConfigurations, aliases, deprecations } = require('./supported-configurations.json')
7
+
8
+ const aliasToCanonical = {}
9
+ for (const canonical of Object.keys(aliases)) {
10
+ for (const alias of aliases[canonical]) {
11
+ if (aliasToCanonical[alias]) {
12
+ throw new Error(`The alias ${alias} is already used for ${aliasToCanonical[alias]}.`)
13
+ }
14
+ aliasToCanonical[alias] = canonical
15
+ }
16
+ }
17
+
18
+ const deprecationMethods = {}
19
+ for (const deprecation of Object.keys(deprecations)) {
20
+ deprecationMethods[deprecation] = deprecate(
21
+ () => {},
22
+ `The environment variable ${deprecation} is deprecated.` +
23
+ (aliasToCanonical[deprecation]
24
+ ? ` Please use ${aliasToCanonical[deprecation]} instead.`
25
+ : ` ${deprecations[deprecation]}`),
26
+ `DATADOG_${deprecation}`
27
+ )
28
+ }
29
+
30
+ module.exports = {
31
+ /**
32
+ * Returns the environment variables that are supported by the tracer
33
+ * (including all non-Datadog/OTEL specific environment variables)
34
+ *
35
+ * @returns {Partial<process.env>} The environment variables
36
+ */
37
+ getEnvironmentVariables () {
38
+ const configs = {}
39
+ for (const [key, value] of Object.entries(process.env)) {
40
+ if (key.startsWith('DD_') || key.startsWith('OTEL_') || aliasToCanonical[key]) {
41
+ if (supportedConfigurations[key]) {
42
+ configs[key] = value
43
+ } else if (aliasToCanonical[key] && configs[aliasToCanonical[key]] === undefined) {
44
+ // The alias should only be used if the actual configuration is not set
45
+ // In case that more than a single alias exist, use the one defined first in our own order
46
+ for (const alias of aliases[aliasToCanonical[key]]) {
47
+ if (process.env[alias] !== undefined) {
48
+ configs[aliasToCanonical[key]] = value
49
+ break
50
+ }
51
+ }
52
+ // TODO(BridgeAR) Implement logging. It would have to use a timeout to
53
+ // lazily log the message after all loading being done otherwise.
54
+ // debug(
55
+ // `Missing configuration ${env} in supported-configurations file. The environment variable is ignored.`
56
+ // )
57
+ }
58
+ deprecationMethods[key]?.()
59
+ } else {
60
+ configs[key] = value
61
+ }
62
+ }
63
+ return configs
64
+ },
65
+
66
+ /**
67
+ * Returns the environment variable, if it's supported or a non Datadog
68
+ * configuration. Otherwise, it throws an error.
69
+ *
70
+ * @param {string} name Environment variable name
71
+ * @returns {string|undefined}
72
+ * @throws {Error} if the configuration is not supported
73
+ */
74
+ getEnvironmentVariable (name) {
75
+ if ((name.startsWith('DD_') || name.startsWith('OTEL_') || aliasToCanonical[name]) &&
76
+ !supportedConfigurations[name]) {
77
+ throw new Error(`Missing ${name} env/configuration in "supported-configurations.json" file.`)
78
+ }
79
+ const config = process.env[name]
80
+ if (config === undefined && aliases[name]) {
81
+ for (const alias of aliases[name]) {
82
+ if (process.env[alias] !== undefined) {
83
+ return process.env[alias]
84
+ }
85
+ }
86
+ }
87
+ return config
88
+ }
89
+ }