dd-trace 5.81.0 → 5.83.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 (371) hide show
  1. package/LICENSE-3rdparty.csv +78 -79
  2. package/ci/init.js +6 -6
  3. package/index.d.ts +159 -3
  4. package/loader-hook.mjs +8 -3
  5. package/package.json +64 -66
  6. package/packages/datadog-core/src/storage.js +7 -7
  7. package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
  8. package/packages/datadog-esbuild/index.js +14 -7
  9. package/packages/datadog-esbuild/src/utils.js +14 -2
  10. package/packages/datadog-instrumentations/src/aerospike.js +3 -2
  11. package/packages/datadog-instrumentations/src/ai.js +9 -5
  12. package/packages/datadog-instrumentations/src/amqp10.js +1 -1
  13. package/packages/datadog-instrumentations/src/amqplib.js +4 -4
  14. package/packages/datadog-instrumentations/src/anthropic.js +2 -2
  15. package/packages/datadog-instrumentations/src/apollo-server-core.js +2 -2
  16. package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
  17. package/packages/datadog-instrumentations/src/apollo.js +3 -2
  18. package/packages/datadog-instrumentations/src/avsc.js +1 -1
  19. package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
  20. package/packages/datadog-instrumentations/src/azure-event-hubs.js +4 -3
  21. package/packages/datadog-instrumentations/src/azure-functions.js +2 -2
  22. package/packages/datadog-instrumentations/src/azure-service-bus.js +3 -4
  23. package/packages/datadog-instrumentations/src/bluebird.js +1 -1
  24. package/packages/datadog-instrumentations/src/bullmq.js +11 -0
  25. package/packages/datadog-instrumentations/src/bunyan.js +1 -1
  26. package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
  27. package/packages/datadog-instrumentations/src/child_process.js +3 -3
  28. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +3 -3
  29. package/packages/datadog-instrumentations/src/couchbase.js +1 -1
  30. package/packages/datadog-instrumentations/src/crypto.js +1 -1
  31. package/packages/datadog-instrumentations/src/cucumber.js +13 -14
  32. package/packages/datadog-instrumentations/src/cypress.js +1 -1
  33. package/packages/datadog-instrumentations/src/dns.js +1 -1
  34. package/packages/datadog-instrumentations/src/elasticsearch.js +1 -1
  35. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +1 -1
  36. package/packages/datadog-instrumentations/src/express.js +1 -1
  37. package/packages/datadog-instrumentations/src/fs.js +1 -1
  38. package/packages/datadog-instrumentations/src/generic-pool.js +1 -1
  39. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +137 -15
  40. package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -3
  41. package/packages/datadog-instrumentations/src/google-genai.js +3 -3
  42. package/packages/datadog-instrumentations/src/graphql.js +2 -2
  43. package/packages/datadog-instrumentations/src/grpc/client.js +1 -1
  44. package/packages/datadog-instrumentations/src/grpc/server.js +1 -1
  45. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
  46. package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
  47. package/packages/datadog-instrumentations/src/helpers/hooks.js +4 -1
  48. package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -1
  49. package/packages/datadog-instrumentations/src/helpers/instrumentations.js +4 -3
  50. package/packages/datadog-instrumentations/src/helpers/register.js +9 -11
  51. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +2 -2
  52. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.json +106 -0
  53. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +2 -1
  54. package/packages/datadog-instrumentations/src/helpers/router-helper.js +1 -1
  55. package/packages/datadog-instrumentations/src/helpers/shared-utils.js +9 -0
  56. package/packages/datadog-instrumentations/src/hono.js +55 -10
  57. package/packages/datadog-instrumentations/src/http/client.js +2 -2
  58. package/packages/datadog-instrumentations/src/ioredis.js +1 -1
  59. package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
  60. package/packages/datadog-instrumentations/src/jest.js +37 -16
  61. package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
  62. package/packages/datadog-instrumentations/src/knex.js +1 -1
  63. package/packages/datadog-instrumentations/src/koa.js +2 -1
  64. package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
  65. package/packages/datadog-instrumentations/src/light-my-request.js +93 -0
  66. package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
  67. package/packages/datadog-instrumentations/src/lodash.js +1 -2
  68. package/packages/datadog-instrumentations/src/mariadb.js +1 -2
  69. package/packages/datadog-instrumentations/src/memcached.js +1 -1
  70. package/packages/datadog-instrumentations/src/mocha/main.js +2 -2
  71. package/packages/datadog-instrumentations/src/mocha/worker.js +1 -1
  72. package/packages/datadog-instrumentations/src/mocha.js +1 -1
  73. package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
  74. package/packages/datadog-instrumentations/src/mongodb.js +1 -1
  75. package/packages/datadog-instrumentations/src/mongoose.js +1 -1
  76. package/packages/datadog-instrumentations/src/mquery.js +1 -1
  77. package/packages/datadog-instrumentations/src/mysql.js +2 -2
  78. package/packages/datadog-instrumentations/src/mysql2.js +3 -3
  79. package/packages/datadog-instrumentations/src/net.js +14 -6
  80. package/packages/datadog-instrumentations/src/next.js +1 -1
  81. package/packages/datadog-instrumentations/src/nyc.js +2 -2
  82. package/packages/datadog-instrumentations/src/openai.js +2 -2
  83. package/packages/datadog-instrumentations/src/opensearch.js +1 -1
  84. package/packages/datadog-instrumentations/src/oracledb.js +1 -1
  85. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +5 -5
  86. package/packages/datadog-instrumentations/src/pg.js +7 -5
  87. package/packages/datadog-instrumentations/src/pino.js +1 -1
  88. package/packages/datadog-instrumentations/src/playwright.js +4 -4
  89. package/packages/datadog-instrumentations/src/prisma.js +52 -37
  90. package/packages/datadog-instrumentations/src/process.js +1 -1
  91. package/packages/datadog-instrumentations/src/promise-js.js +1 -1
  92. package/packages/datadog-instrumentations/src/promise.js +1 -1
  93. package/packages/datadog-instrumentations/src/protobufjs.js +1 -1
  94. package/packages/datadog-instrumentations/src/q.js +1 -1
  95. package/packages/datadog-instrumentations/src/redis.js +1 -1
  96. package/packages/datadog-instrumentations/src/rhea.js +1 -1
  97. package/packages/datadog-instrumentations/src/selenium.js +3 -3
  98. package/packages/datadog-instrumentations/src/sequelize.js +1 -2
  99. package/packages/datadog-instrumentations/src/sharedb.js +1 -1
  100. package/packages/datadog-instrumentations/src/tedious.js +1 -1
  101. package/packages/datadog-instrumentations/src/undici.js +15 -4
  102. package/packages/datadog-instrumentations/src/url.js +1 -1
  103. package/packages/datadog-instrumentations/src/vitest.js +1 -1
  104. package/packages/datadog-instrumentations/src/vm.js +1 -1
  105. package/packages/datadog-instrumentations/src/when.js +1 -1
  106. package/packages/datadog-instrumentations/src/winston.js +1 -1
  107. package/packages/datadog-instrumentations/src/ws.js +3 -2
  108. package/packages/datadog-plugin-amqp10/src/index.js +1 -1
  109. package/packages/datadog-plugin-amqplib/src/index.js +1 -1
  110. package/packages/datadog-plugin-anthropic/src/index.js +1 -1
  111. package/packages/datadog-plugin-aws-sdk/src/base.js +4 -4
  112. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
  113. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +4 -4
  114. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
  115. package/packages/datadog-plugin-aws-sdk/src/util.js +3 -3
  116. package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
  117. package/packages/datadog-plugin-azure-event-hubs/src/producer.js +21 -7
  118. package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
  119. package/packages/datadog-plugin-azure-service-bus/src/producer.js +6 -2
  120. package/packages/datadog-plugin-bullmq/src/consumer.js +60 -0
  121. package/packages/datadog-plugin-bullmq/src/index.js +18 -0
  122. package/packages/datadog-plugin-bullmq/src/producer.js +178 -0
  123. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
  124. package/packages/datadog-plugin-cucumber/src/index.js +2 -2
  125. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +2 -2
  126. package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
  127. package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -2
  128. package/packages/datadog-plugin-express/src/code_origin.js +21 -15
  129. package/packages/datadog-plugin-express/src/index.js +1 -1
  130. package/packages/datadog-plugin-fastify/src/code_origin.js +17 -4
  131. package/packages/datadog-plugin-fastify/src/index.js +1 -1
  132. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +13 -3
  133. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +171 -12
  134. package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -2
  135. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +160 -13
  136. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +217 -0
  137. package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
  138. package/packages/datadog-plugin-google-genai/src/index.js +1 -1
  139. package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
  140. package/packages/datadog-plugin-grpc/src/index.js +1 -1
  141. package/packages/datadog-plugin-http/src/client.js +2 -1
  142. package/packages/datadog-plugin-http/src/index.js +25 -5
  143. package/packages/datadog-plugin-http2/src/client.js +2 -2
  144. package/packages/datadog-plugin-http2/src/index.js +1 -1
  145. package/packages/datadog-plugin-jest/src/index.js +2 -2
  146. package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
  147. package/packages/datadog-plugin-langchain/src/index.js +1 -1
  148. package/packages/datadog-plugin-mocha/src/index.js +2 -2
  149. package/packages/datadog-plugin-moleculer/src/index.js +1 -1
  150. package/packages/datadog-plugin-mongodb-core/src/index.js +8 -4
  151. package/packages/datadog-plugin-openai/src/index.js +1 -1
  152. package/packages/datadog-plugin-openai/src/stream-helpers.js +30 -10
  153. package/packages/datadog-plugin-openai/src/tracing.js +2 -2
  154. package/packages/datadog-plugin-playwright/src/index.js +3 -3
  155. package/packages/datadog-plugin-rhea/src/index.js +1 -1
  156. package/packages/datadog-plugin-undici/src/index.js +305 -2
  157. package/packages/datadog-plugin-vitest/src/index.js +5 -5
  158. package/packages/datadog-plugin-ws/src/close.js +56 -3
  159. package/packages/datadog-plugin-ws/src/index.js +4 -0
  160. package/packages/datadog-plugin-ws/src/producer.js +39 -4
  161. package/packages/datadog-plugin-ws/src/receiver.js +39 -3
  162. package/packages/datadog-plugin-ws/src/server.js +13 -1
  163. package/packages/datadog-plugin-ws/src/util.js +107 -0
  164. package/packages/datadog-shimmer/src/shimmer.js +2 -2
  165. package/packages/dd-trace/index.js +19 -0
  166. package/packages/dd-trace/src/aiguard/sdk.js +3 -3
  167. package/packages/dd-trace/src/appsec/graphql.js +2 -2
  168. package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +1 -1
  169. package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +1 -1
  170. package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
  171. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +1 -1
  172. package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +1 -1
  173. package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +1 -1
  174. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +3 -3
  175. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +1 -1
  176. package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +1 -1
  177. package/packages/dd-trace/src/appsec/iast/analyzers/untrusted-deserialization-analyzer.js +1 -1
  178. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +1 -1
  179. package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
  180. package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +3 -2
  181. package/packages/dd-trace/src/appsec/iast/analyzers/weak-randomness-analyzer.js +1 -1
  182. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
  183. package/packages/dd-trace/src/appsec/iast/index.js +5 -5
  184. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
  185. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -2
  186. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +1 -1
  187. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
  188. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +11 -15
  189. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +1 -1
  190. package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +1 -1
  191. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -3
  192. package/packages/dd-trace/src/appsec/index.js +8 -8
  193. package/packages/dd-trace/src/appsec/rasp/command_injection.js +1 -1
  194. package/packages/dd-trace/src/appsec/rasp/index.js +3 -5
  195. package/packages/dd-trace/src/appsec/rasp/lfi.js +1 -1
  196. package/packages/dd-trace/src/appsec/rc-products.js +10 -0
  197. package/packages/dd-trace/src/appsec/recommended.json +230 -3
  198. package/packages/dd-trace/src/appsec/remote_config.js +177 -0
  199. package/packages/dd-trace/src/appsec/reporter.js +3 -3
  200. package/packages/dd-trace/src/appsec/rule_manager.js +37 -20
  201. package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
  202. package/packages/dd-trace/src/appsec/sdk/set_user.js +1 -1
  203. package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
  204. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
  205. package/packages/dd-trace/src/appsec/user_tracking.js +2 -2
  206. package/packages/dd-trace/src/appsec/waf/index.js +17 -3
  207. package/packages/dd-trace/src/appsec/waf/waf_manager.js +11 -0
  208. package/packages/dd-trace/src/azure_metadata.js +15 -4
  209. package/packages/dd-trace/src/baggage.js +36 -11
  210. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +5 -1
  211. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +6 -0
  212. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +2 -2
  213. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +2 -2
  214. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +2 -2
  215. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
  216. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +2 -2
  217. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +4 -3
  218. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +3 -3
  219. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +5 -5
  220. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +1 -1
  221. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -2
  222. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +4 -4
  223. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +4 -4
  224. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +2 -2
  225. package/packages/dd-trace/src/{config_defaults.js → config/defaults.js} +5 -4
  226. package/packages/dd-trace/src/{config-helper.js → config/helper.js} +88 -15
  227. package/packages/dd-trace/src/{config.js → config/index.js} +115 -67
  228. package/packages/dd-trace/src/config/remote_config.js +202 -0
  229. package/packages/dd-trace/src/{config_stable.js → config/stable.js} +20 -32
  230. package/packages/dd-trace/src/{supported-configurations.json → config/supported-configurations.json} +5 -0
  231. package/packages/dd-trace/src/constants.js +5 -0
  232. package/packages/dd-trace/src/crashtracking/crashtracker.js +11 -2
  233. package/packages/dd-trace/src/datastreams/checkpointer.js +2 -2
  234. package/packages/dd-trace/src/datastreams/index.js +1 -1
  235. package/packages/dd-trace/src/datastreams/pathway.js +7 -7
  236. package/packages/dd-trace/src/datastreams/processor.js +3 -3
  237. package/packages/dd-trace/src/datastreams/writer.js +3 -3
  238. package/packages/dd-trace/src/debugger/config.js +1 -0
  239. package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
  240. package/packages/dd-trace/src/debugger/devtools_client/config.js +1 -1
  241. package/packages/dd-trace/src/debugger/devtools_client/index.js +7 -2
  242. package/packages/dd-trace/src/debugger/devtools_client/send.js +6 -6
  243. package/packages/dd-trace/src/debugger/devtools_client/session.js +1 -1
  244. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +5 -5
  245. package/packages/dd-trace/src/debugger/devtools_client/snapshot/constants.js +1 -1
  246. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +2 -2
  247. package/packages/dd-trace/src/debugger/devtools_client/state.js +1 -1
  248. package/packages/dd-trace/src/debugger/devtools_client/status.js +2 -2
  249. package/packages/dd-trace/src/debugger/index.js +84 -16
  250. package/packages/dd-trace/src/dogstatsd.js +5 -4
  251. package/packages/dd-trace/src/encode/0.4.js +3 -3
  252. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +2 -2
  253. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
  254. package/packages/dd-trace/src/encode/span-stats.js +6 -1
  255. package/packages/dd-trace/src/exporter.js +2 -2
  256. package/packages/dd-trace/src/exporters/agent/index.js +2 -4
  257. package/packages/dd-trace/src/exporters/agent/writer.js +9 -14
  258. package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -2
  259. package/packages/dd-trace/src/exporters/common/docker.js +2 -2
  260. package/packages/dd-trace/src/exporters/common/request.js +3 -3
  261. package/packages/dd-trace/src/exporters/common/util.js +2 -2
  262. package/packages/dd-trace/src/exporters/common/writer.js +1 -1
  263. package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
  264. package/packages/dd-trace/src/external-logger/src/index.js +1 -2
  265. package/packages/dd-trace/src/flare/index.js +2 -2
  266. package/packages/dd-trace/src/guardrails/index.js +6 -3
  267. package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
  268. package/packages/dd-trace/src/id.js +1 -1
  269. package/packages/dd-trace/src/index.js +4 -4
  270. package/packages/dd-trace/src/lambda/handler.js +5 -5
  271. package/packages/dd-trace/src/lambda/index.js +2 -2
  272. package/packages/dd-trace/src/lambda/runtime/patch.js +6 -6
  273. package/packages/dd-trace/src/lambda/runtime/ritm.js +3 -3
  274. package/packages/dd-trace/src/llmobs/constants/tags.js +14 -1
  275. package/packages/dd-trace/src/llmobs/index.js +10 -11
  276. package/packages/dd-trace/src/llmobs/noop.js +2 -0
  277. package/packages/dd-trace/src/llmobs/plugins/ai/index.js +38 -7
  278. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +30 -9
  279. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +3 -3
  280. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +2 -2
  281. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +1 -1
  282. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +1 -1
  283. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +1 -1
  284. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/llm.js +1 -1
  285. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
  286. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
  287. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +19 -5
  288. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +22 -10
  289. package/packages/dd-trace/src/llmobs/plugins/vertexai.js +1 -1
  290. package/packages/dd-trace/src/llmobs/sdk.js +46 -26
  291. package/packages/dd-trace/src/llmobs/span_processor.js +26 -20
  292. package/packages/dd-trace/src/llmobs/tagger.js +175 -1
  293. package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
  294. package/packages/dd-trace/src/llmobs/writers/base.js +117 -38
  295. package/packages/dd-trace/src/llmobs/writers/spans.js +5 -5
  296. package/packages/dd-trace/src/log/index.js +5 -5
  297. package/packages/dd-trace/src/noop/proxy.js +5 -5
  298. package/packages/dd-trace/src/noop/span.js +1 -1
  299. package/packages/dd-trace/src/openfeature/index.js +2 -2
  300. package/packages/dd-trace/src/openfeature/noop.js +14 -14
  301. package/packages/dd-trace/src/openfeature/remote_config.js +31 -0
  302. package/packages/dd-trace/src/openfeature/writers/base.js +12 -13
  303. package/packages/dd-trace/src/openfeature/writers/exposures.js +9 -9
  304. package/packages/dd-trace/src/opentelemetry/context_manager.js +2 -2
  305. package/packages/dd-trace/src/opentelemetry/logs/logger.js +1 -1
  306. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +4 -4
  307. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +9 -8
  308. package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
  309. package/packages/dd-trace/src/opentelemetry/metrics/meter.js +2 -2
  310. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +4 -4
  311. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +36 -11
  312. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +2 -2
  313. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +11 -10
  314. package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +1 -1
  315. package/packages/dd-trace/src/opentelemetry/span.js +2 -2
  316. package/packages/dd-trace/src/opentelemetry/tracer.js +51 -9
  317. package/packages/dd-trace/src/opentracing/propagation/text_map.js +68 -28
  318. package/packages/dd-trace/src/opentracing/span.js +7 -7
  319. package/packages/dd-trace/src/opentracing/tracer.js +5 -5
  320. package/packages/dd-trace/src/payload-tagging/index.js +6 -2
  321. package/packages/dd-trace/src/plugin_manager.js +8 -6
  322. package/packages/dd-trace/src/plugins/apollo.js +1 -1
  323. package/packages/dd-trace/src/plugins/ci_plugin.js +27 -27
  324. package/packages/dd-trace/src/plugins/database.js +1 -1
  325. package/packages/dd-trace/src/plugins/index.js +5 -1
  326. package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
  327. package/packages/dd-trace/src/plugins/outbound.js +1 -1
  328. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  329. package/packages/dd-trace/src/plugins/util/ci.js +5 -8
  330. package/packages/dd-trace/src/plugins/util/git-cache.js +3 -3
  331. package/packages/dd-trace/src/plugins/util/git.js +8 -8
  332. package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
  333. package/packages/dd-trace/src/plugins/util/test.js +25 -25
  334. package/packages/dd-trace/src/plugins/util/user-provided-git.js +41 -43
  335. package/packages/dd-trace/src/plugins/util/web.js +8 -5
  336. package/packages/dd-trace/src/priority_sampler.js +15 -16
  337. package/packages/dd-trace/src/process-tags/index.js +31 -29
  338. package/packages/dd-trace/src/profiler.js +4 -39
  339. package/packages/dd-trace/src/profiling/config.js +104 -50
  340. package/packages/dd-trace/src/profiling/exporter_cli.js +8 -8
  341. package/packages/dd-trace/src/profiling/exporters/agent.js +6 -6
  342. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +9 -2
  343. package/packages/dd-trace/src/profiling/index.js +1 -1
  344. package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
  345. package/packages/dd-trace/src/profiling/profiler.js +61 -7
  346. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
  347. package/packages/dd-trace/src/profiling/profilers/events.js +2 -2
  348. package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
  349. package/packages/dd-trace/src/proxy.js +43 -20
  350. package/packages/dd-trace/src/remote_config/capabilities.js +3 -0
  351. package/packages/dd-trace/src/remote_config/index.js +541 -137
  352. package/packages/dd-trace/src/require-package-json.js +1 -1
  353. package/packages/dd-trace/src/ritm.js +58 -31
  354. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +3 -3
  355. package/packages/dd-trace/src/serverless.js +17 -1
  356. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +8 -0
  357. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +8 -0
  358. package/packages/dd-trace/src/span_format.js +1 -1
  359. package/packages/dd-trace/src/span_processor.js +4 -4
  360. package/packages/dd-trace/src/span_stats.js +6 -4
  361. package/packages/dd-trace/src/standalone/index.js +1 -1
  362. package/packages/dd-trace/src/startup-log.js +7 -16
  363. package/packages/dd-trace/src/telemetry/dependencies.js +3 -3
  364. package/packages/dd-trace/src/telemetry/endpoints.js +75 -13
  365. package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
  366. package/packages/dd-trace/src/telemetry/send-data.js +103 -4
  367. package/packages/dd-trace/src/telemetry/telemetry.js +238 -114
  368. package/packages/dd-trace/src/tracer.js +3 -3
  369. package/packages/dd-trace/src/tracer_metadata.js +19 -15
  370. package/packages/dd-trace/src/remote_config/manager.js +0 -368
  371. /package/packages/dd-trace/src/{git_properties.js → config/git_properties.js} +0 -0
