dd-trace 5.81.0 → 5.82.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 (321) hide show
  1. package/index.d.ts +7 -0
  2. package/loader-hook.mjs +7 -2
  3. package/package.json +13 -18
  4. package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
  5. package/packages/datadog-esbuild/index.js +8 -7
  6. package/packages/datadog-esbuild/src/utils.js +14 -2
  7. package/packages/datadog-instrumentations/src/aerospike.js +3 -2
  8. package/packages/datadog-instrumentations/src/ai.js +2 -2
  9. package/packages/datadog-instrumentations/src/amqp10.js +1 -1
  10. package/packages/datadog-instrumentations/src/amqplib.js +4 -4
  11. package/packages/datadog-instrumentations/src/anthropic.js +2 -2
  12. package/packages/datadog-instrumentations/src/apollo-server-core.js +2 -2
  13. package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
  14. package/packages/datadog-instrumentations/src/apollo.js +3 -2
  15. package/packages/datadog-instrumentations/src/avsc.js +1 -1
  16. package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
  17. package/packages/datadog-instrumentations/src/azure-event-hubs.js +4 -3
  18. package/packages/datadog-instrumentations/src/azure-functions.js +2 -2
  19. package/packages/datadog-instrumentations/src/azure-service-bus.js +3 -4
  20. package/packages/datadog-instrumentations/src/bluebird.js +1 -1
  21. package/packages/datadog-instrumentations/src/bullmq.js +11 -0
  22. package/packages/datadog-instrumentations/src/bunyan.js +1 -1
  23. package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
  24. package/packages/datadog-instrumentations/src/child_process.js +2 -2
  25. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +3 -3
  26. package/packages/datadog-instrumentations/src/couchbase.js +1 -1
  27. package/packages/datadog-instrumentations/src/crypto.js +1 -1
  28. package/packages/datadog-instrumentations/src/cucumber.js +12 -13
  29. package/packages/datadog-instrumentations/src/cypress.js +1 -1
  30. package/packages/datadog-instrumentations/src/dns.js +1 -1
  31. package/packages/datadog-instrumentations/src/elasticsearch.js +1 -1
  32. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +1 -1
  33. package/packages/datadog-instrumentations/src/express.js +1 -1
  34. package/packages/datadog-instrumentations/src/fs.js +1 -1
  35. package/packages/datadog-instrumentations/src/generic-pool.js +1 -1
  36. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +137 -15
  37. package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -3
  38. package/packages/datadog-instrumentations/src/google-genai.js +3 -3
  39. package/packages/datadog-instrumentations/src/graphql.js +1 -1
  40. package/packages/datadog-instrumentations/src/grpc/client.js +1 -1
  41. package/packages/datadog-instrumentations/src/grpc/server.js +1 -1
  42. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
  43. package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
  44. package/packages/datadog-instrumentations/src/helpers/hooks.js +4 -1
  45. package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -1
  46. package/packages/datadog-instrumentations/src/helpers/register.js +6 -4
  47. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +2 -2
  48. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.json +106 -0
  49. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +2 -1
  50. package/packages/datadog-instrumentations/src/helpers/router-helper.js +1 -1
  51. package/packages/datadog-instrumentations/src/helpers/shared-utils.js +9 -0
  52. package/packages/datadog-instrumentations/src/hono.js +55 -10
  53. package/packages/datadog-instrumentations/src/ioredis.js +1 -1
  54. package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
  55. package/packages/datadog-instrumentations/src/jest.js +2 -2
  56. package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
  57. package/packages/datadog-instrumentations/src/knex.js +1 -1
  58. package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
  59. package/packages/datadog-instrumentations/src/light-my-request.js +93 -0
  60. package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
  61. package/packages/datadog-instrumentations/src/lodash.js +1 -2
  62. package/packages/datadog-instrumentations/src/mariadb.js +1 -2
  63. package/packages/datadog-instrumentations/src/memcached.js +1 -1
  64. package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
  65. package/packages/datadog-instrumentations/src/mongodb.js +1 -1
  66. package/packages/datadog-instrumentations/src/mongoose.js +1 -1
  67. package/packages/datadog-instrumentations/src/mquery.js +1 -1
  68. package/packages/datadog-instrumentations/src/mysql.js +1 -1
  69. package/packages/datadog-instrumentations/src/mysql2.js +1 -1
  70. package/packages/datadog-instrumentations/src/net.js +1 -1
  71. package/packages/datadog-instrumentations/src/next.js +1 -1
  72. package/packages/datadog-instrumentations/src/nyc.js +1 -1
  73. package/packages/datadog-instrumentations/src/openai.js +2 -2
  74. package/packages/datadog-instrumentations/src/opensearch.js +1 -1
  75. package/packages/datadog-instrumentations/src/oracledb.js +1 -1
  76. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +1 -1
  77. package/packages/datadog-instrumentations/src/pg.js +3 -3
  78. package/packages/datadog-instrumentations/src/pino.js +1 -1
  79. package/packages/datadog-instrumentations/src/playwright.js +1 -1
  80. package/packages/datadog-instrumentations/src/prisma.js +52 -37
  81. package/packages/datadog-instrumentations/src/process.js +1 -1
  82. package/packages/datadog-instrumentations/src/promise-js.js +1 -1
  83. package/packages/datadog-instrumentations/src/promise.js +1 -1
  84. package/packages/datadog-instrumentations/src/protobufjs.js +1 -1
  85. package/packages/datadog-instrumentations/src/q.js +1 -1
  86. package/packages/datadog-instrumentations/src/redis.js +1 -1
  87. package/packages/datadog-instrumentations/src/rhea.js +1 -1
  88. package/packages/datadog-instrumentations/src/selenium.js +1 -1
  89. package/packages/datadog-instrumentations/src/sequelize.js +1 -2
  90. package/packages/datadog-instrumentations/src/sharedb.js +1 -1
  91. package/packages/datadog-instrumentations/src/tedious.js +1 -1
  92. package/packages/datadog-instrumentations/src/undici.js +4 -4
  93. package/packages/datadog-instrumentations/src/url.js +1 -1
  94. package/packages/datadog-instrumentations/src/vitest.js +1 -1
  95. package/packages/datadog-instrumentations/src/vm.js +1 -1
  96. package/packages/datadog-instrumentations/src/when.js +1 -1
  97. package/packages/datadog-instrumentations/src/winston.js +1 -1
  98. package/packages/datadog-instrumentations/src/ws.js +3 -2
  99. package/packages/datadog-plugin-amqp10/src/index.js +1 -1
  100. package/packages/datadog-plugin-amqplib/src/index.js +1 -1
  101. package/packages/datadog-plugin-anthropic/src/index.js +1 -1
  102. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
  103. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +4 -4
  104. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
  105. package/packages/datadog-plugin-aws-sdk/src/util.js +3 -3
  106. package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
  107. package/packages/datadog-plugin-azure-event-hubs/src/producer.js +19 -5
  108. package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
  109. package/packages/datadog-plugin-azure-service-bus/src/producer.js +4 -0
  110. package/packages/datadog-plugin-bullmq/src/consumer.js +60 -0
  111. package/packages/datadog-plugin-bullmq/src/index.js +18 -0
  112. package/packages/datadog-plugin-bullmq/src/producer.js +178 -0
  113. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
  114. package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
  115. package/packages/datadog-plugin-express/src/index.js +1 -1
  116. package/packages/datadog-plugin-fastify/src/index.js +1 -1
  117. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +13 -3
  118. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +171 -12
  119. package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -2
  120. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +160 -13
  121. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +217 -0
  122. package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
  123. package/packages/datadog-plugin-google-genai/src/index.js +1 -1
  124. package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
  125. package/packages/datadog-plugin-grpc/src/index.js +1 -1
  126. package/packages/datadog-plugin-http/src/client.js +2 -1
  127. package/packages/datadog-plugin-http/src/index.js +25 -5
  128. package/packages/datadog-plugin-http2/src/client.js +2 -2
  129. package/packages/datadog-plugin-http2/src/index.js +1 -1
  130. package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
  131. package/packages/datadog-plugin-langchain/src/index.js +1 -1
  132. package/packages/datadog-plugin-moleculer/src/index.js +1 -1
  133. package/packages/datadog-plugin-mongodb-core/src/index.js +6 -2
  134. package/packages/datadog-plugin-openai/src/index.js +1 -1
  135. package/packages/datadog-plugin-openai/src/stream-helpers.js +30 -10
  136. package/packages/datadog-plugin-openai/src/tracing.js +2 -2
  137. package/packages/datadog-plugin-rhea/src/index.js +1 -1
  138. package/packages/datadog-plugin-ws/src/close.js +56 -3
  139. package/packages/datadog-plugin-ws/src/index.js +4 -0
  140. package/packages/datadog-plugin-ws/src/producer.js +39 -4
  141. package/packages/datadog-plugin-ws/src/receiver.js +39 -3
  142. package/packages/datadog-plugin-ws/src/server.js +13 -1
  143. package/packages/datadog-plugin-ws/src/util.js +107 -0
  144. package/packages/datadog-shimmer/src/shimmer.js +2 -2
  145. package/packages/dd-trace/src/aiguard/sdk.js +3 -3
  146. package/packages/dd-trace/src/appsec/graphql.js +2 -2
  147. package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +1 -1
  148. package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +1 -1
  149. package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
  150. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +1 -1
  151. package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +1 -1
  152. package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +1 -1
  153. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +3 -3
  154. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +1 -1
  155. package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +1 -1
  156. package/packages/dd-trace/src/appsec/iast/analyzers/untrusted-deserialization-analyzer.js +1 -1
  157. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +1 -1
  158. package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
  159. package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +3 -2
  160. package/packages/dd-trace/src/appsec/iast/analyzers/weak-randomness-analyzer.js +1 -1
  161. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
  162. package/packages/dd-trace/src/appsec/iast/index.js +5 -5
  163. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
  164. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -2
  165. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +1 -1
  166. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
  167. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +10 -14
  168. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +1 -1
  169. package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +1 -1
  170. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -3
  171. package/packages/dd-trace/src/appsec/index.js +8 -8
  172. package/packages/dd-trace/src/appsec/rasp/command_injection.js +1 -1
  173. package/packages/dd-trace/src/appsec/rasp/index.js +1 -1
  174. package/packages/dd-trace/src/appsec/rasp/lfi.js +1 -1
  175. package/packages/dd-trace/src/appsec/rc-products.js +10 -0
  176. package/packages/dd-trace/src/appsec/recommended.json +230 -3
  177. package/packages/dd-trace/src/appsec/remote_config.js +177 -0
  178. package/packages/dd-trace/src/appsec/reporter.js +3 -3
  179. package/packages/dd-trace/src/appsec/rule_manager.js +37 -20
  180. package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
  181. package/packages/dd-trace/src/appsec/sdk/set_user.js +1 -1
  182. package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
  183. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
  184. package/packages/dd-trace/src/appsec/user_tracking.js +2 -2
  185. package/packages/dd-trace/src/appsec/waf/index.js +17 -3
  186. package/packages/dd-trace/src/appsec/waf/waf_manager.js +11 -0
  187. package/packages/dd-trace/src/azure_metadata.js +8 -2
  188. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +6 -0
  189. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
  190. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +1 -1
  191. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +1 -1
  192. package/packages/dd-trace/src/config/remote_config.js +34 -0
  193. package/packages/dd-trace/src/config.js +29 -28
  194. package/packages/dd-trace/src/config_defaults.js +2 -1
  195. package/packages/dd-trace/src/constants.js +5 -0
  196. package/packages/dd-trace/src/crashtracking/crashtracker.js +10 -1
  197. package/packages/dd-trace/src/datastreams/checkpointer.js +2 -2
  198. package/packages/dd-trace/src/datastreams/index.js +1 -1
  199. package/packages/dd-trace/src/datastreams/pathway.js +7 -7
  200. package/packages/dd-trace/src/datastreams/processor.js +2 -2
  201. package/packages/dd-trace/src/datastreams/writer.js +2 -2
  202. package/packages/dd-trace/src/debugger/config.js +1 -0
  203. package/packages/dd-trace/src/debugger/devtools_client/config.js +1 -1
  204. package/packages/dd-trace/src/debugger/devtools_client/index.js +7 -2
  205. package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -3
  206. package/packages/dd-trace/src/debugger/devtools_client/session.js +1 -1
  207. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +5 -5
  208. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +2 -2
  209. package/packages/dd-trace/src/debugger/devtools_client/state.js +1 -1
  210. package/packages/dd-trace/src/debugger/devtools_client/status.js +2 -2
  211. package/packages/dd-trace/src/debugger/index.js +1 -1
  212. package/packages/dd-trace/src/dogstatsd.js +3 -2
  213. package/packages/dd-trace/src/encode/0.4.js +1 -1
  214. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +2 -2
  215. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
  216. package/packages/dd-trace/src/encode/span-stats.js +6 -1
  217. package/packages/dd-trace/src/exporter.js +2 -2
  218. package/packages/dd-trace/src/exporters/agent/index.js +1 -1
  219. package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +1 -1
  220. package/packages/dd-trace/src/exporters/common/request.js +2 -2
  221. package/packages/dd-trace/src/exporters/common/writer.js +1 -1
  222. package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
  223. package/packages/dd-trace/src/external-logger/src/index.js +1 -2
  224. package/packages/dd-trace/src/flare/index.js +1 -1
  225. package/packages/dd-trace/src/guardrails/index.js +6 -3
  226. package/packages/dd-trace/src/id.js +1 -1
  227. package/packages/dd-trace/src/index.js +1 -1
  228. package/packages/dd-trace/src/lambda/handler.js +4 -4
  229. package/packages/dd-trace/src/lambda/index.js +1 -1
  230. package/packages/dd-trace/src/lambda/runtime/patch.js +4 -4
  231. package/packages/dd-trace/src/lambda/runtime/ritm.js +1 -1
  232. package/packages/dd-trace/src/llmobs/constants/tags.js +7 -1
  233. package/packages/dd-trace/src/llmobs/index.js +8 -9
  234. package/packages/dd-trace/src/llmobs/plugins/ai/index.js +38 -7
  235. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +30 -9
  236. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +3 -3
  237. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +2 -2
  238. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +1 -1
  239. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +1 -1
  240. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +1 -1
  241. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/llm.js +1 -1
  242. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
  243. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
  244. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +16 -1
  245. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +22 -10
  246. package/packages/dd-trace/src/llmobs/plugins/vertexai.js +1 -1
  247. package/packages/dd-trace/src/llmobs/sdk.js +15 -22
  248. package/packages/dd-trace/src/llmobs/span_processor.js +9 -13
  249. package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
  250. package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
  251. package/packages/dd-trace/src/llmobs/writers/spans.js +1 -2
  252. package/packages/dd-trace/src/log/index.js +1 -1
  253. package/packages/dd-trace/src/noop/proxy.js +2 -2
  254. package/packages/dd-trace/src/noop/span.js +1 -1
  255. package/packages/dd-trace/src/openfeature/index.js +2 -2
  256. package/packages/dd-trace/src/openfeature/noop.js +14 -14
  257. package/packages/dd-trace/src/openfeature/remote_config.js +31 -0
  258. package/packages/dd-trace/src/openfeature/writers/base.js +5 -5
  259. package/packages/dd-trace/src/openfeature/writers/exposures.js +9 -9
  260. package/packages/dd-trace/src/opentelemetry/context_manager.js +2 -2
  261. package/packages/dd-trace/src/opentelemetry/logs/logger.js +1 -1
  262. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +4 -4
  263. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +9 -8
  264. package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
  265. package/packages/dd-trace/src/opentelemetry/metrics/meter.js +2 -2
  266. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +4 -4
  267. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +36 -11
  268. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +11 -10
  269. package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +1 -1
  270. package/packages/dd-trace/src/opentelemetry/span.js +2 -2
  271. package/packages/dd-trace/src/opentelemetry/tracer.js +3 -3
  272. package/packages/dd-trace/src/opentracing/propagation/text_map.js +24 -8
  273. package/packages/dd-trace/src/opentracing/span.js +3 -3
  274. package/packages/dd-trace/src/opentracing/tracer.js +5 -5
  275. package/packages/dd-trace/src/payload-tagging/index.js +6 -2
  276. package/packages/dd-trace/src/plugin_manager.js +1 -1
  277. package/packages/dd-trace/src/plugins/apollo.js +1 -1
  278. package/packages/dd-trace/src/plugins/ci_plugin.js +27 -27
  279. package/packages/dd-trace/src/plugins/database.js +1 -1
  280. package/packages/dd-trace/src/plugins/index.js +5 -1
  281. package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
  282. package/packages/dd-trace/src/plugins/outbound.js +1 -1
  283. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  284. package/packages/dd-trace/src/plugins/util/ci.js +1 -1
  285. package/packages/dd-trace/src/plugins/util/git.js +8 -8
  286. package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
  287. package/packages/dd-trace/src/plugins/util/test.js +24 -24
  288. package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -1
  289. package/packages/dd-trace/src/plugins/util/web.js +8 -5
  290. package/packages/dd-trace/src/priority_sampler.js +15 -16
  291. package/packages/dd-trace/src/process-tags/index.js +31 -29
  292. package/packages/dd-trace/src/profiling/config.js +32 -21
  293. package/packages/dd-trace/src/profiling/exporter_cli.js +4 -4
  294. package/packages/dd-trace/src/profiling/exporters/agent.js +5 -5
  295. package/packages/dd-trace/src/profiling/index.js +1 -1
  296. package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
  297. package/packages/dd-trace/src/profiling/profiler.js +4 -5
  298. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
  299. package/packages/dd-trace/src/profiling/profilers/events.js +2 -2
  300. package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
  301. package/packages/dd-trace/src/proxy.js +12 -18
  302. package/packages/dd-trace/src/remote_config/index.js +541 -137
  303. package/packages/dd-trace/src/require-package-json.js +1 -1
  304. package/packages/dd-trace/src/ritm.js +50 -27
  305. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +1 -1
  306. package/packages/dd-trace/src/serverless.js +16 -0
  307. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +8 -0
  308. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +8 -0
  309. package/packages/dd-trace/src/span_format.js +1 -1
  310. package/packages/dd-trace/src/span_processor.js +2 -2
  311. package/packages/dd-trace/src/span_stats.js +6 -4
  312. package/packages/dd-trace/src/standalone/index.js +1 -1
  313. package/packages/dd-trace/src/startup-log.js +3 -3
  314. package/packages/dd-trace/src/supported-configurations.json +3 -0
  315. package/packages/dd-trace/src/telemetry/dependencies.js +3 -3
  316. package/packages/dd-trace/src/telemetry/endpoints.js +8 -8
  317. package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
  318. package/packages/dd-trace/src/telemetry/telemetry.js +11 -6
  319. package/packages/dd-trace/src/tracer.js +3 -3
  320. package/packages/dd-trace/src/tracer_metadata.js +19 -15
  321. package/packages/dd-trace/src/remote_config/manager.js +0 -368
