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
@@ -6,6 +6,7 @@ const os = require('os')
6
6
  const perf = require('perf_hooks').performance
7
7
  const version = require('../../../../../package.json').version
8
8
  const { availableParallelism, libuvThreadPoolSize } = require('../libuv-size')
9
+ const processTags = require('../../process-tags')
9
10
 
10
11
  class EventSerializer {
11
12
  constructor ({ env, host, service, version, libraryInjected, activation } = {}) {
@@ -22,7 +23,7 @@ class EventSerializer {
22
23
  }
23
24
 
24
25
  getEventJSON ({ profiles, infos, start, end, tags = {}, endpointCounts }) {
25
- return JSON.stringify({
26
+ const event = {
26
27
  attachments: Object.keys(profiles).map(t => this.typeToFile(t)),
27
28
  start: start.toISOString(),
28
29
  end: end.toISOString(),
@@ -77,7 +78,13 @@ class EventSerializer {
77
78
  version: process.version.slice(1)
78
79
  }
79
80
  }
80
- })
81
+ }
82
+
83
+ if (processTags.serialized) {
84
+ event[processTags.PROFILING_FIELD_NAME] = processTags.serialized
85
+ }
86
+
87
+ return JSON.stringify(event)
81
88
  }
82
89
  }
83
90
 
@@ -1,12 +1,12 @@
1
1
  'use strict'
2
2
 
3
+ const { getEnvironmentVariable } = require('../config/helper')
3
4
  const { Profiler, ServerlessProfiler } = require('./profiler')
4
5
  const WallProfiler = require('./profilers/wall')
5
6
  const SpaceProfiler = require('./profilers/space')
6
7
  const { AgentExporter } = require('./exporters/agent')
7
8
  const { FileExporter } = require('./exporters/file')
8
9
  const { ConsoleLogger } = require('./loggers/console')
9
- const { getEnvironmentVariable } = require('../config-helper')
10
10
 
11
11
  const profiler = getEnvironmentVariable('AWS_LAMBDA_FUNCTION_NAME') ? new ServerlessProfiler() : new Profiler()
12
12
 
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const { getEnvironmentVariable } = require('../config-helper')
4
3
  const os = require('node:os')
4
+ const { getEnvironmentVariable } = require('../config/helper')
5
5
 