@@ -1,16 +1,16 @@
1
1
  'use strict'
2
2
 
3
+ const { channel } = require('dc-polyfill')
3
4
  const pick = require('../../../../datadog-core/src/utils/src/pick')
4
5
  const id = require('../../id')
5
6
  const DatadogSpanContext = require('../span_context')
6
7
  const log = require('../../log')
7
- const TraceState = require('./tracestate')
8
8
  const tags = require('../../../../../ext/tags')
9
- const { channel } = require('dc-polyfill')
10
9
  const { setBaggageItem, getAllBaggageItems, removeAllBaggageItems } = require('../../baggage')
11
10
  const telemetryMetrics = require('../../telemetry/metrics')
12
11
 
13
12
  const { AUTO_KEEP, AUTO_REJECT, USER_KEEP } = require('../../../../../ext/priority')
13
+ const TraceState = require('./tracestate')
14
14
 
15
15
  const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
16
16
 
@@ -34,8 +34,19 @@ const b3HeaderKey = 'b3'
34
34
  const sqsdHeaderHey = 'x-aws-sqsd-attr-_datadog'
35
35
  const b3HeaderExpr = /^(([0-9a-f]{16}){1,2}-[0-9a-f]{16}(-[01d](-[0-9a-f]{16})?)?|[01d])$/i