@@ -1,9 +1,9 @@
1
1
  'use strict'
2
2
  const { logs } = require('@opentelemetry/api-logs')
3
3
  const { context } = require('@opentelemetry/api')
4
- const Logger = require('./logger')
5
4
  const log = require('../../log')
6
5
  const ContextManager = require('../context_manager')
6
+ const Logger = require('./logger')
7
7
 
8
8
  /**
9
9
  * @typedef {import('@opentelemetry/api-logs').Logger} Logger
@@ -26,7 +26,7 @@ class LoggerProvider {
26
26
  /**
27
27
  * Creates a new LoggerProvider instance with a single processor for Datadog Agent export.
28
28
  *
29
- * @param {Object} [options] - LoggerProvider options
29
+ * @param {object} [options] - LoggerProvider options
30
30
  * @param {BatchLogRecordProcessor} [options.processor] - Single LogRecordProcessor instance for
31
31
  * exporting logs to Datadog Agent
32
32
  */
@@ -40,9 +40,9 @@ class LoggerProvider {
40
40
  /**
41
41
  * Gets or creates a logger instance.
42
42
  *
43
- * @param {string|Object} nameOrOptions - Logger name or options object
43
+ * @param {string | object} nameOrOptions - Logger name or options object
44
44
  * @param {string} [version] - Logger version (when nameOrOptions is a string)
45
- * @param {Object} [options] - Additional options (when nameOrOptions is a string)
45
+ * @param {object} [options] - Additional options (when nameOrOptions is a string)
46
46
  * @returns {Logger} Logger instance
47
47
  */
48
48
  getLogger (nameOrOptions, version, options = {}) {
@@ -1,10 +1,11 @@
1
1
  'use strict'
2
2
 
3
- const OtlpTransformerBase = require('../otlp/otlp_transformer_base')
4
3
  const { SeverityNumber } = require('@opentelemetry/api-logs')
5
- const { getProtobufTypes } = require('../otlp/protobuf_loader')
6
4
  const { trace } = require('@opentelemetry/api')
7
5
 
6
+ const OtlpTransformerBase = require('../otlp/otlp_transformer_base')
7
+ const { getProtobufTypes } = require('../otlp/protobuf_loader')
8
+
8
9
  /**
9
10
  * @typedef {import('@opentelemetry/api-logs').LogRecord} LogRecord
10
11
  */
@@ -105,7 +106,7 @@ class OtlpTransformer extends OtlpTransformerBase {
105
106
  /**
106
107
  * Creates scope logs grouped by instrumentation library.
107
108
  * @param {LogRecord[]} logRecords - Array of log records to transform
108
- * @returns {Object[]} Array of scope log objects
109
+ * @returns {object[]} Array of scope log objects
109
110
  */
110
111
  #transformScope (logRecords) {
111
112
  const groupedRecords = this.groupByInstrumentationScope(logRecords)
@@ -131,7 +132,7 @@ class OtlpTransformer extends OtlpTransformerBase {
131
132
  /**
132
133
  * Transforms a single log record to OTLP format.
133
134
  * @param {LogRecord} logRecord - Log record to transform
134
- * @returns {Object} OTLP log record object
135
+ * @returns {object} OTLP log record object
135
136
  */
136
137
  #transformLogRecord (logRecord) {
137
138
  const spanContext = this.#extractSpanContext(logRecord.context)
@@ -176,8 +177,8 @@ class OtlpTransformer extends OtlpTransformerBase {
176
177
 
177
178
  /**
178
179
  * Extracts span context from the log record's context.
179
- * @param {Object} logContext - The log record's context
180
- * @returns {Object|null} Span context or null if not available
180
+ * @param {object} logContext - The log record's context
181
+ * @returns {object | null} Span context or null if not available
181
182
  */
182
183
  #extractSpanContext (logContext) {
183
184
  if (!logContext) return null
@@ -214,8 +215,8 @@ class OtlpTransformer extends OtlpTransformerBase {
214
215
 
215
216
  /**
216
217
  * Transforms log body to OTLP AnyValue format.
217
- * @param {any} body - Log body to transform
218
- * @returns {Object} OTLP AnyValue object
218
+ * @param {import('@opentelemetry/api-logs').LogBody} body - Log body to transform
219
+ * @returns {object} OTLP AnyValue object
219
220
  */
220
221
  #transformBody (body) {
221
222
  if (typeof body === 'string') {
@@ -9,7 +9,7 @@ const { METRIC_TYPES } = require('./constants')
9
9
  */
10
10
 
11
11
  /**
12
- * @typedef {Object} Measurement
12
+ * @typedef {object} Measurement
13
13
  * @property {string} name - Instrument name
14
14
  * @property {string} description - Instrument description
15
15
  * @property {string} unit - Measurement unit
@@ -30,11 +30,11 @@ class Instrument {
30
30
  * Creates a new instrument instance.
31
31
  *
32
32
  * @param {string} name - Instrument name (e.g., 'http.request.duration')
33
- * @param {Object} options - Instrument configuration options
33
+ * @param {object} options - Instrument configuration options
34
34
  * @param {string} [options.description] - Human-readable description of the instrument
35
35
  * @param {string} [options.unit] - Unit of measurement (e.g., 'ms', 'bytes', '1')
36
36
  * @param {InstrumentationScope} instrumentationScope - Instrumentation scope for this instrument
37
- * @param {Object} reader - Metric reader for recording measurements
37
+ * @param {object} reader - Metric reader for recording measurements
38
38
  */
39
39
  constructor (name, options, instrumentationScope, reader) {
40
40
  this.name = name
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
3
  const { VERSION: packageVersion } = require('../../../../../version')
4
+ const log = require('../../log')
4
5
  const {
5
6
  Counter, UpDownCounter, Histogram, Gauge, ObservableGauge, ObservableCounter, ObservableUpDownCounter
6
7
  } = require('./instruments')
7
- const log = require('../../log')
8
8
  const { METRIC_TYPES } = require('./constants')
9
9
 
10
10
  /**
@@ -31,7 +31,7 @@ class Meter {
31
31
  * @param {string} [instrumentationScope.name] - Meter name (defaults to 'dd-trace-js')
32
32
  * @param {string} [instrumentationScope.version] - Meter version (defaults to tracer version)
33
33
  * @param {string} [instrumentationScope.schemaUrl] - Schema URL
34
- * @param {Object} [instrumentationScope.attributes] - Attributes for the instrumentation scope
34
+ * @param {object} [instrumentationScope.attributes] - Attributes for the instrumentation scope
35
35
  */
36
36
  constructor (
37
37
  meterProvider,
@@ -85,7 +85,7 @@ class OtlpTransformer extends OtlpTransformerBase {
85
85
  * Creates scope metrics grouped by instrumentation scope.
86
86
  * @param {Iterable<AggregatedMetric>} metrics - Iterable of metrics to transform
87
87
  * @param {boolean} isJson - Whether to format for JSON output
88
- * @returns {Array<Object>} Array of scope metric objects
88
+ * @returns {Array<object>} Array of scope metric objects
89
89
  *
90
90
  */
91
91
  #transformScope (metrics, isJson = false) {
@@ -125,7 +125,7 @@ class OtlpTransformer extends OtlpTransformerBase {
125
125
  *
126
126
  * @param {AggregatedMetric} metric - The metric to transform
127
127
  * @param {boolean} isJson - Whether to output JSON format (vs protobuf)
128
- * @returns {Object} - The metric transformed to OTLP protobuf or JSON format
128
+ * @returns {object} - The metric transformed to OTLP protobuf or JSON format
129
129
  */
130
130
  #transformMetric (metric, isJson = false) {
131
131
  const result = {
@@ -176,7 +176,7 @@ class OtlpTransformer extends OtlpTransformerBase {
176
176
  *
177
177
  * @param {HistogramDataPoint} dp - The histogram data point to transform
178
178
  * @param {boolean} isJson - Whether to output JSON format (vs protobuf)
179
- * @returns {Object} The histogram data point transformed to OTLP protobuf format
179
+ * @returns {object} The histogram data point transformed to OTLP protobuf format
180
180
  */
181
181
  #transformHistogramDataPoint (dp, isJson) {
182
182
  const attributes = isJson
@@ -209,7 +209,7 @@ class OtlpTransformer extends OtlpTransformerBase {
209
209
  *
210
210
  * @param {NumberDataPoint} dataPoint - The number data point to transform
211
211
  * @param {boolean} isJson - Whether to output JSON format (vs protobuf)
212
- * @returns {Object} The number data point transformed to OTLP protobuf format
212
+ * @returns {object} The number data point transformed to OTLP protobuf format
213
213
  */
214
214
  #transformNumberDataPoint (dataPoint, isJson) {
215
215
  const attributes = isJson
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const log = require('../../log')
4
+ const { stableStringify } = require('../otlp/otlp_transformer_base')
3
5
  const {
4
6
  METRIC_TYPES, TEMPORALITY, DEFAULT_HISTOGRAM_BUCKETS, DEFAULT_MAX_MEASUREMENT_QUEUE_SIZE
5
7
  } = require('./constants')
6
- const log = require('../../log')
7
- const { stableStringify } = require('../otlp/otlp_transformer_base')
8
8
 
9
9
  /**
10
10
  * @typedef {import('@opentelemetry/api').Attributes} Attributes
@@ -13,7 +13,32 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
13
13
  */
14
14
 
15
15
  /**
16
- * @typedef {Object} NumberDataPoint
16
+ * @typedef {{ value: number, startTime: number }} SumCumulativeState
17
+ *
18
+ * @typedef {{
19
+ * count: number,
20
+ * sum: number,
21
+ * min: number,
22
+ * max: number,
23
+ * bucketCounts: number[],
24
+ * startTime: number
25
+ * }} HistogramCumulativeState
26
+ *
27
+ * @typedef {SumCumulativeState | HistogramCumulativeState} CumulativeStateValue
28
+ *
29
+ * @typedef {{
30
+ * count: number,
31
+ * sum: number,
32
+ * min?: number,
33
+ * max?: number,
34
+ * bucketCounts: number[]
35
+ * }} HistogramLastExportedState
36
+ *
37
+ * @typedef {number | HistogramLastExportedState} LastExportedStateValue
38
+ */
39
+
40
+ /**
41
+ * @typedef {object} NumberDataPoint
17
42
  * @property {Attributes} attributes - Number data point metric attributes
18
43
  * @property {string} attrKey - Stable stringified key for attributes
19
44
  * @property {number} timeUnixNano - Timestamp in nanoseconds
@@ -22,7 +47,7 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
22
47
  */
23
48
 
24
49
  /**
25
- * @typedef {Object} HistogramDataPoint
50
+ * @typedef {object} HistogramDataPoint
26
51
  * @property {Attributes} attributes - Histogram data point metric attributes
27
52
  * @property {string} attrKey - Stable stringified key for attributes
28
53
  * @property {number} timeUnixNano - Timestamp in nanoseconds
@@ -36,7 +61,7 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
36
61
  */
37
62
 
38
63
  /**
39
- * @typedef {Object} AggregatedMetricDataPoint
64
+ * @typedef {object} AggregatedMetricDataPoint
40
65
  * @property {Attributes} attributes - Aggregated metric data point metric attributes
41
66
  * @property {string} attrKey - Stable stringified key for attributes
42
67
  * @property {number} timeUnixNano - Timestamp in nanoseconds
@@ -50,7 +75,7 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
50
75
  */
51
76
 
52
77
  /**
53
- * @typedef {Object} AggregatedMetric
78
+ * @typedef {object} AggregatedMetric
54
79
  * @property {string} name - Metric name
55
80
  * @property {string} description - Metric description
56
81
  * @property {string} unit - Metric unit
@@ -255,8 +280,8 @@ class MetricAggregator {
255
280
  * Aggregates measurements into metrics.
256
281
  *
257
282
  * @param {Measurement[]} measurements - The measurements to aggregate
258
- * @param {Map<string, any>} cumulativeState - The cumulative state of the metrics
259
- * @param {Map<string, any>} lastExportedState - The last exported state of the metrics
283
+ * @param {Map<string, CumulativeStateValue>} cumulativeState - The cumulative state of the metrics
284
+ * @param {Map<string, LastExportedStateValue>} lastExportedState - The last exported state of the metrics
260
285
  * @returns {Iterable<AggregatedMetric>} The aggregated metrics
261
286
  */
262
287
  aggregate (measurements, cumulativeState, lastExportedState) {
@@ -353,7 +378,7 @@ class MetricAggregator {
353
378
  * Applies delta temporality to the metrics.
354
379
  *
355
380
  * @param {Iterable<AggregatedMetric>} metrics - The metrics to apply delta temporality to
356
- * @param {Map<string, any>} lastExportedState - The last exported state of the metrics
381
+ * @param {Map<string, LastExportedStateValue>} lastExportedState - The last exported state of the metrics
357
382
  * @returns {void}
358
383
  */
359
384
  #applyDeltaTemporality (metrics, lastExportedState) {
@@ -424,7 +449,7 @@ class MetricAggregator {
424
449
  * @param {string} attrKey - The attribute key
425
450
  * @param {number} timestamp - The timestamp of the measurement
426
451
  * @param {string} stateKey - The state key
427
- * @param {Map<string, any>} cumulativeState - The cumulative state of the metrics
452
+ * @param {Map<string, CumulativeStateValue>} cumulativeState - The cumulative state of the metrics
428
453
  */
429
454
  #aggregateSum (metric, value, attributes, attrKey, timestamp, stateKey, cumulativeState) {
430
455
  if (!cumulativeState.has(stateKey)) {
@@ -478,7 +503,7 @@ class MetricAggregator {
478
503
  * @param {string} attrKey - The attribute key
479
504
  * @param {number} timestamp - The timestamp of the measurement
480
505
  * @param {string} stateKey - The state key
481
- * @param {Map<string, any>} cumulativeState - The cumulative state of the metrics
506
+ * @param {Map<string, CumulativeStateValue>} cumulativeState - The cumulative state of the metrics
482
507
  * @returns {void}
483
508
  */
484
509
  #aggregateHistogram (metric, value, attributes, attrKey, timestamp, stateKey, cumulativeState) {
@@ -4,6 +4,7 @@ const log = require('../../log')
4
4
 
5
5
  /**
6
6
  * @typedef {import('@opentelemetry/api').Attributes} Attributes
7
+ * @typedef {import('@opentelemetry/api').AttributeValue} AttributeValue
7
8
  */
8
9
 
9
10
  /**
@@ -61,7 +62,7 @@ class OtlpTransformerBase {
61
62
 
62
63
  /**
63
64
  * Transforms resource attributes to OTLP resource format.
64
- * @returns {Object} OTLP resource object
65
+ * @returns {object} OTLP resource object
65
66
  * @protected
66
67
  */
67
68
  transformResource () {
@@ -73,8 +74,8 @@ class OtlpTransformerBase {
73
74
 
74
75
  /**
75
76
  * Transforms attributes to OTLP KeyValue format.
76
- * @param {Object} attributes - Attributes to transform
77
- * @returns {Object[]} Array of OTLP KeyValue objects
77
+ * @param {Attributes} attributes - Attributes to transform
78
+ * @returns {object[]} Array of OTLP KeyValue objects
78
79
  * @protected
79
80
  */
80
81
  transformAttributes (attributes) {
@@ -86,8 +87,8 @@ class OtlpTransformerBase {
86
87
 
87
88
  /**
88
89
  * Transforms attributes to JSON format (simplified).
89
- * @param {Object} attributes - Attributes to transform
90
- * @returns {Object[]} Array of OTLP KeyValue objects with string values
90
+ * @param {object} attributes - Attributes to transform
91
+ * @returns {object[]} Array of OTLP KeyValue objects with string values
91
92
  * @protected
92
93
  */
93
94
  attributesToJson (attributes) {
@@ -103,8 +104,8 @@ class OtlpTransformerBase {
103
104
  * Transforms any value to OTLP AnyValue format.
104
105
  * Supports: strings, numbers (int/double), booleans, arrays.
105
106
  * Objects are filtered out by sanitizeAttributes before reaching this method.
106
- * @param {any} value - Value to transform
107
- * @returns {Object} OTLP AnyValue object
107
+ * @param {AttributeValue | null | undefined} value - Value to transform
108
+ * @returns {object} OTLP AnyValue object
108
109
  * @protected
109
110
  */
110
111
  transformAnyValue (value) {
@@ -130,8 +131,8 @@ class OtlpTransformerBase {
130
131
 
131
132
  /**
132
133
  * Serializes data to protobuf format.
133
- * @param {Object} protoType - Protobuf type from protobuf_loader
134
- * @param {Object} data - Data to serialize
134
+ * @param {object} protoType - Protobuf type from protobuf_loader
135
+ * @param {object} data - Data to serialize
135
136
  * @returns {Buffer} Protobuf-encoded data
136
137
  * @protected
137
138
  */
@@ -143,7 +144,7 @@ class OtlpTransformerBase {
143
144
 
144
145
  /**
145
146
  * Serializes data to JSON format.
146
- * @param {Object} data - Data to serialize
147
+ * @param {object} data - Data to serialize
147
148
  * @returns {Buffer} JSON-encoded data
148
149
  * @protected
149
150
  */
@@ -14,8 +14,8 @@
14
14
  * - https://github.com/open-telemetry/opentelemetry-proto (v1.7.0)
15
15
  */
16
16
 
17
- const protobuf = require('../../../../../vendor/dist/protobufjs')
18
17
  const path = require('path')
18
+ const protobuf = require('../../../../../vendor/dist/protobufjs')
19
19
 
20
20
  let _root = null
21
21
  let protoLogsService = null
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
+ const { performance } = require('perf_hooks')
3
4
  const api = require('@opentelemetry/api')
4
5
 
5
- const { performance } = require('perf_hooks')
6
6
  const { timeOrigin } = performance
7
7
 
8
8
  const { timeInputToHrTime } = require('../../../../vendor/dist/@opentelemetry/core')
@@ -13,8 +13,8 @@ const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK, IGNORE_OTEL_ERROR } = require('.
13
13
  const { SERVICE_NAME, RESOURCE_NAME, SPAN_KIND } = require('../../../../ext/tags')
14
14
  const kinds = require('../../../../ext/kinds')
15
15
 
16
- const SpanContext = require('./span_context')
17
16
  const id = require('../id')
17
+ const SpanContext = require('./span_context')
18
18
 
19
19
  // The one built into OTel rounds so we lose sub-millisecond precision.
20
20
  function hrTimeToMilliseconds (time) {
@@ -3,13 +3,13 @@
3
3
  const api = require('@opentelemetry/api')
4
4
  const { sanitizeAttributes } = require('../../../../vendor/dist/@opentelemetry/core')
5
5
 
6
- const Sampler = require('./sampler')
7
- const Span = require('./span')
8
6
  const id = require('../id')
9
7
  const log = require('../log')
10
- const SpanContext = require('./span_context')
11
8
  const TextMapPropagator = require('../opentracing/propagation/text_map')
12
9
  const TraceState = require('../opentracing/propagation/tracestate')
10
+ const SpanContext = require('./span_context')
11
+ const Span = require('./span')
12
+ const Sampler = require('./sampler')
13
13
 
14
14
  class Tracer {
15
15
  constructor (library, config, tracerProvider) {
@@ -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
 
@@ -36,6 +36,9 @@ const b3HeaderExpr = /^(([0-9a-f]{16}){1,2}-[0-9a-f]{16}(-[01d](-[0-9a-f]{16})?)
36
36
  const baggageExpr = new RegExp(`^${baggagePrefix}(.+)$`)
37
37
  const tagKeyExpr = /^_dd\.p\.[\x21-\x2B\x2D-\x7E]+$/ // ASCII minus spaces and commas
38
38
  const tagValueExpr = /^[\x20-\x2B\x2D-\x7E]*$/ // ASCII minus commas
39
+ // RFC7230 token (used by HTTP header field-name) and compatible with Node's header name validation.
40
+ // See https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6
41
+ const httpHeaderNameExpr = /^[0-9A-Za-z!#$%&'*+\-.^_`|~]+$/
39
42
  const traceparentExpr = /^([a-f0-9]{2})-([a-f0-9]{32})-([a-f0-9]{16})-([a-f0-9]{2})(-.*)?$/i
40
43
  const traceparentKey = 'traceparent'
41
44
  const tracestateKey = 'tracestate'
@@ -130,9 +133,21 @@ class TextMapPropagator {
130
133
 
131
134
  _injectBaggageItems (spanContext, carrier) {
132
135
  if (this._config.legacyBaggageEnabled) {
133
- spanContext?._baggageItems && Object.keys(spanContext._baggageItems).forEach(key => {
134
- carrier[baggagePrefix + key] = String(spanContext._baggageItems[key])
135
- })
136
+ const baggageItems = spanContext?._baggageItems
137
+ if (baggageItems) {
138
+ for (const key of Object.keys(baggageItems)) {
139
+ const headerName = baggagePrefix + key
140
+
141
+ // Legacy OpenTracing baggage is propagated as individual headers (ot-baggage-*),
142
+ // so it must always be representable as a valid HTTP header name.
143
+ if (!httpHeaderNameExpr.test(headerName)) {
144
+ tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
145
+ continue
146
+ }
147
+
148
+ carrier[headerName] = String(baggageItems[key])
149
+ }
150
+ }
136
151
  }
137
152
  if (this._hasPropagationStyle('inject', 'baggage')) {
138
153
  let baggage = ''
@@ -646,9 +661,10 @@ class TextMapPropagator {
646
661
 
647
662
  _extractBaggageItems (carrier, spanContext) {
648
663
  if (!this._hasPropagationStyle('extract', 'baggage')) return
649
- if (!carrier || !carrier.baggage) return
664
+ if (!carrier?.baggage) return
650
665
  const baggages = carrier.baggage.split(',')
651
- const keysToSpanTag = this._config.baggageTagKeys === '*'
666
+ const tagAllKeys = this._config.baggageTagKeys === '*'
667
+ const keysToSpanTag = tagAllKeys
652
668
  ? undefined
653
669
  : new Set(this._config.baggageTagKeys.split(','))
654
670
  for (const keyValue of baggages) {
@@ -665,7 +681,7 @@ class TextMapPropagator {
665
681
  removeAllBaggageItems()
666
682
  return
667
683
  }
668
- if (spanContext && (this._config.baggageTagKeys === '*' || keysToSpanTag.has(key))) {
684
+ if (spanContext && (tagAllKeys || keysToSpanTag?.has(key))) {
669
685
  spanContext._trace.tags['baggage.' + key] = value
670
686
  }
671
687
  setBaggageItem(key, value)
@@ -4,16 +4,16 @@
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
15
  const { getEnvironmentVariable } = require('../config-helper')
16
+ const SpanContext = require('./span_context')
17
17
 
18
18
  const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
19
19
 
@@ -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,10 @@
1
1
  'use strict'
2
2
 
3
3
  const { channel } = require('dc-polyfill')
4
+ const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
4
5
  const { isFalse, isTrue, normalizePluginEnvName } = require('./util')
5
6
  const plugins = require('./plugins')
6
7
  const log = require('./log')
7
- const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
8
8
 
9
9
  // Test optimization plugins that should only be enabled when isCiVisibility is true
10
10
  const TEST_OPTIMIZATION_PLUGINS = new Set([
@@ -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'