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
@@ -2,9 +2,9 @@
2
2
 
3
3
  const { errorMonitor } = require('node:events')
4
4
 
5
- const { channel, addHook } = require('./helpers/instrument')
6
5
  const shimmer = require('../../datadog-shimmer')
7
6
  const satisfies = require('../../../vendor/dist/semifies')
7
+ const { channel, addHook } = require('./helpers/instrument')
8
8
 
9
9
  function wrapConnection (Connection, version) {
10
10
  const startCh = channel('apm:mysql2:query:start')
@@ -141,11 +141,11 @@ function wrapConnection (Connection, version) {
141
141
  finishCh.runStores(ctx, onResult, this, ...arguments)
142
142
  })
143
143
  } else {
144
- this.on(errorMonitor, error => {
144
+ this.once(errorMonitor, error => {
145
145
  ctx.error = error
146
146
  errorCh.publish(ctx)
147
147
  })
148
- this.on('end', () => finishCh.publish(ctx))
148
+ this.once('end', () => finishCh.publish(ctx))
149
149
  }
150
150
 
151
151
  this.execute = execute
@@ -2,8 +2,8 @@
2
2
 
3
3
  const { errorMonitor } = require('events')
4
4
 
5
- const { channel, addHook } = require('./helpers/instrument')
6
5
  const shimmer = require('../../datadog-shimmer')
6
+ const { channel, addHook } = require('./helpers/instrument')
7
7
 
8
8
  const startICPCh = channel('apm:net:ipc:start')
9
9
  const finishICPCh = channel('apm:net:ipc:finish')
@@ -101,7 +101,7 @@ function getOptions (args) {
101
101
  }
102
102
 
103
103
  function setupListeners (socket, protocol, ctx, finishCh, errorCh) {
104
- const events = ['connect', errorMonitor, 'close', 'timeout']
104
+ const events = [errorMonitor, 'close', 'timeout']
105
105
 
106
106
  const wrapListener = function (error) {
107
107
  if (error) {
@@ -109,27 +109,35 @@ function setupListeners (socket, protocol, ctx, finishCh, errorCh) {
109
109
  errorCh.publish(ctx)
110
110
  }
111
111
  finishCh.runStores(ctx, () => {})
112
+ cleanupOtherListeners()
112
113
  }
113
114
 
114
- const localListener = function () {
115
+ const localListener = function (error) {
115
116
  ctx.socket = socket
116
117
  connectionCh.publish(ctx)
118
+ if (error) {
119
+ ctx.error = error
120
+ errorCh.publish(ctx)
121
+ }
122
+ finishCh.runStores(ctx, () => {})
123
+ cleanupOtherListeners()
117
124
  }
118
125
 
119
- const cleanupListener = function () {
126
+ const cleanupOtherListeners = function () {
120
127
  socket.removeListener('connect', localListener)
121
128
  events.forEach(event => {
122
129
  socket.removeListener(event, wrapListener)
123
- socket.removeListener(event, cleanupListener)
124
130
  })
125
131
  }
126
132
 
133
+ // TODO: Identify why the connect listener should remove the other listeners.
127
134
  if (protocol === 'tcp') {
128
135
  socket.once('connect', localListener)
136
+ } else {
137
+ events.push('connect')
129
138
  }
130
139
 
131
140
  events.forEach(event => {
132
141
  socket.once(event, wrapListener)
133
- socket.once(event, cleanupListener)
134
142
  })
135
143
  }
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const { channel, addHook } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
4
+ const { channel, addHook } = require('./helpers/instrument')
5
5
 
6
6
  const startChannel = channel('apm:next:request:start')
7
7
  const finishChannel = channel('apm:next:request:finish')
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
- const { addHook, channel } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
5
- const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
4
+ const { getEnvironmentVariable } = require('../../dd-trace/src/config/helper')
5
+ const { addHook, channel } = require('./helpers/instrument')
6
6
 
7
7
  const codeCoverageWrapCh = channel('ci:nyc:wrap')
8
8
 
@@ -1,9 +1,9 @@
1
1
  'use strict'
2
2
 
3
- const { addHook } = require('./helpers/instrument')
3
+ const dc = require('dc-polyfill')
4
4
  const shimmer = require('../../datadog-shimmer')
5
+ const { addHook } = require('./helpers/instrument')
5
6
 
6
- const dc = require('dc-polyfill')
7
7
  const ch = dc.tracingChannel('apm:openai:request')
8
8
  const onStreamedChunkCh = dc.channel('apm:openai:request:chunk')
9
9
 
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const { addHook } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
4
+ const { addHook } = require('./helpers/instrument')
5
5
  const { createWrapRequest, createWrapGetConnection } = require('./elasticsearch')
6
6
 
7
7
  addHook({ name: '@opensearch-project/opensearch', file: 'lib/Transport.js', versions: ['>=1'] }, Transport => {
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
8
 
9
9
  const connectionAttributes = new WeakMap()
10
10
  const poolAttributes = new WeakMap()
@@ -1,13 +1,13 @@
1
1
  'use strict'
2
2
 
3
- const { addHook } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
5
4
  const tracer = require('../../dd-trace')
6
- const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
5
+ const { getValueFromEnvSources } = require('../../dd-trace/src/config/helper')
6
+ const { addHook } = require('./helpers/instrument')
7
7
 
8
- const otelSdkEnabled = getEnvironmentVariable('DD_TRACE_OTEL_ENABLED') ||
9
- getEnvironmentVariable('OTEL_SDK_DISABLED')
10
- ? !getEnvironmentVariable('OTEL_SDK_DISABLED')
8
+ const otelSdkEnabled = getValueFromEnvSources('DD_TRACE_OTEL_ENABLED') ||
9
+ getValueFromEnvSources('OTEL_SDK_DISABLED')
10
+ ? !getValueFromEnvSources('OTEL_SDK_DISABLED')
11
11
  : undefined
12
12
 
13
13
  if (otelSdkEnabled) {
@@ -1,10 +1,12 @@
1
1
  'use strict'
2
2
 
3
+ const { errorMonitor } = require('node:events')
4
+
5
+ const shimmer = require('../../datadog-shimmer')
3
6
  const {
4
7
  channel,
5
8
  addHook
6
9
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
10
 
9
11
  const startCh = channel('apm:pg:query:start')
10
12
  const finishCh = channel('apm:pg:query:finish')
@@ -13,8 +15,6 @@ const errorCh = channel('apm:pg:query:error')
13
15
  const startPoolQueryCh = channel('datadog:pg:pool:query:start')
14
16
  const finishPoolQueryCh = channel('datadog:pg:pool:query:finish')
15
17
 
16
- const { errorMonitor } = require('node:events')
17
-
18
18
  addHook({ name: 'pg', versions: ['>=8.0.3'], file: 'lib/native/client.js' }, Client => {
19
19
  shimmer.wrap(Client.prototype, 'query', query => wrapQuery(query))
20
20
  return Client
@@ -112,8 +112,10 @@ function wrapQuery (query) {
112
112
  arguments[0] = pgQuery
113
113
 
114
114
  const retval = query.apply(this, arguments)
115
- const queryQueue = this.queryQueue || this._queryQueue
116
- const activeQuery = this.activeQuery || this._activeQuery
115
+
116
+ const deperecated = Object.hasOwn(this, '_activeQuery')
117
+ const queryQueue = deperecated ? this._queryQueue : this.queryQueue
118
+ const activeQuery = deperecated ? this._activeQuery : this.activeQuery
117
119
 
118
120
  const newQuery = queryQueue.at(-1) || activeQuery
119
121
 
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
8
 
9
9
  function wrapPino (symbol, wrapper, pino) {
10
10
  return function pinoWithTrace () {
@@ -2,7 +2,6 @@
2
2
 
3
3
  const satisfies = require('../../../vendor/dist/semifies')
4
4
 
5
- const { addHook, channel } = require('./helpers/instrument')
6
5
  const shimmer = require('../../datadog-shimmer')
7
6
  const {
8
7
  parseAnnotations,
@@ -12,9 +11,10 @@ const {
12
11
  } = require('../../dd-trace/src/plugins/util/test')
13
12
  const log = require('../../dd-trace/src/log')
14
13
  const {
15
- getEnvironmentVariable
16
- } = require('../../dd-trace/src/config-helper')
14
+ getValueFromEnvSources
15
+ } = require('../../dd-trace/src/config/helper')
17
16
  const { DD_MAJOR } = require('../../../version')
17
+ const { addHook, channel } = require('./helpers/instrument')
18
18
 
19
19
  const testStartCh = channel('ci:playwright:test:start')
20
20
  const testFinishCh = channel('ci:playwright:test:finish')
@@ -41,7 +41,7 @@ const testSuiteToTestStatuses = new Map()
41
41
  const testSuiteToErrors = new Map()
42
42
  const testsToTestStatuses = new Map()
43
43
 
44
- const RUM_FLUSH_WAIT_TIME = Number(getEnvironmentVariable('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 1000
44
+ const RUM_FLUSH_WAIT_TIME = Number(getValueFromEnvSources('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 1000
45
45
 
46
46
  let applyRepeatEachIndex = null
47
47
 
@@ -1,12 +1,9 @@
1
1
  'use strict'
2
2
 
3
- const {
4
- channel,
5
- addHook
6
- } = require('./helpers/instrument')
3
+ const tracingChannel = require('dc-polyfill').tracingChannel
7
4
 
5
+ const { channel, addHook } = require('./helpers/instrument')
8
6
  const prismaEngineStart = channel('apm:prisma:engine:start')
9
- const tracingChannel = require('dc-polyfill').tracingChannel
10
7
  const clientCH = tracingChannel('apm:prisma:client')
11
8
 
12
9
  const allowedClientSpanOperations = new Set([
@@ -15,14 +12,20 @@ const allowedClientSpanOperations = new Set([
15
12
  'transaction'
16
13
  ])
17
14
 
18
- class TracingHelper {
15
+ class DatadogTracingHelper {
19
16
  dbConfig = null
17
+
18
+ constructor (dbConfig = null) {
19
+ this.dbConfig = dbConfig
20
+ }
21
+
20
22
  isEnabled () {
21
23
  return true
22
24
  }
23
25
 
24
26
  // needs a sampled tracecontext to generate engine spans
25
27
  getTraceParent (context) {
28
+ // TODO: Fix the id
26
29
  return '00-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbbbbbbbbbb-01' // valid sampled traceparent
27
30
  }
28
31
 
@@ -34,7 +37,9 @@ class TracingHelper {
34
37
  }
35
38
  }
36
39
 
37
- getActiveContext () {}
40
+ getActiveContext () {
41
+ // TODO: Fix context
42
+ }
38
43
 
39
44
  runInChildSpan (options, callback) {
40
45
  if (typeof options === 'string') {
@@ -63,42 +68,52 @@ class TracingHelper {
63
68
  }
64
69
  }
65
70
 
66
- addHook({ name: '@prisma/client', versions: ['>=6.1.0'] }, (prisma, version) => {
67
- const tracingHelper = new TracingHelper()
68
-
69
- // we need to patch the prototype to get db config since this works for ESM and CJS alike.
70
- const originalRequest = prisma.PrismaClient.prototype._request
71
- prisma.PrismaClient.prototype._request = function () {
72
- if (!tracingHelper.dbConfig) {
73
- const inlineDatasources = this._engine?.config.inlineDatasources
74
- const overrideDatasources = this._engine?.config.overrideDatasources
75
- const datasources = inlineDatasources?.db.url?.value ?? overrideDatasources?.db?.url
76
- if (datasources) {
77
- const result = parseDBString(datasources)
78
- tracingHelper.setDbString(result)
71
+ const prismaHook = (runtime, versions, name, isIitm) => {
72
+ const originalGetPrismaClient = runtime.getPrismaClient
73
+
74
+ if (!originalGetPrismaClient) return runtime
75
+ const datadogTracingHelper = new DatadogTracingHelper()
76
+
77
+ const wrappedGetPrismaClient = function (config) {
78
+ const datasources = config.inlineDatasources?.db.url?.value
79
+ if (datasources) {
80
+ const dbConfig = parseDBString(datasources)
81
+ datadogTracingHelper.setDbString(dbConfig)
82
+ }
83
+
84
+ const PrismaClient = originalGetPrismaClient.call(this, config)
85
+ return class WrappedPrismaClientClass extends PrismaClient {
86
+ constructor (clientConfig) {
87
+ super(clientConfig)
88
+ this._tracingHelper = datadogTracingHelper
89
+ this._engine.tracingHelper = datadogTracingHelper
79
90
  }
80
91
  }
81
- return originalRequest.apply(this, arguments)
82
92
  }
83
93
 
84
- /*
85
- * This is taking advantage of the built in tracing support from Prisma.
86
- * The below variable is setting a global tracing helper that Prisma uses
87
- * to enable OpenTelemetry.
88
- */
89
- // https://github.com/prisma/prisma/blob/478293bbfce91e41ceff02f2a0b03bb8acbca03e/packages/instrumentation/src/PrismaInstrumentation.ts#L42
90
- const versions = version.split('.')
91
- if (versions[0] === '6' && versions[1] < 4) {
92
- global.PRISMA_INSTRUMENTATION = {
93
- helper: tracingHelper
94
- }
95
- } else {
96
- global[`V${versions[0]}_PRISMA_INSTRUMENTATION`] = {
97
- helper: tracingHelper
98
- }
94
+ if (isIitm) {
95
+ runtime.getPrismaClient = wrappedGetPrismaClient
96
+ return runtime
99
97
  }
100
98
 
101
- return prisma
99
+ return new Proxy(runtime, {
100
+ get (target, prop) {
101
+ if (prop === 'getPrismaClient') {
102
+ return wrappedGetPrismaClient
103
+ }
104
+ return target[prop]
105
+ }
106
+ })
107
+ }
108
+
109
+ const prismaConfigs = [
110
+ { name: '@prisma/client', versions: ['>=6.1.0 <7.0.0'], filePattern: 'runtime/library.*' },
111
+ { name: './runtime/library.js', versions: ['>=6.1.0 <7.0.0'], file: 'runtime/library.js' },
112
+ { name: '@prisma/client', versions: ['>=7.0.0'], filePattern: 'runtime/client.*' }
113
+ ]
114
+
115
+ prismaConfigs.forEach(config => {
116
+ addHook(config, prismaHook)
102
117
  })
103
118
 
104
119
  function parseDBString (dbString) {
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const shimmer = require('../../datadog-shimmer')
4
3
  const { channel } = require('dc-polyfill')
4
+ const shimmer = require('../../datadog-shimmer')
5
5
 
6
6
  const startSetUncaughtExceptionCaptureCallback = channel('datadog:process:setUncaughtExceptionCaptureCallback:start')
7
7
 
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const { addHook } = require('./helpers/instrument')
4
5
  const { wrapThen } = require('./helpers/promise')
5
- const shimmer = require('../../datadog-shimmer')
6
6
 
7
7
  addHook({
8
8
  name: 'promise-js',
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const { addHook } = require('./helpers/instrument')
4
5
  const { wrapThen } = require('./helpers/promise')
5
- const shimmer = require('../../datadog-shimmer')
6
6
 
7
7
  addHook({
8
8
  name: 'promise',
@@ -1,9 +1,9 @@
1
1
  'use strict'
2
2
 
3
+ const dc = require('dc-polyfill')
3
4
  const shimmer = require('../../datadog-shimmer')
4
5
  const { addHook } = require('./helpers/instrument')
5
6
 
6
- const dc = require('dc-polyfill')
7
7
  const serializeChannel = dc.channel('apm:protobufjs:serialize-start')
8
8
  const deserializeChannel = dc.channel('apm:protobufjs:deserialize-end')
9
9
 
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const { addHook } = require('./helpers/instrument')
4
5
  const { wrapThen } = require('./helpers/promise')
5
- const shimmer = require('../../datadog-shimmer')
6
6
 
7
7
  addHook({
8
8
  name: 'q',
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
8
 
9
9
  const startCh = channel('apm:redis:command:start')
10
10
  const finishCh = channel('apm:redis:command:finish')
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
8
 
9
9
  const circularBufferConstructor = Symbol('circularBufferConstructor')
10
10
  const inFlightDeliveries = Symbol('inFlightDeliveries')
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
- const { addHook, channel } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
5
- const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
4
+ const { getValueFromEnvSources } = require('../../dd-trace/src/config/helper')
5
+ const { addHook, channel } = require('./helpers/instrument')
6
6
 
7
7
  const ciSeleniumDriverGetStartCh = channel('ci:selenium:driver:get')
8
8
 
@@ -17,7 +17,7 @@ if (window.DD_RUM && window.DD_RUM.stopSession) {
17
17
  const IS_RUM_ACTIVE_SCRIPT = 'return !!window.DD_RUM'
18
18
 
19
19
  const DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS =
20
- Number(getEnvironmentVariable('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 500
20
+ Number(getValueFromEnvSources('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 500
21
21
  const DD_CIVISIBILITY_TEST_EXECUTION_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id'
22
22
 
23
23
  // TODO: can we increase the supported version range?
@@ -1,12 +1,11 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
8
 
8
- const shimmer = require('../../datadog-shimmer')
9
-
10
9
  addHook({ name: 'sequelize', versions: ['>=4'], file: ['lib/sequelize.js'] }, Sequelize => {
11
10
  const startCh = channel('datadog:sequelize:query:start')
12
11
  const finishCh = channel('datadog:sequelize:query:finish')
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
8
 
9
9
  /**
10
10
  * @description The enum values in this map are not exposed from ShareDB, so the keys are hard-coded here.
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
8
 
9
9
  addHook({ name: 'tedious', versions: ['>=1.0.0'] }, tedious => {
10
10
  const startCh = channel('apm:tedious:request:start')
@@ -1,18 +1,29 @@
1
1
  'use strict'
2
2
 
3
+ const tracingChannel = require('dc-polyfill').tracingChannel
4
+
5
+ const shimmer = require('../../datadog-shimmer')
6
+ const satisfies = require('../../../vendor/dist/semifies')
3
7
  const {
4
8
  addHook
5
9
  } = require('./helpers/instrument')
6
- const shimmer = require('../../datadog-shimmer')
10
+ const { createWrapFetch } = require('./helpers/fetch')
7
11
 
8
- const tracingChannel = require('dc-polyfill').tracingChannel
9
12
  const ch = tracingChannel('apm:undici:fetch')
10
13
 
11
- const { createWrapFetch } = require('./helpers/fetch')
14
+ // Undici 5.0.x has a bug where fetch doesn't preserve AggregateError in the error cause chain
15
+ // Use native DC only for versions where error handling works correctly
16
+ const NATIVE_DC_VERSION = '>=4.7.0 <5.0.0 || >=5.1.0'
12
17
 
13
18
  addHook({
14
19
  name: 'undici',
15
20
  versions: ['^4.4.1', '5', '>=6.0.0']
16
- }, undici => {
21
+ }, (undici, version) => {
22
+ // For versions with working native DC, let the plugin subscribe directly
23
+ if (satisfies(version, NATIVE_DC_VERSION)) {
24
+ return undici
25
+ }
26
+
27
+ // For older versions or those with buggy error handling, wrap fetch
17
28
  return shimmer.wrap(undici, 'fetch', createWrapFetch(undici.Request, ch))
18
29
  })
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const { addHook, channel } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
4
+ const { addHook, channel } = require('./helpers/instrument')
5
5
  const names = ['url', 'node:url']
6
6
 
7
7
  const parseFinishedChannel = channel('datadog:url:parse:finish')
@@ -1,12 +1,12 @@
1
1
  'use strict'
2
2
 
3
- const { addHook, channel } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
5
4
  const log = require('../../dd-trace/src/log')
6
5
  const {
7
6
  VITEST_WORKER_TRACE_PAYLOAD_CODE,
8
7
  VITEST_WORKER_LOGS_PAYLOAD_CODE
9
8
  } = require('../../dd-trace/src/plugins/util/test')
9
+ const { addHook, channel } = require('./helpers/instrument')
10
10
 
11
11
  // test hooks
12
12
  const testStartCh = channel('ci:vitest:test:start')
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- const { channel, addHook } = require('./helpers/instrument')
4
3
  const shimmer = require('../../datadog-shimmer')
4
+ const { channel, addHook } = require('./helpers/instrument')
5
5
  const names = ['vm', 'node:vm']
6
6
 
7
7
  const runScriptStartChannel = channel('datadog:vm:run-script:start')
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const { addHook } = require('./helpers/instrument')
4
5
  const { wrapThen } = require('./helpers/promise')
5
- const shimmer = require('../../datadog-shimmer')
6
6
 
7
7
  addHook({
8
8
  name: 'when',
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
+ const shimmer = require('../../datadog-shimmer')
3
4
  const {
4
5
  channel,
5
6
  addHook
6
7
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
8
 
9
9
  const patched = new WeakSet()
10
10
 
@@ -1,12 +1,13 @@
1
1
  'use strict'
2
2
 
3
+ const tracingChannel = require('dc-polyfill').tracingChannel
4
+
5
+ const shimmer = require('../../datadog-shimmer')
3
6
  const {
4
7
  addHook,
5
8
  channel
6
9
  } = require('./helpers/instrument')
7
- const shimmer = require('../../datadog-shimmer')
8
10
 
9
- const tracingChannel = require('dc-polyfill').tracingChannel
10
11
  const serverCh = tracingChannel('ws:server:connect')
11
12
  const producerCh = tracingChannel('ws:send')
12
13
  const receiverCh = tracingChannel('ws:receive')
@@ -1,8 +1,8 @@
1
1
  'use strict'
2
2
 
3
+ const CompositePlugin = require('../../dd-trace/src/plugins/composite')
3
4
  const ProducerPlugin = require('./producer')
4
5
  const ConsumerPlugin = require('./consumer')
5
- const CompositePlugin = require('../../dd-trace/src/plugins/composite')
6
6
 
7
7
  class Amqp10Plugin extends CompositePlugin {
8
8
  static id = 'amqp10'
@@ -1,9 +1,9 @@
1
1
  'use strict'
2
2
 
3
+ const CompositePlugin = require('../../dd-trace/src/plugins/composite')
3
4
  const ProducerPlugin = require('./producer')
4
5
  const ConsumerPlugin = require('./consumer')
5
6
  const ClientPlugin = require('./client')
6
- const CompositePlugin = require('../../dd-trace/src/plugins/composite')
7
7
 
8
8
  // TODO: Consider splitting channels for publish/receive in the instrumentation.
9
9
  class AmqplibPlugin extends CompositePlugin {