36
36
  const baggageExpr = new RegExp(`^${baggagePrefix}(.+)$`)
37
+ // W3C Baggage key grammar: key = token (RFC 7230).
38
+ // Spec (up-to-date): "Propagation format for distributed context: Baggage" §3.3.1
39
+ // https://www.w3.org/TR/baggage/#header-content
40
+ // https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6
41
+ const baggageTokenExpr = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/
37
42
  const tagKeyExpr = /^_dd\.p\.[\x21-\x2B\x2D-\x7E]+$/ // ASCII minus spaces and commas
38
43
  const tagValueExpr = /^[\x20-\x2B\x2D-\x7E]*$/ // ASCII minus commas
44
+ // RFC7230 token (used by HTTP header field-name) and compatible with Node's header name validation.
45
+ // See https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6
46
+ const httpHeaderNameExpr = /^[0-9A-Za-z!#$%&'*+\-.^_`|~]+$/
47
+ // Compatible with Node's internal header value validation (allows HTAB, SP-~, and \x80-\xFF only)
48
+ // https://github.com/nodejs/node/blob/main/lib/_http_common.js
49
+ const invalidHeaderValueCharExpr = /[^\t\x20-\x7E\x80-\xFF]/
39
50
  const traceparentExpr = /^([a-f0-9]{2})-([a-f0-9]{32})-([a-f0-9]{16})-([a-f0-9]{2})(-.*)?$/i
40
51
  const traceparentKey = 'traceparent'
41
52
  const tracestateKey = 'tracestate'
@@ -121,18 +132,28 @@ class TextMapPropagator {
121
132
  }
122
133
  }
