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
@@ -14,9 +14,8 @@ class ApolloGatewayValidatePlugin extends ApolloBasePlugin {
14
14
 
15
15
  if (!span) return
16
16
 
17
- if (result instanceof Array &&
18
- result[result.length - 1] && result[result.length - 1].stack && result[result.length - 1].message) {
19
- span.setTag('error', result[result.length - 1])
17
+ if (Array.isArray(result) && result.at(-1)?.stack && result.at(-1).message) {
18
+ span.setTag('error', result.at(-1))
20
19
  }
21
20
  span.finish()
22
21
  }
@@ -226,9 +226,10 @@ function normalizeConfig (config, serviceIdentifier) {
226
226
  })
227
227
  }
228
228
 
229
+ const noop = () => {}
230
+
229
231
  function getHooks (config) {
230
- const noop = () => {}
231
- const request = (config.hooks && config.hooks.request) || noop
232
+ const request = config.hooks?.request || noop
232
233
 
233
234
  return { request }
234
235
  }
@@ -3,14 +3,14 @@
3
3
  const BaseAwsSdkPlugin = require('../../base')
4
4
  const { parseModelId, extractRequestParams, extractTextAndResponseReason } = require('./utils')
5
5
 
6
- const enabledOperations = ['invokeModel']
6
+ const enabledOperations = new Set(['invokeModel'])
7
7
 
