dd-trace 5.52.0 → 5.54.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 (332) hide show
  1. package/LICENSE-3rdparty.csv +2 -1
  2. package/README.md +5 -0
  3. package/index.d.ts +87 -22
  4. package/initialize.mjs +3 -4
  5. package/package.json +36 -34
  6. package/packages/datadog-core/src/utils/src/get.js +1 -1
  7. package/packages/datadog-core/src/utils/src/has.js +1 -1
  8. package/packages/datadog-core/src/utils/src/kebabcase.js +4 -6
  9. package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
  10. package/packages/datadog-core/src/utils/src/pick.js +2 -2
  11. package/packages/datadog-core/src/utils/src/set.js +1 -1
  12. package/packages/datadog-core/src/utils/src/uniq.js +1 -1
  13. package/packages/datadog-instrumentations/src/amqp10.js +19 -17
  14. package/packages/datadog-instrumentations/src/amqplib.js +57 -37
  15. package/packages/datadog-instrumentations/src/apollo.js +2 -2
  16. package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
  17. package/packages/datadog-instrumentations/src/cassandra-driver.js +5 -4
  18. package/packages/datadog-instrumentations/src/child_process.js +3 -3
  19. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +92 -62
  20. package/packages/datadog-instrumentations/src/couchbase.js +5 -4
  21. package/packages/datadog-instrumentations/src/cucumber.js +126 -84
  22. package/packages/datadog-instrumentations/src/cypress.js +2 -1
  23. package/packages/datadog-instrumentations/src/dns.js +1 -1
  24. package/packages/datadog-instrumentations/src/express.js +2 -6
  25. package/packages/datadog-instrumentations/src/fs.js +7 -6
  26. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +28 -34
  27. package/packages/datadog-instrumentations/src/graphql.js +7 -10
  28. package/packages/datadog-instrumentations/src/grpc/client.js +11 -23
  29. package/packages/datadog-instrumentations/src/grpc/server.js +7 -20
  30. package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +16 -10
  31. package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
  32. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -1
  33. package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
  34. package/packages/datadog-instrumentations/src/helpers/register.js +21 -18
  35. package/packages/datadog-instrumentations/src/http/client.js +16 -21
  36. package/packages/datadog-instrumentations/src/iovalkey.js +51 -0
  37. package/packages/datadog-instrumentations/src/jest.js +184 -87
  38. package/packages/datadog-instrumentations/src/kafkajs.js +65 -44
  39. package/packages/datadog-instrumentations/src/knex.js +4 -4
  40. package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
  41. package/packages/datadog-instrumentations/src/mariadb.js +38 -61
  42. package/packages/datadog-instrumentations/src/mocha/main.js +85 -59
  43. package/packages/datadog-instrumentations/src/mocha/utils.js +103 -82
  44. package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
  45. package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
  46. package/packages/datadog-instrumentations/src/mysql.js +20 -36
  47. package/packages/datadog-instrumentations/src/mysql2.js +55 -47
  48. package/packages/datadog-instrumentations/src/net.js +4 -2
  49. package/packages/datadog-instrumentations/src/next.js +7 -14
  50. package/packages/datadog-instrumentations/src/nyc.js +1 -1
  51. package/packages/datadog-instrumentations/src/openai.js +21 -23
  52. package/packages/datadog-instrumentations/src/oracledb.js +1 -1
  53. package/packages/datadog-instrumentations/src/pg.js +6 -13
  54. package/packages/datadog-instrumentations/src/playwright.js +170 -136
  55. package/packages/datadog-instrumentations/src/redis.js +3 -3
  56. package/packages/datadog-instrumentations/src/restify.js +2 -2
  57. package/packages/datadog-instrumentations/src/rhea.js +42 -54
  58. package/packages/datadog-instrumentations/src/router.js +22 -25
  59. package/packages/datadog-instrumentations/src/tedious.js +1 -1
  60. package/packages/datadog-instrumentations/src/url.js +9 -17
  61. package/packages/datadog-instrumentations/src/vitest.js +126 -97
  62. package/packages/datadog-plugin-amqp10/src/consumer.js +7 -3
  63. package/packages/datadog-plugin-amqp10/src/producer.js +7 -3
  64. package/packages/datadog-plugin-amqplib/src/client.js +6 -2
  65. package/packages/datadog-plugin-amqplib/src/consumer.js +7 -3
  66. package/packages/datadog-plugin-amqplib/src/producer.js +7 -3
  67. package/packages/datadog-plugin-amqplib/src/util.js +1 -1
  68. package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -6
  69. package/packages/datadog-plugin-apollo/src/gateway/validate.js +2 -3
  70. package/packages/datadog-plugin-aws-sdk/src/base.js +3 -2
  71. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
  72. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +13 -13
  73. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +24 -31
  74. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
  75. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +6 -6
  76. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +1 -1
  77. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +1 -1
  78. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +4 -5
  79. package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
  80. package/packages/datadog-plugin-aws-sdk/src/util.js +5 -6
  81. package/packages/datadog-plugin-cassandra-driver/src/index.js +1 -1
  82. package/packages/datadog-plugin-child_process/src/index.js +4 -4
  83. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +23 -23
  84. package/packages/datadog-plugin-cucumber/src/index.js +86 -20
  85. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +97 -27
  86. package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
  87. package/packages/datadog-plugin-cypress/src/support.js +24 -5
  88. package/packages/datadog-plugin-express/src/code_origin.js +30 -0
  89. package/packages/datadog-plugin-express/src/index.js +10 -12
  90. package/packages/datadog-plugin-express/src/tracing.js +19 -0
  91. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +7 -3
  92. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +12 -7
  93. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +6 -2
  94. package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +26 -9
  95. package/packages/datadog-plugin-graphql/src/execute.js +2 -2
  96. package/packages/datadog-plugin-graphql/src/index.js +7 -6
  97. package/packages/datadog-plugin-graphql/src/resolve.js +2 -2
  98. package/packages/datadog-plugin-graphql/src/tools/index.js +1 -0
  99. package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -0
  100. package/packages/datadog-plugin-graphql/src/tools/transforms.js +1 -0
  101. package/packages/datadog-plugin-grpc/src/client.js +2 -2
  102. package/packages/datadog-plugin-grpc/src/util.js +2 -2
  103. package/packages/datadog-plugin-http/src/client.js +18 -7
  104. package/packages/datadog-plugin-http2/src/client.js +20 -20
  105. package/packages/datadog-plugin-iovalkey/src/index.js +18 -0
  106. package/packages/datadog-plugin-jest/src/index.js +36 -28
  107. package/packages/datadog-plugin-jest/src/util.js +8 -8
  108. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +3 -1
  109. package/packages/datadog-plugin-kafkajs/src/consumer.js +9 -5
  110. package/packages/datadog-plugin-kafkajs/src/producer.js +15 -7
  111. package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
  112. package/packages/datadog-plugin-langchain/src/handlers/chain.js +7 -7
  113. package/packages/datadog-plugin-langchain/src/handlers/embedding.js +2 -2
  114. package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +6 -4
  115. package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +5 -4
  116. package/packages/datadog-plugin-langchain/src/tracing.js +11 -10
  117. package/packages/datadog-plugin-mariadb/src/index.js +3 -9
  118. package/packages/datadog-plugin-mocha/src/index.js +88 -48
  119. package/packages/datadog-plugin-mongodb-core/src/index.js +1 -1
  120. package/packages/datadog-plugin-mysql/src/index.js +11 -9
  121. package/packages/datadog-plugin-mysql2/src/index.js +16 -0
  122. package/packages/datadog-plugin-net/src/tcp.js +1 -1
  123. package/packages/datadog-plugin-next/src/index.js +6 -5
  124. package/packages/datadog-plugin-openai/src/services.js +6 -10
  125. package/packages/datadog-plugin-openai/src/tracing.js +10 -14
  126. package/packages/datadog-plugin-oracledb/src/index.js +1 -1
  127. package/packages/datadog-plugin-playwright/src/index.js +48 -22
  128. package/packages/datadog-plugin-redis/src/index.js +9 -4
  129. package/packages/datadog-plugin-rhea/src/consumer.js +8 -6
  130. package/packages/datadog-plugin-rhea/src/producer.js +5 -2
  131. package/packages/datadog-plugin-router/src/index.js +1 -1
  132. package/packages/datadog-plugin-selenium/src/index.js +1 -6
  133. package/packages/datadog-plugin-vitest/src/index.js +99 -72
  134. package/packages/datadog-shimmer/src/shimmer.js +163 -36
  135. package/packages/dd-trace/src/appsec/api_security_sampler.js +2 -2
  136. package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
  137. package/packages/dd-trace/src/appsec/blocking.js +6 -20
  138. package/packages/dd-trace/src/appsec/graphql.js +2 -2
  139. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +1 -1
  140. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +1 -1
  141. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +1 -1
  142. package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +4 -6
  143. package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +7 -12
  144. package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +4 -6
  145. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +4 -0
  146. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +9 -12
  147. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +5 -4
  148. package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +2 -3
  149. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
  150. package/packages/dd-trace/src/appsec/iast/index.js +1 -0
  151. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +102 -7
  152. package/packages/dd-trace/src/appsec/iast/path-line.js +7 -8
  153. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +6 -13
  154. package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +6 -6
  155. package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +2 -2
  156. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -3
  157. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +4 -28
  158. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -7
  159. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +3 -4
  160. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
  161. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +5 -7
  162. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
  163. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +6 -6
  164. package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +1 -1
  165. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +1 -1
  166. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +1 -1
  167. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +7 -7
  168. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +23 -24
  169. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +3 -3
  170. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +4 -4
  171. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +6 -11
  172. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +9 -11
  173. package/packages/dd-trace/src/appsec/index.js +15 -12
  174. package/packages/dd-trace/src/appsec/rasp/index.js +19 -17
  175. package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
  176. package/packages/dd-trace/src/appsec/rasp/utils.js +11 -6
  177. package/packages/dd-trace/src/appsec/reporter.js +233 -40
  178. package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
  179. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
  180. package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
  181. package/packages/dd-trace/src/appsec/telemetry/index.js +1 -2
  182. package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -14
  183. package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -5
  184. package/packages/dd-trace/src/appsec/user_tracking.js +3 -5
  185. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +8 -8
  186. package/packages/dd-trace/src/azure_metadata.js +2 -7
  187. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +1 -1
  188. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +2 -2
  189. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +1 -1
  190. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +3 -3
  191. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
  192. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
  193. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +1 -1
  194. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +6 -4
  195. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +2 -2
  196. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +0 -2
  197. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +1 -1
  198. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +1 -1
  199. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +8 -5
  200. package/packages/dd-trace/src/ci-visibility/telemetry.js +4 -0
  201. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +1 -1
  202. package/packages/dd-trace/src/config.js +82 -51
  203. package/packages/dd-trace/src/config_stable.js +3 -3
  204. package/packages/dd-trace/src/datastreams/encoding.js +9 -9
  205. package/packages/dd-trace/src/datastreams/fnv.js +1 -1
  206. package/packages/dd-trace/src/datastreams/pathway.js +4 -4
  207. package/packages/dd-trace/src/datastreams/processor.js +5 -7
  208. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +1 -1
  209. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +4 -6
  210. package/packages/dd-trace/src/datastreams/size.js +1 -1
  211. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +131 -72
  212. package/packages/dd-trace/src/debugger/devtools_client/condition.js +6 -8
  213. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
  214. package/packages/dd-trace/src/debugger/devtools_client/index.js +17 -27
  215. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
  216. package/packages/dd-trace/src/debugger/devtools_client/send.js +8 -7
  217. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +16 -8
  218. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +8 -10
  219. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +3 -3
  220. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
  221. package/packages/dd-trace/src/debugger/devtools_client/state.js +31 -4
  222. package/packages/dd-trace/src/dogstatsd.js +7 -4
  223. package/packages/dd-trace/src/encode/0.4.js +9 -9
  224. package/packages/dd-trace/src/encode/0.5.js +1 -1
  225. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +3 -3
  226. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
  227. package/packages/dd-trace/src/encode/tags-processors.js +1 -1
  228. package/packages/dd-trace/src/exporter.js +6 -6
  229. package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
  230. package/packages/dd-trace/src/exporters/common/docker.js +1 -1
  231. package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
  232. package/packages/dd-trace/src/exporters/common/request.js +1 -1
  233. package/packages/dd-trace/src/exporters/common/util.js +1 -1
  234. package/packages/dd-trace/src/external-logger/src/index.js +5 -5
  235. package/packages/dd-trace/src/flare/file.js +1 -5
  236. package/packages/dd-trace/src/format.js +1 -1
  237. package/packages/dd-trace/src/git_properties.js +1 -1
  238. package/packages/dd-trace/src/id.js +12 -6
  239. package/packages/dd-trace/src/iitm.js +10 -22
  240. package/packages/dd-trace/src/lambda/handler.js +6 -6
  241. package/packages/dd-trace/src/lambda/runtime/patch.js +4 -4
  242. package/packages/dd-trace/src/lambda/runtime/ritm.js +1 -1
  243. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +6 -6
  244. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +2 -6
  245. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -3
  246. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +6 -6
  247. package/packages/dd-trace/src/llmobs/plugins/openai.js +1 -1
  248. package/packages/dd-trace/src/llmobs/sdk.js +2 -2
  249. package/packages/dd-trace/src/llmobs/tagger.js +113 -99
  250. package/packages/dd-trace/src/llmobs/util.js +9 -9
  251. package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
  252. package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
  253. package/packages/dd-trace/src/log/index.js +4 -4
  254. package/packages/dd-trace/src/log/log.js +1 -1
  255. package/packages/dd-trace/src/log/writer.js +2 -2
  256. package/packages/dd-trace/src/msgpack/chunk.js +3 -3
  257. package/packages/dd-trace/src/msgpack/encoder.js +28 -28
  258. package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
  259. package/packages/dd-trace/src/noop/span.js +3 -5
  260. package/packages/dd-trace/src/noop/tracer.js +1 -2
  261. package/packages/dd-trace/src/opentelemetry/span_processor.js +2 -2
  262. package/packages/dd-trace/src/opentelemetry/tracer.js +6 -5
  263. package/packages/dd-trace/src/opentracing/propagation/log.js +6 -8
  264. package/packages/dd-trace/src/opentracing/propagation/text_map.js +27 -23
  265. package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
  266. package/packages/dd-trace/src/opentracing/span.js +9 -14
  267. package/packages/dd-trace/src/opentracing/tracer.js +9 -6
  268. package/packages/dd-trace/src/payload-tagging/index.js +1 -1
  269. package/packages/dd-trace/src/payload-tagging/tagging.js +6 -6
  270. package/packages/dd-trace/src/pkg.js +1 -1
  271. package/packages/dd-trace/src/plugins/ci_plugin.js +62 -10
  272. package/packages/dd-trace/src/plugins/consumer.js +2 -2
  273. package/packages/dd-trace/src/plugins/inbound.js +5 -1
  274. package/packages/dd-trace/src/plugins/index.js +1 -1
  275. package/packages/dd-trace/src/plugins/outbound.js +4 -5
  276. package/packages/dd-trace/src/plugins/plugin.js +1 -1
  277. package/packages/dd-trace/src/plugins/producer.js +2 -2
  278. package/packages/dd-trace/src/plugins/storage.js +2 -2
  279. package/packages/dd-trace/src/plugins/util/ci.js +23 -15
  280. package/packages/dd-trace/src/plugins/util/git.js +165 -11
  281. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +1 -1
  282. package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
  283. package/packages/dd-trace/src/plugins/util/llm.js +27 -10
  284. package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
  285. package/packages/dd-trace/src/plugins/util/test.js +311 -48
  286. package/packages/dd-trace/src/plugins/util/url.js +1 -1
  287. package/packages/dd-trace/src/plugins/util/urlfilter.js +13 -17
  288. package/packages/dd-trace/src/plugins/util/user-provided-git.js +12 -3
  289. package/packages/dd-trace/src/plugins/util/web.js +5 -4
  290. package/packages/dd-trace/src/priority_sampler.js +22 -22
  291. package/packages/dd-trace/src/profiling/config.js +44 -8
  292. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +5 -5
  293. package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
  294. package/packages/dd-trace/src/profiling/profiler.js +37 -2
  295. package/packages/dd-trace/src/profiling/profilers/events.js +14 -17
  296. package/packages/dd-trace/src/profiling/profilers/shared.js +6 -1
  297. package/packages/dd-trace/src/profiling/profilers/space.js +3 -3
  298. package/packages/dd-trace/src/profiling/profilers/wall.js +6 -7
  299. package/packages/dd-trace/src/profiling/ssi-heuristics.js +3 -5
  300. package/packages/dd-trace/src/profiling/tagger.js +3 -5
  301. package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
  302. package/packages/dd-trace/src/proxy.js +7 -13
  303. package/packages/dd-trace/src/random_sampler.js +40 -0
  304. package/packages/dd-trace/src/rate_limiter.js +4 -4
  305. package/packages/dd-trace/src/remote_config/index.js +3 -7
  306. package/packages/dd-trace/src/remote_config/manager.js +25 -13
  307. package/packages/dd-trace/src/require-package-json.js +1 -1
  308. package/packages/dd-trace/src/ritm.js +4 -4
  309. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +2 -2
  310. package/packages/dd-trace/src/sampler.js +33 -4
  311. package/packages/dd-trace/src/sampling_rule.js +12 -3
  312. package/packages/dd-trace/src/scope.js +1 -1
  313. package/packages/dd-trace/src/serverless.js +0 -48
  314. package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
  315. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +8 -0
  316. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
  317. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +4 -0
  318. package/packages/dd-trace/src/span_processor.js +3 -3
  319. package/packages/dd-trace/src/span_sampler.js +4 -1
  320. package/packages/dd-trace/src/standalone/tracesource.js +1 -1
  321. package/packages/dd-trace/src/startup-log.js +2 -2
  322. package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
  323. package/packages/dd-trace/src/telemetry/logs/log-collector.js +9 -10
  324. package/packages/dd-trace/src/telemetry/metrics.js +10 -5
  325. package/packages/dd-trace/src/telemetry/send-data.js +1 -1
  326. package/packages/dd-trace/src/telemetry/telemetry.js +23 -24
  327. package/packages/dd-trace/src/util.js +1 -1
  328. package/version.js +1 -0
  329. package/packages/datadog-instrumentations/src/paperplane.js +0 -77
  330. package/packages/datadog-plugin-paperplane/src/index.js +0 -25
  331. package/packages/datadog-plugin-paperplane/src/logger.js +0 -11
  332. package/packages/datadog-plugin-paperplane/src/server.js +0 -24
