dd-trace 5.84.0 → 5.85.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 (625) hide show
  1. package/ci/cypress/polyfills.js +1 -1
  2. package/ci/init.js +5 -5
  3. package/ext/exporters.js +1 -1
  4. package/ext/formats.js +1 -1
  5. package/ext/index.js +1 -1
  6. package/ext/kinds.js +1 -1
  7. package/ext/priority.js +1 -1
  8. package/ext/scopes.js +1 -1
  9. package/ext/tags.js +1 -1
  10. package/ext/types.js +1 -1
  11. package/index.d.ts +76 -23
  12. package/initialize.mjs +47 -31
  13. package/loader-hook.mjs +35 -22
  14. package/package.json +34 -31
  15. package/packages/datadog-code-origin/index.js +12 -10
  16. package/packages/datadog-core/src/utils/src/pick.js +2 -2
  17. package/packages/datadog-esbuild/index.js +75 -79
  18. package/packages/datadog-esbuild/src/log.js +32 -0
  19. package/packages/datadog-esbuild/src/utils.js +12 -8
  20. package/packages/datadog-instrumentations/src/aerospike.js +3 -3
  21. package/packages/datadog-instrumentations/src/ai.js +5 -5
  22. package/packages/datadog-instrumentations/src/amqp10.js +1 -1
  23. package/packages/datadog-instrumentations/src/amqplib.js +1 -1
  24. package/packages/datadog-instrumentations/src/anthropic.js +3 -3
  25. package/packages/datadog-instrumentations/src/apollo-server.js +4 -4
  26. package/packages/datadog-instrumentations/src/apollo.js +2 -2
  27. package/packages/datadog-instrumentations/src/avsc.js +1 -1
  28. package/packages/datadog-instrumentations/src/aws-sdk.js +4 -4
  29. package/packages/datadog-instrumentations/src/azure-event-hubs.js +2 -2
  30. package/packages/datadog-instrumentations/src/azure-functions.js +1 -1
  31. package/packages/datadog-instrumentations/src/azure-service-bus.js +1 -1
  32. package/packages/datadog-instrumentations/src/body-parser.js +2 -2
  33. package/packages/datadog-instrumentations/src/bunyan.js +1 -1
  34. package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
  35. package/packages/datadog-instrumentations/src/child_process.js +7 -7
  36. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +17 -16
  37. package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
  38. package/packages/datadog-instrumentations/src/couchbase.js +8 -6
  39. package/packages/datadog-instrumentations/src/crypto.js +1 -1
  40. package/packages/datadog-instrumentations/src/cucumber.js +19 -19
  41. package/packages/datadog-instrumentations/src/cypress.js +1 -1
  42. package/packages/datadog-instrumentations/src/dns.js +2 -2
  43. package/packages/datadog-instrumentations/src/elasticsearch.js +2 -2
  44. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +2 -2
  45. package/packages/datadog-instrumentations/src/express-session.js +1 -1
  46. package/packages/datadog-instrumentations/src/express.js +4 -4
  47. package/packages/datadog-instrumentations/src/fastify.js +1 -1
  48. package/packages/datadog-instrumentations/src/fetch.js +2 -2
  49. package/packages/datadog-instrumentations/src/fs.js +7 -7
  50. package/packages/datadog-instrumentations/src/generic-pool.js +2 -2
  51. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +8 -8
  52. package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +4 -4
  53. package/packages/datadog-instrumentations/src/google-genai.js +1 -1
  54. package/packages/datadog-instrumentations/src/graphql.js +10 -10
  55. package/packages/datadog-instrumentations/src/grpc/client.js +9 -13
  56. package/packages/datadog-instrumentations/src/grpc/types.js +1 -1
  57. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
  58. package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +1 -1
  59. package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +2 -2
  60. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -1
  61. package/packages/datadog-instrumentations/src/helpers/register.js +7 -7
  62. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +1 -1
  63. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/langchain.js +55 -55
  64. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +1 -1
  65. package/packages/datadog-instrumentations/src/helpers/router-helper.js +7 -7
  66. package/packages/datadog-instrumentations/src/helpers/shared-utils.js +1 -1
  67. package/packages/datadog-instrumentations/src/hono.js +6 -6
  68. package/packages/datadog-instrumentations/src/http/client.js +1 -1
  69. package/packages/datadog-instrumentations/src/http/server.js +4 -4
  70. package/packages/datadog-instrumentations/src/http2/server.js +1 -1
  71. package/packages/datadog-instrumentations/src/ioredis.js +1 -1
  72. package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
  73. package/packages/datadog-instrumentations/src/jest.js +162 -57
  74. package/packages/datadog-instrumentations/src/kafkajs.js +9 -8
  75. package/packages/datadog-instrumentations/src/knex.js +2 -2
  76. package/packages/datadog-instrumentations/src/koa.js +3 -1
  77. package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
  78. package/packages/datadog-instrumentations/src/light-my-request.js +1 -1
  79. package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
  80. package/packages/datadog-instrumentations/src/mariadb.js +1 -1
  81. package/packages/datadog-instrumentations/src/memcached.js +1 -1
  82. package/packages/datadog-instrumentations/src/mocha/common.js +3 -3
  83. package/packages/datadog-instrumentations/src/mocha/main.js +24 -24
  84. package/packages/datadog-instrumentations/src/mocha/utils.js +15 -11
  85. package/packages/datadog-instrumentations/src/mocha/worker.js +4 -4
  86. package/packages/datadog-instrumentations/src/moleculer/server.js +1 -1
  87. package/packages/datadog-instrumentations/src/mongodb-core.js +3 -3
  88. package/packages/datadog-instrumentations/src/mongodb.js +7 -7
  89. package/packages/datadog-instrumentations/src/mongoose.js +10 -10
  90. package/packages/datadog-instrumentations/src/mquery.js +6 -6
  91. package/packages/datadog-instrumentations/src/multer.js +1 -1
  92. package/packages/datadog-instrumentations/src/mysql.js +1 -1
  93. package/packages/datadog-instrumentations/src/net.js +6 -6
  94. package/packages/datadog-instrumentations/src/next.js +6 -6
  95. package/packages/datadog-instrumentations/src/nyc.js +34 -2
  96. package/packages/datadog-instrumentations/src/openai.js +24 -24
  97. package/packages/datadog-instrumentations/src/oracledb.js +2 -2
  98. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +1 -1
  99. package/packages/datadog-instrumentations/src/passport-http.js +1 -1
  100. package/packages/datadog-instrumentations/src/passport-local.js +1 -1
  101. package/packages/datadog-instrumentations/src/passport-utils.js +1 -1
  102. package/packages/datadog-instrumentations/src/passport.js +1 -1
  103. package/packages/datadog-instrumentations/src/pg.js +3 -3
  104. package/packages/datadog-instrumentations/src/pino.js +2 -2
  105. package/packages/datadog-instrumentations/src/playwright.js +59 -59
  106. package/packages/datadog-instrumentations/src/prisma.js +24 -78
  107. package/packages/datadog-instrumentations/src/promise-js.js +1 -1
  108. package/packages/datadog-instrumentations/src/promise.js +1 -1
  109. package/packages/datadog-instrumentations/src/protobufjs.js +6 -6
  110. package/packages/datadog-instrumentations/src/q.js +2 -2
  111. package/packages/datadog-instrumentations/src/redis.js +2 -2
  112. package/packages/datadog-instrumentations/src/rhea.js +5 -5
  113. package/packages/datadog-instrumentations/src/router.js +8 -8
  114. package/packages/datadog-instrumentations/src/selenium.js +3 -3
  115. package/packages/datadog-instrumentations/src/sequelize.js +1 -1
  116. package/packages/datadog-instrumentations/src/sharedb.js +2 -2
  117. package/packages/datadog-instrumentations/src/tedious.js +1 -1
  118. package/packages/datadog-instrumentations/src/undici.js +2 -2
  119. package/packages/datadog-instrumentations/src/url.js +5 -5
  120. package/packages/datadog-instrumentations/src/vitest.js +56 -45
  121. package/packages/datadog-instrumentations/src/when.js +1 -1
  122. package/packages/datadog-instrumentations/src/winston.js +1 -1
  123. package/packages/datadog-instrumentations/src/ws.js +128 -41
  124. package/packages/datadog-plugin-aerospike/src/index.js +4 -4
  125. package/packages/datadog-plugin-ai/src/index.js +1 -1
  126. package/packages/datadog-plugin-ai/src/tracing.js +2 -2
  127. package/packages/datadog-plugin-ai/src/utils.js +1 -1
  128. package/packages/datadog-plugin-amqp10/src/consumer.js +2 -2
  129. package/packages/datadog-plugin-amqp10/src/index.js +1 -1
  130. package/packages/datadog-plugin-amqp10/src/producer.js +2 -2
  131. package/packages/datadog-plugin-amqplib/src/client.js +2 -2
  132. package/packages/datadog-plugin-amqplib/src/consumer.js +2 -2
  133. package/packages/datadog-plugin-amqplib/src/index.js +1 -1
  134. package/packages/datadog-plugin-amqplib/src/producer.js +2 -2
  135. package/packages/datadog-plugin-amqplib/src/util.js +1 -1
  136. package/packages/datadog-plugin-anthropic/src/index.js +1 -1
  137. package/packages/datadog-plugin-anthropic/src/tracing.js +2 -2
  138. package/packages/datadog-plugin-apollo/src/gateway/fetch.js +1 -1
  139. package/packages/datadog-plugin-apollo/src/gateway/index.js +1 -1
  140. package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -5
  141. package/packages/datadog-plugin-apollo/src/index.js +1 -1
  142. package/packages/datadog-plugin-avsc/src/schema_iterator.js +3 -3
  143. package/packages/datadog-plugin-aws-sdk/src/base.js +11 -10
  144. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
  145. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +1 -1
  146. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +24 -24
  147. package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +1 -1
  148. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +1 -1
  149. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +6 -6
  150. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +3 -3
  151. package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +1 -1
  152. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +1 -1
  153. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +5 -5
  154. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +12 -12
  155. package/packages/datadog-plugin-aws-sdk/src/util.js +1 -1
  156. package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
  157. package/packages/datadog-plugin-azure-event-hubs/src/producer.js +3 -3
  158. package/packages/datadog-plugin-azure-functions/src/index.js +11 -10
  159. package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
  160. package/packages/datadog-plugin-azure-service-bus/src/producer.js +3 -3
  161. package/packages/datadog-plugin-bullmq/src/consumer.js +2 -2
  162. package/packages/datadog-plugin-bullmq/src/index.js +1 -1
  163. package/packages/datadog-plugin-bullmq/src/producer.js +11 -11
  164. package/packages/datadog-plugin-cassandra-driver/src/index.js +2 -2
  165. package/packages/datadog-plugin-child_process/src/index.js +2 -2
  166. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +5 -5
  167. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
  168. package/packages/datadog-plugin-couchbase/src/index.js +3 -3
  169. package/packages/datadog-plugin-cucumber/src/index.js +14 -14
  170. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +68 -55
  171. package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
  172. package/packages/datadog-plugin-cypress/src/support.js +56 -9
  173. package/packages/datadog-plugin-dd-trace-api/src/index.js +1 -1
  174. package/packages/datadog-plugin-dns/src/index.js +1 -1
  175. package/packages/datadog-plugin-dns/src/lookup.js +2 -2
  176. package/packages/datadog-plugin-dns/src/lookup_service.js +3 -3
  177. package/packages/datadog-plugin-dns/src/resolve.js +2 -2
  178. package/packages/datadog-plugin-dns/src/reverse.js +2 -2
  179. package/packages/datadog-plugin-elasticsearch/src/index.js +2 -2
  180. package/packages/datadog-plugin-express/src/index.js +1 -1
  181. package/packages/datadog-plugin-fastify/src/index.js +1 -1
  182. package/packages/datadog-plugin-fs/src/index.js +2 -2
  183. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +2 -2
  184. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +8 -6
  185. package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -1
  186. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +11 -10
  187. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +6 -6
  188. package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
  189. package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +2 -2
  190. package/packages/datadog-plugin-google-cloud-vertexai/src/utils.js +1 -1
  191. package/packages/datadog-plugin-google-genai/src/index.js +1 -1
  192. package/packages/datadog-plugin-google-genai/src/tracing.js +2 -2
  193. package/packages/datadog-plugin-graphql/src/execute.js +2 -2
  194. package/packages/datadog-plugin-graphql/src/index.js +2 -2
  195. package/packages/datadog-plugin-graphql/src/parse.js +1 -1
  196. package/packages/datadog-plugin-graphql/src/resolve.js +6 -6
  197. package/packages/datadog-plugin-graphql/src/utils.js +1 -1
  198. package/packages/datadog-plugin-graphql/src/validate.js +2 -2
  199. package/packages/datadog-plugin-grpc/src/client.js +3 -3
  200. package/packages/datadog-plugin-grpc/src/index.js +1 -1
  201. package/packages/datadog-plugin-grpc/src/server.js +3 -3
  202. package/packages/datadog-plugin-grpc/src/util.js +2 -2
  203. package/packages/datadog-plugin-http/src/client.js +10 -10
  204. package/packages/datadog-plugin-http/src/index.js +1 -1
  205. package/packages/datadog-plugin-http2/src/client.js +6 -6
  206. package/packages/datadog-plugin-http2/src/index.js +1 -1
  207. package/packages/datadog-plugin-http2/src/server.js +1 -1
  208. package/packages/datadog-plugin-jest/src/index.js +39 -22
  209. package/packages/datadog-plugin-jest/src/util.js +1 -1
  210. package/packages/datadog-plugin-kafkajs/src/consumer.js +5 -5
  211. package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
  212. package/packages/datadog-plugin-kafkajs/src/producer.js +5 -5
  213. package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
  214. package/packages/datadog-plugin-langchain/src/tokens.js +2 -2
  215. package/packages/datadog-plugin-langchain/src/tracing.js +4 -4
  216. package/packages/datadog-plugin-memcached/src/index.js +2 -2
  217. package/packages/datadog-plugin-mocha/src/index.js +12 -12
  218. package/packages/datadog-plugin-moleculer/src/client.js +1 -1
  219. package/packages/datadog-plugin-moleculer/src/index.js +1 -1
  220. package/packages/datadog-plugin-moleculer/src/server.js +2 -2
  221. package/packages/datadog-plugin-moleculer/src/util.js +1 -1
  222. package/packages/datadog-plugin-mongodb-core/src/index.js +5 -5
  223. package/packages/datadog-plugin-mysql/src/index.js +2 -2
  224. package/packages/datadog-plugin-net/src/ipc.js +2 -2
  225. package/packages/datadog-plugin-net/src/tcp.js +4 -4
  226. package/packages/datadog-plugin-next/src/index.js +4 -4
  227. package/packages/datadog-plugin-nyc/src/index.js +60 -0
  228. package/packages/datadog-plugin-openai/src/index.js +1 -1
  229. package/packages/datadog-plugin-openai/src/services.js +3 -3
  230. package/packages/datadog-plugin-openai/src/stream-helpers.js +1 -1
  231. package/packages/datadog-plugin-openai/src/tracing.js +10 -10
  232. package/packages/datadog-plugin-oracledb/src/connection-parser.js +1 -1
  233. package/packages/datadog-plugin-oracledb/src/index.js +1 -1
  234. package/packages/datadog-plugin-pg/src/index.js +2 -2
  235. package/packages/datadog-plugin-playwright/src/index.js +19 -19
  236. package/packages/datadog-plugin-prisma/src/datadog-tracing-helper.js +95 -0
  237. package/packages/datadog-plugin-prisma/src/index.js +129 -10
  238. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +3 -3
  239. package/packages/datadog-plugin-redis/src/index.js +2 -2
  240. package/packages/datadog-plugin-restify/src/index.js +1 -1
  241. package/packages/datadog-plugin-rhea/src/consumer.js +2 -2
  242. package/packages/datadog-plugin-rhea/src/index.js +1 -1
  243. package/packages/datadog-plugin-rhea/src/producer.js +2 -2
  244. package/packages/datadog-plugin-router/src/index.js +3 -3
  245. package/packages/datadog-plugin-selenium/src/index.js +2 -2
  246. package/packages/datadog-plugin-sharedb/src/index.js +2 -2
  247. package/packages/datadog-plugin-tedious/src/index.js +2 -2
  248. package/packages/datadog-plugin-undici/src/index.js +5 -5
  249. package/packages/datadog-plugin-vitest/src/index.js +39 -18
  250. package/packages/datadog-plugin-ws/src/close.js +10 -11
  251. package/packages/datadog-plugin-ws/src/index.js +1 -1
  252. package/packages/datadog-plugin-ws/src/producer.js +8 -9
  253. package/packages/datadog-plugin-ws/src/receiver.js +8 -9
  254. package/packages/datadog-plugin-ws/src/server.js +17 -12
  255. package/packages/datadog-plugin-ws/src/util.js +48 -16
  256. package/packages/datadog-shimmer/src/shimmer.js +3 -3
  257. package/packages/dd-trace/index.js +2 -2
  258. package/packages/dd-trace/src/agent/info.js +2 -2
  259. package/packages/dd-trace/src/agent/url.js +1 -1
  260. package/packages/dd-trace/src/aiguard/client.js +3 -3
  261. package/packages/dd-trace/src/aiguard/sdk.js +6 -6
  262. package/packages/dd-trace/src/aiguard/tags.js +1 -1
  263. package/packages/dd-trace/src/analytics_sampler.js +1 -1
  264. package/packages/dd-trace/src/appsec/activation.js +1 -1
  265. package/packages/dd-trace/src/appsec/addresses.js +1 -1
  266. package/packages/dd-trace/src/appsec/api_security_sampler.js +1 -1
  267. package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
  268. package/packages/dd-trace/src/appsec/blocking.js +5 -5
  269. package/packages/dd-trace/src/appsec/channels.js +1 -1
  270. package/packages/dd-trace/src/appsec/graphql.js +13 -13
  271. package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +1 -1
  272. package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
  273. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +6 -5
  274. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +2 -2
  275. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-rule-type.js +1 -1
  276. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +148 -148
  277. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +148 -148
  278. package/packages/dd-trace/src/appsec/iast/analyzers/index.js +1 -1
  279. package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +1 -1
  280. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +7 -8
  281. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +2 -2
  282. package/packages/dd-trace/src/appsec/iast/analyzers/set-cookies-header-interceptor.js +2 -2
  283. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +2 -2
  284. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +3 -3
  285. package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
  286. package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +2 -2
  287. package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +3 -3
  288. package/packages/dd-trace/src/appsec/iast/iast-context.js +6 -3
  289. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +17 -9
  290. package/packages/dd-trace/src/appsec/iast/index.js +2 -2
  291. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +9 -9
  292. package/packages/dd-trace/src/appsec/iast/path-line.js +6 -6
  293. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +11 -11
  294. package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +49 -17
  295. package/packages/dd-trace/src/appsec/iast/tags.js +1 -1
  296. package/packages/dd-trace/src/appsec/iast/taint-tracking/constants.js +1 -1
  297. package/packages/dd-trace/src/appsec/iast/taint-tracking/csi-methods.js +2 -2
  298. package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +1 -1
  299. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +2 -2
  300. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -6
  301. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +2 -2
  302. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +5 -5
  303. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +4 -4
  304. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +5 -5
  305. package/packages/dd-trace/src/appsec/iast/taint-tracking/secure-marks.js +6 -4
  306. package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +1 -1
  307. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +8 -8
  308. package/packages/dd-trace/src/appsec/iast/telemetry/iast-metric.js +4 -4
  309. package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +2 -2
  310. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +6 -6
  311. package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -2
  312. package/packages/dd-trace/src/appsec/iast/utils.js +3 -3
  313. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/constants.js +1 -1
  314. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +1 -1
  315. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/hardcoded-password-analyzer.js +1 -1
  316. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +6 -6
  317. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/tainted-range-based-sensitive-analyzer.js +1 -1
  318. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +8 -8
  319. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +1 -1
  320. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +12 -11
  321. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +5 -5
  322. package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +1 -1
  323. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +4 -4
  324. package/packages/dd-trace/src/appsec/index.js +20 -22
  325. package/packages/dd-trace/src/appsec/rasp/command_injection.js +3 -3
  326. package/packages/dd-trace/src/appsec/rasp/fs-plugin.js +4 -4
  327. package/packages/dd-trace/src/appsec/rasp/index.js +2 -2
  328. package/packages/dd-trace/src/appsec/rasp/lfi.js +5 -5
  329. package/packages/dd-trace/src/appsec/rasp/sql_injection.js +2 -2
  330. package/packages/dd-trace/src/appsec/rasp/ssrf.js +1 -1
  331. package/packages/dd-trace/src/appsec/rasp/utils.js +4 -4
  332. package/packages/dd-trace/src/appsec/rc-products.js +1 -1
  333. package/packages/dd-trace/src/appsec/remote_config.js +3 -3
  334. package/packages/dd-trace/src/appsec/reporter.js +11 -11
  335. package/packages/dd-trace/src/appsec/rule_manager.js +1 -1
  336. package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
  337. package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
  338. package/packages/dd-trace/src/appsec/sdk/track_event.js +7 -7
  339. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +1 -1
  340. package/packages/dd-trace/src/appsec/sdk/utils.js +1 -1
  341. package/packages/dd-trace/src/appsec/stack_trace.js +5 -5
  342. package/packages/dd-trace/src/appsec/telemetry/common.js +3 -3
  343. package/packages/dd-trace/src/appsec/telemetry/index.js +5 -5
  344. package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -3
  345. package/packages/dd-trace/src/appsec/telemetry/user.js +4 -4
  346. package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -3
  347. package/packages/dd-trace/src/appsec/user_tracking.js +7 -7
  348. package/packages/dd-trace/src/appsec/waf/diagnostics.js +2 -2
  349. package/packages/dd-trace/src/appsec/waf/index.js +1 -1
  350. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +2 -2
  351. package/packages/dd-trace/src/azure_metadata.js +16 -9
  352. package/packages/dd-trace/src/baggage.js +1 -1
  353. package/packages/dd-trace/src/ci-visibility/coverage-report-discovery.js +82 -0
  354. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +5 -5
  355. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +9 -9
  356. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +8 -8
  357. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +8 -7
  358. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +4 -3
  359. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +5 -3
  360. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -0
  361. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +4 -3
  362. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +37 -11
  363. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +22 -22
  364. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +1 -1
  365. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +1 -1
  366. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +8 -8
  367. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +3 -3
  368. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +17 -12
  369. package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +92 -0
  370. package/packages/dd-trace/src/ci-visibility/telemetry.js +2 -2
  371. package/packages/dd-trace/src/ci-visibility/test-api-manual/test-api-manual-plugin.js +1 -1
  372. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +6 -6
  373. package/packages/dd-trace/src/ci-visibility/test-optimization-cache.js +61 -0
  374. package/packages/dd-trace/src/config/defaults.js +1 -1
  375. package/packages/dd-trace/src/config/git_properties.js +1 -1
  376. package/packages/dd-trace/src/config/helper.js +2 -2
  377. package/packages/dd-trace/src/config/index.js +612 -622
  378. package/packages/dd-trace/src/config/remote_config.js +1 -1
  379. package/packages/dd-trace/src/config/stable.js +2 -2
  380. package/packages/dd-trace/src/config/supported-configurations.json +1 -0
  381. package/packages/dd-trace/src/constants.js +3 -3
  382. package/packages/dd-trace/src/crashtracking/crashtracker.js +6 -6
  383. package/packages/dd-trace/src/datastreams/checkpointer.js +1 -1
  384. package/packages/dd-trace/src/datastreams/context.js +1 -1
  385. package/packages/dd-trace/src/datastreams/encoding.js +1 -1
  386. package/packages/dd-trace/src/datastreams/fnv.js +1 -1
  387. package/packages/dd-trace/src/datastreams/index.js +8 -8
  388. package/packages/dd-trace/src/datastreams/pathway.js +5 -3
  389. package/packages/dd-trace/src/datastreams/processor.js +14 -12
  390. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +27 -25
  391. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +1 -1
  392. package/packages/dd-trace/src/datastreams/size.js +3 -3
  393. package/packages/dd-trace/src/datastreams/writer.js +3 -3
  394. package/packages/dd-trace/src/debugger/config.js +2 -1
  395. package/packages/dd-trace/src/debugger/constants.js +7 -0
  396. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +14 -10
  397. package/packages/dd-trace/src/debugger/devtools_client/condition.js +2 -2
  398. package/packages/dd-trace/src/debugger/devtools_client/config.js +4 -5
  399. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
  400. package/packages/dd-trace/src/debugger/devtools_client/index.js +32 -25
  401. package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +1 -1
  402. package/packages/dd-trace/src/debugger/devtools_client/log.js +1 -1
  403. package/packages/dd-trace/src/debugger/devtools_client/send.js +54 -10
  404. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +94 -37
  405. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +4 -4
  406. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +7 -7
  407. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +2 -2
  408. package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +1 -1
  409. package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +1 -1
  410. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +10 -1
  411. package/packages/dd-trace/src/debugger/devtools_client/state.js +65 -8
  412. package/packages/dd-trace/src/debugger/devtools_client/status.js +9 -8
  413. package/packages/dd-trace/src/debugger/index.js +95 -37
  414. package/packages/dd-trace/src/dogstatsd.js +14 -9
  415. package/packages/dd-trace/src/encode/0.4.js +7 -6
  416. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
  417. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +3 -3
  418. package/packages/dd-trace/src/encode/span-stats.js +2 -2
  419. package/packages/dd-trace/src/encode/tags-processors.js +1 -1
  420. package/packages/dd-trace/src/exporters/agent/index.js +1 -1
  421. package/packages/dd-trace/src/exporters/agent/writer.js +2 -2
  422. package/packages/dd-trace/src/exporters/common/agents.js +1 -1
  423. package/packages/dd-trace/src/exporters/common/buffering-exporter.js +2 -2
  424. package/packages/dd-trace/src/exporters/common/docker.js +11 -7
  425. package/packages/dd-trace/src/exporters/common/request.js +28 -8
  426. package/packages/dd-trace/src/exporters/common/url-to-http-options-polyfill.js +2 -2
  427. package/packages/dd-trace/src/exporters/common/writer.js +2 -0
  428. package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
  429. package/packages/dd-trace/src/exporters/span-stats/writer.js +3 -3
  430. package/packages/dd-trace/src/external-logger/src/index.js +4 -4
  431. package/packages/dd-trace/src/flare/index.js +3 -3
  432. package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
  433. package/packages/dd-trace/src/heap_snapshots.js +1 -1
  434. package/packages/dd-trace/src/id.js +1 -1
  435. package/packages/dd-trace/src/iitm.js +1 -1
  436. package/packages/dd-trace/src/lambda/handler.js +1 -1
  437. package/packages/dd-trace/src/lambda/runtime/errors.js +1 -1
  438. package/packages/dd-trace/src/lambda/runtime/ritm.js +3 -3
  439. package/packages/dd-trace/src/llmobs/constants/tags.js +1 -1
  440. package/packages/dd-trace/src/llmobs/constants/text.js +1 -1
  441. package/packages/dd-trace/src/llmobs/constants/writers.js +1 -1
  442. package/packages/dd-trace/src/llmobs/index.js +2 -4
  443. package/packages/dd-trace/src/llmobs/noop.js +2 -2
  444. package/packages/dd-trace/src/llmobs/plugins/ai/index.js +8 -8
  445. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +2 -2
  446. package/packages/dd-trace/src/llmobs/plugins/anthropic.js +5 -5
  447. package/packages/dd-trace/src/llmobs/plugins/base.js +1 -1
  448. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +8 -8
  449. package/packages/dd-trace/src/llmobs/plugins/genai/index.js +2 -2
  450. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +15 -15
  451. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +2 -2
  452. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +5 -5
  453. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
  454. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +3 -3
  455. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +1 -1
  456. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +17 -17
  457. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +3 -3
  458. package/packages/dd-trace/src/llmobs/plugins/vertexai.js +6 -6
  459. package/packages/dd-trace/src/llmobs/sdk.js +11 -11
  460. package/packages/dd-trace/src/llmobs/span_processor.js +6 -6
  461. package/packages/dd-trace/src/llmobs/tagger.js +4 -4
  462. package/packages/dd-trace/src/llmobs/telemetry.js +8 -8
  463. package/packages/dd-trace/src/llmobs/util.js +1 -1
  464. package/packages/dd-trace/src/llmobs/writers/base.js +9 -9
  465. package/packages/dd-trace/src/llmobs/writers/evaluations.js +5 -5
  466. package/packages/dd-trace/src/llmobs/writers/spans.js +3 -3
  467. package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
  468. package/packages/dd-trace/src/log/channels.js +2 -2
  469. package/packages/dd-trace/src/log/index.js +2 -2
  470. package/packages/dd-trace/src/log/log.js +1 -1
  471. package/packages/dd-trace/src/log/writer.js +1 -1
  472. package/packages/dd-trace/src/noop/span.js +2 -2
  473. package/packages/dd-trace/src/openfeature/constants/constants.js +1 -1
  474. package/packages/dd-trace/src/openfeature/flagging_provider.js +4 -4
  475. package/packages/dd-trace/src/openfeature/index.js +2 -2
  476. package/packages/dd-trace/src/openfeature/noop.js +3 -3
  477. package/packages/dd-trace/src/openfeature/remote_config.js +1 -1
  478. package/packages/dd-trace/src/openfeature/writers/base.js +12 -12
  479. package/packages/dd-trace/src/openfeature/writers/exposures.js +10 -10
  480. package/packages/dd-trace/src/openfeature/writers/util.js +1 -1
  481. package/packages/dd-trace/src/opentelemetry/context_manager.js +48 -29
  482. package/packages/dd-trace/src/opentelemetry/logs/index.js +2 -2
  483. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +2 -2
  484. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +10 -10
  485. package/packages/dd-trace/src/opentelemetry/metrics/constants.js +3 -3
  486. package/packages/dd-trace/src/opentelemetry/metrics/index.js +2 -2
  487. package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
  488. package/packages/dd-trace/src/opentelemetry/metrics/meter.js +1 -1
  489. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +11 -11
  490. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +18 -18
  491. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +6 -6
  492. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +10 -7
  493. package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +3 -3
  494. package/packages/dd-trace/src/opentelemetry/span.js +8 -8
  495. package/packages/dd-trace/src/opentelemetry/span_context.js +1 -1
  496. package/packages/dd-trace/src/opentelemetry/span_processor.js +1 -1
  497. package/packages/dd-trace/src/opentelemetry/tracer.js +4 -4
  498. package/packages/dd-trace/src/opentracing/propagation/log.js +2 -2
  499. package/packages/dd-trace/src/opentracing/propagation/text_map.js +14 -12
  500. package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +2 -0
  501. package/packages/dd-trace/src/opentracing/span.js +20 -20
  502. package/packages/dd-trace/src/opentracing/span_context.js +3 -3
  503. package/packages/dd-trace/src/opentracing/tracer.js +3 -3
  504. package/packages/dd-trace/src/payload-tagging/config/index.js +1 -1
  505. package/packages/dd-trace/src/payload-tagging/index.js +1 -1
  506. package/packages/dd-trace/src/payload-tagging/tagging.js +2 -2
  507. package/packages/dd-trace/src/plugin_manager.js +6 -6
  508. package/packages/dd-trace/src/plugins/apollo.js +4 -4
  509. package/packages/dd-trace/src/plugins/ci_plugin.js +101 -36
  510. package/packages/dd-trace/src/plugins/database.js +1 -1
  511. package/packages/dd-trace/src/plugins/index.js +1 -1
  512. package/packages/dd-trace/src/plugins/log_plugin.js +2 -2
  513. package/packages/dd-trace/src/plugins/outbound.js +9 -8
  514. package/packages/dd-trace/src/plugins/plugin.js +17 -7
  515. package/packages/dd-trace/src/plugins/producer.js +6 -5
  516. package/packages/dd-trace/src/plugins/tracing.js +37 -8
  517. package/packages/dd-trace/src/plugins/util/ci.js +40 -40
  518. package/packages/dd-trace/src/plugins/util/env.js +2 -2
  519. package/packages/dd-trace/src/plugins/util/git-cache.js +2 -2
  520. package/packages/dd-trace/src/plugins/util/git.js +20 -18
  521. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +6 -6
  522. package/packages/dd-trace/src/plugins/util/ip_extractor.js +3 -3
  523. package/packages/dd-trace/src/plugins/util/llm.js +1 -1
  524. package/packages/dd-trace/src/plugins/util/stacktrace.js +3 -3
  525. package/packages/dd-trace/src/plugins/util/tags.js +1 -1
  526. package/packages/dd-trace/src/plugins/util/test.js +46 -40
  527. package/packages/dd-trace/src/plugins/util/url.js +1 -1
  528. package/packages/dd-trace/src/plugins/util/urlfilter.js +1 -1
  529. package/packages/dd-trace/src/plugins/util/user-provided-git.js +2 -2
  530. package/packages/dd-trace/src/plugins/util/web.js +12 -12
  531. package/packages/dd-trace/src/priority_sampler.js +4 -4
  532. package/packages/dd-trace/src/process-tags/index.js +2 -2
  533. package/packages/dd-trace/src/profiler.js +1 -1
  534. package/packages/dd-trace/src/profiling/config.js +8 -8
  535. package/packages/dd-trace/src/profiling/constants.js +2 -2
  536. package/packages/dd-trace/src/profiling/exporter_cli.js +3 -3
  537. package/packages/dd-trace/src/profiling/exporters/agent.js +5 -5
  538. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +8 -8
  539. package/packages/dd-trace/src/profiling/index.js +1 -1
  540. package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
  541. package/packages/dd-trace/src/profiling/loggers/console.js +1 -1
  542. package/packages/dd-trace/src/profiling/profiler.js +21 -23
  543. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
  544. package/packages/dd-trace/src/profiling/profilers/event_plugins/fs.js +3 -3
  545. package/packages/dd-trace/src/profiling/profilers/events.js +27 -19
  546. package/packages/dd-trace/src/profiling/profilers/shared.js +2 -2
  547. package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
  548. package/packages/dd-trace/src/profiling/tagger.js +1 -1
  549. package/packages/dd-trace/src/profiling/webspan-utils.js +2 -2
  550. package/packages/dd-trace/src/proxy.js +13 -13
  551. package/packages/dd-trace/src/remote_config/apply_states.js +1 -1
  552. package/packages/dd-trace/src/remote_config/index.js +15 -15
  553. package/packages/dd-trace/src/remote_config/scheduler.js +1 -1
  554. package/packages/dd-trace/src/ritm.js +1 -1
  555. package/packages/dd-trace/src/runtime_metrics/index.js +2 -2
  556. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +3 -3
  557. package/packages/dd-trace/src/serverless.js +1 -1
  558. package/packages/dd-trace/src/service-naming/extra-services.js +1 -1
  559. package/packages/dd-trace/src/service-naming/index.js +1 -1
  560. package/packages/dd-trace/src/service-naming/schemas/v0/graphql.js +3 -3
  561. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +25 -25
  562. package/packages/dd-trace/src/service-naming/schemas/v0/serverless.js +3 -3
  563. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +18 -18
  564. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +23 -23
  565. package/packages/dd-trace/src/service-naming/schemas/v0/websocket.js +9 -9
  566. package/packages/dd-trace/src/service-naming/schemas/v1/graphql.js +3 -3
  567. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +21 -21
  568. package/packages/dd-trace/src/service-naming/schemas/v1/serverless.js +3 -3
  569. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +17 -17
  570. package/packages/dd-trace/src/service-naming/schemas/v1/web.js +23 -23
  571. package/packages/dd-trace/src/service-naming/schemas/v1/websocket.js +9 -9
  572. package/packages/dd-trace/src/span_format.js +4 -4
  573. package/packages/dd-trace/src/span_sampler.js +1 -1
  574. package/packages/dd-trace/src/span_stats.js +11 -11
  575. package/packages/dd-trace/src/spanleak.js +1 -1
  576. package/packages/dd-trace/src/standalone/index.js +1 -1
  577. package/packages/dd-trace/src/standalone/product.js +2 -2
  578. package/packages/dd-trace/src/standalone/tracesource.js +1 -1
  579. package/packages/dd-trace/src/startup-log.js +2 -2
  580. package/packages/dd-trace/src/tagger.js +3 -1
  581. package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
  582. package/packages/dd-trace/src/telemetry/endpoints.js +4 -4
  583. package/packages/dd-trace/src/telemetry/index.js +1 -1
  584. package/packages/dd-trace/src/telemetry/logs/index.js +2 -2
  585. package/packages/dd-trace/src/telemetry/logs/log-collector.js +2 -2
  586. package/packages/dd-trace/src/telemetry/metrics.js +6 -6
  587. package/packages/dd-trace/src/telemetry/send-data.js +5 -5
  588. package/packages/dd-trace/src/telemetry/telemetry.js +10 -10
  589. package/packages/dd-trace/src/tracer.js +3 -2
  590. package/packages/dd-trace/src/util.js +1 -1
  591. package/scripts/preinstall.js +1 -1
  592. package/vendor/dist/@datadog/sketches-js/index.js +1 -1
  593. package/vendor/dist/@datadog/source-map/index.js +1 -1
  594. package/vendor/dist/@isaacs/ttlcache/index.js +1 -1
  595. package/vendor/dist/@opentelemetry/core/index.js +1 -1
  596. package/vendor/dist/@opentelemetry/resources/index.js +1 -1
  597. package/vendor/dist/astring/index.js +1 -1
  598. package/vendor/dist/crypto-randomuuid/index.js +1 -1
  599. package/vendor/dist/escape-string-regexp/index.js +1 -1
  600. package/vendor/dist/esquery/index.js +1 -1
  601. package/vendor/dist/ignore/index.js +1 -1
  602. package/vendor/dist/istanbul-lib-coverage/index.js +1 -1
  603. package/vendor/dist/jest-docblock/index.js +1 -1
  604. package/vendor/dist/jsonpath-plus/index.js +1 -1
  605. package/vendor/dist/limiter/index.js +1 -1
  606. package/vendor/dist/lodash.sortby/index.js +1 -1
  607. package/vendor/dist/lru-cache/index.js +1 -1
  608. package/vendor/dist/meriyah/index.js +1 -1
  609. package/vendor/dist/module-details-from-path/index.js +1 -1
  610. package/vendor/dist/mutexify/promise/index.js +1 -1
  611. package/vendor/dist/opentracing/index.js +1 -1
  612. package/vendor/dist/path-to-regexp/index.js +1 -1
  613. package/vendor/dist/pprof-format/index.js +1 -1
  614. package/vendor/dist/protobufjs/index.js +1 -1
  615. package/vendor/dist/protobufjs/minimal/index.js +1 -1
  616. package/vendor/dist/retry/index.js +1 -1
  617. package/vendor/dist/rfdc/index.js +1 -1
  618. package/vendor/dist/semifies/index.js +1 -1
  619. package/vendor/dist/shell-quote/index.js +1 -1
  620. package/vendor/dist/source-map/index.js +1 -1
  621. package/vendor/dist/source-map/lib/util/index.js +1 -1
  622. package/vendor/dist/tlhunter-sorted-set/index.js +1 -1
  623. package/vendor/dist/ttl-set/index.js +1 -1
  624. package/packages/datadog-plugin-prisma/src/client.js +0 -60
  625. package/packages/datadog-plugin-prisma/src/engine.js +0 -81