8
8
  class BedrockRuntime extends BaseAwsSdkPlugin {
9
9
  static get id () { return 'bedrockruntime' }
10
10
 
11
11
  isEnabled (request) {
12
12
  const operation = request.operation
13
- if (!enabledOperations.includes(operation)) {
13
+ if (!enabledOperations.has(operation)) {
14
14
  return false
15
15
  }
16
16
 
@@ -47,27 +47,27 @@ class Generation {
47
47
  class RequestParams {
48
48
  constructor ({
49
49
  prompt = '',
50
- temperature = undefined,
51
- topP = undefined,
52
- topK = undefined,
53
- maxTokens = undefined,
50
+ temperature,
51
+ topP,
52
+ topK,
53
+ maxTokens,
54
54
  stopSequences = [],
55
55
  inputType = '',
56
56
  truncate = '',
57
57
  stream = '',
58
- n = undefined
58
+ n
59
59
  } = {}) {
60
60
  // stringify prompt as it could be a single prompt as well as a list of message objects
61
61
  this.prompt = typeof prompt === 'string' ? prompt : JSON.stringify(prompt) || ''
62
- this.temperature = temperature !== undefined ? temperature : undefined
63
- this.topP = topP !== undefined ? topP : undefined
64
- this.topK = topK !== undefined ? topK : undefined
65
- this.maxTokens = maxTokens !== undefined ? maxTokens : undefined
62
+ this.temperature = temperature === undefined ? undefined : temperature
63
+ this.topP = topP === undefined ? undefined : topP
64
+ this.topK = topK === undefined ? undefined : topK
65
+ this.maxTokens = maxTokens === undefined ? undefined : maxTokens
66
66
  this.stopSequences = stopSequences || []
67
67
  this.inputType = inputType || ''
68
68
  this.truncate = truncate || ''
69
69
  this.stream = stream || ''
70
- this.n = n !== undefined ? n : undefined
70
+ this.n = n === undefined ? undefined : n
71
71
  }
72
72
  }
73
73
 
@@ -92,7 +92,7 @@ function parseModelId (modelId) {
92
92
  if (modelMeta.length < 2) {
93
93
  return { modelProvider: 'custom', modelName: modelMeta[0] }
94
94
  }
95
- return { modelProvider: modelMeta[modelMeta.length - 2], modelName: modelMeta[modelMeta.length - 1] }
95
+ return { modelProvider: modelMeta.at(-2), modelName: modelMeta.at(-1) }
96
96
  }
97
97
 
98
98
  for (const identifier of MODEL_TYPE_IDENTIFIERS) {
@@ -105,7 +105,7 @@ function parseModelId (modelId) {
105
105
  if (modelMeta.length < 2) {
106
106
  return { modelProvider: 'custom', modelName: modelId }
107
107
  }
108
- return { modelProvider: modelMeta[modelMeta.length - 2], modelName: modelMeta[modelMeta.length - 1] }
108
+ return { modelProvider: modelMeta.at(-2), modelName: modelMeta.at(-1) }
109
109
  }
110
110
  return { modelProvider: 'custom', modelName: modelId }
111
111
  }
@@ -296,7 +296,7 @@ function extractTextAndResponseReason (response, provider, modelName) {
296
296
  return new Generation()
297
297
  }
298
298
  }
299
- } catch (error) {
299
+ } catch {
300
300
  log.warn('Unable to extract text/finishReason from response body. Defaulting to empty text/finishReason.')
301
301
  return new Generation()
302
302
  }
@@ -25,18 +25,17 @@ class DynamoDb extends BaseAwsSdkPlugin {
25
25
  // batch operations have different format, collect table name for batch
26
26
  // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#batchGetItem-property`
27
27
  // dynamoDB batch TableName
28
- if (params.RequestItems !== null) {
29
- if (typeof params.RequestItems === 'object') {
30
- if (Object.keys(params.RequestItems).length === 1) {
31
- const tableName = Object.keys(params.RequestItems)[0]
32
-
33
- // also add span type to match serverless convention
34
- Object.assign(tags, {
35
- 'resource.name': `${operation} ${tableName}`,
36
- 'aws.dynamodb.table_name': tableName,
37
- tablename: tableName
38
- })
39
- }
28
+ if (params.RequestItems !== null && typeof params.RequestItems === 'object') {
29
+ const requestItemsKeys = Object.keys(params.RequestItems)
30
+ if (requestItemsKeys.length === 1) {
31
+ const tableName = requestItemsKeys[0]
32
+
33
+ // also add span type to match serverless convention
34
+ Object.assign(tags, {
35
+ 'resource.name': `${operation} ${tableName}`,
36
+ 'aws.dynamodb.table_name': tableName,
37
+ tablename: tableName
38
+ })
40
39
  }
41
40
  }
42
41
 
@@ -81,10 +80,12 @@ class DynamoDb extends BaseAwsSdkPlugin {
81
80
  const hash =
82
81
  DynamoDb.calculatePutItemHash(item.Put.TableName, item.Put.Item, this.getPrimaryKeyConfig())
83
82
  if (hash) hashes.push(hash)
84
- } else if (item.Update || item.Delete) {
85
- const operation = item.Update ? item.Update : item.Delete
86
- const hash = DynamoDb.calculateHashWithKnownKeys(operation.TableName, operation.Key)
87
- if (hash) hashes.push(hash)
83
+ } else {
84
+ const operation = item.Update || item.Delete
85
+ if (operation) {
86
+ const hash = DynamoDb.calculateHashWithKnownKeys(operation.TableName, operation.Key)
87
+ if (hash) hashes.push(hash)
88
+ }
88
89
  }
89
90
  }
90
91
  break
@@ -136,7 +137,7 @@ class DynamoDb extends BaseAwsSdkPlugin {
136
137
  const config = {}
137
138
  for (const [tableName, primaryKeys] of Object.entries(parsedConfig)) {
138
139
  if (Array.isArray(primaryKeys) && primaryKeys.length > 0 && primaryKeys.length <= 2) {
139
- config[tableName] = new Set(primaryKeys)
140
+ config[tableName] = primaryKeys
140
141
  } else {
141
142
  log.warn(`Invalid primary key configuration for table: ${tableName}.` +
142
143
  'Please fix the DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS env var.')
@@ -154,7 +155,7 @@ class DynamoDb extends BaseAwsSdkPlugin {
154
155
  * Calculates a hash for DynamoDB PutItem operations using table's configured primary keys.
155
156
  * @param {string} tableName - Name of the DynamoDB table.
156
157
  * @param {Object} item - Complete PutItem item parameter to be put.
157
- * @param {Object.<string, Set<string>>} primaryKeyConfig - Mapping of table names to Sets of primary key names
158
+ * @param {Object.<string, Array<string>>} primaryKeyConfig - Mapping of table names to an Array of primary key names
158
159
  * loaded from DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS.
159
160
  * @returns {string|undefined} Hash combining table name and primary key/value pairs, or undefined if unable.
160
161
  */
@@ -163,19 +164,11 @@ class DynamoDb extends BaseAwsSdkPlugin {
163
164
  log.debug('Unable to calculate hash because missing required parameters')
164
165
  return
165
166
  }
166
- if (!primaryKeyConfig) {
167
- return
168
- }
169
- const primaryKeySet = primaryKeyConfig[tableName]
170
- if (!primaryKeySet || !(primaryKeySet instanceof Set) || primaryKeySet.size === 0 || primaryKeySet.size > 2) {
171
- log.warn(
172
- `span pointers: failed to extract PutItem span pointer: table ${tableName} ` +
173
- 'not found in primary key names or the DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS env var was invalid.' +
174
- 'Please update the env var.'
175
- )
167
+ const keyNames = primaryKeyConfig?.[tableName]
168
+ if (!keyNames) {
176
169
  return
177
170
  }
178
- const keyValues = extractPrimaryKeys(primaryKeySet, item)
171
+ const keyValues = extractPrimaryKeys(keyNames, item)
179
172
  if (keyValues) {
180
173
  return generatePointerHash([tableName, ...keyValues])
181
174
  }
@@ -196,8 +189,8 @@ class DynamoDb extends BaseAwsSdkPlugin {
196
189
  log.debug('Unable to calculate hash because missing parameters')
197
190
  return
198
191
  }
199
- const keyNamesSet = new Set(Object.keys(keysObject))
200
- const keyValues = extractPrimaryKeys(keyNamesSet, keysObject)
192
+ const keyNames = Object.keys(keysObject)
193
+ const keyValues = extractPrimaryKeys(keyNames, keysObject)
201
194
  if (keyValues) {
202
195
  return generatePointerHash([tableName, ...keyValues])
203
196
  }
@@ -7,8 +7,8 @@ class EventBridge extends BaseAwsSdkPlugin {
7
7
  static get isPayloadReporter () { return true }
8
8
 
9
9
  generateTags (params, operation, response) {
10
- if (!params || !params.source) return {}
11
- const rulename = params.Name ? params.Name : ''
10
+ if (!params?.source) return {}
11
+ const rulename = params.Name ?? ''
12
12
  return {
13
13
  'resource.name': operation ? `${operation} ${params.source}` : params.source,
14
14
  'aws.eventbridge.source': `${params.source}`,
@@ -128,12 +128,12 @@ class Kinesis extends BaseAwsSdkPlugin {
128
128
  _tryParse (body) {
129
129
  try {
130
130
  return JSON.parse(body)
131
- } catch (e) {
131
+ } catch {
132
132
  log.info('Not JSON string. Trying Base64 encoded JSON string')
133
133
  }
134
134
  try {
135
135
  return JSON.parse(Buffer.from(body, 'base64').toString('ascii'), true)
136
- } catch (e) {
136
+ } catch {
137
137
  return null
138
138
  }
139
139
  }
@@ -145,17 +145,17 @@ class Kinesis extends BaseAwsSdkPlugin {
145
145
  let stream
146
146
  switch (operation) {
147
147
  case 'putRecord':
148
- stream = params.StreamArn ? params.StreamArn : (params.StreamName ? params.StreamName : '')
148
+ stream = params.StreamArn ?? params.StreamName ?? ''
149
149
  this.injectToMessage(span, params, stream, true)
150
150
  break
151
151
  case 'putRecords':
152
- stream = params.StreamArn ? params.StreamArn : (params.StreamName ? params.StreamName : '')
152
+ stream = params.StreamArn ?? params.StreamName ?? ''
153
153
  for (let i = 0; i < params.Records.length; i++) {
154
154
  this.injectToMessage(
155
155
  span,
156
156
  params.Records[i],
157
157
  stream,
158
- i === 0 || (this.config.batchPropagationEnabled)
158
+ i === 0 || this.config.batchPropagationEnabled
159
159
  )
160
160
  }
161
161
  }
@@ -192,7 +192,7 @@ class Kinesis extends BaseAwsSdkPlugin {
192
192
  const byteSize = finalData.length
193
193
  // Kinesis max payload size is 1MB
194
194
  // So we must ensure adding DD context won't go over that (512b is an estimate)
195
- if (byteSize >= 1048576) {
195
+ if (byteSize >= 1_048_576) {
196
196
  log.info('Payload size too large to pass context')
197
197
  return
198
198
  }
@@ -33,7 +33,7 @@ class Lambda extends BaseAwsSdkPlugin {
33
33
  // Check to see if there's already a config on the request
34
34
  let clientContext = {}
35
35
  if (request.params.ClientContext) {
36
- const clientContextJson = Buffer.from(request.params.ClientContext, 'base64').toString('utf-8')
36
+ const clientContextJson = Buffer.from(request.params.ClientContext, 'base64').toString('utf8')
37
37
  clientContext = JSON.parse(clientContextJson)
38
38
  }
39
39
  if (!clientContext.custom) {
@@ -19,7 +19,7 @@ class Sns extends BaseAwsSdkPlugin {
19
19
  const arnParts = TopicArn.split(':')
20
20
 
21
21
  // Get the topic name from the last part of the ARN
22
- const topicName = arnParts[arnParts.length - 1]
22
+ const topicName = arnParts.at(-1)
23
23
 
24
24
  return {
25
25
  'resource.name': `${operation} ${params.TopicArn || response.data.TopicArn}`,
@@ -20,7 +20,6 @@ class Sqs extends BaseAwsSdkPlugin {
20
20
  this.addSub('apm:aws:response:start:sqs', obj => {
21
21
  const { request, response } = obj
22
22
  const store = storage('legacy').getStore()
23
- const plugin = this
24
23
  const contextExtraction = this.responseExtract(request.params, request.operation, response)
25
24
  let span
26
25
  let parsedMessageAttributes = null
@@ -35,7 +34,7 @@ class Sqs extends BaseAwsSdkPlugin {
35
34
  )
36
35
  }
37
36
  parsedMessageAttributes = contextExtraction.parsedAttributes
38
- span = plugin.tracer.startSpan('aws.response', options)
37
+ span = this.tracer.startSpan('aws.response', options)
39
38
  this.enter(span, store)
40
39
  }
41
40
  // extract DSM context after as we might not have a parent-child but may have a DSM context
@@ -96,7 +95,7 @@ class Sqs extends BaseAwsSdkPlugin {
96
95
  // 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue';
97
96
  let queueName = params.QueueName
98
97
  if (params.QueueUrl) {
99
- queueName = params.QueueUrl.split('/')[params.QueueUrl.split('/').length - 1]
98
+ queueName = params.QueueUrl.split('/').at(-1)
100
99
  }
101
100
 
102
101
  Object.assign(tags, {
@@ -134,7 +133,7 @@ class Sqs extends BaseAwsSdkPlugin {
134
133
  if (body.Type === 'Notification') {
135
134
  message = body
136
135
  }
137
- } catch (e) {
136
+ } catch {
138
137
  // SQS to SQS
139
138
  }
140
139
  }
@@ -186,7 +185,7 @@ class Sqs extends BaseAwsSdkPlugin {
186
185
  if (body.Type === 'Notification') {
187
186
  message = body
188
187
  }
189
- } catch (e) {
188
+ } catch {
190
189
  // SQS to SQS
191
190
  }
192
191
  }
@@ -54,7 +54,7 @@ class Stepfunctions extends BaseAwsSdkPlugin {
54
54
  const newInput = JSON.stringify(inputObj)
55
55
  request.params.input = newInput
56
56
  }
57
- } catch (e) {
57
+ } catch {
58
58
  log.info('Unable to treat input as JSON')
59
59
  }
60
60
  }
@@ -13,7 +13,7 @@ function generatePointerHash (components) {
13
13
  // If passing S3's ETag as a component, make sure any quotes have already been removed!
14
14
  const dataToHash = components.join('|')
15
15
  const hash = crypto.createHash('sha256').update(dataToHash).digest('hex')
16
- return hash.substring(0, 32)
16
+ return hash.slice(0, 32)
17
17
  }
18
18
 
19
19
  /**
@@ -54,18 +54,17 @@ function encodeValue (valueObject) {
54
54
  * Extracts and encodes primary key values from a DynamoDB item.
55
55
  * Handles tables with single-key and two-key scenarios.
56
56
  *
57
- * @param {Set<string>} keySet - Set of primary key names.
57
+ * @param {Array<string>} keyNames - Set of primary key names.
58
58
  * @param {Object} keyValuePairs - Object containing key/value pairs.
59
59
  * @returns {Array|undefined} [key1Name, key1Value, key2Name, key2Value], or undefined if invalid input.
60
60
  * key2 entries are empty strings in the single-key case.
61
61
  * @example
62
- * extractPrimaryKeys(new Set(['userId']), {userId: {S: "user123"}})
62
+ * extractPrimaryKeys(['userId'], {userId: {S: "user123"}})
63
63
  * // Returns ["userId", Buffer("user123"), "", ""]
64
- * extractPrimaryKeys(new Set(['userId', 'timestamp']), {userId: {S: "user123"}, timestamp: {N: "1234}})
64
+ * extractPrimaryKeys(['userId', 'timestamp'], {userId: {S: "user123"}, timestamp: {N: "1234}})
65
65
  * // Returns ["timestamp", Buffer.from("1234"), "userId", Buffer.from("user123")]
66
66
  */
67
- const extractPrimaryKeys = (keySet, keyValuePairs) => {
68
- const keyNames = Array.from(keySet)
67
+ const extractPrimaryKeys = (keyNames, keyValuePairs) => {
69
68
  if (keyNames.length === 0) {
70
69
  return
71
70
  }
@@ -37,7 +37,7 @@ function combine (queries) {
37
37
  function trim (str, size) {
38
38
  if (!str || str.length <= size) return str
39
39
 
40
- return `${str.substr(0, size - 3)}...`
40
+ return `${str.slice(0, size - 3)}...`
41
41
  }
42
42
 
43
43
  module.exports = CassandraDriverPlugin
@@ -17,7 +17,7 @@ function truncateCommand (cmdFields) {
17
17
 
18
18
  const argLen = cmdFields[i].length
19
19
  if (size < MAX_ARG_SIZE && size + argLen > MAX_ARG_SIZE) {
20
- cmdFields[i] = cmdFields[i].substring(0, 2)
20
+ cmdFields[i] = cmdFields[i].slice(0, 2)
21
21
  truncated = true
22
22
  }
23
23
 
@@ -66,12 +66,12 @@ class ChildProcessPlugin extends TracingPlugin {
66
66
 
67
67
  if (result !== undefined) {
68
68
  exitCode = result?.status || 0
69
- } else if (error !== undefined) {
70
- exitCode = error?.status || error?.code || 0
71
- } else {
69
+ } else if (error === undefined) {
72
70
  // TracingChannels call start, end synchronously. Later when the promise is resolved then asyncStart asyncEnd.
73
71
  // Therefore in the case of calling end with neither result nor error means that they will come in the asyncEnd.
74
72
  return
73
+ } else {
74
+ exitCode = error?.status || error?.code || 0
75
75
  }
76
76
 
77
77
  this.activeSpan?.setTag('cmd.exit_code', `${exitCode}`)
@@ -2,14 +2,14 @@
2
2
 
3
3
  const shellParser = require('shell-quote/parse')
4
4
 
5
- const ALLOWED_ENV_VARIABLES = ['LD_PRELOAD', 'LD_LIBRARY_PATH', 'PATH']
6
- const PROCESS_DENYLIST = ['md5']
5
+ const ALLOWED_ENV_VARIABLES = new Set(['LD_PRELOAD', 'LD_LIBRARY_PATH', 'PATH'])
6
+ const PROCESS_DENYLIST = new Set(['md5'])
7
7
 
8
8
  const VARNAMES_REGEX = /\$([\w\d_]*)(?:[^\w\d_]|$)/gmi
9
- // eslint-disable-next-line @stylistic/js/max-len
9
+ // eslint-disable-next-line @stylistic/max-len
10
10
  const PARAM_PATTERN = '^-{0,2}(?:p(?:ass(?:w(?:or)?d)?)?|address|api[-_]?key|e?mail|secret(?:[-_]?key)?|a(?:ccess|uth)[-_]?token|mysql_pwd|credentials|(?:stripe)?token)$'
11
11
  const regexParam = new RegExp(PARAM_PATTERN, 'i')
12
- const ENV_PATTERN = '^(\\w+=\\w+;)*\\w+=\\w+;?$'
12
+ const ENV_PATTERN = String.raw`^(\w+=\w+;)*\w+=\w+;?$`
13
13
  const envVarRegex = new RegExp(ENV_PATTERN)
14
14
  const REDACTED = '?'
15
15
 
@@ -71,25 +71,39 @@ function scrubChildProcessCmd (expression) {
71
71
  } else if (token.comment) {
72
72
  result.push(`#${token.comment}`)
73
73
  }
74
- } else if (!foundBinary) {
74
+ } else if (foundBinary) {
75
+ const paramKeyValue = token.split('=')
76
+ const paramKey = paramKeyValue[0]
77
+
78
+ if (regexParam.test(paramKey)) {
79
+ if (paramKeyValue.length === 1) {
80
+ expressionTokens[index + 1] = REDACTED
81
+ result.push(token)
82
+ } else {
83
+ result.push(`${paramKey}=${REDACTED}`)
84
+ }
85
+ } else {
86
+ result.push(token)
87
+ }
88
+ } else {
75
89
  if (envVarRegex.test(token)) {
76
90
  const envSplit = token.split('=')
77
91
 
78
- if (!ALLOWED_ENV_VARIABLES.includes(envSplit[0])) {
92
+ if (ALLOWED_ENV_VARIABLES.has(envSplit[0])) {
93
+ result.push(token)
94
+ } else {
79
95
  envSplit[1] = REDACTED
80
96
 
81
97
  const newToken = envSplit.join('=')
82
98
  expressionTokens[index] = newToken
83
99
 
84
100
  result.push(newToken)
85
- } else {
86
- result.push(token)
87
101
  }
88
102
  } else {
89
103
  foundBinary = true
90
104
  result.push(token)
91
105
 
92
- if (PROCESS_DENYLIST.includes(token)) {
106
+ if (PROCESS_DENYLIST.has(token)) {
93
107
  for (index++; index < expressionTokens.length; index++) {
94
108
  const token = expressionTokens[index]
95
109
 
@@ -103,20 +117,6 @@ function scrubChildProcessCmd (expression) {
103
117
  break
104
118
  }
105
119
  }
106
- } else {
107
- const paramKeyValue = token.split('=')
108
- const paramKey = paramKeyValue[0]
109
-
110
- if (regexParam.test(paramKey)) {
111
- if (paramKeyValue.length === 1) {
112
- expressionTokens[index + 1] = REDACTED
113
- result.push(token)
114
- } else {
115
- result.push(`${paramKey}=${REDACTED}`)
116
- }
117
- } else {
118
- result.push(token)
119
- }
120
120
  }
121
121
  }
122
122
  })