@@ -37,7 +37,7 @@ dev,@types/node,MIT,Copyright Authors
37
37
  dev,@eslint/eslintrc,MIT,Copyright OpenJS Foundation and other contributors, <www.openjsf.org>
38
38
  dev,@eslint/js,MIT,Copyright OpenJS Foundation and other contributors, <www.openjsf.org>
39
39
  dev,@msgpack/msgpack,ISC,Copyright 2019 The MessagePack Community
40
- dev,@stylistic/eslint-plugin-js,MIT,Copyright OpenJS Foundation and other contributors, <www.openjsf.org>
40
+ dev,@stylistic/eslint-plugin,MIT,Copyright OpenJS Foundation and other contributors, <www.openjsf.org>
41
41
  dev,axios,MIT,Copyright 2014-present Matt Zabriskie
42
42
  dev,benchmark,MIT,Copyright 2010-2016 Mathias Bynens Robert Kieffer John-David Dalton
43
43
  dev,body-parser,MIT,Copyright 2014 Jonathan Ong 2014-2015 Douglas Christopher Wilson
@@ -67,6 +67,7 @@ dev,sinon-chai,WTFPL and BSD-2-Clause,Copyright 2004 Sam Hocevar 2012–2017 Dom
67
67
  dev,tap,ISC,Copyright 2011-2022 Isaac Z. Schlueter and Contributors