6
6
  function getLibuvThreadPoolSize (envVar) {
7
7
  if (envVar === undefined) {
@@ -1,15 +1,15 @@
1
1
  'use strict'
2
2
 
3
3
  const { EventEmitter } = require('events')
4
+ const { promisify } = require('util')
5
+ const zlib = require('zlib')
6
+ const dc = require('dc-polyfill')
7
+ const crashtracker = require('../crashtracking')
8
+ const log = require('../log')
4
9
  const { Config } = require('./config')
5
10
  const { snapshotKinds } = require('./constants')
6
11
  const { threadNamePrefix } = require('./profilers/shared')
7
12
  const { isWebServerSpan, endpointNameFromTags, getStartedSpans } = require('./webspan-utils')
8
- const dc = require('dc-polyfill')
9
- const crashtracker = require('../crashtracking')
10
-
11
- const { promisify } = require('util')
12
- const zlib = require('zlib')
13
13
 
14
14
  const profileSubmittedChannel = dc.channel('datadog:profiling:profile-submitted')
15
15
  const spanFinishedChannel = dc.channel('dd-trace:span:finish')
@@ -64,13 +64,64 @@ class Profiler extends EventEmitter {
64
64
  this._timeoutInterval = undefined
65
65
  }
66
66
 
67
+ get serverless () { return false }
68
+
67
69
  get flushInterval () {
68
70
  return this.#config?.flushInterval
69
71
  }
70
72
 
71
- start (options) {
73
+ start (config) {
74
+ const {
75
+ service,
76
+ version,
77
+ env,
78
+ url,
79
+ hostname,
80
+ port,
81
+ tags,
82
+ repositoryUrl,
83
+ commitSHA,
84
+ injectionEnabled
85
+ } = config
86
+ const { enabled, sourceMap, exporters } = config.profiling
87
+ const { heartbeatInterval } = config.telemetry
88
+
89
+ // TODO: Unify with main logger and rewrite template strings to use printf formatting.
90
+ const logger = {
91
+ debug (message) { log.debug(message) },
92
+ info (message) { log.info(message) },
93
+ warn (message) { log.warn(message) },
94
+ error (...args) { log.error(...args) }
95
+ }
96
+
97
+ const libraryInjected = injectionEnabled.length > 0
98
+ let activation
99
+ if (enabled === 'auto') {
100
+ activation = 'auto'
101
+ } else if (enabled === 'true') {
102
+ activation = 'manual'
103
+ } // else activation = undefined
104
+
105
+ const options = {
106
+ service,
107
+ version,
108
+ env,
109
+ logger,
110
+ sourceMap,
111
+ exporters,
112
+ url,
113
+ hostname,
114
+ port,
115
+ tags,
116
+ repositoryUrl,
117
+ commitSHA,
118
+ libraryInjected,
119
+ activation,
120
+ heartbeatInterval
121
+ }
122
+
72
123
  return this._start(options).catch((err) => {
73
- logError(options.logger, 'Error starting profiler. For troubleshooting tips, see ' +
124
+ logError(logger, 'Error starting profiler. For troubleshooting tips, see ' +
74
125
  '<https://dtdg.co/nodejs-profiler-troubleshooting>', err)
75
126
  return false
76
127
  })
@@ -243,6 +294,7 @@ class Profiler extends EventEmitter {
243
294
 
244
295
  #createInitialInfos () {
245
296
  return {
297
+ serverless: this.serverless,
246
298
  settings: this.#config.systemInfoReport
247
299
  }
248
300
  }
@@ -352,6 +404,8 @@ class ServerlessProfiler extends Profiler {
352
404
  this.#flushAfterIntervals = undefined
353
405
  }
354
406
 
407
+ get serverless () { return true }
408
+
355
409
  get profiledIntervals () {
356
410
  return this.#profiledIntervals
357
411
  }
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const TracingPlugin = require('../../../plugins/tracing')
4
3
  const { performance } = require('perf_hooks')
4
+ const TracingPlugin = require('../../../plugins/tracing')
5
5
 
6
6
  // We are leveraging the TracingPlugin class for its functionality to bind
7
7
  // start/error/finish methods to the appropriate diagnostic channels.
@@ -1,7 +1,6 @@
1
1
  'use strict'
2
2
 
3
3
  const { performance, constants, PerformanceObserver } = require('perf_hooks')
4
- const { END_TIMESTAMP_LABEL, SPAN_ID_LABEL, LOCAL_ROOT_SPAN_ID_LABEL, encodeProfileAsync } = require('./shared')
5
4
  const {
6
5
  Function,
7
6
  Label,
@@ -12,8 +11,9 @@ const {
12
11
  StringTable,
13
12
  ValueType
14
13
  } = require('../../../../../vendor/dist/pprof-format')
15
- const PoissonProcessSamplingFilter = require('./poisson')
16
14
  const { availableParallelism, effectiveLibuvThreadCount } = require('../libuv-size')
15
+ const { END_TIMESTAMP_LABEL, SPAN_ID_LABEL, LOCAL_ROOT_SPAN_ID_LABEL, encodeProfileAsync } = require('./shared')
16
+ const PoissonProcessSamplingFilter = require('./poisson')
17
17
  // perf_hooks uses millis, with fractional part representing nanos. We emit nanos into the pprof file.
18
18
  const MS_TO_NS = 1_000_000
19
19
  // The number of sampling intervals that need to pass before we reset the Poisson process sampling instant.
@@ -1,10 +1,12 @@
1
1
  'use strict'
2
2
 
3
- const { storage } = require('../../../../datadog-core')
4
-
5
3
  const dc = require('dc-polyfill')
4
+
5
+ const { storage } = require('../../../../datadog-core')
6
6
  const runtimeMetrics = require('../../runtime_metrics')
7
7
  const telemetryMetrics = require('../../telemetry/metrics')
8
+ const { isWebServerSpan, endpointNameFromTags, getStartedSpans } = require('../webspan-utils')
9
+
8
10
  const {
9
11
  END_TIMESTAMP_LABEL,
10
12
  SPAN_ID_LABEL,
@@ -15,8 +17,6 @@ const {
15
17
  } = require('./shared')
16
18
  const TRACE_ENDPOINT_LABEL = 'trace endpoint'
17
19
 
18
- const { isWebServerSpan, endpointNameFromTags, getStartedSpans } = require('../webspan-utils')
19
-
20
20
  let beforeCh
21
21
  const enterCh = dc.channel('dd-trace:storage:enter')
22
22
  const spanFinishCh = dc.channel('dd-trace:span:finish')
@@ -1,4 +1,6 @@
1
1
  'use strict'
2
+
3
+ const { getValueFromEnvSources } = require('./config/helper')
2
4
  const NoopProxy = require('./noop/proxy')
3
5
  const DatadogTracer = require('./tracer')
4
6
  const getConfig = require('./config')
@@ -10,7 +12,6 @@ const telemetry = require('./telemetry')
10
12
  const nomenclature = require('./service-naming')
11
13
  const PluginManager = require('./plugin_manager')
12
14
  const NoopDogStatsDClient = require('./noop/dogstatsd')
13
- const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
14
15
  const {
15
16
  setBaggageItem,
16
17
  getBaggageItem,
@@ -126,15 +127,13 @@ class Tracer extends NoopProxy {
126
127
  }
127
128
 
128
129
  if (config.remoteConfig.enabled && !config.isCiVisibility) {
129
- const rc = require('./remote_config').enable(config, this._modules.appsec)
130
+ const RemoteConfig = require('./remote_config')
131
+ const rc = new RemoteConfig(config)
130
132
 
131
- rc.setProductHandler('APM_TRACING', (action, conf) => {
132
- if (action === 'unapply') {
133
- config.configure({}, true)
134
- } else {
135
- config.configure(conf.lib_config, true)
136
- }
137
- this._enableOrDisableTracing(config)
133
+ const tracingRemoteConfig = require('./config/remote_config')
134
+ tracingRemoteConfig.enable(rc, config, () => {
135
+ this.#updateTracing(config)
136
+ this.#updateDebugger(config, rc)
138
137
  })
139
138
 
140
139
  rc.setProductHandler('AGENT_CONFIG', (action, conf) => {
@@ -156,18 +155,17 @@ class Tracer extends NoopProxy {
156
155
  this._flare.module.send(conf.args)
157
156
  })
158
157
 
158
+ if (this._modules.appsec) {
159
+ const appsecRemoteConfig = require('./appsec/remote_config')
160
+ appsecRemoteConfig.enable(rc, config, this._modules.appsec)
161
+ }
162
+
159
163
  if (config.dynamicInstrumentation.enabled) {
160
164
  DynamicInstrumentation.start(config, rc)
161
165
  }
162
166
 
163
- if (config.experimental.flaggingProvider.enabled) {
164
- rc.setProductHandler('FFE_FLAGS', (action, conf) => {
165
- // Feed UFC config directly to OpenFeature provider
166
- if (action === 'apply' || action === 'modify') {
167
- this.openfeature._setConfiguration(conf)
168
- }
169
- })
170
- }
167
+ const openfeatureRemoteConfig = require('./openfeature/remote_config')
168
+ openfeatureRemoteConfig.enable(rc, config, () => this.openfeature)
171
169
  }
172
170
 
173
171
  if (config.profiling.enabled === 'true') {
@@ -189,7 +187,7 @@ class Tracer extends NoopProxy {
189
187
  runtimeMetrics.start(config)
190
188
  }
191
189
 
192
- this._enableOrDisableTracing(config)
190
+ this.#updateTracing(config)
193
191
 
194
192
  this._modules.rewriter.enable(config)
195
193
 
@@ -202,7 +200,7 @@ class Tracer extends NoopProxy {
202
200
  this._testApiManualPlugin.configure({ ...config, enabled: true }, false)
203
201
  }
204
202
  if (config.ciVisAgentlessLogSubmissionEnabled) {
205
- if (getEnvironmentVariable('DD_API_KEY')) {
203
+ if (getValueFromEnvSources('DD_API_KEY')) {
206
204
  const LogSubmissionPlugin = require('./ci-visibility/log-submission/log-submission-plugin')
207
205
  const automaticLogPlugin = new LogSubmissionPlugin(this)
208
206
  automaticLogPlugin.configure({ ...config, enabled: true })
@@ -248,7 +246,7 @@ class Tracer extends NoopProxy {
248
246
  }
249
247
  }
250
248
 
251
- _enableOrDisableTracing (config) {
249
+ #updateTracing (config) {
252
250
  if (config.tracing !== false) {
253
251
  if (config.appsec.enabled) {
254
252
  this._modules.appsec.enable(config)
@@ -293,6 +291,31 @@ class Tracer extends NoopProxy {
293
291
  }
294
292
  }
295
293
 
294
+ /**
295
+ * Updates the debugger (Dynamic Instrumentation) state based on remote config changes.
296
+ * Handles starting, stopping, and reconfiguring the debugger dynamically.
297
+ *
298
+ * @param {object} config - The tracer configuration object
299
+ * @param {object} rc - The RemoteConfig instance
300
+ */
301
+ #updateDebugger (config, rc) {
302
+ const shouldBeEnabled = config.dynamicInstrumentation.enabled
303
+ const isCurrentlyStarted = DynamicInstrumentation.isStarted()
304
+
305
+ if (shouldBeEnabled) {
306
+ if (isCurrentlyStarted) {
307
+ log.debug('[proxy] Reconfiguring Dynamic Instrumentation via remote config')
308
+ DynamicInstrumentation.configure(config)
309
+ } else {
310
+ log.debug('[proxy] Starting Dynamic Instrumentation via remote config')
311
+ DynamicInstrumentation.start(config, rc)
312
+ }
313
+ } else if (isCurrentlyStarted) {
314
+ log.debug('[proxy] Stopping Dynamic Instrumentation via remote config')
315
+ DynamicInstrumentation.stop()
316
+ }
317
+ }
318
+
296
319
  /**
297
320
  * @override
298
321
  */
@@ -31,9 +31,12 @@ module.exports = {
31
31
  ASM_NETWORK_FINGERPRINT: 1n << 34n,
32
32
  ASM_HEADER_FINGERPRINT: 1n << 35n,
33
33
  ASM_RASP_CMDI: 1n << 37n,
34
+ APM_TRACING_ENABLE_DYNAMIC_INSTRUMENTATION: 1n << 38n,
35
+ APM_TRACING_ENABLE_CODE_ORIGIN: 1n << 40n,
34
36
  ASM_DD_MULTICONFIG: 1n << 42n,
35
37
  ASM_TRACE_TAGGING_RULES: 1n << 43n,
36
38
  ASM_EXTENDED_DATA_COLLECTION: 1n << 44n,
39
+ APM_TRACING_MULTICONFIG: 1n << 45n,
37
40
  FFE_FLAG_CONFIGURATION_RULES: 1n << 46n,
38
41
  /*
39
42
  DO NOT ADD ARBITRARY CAPABILITIES IN YOUR CODE