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
@@ -44,27 +44,24 @@ class AbortError extends Error {
44
44
  }
45
45
  }
46
46
 
47
+ const types = new Set(['query', 'mutation', 'subscription'])
48
+
47
49
  function getOperation (document, operationName) {
48
50
  if (!document || !Array.isArray(document.definitions)) {
49
51
  return
50
52
  }
51
53
 
52
- const definitions = document.definitions.filter(def => def)
53
- const types = ['query', 'mutation', 'subscription']
54
-
55
- if (operationName) {
56
- return definitions
57
- .filter(def => types.indexOf(def.operation) !== -1)
58
- .find(def => operationName === (def.name && def.name.value))
59
- } else {
60
- return definitions.find(def => types.indexOf(def.operation) !== -1)
54
+ for (const definition of document.definitions) {
55
+ if (definition && types.has(definition.operation) && (!operationName || definition.name?.value === operationName)) {
56
+ return definition
57
+ }
61
58
  }
62
59
  }
63
60
 
64
61
  function normalizeArgs (args, defaultFieldResolver) {
65
62
  if (args.length !== 1) return normalizePositional(args, defaultFieldResolver)
66
63
 
67
- args[0].contextValue = args[0].contextValue || {}
64
+ args[0].contextValue ||= {}
68
65
  args[0].fieldResolver = wrapResolve(args[0].fieldResolver || defaultFieldResolver)
69
66
 
70
67
  return args[0]
@@ -4,8 +4,6 @@ const types = require('./types')
4
4
  const { addHook, channel } = require('../helpers/instrument')
5
5
  const shimmer = require('../../../datadog-shimmer')
6
6
 
7
- const nodeMajor = parseInt(process.versions.node.split('.')[0])
8
-
9
7
  const patched = new WeakSet()
10
8
  const instances = new WeakMap()
11
9
 
@@ -98,7 +96,7 @@ function wrapMethod (method, path, type, hasPeer) {
98
96
  return wrapped
99
97
  }
100
98
 
101
- function wrapCallback (ctx, callback = () => { }) {
99
+ function wrapCallback (ctx, callback = () => {}) {
102
100
  return shimmer.wrapFunction(callback, callback => function (err) {
103
101
  if (err) {
104
102
  ctx.error = err
@@ -112,18 +110,18 @@ function wrapCallback (ctx, callback = () => { }) {
112
110
  })
113
111
  }
114
112
 
115
- function createWrapEmit (ctx, hasPeer = false) {
116
- const onStatusWithPeer = function (ctx, arg1, thisArg) {
117
- ctx.result = arg1
118
- ctx.peer = thisArg.getPeer()
119
- finishChannel.publish(ctx)
120
- }
113
+ const onStatusWithPeer = function (ctx, arg1, thisArg) {
114
+ ctx.result = arg1
115
+ ctx.peer = thisArg.getPeer()
116
+ finishChannel.publish(ctx)
117
+ }
121
118
 
122
- const onStatusWithoutPeer = function (ctx, arg1, thisArg) {
123
- ctx.result = arg1
124
- finishChannel.publish(ctx)
125
- }
119
+ const onStatusWithoutPeer = function (ctx, arg1) {
120
+ ctx.result = arg1
121
+ finishChannel.publish(ctx)
122
+ }
126
123
 
124
+ function createWrapEmit (ctx, hasPeer = false) {
127
125
  const onStatus = hasPeer ? onStatusWithPeer : onStatusWithoutPeer
128
126
 
129
127
  return function wrapEmit (emit) {
@@ -245,16 +243,6 @@ function patch (hasPeer = false) {
245
243
  }
246
244
  }
247
245
 
248
- if (nodeMajor <= 14) {
249
- addHook({ name: 'grpc', versions: ['>=1.24.3'] }, patch(true))
250
-
251
- addHook({ name: 'grpc', versions: ['>=1.24.3'], file: 'src/client.js' }, client => {
252
- shimmer.wrap(client, 'makeClientConstructor', createWrapMakeClientConstructor(true))
253
-
254
- return client
255
- })
256
- }
257
-
258
246
  addHook({ name: '@grpc/grpc-js', versions: ['>=1.0.3 <1.1.4'] }, patch(false))
259
247
 
260
248
  addHook({ name: '@grpc/grpc-js', versions: ['>=1.0.3 <1.1.4'], file: 'build/src/make-client.js' }, client => {
@@ -4,8 +4,6 @@ const types = require('./types')
4
4
  const { channel, addHook } = require('../helpers/instrument')
5
5
  const shimmer = require('../../../datadog-shimmer')
6
6
 
7
- const nodeMajor = parseInt(process.versions.node.split('.')[0])
8
-
9
7
  const startChannel = channel('apm:grpc:server:request:start')
10
8
  const asyncStartChannel = channel('apm:grpc:server:request:asyncStart')
11
9
  const errorChannel = channel('apm:grpc:server:request:error')
@@ -17,17 +15,14 @@ const emitChannel = channel('apm:grpc:server:request:emit')
17
15
  const OK = 0
18
16
  const CANCELLED = 1
19
17
 
20
- function wrapHandler (func, name) {
21
- const isValid = (server, args) => {
22
- if (!startChannel.hasSubscribers) return false
23
- if (!server || !server.type) return false
24
- if (!args[0]) return false
25
- if (server.type !== 'unary' && !isEmitter(args[0])) return false
26
- if (server.type === 'unary' && typeof args[1] !== 'function') return false
27
-
28
- return true
29
- }
18
+ const isValid = (server, args) => {
19
+ return Boolean(startChannel.hasSubscribers &&
20
+ server?.type &&
21
+ args[0] &&
22
+ (server.type === 'unary' ? typeof args[1] === 'function' : isEmitter(args[0])))
23
+ }
30
24
 
25
+ function wrapHandler (func, name) {
31
26
  return function (call, callback) {
32
27
  if (!isValid(this, arguments)) return func.apply(this, arguments)
33
28
 
@@ -152,14 +147,6 @@ function isEmitter (obj) {
152
147
  return typeof obj.emit === 'function' && typeof obj.once === 'function'
153
148
  }
154
149
 
155
- if (nodeMajor <= 14) {
156
- addHook({ name: 'grpc', versions: ['>=1.24.3'], file: 'src/server.js' }, server => {
157
- shimmer.wrap(server.Server.prototype, 'register', wrapRegister)
158
-
159
- return server
160
- })
161
- }
162
-
163
150
  addHook({ name: '@grpc/grpc-js', versions: ['>=1.0.3'], file: 'build/src/server.js' }, server => {
164
151
  shimmer.wrap(server.Server.prototype, 'register', wrapRegister)
165
152
 
@@ -42,7 +42,10 @@ function wrapExt (ext) {
42
42
  if (events !== null && typeof events === 'object') {
43
43
  arguments[0] = wrapEvents(events)
44
44
  } else {
45
- arguments[1] = wrapExtension(method)
45
+ // The method should never be an array. The check is done as a safe guard
46
+ // during a refactoring where it was unclear if this would be possible or
47
+ // not.
48
+ arguments[1] = Array.isArray(method) ? method.map(wrapHandler) : [wrapHandler(method)]
46
49
  }
47
50
 
48
51
  return ext.apply(this, arguments)
@@ -75,17 +78,13 @@ function wrapRebuild (rebuild) {
75
78
  }
76
79
  }
77
80
 
78
- function wrapExtension (method) {
79
- return [].concat(method).map(wrapHandler)
80
- }
81
+ function wrapEvents (events, flat = false) {
82
+ const eventsArray = Array.isArray(events) ? events : [events]
81
83
 
82
- function wrapEvents (events) {
83
- return [].concat(events).map(event => {
84
- if (!event || !event.method) return event
84
+ return eventsArray.map(event => {
85
+ if (!event?.method) return event
85
86
 
86
- return Object.assign({}, event, {
87
- method: wrapExtension(event.method)
88
- })
87
+ return { ...event, method: wrapHandler(event.method) }
89
88
  })
90
89
  }
91
90
 
@@ -93,7 +92,7 @@ function wrapHandler (handler) {
93
92
  if (typeof handler !== 'function') return handler
94
93
 
95
94
  return shimmer.wrapFunction(handler, handler => function (request, h) {
96
- const req = request && request.raw && request.raw.req
95
+ const req = request?.raw?.req
97
96
 
98
97
  if (!req) return handler.apply(this, arguments)
99
98
 
@@ -10,27 +10,33 @@ const NM = 'node_modules/'
10
10
  */
11
11
  module.exports = function extractPackageAndModulePath (fullPath) {
12
12
  const nm = fullPath.lastIndexOf(NM)
13
- if (nm < 0) {
13
+ if (nm === -1) {
14
14
  return { pkg: null, path: null }
15
15
  }
16
16
 
17
- const subPath = fullPath.substring(nm + NM.length)
17
+ const subPath = fullPath.slice(nm + NM.length)
18
18
  const firstSlash = subPath.indexOf('/')
19
19
 
20
- const firstPath = fullPath.substring(fullPath[0], nm + NM.length)
20
+ const firstPath = fullPath.slice(0, nm + NM.length)
21
+
22
+ const firstSlashSubPath = subPath.slice(Math.max(0, firstSlash + 1))
21
23
 
22
24
  if (subPath[0] === '@') {
23
- const secondSlash = subPath.substring(firstSlash + 1).indexOf('/')
25
+ const secondSlash = firstSlashSubPath.indexOf('/')
26
+ const pkg = subPath.slice(0, Math.max(0, firstSlash + 1 + secondSlash))
27
+
24
28
  return {
25
- pkg: subPath.substring(0, firstSlash + 1 + secondSlash),
26
- path: subPath.substring(firstSlash + 1 + secondSlash + 1),
27
- pkgJson: firstPath + subPath.substring(0, firstSlash + 1 + secondSlash) + '/package.json'
29
+ pkg,
30
+ path: subPath.slice(Math.max(0, firstSlash + 1 + secondSlash + 1)),
31
+ pkgJson: firstPath + pkg + '/package.json'
28
32
  }
29
33
  }
30
34
 
35
+ const pkg = subPath.slice(0, Math.max(0, firstSlash))
36
+
31
37
  return {
32
- pkg: subPath.substring(0, firstSlash),
33
- path: subPath.substring(firstSlash + 1),
34
- pkgJson: firstPath + subPath.substring(0, firstSlash) + '/package.json'
38
+ pkg,
39
+ path: firstSlashSubPath,
40
+ pkgJson: firstPath + pkg + '/package.json'
35
41
  }
36
42
  }
@@ -16,12 +16,11 @@ exports.createWrapFetch = function createWrapFetch (Request, ch, onLoad) {
16
16
  const ctx = { req: input }
17
17
 
18
18
  return ch.tracePromise(() => fetch.call(this, input, init), ctx)
19
- } else {
20
- const req = new Request(input, init)
21
- const ctx = { req }
22
-
23
- return ch.tracePromise(() => fetch.call(this, req), ctx)
24
19
  }
20
+ const req = new Request(input, init)
21
+ const ctx = { req }
22
+
23
+ return ch.tracePromise(() => fetch.call(this, req), ctx)
25
24
  }
26
25
  }
27
26
  }
@@ -22,7 +22,7 @@ function Hook (modules, hookOptions, onrequire) {
22
22
  this._patched = Object.create(null)
23
23
 
24
24
  const safeHook = (moduleExports, moduleName, moduleBaseDir, moduleVersion) => {
25
- const parts = [moduleBaseDir, moduleName].filter(v => v)
25
+ const parts = [moduleBaseDir, moduleName].filter(Boolean)
26
26
  const filename = path.join(...parts)
27
27
 
28
28
  if (this._patched[filename]) return moduleExports
@@ -41,9 +41,8 @@ function Hook (modules, hookOptions, onrequire) {
41
41
  if (moduleExports && moduleExports.default) {
42
42
  moduleExports.default = safeHook(moduleExports.default, moduleName, moduleBaseDir)
43
43
  return moduleExports
44
- } else {
45
- return safeHook(moduleExports, moduleName, moduleBaseDir)
46
44
  }
45
+ return safeHook(moduleExports, moduleName, moduleBaseDir)
47
46
  })
48
47
  }
49
48
 
@@ -105,7 +105,6 @@ module.exports = {
105
105
  nyc: () => require('../nyc'),
106
106
  oracledb: () => require('../oracledb'),
107
107
  openai: { esmFirst: true, fn: () => require('../openai') },
108
- paperplane: () => require('../paperplane'),
109
108
  passport: () => require('../passport'),
110
109
  'passport-http': () => require('../passport-http'),
111
110
  'passport-local': () => require('../passport-local'),
@@ -1,7 +1,6 @@
1
1
  'use strict'
2
2
 
3
3
  const dc = require('dc-polyfill')
4
- const satisfies = require('semifies')
5
4
  const instrumentations = require('./instrumentations')
6
5
  const { AsyncResource } = require('async_hooks')
7
6
 
@@ -34,43 +33,4 @@ exports.addHook = function addHook ({ name, versions, file, filePattern }, hook)
34
33
  }
35
34
  }
36
35
 
37
- // AsyncResource.bind exists and binds `this` properly only from 17.8.0 and up.
38
- // https://nodejs.org/api/async_context.html#asyncresourcebindfn-thisarg
39
- if (satisfies(process.versions.node, '>=17.8.0')) {
40
- exports.AsyncResource = AsyncResource
41
- } else {
42
- exports.AsyncResource = class extends AsyncResource {
43
- static bind (fn, type, thisArg) {
44
- type = type || fn.name
45
- return (new exports.AsyncResource(type || 'bound-anonymous-fn')).bind(fn, thisArg)
46
- }
47
-
48
- bind (fn, thisArg) {
49
- let bound
50
- if (thisArg === undefined) {
51
- const resource = this
52
- bound = function (...args) {
53
- args.unshift(fn, this)
54
- return Reflect.apply(resource.runInAsyncScope, resource, args)
55
- }
56
- } else {
57
- bound = this.runInAsyncScope.bind(this, fn, thisArg)
58
- }
59
- Object.defineProperties(bound, {
60
- length: {
61
- configurable: true,
62
- enumerable: false,
63
- value: fn.length,
64
- writable: false
65
- },
66
- asyncResource: {
67
- configurable: true,
68
- enumerable: true,
69
- value: this,
70
- writable: true
71
- }
72
- })
73
- return bound
74
- }
75
- }
76
- }
36
+ exports.AsyncResource = AsyncResource
@@ -9,11 +9,14 @@ const log = require('../../../dd-trace/src/log')
9
9
  const checkRequireCache = require('./check-require-cache')
10
10
  const telemetry = require('../../../dd-trace/src/guardrails/telemetry')
11
11
  const { isInServerlessEnvironment } = require('../../../dd-trace/src/serverless')
12
+ const { getEnvironmentVariables } = require('../../../dd-trace/src/config-helper')
13
+
14
+ const envs = getEnvironmentVariables()
12
15
 
13
16
  const {
14
17
  DD_TRACE_DISABLED_INSTRUMENTATIONS = '',
15
18
  DD_TRACE_DEBUG = ''
16
- } = process.env
19
+ } = envs
17
20
 
18
21
  const hooks = require('./hooks')
19
22
  const instrumentations = require('./instrumentations')
@@ -24,9 +27,9 @@ const disabledInstrumentations = new Set(
24
27
  )
25
28
 
26
29
  // Check for DD_TRACE_<INTEGRATION>_ENABLED environment variables
27
- for (const [key, value] of Object.entries(process.env)) {
30
+ for (const [key, value] of Object.entries(envs)) {
28
31
  const match = key.match(/^DD_TRACE_(.+)_ENABLED$/)
29
- if (match && (value.toLowerCase() === 'false' || value === '0')) {
32
+ if (match && (value?.toLowerCase() === 'false' || value === '0')) {
30
33
  const integration = match[1].toLowerCase()
31
34
  disabledInstrumentations.add(integration)
32
35
  }
@@ -96,9 +99,7 @@ for (const packageName of names) {
96
99
  // That way it would also not be duplicated. The actual name being used has to be identified else wise.
97
100
  // Maybe it is also not important to know what name was actually used?
98
101
  hook[HOOK_SYMBOL] ??= new WeakSet()
99
- let matchesFile = false
100
-
101
- matchesFile = moduleName === fullFilename
102
+ let matchesFile = moduleName === fullFilename
102
103
 
103
104
  if (fullFilePattern) {
104
105
  // Some libraries include a hash in their filenames when installed,
@@ -115,7 +116,7 @@ for (const packageName of names) {
115
116
  log.error('Error getting version for "%s": %s', name, e.message, e)
116
117
  continue
117
118
  }
118
- if (namesAndSuccesses[`${name}@${version}`] === undefined) {
119
+ if (namesAndSuccesses[`${name}@${version}`] === undefined && !file) {
119
120
  // TODO If `file` is present, we might elsewhere instrument the result of the module
120
121
  // for a version range that actually matches, so we can't assume that we're _not_
121
122
  // going to instrument that. However, the way the data model around instrumentation
@@ -123,9 +124,7 @@ for (const packageName of names) {
123
124
  // ignore this if there is a `file` in the hook. The thing to do here is rework
124
125
  // everything so that we can be sure that there are _no_ instrumentations that it
125
126
  // could match.
126
- if (!file) {
127
- namesAndSuccesses[`${name}@${version}`] = false
128
- }
127
+ namesAndSuccesses[`${name}@${version}`] = false
129
128
  }
130
129
 
131
130
  if (matchVersion(version, versions)) {
@@ -190,7 +189,7 @@ function getVersion (moduleBaseDir) {
190
189
  }
191
190
 
192
191
  function filename (name, file) {
193
- return [name, file].filter(val => val).join('/')
192
+ return [name, file].filter(Boolean).join('/')
194
193
  }
195
194
 
196
195
  // This function captures the instrumentation file name for a given package by parsing the hook require
@@ -217,7 +216,7 @@ function parseHookInstrumentationFileName (packageName) {
217
216
  let moduleName = match[1]
218
217
  // Remove leading '../' if present
219
218
  if (moduleName.startsWith('../')) {
220
- moduleName = moduleName.substring(3)
219
+ moduleName = moduleName.slice(3)
221
220
  }
222
221
  return moduleName
223
222
  }
@@ -26,6 +26,19 @@ function hookFn (http) {
26
26
  return http
27
27
  }
28
28
 
29
+ function combineOptions (inputURL, inputOptions) {
30
+ return inputOptions !== null && typeof inputOptions === 'object'
31
+ ? Object.assign(inputURL || {}, inputOptions)
32
+ : inputURL
33
+ }
34
+ function normalizeHeaders (options) {
35
+ options.headers ??= {}
36
+ }
37
+
38
+ function normalizeCallback (inputOptions, callback, inputURL) {
39
+ return typeof inputOptions === 'function' ? [inputOptions, inputURL || {}] : [callback, inputOptions]
40
+ }
41
+
29
42
  function patch (http, methodName) {
30
43
  shimmer.wrap(http, methodName, instrumentRequest)
31
44
 
@@ -143,30 +156,11 @@ function patch (http, methodName) {
143
156
  return { uri, options, callback, originalUrl }
144
157
  }
145
158
 
146
- function combineOptions (inputURL, inputOptions) {
147
- if (inputOptions !== null && typeof inputOptions === 'object') {
148
- return Object.assign(inputURL || {}, inputOptions)
149
- } else {
150
- return inputURL
151
- }
152
- }
153
- function normalizeHeaders (options) {
154
- options.headers = options.headers || {}
155
- }
156
-
157
- function normalizeCallback (inputOptions, callback, inputURL) {
158
- if (typeof inputOptions === 'function') {
159
- return [inputOptions, inputURL || {}]
160
- } else {
161
- return [callback, inputOptions]
162
- }
163
- }
164
-
165
159
  function normalizeOptions (inputURL) {
166
160
  if (typeof inputURL === 'string') {
167
161
  try {
168
162
  return urlToOptions(new url.URL(inputURL))
169
- } catch (e) {
163
+ } catch {
170
164
  // eslint-disable-next-line n/no-deprecated-api
171
165
  return url.parse(inputURL)
172
166
  }