68
68
  dev,tiktoken,MIT,Copyright (c) 2022 OpenAI, Shantanu Jain
69
69
  dev,yaml,ISC,Copyright Eemeli Aro <eemeli@gmail.com>
70
+ dev,yarn-deduplicate,Apache license 2.0,Copyright [yyyy] [name of copyright owner]
70
71
  file,aws-lambda-nodejs-runtime-interface-client,Apache 2.0,Copyright 2019 Amazon.com Inc. or its affiliates. All Rights Reserved.
71
72
  file,profile.proto,Apache license 2.0,Copyright 2016 Google Inc.
72
73
  file,is-git-url,MIT,Copyright (c) 2017 Jon Schlinkert.
package/README.md CHANGED
@@ -22,6 +22,11 @@ Most of the documentation for `dd-trace` is available on these webpages:
22
22
 
23
23
  ## Version Release Lines and Maintenance
24
24
 
25
+ > **Node.js v24 Notice**: We're currently adding compatibility for Node.js v24. To use the tracer with your application either continue to use Node.js v22 (LTS), or do both of the following as a workaround:
26
+ > * Install v5.52.0 (or newer) of the tracer
27
+ > * Set `--no-async-context-frame` either using a CLI argument or via `NODE_OPTIONS`
28
+ > Once support for Node.js v24 is complete this flag will no longer be needed.
29
+
25
30
  | Release Line | Latest Version | Node.js | [SSI](https://docs.datadoghq.com/tracing/trace_collection/automatic_instrumentation/single-step-apm/?tab=linuxhostorvm) | [K8s Injection](https://docs.datadoghq.com/tracing/trace_collection/library_injection_local/?tab=kubernetes) |Status |Initial Release | End of Life |
26
31
  | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
27
32
  | [`v1`](https://github.com/DataDog/dd-trace-js/tree/v1.x) | ![npm v1](https://img.shields.io/npm/v/dd-trace/legacy-v1?color=white&label=%20&style=flat-square) | `>= v12` | NO | NO | **EOL** | 2021-07-13 | 2022-02-25 |
package/index.d.ts CHANGED
@@ -189,6 +189,7 @@ interface Plugins {
189
189
  "http": tracer.plugins.http;
190
190
  "http2": tracer.plugins.http2;
191
191
  "ioredis": tracer.plugins.ioredis;
192
+ "iovalkey": tracer.plugins.iovalkey;
192
193
  "jest": tracer.plugins.jest;
193
194
  "kafkajs": tracer.plugins.kafkajs
194
195
  "knex": tracer.plugins.knex;
@@ -208,7 +209,6 @@ interface Plugins {
208
209
  "openai": tracer.plugins.openai;
209
210
  "opensearch": tracer.plugins.opensearch;
210
211
  "oracledb": tracer.plugins.oracledb;
211
- "paperplane": tracer.plugins.paperplane;
212
212
  "playwright": tracer.plugins.playwright;
213
213
  "pg": tracer.plugins.pg;
214
214
  "pino": tracer.plugins.pino;
@@ -456,7 +456,7 @@ declare namespace tracer {
456
456
  rateLimit?: number,
457
457
 
458
458
  /**
459
- * Sampling rules to apply to priority samplin. Each rule is a JSON,
459
+ * Sampling rules to apply to priority sampling. Each rule is a JSON,
460
460
  * consisting of `service` and `name`, which are regexes to match against
461
461
  * a trace's `service` and `name`, and a corresponding `sampleRate`. If not
462
462
  * specified, will defer to global sampling rate for all spans.
@@ -713,7 +713,12 @@ declare namespace tracer {
713
713
  /** Whether to enable RASP.
714
714
  * @default false
715
715
  */
716
- enabled?: boolean
716
+ enabled?: boolean,
717
+
718
+ /** Whether to enable request body collection on RASP event
719
+ * @default false
720
+ */
721
+ bodyCollection?: boolean
717
722
  },
718
723
  /**
719
724
  * Configuration for stack trace reporting
@@ -733,6 +738,25 @@ declare namespace tracer {
733
738
  * @default 32
734
739
  */
735
740
  maxDepth?: number,
741
+ },
742
+ /**
743
+ * Configuration for extended headers collection tied to security events
744
+ */
745
+ extendedHeadersCollection?: {
746
+ /** Whether to enable extended headers collection
747
+ * @default false
748
+ */
749
+ enabled: boolean,
750
+
751
+ /** Whether to redact collected headers
752
+ * @default true
753
+ */
754
+ redaction: boolean,
755
+
756
+ /** Specifies the maximum number of headers collected.
757
+ * @default 50
758
+ */
759
+ maxHeaders: number,
736
760
  }
737
761
  }
738
762
 
@@ -800,7 +824,7 @@ declare namespace tracer {
800
824
  }
801
825
 
802
826
  /**
803
- * Configuration enabling LLM Observability. Enablement is superceded by the DD_LLMOBS_ENABLED environment variable.
827
+ * Configuration enabling LLM Observability. Enablement is superseded by the DD_LLMOBS_ENABLED environment variable.
804
828
  */
805
829
  llmobs?: llmobs.LLMObsEnableOptions
806
830
  }
@@ -855,7 +879,7 @@ declare namespace tracer {
855
879
  * @param value The amount to increment the stat by.
856
880
  * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags.
857
881
  */
858
- increment(stat: string, value?: number, tags?: Record<string, string|number>): void
882
+ increment(stat: string, value?: number, tags?: Record<string, string|number> | string[]): void
859
883
 
860
884
  /**
861
885
  * Decrements a metric by the specified value, optionally specifying tags.
@@ -863,7 +887,7 @@ declare namespace tracer {
863
887
  * @param value The amount to decrement the stat by.
864
888
  * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags.
865
889
  */
866
- decrement(stat: string, value?: number, tags?: Record<string, string|number>): void
890
+ decrement(stat: string, value?: number, tags?: Record<string, string|number> | string[]): void
867
891
 
868
892
  /**
869
893
  * Sets a distribution value, optionally specifying tags.
@@ -871,7 +895,7 @@ declare namespace tracer {
871
895
  * @param value The amount to increment the stat by.
872
896
  * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags.
873
897
  */
874
- distribution(stat: string, value?: number, tags?: Record<string, string|number>): void
898
+ distribution(stat: string, value?: number, tags?: Record<string, string|number> | string[]): void
875
899
 
876
900
  /**
877
901
  * Sets a gauge value, optionally specifying tags.
@@ -879,7 +903,7 @@ declare namespace tracer {
879
903
  * @param value The amount to increment the stat by.
880
904
  * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags.
881
905
  */
882
- gauge(stat: string, value?: number, tags?: Record<string, string|number>): void
906
+ gauge(stat: string, value?: number, tags?: Record<string, string|number> | string[]): void
883
907
 
884
908
  /**
885
909
  * Sets a histogram value, optionally specifying tags.
@@ -887,7 +911,7 @@ declare namespace tracer {
887
911
  * @param value The amount to increment the stat by.
888
912
  * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags.
889
913
  */
890
- histogram(stat: string, value?: number, tags?: Record<string, string|number>): void
914
+ histogram(stat: string, value?: number, tags?: Record<string, string|number> | string[]): void
891
915
 
892
916
  /**
893
917
  * Forces any unsent metrics to be sent
@@ -1361,7 +1385,7 @@ declare namespace tracer {
1361
1385
  * [child_process](https://nodejs.org/api/child_process.html) module.
1362
1386
  */
1363
1387
  interface child_process extends Instrumentation {}
1364
-
1388
+
1365
1389
  /**
1366
1390
  * This plugin automatically instruments the
1367
1391
  * [confluentinc-kafka-javascript](https://github.com/confluentinc/confluent-kafka-js) module.
@@ -1497,7 +1521,7 @@ declare namespace tracer {
1497
1521
 
1498
1522
  /**
1499
1523
  * Whether to include the source of the operation within the query as a tag
1500
- * on every span. This may contain sensitive information and sould only be
1524
+ * on every span. This may contain sensitive information and should only be
1501
1525
  * enabled if sensitive data is always sent as variables and not in the
1502
1526
  * query text.
1503
1527
  *
@@ -1666,6 +1690,53 @@ declare namespace tracer {
1666
1690
  splitByInstance?: boolean;
1667
1691
  }
1668
1692
 
1693
+ /**
1694
+ * This plugin automatically instruments the
1695
+ * [iovalkey](https://github.com/valkey-io/iovalkey) module.
1696
+ */
1697
+ interface iovalkey extends Instrumentation {
1698
+ /**
1699
+ * List of commands that should be instrumented. Commands must be in
1700
+ * lowercase for example 'xread'.
1701
+ *
1702
+ * @default /^.*$/
1703
+ */
1704
+ allowlist?: string | RegExp | ((command: string) => boolean) | (string | RegExp | ((command: string) => boolean))[];
1705
+
1706
+ /**
1707
+ * Deprecated in favor of `allowlist`.
1708
+ *
1709
+ * @deprecated
1710
+ * @hidden
1711
+ */
1712
+ whitelist?: string | RegExp | ((command: string) => boolean) | (string | RegExp | ((command: string) => boolean))[];
1713
+
1714
+ /**
1715
+ * List of commands that should not be instrumented. Takes precedence over
1716
+ * allowlist if a command matches an entry in both. Commands must be in
1717
+ * lowercase for example 'xread'.
1718
+ *
1719
+ * @default []
1720
+ */
1721
+ blocklist?: string | RegExp | ((command: string) => boolean) | (string | RegExp | ((command: string) => boolean))[];
1722
+
1723
+ /**
1724
+ * Deprecated in favor of `blocklist`.
1725
+ *
1726
+ * @deprecated
1727
+ * @hidden
1728
+ */
1729
+ blacklist?: string | RegExp | ((command: string) => boolean) | (string | RegExp | ((command: string) => boolean))[];
1730
+
1731
+ /**
1732
+ * Whether to use a different service name for each Redis instance based
1733
+ * on the configured connection name of the client.
1734
+ *
1735
+ * @default false
1736
+ */
1737
+ splitByInstance?: boolean;
1738
+ }
1739
+
1669
1740
  /**
1670
1741
  * This plugin automatically instruments the
1671
1742
  * [jest](https://github.com/jestjs/jest) module.
@@ -1828,12 +1899,6 @@ declare namespace tracer {
1828
1899
  service?: string | ((params: any) => string);
1829
1900
  }
1830
1901
 
1831
- /**
1832
- * This plugin automatically instruments the
1833
- * [paperplane](https://github.com/articulate/paperplane) module.
1834
- */
1835
- interface paperplane extends HttpServer {}
1836
-
1837
1902
  /**
1838
1903
  * This plugin automatically instruments the
1839
1904
  * [playwright](https://github.com/microsoft/playwright) module.
@@ -2437,7 +2502,7 @@ declare namespace tracer {
2437
2502
  annotate (span: tracer.Span | undefined, options: llmobs.AnnotationOptions): void
2438
2503
 
2439
2504
  /**
2440
- * Submits a custom evalutation metric for a given span ID and trace ID.
2505
+ * Submits a custom evaluation metric for a given span ID and trace ID.
2441
2506
  * @param spanContext The span context of the span to submit the evaluation metric for.
2442
2507
  * @param options An object containing the label, metric type, value, and tags of the evaluation metric.
2443
2508
  */
@@ -2451,7 +2516,7 @@ declare namespace tracer {
2451
2516
 
2452
2517
  interface EvaluationOptions {
2453
2518
  /**
2454
- * The name of the evalutation metric
2519
+ * The name of the evaluation metric
2455
2520
  */
2456
2521
  label: string,
2457
2522
 
@@ -2575,7 +2640,7 @@ declare namespace tracer {
2575
2640
  metadata?: { [key: string]: any },
2576
2641
 
2577
2642
  /**
2578
- * Object of JSON seraliazable key-value metrics (number) pairs, such as `{input,output,total}Tokens`
2643
+ * Object of JSON serializable key-value metrics (number) pairs, such as `{input,output,total}Tokens`
2579
2644
  */
2580
2645
  metrics?: { [key: string]: number },
2581
2646
 
@@ -2613,7 +2678,7 @@ declare namespace tracer {
2613
2678
 
2614
2679
  /**
2615
2680
  * The name of the ML application that the agent is orchestrating.
2616
- * If not provided, the default value will be set to mlApp provided during initalization, or `DD_LLMOBS_ML_APP`.
2681
+ * If not provided, the default value will be set to mlApp provided during initialization, or `DD_LLMOBS_ML_APP`.
2617
2682
  */
2618
2683
  mlApp?: string,
2619
2684
 
@@ -2653,7 +2718,7 @@ declare namespace tracer {
2653
2718
  mlApp?: string,
2654
2719
 
2655
2720
  /**
2656
- * Set to `true` to disbale sending data that requires a Datadog Agent.
2721
+ * Set to `true` to disable sending data that requires a Datadog Agent.
2657
2722
  */
2658
2723
  agentlessEnabled?: boolean,
2659
2724
  }
package/initialize.mjs CHANGED
@@ -17,7 +17,6 @@ import { fileURLToPath } from 'node:url'
17
17
  import {
18
18
  load as origLoad,
19
19
  resolve as origResolve,
20
- getFormat as origGetFormat,
21
20
  getSource as origGetSource
22
21
  } from 'import-in-the-middle/hook.mjs'
23
22
 
@@ -26,7 +25,7 @@ function insertInit (result) {
26
25
  if (!hasInsertedInit) {
27
26
  hasInsertedInit = true
28
27
  result.source = `
29
- import '${fileURLToPath(new URL('./init.js', import.meta.url))}';
28
+ import '${fileURLToPath(new URL('init.js', import.meta.url))}';
30
29
  ${result.source}`
31
30
  }
32
31
  return result
@@ -45,8 +44,6 @@ export async function load (url, context, nextLoad) {
45
44
 
46
45
  export const resolve = brokenLoaders ? undefined : origResolve
47
46
 
48
- export const getFormat = origGetFormat
49
-
50
47
  export async function getSource (...args) {
51
48
  return insertInit(await origGetSource(...args))
52
49
  }
@@ -60,3 +57,5 @@ if (isMainThread) {
60
57
  })
61
58
  }
62
59
  }
60
+
61
+ export { getFormat } from 'import-in-the-middle/hook.mjs'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dd-trace",
3
- "version": "5.52.0",
3
+ "version": "5.54.0",
4
4
  "description": "Datadog APM tracing client for JavaScript",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -9,6 +9,7 @@
9
9
  "preinstall": "node scripts/preinstall.js",
10
10
  "bench": "node benchmark/index.js",
11
11
  "bench:e2e:ci-visibility": "node benchmark/e2e-ci/benchmark-run.js",
12
+ "dependencies:dedupe": "yarn-deduplicate yarn.lock",
12
13
  "type:doc": "cd docs && yarn && yarn build",
13
14
  "type:test": "cd docs && yarn && yarn test",
14
15
  "lint": "node scripts/check_licenses.js && eslint . --max-warnings 0 && yarn audit",
@@ -83,75 +84,76 @@
83
84
  "node": ">=18"
84
85
  },
85
86
  "dependencies": {
86
- "@datadog/libdatadog": "^0.5.1",
87
+ "@datadog/libdatadog": "^0.6.0",
87
88
  "@datadog/native-appsec": "8.5.2",
88
89
  "@datadog/native-iast-taint-tracking": "4.0.0",
89
90
  "@datadog/native-metrics": "^3.1.1",
90
91
  "@datadog/pprof": "5.8.0",
91
- "@datadog/sketches-js": "^2.1.0",
92
+ "@datadog/sketches-js": "^2.1.1",
92
93
  "@datadog/wasm-js-rewriter": "4.0.1",
93
94
  "@isaacs/ttlcache": "^1.4.1",
94
95
  "@opentelemetry/api": ">=1.0.0 <1.9.0",
95
96
  "@opentelemetry/core": "^1.14.0",
96
97
  "crypto-randomuuid": "^1.0.0",
97
- "dc-polyfill": "0.1.8",
98
+ "dc-polyfill": "0.1.9",
98
99
  "ignore": "^5.2.4",
99
- "import-in-the-middle": "1.13.1",
100
- "istanbul-lib-coverage": "3.2.0",
100
+ "import-in-the-middle": "1.14.0",
101
+ "istanbul-lib-coverage": "3.2.2",
101
102
  "jest-docblock": "^29.7.0",
102
103
  "koalas": "^1.0.2",
103
104
  "limiter": "1.1.5",
104
105
  "lodash.sortby": "^4.7.0",
105
- "lru-cache": "^7.14.0",
106
- "module-details-from-path": "^1.0.3",
106
+ "lru-cache": "^7.18.3",
107
+ "module-details-from-path": "^1.0.4",
107
108
  "mutexify": "^1.4.0",
108
109
  "opentracing": ">=0.12.1",
109
110
  "path-to-regexp": "^0.1.12",
110
111
  "pprof-format": "^2.1.0",
111
- "protobufjs": "^7.2.5",
112
+ "protobufjs": "^7.5.3",
112
113
  "retry": "^0.13.1",
113
- "rfdc": "^1.3.1",
114
+ "rfdc": "^1.4.1",
114
115
  "semifies": "^1.0.0",
115
- "shell-quote": "^1.8.1",
116
+ "shell-quote": "^1.8.2",
116
117
  "source-map": "^0.7.4",
117
118
  "tlhunter-sorted-set": "^0.1.0",
118
119
  "ttl-set": "^1.0.0"
119
120
  },
120
121
  "devDependencies": {
121
- "@babel/helpers": "^7.26.10",
122
- "@eslint/eslintrc": "^3.2.0",
123
- "@eslint/js": "^9.19.0",
124
- "@msgpack/msgpack": "^3.0.0-beta3",
125
- "@stylistic/eslint-plugin-js": "^3.0.1",
126
- "@types/node": "^16.0.0",
127
- "axios": "^1.8.2",
122
+ "@babel/helpers": "^7.27.3",
123
+ "@eslint/eslintrc": "^3.3.1",
124
+ "@eslint/js": "^9.27.0",
125
+ "@msgpack/msgpack": "^3.1.2",
126
+ "@stylistic/eslint-plugin": "^4.4.0",
127
+ "@types/node": "^18.19.106",
128
+ "axios": "^1.9.0",
128
129
  "benchmark": "^2.1.4",
129
- "body-parser": "^1.20.3",
130
- "chai": "^4.3.7",
131
- "eslint": "^9.19.0",
130
+ "body-parser": "^2.2.0",
131
+ "chai": "^4.5.0",
132
+ "eslint": "^9.27.0",
132
133
  "eslint-config-standard": "^17.1.0",
133
134
  "eslint-plugin-import": "^2.31.0",
134
135
  "eslint-plugin-mocha": "^10.5.0",
135
- "eslint-plugin-n": "^17.15.1",
136
+ "eslint-plugin-n": "^17.18.0",
136
137
  "eslint-plugin-promise": "^7.2.1",
137
138
  "eslint-plugin-unicorn": "^57.0.0",
138
139
  "express": "^4.21.2",
139
140
  "get-port": "^5.1.1",
140
- "glob": "^7.1.6",
141
- "globals": "^15.10.0",
141
+ "glob": "^7.2.3",
142
+ "globals": "^15.15.0",
142
143
  "graphql": "0.13.2",
143
- "jszip": "^3.5.0",
144
- "mocha": "^10",
145
- "multer": "^1.4.5-lts.1",
146
- "nock": "^11.3.3",
144
+ "jszip": "^3.10.1",
145
+ "mocha": "^10.8.2",
146
+ "multer": "^2.0.0",
147
+ "nock": "^11.9.1",
147
148
  "nyc": "^15.1.0",
148
149
  "proxyquire": "^1.8.0",
149
- "rimraf": "^3.0.0",
150
- "semver": "^7.5.4",
151
- "sinon": "^16.1.3",
150
+ "rimraf": "^3.0.2",
151
+ "semver": "^7.7.2",
152
+ "sinon": "^18.0.1",
152
153
  "sinon-chai": "^3.7.0",
153
- "tap": "^16.3.7",
154
- "tiktoken": "^1.0.15",
155
- "yaml": "^2.5.0"
154
+ "tap": "^16.3.10",
155
+ "tiktoken": "^1.0.21",
156
+ "yaml": "^2.8.0",
157
+ "yarn-deduplicate": "^6.0.2"
156
158
  }
157
159
  }
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- module.exports = (object, path) => {
3
+ module.exports = function get (object, path) {
4
4
  const pathArr = path.split('.')
5
5
  let val = object
6
6
  for (const p of pathArr) {
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- module.exports = (object, path) => {
3
+ module.exports = function has (object, path) {
4
4
  const pathArr = path.split('.')
5
5
  let property = object
6
6
  for (const n of pathArr) {
@@ -1,16 +1,14 @@
1
1
  'use strict'
2
2
 
3
- module.exports = str => {
3
+ module.exports = function kebabcase (str) {
4
4
  if (typeof str !== 'string') {
5
5
  throw new TypeError('Expected a string')
6
6
  }
7
7
 
8
8
  return str
9
9
  .trim()
10
- .replace(/([a-z])([A-Z])/g, '$1-$2')
11
- .replace(/\s+/g, '-')
12
- .replace(/^-+|-+$/g, '')
13
- .replace(/_/g, '-')
14
- .replace(/-{2,}/g, '-')
10
+ .replace(/([a-z])([A-Z])/g, '$1-$2') // Convert camelCase to kebab-case
11
+ .replace(/[\s_]+/g, '-') // Replace spaces and underscores with a single dash
12
+ .replace(/^-+|-+$/g, '') // Trim leading and trailing dashes
15
13
  .toLowerCase()
16
14
  }
@@ -11,7 +11,7 @@ const digitRegex = /^\d+$/
11
11
  * @param {Object} tags - Key/value pairs of tags
12
12
  * @returns Object - Parsed tags
13
13
  */
14
- module.exports = tags => {
14
+ module.exports = function parseTags (tags) {
15
15
  const parsedTags = {}
16
16
  for (const [tag, value] of Object.entries(tags)) {
17
17
  const keys = tag.split('.')
@@ -1,9 +1,9 @@
1
1
  'use strict'
2
2
 
3
- module.exports = (object, props) => {
3
+ module.exports = function pick (object, props) {
4
4
  const result = {}
5
5
  props.forEach(prop => {
6
- if (prop in object) {
6
+ if (Object.hasOwn(object, prop)) {
7
7
  result[prop] = object[prop]
8
8
  }
9
9
  })
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- module.exports = (object, path, value) => {
3
+ module.exports = function set (object, path, value) {
4
4
  const pathArr = path.split('.')
5
5
  let property = object
6
6
  let i
@@ -1,5 +1,5 @@
1
1
  'use strict'
2
2
 
3
- module.exports = function (arr) {
3
+ module.exports = function uniq (arr) {
4
4
  return [...new Set(arr)]
5
5
  }
@@ -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
 
@@ -15,9 +14,9 @@ addHook({ name: 'amqp10', file: 'lib/sender_link.js', versions: ['>=3'] }, Sende
15
14
  if (!startCh.hasSubscribers) {
16
15
  return send.apply(this, arguments)
17
16
  }
18
- const asyncResource = new AsyncResource('bound-anonymous-fn')
19
- return asyncResource.runInAsyncScope(() => {
20
- startCh.publish({ link: this })
17
+ const ctx = { link: this }
18
+
19
+ return startCh.runStores(ctx, () => {
21
20
  try {
22
21
  const promise = send.apply(this, arguments)
23
22
 
@@ -26,12 +25,13 @@ addHook({ name: 'amqp10', file: 'lib/sender_link.js', versions: ['>=3'] }, Sende
26
25
  return promise
27
26
  }
28
27
 
29
- promise.then(asyncResource.bind(() => finish(finishCh, errorCh)),
30
- asyncResource.bind(e => finish(finishCh, errorCh, e)))
31
-
28
+ promise.then(
29
+ () => finish(finishCh, errorCh, null, ctx),
30
+ e => finish(finishCh, errorCh, e, ctx)
31
+ )
32
32
  return promise
33
33
  } catch (err) {
34
- finish(finishCh, errorCh, err)
34
+ finish(finishCh, errorCh, err, ctx)
35
35
  throw err
36
36
  }
37
37
  })
@@ -47,25 +47,27 @@ addHook({ name: 'amqp10', file: 'lib/receiver_link.js', versions: ['>=3'] }, Rec
47
47
  if (!transferFrame || transferFrame.aborted || transferFrame.more) {
48
48
  return messageReceived.apply(this, arguments)
49
49
  }
50
- const asyncResource = new AsyncResource('bound-anonymous-fn')
51
- return asyncResource.runInAsyncScope(() => {
52
- startCh.publish({ link: this })
50
+ const ctx = { link: this }
51
+
52
+ return startCh.runStores(ctx, () => {
53
53
  try {
54
54
  return messageReceived.apply(this, arguments)
55
55
  } catch (err) {
56
- errorCh.publish(err)
56
+ ctx.error = err
57
+ errorCh.publish(ctx)
57
58
  throw err
58
59
  } finally {
59
- finishCh.publish()
60
+ finishCh.publish(ctx)
60
61
  }
61
62
  })
62
63
  })
63
64
  return ReceiverLink
64
65
  })
65
66
 
66
- function finish (finishCh, errorCh, error) {
67
+ function finish (finishCh, errorCh, error, ctx) {
67
68
  if (error) {
68
- errorCh.publish(error)
69
+ ctx.error = error
70
+ errorCh.publish(ctx)
69
71
  }
70
- finishCh.publish()
72
+ finishCh.publish(ctx)
71
73
  }