dd-trace 5.53.0 → 5.55.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 (368) hide show
  1. package/LICENSE-3rdparty.csv +2 -1
  2. package/ci/cypress/plugin.js +8 -0
  3. package/ci/cypress/polyfills.js +23 -0
  4. package/ci/init.js +8 -7
  5. package/index.d.ts +33 -16
  6. package/initialize.mjs +5 -6
  7. package/package.json +40 -38
  8. package/packages/datadog-code-origin/index.js +22 -4
  9. package/packages/datadog-core/src/utils/src/get.js +1 -1
  10. package/packages/datadog-core/src/utils/src/has.js +1 -1
  11. package/packages/datadog-core/src/utils/src/kebabcase.js +4 -6
  12. package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
  13. package/packages/datadog-core/src/utils/src/pick.js +2 -2
  14. package/packages/datadog-core/src/utils/src/set.js +1 -1
  15. package/packages/datadog-core/src/utils/src/uniq.js +1 -1
  16. package/packages/datadog-instrumentations/src/amqp10.js +19 -17
  17. package/packages/datadog-instrumentations/src/amqplib.js +52 -35
  18. package/packages/datadog-instrumentations/src/apollo.js +2 -2
  19. package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
  20. package/packages/datadog-instrumentations/src/cassandra-driver.js +10 -10
  21. package/packages/datadog-instrumentations/src/child_process.js +1 -2
  22. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +89 -75
  23. package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
  24. package/packages/datadog-instrumentations/src/couchbase.js +6 -9
  25. package/packages/datadog-instrumentations/src/cucumber.js +108 -68
  26. package/packages/datadog-instrumentations/src/cypress.js +2 -1
  27. package/packages/datadog-instrumentations/src/dns.js +5 -5
  28. package/packages/datadog-instrumentations/src/elasticsearch.js +9 -10
  29. package/packages/datadog-instrumentations/src/fastify.js +7 -9
  30. package/packages/datadog-instrumentations/src/fs.js +1 -1
  31. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +35 -43
  32. package/packages/datadog-instrumentations/src/graphql.js +7 -10
  33. package/packages/datadog-instrumentations/src/grpc/client.js +11 -23
  34. package/packages/datadog-instrumentations/src/grpc/server.js +7 -20
  35. package/packages/datadog-instrumentations/src/hapi.js +10 -11
  36. package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +16 -10
  37. package/packages/datadog-instrumentations/src/helpers/fetch.js +4 -5
  38. package/packages/datadog-instrumentations/src/helpers/hook.js +2 -3
  39. package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -1
  40. package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
  41. package/packages/datadog-instrumentations/src/helpers/register.js +11 -12
  42. package/packages/datadog-instrumentations/src/http/client.js +14 -20
  43. package/packages/datadog-instrumentations/src/jest.js +201 -143
  44. package/packages/datadog-instrumentations/src/kafkajs.js +52 -44
  45. package/packages/datadog-instrumentations/src/knex.js +4 -4
  46. package/packages/datadog-instrumentations/src/koa.js +2 -3
  47. package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
  48. package/packages/datadog-instrumentations/src/mariadb.js +49 -65
  49. package/packages/datadog-instrumentations/src/mocha/main.js +116 -73
  50. package/packages/datadog-instrumentations/src/mocha/utils.js +36 -12
  51. package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
  52. package/packages/datadog-instrumentations/src/mocha.js +3 -1
  53. package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
  54. package/packages/datadog-instrumentations/src/mysql.js +30 -37
  55. package/packages/datadog-instrumentations/src/mysql2.js +53 -47
  56. package/packages/datadog-instrumentations/src/net.js +1 -1
  57. package/packages/datadog-instrumentations/src/next.js +1 -0
  58. package/packages/datadog-instrumentations/src/nyc.js +3 -2
  59. package/packages/datadog-instrumentations/src/openai.js +22 -24
  60. package/packages/datadog-instrumentations/src/oracledb.js +1 -1
  61. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +4 -3
  62. package/packages/datadog-instrumentations/src/pg.js +3 -5
  63. package/packages/datadog-instrumentations/src/playwright.js +123 -83
  64. package/packages/datadog-instrumentations/src/protobufjs.js +3 -4
  65. package/packages/datadog-instrumentations/src/redis.js +4 -4
  66. package/packages/datadog-instrumentations/src/restify.js +9 -13
  67. package/packages/datadog-instrumentations/src/rhea.js +42 -54
  68. package/packages/datadog-instrumentations/src/router.js +30 -32
  69. package/packages/datadog-instrumentations/src/tedious.js +2 -3
  70. package/packages/datadog-instrumentations/src/vitest.js +87 -52
  71. package/packages/datadog-plugin-amqp10/src/consumer.js +7 -3
  72. package/packages/datadog-plugin-amqp10/src/producer.js +7 -3
  73. package/packages/datadog-plugin-amqplib/src/client.js +6 -2
  74. package/packages/datadog-plugin-amqplib/src/consumer.js +7 -3
  75. package/packages/datadog-plugin-amqplib/src/producer.js +7 -3
  76. package/packages/datadog-plugin-amqplib/src/util.js +1 -1
  77. package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -6
  78. package/packages/datadog-plugin-apollo/src/gateway/validate.js +2 -3
  79. package/packages/datadog-plugin-avsc/src/schema_iterator.js +12 -12
  80. package/packages/datadog-plugin-aws-sdk/src/base.js +15 -10
  81. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
  82. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +13 -13
  83. package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +3 -5
  84. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +28 -43
  85. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
  86. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +10 -11
  87. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +4 -6
  88. package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +3 -5
  89. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +3 -5
  90. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -3
  91. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +11 -15
  92. package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
  93. package/packages/datadog-plugin-aws-sdk/src/util.js +5 -6
  94. package/packages/datadog-plugin-cassandra-driver/src/index.js +1 -1
  95. package/packages/datadog-plugin-child_process/src/index.js +4 -4
  96. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +23 -23
  97. package/packages/datadog-plugin-cucumber/src/index.js +60 -4
  98. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +99 -28
  99. package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
  100. package/packages/datadog-plugin-cypress/src/support.js +24 -5
  101. package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -1
  102. package/packages/datadog-plugin-elasticsearch/src/index.js +1 -1
  103. package/packages/datadog-plugin-express/src/code_origin.js +30 -0
  104. package/packages/datadog-plugin-express/src/index.js +10 -12
  105. package/packages/datadog-plugin-express/src/tracing.js +19 -0
  106. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +7 -3
  107. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +12 -7
  108. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +6 -2
  109. package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +27 -10
  110. package/packages/datadog-plugin-graphql/src/execute.js +2 -2
  111. package/packages/datadog-plugin-graphql/src/index.js +10 -8
  112. package/packages/datadog-plugin-graphql/src/resolve.js +19 -12
  113. package/packages/datadog-plugin-graphql/src/tools/index.js +1 -0
  114. package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -0
  115. package/packages/datadog-plugin-graphql/src/tools/transforms.js +1 -0
  116. package/packages/datadog-plugin-grpc/src/client.js +2 -2
  117. package/packages/datadog-plugin-grpc/src/util.js +2 -2
  118. package/packages/datadog-plugin-http/src/client.js +23 -13
  119. package/packages/datadog-plugin-http2/src/client.js +24 -25
  120. package/packages/datadog-plugin-jest/src/index.js +26 -23
  121. package/packages/datadog-plugin-jest/src/util.js +8 -8
  122. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +3 -1
  123. package/packages/datadog-plugin-kafkajs/src/consumer.js +9 -5
  124. package/packages/datadog-plugin-kafkajs/src/producer.js +8 -3
  125. package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
  126. package/packages/datadog-plugin-langchain/src/handlers/chain.js +7 -7
  127. package/packages/datadog-plugin-langchain/src/handlers/embedding.js +2 -2
  128. package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +6 -4
  129. package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +5 -4
  130. package/packages/datadog-plugin-langchain/src/tracing.js +11 -10
  131. package/packages/datadog-plugin-mariadb/src/index.js +3 -9
  132. package/packages/datadog-plugin-mocha/src/index.js +39 -14
  133. package/packages/datadog-plugin-mongodb-core/src/index.js +3 -2
  134. package/packages/datadog-plugin-mysql/src/index.js +22 -9
  135. package/packages/datadog-plugin-mysql2/src/index.js +16 -0
  136. package/packages/datadog-plugin-net/src/tcp.js +1 -1
  137. package/packages/datadog-plugin-next/src/index.js +7 -6
  138. package/packages/datadog-plugin-openai/src/services.js +6 -10
  139. package/packages/datadog-plugin-openai/src/tracing.js +12 -18
  140. package/packages/datadog-plugin-oracledb/src/index.js +1 -1
  141. package/packages/datadog-plugin-playwright/src/index.js +25 -4
  142. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +8 -9
  143. package/packages/datadog-plugin-redis/src/index.js +2 -4
  144. package/packages/datadog-plugin-rhea/src/consumer.js +8 -6
  145. package/packages/datadog-plugin-rhea/src/producer.js +5 -2
  146. package/packages/datadog-plugin-router/src/index.js +1 -1
  147. package/packages/datadog-plugin-selenium/src/index.js +1 -6
  148. package/packages/datadog-plugin-vitest/src/index.js +52 -35
  149. package/packages/datadog-shimmer/src/shimmer.js +4 -8
  150. package/packages/dd-trace/src/appsec/api_security_sampler.js +2 -2
  151. package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
  152. package/packages/dd-trace/src/appsec/blocking.js +6 -20
  153. package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +0 -1
  154. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +0 -1
  155. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +0 -1
  156. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +0 -1
  157. package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +7 -12
  158. package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +5 -8
  159. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +4 -0
  160. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +9 -12
  161. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +5 -4
  162. package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +2 -3
  163. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
  164. package/packages/dd-trace/src/appsec/iast/index.js +1 -0
  165. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +102 -7
  166. package/packages/dd-trace/src/appsec/iast/path-line.js +7 -8
  167. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +16 -24
  168. package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +6 -6
  169. package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +2 -2
  170. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -3
  171. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +4 -28
  172. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -8
  173. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +3 -4
  174. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
  175. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +7 -8
  176. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
  177. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +7 -7
  178. package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -3
  179. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +10 -11
  180. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +1 -1
  181. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +1 -1
  182. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +7 -7
  183. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +23 -28
  184. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +3 -3
  185. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +4 -4
  186. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +6 -11
  187. package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +0 -1
  188. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +9 -11
  189. package/packages/dd-trace/src/appsec/index.js +5 -5
  190. package/packages/dd-trace/src/appsec/rasp/index.js +15 -15
  191. package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
  192. package/packages/dd-trace/src/appsec/reporter.js +232 -41
  193. package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
  194. package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
  195. package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -3
  196. package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
  197. package/packages/dd-trace/src/appsec/telemetry/index.js +31 -1
  198. package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -5
  199. package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -5
  200. package/packages/dd-trace/src/appsec/user_tracking.js +3 -5
  201. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +8 -4
  202. package/packages/dd-trace/src/azure_metadata.js +9 -9
  203. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +9 -8
  204. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +2 -2
  205. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +3 -2
  206. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +3 -3
  207. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +3 -2
  208. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +3 -2
  209. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +3 -2
  210. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +6 -4
  211. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -5
  212. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +7 -6
  213. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +0 -2
  214. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +3 -2
  215. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +5 -4
  216. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +12 -8
  217. package/packages/dd-trace/src/ci-visibility/telemetry.js +4 -0
  218. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +3 -2
  219. package/packages/dd-trace/src/config-helper.js +89 -0
  220. package/packages/dd-trace/src/config.js +159 -129
  221. package/packages/dd-trace/src/config_stable.js +10 -7
  222. package/packages/dd-trace/src/datastreams/encoding.js +9 -9
  223. package/packages/dd-trace/src/datastreams/fnv.js +2 -2
  224. package/packages/dd-trace/src/datastreams/pathway.js +4 -4
  225. package/packages/dd-trace/src/datastreams/processor.js +5 -7
  226. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +7 -7
  227. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +4 -6
  228. package/packages/dd-trace/src/datastreams/size.js +1 -1
  229. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +75 -69
  230. package/packages/dd-trace/src/debugger/devtools_client/condition.js +7 -10
  231. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
  232. package/packages/dd-trace/src/debugger/devtools_client/index.js +9 -2
  233. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
  234. package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -2
  235. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +1 -2
  236. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +1 -1
  237. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +11 -14
  238. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +4 -4
  239. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
  240. package/packages/dd-trace/src/debugger/devtools_client/state.js +10 -3
  241. package/packages/dd-trace/src/debugger/index.js +1 -0
  242. package/packages/dd-trace/src/dogstatsd.js +7 -6
  243. package/packages/dd-trace/src/encode/0.4.js +14 -11
  244. package/packages/dd-trace/src/encode/0.5.js +4 -6
  245. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
  246. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
  247. package/packages/dd-trace/src/encode/tags-processors.js +1 -1
  248. package/packages/dd-trace/src/exporter.js +7 -6
  249. package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
  250. package/packages/dd-trace/src/exporters/common/docker.js +4 -3
  251. package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
  252. package/packages/dd-trace/src/exporters/common/request.js +5 -2
  253. package/packages/dd-trace/src/exporters/common/util.js +4 -2
  254. package/packages/dd-trace/src/external-logger/src/index.js +5 -5
  255. package/packages/dd-trace/src/flare/file.js +1 -5
  256. package/packages/dd-trace/src/format.js +1 -1
  257. package/packages/dd-trace/src/git_properties.js +1 -1
  258. package/packages/dd-trace/src/id.js +15 -9
  259. package/packages/dd-trace/src/iitm.js +10 -22
  260. package/packages/dd-trace/src/index.js +4 -3
  261. package/packages/dd-trace/src/lambda/handler.js +7 -6
  262. package/packages/dd-trace/src/lambda/index.js +2 -1
  263. package/packages/dd-trace/src/lambda/runtime/patch.js +7 -6
  264. package/packages/dd-trace/src/lambda/runtime/ritm.js +4 -3
  265. package/packages/dd-trace/src/llmobs/constants/tags.js +1 -0
  266. package/packages/dd-trace/src/llmobs/index.js +21 -5
  267. package/packages/dd-trace/src/llmobs/noop.js +18 -20
  268. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +6 -6
  269. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +2 -6
  270. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -3
  271. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +11 -13
  272. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +6 -6
  273. package/packages/dd-trace/src/llmobs/plugins/openai.js +2 -3
  274. package/packages/dd-trace/src/llmobs/sdk.js +4 -3
  275. package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
  276. package/packages/dd-trace/src/llmobs/tagger.js +129 -102
  277. package/packages/dd-trace/src/llmobs/util.js +9 -9
  278. package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
  279. package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
  280. package/packages/dd-trace/src/log/index.js +9 -8
  281. package/packages/dd-trace/src/log/log.js +1 -1
  282. package/packages/dd-trace/src/log/writer.js +3 -4
  283. package/packages/dd-trace/src/msgpack/chunk.js +3 -3
  284. package/packages/dd-trace/src/msgpack/encoder.js +31 -31
  285. package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
  286. package/packages/dd-trace/src/noop/span.js +4 -6
  287. package/packages/dd-trace/src/noop/tracer.js +1 -2
  288. package/packages/dd-trace/src/opentelemetry/span_processor.js +2 -2
  289. package/packages/dd-trace/src/opentelemetry/tracer.js +7 -6
  290. package/packages/dd-trace/src/opentracing/propagation/log.js +10 -13
  291. package/packages/dd-trace/src/opentracing/propagation/text_map.js +40 -37
  292. package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
  293. package/packages/dd-trace/src/opentracing/span.js +16 -20
  294. package/packages/dd-trace/src/opentracing/tracer.js +9 -6
  295. package/packages/dd-trace/src/payload-tagging/config/index.js +17 -21
  296. package/packages/dd-trace/src/payload-tagging/index.js +1 -1
  297. package/packages/dd-trace/src/payload-tagging/tagging.js +6 -6
  298. package/packages/dd-trace/src/pkg.js +1 -1
  299. package/packages/dd-trace/src/plugin_manager.js +4 -3
  300. package/packages/dd-trace/src/plugins/ci_plugin.js +87 -11
  301. package/packages/dd-trace/src/plugins/consumer.js +2 -2
  302. package/packages/dd-trace/src/plugins/inbound.js +5 -1
  303. package/packages/dd-trace/src/plugins/index.js +0 -1
  304. package/packages/dd-trace/src/plugins/outbound.js +4 -5
  305. package/packages/dd-trace/src/plugins/plugin.js +1 -1
  306. package/packages/dd-trace/src/plugins/producer.js +2 -2
  307. package/packages/dd-trace/src/plugins/storage.js +2 -2
  308. package/packages/dd-trace/src/plugins/util/ci.js +28 -20
  309. package/packages/dd-trace/src/plugins/util/git.js +166 -12
  310. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +1 -1
  311. package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
  312. package/packages/dd-trace/src/plugins/util/llm.js +27 -10
  313. package/packages/dd-trace/src/plugins/util/stacktrace.js +9 -2
  314. package/packages/dd-trace/src/plugins/util/test.js +315 -51
  315. package/packages/dd-trace/src/plugins/util/url.js +1 -1
  316. package/packages/dd-trace/src/plugins/util/urlfilter.js +13 -17
  317. package/packages/dd-trace/src/plugins/util/user-provided-git.js +14 -4
  318. package/packages/dd-trace/src/plugins/util/web.js +8 -8
  319. package/packages/dd-trace/src/priority_sampler.js +64 -53
  320. package/packages/dd-trace/src/profiling/config.js +51 -35
  321. package/packages/dd-trace/src/profiling/exporter_cli.js +20 -20
  322. package/packages/dd-trace/src/profiling/exporters/agent.js +1 -1
  323. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +7 -6
  324. package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
  325. package/packages/dd-trace/src/profiling/index.js +2 -1
  326. package/packages/dd-trace/src/profiling/profiler.js +44 -6
  327. package/packages/dd-trace/src/profiling/profilers/events.js +14 -17
  328. package/packages/dd-trace/src/profiling/profilers/shared.js +6 -1
  329. package/packages/dd-trace/src/profiling/profilers/space.js +3 -3
  330. package/packages/dd-trace/src/profiling/profilers/wall.js +6 -7
  331. package/packages/dd-trace/src/profiling/ssi-heuristics.js +3 -5
  332. package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +3 -1
  333. package/packages/dd-trace/src/profiling/tagger.js +21 -13
  334. package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
  335. package/packages/dd-trace/src/proxy.js +9 -10
  336. package/packages/dd-trace/src/random_sampler.js +40 -0
  337. package/packages/dd-trace/src/rate_limiter.js +4 -4
  338. package/packages/dd-trace/src/remote_config/index.js +3 -7
  339. package/packages/dd-trace/src/remote_config/manager.js +25 -13
  340. package/packages/dd-trace/src/require-package-json.js +1 -1
  341. package/packages/dd-trace/src/ritm.js +8 -8
  342. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +5 -4
  343. package/packages/dd-trace/src/sampler.js +41 -4
  344. package/packages/dd-trace/src/sampling_rule.js +12 -3
  345. package/packages/dd-trace/src/scope.js +1 -1
  346. package/packages/dd-trace/src/serverless.js +11 -4
  347. package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
  348. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
  349. package/packages/dd-trace/src/span_processor.js +5 -4
  350. package/packages/dd-trace/src/span_sampler.js +4 -1
  351. package/packages/dd-trace/src/standalone/tracesource.js +2 -3
  352. package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +1 -2
  353. package/packages/dd-trace/src/startup-log.js +6 -18
  354. package/packages/dd-trace/src/supported-configurations.json +439 -0
  355. package/packages/dd-trace/src/telemetry/dependencies.js +64 -59
  356. package/packages/dd-trace/src/telemetry/logs/log-collector.js +9 -10
  357. package/packages/dd-trace/src/telemetry/metrics.js +10 -5
  358. package/packages/dd-trace/src/telemetry/send-data.js +8 -7
  359. package/packages/dd-trace/src/telemetry/telemetry.js +31 -45
  360. package/packages/dd-trace/src/tracer.js +3 -7
  361. package/packages/dd-trace/src/util.js +1 -6
  362. package/version.js +1 -0
  363. package/packages/datadog-instrumentations/src/paperplane.js +0 -77
  364. package/packages/datadog-plugin-paperplane/src/index.js +0 -25
  365. package/packages/datadog-plugin-paperplane/src/logger.js +0 -11
  366. package/packages/datadog-plugin-paperplane/src/server.js +0 -24
  367. package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +0 -122
  368. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/header-sensitive-analyzer.js +0 -20