123
134
 
124
- _encodeOtelBaggageKey (key) {
125
- let encoded = encodeURIComponent(key)
126
- encoded = encoded.replaceAll('(', '%28')
127
- encoded = encoded.replaceAll(')', '%29')
128
- return encoded
129
- }
130
-
131
135
  _injectBaggageItems (spanContext, carrier) {
132
136
  if (this._config.legacyBaggageEnabled) {
133
- spanContext?._baggageItems && Object.keys(spanContext._baggageItems).forEach(key => {
134
- carrier[baggagePrefix + key] = String(spanContext._baggageItems[key])
135
- })
137
+ const baggageItems = spanContext?._baggageItems
138
+ if (baggageItems) {
139
+ for (const key of Object.keys(baggageItems)) {
140
+ const headerName = baggagePrefix + key
141
+
142
+ // Legacy OpenTracing baggage is propagated as individual headers (ot-baggage-*),
143
+ // so it must always be representable as a valid HTTP header name.
144
+ if (!httpHeaderNameExpr.test(headerName)) {
145
+ tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
146
+ continue
147
+ }
148
+
149
+ let headerValue = String(baggageItems[key])
150
+ // Avoid Node throwing ERR_INVALID_CHAR when setting header values (e.g. newline from decoded OTEL baggage).
151
+ if (invalidHeaderValueCharExpr.test(headerValue)) {
152
+ headerValue = encodeURIComponent(headerValue)
153
+ }
154
+ carrier[headerName] = headerValue
155
+ }
156
+ }
136
157
  }
137
158
  if (this._hasPropagationStyle('inject', 'baggage')) {
138
159
  let baggage = ''
@@ -142,7 +163,13 @@ class TextMapPropagator {
142
163
  const baggageItems = getAllBaggageItems()
143
164
  if (!baggageItems) return
144
165
  for (const [key, value] of Object.entries(baggageItems)) {
145
- const item = `${this._encodeOtelBaggageKey(String(key).trim())}=${encodeURIComponent(String(value).trim())},`
166
+ const baggageKey = String(key).trim()
167
+ if (!baggageKey || !baggageTokenExpr.test(baggageKey)) continue
168
+
169
+ // Do not trim values. If callers include leading/trailing whitespace, it must be percent-encoded.
170
+ // W3C list-member allows optional properties after ';'.
171
+ // https://www.w3.org/TR/baggage/#header-content
172
+ const item = `${baggageKey}=${encodeURIComponent(String(value))},`
146
173
  itemCounter += 1
147
174
  byteCounter += Buffer.byteLength(item)
148
175
 
@@ -625,13 +652,6 @@ class TextMapPropagator {
625
652
  }
626
653
  }
627
654
 
628
- _decodeOtelBaggageKey (key) {
629
- let decoded = decodeURIComponent(key)
630
- decoded = decoded.replaceAll('%28', '(')
631
- decoded = decoded.replaceAll('%29', ')')
632
- return decoded
633
- }
634
-
635
655
  _extractLegacyBaggageItems (carrier, spanContext) {
636
656
  if (this._config.legacyBaggageEnabled) {
637
657
  Object.keys(carrier).forEach(key => {
@@ -646,26 +666,46 @@ class TextMapPropagator {
646
666
 
647
667
  _extractBaggageItems (carrier, spanContext) {
648
668
  if (!this._hasPropagationStyle('extract', 'baggage')) return
649
- if (!carrier || !carrier.baggage) return
669
+ if (!carrier?.baggage) return
650
670
  const baggages = carrier.baggage.split(',')
651
- const keysToSpanTag = this._config.baggageTagKeys === '*'
671
+ const tagAllKeys = this._config.baggageTagKeys === '*'
672
+ const keysToSpanTag = tagAllKeys
652
673
  ? undefined
653
674
  : new Set(this._config.baggageTagKeys.split(','))
654
675
  for (const keyValue of baggages) {
655
- if (!keyValue.includes('=')) {
676
+ if (!keyValue) continue
677
+
678
+ // Per W3C baggage, list-members can contain optional properties after `;`.
679
+ // Example: key=value;prop=1;prop2
680
+ // https://www.w3.org/TR/baggage/#header-content
681
+ const semicolonIdx = keyValue.indexOf(';')
682
+ const member = (semicolonIdx === -1 ? keyValue : keyValue.slice(0, semicolonIdx)).trim()
683
+ if (!member) continue
684
+
685
+ const eqIdx = member.indexOf('=')
686
+ if (eqIdx === -1) {
687
+ tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
688
+ removeAllBaggageItems()
689
+ return
690
+ }
691
+
692
+ const key = member.slice(0, eqIdx).trim()
693
+ let value = member.slice(eqIdx + 1).trim()
694
+
695
+ if (!baggageTokenExpr.test(key) || !value) {
656
696
  tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
657
697
  removeAllBaggageItems()
658
698
  return
659
699
  }
660
- let [key, value] = keyValue.split('=')
661
- key = this._decodeOtelBaggageKey(key.trim())
662
- value = decodeURIComponent(value.trim())
663
- if (!key || !value) {
700
+ try {
701
+ value = decodeURIComponent(value)
702
+ } catch {
664
703
  tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
665
704
  removeAllBaggageItems()
666
705
  return
667
706
  }
668
- if (spanContext && (this._config.baggageTagKeys === '*' || keysToSpanTag.has(key))) {
707
+
708
+ if (spanContext && (tagAllKeys || keysToSpanTag?.has(key))) {
669
709
  spanContext._trace.tags['baggage.' + key] = value
670
710
  }
671
711
  setBaggageItem(key, value)
@@ -4,26 +4,26 @@
4
4
  const { performance } = require('perf_hooks')
5
5
  const now = performance.now.bind(performance)
6
6
  const dateNow = Date.now
7
- const SpanContext = require('./span_context')
7
+ const util = require('util')
8
+ const { channel } = require('dc-polyfill')
8
9
  const id = require('../id')
9
10
  const tagger = require('../tagger')
10
11
  const runtimeMetrics = require('../runtime_metrics')
11
12
  const log = require('../log')
12
13
  const { storage } = require('../../../datadog-core')
13
14
  const telemetryMetrics = require('../telemetry/metrics')
14
- const { channel } = require('dc-polyfill')
15
- const util = require('util')
16
- const { getEnvironmentVariable } = require('../config-helper')
15
+ const { getValueFromEnvSources } = require('../config/helper')
16
+ const SpanContext = require('./span_context')
17
17
 
18
18
  const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
19
19
 
20
- const DD_TRACE_EXPERIMENTAL_STATE_TRACKING = getEnvironmentVariable('DD_TRACE_EXPERIMENTAL_STATE_TRACKING')
21
- const DD_TRACE_EXPERIMENTAL_SPAN_COUNTS = getEnvironmentVariable('DD_TRACE_EXPERIMENTAL_SPAN_COUNTS')
20
+ const DD_TRACE_EXPERIMENTAL_STATE_TRACKING = getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_STATE_TRACKING')
21
+ const DD_TRACE_EXPERIMENTAL_SPAN_COUNTS = getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_SPAN_COUNTS')
22
22
 
23
23
  const unfinishedRegistry = createRegistry('unfinished')
24
24
  const finishedRegistry = createRegistry('finished')
25
25
 
26
- const OTEL_ENABLED = !!getEnvironmentVariable('DD_TRACE_OTEL_ENABLED')
26
+ const OTEL_ENABLED = !!getValueFromEnvSources('DD_TRACE_OTEL_ENABLED')
27
27
  const ALLOWED = new Set(['string', 'number', 'boolean'])
28
28
 
29
29
  const integrationCounters = {
@@ -1,19 +1,19 @@
1
1
  'use strict'
2
2
 
3
3
  const os = require('os')
4
- const Span = require('./span')
5
4
  const SpanProcessor = require('../span_processor')
6
5
  const PrioritySampler = require('../priority_sampler')
6
+ const formats = require('../../../../ext/formats')
7
+ const log = require('../log')
8
+ const runtimeMetrics = require('../runtime_metrics')
9
+ const getExporter = require('../exporter')
10
+ const Span = require('./span')
7
11
  const TextMapPropagator = require('./propagation/text_map')
8
12
  const DSMTextMapPropagator = require('./propagation/text_map_dsm')
9
13
  const HttpPropagator = require('./propagation/http')
10
14
  const BinaryPropagator = require('./propagation/binary')
11
15
  const LogPropagator = require('./propagation/log')
12
- const formats = require('../../../../ext/formats')
13
16
 
14
- const log = require('../log')
15
- const runtimeMetrics = require('../runtime_metrics')
16
- const getExporter = require('../exporter')
17
17
  const SpanContext = require('./span_context')
18
18
 
19
19
  const REFERENCE_CHILD_OF = 'child_of'
@@ -38,7 +38,9 @@ function maybeJSONParseValue (value) {
38
38
  function expand (object, expansionRules) {
39
39
  for (const rule of expansionRules) {
40
40
  jsonpath(rule, object, (value, _type, desc) => {
41
- desc.parent[desc.parentProperty] = maybeJSONParseValue(value)
41
+ if (desc.parent && desc.parentProperty) {
42
+ desc.parent[desc.parentProperty] = maybeJSONParseValue(value)
43
+ }
42
44
  })
43
45
  }
44
46
  }
@@ -52,7 +54,9 @@ function expand (object, expansionRules) {
52
54
  function redact (object, redactionRules) {
53
55
  for (const rule of redactionRules) {
54
56
  jsonpath(rule, object, (_value, _type, desc) => {
55
- desc.parent[desc.parentProperty] = 'redacted'
57
+ if (desc.parent && desc.parentProperty) {
58
+ desc.parent[desc.parentProperty] = 'redacted'
59
+ }
56
60
  })
57
61
  }
58
62
  }
@@ -1,10 +1,11 @@
1
1
  'use strict'
2
2
 
3
3
  const { channel } = require('dc-polyfill')
4
+
5
+ const { getEnvironmentVariable, getValueFromEnvSources } = require('./config/helper')
4
6
  const { isFalse, isTrue, normalizePluginEnvName } = require('./util')
5
7
  const plugins = require('./plugins')
6
8
  const log = require('./log')
7
- const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
8
9
 
9
10
  // Test optimization plugins that should only be enabled when isCiVisibility is true
10
11
  const TEST_OPTIMIZATION_PLUGINS = new Set([
@@ -24,7 +25,7 @@ if (getEnvironmentVariable('AWS_LAMBDA_FUNCTION_NAME') !== undefined) {
24
25
  require('./lambda')
25
26
  }
26
27
 
27
- const DD_TRACE_DISABLED_PLUGINS = getEnvironmentVariable('DD_TRACE_DISABLED_PLUGINS')
28
+ const DD_TRACE_DISABLED_PLUGINS = getValueFromEnvSources('DD_TRACE_DISABLED_PLUGINS')
28
29
 
29
30
  const disabledPlugins = new Set(
30
31
  DD_TRACE_DISABLED_PLUGINS && DD_TRACE_DISABLED_PLUGINS.split(',').map(plugin => plugin.trim())
@@ -41,7 +42,7 @@ loadChannel.subscribe(({ name }) => {
41
42
  function maybeEnable (Plugin) {
42
43
  if (!Plugin || typeof Plugin !== 'function') return
43
44
  if (!pluginClasses[Plugin.id]) {
44
- const enabled = getEnvEnabled(Plugin)
45
+ const enabled = getEnabled(Plugin)
45
46
 
46
47
  // TODO: remove the need to load the plugin class in order to disable the plugin
47
48
  if (isFalse(enabled) || disabledPlugins.has(Plugin.id)) {
@@ -54,9 +55,9 @@ function maybeEnable (Plugin) {
54
55
  }
55
56
  }
56
57
 
57
- function getEnvEnabled (Plugin) {
58
+ function getEnabled (Plugin) {
58
59
  const envName = `DD_TRACE_${Plugin.id.toUpperCase()}_ENABLED`
59
- return getEnvironmentVariable(normalizePluginEnvName(envName))
60
+ return getValueFromEnvSources(normalizePluginEnvName(envName))
60
61
  }
61
62
 
62
63
  // TODO this must always be a singleton.
@@ -94,7 +95,8 @@ module.exports = class PluginManager {
94
95
  this._pluginsByName[name] = new Plugin(this._tracer, this._tracerConfig)
95
96
  }
96
97
  const pluginConfig = this._configsByName[name] || {
97
- enabled: this._tracerConfig.plugins !== false && (!Plugin.experimental || isTrue(getEnvEnabled(Plugin)))
98
+ enabled: this._tracerConfig.plugins !== false &&
99
+ (!Plugin.experimental || isTrue(getEnabled(Plugin)))
98
100
  }
99
101
 
100
102
  // extracts predetermined configuration from tracer and combines it with plugin-specific config
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const TracingPlugin = require('./tracing')
4
3
  const { storage } = require('../../../datadog-core')
4
+ const TracingPlugin = require('./tracing')
5
5
 
6
6
  class ApolloBasePlugin extends TracingPlugin {
7
7
  static id = 'apollo.gateway'
@@ -1,6 +1,33 @@
1
1
  'use strict'
2
2
 
3
3
  const { storage } = require('../../../datadog-core')
4
+ const { COMPONENT } = require('../constants')
5
+ const log = require('../log')
6
+ const {
7
+ incrementCountMetric,
8
+ distributionMetric,
9
+ TELEMETRY_EVENT_CREATED,
10
+ TELEMETRY_ITR_SKIPPED
11
+ } = require('../ci-visibility/telemetry')
12
+ const getDiClient = require('../ci-visibility/dynamic-instrumentation')
13
+ const { DD_MAJOR } = require('../../../../version')
14
+ const id = require('../id')
15
+ const { OS_VERSION, OS_PLATFORM, OS_ARCHITECTURE, RUNTIME_NAME, RUNTIME_VERSION } = require('./util/env')
16
+ const {
17
+ CI_PROVIDER_NAME,
18
+ GIT_REPOSITORY_URL,
19
+ GIT_COMMIT_SHA,
20
+ GIT_BRANCH,
21
+ CI_WORKSPACE_PATH,
22
+ GIT_COMMIT_MESSAGE,
23
+ GIT_TAG,
24
+ GIT_PULL_REQUEST_BASE_BRANCH_SHA,
25
+ GIT_COMMIT_HEAD_SHA,
26
+ GIT_PULL_REQUEST_BASE_BRANCH,
27
+ GIT_COMMIT_HEAD_MESSAGE
28
+ } = require('./util/tags')
29
+ const Plugin = require('./plugin')
30
+ const { getRepositoryRoot } = require('./util/git')
4
31
  const {
5
32
  getTestEnvironmentMetadata,
6
33
  getTestSessionName,
@@ -37,33 +64,6 @@ const {
37
64
  getPullRequestBaseBranch,
38
65
  TEST_IS_TEST_FRAMEWORK_WORKER
39
66
  } = require('./util/test')
40
- const { getRepositoryRoot } = require('./util/git')
41
- const Plugin = require('./plugin')
42
- const { COMPONENT } = require('../constants')
43
- const log = require('../log')
44
- const {
45
- incrementCountMetric,
46
- distributionMetric,
47
- TELEMETRY_EVENT_CREATED,
48
- TELEMETRY_ITR_SKIPPED
49
- } = require('../ci-visibility/telemetry')
50
- const {
51
- CI_PROVIDER_NAME,
52
- GIT_REPOSITORY_URL,
53
- GIT_COMMIT_SHA,
54
- GIT_BRANCH,
55
- CI_WORKSPACE_PATH,
56
- GIT_COMMIT_MESSAGE,
57
- GIT_TAG,
58
- GIT_PULL_REQUEST_BASE_BRANCH_SHA,
59
- GIT_COMMIT_HEAD_SHA,
60
- GIT_PULL_REQUEST_BASE_BRANCH,
61
- GIT_COMMIT_HEAD_MESSAGE
62
- } = require('./util/tags')
63
- const { OS_VERSION, OS_PLATFORM, OS_ARCHITECTURE, RUNTIME_NAME, RUNTIME_VERSION } = require('./util/env')
64
- const getDiClient = require('../ci-visibility/dynamic-instrumentation')
65
- const { DD_MAJOR } = require('../../../../version')
66
- const id = require('../id')
67
67
 
68
68
  const FRAMEWORK_TO_TRIMMED_COMMAND = {
69
69
  vitest: 'vitest run',
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const StoragePlugin = require('./storage')
4
3
  const { PEER_SERVICE_KEY, PEER_SERVICE_SOURCE_KEY } = require('../constants')
4
+ const StoragePlugin = require('./storage')
5
5
 
6
6
  class DatabasePlugin extends StoragePlugin {
7
7
  static operation = 'query'
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- module.exports = {
3
+ const plugins = {
4
4
  get '@anthropic-ai/sdk' () { return require('../../../datadog-plugin-anthropic/src') },
5
5
  get '@apollo/gateway' () { return require('../../../datadog-plugin-apollo/src') },
6
6
  get '@aws-sdk/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') },
@@ -26,6 +26,7 @@ module.exports = {
26
26
  get '@node-redis/client' () { return require('../../../datadog-plugin-redis/src') },
27
27
  get '@opensearch-project/opensearch' () { return require('../../../datadog-plugin-opensearch/src') },
28
28
  get '@prisma/client' () { return require('../../../datadog-plugin-prisma/src') },
29
+ get './runtime/library.js' () { return require('../../../datadog-plugin-prisma/src') },
29
30
  get '@redis/client' () { return require('../../../datadog-plugin-redis/src') },
30
31
  get '@smithy/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') },
31
32
  get '@vitest/runner' () { return require('../../../datadog-plugin-vitest/src') },
@@ -35,6 +36,7 @@ module.exports = {
35
36
  get amqplib () { return require('../../../datadog-plugin-amqplib/src') },
36
37
  get avsc () { return require('../../../datadog-plugin-avsc/src') },
37
38
  get 'aws-sdk' () { return require('../../../datadog-plugin-aws-sdk/src') },
39
+ get bullmq () { return require('../../../datadog-plugin-bullmq/src') },
38
40
  get bunyan () { return require('../../../datadog-plugin-bunyan/src') },
39
41
  get 'cassandra-driver' () { return require('../../../datadog-plugin-cassandra-driver/src') },
40
42
  get child_process () { return require('../../../datadog-plugin-child_process/src') },
@@ -110,3 +112,5 @@ module.exports = {
110
112
  get winston () { return require('../../../datadog-plugin-winston/src') },
111
113
  get ws () { return require('../../../datadog-plugin-ws/src') }
112
114
  }
115
+
116
+ module.exports = plugins
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
3
  const { LOG } = require('../../../../ext/formats')
4
- const Plugin = require('./plugin')
5
4
  const { storage } = require('../../../datadog-core')
5
+ const Plugin = require('./plugin')
6
6
 
7
7
  function messageProxy (message, holder) {
8
8
  return new Proxy(message, {
@@ -6,9 +6,9 @@ const {
6
6
  PEER_SERVICE_SOURCE_KEY,
7
7
  PEER_SERVICE_REMAP_KEY
8
8
  } = require('../constants')
9
- const TracingPlugin = require('./tracing')
10
9
  const { exitTags } = require('../../../datadog-code-origin')
11
10
  const { storage } = require('../../../datadog-core')
11
+ const TracingPlugin = require('./tracing')
12
12
 
13
13
  const COMMON_PEER_SVC_SOURCE_TAGS = [
14
14
  'net.peer.name',
@@ -1,9 +1,9 @@
1
1
  'use strict'
2
2
 
3
- const Plugin = require('./plugin')
4
3
  const { storage } = require('../../../datadog-core')
5
4
  const analyticsSampler = require('../analytics_sampler')
6
5
  const { COMPONENT } = require('../constants')
6
+ const Plugin = require('./plugin')
7
7
 
8
8
  class TracingPlugin extends Plugin {
9
9
  constructor (...args) {
@@ -1,6 +1,7 @@
1
1
  'use strict'
2
2
 
3
3
  const { readFileSync } = require('fs')
4
+ const { getEnvironmentVariable, getEnvironmentVariables, getValueFromEnvSources } = require('../../config/helper')
4
5
  const {
5
6
  GIT_BRANCH,
6
7
  GIT_COMMIT_SHA,
@@ -32,7 +33,6 @@ const {
32
33
  GIT_PULL_REQUEST_BASE_BRANCH_HEAD_SHA
33
34
  } = require('./tags')
34
35
  const { filterSensitiveInfoFromRepository } = require('./url')
35
- const { getEnvironmentVariable, getEnvironmentVariables } = require('../../config-helper')
36
36
 
37
37
  // Receives a string with the form 'John Doe <john.doe@gmail.com>'
38
38
  // and returns { name: 'John Doe', email: 'john.doe@gmail.com' }
@@ -120,12 +120,12 @@ module.exports = {
120
120
  GIT_COMMIT: JENKINS_GIT_COMMIT,
121
121
  GIT_URL: JENKINS_GIT_REPOSITORY_URL,
122
122
  GIT_URL_1: JENKINS_GIT_REPOSITORY_URL_1,
123
- DD_CUSTOM_TRACE_ID,
124
123
  NODE_NAME,
125
124
  NODE_LABELS,
126
125
  CHANGE_ID,
127
126
  CHANGE_TARGET
128
127
  } = env
128
+ const DD_CUSTOM_TRACE_ID = getValueFromEnvSources('DD_CUSTOM_TRACE_ID')
129
129
 
130
130
  tags = {
131
131
  [CI_PIPELINE_ID]: BUILD_TAG,
@@ -689,16 +689,13 @@ module.exports = {
689
689
  }
690
690
 
691
691
  if (env.CODEBUILD_INITIATOR?.startsWith('codepipeline/')) {
692
- const {
693
- CODEBUILD_BUILD_ARN,
694
- DD_ACTION_EXECUTION_ID,
695
- DD_PIPELINE_EXECUTION_ID
696
- } = env
692
+ const DD_ACTION_EXECUTION_ID = getValueFromEnvSources('DD_ACTION_EXECUTION_ID')
693
+ const DD_PIPELINE_EXECUTION_ID = getValueFromEnvSources('DD_PIPELINE_EXECUTION_ID')
697
694
  tags = {
698
695
  [CI_PROVIDER_NAME]: 'awscodepipeline',
699
696
  [CI_PIPELINE_ID]: DD_PIPELINE_EXECUTION_ID,
700
697
  [CI_ENV_VARS]: JSON.stringify({
701
- CODEBUILD_BUILD_ARN,
698
+ CODEBUILD_BUILD_ARN: env.CODEBUILD_BUILD_ARN,
702
699
  DD_PIPELINE_EXECUTION_ID,
703
700
  DD_ACTION_EXECUTION_ID
704
701
  }),
@@ -7,11 +7,11 @@ const crypto = require('crypto')
7
7
  const cp = require('child_process')
8
8
 
9
9
  const log = require('../../log')
10
- const { getEnvironmentVariable } = require('../../config-helper')
10
+ const { getValueFromEnvSources } = require('../../config/helper')
11
11
  const { isTrue } = require('../../util')
12
12
 
13
- let isGitEnabled = isTrue(getEnvironmentVariable('DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED'))
14
- const GIT_CACHE_DIR = getEnvironmentVariable('DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR') ||
13
+ let isGitEnabled = isTrue(getValueFromEnvSources('DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED'))
14
+ const GIT_CACHE_DIR = getValueFromEnvSources('DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR') ||
15
15
  path.join(os.tmpdir(), 'dd-trace-git-cache')
16
16
 
17
17
  function ensureCacheDir () {
@@ -5,6 +5,14 @@ const path = require('path')
5
5
  const fs = require('fs')
6
6
 
7
7
  const log = require('../../log')
8
+ const {
9
+ incrementCountMetric,
10
+ distributionMetric,
11
+ TELEMETRY_GIT_COMMAND,
12
+ TELEMETRY_GIT_COMMAND_MS,
13
+ TELEMETRY_GIT_COMMAND_ERRORS
14
+ } = require('../../ci-visibility/telemetry')
15
+ const { storage } = require('../../../../datadog-core')
8
16
  const {
9
17
  GIT_COMMIT_SHA,
10
18
  GIT_BRANCH,
@@ -26,15 +34,7 @@ const {
26
34
  GIT_COMMIT_HEAD_COMMITTER_NAME,
27
35
  GIT_COMMIT_HEAD_MESSAGE
28
36
  } = require('./tags')
29
- const {
30
- incrementCountMetric,
31
- distributionMetric,
32
- TELEMETRY_GIT_COMMAND,
33
- TELEMETRY_GIT_COMMAND_MS,
34
- TELEMETRY_GIT_COMMAND_ERRORS
35
- } = require('../../ci-visibility/telemetry')
36
37
  const { filterSensitiveInfoFromRepository } = require('./url')
37
- const { storage } = require('../../../../datadog-core')
38
38
  const { cachedExec } = require('./git-cache')
39
39
 
40
40
  const GIT_REV_LIST_MAX_BUFFER = 12 * 1024 * 1024 // 12MB
@@ -72,7 +72,7 @@ function parseUserLandFrames (stack, limit = Infinity) {
72
72
  * @param {number} end - The end index of the line to parse within the stack trace.
73
73
  * @returns {StackFrame|undefined} The parsed frame if it is a user frame, `undefined` otherwise.
74
74
  *
75
- * @typedef {Object} StackFrame
75
+ * @typedef {object} StackFrame
76
76
  * @property {string} fileName - The file name of the frame.
77
77
  * @property {string} lineNumber - The line number of the frame.
78
78
  * @property {string} columnNumber - The column number of the frame.
@@ -4,26 +4,23 @@ const path = require('path')
4
4
  const fs = require('fs')
5
5
  const { URL } = require('url')
6
6
  const log = require('../../log')
7
- const { getEnvironmentVariable } = require('../../config-helper')
7
+ const { getEnvironmentVariable } = require('../../config/helper')
8
8
  const satisfies = require('../../../../../vendor/dist/semifies')
9
9
 
10
10
  const istanbul = require('../../../../../vendor/dist/istanbul-lib-coverage')
11
11
  const ignore = require('../../../../../vendor/dist/ignore')
12
12
 
13
+ const id = require('../../id')
13
14
  const {
14
- getGitMetadata,
15
- getGitInformationDiscrepancy,
16
- getGitDiff,
17
- getGitRemoteName,
18
- getSourceBranch,
19
- checkAndFetchBranch,
20
- getLocalBranches,
21
- getMergeBase,
22
- getCounts
23
- } = require('./git')
24
- const { getUserProviderGitMetadata, validateGitRepositoryUrl, validateGitCommitSha } = require('./user-provided-git')
25
- const { getCIMetadata } = require('./ci')
26
- const { getRuntimeAndOSMetadata } = require('./env')
15
+ incrementCountMetric,
16
+ TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY,
17
+ TELEMETRY_GIT_SHA_MATCH
18
+ } = require('../../ci-visibility/telemetry')
19
+
20
+ const { SPAN_TYPE, RESOURCE_NAME, SAMPLING_PRIORITY } = require('../../../../../ext/tags')
21
+ const { SAMPLING_RULE_DECISION } = require('../../constants')
22
+ const { AUTO_KEEP } = require('../../../../../ext/priority')
23
+ const { version: ddTraceVersion } = require('../../../../../package.json')
27
24
  const {
28
25
  GIT_BRANCH,
29
26
  GIT_COMMIT_SHA,
@@ -37,17 +34,20 @@ const {
37
34
  CI_JOB_NAME,
38
35
  GIT_COMMIT_HEAD_SHA
39
36
  } = require('./tags')
40
- const id = require('../../id')
37
+ const { getRuntimeAndOSMetadata } = require('./env')
38
+ const { getCIMetadata } = require('./ci')
39
+ const { getUserProviderGitMetadata, validateGitRepositoryUrl, validateGitCommitSha } = require('./user-provided-git')
41
40
  const {
42
- incrementCountMetric,
43
- TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY,
44
- TELEMETRY_GIT_SHA_MATCH
45
- } = require('../../ci-visibility/telemetry')
46
-
47
- const { SPAN_TYPE, RESOURCE_NAME, SAMPLING_PRIORITY } = require('../../../../../ext/tags')
48
- const { SAMPLING_RULE_DECISION } = require('../../constants')
49
- const { AUTO_KEEP } = require('../../../../../ext/priority')
50
- const { version: ddTraceVersion } = require('../../../../../package.json')
41
+ getGitMetadata,
42
+ getGitInformationDiscrepancy,
43
+ getGitDiff,
44
+ getGitRemoteName,
45
+ getSourceBranch,
46
+ checkAndFetchBranch,
47
+ getLocalBranches,
48
+ getMergeBase,
49
+ getCounts
50
+ } = require('./git')
51
51
 
52
52
  /**
53
53
  * JSDoc types for test environment metadata helpers.
@@ -813,7 +813,7 @@ function getTestEndLine (testFn, startLine = 0) {
813
813
 
814
814
  /**
815
815
  * Gets an object of test tags from an Playwright annotations array.
816
- * @param {Object[]} annotations - Annotations from a Playwright test.
816
+ * @param {object[]} annotations - Annotations from a Playwright test.
817
817
  * @param {string} annotations[].type - Type of annotation. A string of the shape DD_TAGS[$tag_name].
818
818
  * @param {string} annotations[].description - Value of the tag.
819
819
  */