@@ -1,9 +1,10 @@
1
1
  'use strict'
2
2
 
3
- const fs = require('fs')
4
- const os = require('os')
5
- const { URL } = require('url')
6
- const path = require('path')
3
+ const fs = require('node:fs')
4
+ const os = require('node:os')
5
+ const { URL } = require('node:url')
6
+ const path = require('node:path')
7
+
7
8
  const uuid = require('../../../../vendor/dist/crypto-randomuuid') // we need to keep the old uuid dep because of cypress
8
9
 
9
10
  const set = require('../../../datadog-core/src/utils/src/set')
@@ -15,10 +16,10 @@ const { GIT_REPOSITORY_URL, GIT_COMMIT_SHA } = require('../plugins/util/tags')
15
16
  const { updateConfig } = require('../telemetry')
16
17
  const telemetryMetrics = require('../telemetry/metrics')
17
18
  const {
18
- isInServerlessEnvironment,
19
+ IS_SERVERLESS,
19
20
  getIsGCPFunction,
20
21
  getIsAzureFunction,
21
- enableGCPPubSubPushSubscription
22
+ enableGCPPubSubPushSubscription,
22
23
  } = require('../serverless')
23
24
  const { ORIGIN_KEY } = require('../constants')
24
25
  const { appendRules } = require('../payload-tagging/config')