@@ -2,8 +2,7 @@
2
2
 
3
3
  const {
4
4
  channel,
5
- addHook,
6
- AsyncResource
5
+ addHook
7
6
  } = require('./helpers/instrument')
8
7
  const shimmer = require('../../datadog-shimmer')
9
8
 
@@ -60,33 +59,37 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
60
59
 
61
60
  producer.send = function () {
62
61
  const wrappedSend = (clusterId) => {
63
- const innerAsyncResource = new AsyncResource('bound-anonymous-fn')
62
+ const { topic, messages = [] } = arguments[0]
63
+
64
+ const ctx = {
65
+ bootstrapServers,
66
+ clusterId,
67
+ disableHeaderInjection: disabledHeaderWeakSet.has(producer),
68
+ messages,
69
+ topic
70
+ }
64
71
 
65
- return innerAsyncResource.runInAsyncScope(() => {
66
- if (!producerStartCh.hasSubscribers) {
67
- return send.apply(this, arguments)
72
+ for (const message of messages) {
73
+ if (message !== null && typeof message === 'object' && !ctx.disableHeaderInjection) {
74
+ message.headers = message.headers || {}
68
75
  }
76
+ }
69
77
 
78
+ return producerStartCh.runStores(ctx, () => {
70
79
  try {
71
- const { topic, messages = [] } = arguments[0]
72
- producerStartCh.publish({
73
- topic,
74
- messages,
75
- bootstrapServers,
76
- clusterId,
77
- disableHeaderInjection: disabledHeaderWeakSet.has(producer)
78
- })
79
80
  const result = send.apply(this, arguments)
80
81
  result.then(
81
- innerAsyncResource.bind(res => {
82
- producerFinishCh.publish(undefined)
83
- producerCommitCh.publish(res)
84
- }),
85
- innerAsyncResource.bind(err => {
82
+ (res) => {
83
+ ctx.result = res
84
+ producerFinishCh.publish(ctx)
85
+ producerCommitCh.publish(ctx)
86
+ },
87
+ (err) => {
88
+ ctx.error = err
86
89
  if (err) {
87
90
  // Fixes bug where we would inject message headers for kafka brokers that don't support headers
88
91
  // (version <0.11). On the error, we disable header injection.
89
- // Tnfortunately the error name / type is not more specific.
92
+ // Unfortunately the error name / type is not more specific.
90
93
  // This approach is implemented by other tracers as well.
91
94
  if (err.name === 'KafkaJSProtocolError' && err.type === 'UNKNOWN') {
92
95
  disabledHeaderWeakSet.add(producer)
@@ -96,28 +99,28 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
96
99
  }
97
100
  producerErrorCh.publish(err)
98
101
  }
99
- producerFinishCh.publish(undefined)
102
+ producerFinishCh.publish(ctx)
100
103
  })
101
- )
102
104
 
103
105
  return result
104
106
  } catch (e) {
105
- producerErrorCh.publish(e)
106
- producerFinishCh.publish(undefined)
107
+ ctx.error = e
108
+ producerErrorCh.publish(ctx)
109
+ producerFinishCh.publish(ctx)
107
110
  throw e
108
111
  }
109
112
  })
110
113
  }
111
114
 
112
- if (!isPromise(kafkaClusterIdPromise)) {
113
- // promise is already resolved
114
- return wrappedSend(kafkaClusterIdPromise)
115
- } else {
115
+ if (isPromise(kafkaClusterIdPromise)) {
116
116
  // promise is not resolved
117
117
  return kafkaClusterIdPromise.then((clusterId) => {
118
118
  return wrappedSend(clusterId)
119
119
  })
120
120
  }
121
+
122
+ // promise is already resolved
123
+ return wrappedSend(kafkaClusterIdPromise)
121
124
  }
122
125
  return producer
123
126
  })
@@ -170,15 +173,15 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
170
173
  })
171
174
  }
172
175
 
173
- if (!isPromise(kafkaClusterIdPromise)) {
174
- // promise is already resolved
175
- return wrapConsume(kafkaClusterIdPromise)
176
- } else {
176
+ if (isPromise(kafkaClusterIdPromise)) {
177
177
  // promise is not resolved
178
178
  return kafkaClusterIdPromise.then((clusterId) => {
179
179
  return wrapConsume(clusterId)
180
180
  })
181
181
  }
182
+
183
+ // promise is already resolved
184
+ return wrapConsume(kafkaClusterIdPromise)
182
185
  }
183
186
  return consumer
184
187
  })
@@ -188,30 +191,35 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
188
191
  const wrappedCallback = (fn, startCh, finishCh, errorCh, extractArgs, clusterId) => {
189
192
  return typeof fn === 'function'
190
193
  ? function (...args) {
191
- const innerAsyncResource = new AsyncResource('bound-anonymous-fn')
192
- return innerAsyncResource.runInAsyncScope(() => {
193
- const extractedArgs = extractArgs(args, clusterId)
194
+ const extractedArgs = extractArgs(args, clusterId)
195
+ const ctx = {
196
+ extractedArgs
197
+ }
194
198
 
195
- startCh.publish(extractedArgs)
199
+ return startCh.runStores(ctx, () => {
196
200
  try {
197
201
  const result = fn.apply(this, args)
198
202
  if (result && typeof result.then === 'function') {
199
203
  result.then(
200
- innerAsyncResource.bind(() => finishCh.publish(undefined)),
201
- innerAsyncResource.bind(err => {
204
+ (res) => {
205
+ ctx.result = res
206
+ finishCh.publish(ctx)
207
+ },
208
+ (err) => {
209
+ ctx.error = err
202
210
  if (err) {
203
- errorCh.publish(err)
211
+ errorCh.publish(ctx)
204
212
  }
205
- finishCh.publish(undefined)
213
+ finishCh.publish(ctx)
206
214
  })
207
- )
208
215
  } else {
209
- finishCh.publish(undefined)
216
+ finishCh.publish(ctx)
210
217
  }
211
218
  return result
212
219
  } catch (e) {
213
- errorCh.publish(e)
214
- finishCh.publish(undefined)
220
+ ctx.error = e
221
+ errorCh.publish(ctx)
222
+ finishCh.publish(ctx)
215
223
  throw e
216
224
  }
217
225
  })
@@ -22,6 +22,10 @@ function patch (file) {
22
22
  })
23
23
  }
24
24
 
25
+ function finish () {
26
+ finishRawQueryCh.publish()
27
+ }
28
+
25
29
  addHook({
26
30
  name: 'knex',
27
31
  versions: ['>=2'],
@@ -41,10 +45,6 @@ addHook({
41
45
 
42
46
  const asyncResource = new AsyncResource('bound-anonymous-fn')
43
47
 
44
- function finish () {
45
- finishRawQueryCh.publish()
46
- }
47
-
48
48
  return asyncResource.runInAsyncScope(() => {
49
49
  startRawQueryCh.publish({ sql, dialect: this.dialect })
50
50
 
@@ -112,10 +112,9 @@ function wrapMiddleware (fn, layer) {
112
112
  throw err
113
113
  }
114
114
  )
115
- } else {
116
- fulfill(ctx)
117
- return result
118
115
  }
116
+ fulfill(ctx)
117
+ return result
119
118
  } catch (e) {
120
119
  fulfill(ctx, e)
121
120
  throw e
@@ -8,6 +8,7 @@ const {
8
8
  const shimmer = require('../../datadog-shimmer')
9
9
 
10
10
  function isString (value) {
11
+ // eslint-disable-next-line unicorn/no-instanceof-builtins
11
12
  return typeof value === 'string' || value instanceof String
12
13
  }
13
14
 
@@ -61,10 +62,8 @@ addHook({ name: 'ldapjs', versions: ['>=2'] }, ldapjs => {
61
62
  let filter
62
63
  if (isString(options)) {
63
64
  filter = options
64
- } else if (options !== null && typeof options === 'object' && options.filter) {
65
- if (isString(options.filter)) {
66
- filter = options.filter
67
- }
65
+ } else if (options !== null && typeof options === 'object' && options.filter && isString(options.filter)) {
66
+ filter = options.filter
68
67
  }
69
68
  ldapSearchCh.publish({ base, filter })
70
69
  }
@@ -1,49 +1,39 @@
1
1
  'use strict'
2
2
 
3
- const { channel, addHook, AsyncResource } = require('./helpers/instrument')
3
+ const { channel, addHook } = require('./helpers/instrument')
4
4
 
5
5
  const shimmer = require('../../datadog-shimmer')
6
6
 
7
+ const commandAddCh = channel('apm:mariadb:command:add')
8
+ const connectionStartCh = channel('apm:mariadb:connection:start')
9
+ const connectionFinishCh = channel('apm:mariadb:connection:finish')
7
10
  const startCh = channel('apm:mariadb:query:start')
8
11
  const finishCh = channel('apm:mariadb:query:finish')
9
12
  const errorCh = channel('apm:mariadb:query:error')
10
13
  const skipCh = channel('apm:mariadb:pool:skip')
11
- const unskipCh = channel('apm:mariadb:pool:unskip')
12
14
 
13
- function wrapCommandStart (start, callbackResource) {
15
+ function wrapCommandStart (start, ctx) {
14
16
  return shimmer.wrapFunction(start, start => function () {
15
17
  if (!startCh.hasSubscribers) return start.apply(this, arguments)
16
18
 
17
- const resolve = callbackResource.bind(this.resolve)
18
- const reject = callbackResource.bind(this.reject)
19
-
20
- const asyncResource = callbackResource.runInAsyncScope(() => new AsyncResource('bound-anonymous-fn'))
21
-
19
+ const { reject, resolve } = this
22
20
  shimmer.wrap(this, 'resolve', function wrapResolve () {
23
21
  return function () {
24
- asyncResource.runInAsyncScope(() => {
25
- finishCh.publish()
26
- })
27
-
28
- return resolve.apply(this, arguments)
22
+ return finishCh.runStores(ctx, resolve, this, ...arguments)
29
23
  }
30
24
  })
31
25
 
32
26
  shimmer.wrap(this, 'reject', function wrapReject () {
33
27
  return function (error) {
34
- asyncResource.runInAsyncScope(() => {
35
- errorCh.publish(error)
36
- finishCh.publish()
37
- })
28
+ ctx.error = error
38
29
 
39
- return reject.apply(this, arguments)
30
+ errorCh.publish(ctx)
31
+
32
+ return finishCh.runStores(ctx, reject, this, ...arguments)
40
33
  }
41
34
  })
42
35
 
43
- return asyncResource.runInAsyncScope(() => {
44
- startCh.publish({ sql: this.sql, conf: this.opts })
45
- return start.apply(this, arguments)
46
- })
36
+ return startCh.runStores(ctx, start, this, ...arguments)
47
37
  })
48
38
  }
49
39
 
@@ -52,11 +42,13 @@ function wrapCommand (Command) {
52
42
  constructor (...args) {
53
43
  super(...args)
54
44
 
55
- const callbackResource = new AsyncResource('bound-anonymous-fn')
45
+ if (!this.start) return
56
46
 
57
- if (this.start) {
58
- this.start = wrapCommandStart(this.start, callbackResource)
59
- }
47
+ const ctx = { sql: this.sql, conf: this.opts }
48
+
49
+ commandAddCh.publish(ctx)
50
+
51
+ this.start = wrapCommandStart(this.start, ctx)
60
52
  }
61
53
  }
62
54
  }
@@ -66,21 +58,19 @@ function createWrapQuery (options) {
66
58
  return function (sql) {
67
59
  if (!startCh.hasSubscribers) return query.apply(this, arguments)
68
60
 
69
- const asyncResource = new AsyncResource('bound-anonymous-fn')
70
-
71
- return asyncResource.runInAsyncScope(() => {
72
- startCh.publish({ sql, conf: options })
73
-
74
- return query.apply(this, arguments)
75
- .then(result => {
76
- finishCh.publish()
77
- return result
78
- }, error => {
79
- errorCh.publish(error)
80
- finishCh.publish()
81
- throw error
82
- })
83
- }, 'bound-anonymous-fn')
61
+ const ctx = { sql, conf: options }
62
+
63
+ return startCh.runStores(ctx, query, this, ...arguments)
64
+ .then(result => {
65
+ ctx.result = result
66
+ finishCh.publish(ctx)
67
+ return result
68
+ }, error => {
69
+ ctx.error
70
+ errorCh.publish(ctx)
71
+ finishCh.publish(ctx)
72
+ throw error
73
+ })
84
74
  }
85
75
  }
86
76
  }
@@ -91,30 +81,24 @@ function createWrapQueryCallback (options) {
91
81
  if (!startCh.hasSubscribers) return query.apply(this, arguments)
92
82
 
93
83
  const cb = arguments[arguments.length - 1]
94
- const asyncResource = new AsyncResource('bound-anonymous-fn')
95
- const callbackResource = new AsyncResource('bound-anonymous-fn')
84
+ const ctx = { sql, conf: options }
96
85
 
97
86
  if (typeof cb !== 'function') {
98
- arguments.length = arguments.length + 1
87
+ arguments.length += 1
99
88
  }
100
89
 
101
- arguments[arguments.length - 1] = shimmer.wrapFunction(cb, cb => asyncResource.bind(function (err) {
90
+ arguments[arguments.length - 1] = shimmer.wrapFunction(cb, cb => function (err) {
102
91
  if (err) {
103
- errorCh.publish(err)
104
- }
105
-
106
- finishCh.publish()
107
-
108
- if (typeof cb === 'function') {
109
- return callbackResource.runInAsyncScope(() => cb.apply(this, arguments))
92
+ ctx.error = err
93
+ errorCh.publish(ctx)
110
94
  }
111
- }))
112
95
 
113
- return asyncResource.runInAsyncScope(() => {
114
- startCh.publish({ sql, conf: options })
96
+ return typeof cb === 'function'
97
+ ? finishCh.runStores(ctx, cb, this, ...arguments)
98
+ : finishCh.publish(ctx)
99
+ })
115
100
 
116
- return query.apply(this, arguments)
117
- }, 'bound-anonymous-fn')
101
+ return startCh.runStores(ctx, query, this, ...arguments)
118
102
  }
119
103
  }
120
104
  }
@@ -144,12 +128,7 @@ function wrapPoolBase (PoolBase) {
144
128
  // and/or orphan spans.
145
129
  function wrapPoolMethod (createConnection) {
146
130
  return function () {
147
- skipCh.publish()
148
- try {
149
- return createConnection.apply(this, arguments)
150
- } finally {
151
- unskipCh.publish()
152
- }
131
+ return skipCh.runStores({}, createConnection, this, ...arguments)
153
132
  }
154
133
  }
155
134
 
@@ -158,8 +137,13 @@ function wrapPoolGetConnectionMethod (getConnection) {
158
137
  const cb = arguments[arguments.length - 1]
159
138
  if (typeof cb !== 'function') return getConnection.apply(this, arguments)
160
139
 
161
- const callbackResource = new AsyncResource('bound-anonymous-fn')
162
- arguments[arguments.length - 1] = callbackResource.bind(cb)
140
+ const ctx = {}
141
+
142
+ arguments[arguments.length - 1] = function () {
143
+ return connectionFinishCh.runStores(ctx, cb, this, ...arguments)
144
+ }
145
+
146
+ connectionStartCh.publish(ctx)
163
147
 
164
148
  return getConnection.apply(this, arguments)
165
149
  }