@@ -27,221 +28,36 @@ const { getGitMetadataFromGitProperties, removeUserSensitiveInfo, getRemoteOrigi
27
28
  const { getEnvironmentVariable: getEnv, getEnvironmentVariables, getStableConfigSources } = require('./helper')
28
29
  const defaults = require('./defaults')
29
30
 
30
- const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
31
-
32
- const changeTracker = {}
33
-
34
- const telemetryCounters = {
35
- 'otel.env.hiding': {},
36
- 'otel.env.invalid': {}
37
- }
38
-
39
- function getCounter (event, ddVar, otelVar) {
40
- const counters = telemetryCounters[event]
41
- const tags = []
42
- const ddVarPrefix = 'config_datadog:'
43
- const otelVarPrefix = 'config_opentelemetry:'
44
- if (ddVar) {
45
- ddVar = ddVarPrefix + ddVar.toLowerCase()
46
- tags.push(ddVar)
47
- }
48
- if (otelVar) {
49
- otelVar = otelVarPrefix + otelVar.toLowerCase()
50
- tags.push(otelVar)
51
- }
52
-
53
- if (!(otelVar in counters)) counters[otelVar] = {}
54
-
55
- const counter = tracerMetrics.count(event, tags)
56
- counters[otelVar][ddVar] = counter
57
- return counter
58
- }
59
-
60
- const otelDdEnvMapping = {
61
- OTEL_LOG_LEVEL: 'DD_TRACE_LOG_LEVEL',
62
- OTEL_PROPAGATORS: 'DD_TRACE_PROPAGATION_STYLE',
63
- OTEL_SERVICE_NAME: 'DD_SERVICE',
64
- OTEL_TRACES_SAMPLER: 'DD_TRACE_SAMPLE_RATE',
65
- OTEL_TRACES_SAMPLER_ARG: 'DD_TRACE_SAMPLE_RATE',
66
- OTEL_TRACES_EXPORTER: 'DD_TRACE_ENABLED',
67
- OTEL_METRICS_EXPORTER: 'DD_RUNTIME_METRICS_ENABLED',
68
- OTEL_RESOURCE_ATTRIBUTES: 'DD_TAGS',
69
- OTEL_SDK_DISABLED: 'DD_TRACE_OTEL_ENABLED',
70
- OTEL_LOGS_EXPORTER: undefined
71
- }
72
-
31
+ const TELEMETRY_COUNTERS = new Map([
32
+ ['otel.env.hiding', {}],
33
+ ['otel.env.invalid', {}],
34
+ ])
35
+ const OTEL_DD_ENV_MAPPING = new Map([
36
+ ['OTEL_LOG_LEVEL', 'DD_TRACE_LOG_LEVEL'],
37
+ ['OTEL_PROPAGATORS', 'DD_TRACE_PROPAGATION_STYLE'],
38
+ ['OTEL_SERVICE_NAME', 'DD_SERVICE'],
39
+ ['OTEL_TRACES_SAMPLER', 'DD_TRACE_SAMPLE_RATE'],
40
+ ['OTEL_TRACES_SAMPLER_ARG', 'DD_TRACE_SAMPLE_RATE'],
41
+ ['OTEL_TRACES_EXPORTER', 'DD_TRACE_ENABLED'],
42
+ ['OTEL_METRICS_EXPORTER', 'DD_RUNTIME_METRICS_ENABLED'],
43
+ ['OTEL_RESOURCE_ATTRIBUTES', 'DD_TAGS'],
44
+ ['OTEL_SDK_DISABLED', 'DD_TRACE_OTEL_ENABLED'],
45
+ ['OTEL_LOGS_EXPORTER', undefined],
46
+ ])
73
47
  const VALID_PROPAGATION_STYLES = new Set(['datadog', 'tracecontext', 'b3', 'b3 single header', 'none'])
74
-
75
48
  const VALID_PROPAGATION_BEHAVIOR_EXTRACT = new Set(['continue', 'restart', 'ignore'])
76
-
77
49
  const VALID_LOG_LEVELS = new Set(['debug', 'info', 'warn', 'error'])
78
-
79
50
  const DEFAULT_OTLP_PORT = 4318
51
+ const RUNTIME_ID = uuid()
52
+ const NAMING_VERSIONS = new Set(['v0', 'v1'])
53
+ const DEFAULT_NAMING_VERSION = 'v0'
80
54
 
81
- function getFromOtelSamplerMap (otelTracesSampler, otelTracesSamplerArg) {
82
- const OTEL_TRACES_SAMPLER_MAPPING = {
83
- always_on: '1.0',
84
- always_off: '0.0',
85
- traceidratio: otelTracesSamplerArg,
86
- parentbased_always_on: '1.0',
87
- parentbased_always_off: '0.0',
88
- parentbased_traceidratio: otelTracesSamplerArg
89
- }
90
- return OTEL_TRACES_SAMPLER_MAPPING[otelTracesSampler]
91
- }
92
-
93
- /**
94
- * Validate the type of an environment variable
95
- * @param {string} envVar - The name of the environment variable
96
- * @param {string} [value] - The value of the environment variable
97
- * @returns {boolean} - True if the value is valid, false otherwise
98
- */
99
- function isInvalidOtelEnvironmentVariable (envVar, value) {
100
- // Skip validation if the value is undefined (it was not set as environment variable)
101
- if (value === undefined) return false
102
-
103
- switch (envVar) {
104
- case 'OTEL_LOG_LEVEL':
105
- return !VALID_LOG_LEVELS.has(value)
106
- case 'OTEL_PROPAGATORS':
107
- case 'OTEL_RESOURCE_ATTRIBUTES':
108
- case 'OTEL_SERVICE_NAME':
109
- return typeof value !== 'string'
110
- case 'OTEL_TRACES_SAMPLER':
111
- return getFromOtelSamplerMap(value, getEnv('OTEL_TRACES_SAMPLER_ARG')) === undefined
112
- case 'OTEL_TRACES_SAMPLER_ARG':
113
- return Number.isNaN(Number.parseFloat(value))
114
- case 'OTEL_SDK_DISABLED':
115
- return value.toLowerCase() !== 'true' && value.toLowerCase() !== 'false'
116
- case 'OTEL_TRACES_EXPORTER':
117
- case 'OTEL_METRICS_EXPORTER':
118
- case 'OTEL_LOGS_EXPORTER':
119
- return value.toLowerCase() !== 'none'
120
- default:
121
- return true
122
- }
123
- }
124
-
125
- function checkIfBothOtelAndDdEnvVarSet () {
126
- for (const [otelEnvVar, ddEnvVar] of Object.entries(otelDdEnvMapping)) {
127
- const otelValue = getEnv(otelEnvVar)
128
-
129
- if (ddEnvVar && getEnv(ddEnvVar) && otelValue) {
130
- log.warn('both %s and %s environment variables are set', ddEnvVar, otelEnvVar)
131
- getCounter('otel.env.hiding', ddEnvVar, otelEnvVar).inc()
132
- }
133
-
134
- if (isInvalidOtelEnvironmentVariable(otelEnvVar, otelValue)) {
135
- log.warn('unexpected value %s for %s environment variable', otelValue, otelEnvVar)
136
- getCounter('otel.env.invalid', ddEnvVar, otelEnvVar).inc()
137
- }
138
- }
139
- }
140
-
141
- const runtimeId = uuid()
142
-
143
- function maybeFile (filepath) {
144
- if (!filepath) return
145
- try {
146
- return fs.readFileSync(filepath, 'utf8')
147
- } catch (e) {
148
- log.error('Error reading file %s', filepath, e)
149
- }
150
- }
151
-
152
- function maybeJsonFile (filepath) {
153
- const file = maybeFile(filepath)
154
- if (!file) return
155
- try {
156
- return JSON.parse(file)
157
- } catch (e) {
158
- log.error('Error parsing JSON file %s', filepath, e)
159
- }
160
- }
161
-
162
- function safeJsonParse (input) {
163
- try {
164
- return JSON.parse(input)
165
- } catch {}
166
- }
167
-
168
- const namingVersions = new Set(['v0', 'v1'])
169
- const defaultNamingVersion = 'v0'
170
-
171
- function validateNamingVersion (versionString) {
172
- if (!versionString) {
173
- return defaultNamingVersion
174
- }
175
- if (!namingVersions.has(versionString)) {
176
- log.warn('Unexpected input for config.spanAttributeSchema, picked default', defaultNamingVersion)
177
- return defaultNamingVersion
178
- }
179
- return versionString
180
- }
181
-
182
- /**
183
- * Given a string of comma-separated paths, return the array of paths.
184
- * If a blank path is provided a null is returned to signal that the feature is disabled.
185
- * An empty array means the feature is enabled but that no rules need to be applied.
186
- *
187
- * @param {string | string[]} input
188
- */
189
- function splitJSONPathRules (input) {
190
- if (!input || input === '$') return
191
- if (Array.isArray(input)) return input
192
- if (input === 'all') return []
193
- return input.split(',')
194
- }
195
-
196
- // Shallow clone with property name remapping
197
- function remapify (input, mappings) {
198
- if (!input) return
199
- const output = {}
200
- for (const [key, value] of Object.entries(input)) {
201
- output[key in mappings ? mappings[key] : key] = value
202
- }
203
- return output
204
- }
205
-
206
- /**
207
- * Normalizes propagation style values to a lowercase array.
208
- * Handles both string (comma-separated) and array inputs.
209
- */
210
- function normalizePropagationStyle (value) {
211
- if (Array.isArray(value)) {
212
- return value.map(v => v.toLowerCase())
213
- }
214
- if (typeof value === 'string') {
215
- return value.split(',')
216
- .filter(v => v !== '')
217
- .map(v => v.trim().toLowerCase())
218
- }
219
- if (value !== undefined) {
220
- log.warn('Unexpected input for config.tracePropagationStyle')
221
- }
222
- }
55
+ const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
56
+ const changeTracker = {}
223
57
 
224
- /**
225
- * Warns if both DD_TRACE_PROPAGATION_STYLE and specific inject/extract vars are set.
226
- */
227
- function warnIfPropagationStyleConflict (general, inject, extract) {
228
- if (general && (inject || extract)) {
229
- log.warn(
230
- // eslint-disable-next-line @stylistic/max-len
231
- 'Use either the DD_TRACE_PROPAGATION_STYLE environment variable or separate DD_TRACE_PROPAGATION_STYLE_INJECT and DD_TRACE_PROPAGATION_STYLE_EXTRACT environment variables'
232
- )
233
- }
234
- }
58
+ let configInstance = null
235
59
 
236
- function reformatSpanSamplingRules (rules) {
237
- if (!rules) return rules
238
- return rules.map(rule => {
239
- return remapify(rule, {
240
- sample_rate: 'sampleRate',
241
- max_per_second: 'maxPerSecond'
242
- })
243
- })
244
- }
60
+ module.exports = getConfig
245
61
 
246
62
  class Config {
247
63
  /**
@@ -249,7 +65,6 @@ class Config {
249
65
  * @type {Record<string, string> | undefined}
250
66
  */
251
67
  #parsedDdTags = {}
252
-
253
68
  #envUnprocessed = {}
254
69
  #optsUnprocessed = {}
255
70
  #remoteUnprocessed = {}
@@ -262,32 +77,20 @@ class Config {
262
77
  #fleetStableConfig = {}
263
78
  #calculated = {}
264
79
 
265
- #getSourcesInOrder () {
266
- return [
267
- { container: this.#remote, origin: 'remote_config', unprocessed: this.#remoteUnprocessed },
268
- { container: this.#options, origin: 'code', unprocessed: this.#optsUnprocessed },
269
- { container: this.#fleetStableConfig, origin: 'fleet_stable_config' },
270
- { container: this.#env, origin: 'env_var', unprocessed: this.#envUnprocessed },
271
- { container: this.#localStableConfig, origin: 'local_stable_config' },
272
- { container: this.#calculated, origin: 'calculated' },
273
- { container: this.#defaults, origin: 'default' }
274
- ]
275
- }
276
-
277
80
  constructor (options = {}) {
278
- if (!isInServerlessEnvironment()) {
81
+ if (!IS_SERVERLESS) {
279
82
  const configEnvSources = getStableConfigSources()
280
83
  this.stableConfig = {
281
84
  fleetEntries: configEnvSources.fleetStableConfig,
282
85
  localEntries: configEnvSources.localStableConfig,
283
- warnings: configEnvSources.stableConfigWarnings
86
+ warnings: configEnvSources.stableConfigWarnings,
284
87
  }
285
88
  }
286
89
 
287
90
  options = {
288
91
  ...options,
289
92
  appsec: options.appsec == null ? options.experimental?.appsec : options.appsec,
290
- iast: options.iast == null ? options.experimental?.iast : options.iast
93
+ iast: options.iast == null ? options.experimental?.iast : options.iast,
291
94
  }
292
95
 
293
96
  // Configure the logger first so it can be used to warn about other configs
@@ -314,13 +117,13 @@ class Config {
314
117
 
315
118
  if (typeof options.appsec === 'boolean') {
316
119
  options.appsec = {
317
- enabled: options.appsec
120
+ enabled: options.appsec,
318
121
  }
319
122
  }
320
123
 
321
124
  if (typeof options.runtimeMetrics === 'boolean') {
322
125
  options.runtimeMetrics = {
323
- enabled: options.runtimeMetrics
126
+ enabled: options.runtimeMetrics,
324
127
  }
325
128
  }
326
129
 
@@ -337,12 +140,12 @@ class Config {
337
140
  service: this.service,
338
141
  env: this.env,
339
142
  version: this.version,
340
- 'runtime-id': runtimeId
143
+ 'runtime-id': RUNTIME_ID,
341
144
  })
342
145
 
343
146
  if (this.isCiVisibility) {
344
147
  tagger.add(this.tags, {
345
- [ORIGIN_KEY]: 'ciapp-test'
148
+ [ORIGIN_KEY]: 'ciapp-test',
346
149
  })
347
150
  }
348
151
 
@@ -391,19 +194,25 @@ class Config {
391
194
  this.#merge()
392
195
  }
393
196
 
394
- #getDefaultPropagationStyle (options) {
395
- // TODO: Remove the experimental env vars as a major?
396
- const DD_TRACE_B3_ENABLED = options.experimental?.b3 ??
397
- getEnv('DD_TRACE_EXPERIMENTAL_B3_ENABLED')
398
- const defaultPropagationStyle = ['datadog', 'tracecontext']
399
- if (isTrue(DD_TRACE_B3_ENABLED)) {
400
- defaultPropagationStyle.push('b3', 'b3 single header')
197
+ getOrigin (name) {
198
+ for (const { container, origin } of this.#getSourcesInOrder()) {
199
+ const value = container[name]
200
+ if (value != null || container === this.#defaults) {
201
+ return origin
202
+ }
401
203
  }
402
- return defaultPropagationStyle
403
204
  }
404
205
 
405
- _isInServerlessEnvironment () {
406
- return isInServerlessEnvironment()
206
+ #getSourcesInOrder () {
207
+ return [
208
+ { container: this.#remote, origin: 'remote_config', unprocessed: this.#remoteUnprocessed },
209
+ { container: this.#options, origin: 'code', unprocessed: this.#optsUnprocessed },
210
+ { container: this.#fleetStableConfig, origin: 'fleet_stable_config' },
211
+ { container: this.#env, origin: 'env_var', unprocessed: this.#envUnprocessed },
212
+ { container: this.#localStableConfig, origin: 'local_stable_config' },
213
+ { container: this.#calculated, origin: 'calculated' },
214
+ { container: this.#defaults, origin: 'default' },
215
+ ]
407
216
  }
408
217
 
409
218
  #applyStableConfig (config, obj) {
@@ -414,17 +223,17 @@ class Config {
414
223
  #applyDefaults () {
415
224
  const defaults = this.#defaults
416
225
 
417
- if (isInServerlessEnvironment()) {
418
- this.#setBoolean(defaults, 'crashtracking.enabled', false)
419
- this.#setString(defaults, 'profiling.enabled', 'false')
420
- this.#setBoolean(defaults, 'telemetry.enabled', false)
421
- this.#setBoolean(defaults, 'remoteConfig.enabled', false)
226
+ if (IS_SERVERLESS) {
227
+ setBoolean(defaults, 'crashtracking.enabled', false)
228
+ setString(defaults, 'profiling.enabled', 'false')
229
+ setBoolean(defaults, 'telemetry.enabled', false)
230
+ setBoolean(defaults, 'remoteConfig.enabled', false)
422
231
  } else {
423
- this.#setBoolean(defaults, 'crashtracking.enabled', true)
232
+ setBoolean(defaults, 'crashtracking.enabled', true)
424
233
  }
425
234
 
426
235
  if (getEnv('JEST_WORKER_ID')) {
427
- this.#setBoolean(defaults, 'telemetry.enabled', false)
236
+ setBoolean(defaults, 'telemetry.enabled', false)
428
237
  }
429
238
  }
430
239
 
@@ -619,7 +428,7 @@ class Config {
619
428
  OTEL_BSP_MAX_EXPORT_BATCH_SIZE,
620
429
  OTEL_BSP_MAX_QUEUE_SIZE,
621
430
  OTEL_METRIC_EXPORT_INTERVAL,
622
- NX_TASK_TARGET_PROJECT
431
+ NX_TASK_TARGET_PROJECT,
623
432
  } = source
624
433
 
625
434
  const tags = {}
@@ -632,20 +441,20 @@ class Config {
632
441
  tagger.add(tags, DD_TRACE_TAGS)
633
442
  tagger.add(tags, DD_TRACE_GLOBAL_TAGS)
634
443
 
635
- this.#setString(target, 'apiKey', DD_API_KEY)
636
- this.#setBoolean(target, 'otelLogsEnabled', DD_LOGS_OTEL_ENABLED)
444
+ setString(target, 'apiKey', DD_API_KEY)
445
+ setBoolean(target, 'otelLogsEnabled', DD_LOGS_OTEL_ENABLED)
637
446
  // Set OpenTelemetry logs configuration with specific _LOGS_ vars taking precedence over generic _EXPORTERS_ vars
638
447
  if (OTEL_EXPORTER_OTLP_ENDPOINT) {
639
448
  // Only set if there's a custom URL, otherwise let calc phase handle the default
640
- this.#setString(target, 'otelUrl', OTEL_EXPORTER_OTLP_ENDPOINT)
449
+ setString(target, 'otelUrl', OTEL_EXPORTER_OTLP_ENDPOINT)
641
450
  }
642
451
  if (OTEL_EXPORTER_OTLP_ENDPOINT || OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) {
643
- this.#setString(target, 'otelLogsUrl', OTEL_EXPORTER_OTLP_LOGS_ENDPOINT || target.otelUrl)
452
+ setString(target, 'otelLogsUrl', OTEL_EXPORTER_OTLP_LOGS_ENDPOINT || target.otelUrl)
644
453
  }
645
- this.#setString(target, 'otelHeaders', OTEL_EXPORTER_OTLP_HEADERS)
646
- this.#setString(target, 'otelLogsHeaders', OTEL_EXPORTER_OTLP_LOGS_HEADERS || target.otelHeaders)
647
- this.#setString(target, 'otelProtocol', OTEL_EXPORTER_OTLP_PROTOCOL)
648
- this.#setString(target, 'otelLogsProtocol', OTEL_EXPORTER_OTLP_LOGS_PROTOCOL || target.otelProtocol)
454
+ setString(target, 'otelHeaders', OTEL_EXPORTER_OTLP_HEADERS)
455
+ setString(target, 'otelLogsHeaders', OTEL_EXPORTER_OTLP_LOGS_HEADERS || target.otelHeaders)
456
+ setString(target, 'otelProtocol', OTEL_EXPORTER_OTLP_PROTOCOL)
457
+ setString(target, 'otelLogsProtocol', OTEL_EXPORTER_OTLP_LOGS_PROTOCOL || target.otelProtocol)
649
458
  const otelTimeout = nonNegInt(OTEL_EXPORTER_OTLP_TIMEOUT, 'OTEL_EXPORTER_OTLP_TIMEOUT')
650
459
  if (otelTimeout !== undefined) {
651
460
  target.otelTimeout = otelTimeout
@@ -660,7 +469,7 @@ class Config {
660
469
  target.otelMaxQueueSize = nonNegInt(OTEL_BSP_MAX_QUEUE_SIZE, 'OTEL_BSP_MAX_QUEUE_SIZE', false)
661
470
 
662
471
  const otelMetricsExporterEnabled = OTEL_METRICS_EXPORTER?.toLowerCase() !== 'none'
663
- this.#setBoolean(
472
+ setBoolean(
664
473
  target,
665
474
  'otelMetricsEnabled',
666
475
  DD_METRICS_OTEL_ENABLED && isTrue(DD_METRICS_OTEL_ENABLED) && otelMetricsExporterEnabled
@@ -668,10 +477,10 @@ class Config {
668
477
  // Set OpenTelemetry metrics configuration with specific _METRICS_ vars
669
478
  // taking precedence over generic _EXPORTERS_ vars
670
479
  if (OTEL_EXPORTER_OTLP_ENDPOINT || OTEL_EXPORTER_OTLP_METRICS_ENDPOINT) {
671
- this.#setString(target, 'otelMetricsUrl', OTEL_EXPORTER_OTLP_METRICS_ENDPOINT || target.otelUrl)
480
+ setString(target, 'otelMetricsUrl', OTEL_EXPORTER_OTLP_METRICS_ENDPOINT || target.otelUrl)
672
481
  }
673
- this.#setString(target, 'otelMetricsHeaders', OTEL_EXPORTER_OTLP_METRICS_HEADERS || target.otelHeaders)
674
- this.#setString(target, 'otelMetricsProtocol', OTEL_EXPORTER_OTLP_METRICS_PROTOCOL || target.otelProtocol)
482
+ setString(target, 'otelMetricsHeaders', OTEL_EXPORTER_OTLP_METRICS_HEADERS || target.otelHeaders)
483
+ setString(target, 'otelMetricsProtocol', OTEL_EXPORTER_OTLP_METRICS_PROTOCOL || target.otelProtocol)
675
484
  const otelMetricsTimeout = nonNegInt(OTEL_EXPORTER_OTLP_METRICS_TIMEOUT, 'OTEL_EXPORTER_OTLP_METRICS_TIMEOUT')
676
485
  target.otelMetricsTimeout = otelMetricsTimeout === undefined ? target.otelTimeout : otelMetricsTimeout
677
486
  target.otelMetricsExportTimeout = nonNegInt(OTEL_METRIC_EXPORT_TIMEOUT, 'OTEL_METRIC_EXPORT_TIMEOUT')
@@ -681,20 +490,20 @@ class Config {
681
490
  if (OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE) {
682
491
  const temporalityPref = OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE.toUpperCase()
683
492
  if (['DELTA', 'CUMULATIVE', 'LOWMEMORY'].includes(temporalityPref)) {
684
- this.#setString(target, 'otelMetricsTemporalityPreference', temporalityPref)
493
+ setString(target, 'otelMetricsTemporalityPreference', temporalityPref)
685
494
  }
686
495
  }
687
- this.#setBoolean(
496
+ setBoolean(
688
497
  target,
689
498
  'apmTracingEnabled',
690
499
  DD_APM_TRACING_ENABLED ??
691
500
  (DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED && isFalse(DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED))
692
501
  )
693
- this.#setBoolean(target, 'propagateProcessTags.enabled', DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED)
694
- this.#setString(target, 'appKey', DD_APP_KEY)
695
- this.#setBoolean(target, 'appsec.apiSecurity.enabled', DD_API_SECURITY_ENABLED && isTrue(DD_API_SECURITY_ENABLED))
502
+ setBoolean(target, 'propagateProcessTags.enabled', DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED)
503
+ setString(target, 'appKey', DD_APP_KEY)
504
+ setBoolean(target, 'appsec.apiSecurity.enabled', DD_API_SECURITY_ENABLED && isTrue(DD_API_SECURITY_ENABLED))
696
505
  target['appsec.apiSecurity.sampleDelay'] = maybeFloat(DD_API_SECURITY_SAMPLE_DELAY)
697
- this.#setBoolean(target, 'appsec.apiSecurity.endpointCollectionEnabled',
506
+ setBoolean(target, 'appsec.apiSecurity.endpointCollectionEnabled',
698
507
  DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED)
699
508
  target['appsec.apiSecurity.endpointCollectionMessageLimit'] =
700
509
  maybeInt(DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT)
@@ -703,28 +512,28 @@ class Config {
703
512
  unprocessedTarget['appsec.blockedTemplateHtml'] = DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML
704
513
  target['appsec.blockedTemplateJson'] = maybeFile(DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON)
705
514
  unprocessedTarget['appsec.blockedTemplateJson'] = DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON
706
- this.#setBoolean(target, 'appsec.enabled', DD_APPSEC_ENABLED)
707
- this.#setString(target, 'appsec.eventTracking.mode', DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE)
515
+ setBoolean(target, 'appsec.enabled', DD_APPSEC_ENABLED)
516
+ setString(target, 'appsec.eventTracking.mode', DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE)
708
517
  // TODO appsec.extendedHeadersCollection are deprecated, to delete in a major
709
- this.#setBoolean(target, 'appsec.extendedHeadersCollection.enabled', DD_APPSEC_COLLECT_ALL_HEADERS)
710
- this.#setBoolean(
518
+ setBoolean(target, 'appsec.extendedHeadersCollection.enabled', DD_APPSEC_COLLECT_ALL_HEADERS)
519
+ setBoolean(
711
520
  target,
712
521
  'appsec.extendedHeadersCollection.redaction',
713
522
  DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED
714
523
  )
715
524
  target['appsec.extendedHeadersCollection.maxHeaders'] = maybeInt(DD_APPSEC_MAX_COLLECTED_HEADERS)
716
525
  unprocessedTarget['appsec.extendedHeadersCollection.maxHeaders'] = DD_APPSEC_MAX_COLLECTED_HEADERS
717
- this.#setString(target, 'appsec.obfuscatorKeyRegex', DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP)
718
- this.#setString(target, 'appsec.obfuscatorValueRegex', DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP)
719
- this.#setBoolean(target, 'appsec.rasp.enabled', DD_APPSEC_RASP_ENABLED)
526
+ setString(target, 'appsec.obfuscatorKeyRegex', DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP)
527
+ setString(target, 'appsec.obfuscatorValueRegex', DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP)
528
+ setBoolean(target, 'appsec.rasp.enabled', DD_APPSEC_RASP_ENABLED)
720
529
  // TODO Deprecated, to delete in a major
721
- this.#setBoolean(target, 'appsec.rasp.bodyCollection', DD_APPSEC_RASP_COLLECT_REQUEST_BODY)
530
+ setBoolean(target, 'appsec.rasp.bodyCollection', DD_APPSEC_RASP_COLLECT_REQUEST_BODY)
722
531
  target['appsec.rateLimit'] = maybeInt(DD_APPSEC_TRACE_RATE_LIMIT)
723
532
  unprocessedTarget['appsec.rateLimit'] = DD_APPSEC_TRACE_RATE_LIMIT
724
- this.#setString(target, 'appsec.rules', DD_APPSEC_RULES)
533
+ setString(target, 'appsec.rules', DD_APPSEC_RULES)
725
534
  // DD_APPSEC_SCA_ENABLED is never used locally, but only sent to the backend
726
- this.#setBoolean(target, 'appsec.sca.enabled', DD_APPSEC_SCA_ENABLED)
727
- this.#setBoolean(target, 'appsec.stackTrace.enabled', DD_APPSEC_STACK_TRACE_ENABLED)
535
+ setBoolean(target, 'appsec.sca.enabled', DD_APPSEC_SCA_ENABLED)
536
+ setBoolean(target, 'appsec.stackTrace.enabled', DD_APPSEC_STACK_TRACE_ENABLED)
728
537
  target['appsec.stackTrace.maxDepth'] = maybeInt(DD_APPSEC_MAX_STACK_TRACE_DEPTH)
729
538
  unprocessedTarget['appsec.stackTrace.maxDepth'] = DD_APPSEC_MAX_STACK_TRACE_DEPTH
730
539
  target['appsec.stackTrace.maxStackTraces'] = maybeInt(DD_APPSEC_MAX_STACK_TRACES)
@@ -734,14 +543,14 @@ class Config {
734
543
  target.baggageMaxBytes = DD_TRACE_BAGGAGE_MAX_BYTES
735
544
  target.baggageMaxItems = DD_TRACE_BAGGAGE_MAX_ITEMS
736
545
  target.baggageTagKeys = DD_TRACE_BAGGAGE_TAG_KEYS
737
- this.#setBoolean(target, 'clientIpEnabled', DD_TRACE_CLIENT_IP_ENABLED)
738
- this.#setString(target, 'clientIpHeader', DD_TRACE_CLIENT_IP_HEADER?.toLowerCase())
546
+ setBoolean(target, 'clientIpEnabled', DD_TRACE_CLIENT_IP_ENABLED)
547
+ setString(target, 'clientIpHeader', DD_TRACE_CLIENT_IP_HEADER?.toLowerCase())
739
548
  if (DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING || DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING) {
740
549
  if (DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING) {
741
- this.#setBoolean(target, 'cloudPayloadTagging.requestsEnabled', true)
550
+ setBoolean(target, 'cloudPayloadTagging.requestsEnabled', true)
742
551
  }
743
552
  if (DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING) {
744
- this.#setBoolean(target, 'cloudPayloadTagging.responsesEnabled', true)
553
+ setBoolean(target, 'cloudPayloadTagging.responsesEnabled', true)
745
554
  }
746
555
  target['cloudPayloadTagging.rules'] = appendRules(
747
556
  splitJSONPathRules(DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING),
@@ -751,24 +560,24 @@ class Config {
751
560
  if (DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH) {
752
561
  target['cloudPayloadTagging.maxDepth'] = maybeInt(DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH)
753
562
  }
754
- this.#setBoolean(target, 'crashtracking.enabled', DD_CRASHTRACKING_ENABLED)
755
- this.#setBoolean(target, 'codeOriginForSpans.enabled', DD_CODE_ORIGIN_FOR_SPANS_ENABLED)
756
- this.#setBoolean(
563
+ setBoolean(target, 'crashtracking.enabled', DD_CRASHTRACKING_ENABLED)
564
+ setBoolean(target, 'codeOriginForSpans.enabled', DD_CODE_ORIGIN_FOR_SPANS_ENABLED)
565
+ setBoolean(
757
566
  target,
758
567
  'codeOriginForSpans.experimental.exit_spans.enabled',
759
568
  DD_CODE_ORIGIN_FOR_SPANS_EXPERIMENTAL_EXIT_SPANS_ENABLED
760
569
  )
761
- this.#setString(target, 'dbmPropagationMode', DD_DBM_PROPAGATION_MODE)
762
- this.#setString(target, 'dogstatsd.hostname', DD_DOGSTATSD_HOST)
763
- this.#setString(target, 'dogstatsd.port', DD_DOGSTATSD_PORT)
764
- this.#setBoolean(target, 'dsmEnabled', DD_DATA_STREAMS_ENABLED)
570
+ setString(target, 'dbmPropagationMode', DD_DBM_PROPAGATION_MODE)
571
+ setString(target, 'dogstatsd.hostname', DD_DOGSTATSD_HOST)
572
+ setString(target, 'dogstatsd.port', DD_DOGSTATSD_PORT)
573
+ setBoolean(target, 'dsmEnabled', DD_DATA_STREAMS_ENABLED)
765
574
  target['dynamicInstrumentation.captureTimeoutMs'] = maybeInt(DD_DYNAMIC_INSTRUMENTATION_CAPTURE_TIMEOUT_MS)
766
575
  unprocessedTarget['dynamicInstrumentation.captureTimeoutMs'] = DD_DYNAMIC_INSTRUMENTATION_CAPTURE_TIMEOUT_MS
767
- this.#setBoolean(target, 'dynamicInstrumentation.enabled', DD_DYNAMIC_INSTRUMENTATION_ENABLED)
768
- this.#setString(target, 'dynamicInstrumentation.probeFile', DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE)
769
- this.#setArray(target, 'dynamicInstrumentation.redactedIdentifiers',
576
+ setBoolean(target, 'dynamicInstrumentation.enabled', DD_DYNAMIC_INSTRUMENTATION_ENABLED)
577
+ setString(target, 'dynamicInstrumentation.probeFile', DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE)
578
+ setArray(target, 'dynamicInstrumentation.redactedIdentifiers',
770
579
  DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS)
771
- this.#setArray(
580
+ setArray(
772
581
  target,
773
582
  'dynamicInstrumentation.redactionExcludedIdentifiers',
774
583
  DD_DYNAMIC_INSTRUMENTATION_REDACTION_EXCLUDED_IDENTIFIERS
@@ -776,8 +585,8 @@ class Config {
776
585
  target['dynamicInstrumentation.uploadIntervalSeconds'] =
777
586
  maybeFloat(DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS)
778
587
  unprocessedTarget['dynamicInstrumentation.uploadInterval'] = DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS
779
- this.#setString(target, 'env', DD_ENV || tags.env)
780
- this.#setBoolean(
588
+ setString(target, 'env', DD_ENV || tags.env)
589
+ setBoolean(
781
590
  target,
782
591
  'experimental.flaggingProvider.enabled',
783
592
  DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED
@@ -786,17 +595,17 @@ class Config {
786
595
  target['experimental.flaggingProvider.initializationTimeoutMs'] =
787
596
  maybeInt(DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS)
788
597
  }
789
- this.#setBoolean(target, 'traceEnabled', DD_TRACE_ENABLED)
790
- this.#setBoolean(target, 'experimental.aiguard.enabled', DD_AI_GUARD_ENABLED)
791
- this.#setString(target, 'experimental.aiguard.endpoint', DD_AI_GUARD_ENDPOINT)
598
+ setBoolean(target, 'traceEnabled', DD_TRACE_ENABLED)
599
+ setBoolean(target, 'experimental.aiguard.enabled', DD_AI_GUARD_ENABLED)
600
+ setString(target, 'experimental.aiguard.endpoint', DD_AI_GUARD_ENDPOINT)
792
601
  target['experimental.aiguard.maxContentSize'] = maybeInt(DD_AI_GUARD_MAX_CONTENT_SIZE)
793
602
  unprocessedTarget['experimental.aiguard.maxContentSize'] = DD_AI_GUARD_MAX_CONTENT_SIZE
794
603
  target['experimental.aiguard.maxMessagesLength'] = maybeInt(DD_AI_GUARD_MAX_MESSAGES_LENGTH)
795
604
  unprocessedTarget['experimental.aiguard.maxMessagesLength'] = DD_AI_GUARD_MAX_MESSAGES_LENGTH
796
605
  target['experimental.aiguard.timeout'] = maybeInt(DD_AI_GUARD_TIMEOUT)
797
606
  unprocessedTarget['experimental.aiguard.timeout'] = DD_AI_GUARD_TIMEOUT
798
- this.#setBoolean(target, 'experimental.enableGetRumData', DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED)
799
- this.#setString(target, 'experimental.exporter', DD_TRACE_EXPERIMENTAL_EXPORTER)
607
+ setBoolean(target, 'experimental.enableGetRumData', DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED)
608
+ setString(target, 'experimental.exporter', DD_TRACE_EXPERIMENTAL_EXPORTER)
800
609
  if (AWS_LAMBDA_FUNCTION_NAME) {
801
610
  target.flushInterval = 0
802
611
  } else if (DD_TRACE_FLUSH_INTERVAL) {
@@ -804,54 +613,54 @@ class Config {
804
613
  }
805
614
  target.flushMinSpans = maybeInt(DD_TRACE_PARTIAL_FLUSH_MIN_SPANS)
806
615
  unprocessedTarget.flushMinSpans = DD_TRACE_PARTIAL_FLUSH_MIN_SPANS
807
- this.#setBoolean(target, 'gitMetadataEnabled', DD_TRACE_GIT_METADATA_ENABLED)
808
- this.#setIntegerRangeSet(target, 'grpc.client.error.statuses', DD_GRPC_CLIENT_ERROR_STATUSES)
809
- this.#setIntegerRangeSet(target, 'grpc.server.error.statuses', DD_GRPC_SERVER_ERROR_STATUSES)
810
- this.#setArray(target, 'headerTags', DD_TRACE_HEADER_TAGS)
616
+ setBoolean(target, 'gitMetadataEnabled', DD_TRACE_GIT_METADATA_ENABLED)
617
+ setIntegerRangeSet(target, 'grpc.client.error.statuses', DD_GRPC_CLIENT_ERROR_STATUSES)
618
+ setIntegerRangeSet(target, 'grpc.server.error.statuses', DD_GRPC_SERVER_ERROR_STATUSES)
619
+ setArray(target, 'headerTags', DD_TRACE_HEADER_TAGS)
811
620
  target['heapSnapshot.count'] = maybeInt(DD_HEAP_SNAPSHOT_COUNT)
812
- this.#setString(target, 'heapSnapshot.destination', DD_HEAP_SNAPSHOT_DESTINATION)
621
+ setString(target, 'heapSnapshot.destination', DD_HEAP_SNAPSHOT_DESTINATION)
813
622
  target['heapSnapshot.interval'] = maybeInt(DD_HEAP_SNAPSHOT_INTERVAL)
814
- this.#setString(target, 'hostname', DD_AGENT_HOST)
623
+ setString(target, 'hostname', DD_AGENT_HOST)
815
624
  target['iast.dbRowsToTaint'] = maybeInt(DD_IAST_DB_ROWS_TO_TAINT)
816
- this.#setBoolean(target, 'iast.deduplicationEnabled', DD_IAST_DEDUPLICATION_ENABLED)
817
- this.#setBoolean(target, 'iast.enabled', DD_IAST_ENABLED)
625
+ setBoolean(target, 'iast.deduplicationEnabled', DD_IAST_DEDUPLICATION_ENABLED)
626
+ setBoolean(target, 'iast.enabled', DD_IAST_ENABLED)
818
627
  target['iast.maxConcurrentRequests'] = maybeInt(DD_IAST_MAX_CONCURRENT_REQUESTS)
819
628
  unprocessedTarget['iast.maxConcurrentRequests'] = DD_IAST_MAX_CONCURRENT_REQUESTS
820
629
  target['iast.maxContextOperations'] = maybeInt(DD_IAST_MAX_CONTEXT_OPERATIONS)
821
630
  unprocessedTarget['iast.maxContextOperations'] = DD_IAST_MAX_CONTEXT_OPERATIONS
822
- this.#setBoolean(target, 'iast.redactionEnabled', DD_IAST_REDACTION_ENABLED && !isFalse(DD_IAST_REDACTION_ENABLED))
823
- this.#setString(target, 'iast.redactionNamePattern', DD_IAST_REDACTION_NAME_PATTERN)
824
- this.#setString(target, 'iast.redactionValuePattern', DD_IAST_REDACTION_VALUE_PATTERN)
631
+ setBoolean(target, 'iast.redactionEnabled', DD_IAST_REDACTION_ENABLED && !isFalse(DD_IAST_REDACTION_ENABLED))
632
+ setString(target, 'iast.redactionNamePattern', DD_IAST_REDACTION_NAME_PATTERN)
633
+ setString(target, 'iast.redactionValuePattern', DD_IAST_REDACTION_VALUE_PATTERN)
825
634
  const iastRequestSampling = maybeInt(DD_IAST_REQUEST_SAMPLING)
826
635
  if (iastRequestSampling !== undefined && iastRequestSampling > -1 && iastRequestSampling < 101) {
827
636
  target['iast.requestSampling'] = iastRequestSampling
828
637
  }
829
638
  unprocessedTarget['iast.requestSampling'] = DD_IAST_REQUEST_SAMPLING
830
- this.#setString(target, 'iast.securityControlsConfiguration', DD_IAST_SECURITY_CONTROLS_CONFIGURATION)
831
- this.#setString(target, 'iast.telemetryVerbosity', DD_IAST_TELEMETRY_VERBOSITY)
832
- this.#setBoolean(target, 'iast.stackTrace.enabled', DD_IAST_STACK_TRACE_ENABLED)
833
- this.#setString(target, 'installSignature.id', DD_INSTRUMENTATION_INSTALL_ID)
834
- this.#setString(target, 'installSignature.time', DD_INSTRUMENTATION_INSTALL_TIME)
835
- this.#setString(target, 'installSignature.type', DD_INSTRUMENTATION_INSTALL_TYPE)
836
- this.#setArray(target, 'injectionEnabled', DD_INJECTION_ENABLED)
639
+ setString(target, 'iast.securityControlsConfiguration', DD_IAST_SECURITY_CONTROLS_CONFIGURATION)
640
+ setString(target, 'iast.telemetryVerbosity', DD_IAST_TELEMETRY_VERBOSITY)
641
+ setBoolean(target, 'iast.stackTrace.enabled', DD_IAST_STACK_TRACE_ENABLED)
642
+ setString(target, 'installSignature.id', DD_INSTRUMENTATION_INSTALL_ID)
643
+ setString(target, 'installSignature.time', DD_INSTRUMENTATION_INSTALL_TIME)
644
+ setString(target, 'installSignature.type', DD_INSTRUMENTATION_INSTALL_TYPE)
645
+ setArray(target, 'injectionEnabled', DD_INJECTION_ENABLED)
837
646
  if (DD_INJECTION_ENABLED !== undefined) {
838
- this.#setString(target, 'instrumentationSource', DD_INJECTION_ENABLED ? 'ssi' : 'manual')
647
+ setString(target, 'instrumentationSource', DD_INJECTION_ENABLED ? 'ssi' : 'manual')
839
648
  }
840
- this.#setBoolean(target, 'injectForce', DD_INJECT_FORCE)
841
- this.#setBoolean(target, 'isAzureFunction', getIsAzureFunction())
842
- this.#setBoolean(target, 'isGCPFunction', getIsGCPFunction())
843
- this.#setBoolean(target, 'gcpPubSubPushSubscriptionEnabled', enableGCPPubSubPushSubscription())
649
+ setBoolean(target, 'injectForce', DD_INJECT_FORCE)
650
+ setBoolean(target, 'isAzureFunction', getIsAzureFunction())
651
+ setBoolean(target, 'isGCPFunction', getIsGCPFunction())
652
+ setBoolean(target, 'gcpPubSubPushSubscriptionEnabled', enableGCPPubSubPushSubscription())
844
653
  target['langchain.spanCharLimit'] = maybeInt(DD_LANGCHAIN_SPAN_CHAR_LIMIT)
845
654
  target['langchain.spanPromptCompletionSampleRate'] = maybeFloat(DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
846
- this.#setBoolean(target, 'legacyBaggageEnabled', DD_TRACE_LEGACY_BAGGAGE_ENABLED)
847
- this.#setBoolean(target, 'llmobs.agentlessEnabled', DD_LLMOBS_AGENTLESS_ENABLED)
848
- this.#setBoolean(target, 'llmobs.enabled', DD_LLMOBS_ENABLED)
849
- this.#setString(target, 'llmobs.mlApp', DD_LLMOBS_ML_APP)
850
- this.#setBoolean(target, 'logInjection', DD_LOGS_INJECTION)
655
+ setBoolean(target, 'legacyBaggageEnabled', DD_TRACE_LEGACY_BAGGAGE_ENABLED)
656
+ setBoolean(target, 'llmobs.agentlessEnabled', DD_LLMOBS_AGENTLESS_ENABLED)
657
+ setBoolean(target, 'llmobs.enabled', DD_LLMOBS_ENABLED)
658
+ setString(target, 'llmobs.mlApp', DD_LLMOBS_ML_APP)
659
+ setBoolean(target, 'logInjection', DD_LOGS_INJECTION)
851
660
  // Requires an accompanying DD_APM_OBFUSCATION_MEMCACHED_KEEP_COMMAND=true in the agent
852
- this.#setBoolean(target, 'memcachedCommandEnabled', DD_TRACE_MEMCACHED_COMMAND_ENABLED)
853
- this.#setBoolean(target, 'middlewareTracingEnabled', DD_TRACE_MIDDLEWARE_TRACING_ENABLED)
854
- this.#setBoolean(target, 'openAiLogsEnabled', DD_OPENAI_LOGS_ENABLED)
661
+ setBoolean(target, 'memcachedCommandEnabled', DD_TRACE_MEMCACHED_COMMAND_ENABLED)
662
+ setBoolean(target, 'middlewareTracingEnabled', DD_TRACE_MIDDLEWARE_TRACING_ENABLED)
663
+ setBoolean(target, 'openAiLogsEnabled', DD_OPENAI_LOGS_ENABLED)
855
664
  target['openai.spanCharLimit'] = maybeInt(DD_OPENAI_SPAN_CHAR_LIMIT)
856
665
  unprocessedTarget.openaiSpanCharLimit = DD_OPENAI_SPAN_CHAR_LIMIT
857
666
  if (DD_TRACE_PEER_SERVICE_MAPPING) {
@@ -860,44 +669,44 @@ class Config {
860
669
  )
861
670
  unprocessedTarget.peerServiceMapping = DD_TRACE_PEER_SERVICE_MAPPING
862
671
  }
863
- this.#setString(target, 'port', DD_TRACE_AGENT_PORT)
672
+ setString(target, 'port', DD_TRACE_AGENT_PORT)
864
673
  const profilingEnabled = normalizeProfilingEnabledValue(DD_PROFILING_ENABLED)
865
- this.#setString(target, 'profiling.enabled', profilingEnabled)
866
- this.#setString(target, 'profiling.exporters', DD_PROFILING_EXPORTERS)
867
- this.#setBoolean(target, 'profiling.sourceMap', DD_PROFILING_SOURCE_MAP && !isFalse(DD_PROFILING_SOURCE_MAP))
674
+ setString(target, 'profiling.enabled', profilingEnabled)
675
+ setString(target, 'profiling.exporters', DD_PROFILING_EXPORTERS)
676
+ setBoolean(target, 'profiling.sourceMap', DD_PROFILING_SOURCE_MAP && !isFalse(DD_PROFILING_SOURCE_MAP))
868
677
  if (DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD) {
869
678
  // This is only used in testing to not have to wait 30s
870
679
  target['profiling.longLivedThreshold'] = Number(DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD)
871
680
  }
872
681
 
873
- this.#setString(target, 'protocolVersion', DD_TRACE_AGENT_PROTOCOL_VERSION)
874
- this.#setString(target, 'queryStringObfuscation', DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP)
875
- this.#setBoolean(target, 'remoteConfig.enabled', DD_REMOTE_CONFIGURATION_ENABLED)
682
+ setString(target, 'protocolVersion', DD_TRACE_AGENT_PROTOCOL_VERSION)
683
+ setString(target, 'queryStringObfuscation', DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP)
684
+ setBoolean(target, 'remoteConfig.enabled', DD_REMOTE_CONFIGURATION_ENABLED)
876
685
  target['remoteConfig.pollInterval'] = maybeFloat(DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS)
877
686
  unprocessedTarget['remoteConfig.pollInterval'] = DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS
878
- this.#setBoolean(target, 'reportHostname', DD_TRACE_REPORT_HOSTNAME)
687
+ setBoolean(target, 'reportHostname', DD_TRACE_REPORT_HOSTNAME)
879
688
  if (DD_TRACE_RESOURCE_RENAMING_ENABLED !== undefined) {
880
- this.#setBoolean(target, 'resourceRenamingEnabled', DD_TRACE_RESOURCE_RENAMING_ENABLED)
689
+ setBoolean(target, 'resourceRenamingEnabled', DD_TRACE_RESOURCE_RENAMING_ENABLED)
881
690
  }
882
691
  // only used to explicitly set runtimeMetrics to false
883
692
  const otelSetRuntimeMetrics = String(OTEL_METRICS_EXPORTER).toLowerCase() === 'none'
884
693
  ? false
885
694
  : undefined
886
- this.#setBoolean(target, 'runtimeMetrics.enabled', DD_RUNTIME_METRICS_ENABLED ||
695
+ setBoolean(target, 'runtimeMetrics.enabled', DD_RUNTIME_METRICS_ENABLED ||
887
696
  otelSetRuntimeMetrics)
888
- this.#setBoolean(target, 'runtimeMetrics.eventLoop', DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED)
889
- this.#setBoolean(target, 'runtimeMetrics.gc', DD_RUNTIME_METRICS_GC_ENABLED)
890
- this.#setBoolean(target, 'runtimeMetricsRuntimeId', DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED)
891
- this.#setArray(target, 'sampler.spanSamplingRules', reformatSpanSamplingRules(
697
+ setBoolean(target, 'runtimeMetrics.eventLoop', DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED)
698
+ setBoolean(target, 'runtimeMetrics.gc', DD_RUNTIME_METRICS_GC_ENABLED)
699
+ setBoolean(target, 'runtimeMetricsRuntimeId', DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED)
700
+ setArray(target, 'sampler.spanSamplingRules', reformatSpanSamplingRules(
892
701
  maybeJsonFile(DD_SPAN_SAMPLING_RULES_FILE) ??
893
702
  safeJsonParse(DD_SPAN_SAMPLING_RULES)
894
703
  ))
895
- this.#setUnit(target, 'sampleRate', DD_TRACE_SAMPLE_RATE ||
704
+ setUnit(target, 'sampleRate', DD_TRACE_SAMPLE_RATE ||
896
705
  getFromOtelSamplerMap(OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG))
897
706
  target['sampler.rateLimit'] = DD_TRACE_RATE_LIMIT
898
- this.#setSamplingRule(target, 'sampler.rules', safeJsonParse(DD_TRACE_SAMPLING_RULES))
707
+ setSamplingRule(target, 'sampler.rules', safeJsonParse(DD_TRACE_SAMPLING_RULES))
899
708
  unprocessedTarget['sampler.rules'] = DD_TRACE_SAMPLING_RULES
900
- this.#setString(target, 'scope', DD_TRACE_SCOPE)
709
+ setString(target, 'scope', DD_TRACE_SCOPE)
901
710
  // Priority:
902
711
  // DD_SERVICE > tags.service > OTEL_SERVICE_NAME > NX_TASK_TARGET_PROJECT (if DD_ENABLE_NX_SERVICE_NAME) > default
903
712
  let serviceName = DD_SERVICE || tags.service || OTEL_SERVICE_NAME
@@ -907,57 +716,56 @@ class Config {
907
716
  } else if (DD_MAJOR < 6) {
908
717
  // Warn about v6 behavior change for Nx projects
909
718
  log.warn(
910
- 'NX_TASK_TARGET_PROJECT is set but no service name was configured. ' +
911
- 'In v6, NX_TASK_TARGET_PROJECT will be used as the default service name. ' +
912
- 'Set DD_ENABLE_NX_SERVICE_NAME=true to opt-in to this behavior now, or set a service name explicitly.'
719
+ // eslint-disable-next-line @stylistic/max-len
720
+ 'NX_TASK_TARGET_PROJECT is set but no service name was configured. In v6, NX_TASK_TARGET_PROJECT will be used as the default service name. Set DD_ENABLE_NX_SERVICE_NAME=true to opt-in to this behavior now, or set a service name explicitly.'
913
721
  )
914
722
  }
915
723
  }
916
- this.#setString(target, 'service', serviceName)
724
+ setString(target, 'service', serviceName)
917
725
  if (DD_SERVICE_MAPPING) {
918
726
  target.serviceMapping = Object.fromEntries(
919
727
  DD_SERVICE_MAPPING.split(',').map(x => x.trim().split(':'))
920
728
  )
921
729
  }
922
- this.#setString(target, 'site', DD_SITE)
730
+ setString(target, 'site', DD_SITE)
923
731
  if (DD_TRACE_SPAN_ATTRIBUTE_SCHEMA) {
924
- this.#setString(target, 'spanAttributeSchema', validateNamingVersion(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA))
732
+ setString(target, 'spanAttributeSchema', validateNamingVersion(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA))
925
733
  unprocessedTarget.spanAttributeSchema = DD_TRACE_SPAN_ATTRIBUTE_SCHEMA
926
734
  }
927
735
  // 0: disabled, 1: logging, 2: garbage collection + logging
928
736
  target.spanLeakDebug = maybeInt(DD_TRACE_SPAN_LEAK_DEBUG)
929
- this.#setBoolean(target, 'spanRemoveIntegrationFromService', DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED)
930
- this.#setBoolean(target, 'startupLogs', DD_TRACE_STARTUP_LOGS)
931
- this.#setTags(target, 'tags', tags)
737
+ setBoolean(target, 'spanRemoveIntegrationFromService', DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED)
738
+ setBoolean(target, 'startupLogs', DD_TRACE_STARTUP_LOGS)
739
+ setTags(target, 'tags', tags)
932
740
  target.tagsHeaderMaxLength = DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH
933
- this.#setBoolean(target, 'telemetry.enabled', DD_INSTRUMENTATION_TELEMETRY_ENABLED)
934
- this.#setString(target, 'instrumentation_config_id', DD_INSTRUMENTATION_CONFIG_ID)
935
- this.#setBoolean(target, 'telemetry.debug', DD_TELEMETRY_DEBUG)
936
- this.#setBoolean(target, 'telemetry.dependencyCollection', DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED)
741
+ setBoolean(target, 'telemetry.enabled', DD_INSTRUMENTATION_TELEMETRY_ENABLED)
742
+ setString(target, 'instrumentation_config_id', DD_INSTRUMENTATION_CONFIG_ID)
743
+ setBoolean(target, 'telemetry.debug', DD_TELEMETRY_DEBUG)
744
+ setBoolean(target, 'telemetry.dependencyCollection', DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED)
937
745
  target['telemetry.heartbeatInterval'] = maybeInt(Math.floor(DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000))
938
746
  unprocessedTarget['telemetry.heartbeatInterval'] = DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000
939
- this.#setBoolean(target, 'telemetry.logCollection', DD_TELEMETRY_LOG_COLLECTION_ENABLED)
940
- this.#setBoolean(target, 'telemetry.metrics', DD_TELEMETRY_METRICS_ENABLED)
941
- this.#setBoolean(target, 'traceId128BitGenerationEnabled', DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED)
942
- this.#setBoolean(target, 'traceId128BitLoggingEnabled', DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED)
747
+ setBoolean(target, 'telemetry.logCollection', DD_TELEMETRY_LOG_COLLECTION_ENABLED)
748
+ setBoolean(target, 'telemetry.metrics', DD_TELEMETRY_METRICS_ENABLED)
749
+ setBoolean(target, 'traceId128BitGenerationEnabled', DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED)
750
+ setBoolean(target, 'traceId128BitLoggingEnabled', DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED)
943
751
  warnIfPropagationStyleConflict(
944
752
  DD_TRACE_PROPAGATION_STYLE,
945
753
  DD_TRACE_PROPAGATION_STYLE_INJECT,
946
754
  DD_TRACE_PROPAGATION_STYLE_EXTRACT
947
755
  )
948
756
  if (DD_TRACE_PROPAGATION_STYLE !== undefined) {
949
- this.#setArray(target, 'tracePropagationStyle.inject', normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE))
950
- this.#setArray(target, 'tracePropagationStyle.extract', normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE))
757
+ setArray(target, 'tracePropagationStyle.inject', normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE))
758
+ setArray(target, 'tracePropagationStyle.extract', normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE))
951
759
  }
952
760
  if (DD_TRACE_PROPAGATION_STYLE_INJECT !== undefined) {
953
- this.#setArray(target, 'tracePropagationStyle.inject',
761
+ setArray(target, 'tracePropagationStyle.inject',
954
762
  normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE_INJECT))
955
763
  }
956
764
  if (DD_TRACE_PROPAGATION_STYLE_EXTRACT !== undefined) {
957
- this.#setArray(target, 'tracePropagationStyle.extract',
765
+ setArray(target, 'tracePropagationStyle.extract',
958
766
  normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE_EXTRACT))
959
767
  }
960
- this.#setBoolean(target, 'tracePropagationExtractFirst', DD_TRACE_PROPAGATION_EXTRACT_FIRST)
768
+ setBoolean(target, 'tracePropagationExtractFirst', DD_TRACE_PROPAGATION_EXTRACT_FIRST)
961
769
  if (DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT !== undefined) {
962
770
  const stringPropagationBehaviorExtract = String(DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT)
963
771
  target.tracePropagationBehaviorExtract =
@@ -973,7 +781,7 @@ class Config {
973
781
  const useDdStyle = DD_TRACE_PROPAGATION_STYLE ||
974
782
  DD_TRACE_PROPAGATION_STYLE_INJECT ||
975
783
  DD_TRACE_PROPAGATION_STYLE_EXTRACT
976
- this.#setBoolean(target, 'tracePropagationStyle.otelPropagators',
784
+ setBoolean(target, 'tracePropagationStyle.otelPropagators',
977
785
  useDdStyle ? false : !!OTEL_PROPAGATORS)
978
786
 
979
787
  // Use OTEL_PROPAGATORS if no DD-specific vars are set
@@ -988,21 +796,21 @@ class Config {
988
796
  }
989
797
  // Set inject/extract from OTEL_PROPAGATORS
990
798
  if (otelStyles) {
991
- this.#setArray(target, 'tracePropagationStyle.inject', otelStyles)
992
- this.#setArray(target, 'tracePropagationStyle.extract', otelStyles)
799
+ setArray(target, 'tracePropagationStyle.inject', otelStyles)
800
+ setArray(target, 'tracePropagationStyle.extract', otelStyles)
993
801
  }
994
802
  }
995
803
  }
996
- this.#setBoolean(target, 'traceWebsocketMessagesEnabled', DD_TRACE_WEBSOCKET_MESSAGES_ENABLED)
997
- this.#setBoolean(target, 'traceWebsocketMessagesInheritSampling', DD_TRACE_WEBSOCKET_MESSAGES_INHERIT_SAMPLING)
998
- this.#setBoolean(target, 'traceWebsocketMessagesSeparateTraces', DD_TRACE_WEBSOCKET_MESSAGES_SEPARATE_TRACES)
999
- this.#setBoolean(target, 'tracing', DD_TRACING_ENABLED)
1000
- this.#setString(target, 'version', DD_VERSION || tags.version)
1001
- this.#setBoolean(target, 'inferredProxyServicesEnabled', DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED)
1002
- this.#setBoolean(target, 'trace.aws.addSpanPointers', DD_TRACE_AWS_ADD_SPAN_POINTERS)
1003
- this.#setString(target, 'trace.dynamoDb.tablePrimaryKeys', DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS)
1004
- this.#setArray(target, 'graphqlErrorExtensions', DD_TRACE_GRAPHQL_ERROR_EXTENSIONS)
1005
- this.#setBoolean(target, 'trace.nativeSpanEvents', DD_TRACE_NATIVE_SPAN_EVENTS)
804
+ setBoolean(target, 'traceWebsocketMessagesEnabled', DD_TRACE_WEBSOCKET_MESSAGES_ENABLED)
805
+ setBoolean(target, 'traceWebsocketMessagesInheritSampling', DD_TRACE_WEBSOCKET_MESSAGES_INHERIT_SAMPLING)
806
+ setBoolean(target, 'traceWebsocketMessagesSeparateTraces', DD_TRACE_WEBSOCKET_MESSAGES_SEPARATE_TRACES)
807
+ setBoolean(target, 'tracing', DD_TRACING_ENABLED)
808
+ setString(target, 'version', DD_VERSION || tags.version)
809
+ setBoolean(target, 'inferredProxyServicesEnabled', DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED)
810
+ setBoolean(target, 'trace.aws.addSpanPointers', DD_TRACE_AWS_ADD_SPAN_POINTERS)
811
+ setString(target, 'trace.dynamoDb.tablePrimaryKeys', DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS)
812
+ setArray(target, 'graphqlErrorExtensions', DD_TRACE_GRAPHQL_ERROR_EXTENSIONS)
813
+ setBoolean(target, 'trace.nativeSpanEvents', DD_TRACE_NATIVE_SPAN_EVENTS)
1006
814
  target['vertexai.spanPromptCompletionSampleRate'] = maybeFloat(DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
1007
815
  target['vertexai.spanCharLimit'] = maybeInt(DD_VERTEXAI_SPAN_CHAR_LIMIT)
1008
816
  }
@@ -1015,11 +823,11 @@ class Config {
1015
823
 
1016
824
  tagger.add(tags, options.tags)
1017
825
 
1018
- this.#setBoolean(opts, 'apmTracingEnabled', options.apmTracingEnabled ??
826
+ setBoolean(opts, 'apmTracingEnabled', options.apmTracingEnabled ??
1019
827
  (options.experimental?.appsec?.standalone && !options.experimental.appsec.standalone.enabled)
1020
828
  )
1021
- this.#setBoolean(opts, 'appsec.apiSecurity.enabled', options.appsec?.apiSecurity?.enabled)
1022
- this.#setBoolean(opts, 'appsec.apiSecurity.endpointCollectionEnabled',
829
+ setBoolean(opts, 'appsec.apiSecurity.enabled', options.appsec?.apiSecurity?.enabled)
830
+ setBoolean(opts, 'appsec.apiSecurity.endpointCollectionEnabled',
1023
831
  options.appsec?.apiSecurity?.endpointCollectionEnabled)
1024
832
  opts['appsec.apiSecurity.endpointCollectionMessageLimit'] =
1025
833
  maybeInt(options.appsec?.apiSecurity?.endpointCollectionMessageLimit)
@@ -1028,41 +836,41 @@ class Config {
1028
836
  this.#optsUnprocessed['appsec.blockedTemplateHtml'] = options.appsec?.blockedTemplateHtml
1029
837
  opts['appsec.blockedTemplateJson'] = maybeFile(options.appsec?.blockedTemplateJson)
1030
838
  this.#optsUnprocessed['appsec.blockedTemplateJson'] = options.appsec?.blockedTemplateJson
1031
- this.#setBoolean(opts, 'appsec.enabled', options.appsec?.enabled)
1032
- this.#setString(opts, 'appsec.eventTracking.mode', options.appsec?.eventTracking?.mode)
1033
- this.#setBoolean(
839
+ setBoolean(opts, 'appsec.enabled', options.appsec?.enabled)
840
+ setString(opts, 'appsec.eventTracking.mode', options.appsec?.eventTracking?.mode)
841
+ setBoolean(
1034
842
  opts,
1035
843
  'appsec.extendedHeadersCollection.enabled',
1036
844
  options.appsec?.extendedHeadersCollection?.enabled
1037
845
  )
1038
- this.#setBoolean(
846
+ setBoolean(
1039
847
  opts,
1040
848
  'appsec.extendedHeadersCollection.redaction',
1041
849
  options.appsec?.extendedHeadersCollection?.redaction
1042
850
  )
1043
851
  opts['appsec.extendedHeadersCollection.maxHeaders'] = options.appsec?.extendedHeadersCollection?.maxHeaders
1044
- this.#setString(opts, 'appsec.obfuscatorKeyRegex', options.appsec?.obfuscatorKeyRegex)
1045
- this.#setString(opts, 'appsec.obfuscatorValueRegex', options.appsec?.obfuscatorValueRegex)
1046
- this.#setBoolean(opts, 'appsec.rasp.enabled', options.appsec?.rasp?.enabled)
1047
- this.#setBoolean(opts, 'appsec.rasp.bodyCollection', options.appsec?.rasp?.bodyCollection)
852
+ setString(opts, 'appsec.obfuscatorKeyRegex', options.appsec?.obfuscatorKeyRegex)
853
+ setString(opts, 'appsec.obfuscatorValueRegex', options.appsec?.obfuscatorValueRegex)
854
+ setBoolean(opts, 'appsec.rasp.enabled', options.appsec?.rasp?.enabled)
855
+ setBoolean(opts, 'appsec.rasp.bodyCollection', options.appsec?.rasp?.bodyCollection)
1048
856
  opts['appsec.rateLimit'] = maybeInt(options.appsec?.rateLimit)
1049
857
  this.#optsUnprocessed['appsec.rateLimit'] = options.appsec?.rateLimit
1050
- this.#setString(opts, 'appsec.rules', options.appsec?.rules)
1051
- this.#setBoolean(opts, 'appsec.stackTrace.enabled', options.appsec?.stackTrace?.enabled)
858
+ setString(opts, 'appsec.rules', options.appsec?.rules)
859
+ setBoolean(opts, 'appsec.stackTrace.enabled', options.appsec?.stackTrace?.enabled)
1052
860
  opts['appsec.stackTrace.maxDepth'] = maybeInt(options.appsec?.stackTrace?.maxDepth)
1053
861
  this.#optsUnprocessed['appsec.stackTrace.maxDepth'] = options.appsec?.stackTrace?.maxDepth
1054
862
  opts['appsec.stackTrace.maxStackTraces'] = maybeInt(options.appsec?.stackTrace?.maxStackTraces)
1055
863
  this.#optsUnprocessed['appsec.stackTrace.maxStackTraces'] = options.appsec?.stackTrace?.maxStackTraces
1056
864
  opts['appsec.wafTimeout'] = maybeInt(options.appsec?.wafTimeout)
1057
865
  this.#optsUnprocessed['appsec.wafTimeout'] = options.appsec?.wafTimeout
1058
- this.#setBoolean(opts, 'clientIpEnabled', options.clientIpEnabled)
1059
- this.#setString(opts, 'clientIpHeader', options.clientIpHeader?.toLowerCase())
866
+ setBoolean(opts, 'clientIpEnabled', options.clientIpEnabled)
867
+ setString(opts, 'clientIpHeader', options.clientIpHeader?.toLowerCase())
1060
868
  if (options.cloudPayloadTagging?.request || options.cloudPayloadTagging?.response) {
1061
869
  if (options.cloudPayloadTagging.request) {
1062
- this.#setBoolean(opts, 'cloudPayloadTagging.requestsEnabled', true)
870
+ setBoolean(opts, 'cloudPayloadTagging.requestsEnabled', true)
1063
871
  }
1064
872
  if (options.cloudPayloadTagging.response) {
1065
- this.#setBoolean(opts, 'cloudPayloadTagging.responsesEnabled', true)
873
+ setBoolean(opts, 'cloudPayloadTagging.responsesEnabled', true)
1066
874
  }
1067
875
  opts['cloudPayloadTagging.rules'] = appendRules(
1068
876
  splitJSONPathRules(options.cloudPayloadTagging.request),
@@ -1070,37 +878,37 @@ class Config {
1070
878
  )
1071
879
  }
1072
880
  if (options.cloudPayloadTagging?.requestsEnabled !== undefined) {
1073
- this.#setBoolean(opts, 'cloudPayloadTagging.requestsEnabled', options.cloudPayloadTagging.requestsEnabled)
881
+ setBoolean(opts, 'cloudPayloadTagging.requestsEnabled', options.cloudPayloadTagging.requestsEnabled)
1074
882
  }
1075
883
  if (options.cloudPayloadTagging?.responsesEnabled !== undefined) {
1076
- this.#setBoolean(opts, 'cloudPayloadTagging.responsesEnabled', options.cloudPayloadTagging.responsesEnabled)
884
+ setBoolean(opts, 'cloudPayloadTagging.responsesEnabled', options.cloudPayloadTagging.responsesEnabled)
1077
885
  }
1078
886
  opts['cloudPayloadTagging.maxDepth'] = maybeInt(options.cloudPayloadTagging?.maxDepth)
1079
887
  opts.baggageMaxBytes = options.baggageMaxBytes
1080
888
  opts.baggageMaxItems = options.baggageMaxItems
1081
889
  opts.baggageTagKeys = options.baggageTagKeys
1082
- this.#setBoolean(opts, 'codeOriginForSpans.enabled', options.codeOriginForSpans?.enabled)
1083
- this.#setBoolean(
890
+ setBoolean(opts, 'codeOriginForSpans.enabled', options.codeOriginForSpans?.enabled)
891
+ setBoolean(
1084
892
  opts,
1085
893
  'codeOriginForSpans.experimental.exit_spans.enabled',
1086
894
  options.codeOriginForSpans?.experimental?.exit_spans?.enabled
1087
895
  )
1088
- this.#setString(opts, 'dbmPropagationMode', options.dbmPropagationMode)
896
+ setString(opts, 'dbmPropagationMode', options.dbmPropagationMode)
1089
897
  if (options.dogstatsd) {
1090
- this.#setString(opts, 'dogstatsd.hostname', options.dogstatsd.hostname)
1091
- this.#setString(opts, 'dogstatsd.port', options.dogstatsd.port)
898
+ setString(opts, 'dogstatsd.hostname', options.dogstatsd.hostname)
899
+ setString(opts, 'dogstatsd.port', options.dogstatsd.port)
1092
900
  }
1093
- this.#setBoolean(opts, 'dsmEnabled', options.dsmEnabled)
901
+ setBoolean(opts, 'dsmEnabled', options.dsmEnabled)
1094
902
  opts['dynamicInstrumentation.captureTimeoutMs'] = maybeInt(options.dynamicInstrumentation?.captureTimeoutMs)
1095
903
  this.#optsUnprocessed['dynamicInstrumentation.captureTimeoutMs'] = options.dynamicInstrumentation?.captureTimeoutMs
1096
- this.#setBoolean(opts, 'dynamicInstrumentation.enabled', options.dynamicInstrumentation?.enabled)
1097
- this.#setString(opts, 'dynamicInstrumentation.probeFile', options.dynamicInstrumentation?.probeFile)
1098
- this.#setArray(
904
+ setBoolean(opts, 'dynamicInstrumentation.enabled', options.dynamicInstrumentation?.enabled)
905
+ setString(opts, 'dynamicInstrumentation.probeFile', options.dynamicInstrumentation?.probeFile)
906
+ setArray(
1099
907
  opts,
1100
908
  'dynamicInstrumentation.redactedIdentifiers',
1101
909
  options.dynamicInstrumentation?.redactedIdentifiers
1102
910
  )
1103
- this.#setArray(
911
+ setArray(
1104
912
  opts,
1105
913
  'dynamicInstrumentation.redactionExcludedIdentifiers',
1106
914
  options.dynamicInstrumentation?.redactionExcludedIdentifiers
@@ -1109,18 +917,18 @@ class Config {
1109
917
  maybeFloat(options.dynamicInstrumentation?.uploadIntervalSeconds)
1110
918
  this.#optsUnprocessed['dynamicInstrumentation.uploadIntervalSeconds'] =
1111
919
  options.dynamicInstrumentation?.uploadIntervalSeconds
1112
- this.#setString(opts, 'env', options.env || tags.env)
1113
- this.#setBoolean(opts, 'experimental.aiguard.enabled', options.experimental?.aiguard?.enabled)
1114
- this.#setString(opts, 'experimental.aiguard.endpoint', options.experimental?.aiguard?.endpoint)
920
+ setString(opts, 'env', options.env || tags.env)
921
+ setBoolean(opts, 'experimental.aiguard.enabled', options.experimental?.aiguard?.enabled)
922
+ setString(opts, 'experimental.aiguard.endpoint', options.experimental?.aiguard?.endpoint)
1115
923
  opts['experimental.aiguard.maxMessagesLength'] = maybeInt(options.experimental?.aiguard?.maxMessagesLength)
1116
924
  this.#optsUnprocessed['experimental.aiguard.maxMessagesLength'] = options.experimental?.aiguard?.maxMessagesLength
1117
925
  opts['experimental.aiguard.maxContentSize'] = maybeInt(options.experimental?.aiguard?.maxContentSize)
1118
926
  this.#optsUnprocessed['experimental.aiguard.maxContentSize'] = options.experimental?.aiguard?.maxContentSize
1119
927
  opts['experimental.aiguard.timeout'] = maybeInt(options.experimental?.aiguard?.timeout)
1120
928
  this.#optsUnprocessed['experimental.aiguard.timeout'] = options.experimental?.aiguard?.timeout
1121
- this.#setBoolean(opts, 'experimental.enableGetRumData', options.experimental?.enableGetRumData)
1122
- this.#setString(opts, 'experimental.exporter', options.experimental?.exporter)
1123
- this.#setBoolean(opts, 'experimental.flaggingProvider.enabled', options.experimental?.flaggingProvider?.enabled)
929
+ setBoolean(opts, 'experimental.enableGetRumData', options.experimental?.enableGetRumData)
930
+ setString(opts, 'experimental.exporter', options.experimental?.exporter)
931
+ setBoolean(opts, 'experimental.flaggingProvider.enabled', options.experimental?.flaggingProvider?.enabled)
1124
932
  opts['experimental.flaggingProvider.initializationTimeoutMs'] = maybeInt(
1125
933
  options.experimental?.flaggingProvider?.initializationTimeoutMs
1126
934
  )
@@ -1130,19 +938,19 @@ class Config {
1130
938
  this.#optsUnprocessed.flushInterval = options.flushInterval
1131
939
  opts.flushMinSpans = maybeInt(options.flushMinSpans)
1132
940
  this.#optsUnprocessed.flushMinSpans = options.flushMinSpans
1133
- this.#setArray(opts, 'headerTags', options.headerTags)
1134
- this.#setString(opts, 'hostname', options.hostname)
941
+ setArray(opts, 'headerTags', options.headerTags)
942
+ setString(opts, 'hostname', options.hostname)
1135
943
  opts['iast.dbRowsToTaint'] = maybeInt(options.iast?.dbRowsToTaint)
1136
- this.#setBoolean(opts, 'iast.deduplicationEnabled', options.iast && options.iast.deduplicationEnabled)
1137
- this.#setBoolean(opts, 'iast.enabled',
944
+ setBoolean(opts, 'iast.deduplicationEnabled', options.iast && options.iast.deduplicationEnabled)
945
+ setBoolean(opts, 'iast.enabled',
1138
946
  options.iast && (options.iast === true || options.iast.enabled === true))
1139
947
  opts['iast.maxConcurrentRequests'] = maybeInt(options.iast?.maxConcurrentRequests)
1140
948
  this.#optsUnprocessed['iast.maxConcurrentRequests'] = options.iast?.maxConcurrentRequests
1141
949
  opts['iast.maxContextOperations'] = maybeInt(options.iast?.maxContextOperations)
1142
950
  this.#optsUnprocessed['iast.maxContextOperations'] = options.iast?.maxContextOperations
1143
- this.#setBoolean(opts, 'iast.redactionEnabled', options.iast?.redactionEnabled)
1144
- this.#setString(opts, 'iast.redactionNamePattern', options.iast?.redactionNamePattern)
1145
- this.#setString(opts, 'iast.redactionValuePattern', options.iast?.redactionValuePattern)
951
+ setBoolean(opts, 'iast.redactionEnabled', options.iast?.redactionEnabled)
952
+ setString(opts, 'iast.redactionNamePattern', options.iast?.redactionNamePattern)
953
+ setString(opts, 'iast.redactionValuePattern', options.iast?.redactionValuePattern)
1146
954
  const iastRequestSampling = maybeInt(options.iast?.requestSampling)
1147
955
  if (iastRequestSampling !== undefined && iastRequestSampling > -1 && iastRequestSampling < 101) {
1148
956
  opts['iast.requestSampling'] = iastRequestSampling
@@ -1151,60 +959,60 @@ class Config {
1151
959
  if (DD_MAJOR < 6) {
1152
960
  opts['iast.securityControlsConfiguration'] = options.iast?.securityControlsConfiguration
1153
961
  }
1154
- this.#setBoolean(opts, 'iast.stackTrace.enabled', options.iast?.stackTrace?.enabled)
1155
- this.#setString(opts, 'iast.telemetryVerbosity', options.iast && options.iast.telemetryVerbosity)
1156
- this.#setBoolean(opts, 'isCiVisibility', options.isCiVisibility)
1157
- this.#setBoolean(opts, 'legacyBaggageEnabled', options.legacyBaggageEnabled)
1158
- this.#setBoolean(opts, 'llmobs.agentlessEnabled', options.llmobs?.agentlessEnabled)
1159
- this.#setString(opts, 'llmobs.mlApp', options.llmobs?.mlApp)
1160
- this.#setBoolean(opts, 'logInjection', options.logInjection)
962
+ setBoolean(opts, 'iast.stackTrace.enabled', options.iast?.stackTrace?.enabled)
963
+ setString(opts, 'iast.telemetryVerbosity', options.iast && options.iast.telemetryVerbosity)
964
+ setBoolean(opts, 'isCiVisibility', options.isCiVisibility)
965
+ setBoolean(opts, 'legacyBaggageEnabled', options.legacyBaggageEnabled)
966
+ setBoolean(opts, 'llmobs.agentlessEnabled', options.llmobs?.agentlessEnabled)
967
+ setString(opts, 'llmobs.mlApp', options.llmobs?.mlApp)
968
+ setBoolean(opts, 'logInjection', options.logInjection)
1161
969
  opts.lookup = options.lookup
1162
- this.#setBoolean(opts, 'middlewareTracingEnabled', options.middlewareTracingEnabled)
1163
- this.#setBoolean(opts, 'openAiLogsEnabled', options.openAiLogsEnabled)
970
+ setBoolean(opts, 'middlewareTracingEnabled', options.middlewareTracingEnabled)
971
+ setBoolean(opts, 'openAiLogsEnabled', options.openAiLogsEnabled)
1164
972
  opts.peerServiceMapping = options.peerServiceMapping
1165
- this.#setBoolean(opts, 'plugins', options.plugins)
1166
- this.#setString(opts, 'port', options.port)
973
+ setBoolean(opts, 'plugins', options.plugins)
974
+ setString(opts, 'port', options.port)
1167
975
  const strProfiling = String(options.profiling)
1168
976
  if (['true', 'false', 'auto'].includes(strProfiling)) {
1169
- this.#setString(opts, 'profiling.enabled', strProfiling)
977
+ setString(opts, 'profiling.enabled', strProfiling)
1170
978
  }
1171
- this.#setString(opts, 'protocolVersion', options.protocolVersion)
979
+ setString(opts, 'protocolVersion', options.protocolVersion)
1172
980
  if (options.remoteConfig) {
1173
981
  opts['remoteConfig.pollInterval'] = maybeFloat(options.remoteConfig.pollInterval)
1174
982
  this.#optsUnprocessed['remoteConfig.pollInterval'] = options.remoteConfig.pollInterval
1175
983
  }
1176
- this.#setBoolean(opts, 'reportHostname', options.reportHostname)
1177
- this.#setBoolean(opts, 'runtimeMetrics.enabled', options.runtimeMetrics?.enabled)
1178
- this.#setBoolean(opts, 'runtimeMetrics.eventLoop', options.runtimeMetrics?.eventLoop)
1179
- this.#setBoolean(opts, 'runtimeMetrics.gc', options.runtimeMetrics?.gc)
1180
- this.#setBoolean(opts, 'runtimeMetricsRuntimeId', options.runtimeMetricsRuntimeId)
1181
- this.#setArray(opts, 'sampler.spanSamplingRules', reformatSpanSamplingRules(options.spanSamplingRules))
1182
- this.#setUnit(opts, 'sampleRate', options.sampleRate ?? options.ingestion.sampleRate)
984
+ setBoolean(opts, 'reportHostname', options.reportHostname)
985
+ setBoolean(opts, 'runtimeMetrics.enabled', options.runtimeMetrics?.enabled)
986
+ setBoolean(opts, 'runtimeMetrics.eventLoop', options.runtimeMetrics?.eventLoop)
987
+ setBoolean(opts, 'runtimeMetrics.gc', options.runtimeMetrics?.gc)
988
+ setBoolean(opts, 'runtimeMetricsRuntimeId', options.runtimeMetricsRuntimeId)
989
+ setArray(opts, 'sampler.spanSamplingRules', reformatSpanSamplingRules(options.spanSamplingRules))
990
+ setUnit(opts, 'sampleRate', options.sampleRate ?? options.ingestion.sampleRate)
1183
991
  opts['sampler.rateLimit'] = maybeInt(options.rateLimit ?? options.ingestion.rateLimit)
1184
- this.#setSamplingRule(opts, 'sampler.rules', options.samplingRules)
1185
- this.#setString(opts, 'service', options.service || tags.service)
992
+ setSamplingRule(opts, 'sampler.rules', options.samplingRules)
993
+ setString(opts, 'service', options.service || tags.service)
1186
994
  opts.serviceMapping = options.serviceMapping
1187
- this.#setString(opts, 'site', options.site)
995
+ setString(opts, 'site', options.site)
1188
996
  if (options.spanAttributeSchema) {
1189
- this.#setString(opts, 'spanAttributeSchema', validateNamingVersion(options.spanAttributeSchema))
997
+ setString(opts, 'spanAttributeSchema', validateNamingVersion(options.spanAttributeSchema))
1190
998
  this.#optsUnprocessed.spanAttributeSchema = options.spanAttributeSchema
1191
999
  }
1192
- this.#setBoolean(opts, 'spanRemoveIntegrationFromService', options.spanRemoveIntegrationFromService)
1193
- this.#setBoolean(opts, 'startupLogs', options.startupLogs)
1194
- this.#setTags(opts, 'tags', tags)
1195
- this.#setBoolean(opts, 'traceId128BitGenerationEnabled', options.traceId128BitGenerationEnabled)
1196
- this.#setBoolean(opts, 'traceId128BitLoggingEnabled', options.traceId128BitLoggingEnabled)
1197
- this.#setBoolean(opts, 'traceWebsocketMessagesEnabled', options.traceWebsocketMessagesEnabled)
1198
- this.#setBoolean(opts, 'traceWebsocketMessagesInheritSampling', options.traceWebsocketMessagesInheritSampling)
1199
- this.#setBoolean(opts, 'traceWebsocketMessagesSeparateTraces', options.traceWebsocketMessagesSeparateTraces)
1200
- this.#setString(opts, 'version', options.version || tags.version)
1201
- this.#setBoolean(opts, 'inferredProxyServicesEnabled', options.inferredProxyServicesEnabled)
1202
- this.#setBoolean(opts, 'graphqlErrorExtensions', options.graphqlErrorExtensions)
1203
- this.#setBoolean(opts, 'trace.nativeSpanEvents', options.trace?.nativeSpanEvents)
1000
+ setBoolean(opts, 'spanRemoveIntegrationFromService', options.spanRemoveIntegrationFromService)
1001
+ setBoolean(opts, 'startupLogs', options.startupLogs)
1002
+ setTags(opts, 'tags', tags)
1003
+ setBoolean(opts, 'traceId128BitGenerationEnabled', options.traceId128BitGenerationEnabled)
1004
+ setBoolean(opts, 'traceId128BitLoggingEnabled', options.traceId128BitLoggingEnabled)
1005
+ setBoolean(opts, 'traceWebsocketMessagesEnabled', options.traceWebsocketMessagesEnabled)
1006
+ setBoolean(opts, 'traceWebsocketMessagesInheritSampling', options.traceWebsocketMessagesInheritSampling)
1007
+ setBoolean(opts, 'traceWebsocketMessagesSeparateTraces', options.traceWebsocketMessagesSeparateTraces)
1008
+ setString(opts, 'version', options.version || tags.version)
1009
+ setBoolean(opts, 'inferredProxyServicesEnabled', options.inferredProxyServicesEnabled)
1010
+ setBoolean(opts, 'graphqlErrorExtensions', options.graphqlErrorExtensions)
1011
+ setBoolean(opts, 'trace.nativeSpanEvents', options.trace?.nativeSpanEvents)
1204
1012
  if (options.tracePropagationStyle) {
1205
- this.#setArray(opts, 'tracePropagationStyle.inject',
1013
+ setArray(opts, 'tracePropagationStyle.inject',
1206
1014
  normalizePropagationStyle(options.tracePropagationStyle.inject ?? options.tracePropagationStyle))
1207
- this.#setArray(opts, 'tracePropagationStyle.extract',
1015
+ setArray(opts, 'tracePropagationStyle.extract',
1208
1016
  normalizePropagationStyle(options.tracePropagationStyle.extract ?? options.tracePropagationStyle))
1209
1017
  }
1210
1018
 
@@ -1213,7 +1021,7 @@ class Config {
1213
1021
  // This is to make sure the origins of each value are tracked appropriately for telemetry.
1214
1022
  // We'll only set `llmobs.enabled` on the opts when it's not set on the environment, and options.llmobs is provided.
1215
1023
  if (this.#env['llmobs.enabled'] == null && options.llmobs) {
1216
- this.#setBoolean(opts, 'llmobs.enabled', true)
1024
+ setBoolean(opts, 'llmobs.enabled', true)
1217
1025
  }
1218
1026
  }
1219
1027
 
@@ -1221,15 +1029,11 @@ class Config {
1221
1029
  return this.#optionsArg.isCiVisibility ?? this.#defaults.isCiVisibility
1222
1030
  }
1223
1031
 
1224
- #isCiVisibilityItrEnabled () {
1225
- return getEnv('DD_CIVISIBILITY_ITR_ENABLED') ?? true
1226
- }
1227
-
1228
1032
  #getHostname () {
1229
1033
  const DD_CIVISIBILITY_AGENTLESS_URL = getEnv('DD_CIVISIBILITY_AGENTLESS_URL')
1230
1034
  const url = DD_CIVISIBILITY_AGENTLESS_URL
1231
1035
  ? new URL(DD_CIVISIBILITY_AGENTLESS_URL)
1232
- : getAgentUrl(this._getTraceAgentUrl(), this.#optionsArg)
1036
+ : getAgentUrl(this.#getTraceAgentUrl(), this.#optionsArg)
1233
1037
  const DD_AGENT_HOST = this.#optionsArg.hostname ??
1234
1038
  getEnv('DD_AGENT_HOST') ??
1235
1039
  defaults.hostname
@@ -1271,7 +1075,7 @@ class Config {
1271
1075
  )
1272
1076
  }
1273
1077
 
1274
- _getTraceAgentUrl () {
1078
+ #getTraceAgentUrl () {
1275
1079
  return this.#optionsArg.url ??
1276
1080
  getEnv('DD_TRACE_AGENT_URL') ??
1277
1081
  null
@@ -1285,31 +1089,31 @@ class Config {
1285
1089
 
1286
1090
  calc.url = DD_CIVISIBILITY_AGENTLESS_URL
1287
1091
  ? new URL(DD_CIVISIBILITY_AGENTLESS_URL)
1288
- : getAgentUrl(this._getTraceAgentUrl(), this.#optionsArg)
1092
+ : getAgentUrl(this.#getTraceAgentUrl(), this.#optionsArg)
1289
1093
 
1290
1094
  if (this.#isCiVisibility()) {
1291
- this.#setBoolean(calc, 'isEarlyFlakeDetectionEnabled',
1095
+ setBoolean(calc, 'isEarlyFlakeDetectionEnabled',
1292
1096
  getEnv('DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED') ?? true)
1293
- this.#setBoolean(calc, 'isFlakyTestRetriesEnabled', getEnv('DD_CIVISIBILITY_FLAKY_RETRY_ENABLED') ?? true)
1097
+ setBoolean(calc, 'isFlakyTestRetriesEnabled', getEnv('DD_CIVISIBILITY_FLAKY_RETRY_ENABLED') ?? true)
1294
1098
  calc.flakyTestRetriesCount = maybeInt(getEnv('DD_CIVISIBILITY_FLAKY_RETRY_COUNT')) ?? 5
1295
- this.#setBoolean(calc, 'isIntelligentTestRunnerEnabled', isTrue(this.#isCiVisibilityItrEnabled()))
1296
- this.#setBoolean(calc, 'isManualApiEnabled', !isFalse(getEnv('DD_CIVISIBILITY_MANUAL_API_ENABLED')))
1297
- this.#setString(calc, 'ciVisibilityTestSessionName', getEnv('DD_TEST_SESSION_NAME'))
1298
- this.#setBoolean(calc, 'ciVisAgentlessLogSubmissionEnabled',
1099
+ setBoolean(calc, 'isIntelligentTestRunnerEnabled', isTrue(isCiVisibilityItrEnabled()))
1100
+ setBoolean(calc, 'isManualApiEnabled', !isFalse(getEnv('DD_CIVISIBILITY_MANUAL_API_ENABLED')))
1101
+ setString(calc, 'ciVisibilityTestSessionName', getEnv('DD_TEST_SESSION_NAME'))
1102
+ setBoolean(calc, 'ciVisAgentlessLogSubmissionEnabled',
1299
1103
  isTrue(getEnv('DD_AGENTLESS_LOG_SUBMISSION_ENABLED')))
1300
- this.#setBoolean(calc, 'isTestDynamicInstrumentationEnabled',
1104
+ setBoolean(calc, 'isTestDynamicInstrumentationEnabled',
1301
1105
  !isFalse(getEnv('DD_TEST_FAILED_TEST_REPLAY_ENABLED')))
1302
- this.#setBoolean(calc, 'isServiceUserProvided', !!this.#env.service)
1303
- this.#setBoolean(calc, 'isTestManagementEnabled', !isFalse(getEnv('DD_TEST_MANAGEMENT_ENABLED')))
1106
+ setBoolean(calc, 'isServiceUserProvided', !!this.#env.service)
1107
+ setBoolean(calc, 'isTestManagementEnabled', !isFalse(getEnv('DD_TEST_MANAGEMENT_ENABLED')))
1304
1108
  calc.testManagementAttemptToFixRetries = maybeInt(getEnv('DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES')) ?? 20
1305
- this.#setBoolean(calc, 'isImpactedTestsEnabled',
1109
+ setBoolean(calc, 'isImpactedTestsEnabled',
1306
1110
  !isFalse(getEnv('DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED')))
1307
1111
  }
1308
1112
 
1309
1113
  // Disable log injection when OTEL logs are enabled
1310
1114
  // OTEL logs and DD log injection are mutually exclusive
1311
1115
  if (this.#env.otelLogsEnabled) {
1312
- this.#setBoolean(calc, 'logInjection', false)
1116
+ setBoolean(calc, 'logInjection', false)
1313
1117
  }
1314
1118
 
1315
1119
  calc['dogstatsd.hostname'] = this.#getHostname()
@@ -1320,7 +1124,7 @@ class Config {
1320
1124
  calc.otelMetricsUrl = `http://${agentHostname}:${DEFAULT_OTLP_PORT}/v1/metrics`
1321
1125
  calc.otelUrl = `http://${agentHostname}:${DEFAULT_OTLP_PORT}`
1322
1126
 
1323
- this.#setBoolean(calc, 'isGitUploadEnabled',
1127
+ setBoolean(calc, 'isGitUploadEnabled',
1324
1128
  calc.isIntelligentTestRunnerEnabled && !isFalse(getEnv('DD_CIVISIBILITY_GIT_UPLOAD_ENABLED')))
1325
1129
 
1326
1130
  // Enable resourceRenamingEnabled when appsec is enabled and only
@@ -1328,13 +1132,13 @@ class Config {
1328
1132
  if (this.#env.resourceRenamingEnabled === undefined) {
1329
1133
  const appsecEnabled = this.#options['appsec.enabled'] ?? this.#env['appsec.enabled']
1330
1134
  if (appsecEnabled) {
1331
- this.#setBoolean(calc, 'resourceRenamingEnabled', true)
1135
+ setBoolean(calc, 'resourceRenamingEnabled', true)
1332
1136
  }
1333
1137
  }
1334
1138
 
1335
- this.#setBoolean(calc, 'spanComputePeerService', this.#getSpanComputePeerService())
1336
- this.#setBoolean(calc, 'stats.enabled', this.#isTraceStatsComputationEnabled())
1337
- const defaultPropagationStyle = this.#getDefaultPropagationStyle(this.#optionsArg)
1139
+ setBoolean(calc, 'spanComputePeerService', this.#getSpanComputePeerService())
1140
+ setBoolean(calc, 'stats.enabled', this.#isTraceStatsComputationEnabled())
1141
+ const defaultPropagationStyle = getDefaultPropagationStyle(this.#optionsArg)
1338
1142
  if (defaultPropagationStyle.length > 2) {
1339
1143
  // b3 was added, so update defaults to include it
1340
1144
  // This will only be used if no other source (options, env, stable config) set the value
@@ -1351,13 +1155,13 @@ class Config {
1351
1155
  #applyRemoteConfig (options) {
1352
1156
  const opts = this.#remote
1353
1157
 
1354
- this.#setBoolean(opts, 'dynamicInstrumentation.enabled', options.dynamic_instrumentation_enabled)
1355
- this.#setBoolean(opts, 'codeOriginForSpans.enabled', options.code_origin_enabled)
1356
- this.#setUnit(opts, 'sampleRate', options.tracing_sampling_rate)
1357
- this.#setBoolean(opts, 'logInjection', options.log_injection_enabled)
1358
- this.#setBoolean(opts, 'tracing', options.tracing_enabled)
1158
+ setBoolean(opts, 'dynamicInstrumentation.enabled', options.dynamic_instrumentation_enabled)
1159
+ setBoolean(opts, 'codeOriginForSpans.enabled', options.code_origin_enabled)
1160
+ setUnit(opts, 'sampleRate', options.tracing_sampling_rate)
1161
+ setBoolean(opts, 'logInjection', options.log_injection_enabled)
1162
+ setBoolean(opts, 'tracing', options.tracing_enabled)
1359
1163
  this.#remoteUnprocessed['sampler.rules'] = options.tracing_sampling_rules
1360
- this.#setSamplingRule(opts, 'sampler.rules', this.#reformatTagsFromRC(options.tracing_sampling_rules))
1164
+ setSamplingRule(opts, 'sampler.rules', reformatTagsFromRC(options.tracing_sampling_rules))
1361
1165
 
1362
1166
  opts.headerTags = options.tracing_header_tags?.map(tag => {
1363
1167
  return tag.tag_name ? `${tag.header}:${tag.tag_name}` : tag.header
@@ -1365,118 +1169,10 @@ class Config {
1365
1169
 
1366
1170
  const tags = {}
1367
1171
  tagger.add(tags, options.tracing_tags)
1368
- if (Object.keys(tags).length) tags['runtime-id'] = runtimeId
1369
- this.#setTags(opts, 'tags', tags)
1370
- }
1371
-
1372
- #reformatTagsFromRC (samplingRules) {
1373
- for (const rule of (samplingRules || [])) {
1374
- if (rule.tags) {
1375
- const reformattedTags = {}
1376
- for (const tag of rule.tags) {
1377
- reformattedTags[tag.key] = tag.value_glob
1378
- }
1379
- rule.tags = reformattedTags
1380
- }
1381
- }
1382
- return samplingRules
1383
- }
1384
-
1385
- #setBoolean (obj, name, value) {
1386
- if (value === undefined || value === null) {
1387
- obj[name] = value
1388
- } else if (isTrue(value)) {
1389
- obj[name] = true
1390
- } else if (isFalse(value)) {
1391
- obj[name] = false
1172
+ if (Object.keys(tags).length) {
1173
+ tags['runtime-id'] = RUNTIME_ID
1392
1174
  }
1393
- }
1394
-
1395
- #setUnit (obj, name, value) {
1396
- if (value === null || value === undefined) {
1397
- obj[name] = value
1398
- return
1399
- }
1400
-
1401
- value = Number.parseFloat(value)
1402
-
1403
- if (!Number.isNaN(value)) {
1404
- // TODO: Ignore out of range values instead of normalizing them.
1405
- obj[name] = Math.min(Math.max(value, 0), 1)
1406
- }
1407
- }
1408
-
1409
- #setArray (obj, name, value) {
1410
- if (value == null) {
1411
- obj[name] = null
1412
- return
1413
- }
1414
-
1415
- if (typeof value === 'string') {
1416
- value = value.split(',').map(item => {
1417
- // Trim each item and remove whitespace around the colon
1418
- const [key, val] = item.split(':').map(part => part.trim())
1419
- return val === undefined ? key : `${key}:${val}`
1420
- })
1421
- }
1422
-
1423
- if (Array.isArray(value)) {
1424
- obj[name] = value
1425
- }
1426
- }
1427
-
1428
- #setIntegerRangeSet (obj, name, value) {
1429
- if (value == null) {
1430
- obj[name] = null
1431
- return
1432
- }
1433
- value = value.split(',')
1434
- const result = []
1435
-
1436
- value.forEach(val => {
1437
- if (val.includes('-')) {
1438
- const [start, end] = val.split('-').map(Number)
1439
- for (let i = start; i <= end; i++) {
1440
- result.push(i)
1441
- }
1442
- } else {
1443
- result.push(Number(val))
1444
- }
1445
- })
1446
- obj[name] = result
1447
- }
1448
-
1449
- #setSamplingRule (obj, name, value) {
1450
- if (value == null) {
1451
- obj[name] = null
1452
- return
1453
- }
1454
-
1455
- if (typeof value === 'string') {
1456
- value = value.split(',')
1457
- }
1458
-
1459
- if (Array.isArray(value)) {
1460
- value = value.map(rule => {
1461
- return remapify(rule, {
1462
- sample_rate: 'sampleRate'
1463
- })
1464
- })
1465
- obj[name] = value
1466
- }
1467
- }
1468
-
1469
- #setString (obj, name, value) {
1470
- obj[name] = value ? String(value) : undefined // unset for empty strings
1471
- }
1472
-
1473
- #setTags (obj, name, value) {
1474
- if (!value || Object.keys(value).length === 0) {
1475
- obj[name] = null
1476
- return
1477
- }
1478
-
1479
- obj[name] = value
1175
+ setTags(opts, 'tags', tags)
1480
1176
  }
1481
1177
 
1482
1178
  #setAndTrackChange ({ name, value, origin, unprocessedValue, changes }) {
@@ -1494,7 +1190,7 @@ class Config {
1494
1190
  changes.push({
1495
1191
  name,
1496
1192
  value: unprocessedValue || value,
1497
- origin
1193
+ origin,
1498
1194
  })
1499
1195
  }
1500
1196
  }
@@ -1519,7 +1215,7 @@ class Config {
1519
1215
  value,
1520
1216
  origin,
1521
1217
  unprocessedValue: unprocessed?.[name],
1522
- changes
1218
+ changes,
1523
1219
  })
1524
1220
  }
1525
1221
  }
@@ -1528,15 +1224,6 @@ class Config {
1528
1224
  updateConfig(changes, this)
1529
1225
  }
1530
1226
 
1531
- getOrigin (name) {
1532
- for (const { container, origin } of this.#getSourcesInOrder()) {
1533
- const value = container[name]
1534
- if (value != null || container === this.#defaults) {
1535
- return origin
1536
- }
1537
- }
1538
- }
1539
-
1540
1227
  #loadGitMetadata () {
1541
1228
  // try to read Git metadata from the environment variables
1542
1229
  this.repositoryUrl = removeUserSensitiveInfo(
@@ -1593,6 +1280,312 @@ class Config {
1593
1280
  }
1594
1281
  }
1595
1282
 
1283
+ function getCounter (event, ddVar, otelVar) {
1284
+ const counters = TELEMETRY_COUNTERS.get(event)
1285
+ const tags = []
1286
+ const ddVarPrefix = 'config_datadog:'
1287
+ const otelVarPrefix = 'config_opentelemetry:'
1288
+ if (ddVar) {
1289
+ ddVar = ddVarPrefix + ddVar.toLowerCase()
1290
+ tags.push(ddVar)
1291
+ }
1292
+ if (otelVar) {
1293
+ otelVar = otelVarPrefix + otelVar.toLowerCase()
1294
+ tags.push(otelVar)
1295
+ }
1296
+
1297
+ if (!(otelVar in counters)) counters[otelVar] = {}
1298
+
1299
+ const counter = tracerMetrics.count(event, tags)
1300
+ counters[otelVar][ddVar] = counter
1301
+ return counter
1302
+ }
1303
+
1304
+ function getFromOtelSamplerMap (otelTracesSampler, otelTracesSamplerArg) {
1305
+ const OTEL_TRACES_SAMPLER_MAPPING = {
1306
+ always_on: '1.0',
1307
+ always_off: '0.0',
1308
+ traceidratio: otelTracesSamplerArg,
1309
+ parentbased_always_on: '1.0',
1310
+ parentbased_always_off: '0.0',
1311
+ parentbased_traceidratio: otelTracesSamplerArg,
1312
+ }
1313
+ return OTEL_TRACES_SAMPLER_MAPPING[otelTracesSampler]
1314
+ }
1315
+
1316
+ /**
1317
+ * Validate the type of an environment variable
1318
+ * @param {string} envVar - The name of the environment variable
1319
+ * @param {string} [value] - The value of the environment variable
1320
+ * @returns {boolean} - True if the value is valid, false otherwise
1321
+ */
1322
+ function isInvalidOtelEnvironmentVariable (envVar, value) {
1323
+ // Skip validation if the value is undefined (it was not set as environment variable)
1324
+ if (value === undefined) return false
1325
+
1326
+ switch (envVar) {
1327
+ case 'OTEL_LOG_LEVEL':
1328
+ return !VALID_LOG_LEVELS.has(value)
1329
+ case 'OTEL_PROPAGATORS':
1330
+ case 'OTEL_RESOURCE_ATTRIBUTES':
1331
+ case 'OTEL_SERVICE_NAME':
1332
+ return typeof value !== 'string'
1333
+ case 'OTEL_TRACES_SAMPLER':
1334
+ return getFromOtelSamplerMap(value, getEnv('OTEL_TRACES_SAMPLER_ARG')) === undefined
1335
+ case 'OTEL_TRACES_SAMPLER_ARG':
1336
+ return Number.isNaN(Number.parseFloat(value))
1337
+ case 'OTEL_SDK_DISABLED':
1338
+ return value.toLowerCase() !== 'true' && value.toLowerCase() !== 'false'
1339
+ case 'OTEL_TRACES_EXPORTER':
1340
+ case 'OTEL_METRICS_EXPORTER':
1341
+ case 'OTEL_LOGS_EXPORTER':
1342
+ return value.toLowerCase() !== 'none'
1343
+ default:
1344
+ return true
1345
+ }
1346
+ }
1347
+
1348
+ function checkIfBothOtelAndDdEnvVarSet () {
1349
+ for (const [otelEnvVar, ddEnvVar] of OTEL_DD_ENV_MAPPING) {
1350
+ const otelValue = getEnv(otelEnvVar)
1351
+
1352
+ if (ddEnvVar && getEnv(ddEnvVar) && otelValue) {
1353
+ log.warn('both %s and %s environment variables are set', ddEnvVar, otelEnvVar)
1354
+ getCounter('otel.env.hiding', ddEnvVar, otelEnvVar).inc()
1355
+ }
1356
+
1357
+ if (isInvalidOtelEnvironmentVariable(otelEnvVar, otelValue)) {
1358
+ log.warn('unexpected value %s for %s environment variable', otelValue, otelEnvVar)
1359
+ getCounter('otel.env.invalid', ddEnvVar, otelEnvVar).inc()
1360
+ }
1361
+ }
1362
+ }
1363
+
1364
+ function maybeFile (filepath) {
1365
+ if (!filepath) return
1366
+ try {
1367
+ return fs.readFileSync(filepath, 'utf8')
1368
+ } catch (e) {
1369
+ log.error('Error reading file %s', filepath, e)
1370
+ }
1371
+ }
1372
+
1373
+ function maybeJsonFile (filepath) {
1374
+ const file = maybeFile(filepath)
1375
+ if (!file) return
1376
+ try {
1377
+ return JSON.parse(file)
1378
+ } catch (e) {
1379
+ log.error('Error parsing JSON file %s', filepath, e)
1380
+ }
1381
+ }
1382
+
1383
+ function safeJsonParse (input) {
1384
+ try {
1385
+ return JSON.parse(input)
1386
+ } catch {}
1387
+ }
1388
+
1389
+ function validateNamingVersion (versionString) {
1390
+ if (!versionString) {
1391
+ return DEFAULT_NAMING_VERSION
1392
+ }
1393
+ if (!NAMING_VERSIONS.has(versionString)) {
1394
+ log.warn('Unexpected input for config.spanAttributeSchema, picked default', DEFAULT_NAMING_VERSION)
1395
+ return DEFAULT_NAMING_VERSION
1396
+ }
1397
+ return versionString
1398
+ }
1399
+
1400
+ /**
1401
+ * Given a string of comma-separated paths, return the array of paths.
1402
+ * If a blank path is provided a null is returned to signal that the feature is disabled.
1403
+ * An empty array means the feature is enabled but that no rules need to be applied.
1404
+ *
1405
+ * @param {string | string[]} input
1406
+ */
1407
+ function splitJSONPathRules (input) {
1408
+ if (!input || input === '$') return
1409
+ if (Array.isArray(input)) return input
1410
+ if (input === 'all') return []
1411
+ return input.split(',')
1412
+ }
1413
+
1414
+ // Shallow clone with property name remapping
1415
+ function remapify (input, mappings) {
1416
+ if (!input) return
1417
+ const output = {}
1418
+ for (const [key, value] of Object.entries(input)) {
1419
+ output[key in mappings ? mappings[key] : key] = value
1420
+ }
1421
+ return output
1422
+ }
1423
+
1424
+ /**
1425
+ * Normalizes propagation style values to a lowercase array.
1426
+ * Handles both string (comma-separated) and array inputs.
1427
+ */
1428
+ function normalizePropagationStyle (value) {
1429
+ if (Array.isArray(value)) {
1430
+ return value.map(v => v.toLowerCase())
1431
+ }
1432
+ if (typeof value === 'string') {
1433
+ return value.split(',')
1434
+ .filter(v => v !== '')
1435
+ .map(v => v.trim().toLowerCase())
1436
+ }
1437
+ if (value !== undefined) {
1438
+ log.warn('Unexpected input for config.tracePropagationStyle')
1439
+ }
1440
+ }
1441
+
1442
+ /**
1443
+ * Warns if both DD_TRACE_PROPAGATION_STYLE and specific inject/extract vars are set.
1444
+ */
1445
+ function warnIfPropagationStyleConflict (general, inject, extract) {
1446
+ if (general && (inject || extract)) {
1447
+ log.warn(
1448
+ // eslint-disable-next-line @stylistic/max-len
1449
+ 'Use either the DD_TRACE_PROPAGATION_STYLE environment variable or separate DD_TRACE_PROPAGATION_STYLE_INJECT and DD_TRACE_PROPAGATION_STYLE_EXTRACT environment variables'
1450
+ )
1451
+ }
1452
+ }
1453
+
1454
+ function reformatSpanSamplingRules (rules) {
1455
+ if (!rules) return rules
1456
+ return rules.map(rule => {
1457
+ return remapify(rule, {
1458
+ sample_rate: 'sampleRate',
1459
+ max_per_second: 'maxPerSecond',
1460
+ })
1461
+ })
1462
+ }
1463
+
1464
+ function getDefaultPropagationStyle (options) {
1465
+ // TODO: Remove the experimental env vars as a major?
1466
+ const DD_TRACE_B3_ENABLED = options.experimental?.b3 ??
1467
+ getEnv('DD_TRACE_EXPERIMENTAL_B3_ENABLED')
1468
+ const defaultPropagationStyle = ['datadog', 'tracecontext']
1469
+ if (isTrue(DD_TRACE_B3_ENABLED)) {
1470
+ defaultPropagationStyle.push('b3', 'b3 single header')
1471
+ }
1472
+ return defaultPropagationStyle
1473
+ }
1474
+
1475
+ function isCiVisibilityItrEnabled () {
1476
+ return getEnv('DD_CIVISIBILITY_ITR_ENABLED') ?? true
1477
+ }
1478
+
1479
+ function reformatTagsFromRC (samplingRules) {
1480
+ for (const rule of (samplingRules || [])) {
1481
+ if (rule.tags) {
1482
+ const reformattedTags = {}
1483
+ for (const tag of rule.tags) {
1484
+ reformattedTags[tag.key] = tag.value_glob
1485
+ }
1486
+ rule.tags = reformattedTags
1487
+ }
1488
+ }
1489
+ return samplingRules
1490
+ }
1491
+
1492
+ function setBoolean (obj, name, value) {
1493
+ if (value === undefined || value === null) {
1494
+ obj[name] = value
1495
+ } else if (isTrue(value)) {
1496
+ obj[name] = true
1497
+ } else if (isFalse(value)) {
1498
+ obj[name] = false
1499
+ }
1500
+ }
1501
+
1502
+ function setUnit (obj, name, value) {
1503
+ if (value === null || value === undefined) {
1504
+ obj[name] = value
1505
+ return
1506
+ }
1507
+
1508
+ value = Number.parseFloat(value)
1509
+
1510
+ if (!Number.isNaN(value)) {
1511
+ // TODO: Ignore out of range values instead of normalizing them.
1512
+ obj[name] = Math.min(Math.max(value, 0), 1)
1513
+ }
1514
+ }
1515
+
1516
+ function setArray (obj, name, value) {
1517
+ if (value == null) {
1518
+ obj[name] = null
1519
+ return
1520
+ }
1521
+
1522
+ if (typeof value === 'string') {
1523
+ value = value.split(',').map(item => {
1524
+ // Trim each item and remove whitespace around the colon
1525
+ const [key, val] = item.split(':').map(part => part.trim())
1526
+ return val === undefined ? key : `${key}:${val}`
1527
+ })
1528
+ }
1529
+
1530
+ if (Array.isArray(value)) {
1531
+ obj[name] = value
1532
+ }
1533
+ }
1534
+
1535
+ function setIntegerRangeSet (obj, name, value) {
1536
+ if (value == null) {
1537
+ obj[name] = null
1538
+ return
1539
+ }
1540
+ value = value.split(',')
1541
+ const result = []
1542
+
1543
+ for (const val of value) {
1544
+ if (val.includes('-')) {
1545
+ const [start, end] = val.split('-').map(Number)
1546
+ for (let i = start; i <= end; i++) {
1547
+ result.push(i)
1548
+ }
1549
+ } else {
1550
+ result.push(Number(val))
1551
+ }
1552
+ }
1553
+ obj[name] = result
1554
+ }
1555
+
1556
+ function setSamplingRule (obj, name, value) {
1557
+ if (value == null) {
1558
+ obj[name] = null
1559
+ return
1560
+ }
1561
+
1562
+ if (typeof value === 'string') {
1563
+ value = value.split(',')
1564
+ }
1565
+
1566
+ if (Array.isArray(value)) {
1567
+ value = value.map(rule => {
1568
+ return remapify(rule, {
1569
+ sample_rate: 'sampleRate',
1570
+ })
1571
+ })
1572
+ obj[name] = value
1573
+ }
1574
+ }
1575
+
1576
+ function setString (obj, name, value) {
1577
+ obj[name] = value ? String(value) : undefined // unset for empty strings
1578
+ }
1579
+
1580
+ function setTags (obj, name, value) {
1581
+ if (!value || Object.keys(value).length === 0) {
1582
+ obj[name] = null
1583
+ return
1584
+ }
1585
+
1586
+ obj[name] = value
1587
+ }
1588
+
1596
1589
  function handleOtel (tagString) {
1597
1590
  return tagString
1598
1591
  ?.replace(/(^|,)deployment\.environment=/, '$1env:')
@@ -1622,7 +1615,7 @@ function nonNegInt (value, envVarName, allowZero = true) {
1622
1615
  if (value === undefined) return
1623
1616
  const parsed = Number.parseInt(value)
1624
1617
  if (Number.isNaN(parsed) || parsed < 0 || (parsed === 0 && !allowZero)) {
1625
- log.warn(`Invalid value ${parsed} for ${envVarName}. Using default value.`)
1618
+ log.warn('Invalid value %d for %s. Using default value.', parsed, envVarName)
1626
1619
  return
1627
1620
  }
1628
1621
  return parsed
@@ -1644,12 +1637,9 @@ function getAgentUrl (url, options) {
1644
1637
  }
1645
1638
  }
1646
1639
 
1647
- let configInstance = null
1648
1640
  function getConfig (options) {
1649
1641
  if (!configInstance) {
1650
1642
  configInstance = new Config(options)
1651
1643
  }
1652
1644
  return configInstance
1653
1645
  }
1654
-
1655
- module.exports = getConfig