dd-trace 5.101.0 → 5.103.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 (235) hide show
  1. package/ext/exporters.js +1 -0
  2. package/package.json +20 -17
  3. package/packages/datadog-esbuild/src/utils.js +2 -2
  4. package/packages/datadog-instrumentations/src/aerospike.js +2 -2
  5. package/packages/datadog-instrumentations/src/ai.js +9 -9
  6. package/packages/datadog-instrumentations/src/amqplib.js +6 -7
  7. package/packages/datadog-instrumentations/src/anthropic.js +10 -10
  8. package/packages/datadog-instrumentations/src/apollo-server-core.js +3 -3
  9. package/packages/datadog-instrumentations/src/apollo-server.js +5 -5
  10. package/packages/datadog-instrumentations/src/avsc.js +6 -6
  11. package/packages/datadog-instrumentations/src/aws-sdk.js +151 -67
  12. package/packages/datadog-instrumentations/src/azure-durable-functions.js +8 -8
  13. package/packages/datadog-instrumentations/src/bluebird.js +2 -2
  14. package/packages/datadog-instrumentations/src/body-parser.js +2 -2
  15. package/packages/datadog-instrumentations/src/cassandra-driver.js +7 -7
  16. package/packages/datadog-instrumentations/src/child_process.js +12 -12
  17. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +41 -24
  18. package/packages/datadog-instrumentations/src/connect.js +7 -7
  19. package/packages/datadog-instrumentations/src/cookie-parser.js +4 -4
  20. package/packages/datadog-instrumentations/src/cookie.js +2 -2
  21. package/packages/datadog-instrumentations/src/couchbase.js +73 -238
  22. package/packages/datadog-instrumentations/src/crypto.js +4 -4
  23. package/packages/datadog-instrumentations/src/cucumber.js +78 -17
  24. package/packages/datadog-instrumentations/src/dns.js +0 -3
  25. package/packages/datadog-instrumentations/src/elasticsearch.js +8 -11
  26. package/packages/datadog-instrumentations/src/electron/preload.js +42 -0
  27. package/packages/datadog-instrumentations/src/electron.js +240 -0
  28. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +6 -6
  29. package/packages/datadog-instrumentations/src/express-session.js +4 -4
  30. package/packages/datadog-instrumentations/src/express.js +10 -11
  31. package/packages/datadog-instrumentations/src/fastify.js +2 -2
  32. package/packages/datadog-instrumentations/src/fetch.js +5 -5
  33. package/packages/datadog-instrumentations/src/fs.js +14 -14
  34. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +5 -7
  35. package/packages/datadog-instrumentations/src/google-genai.js +4 -4
  36. package/packages/datadog-instrumentations/src/graphql.js +13 -12
  37. package/packages/datadog-instrumentations/src/grpc/server.js +2 -2
  38. package/packages/datadog-instrumentations/src/hapi.js +2 -2
  39. package/packages/datadog-instrumentations/src/helpers/callback-instrumentor.js +9 -9
  40. package/packages/datadog-instrumentations/src/helpers/hook.js +4 -1
  41. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  42. package/packages/datadog-instrumentations/src/helpers/instrument.js +2 -2
  43. package/packages/datadog-instrumentations/src/helpers/kafka.js +41 -0
  44. package/packages/datadog-instrumentations/src/helpers/promise.js +2 -2
  45. package/packages/datadog-instrumentations/src/hono.js +2 -2
  46. package/packages/datadog-instrumentations/src/http/client.js +6 -6
  47. package/packages/datadog-instrumentations/src/http/server.js +9 -9
  48. package/packages/datadog-instrumentations/src/ioredis.js +16 -12
  49. package/packages/datadog-instrumentations/src/jest.js +382 -81
  50. package/packages/datadog-instrumentations/src/kafkajs.js +165 -174
  51. package/packages/datadog-instrumentations/src/knex.js +17 -17
  52. package/packages/datadog-instrumentations/src/koa.js +12 -12
  53. package/packages/datadog-instrumentations/src/ldapjs.js +5 -5
  54. package/packages/datadog-instrumentations/src/light-my-request.js +2 -2
  55. package/packages/datadog-instrumentations/src/limitd-client.js +4 -4
  56. package/packages/datadog-instrumentations/src/lodash.js +4 -4
  57. package/packages/datadog-instrumentations/src/mariadb.js +13 -13
  58. package/packages/datadog-instrumentations/src/memcached.js +2 -2
  59. package/packages/datadog-instrumentations/src/microgateway-core.js +2 -2
  60. package/packages/datadog-instrumentations/src/mocha/common.js +3 -3
  61. package/packages/datadog-instrumentations/src/mocha/main.js +85 -11
  62. package/packages/datadog-instrumentations/src/mocha/utils.js +133 -16
  63. package/packages/datadog-instrumentations/src/mocha/worker.js +7 -5
  64. package/packages/datadog-instrumentations/src/mongodb-core.js +42 -30
  65. package/packages/datadog-instrumentations/src/mongodb.js +5 -5
  66. package/packages/datadog-instrumentations/src/mongoose.js +21 -21
  67. package/packages/datadog-instrumentations/src/mquery.js +5 -5
  68. package/packages/datadog-instrumentations/src/multer.js +4 -4
  69. package/packages/datadog-instrumentations/src/mysql.js +16 -16
  70. package/packages/datadog-instrumentations/src/mysql2.js +4 -4
  71. package/packages/datadog-instrumentations/src/net.js +14 -8
  72. package/packages/datadog-instrumentations/src/nyc.js +5 -5
  73. package/packages/datadog-instrumentations/src/openai.js +19 -19
  74. package/packages/datadog-instrumentations/src/oracledb.js +6 -6
  75. package/packages/datadog-instrumentations/src/passport-utils.js +5 -5
  76. package/packages/datadog-instrumentations/src/pg.js +39 -25
  77. package/packages/datadog-instrumentations/src/pino.js +6 -10
  78. package/packages/datadog-instrumentations/src/playwright.js +445 -68
  79. package/packages/datadog-instrumentations/src/protobufjs.js +16 -16
  80. package/packages/datadog-instrumentations/src/redis.js +20 -12
  81. package/packages/datadog-instrumentations/src/restify.js +2 -2
  82. package/packages/datadog-instrumentations/src/router.js +12 -12
  83. package/packages/datadog-instrumentations/src/stripe.js +12 -12
  84. package/packages/datadog-instrumentations/src/vitest.js +107 -26
  85. package/packages/datadog-instrumentations/src/winston.js +4 -4
  86. package/packages/datadog-instrumentations/src/ws.js +7 -7
  87. package/packages/datadog-plugin-apollo/src/gateway/request.js +1 -21
  88. package/packages/datadog-plugin-aws-sdk/src/base.js +70 -28
  89. package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +1 -1
  90. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +20 -13
  91. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +46 -36
  92. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +34 -23
  93. package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +1 -1
  94. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +1 -1
  95. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +14 -15
  96. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +74 -55
  97. package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +20 -18
  98. package/packages/datadog-plugin-aws-sdk/src/util.js +22 -0
  99. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +6 -6
  100. package/packages/datadog-plugin-couchbase/src/index.js +58 -52
  101. package/packages/datadog-plugin-cucumber/src/index.js +5 -0
  102. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +215 -26
  103. package/packages/datadog-plugin-cypress/src/support.js +13 -1
  104. package/packages/datadog-plugin-electron/src/index.js +17 -0
  105. package/packages/datadog-plugin-electron/src/ipc.js +143 -0
  106. package/packages/datadog-plugin-electron/src/net.js +82 -0
  107. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +1 -5
  108. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +27 -18
  109. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +3 -1
  110. package/packages/datadog-plugin-graphql/src/execute.js +6 -28
  111. package/packages/datadog-plugin-graphql/src/resolve.js +30 -35
  112. package/packages/datadog-plugin-graphql/src/tools/signature.js +32 -7
  113. package/packages/datadog-plugin-graphql/src/tools/transforms.js +118 -100
  114. package/packages/datadog-plugin-graphql/src/utils.js +29 -0
  115. package/packages/datadog-plugin-grpc/src/client.js +6 -7
  116. package/packages/datadog-plugin-grpc/src/util.js +57 -22
  117. package/packages/datadog-plugin-http/src/client.js +3 -7
  118. package/packages/datadog-plugin-jest/src/index.js +92 -50
  119. package/packages/datadog-plugin-jest/src/util.js +1 -2
  120. package/packages/datadog-plugin-mocha/src/index.js +5 -0
  121. package/packages/datadog-plugin-mongodb-core/src/index.js +36 -69
  122. package/packages/datadog-plugin-mysql/src/index.js +1 -1
  123. package/packages/datadog-plugin-openai/src/services.js +2 -1
  124. package/packages/datadog-plugin-openai/src/tracing.js +12 -23
  125. package/packages/datadog-plugin-pg/src/index.js +3 -3
  126. package/packages/datadog-plugin-playwright/src/index.js +5 -1
  127. package/packages/datadog-plugin-redis/src/index.js +18 -23
  128. package/packages/datadog-plugin-vitest/src/index.js +8 -1
  129. package/packages/datadog-shimmer/src/shimmer.js +7 -1
  130. package/packages/dd-trace/src/aiguard/index.js +3 -1
  131. package/packages/dd-trace/src/aiguard/sdk.js +36 -30
  132. package/packages/dd-trace/src/aiguard/tags.js +20 -11
  133. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +1 -1
  134. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +81 -81
  135. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +2 -2
  136. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +2 -2
  137. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +4 -4
  138. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
  139. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +2 -0
  140. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +1 -3
  141. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +83 -48
  142. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +1 -1
  143. package/packages/dd-trace/src/appsec/index.js +21 -24
  144. package/packages/dd-trace/src/appsec/reporter.js +3 -1
  145. package/packages/dd-trace/src/appsec/rule_manager.js +4 -2
  146. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +31 -16
  147. package/packages/dd-trace/src/azure_metadata.js +17 -6
  148. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +4 -4
  149. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +4 -2
  150. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +6 -4
  151. package/packages/dd-trace/src/ci-visibility/requests/fs-cache.js +1 -1
  152. package/packages/dd-trace/src/config/defaults.js +3 -14
  153. package/packages/dd-trace/src/config/generated-config-types.d.ts +3 -1
  154. package/packages/dd-trace/src/config/git_properties.js +2 -2
  155. package/packages/dd-trace/src/config/helper.js +4 -0
  156. package/packages/dd-trace/src/config/index.js +2 -2
  157. package/packages/dd-trace/src/config/major-overrides.js +98 -0
  158. package/packages/dd-trace/src/config/parsers.js +7 -1
  159. package/packages/dd-trace/src/config/supported-configurations.json +51 -38
  160. package/packages/dd-trace/src/datastreams/checkpointer.js +2 -2
  161. package/packages/dd-trace/src/datastreams/index.js +2 -1
  162. package/packages/dd-trace/src/datastreams/manager.js +1 -1
  163. package/packages/dd-trace/src/datastreams/processor.js +3 -4
  164. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +2 -2
  165. package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +1 -0
  166. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +1 -1
  167. package/packages/dd-trace/src/debugger/devtools_client/state.js +2 -1
  168. package/packages/dd-trace/src/debugger/index.js +7 -7
  169. package/packages/dd-trace/src/dogstatsd.js +2 -2
  170. package/packages/dd-trace/src/encode/0.4.js +748 -232
  171. package/packages/dd-trace/src/encode/0.5.js +47 -10
  172. package/packages/dd-trace/src/encode/agentless-json.js +1 -1
  173. package/packages/dd-trace/src/exporter.js +2 -0
  174. package/packages/dd-trace/src/exporters/agent/index.js +2 -1
  175. package/packages/dd-trace/src/exporters/agentless/index.js +3 -2
  176. package/packages/dd-trace/src/exporters/agentless/writer.js +2 -2
  177. package/packages/dd-trace/src/exporters/common/buffering-exporter.js +2 -1
  178. package/packages/dd-trace/src/exporters/common/request.js +1 -1
  179. package/packages/dd-trace/src/exporters/electron/index.js +49 -0
  180. package/packages/dd-trace/src/external-logger/src/index.js +2 -1
  181. package/packages/dd-trace/src/git_metadata.js +10 -8
  182. package/packages/dd-trace/src/lambda/handler-paths.js +52 -0
  183. package/packages/dd-trace/src/lambda/index.js +62 -14
  184. package/packages/dd-trace/src/lambda/runtime/patch.js +21 -46
  185. package/packages/dd-trace/src/llmobs/index.js +13 -2
  186. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +1 -2
  187. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +45 -15
  188. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +6 -3
  189. package/packages/dd-trace/src/llmobs/sdk.js +24 -26
  190. package/packages/dd-trace/src/llmobs/span_processor.js +25 -5
  191. package/packages/dd-trace/src/llmobs/util.js +1 -0
  192. package/packages/dd-trace/src/llmobs/writers/base.js +2 -1
  193. package/packages/dd-trace/src/msgpack/chunk.js +6 -3
  194. package/packages/dd-trace/src/openfeature/noop.js +40 -36
  195. package/packages/dd-trace/src/openfeature/writers/base.js +2 -1
  196. package/packages/dd-trace/src/openfeature/writers/exposures.js +33 -52
  197. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +2 -1
  198. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +1 -2
  199. package/packages/dd-trace/src/opentelemetry/tracer.js +0 -22
  200. package/packages/dd-trace/src/opentracing/propagation/text_map.js +20 -9
  201. package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +2 -11
  202. package/packages/dd-trace/src/payload-tagging/config/index.js +2 -2
  203. package/packages/dd-trace/src/plugins/ci_plugin.js +49 -4
  204. package/packages/dd-trace/src/plugins/database.js +54 -12
  205. package/packages/dd-trace/src/plugins/index.js +1 -0
  206. package/packages/dd-trace/src/plugins/plugin.js +2 -4
  207. package/packages/dd-trace/src/plugins/util/ci.js +9 -9
  208. package/packages/dd-trace/src/plugins/util/git-cache.js +23 -23
  209. package/packages/dd-trace/src/plugins/util/stacktrace.js +2 -2
  210. package/packages/dd-trace/src/plugins/util/test.js +56 -12
  211. package/packages/dd-trace/src/plugins/util/url.js +1 -3
  212. package/packages/dd-trace/src/plugins/util/user-provided-git.js +18 -16
  213. package/packages/dd-trace/src/plugins/util/web.js +5 -7
  214. package/packages/dd-trace/src/priority_sampler.js +1 -1
  215. package/packages/dd-trace/src/profiling/profiler.js +1 -1
  216. package/packages/dd-trace/src/profiling/profilers/events.js +3 -23
  217. package/packages/dd-trace/src/profiling/profilers/wall.js +5 -6
  218. package/packages/dd-trace/src/profiling/ssi-heuristics.js +1 -1
  219. package/packages/dd-trace/src/rate_limiter.js +1 -1
  220. package/packages/dd-trace/src/remote_config/scheduler.js +1 -1
  221. package/packages/dd-trace/src/ritm.js +2 -1
  222. package/packages/dd-trace/src/runtime_metrics/index.js +2 -2
  223. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +5 -8
  224. package/packages/dd-trace/src/scope.js +3 -10
  225. package/packages/dd-trace/src/serverless.js +6 -6
  226. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +27 -1
  227. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +4 -0
  228. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +24 -0
  229. package/packages/dd-trace/src/service-naming/schemas/v1/web.js +4 -0
  230. package/packages/dd-trace/src/span_stats.js +1 -1
  231. package/packages/dd-trace/src/telemetry/dependencies.js +1 -1
  232. package/packages/dd-trace/src/telemetry/endpoints.js +1 -1
  233. package/packages/dd-trace/src/telemetry/telemetry.js +2 -2
  234. package/packages/dd-trace/src/tracer.js +7 -7
  235. package/packages/dd-trace/src/lambda/runtime/ritm.js +0 -133
@@ -4,8 +4,8 @@ const fs = require('fs')
4
4
  const path = require('path')
5
5
 
6
6
  const gitPropertiesCommitSHARegex = /git\.commit\.sha=([a-f\d]{40})/
7
- const gitPropertiesRepositoryUrlRegex = /git\.repository_url=([\w\d:@/.-]+)/
8
- const repositoryUrlRegex = /^([\w\d:@/.-]+)$/
7
+ const gitPropertiesRepositoryUrlRegex = /git\.repository_url=([\w:@/.-]+)/
8
+ const repositoryUrlRegex = /^([\w:@/.-]+)$/
9
9
  const remoteOriginRegex = /^\[remote\s+"origin"\]/i
10
10
  const gitHeadRefRegex = /ref:\s+(refs\/[A-Za-z0-9._/-]+)/
11
11
  const commitSHARegex = /^[0-9a-f]{40}$/
@@ -21,10 +21,14 @@
21
21
  */
22
22
 
23
23
  const { deprecate } = require('util')
24
+ const { DD_MAJOR } = require('../../../../version')
25
+ const applyMajorOverrides = require('./major-overrides')
24
26
  const {
25
27
  supportedConfigurations,
26
28
  } = /** @type {SupportedConfigurationsJson} */ (require('./supported-configurations.json'))
27
29
 
30
+ applyMajorOverrides(supportedConfigurations, DD_MAJOR)
31
+
28
32
  /**
29
33
  * Types for environment variable handling.
30
34
  *
@@ -165,7 +165,7 @@ class Config extends ConfigBase {
165
165
  }
166
166
 
167
167
  /**
168
- * @param {TracerOptions} [options={}]
168
+ * @param {TracerOptions} [options]
169
169
  */
170
170
  constructor (options = {}) {
171
171
  super()
@@ -357,7 +357,7 @@ class Config extends ConfigBase {
357
357
  setAndTrack(this, 'DD_METRICS_OTEL_ENABLED', false)
358
358
  }
359
359
 
360
- if (this.OTEL_TRACES_EXPORTER === 'otlp' && this.protocolVersion && this.protocolVersion !== '0.4') {
360
+ if (this.OTEL_TRACES_EXPORTER === 'otlp' && trackedConfigOrigins.has('protocolVersion')) {
361
361
  log.warn('DD_TRACE_AGENT_PROTOCOL_VERSION is set, disabling OTLP traces export')
362
362
  setAndTrack(this, 'OTEL_TRACES_EXPORTER', 'none')
363
363
  }
@@ -0,0 +1,98 @@
1
+ 'use strict'
2
+
3
+ /**
4
+ * @typedef {import('./helper').SupportedConfigurationsJson['supportedConfigurations']} SupportedConfigurations
5
+ */
6
+
7
+ const EXPERIMENTAL_APPSEC_PREFIX = 'experimental.appsec'
8
+ const EXPERIMENTAL_IAST_PREFIX = 'experimental.iast'
9
+ const INGESTION_PREFIX = 'ingestion.'
10
+
11
+ /**
12
+ * @param {SupportedConfigurations} supportedConfigurations Mutated in place.
13
+ * @param {number} majorVersion
14
+ */
15
+ function applyMajorOverrides (supportedConfigurations, majorVersion) {
16
+ if (majorVersion < 6) {
17
+ applyV5Overrides(supportedConfigurations)
18
+ return
19
+ }
20
+
21
+ for (const entries of Object.values(supportedConfigurations)) {
22
+ for (const entry of entries) {
23
+ if (Array.isArray(entry.configurationNames)) {
24
+ entry.configurationNames = entry.configurationNames.filter(
25
+ (name) =>
26
+ name !== EXPERIMENTAL_APPSEC_PREFIX &&
27
+ name !== EXPERIMENTAL_IAST_PREFIX &&
28
+ !name.startsWith(`${EXPERIMENTAL_APPSEC_PREFIX}.`) &&
29
+ !name.startsWith(`${EXPERIMENTAL_IAST_PREFIX}.`) &&
30
+ !name.startsWith(INGESTION_PREFIX)
31
+ )
32
+ if (entry.configurationNames.length === 0) delete entry.configurationNames
33
+ }
34
+ }
35
+ }
36
+ delete supportedConfigurations.DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED
37
+ delete supportedConfigurations.DD_TRACE_EXPERIMENTAL_B3_ENABLED
38
+
39
+ /* eslint-disable eslint-rules/eslint-env-aliases */
40
+ for (const name of [
41
+ 'DD_PROFILING_EXPERIMENTAL_CODEHOTSPOTS_ENABLED',
42
+ 'DD_PROFILING_EXPERIMENTAL_CPU_ENABLED',
43
+ 'DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED',
44
+ 'DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED',
45
+ ]) {
46
+ delete supportedConfigurations[name]
47
+ }
48
+ /* eslint-enable eslint-rules/eslint-env-aliases */
49
+ for (const canonical of [
50
+ 'DD_PROFILING_CODEHOTSPOTS_ENABLED',
51
+ 'DD_PROFILING_CPU_ENABLED',
52
+ 'DD_PROFILING_ENDPOINT_COLLECTION_ENABLED',
53
+ 'DD_PROFILING_TIMELINE_ENABLED',
54
+ ]) {
55
+ dropAlias(supportedConfigurations[canonical], (alias) => alias.startsWith('DD_PROFILING_EXPERIMENTAL_'))
56
+ }
57
+
58
+ delete supportedConfigurations.DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED
59
+ // eslint-disable-next-line eslint-rules/eslint-env-aliases
60
+ dropAlias(supportedConfigurations.DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED, 'DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED')
61
+ }
62
+
63
+ /**
64
+ * @param {SupportedConfigurations} supportedConfigurations Mutated in place.
65
+ */
66
+ function applyV5Overrides (supportedConfigurations) {
67
+ const startupLogsEntry = supportedConfigurations.DD_TRACE_STARTUP_LOGS?.[0]
68
+ if (startupLogsEntry) {
69
+ startupLogsEntry.default = 'false'
70
+ }
71
+
72
+ const iastEntry = supportedConfigurations.DD_IAST_SECURITY_CONTROLS_CONFIGURATION?.[0]
73
+ if (!iastEntry) return
74
+
75
+ iastEntry.configurationNames = [
76
+ iastEntry.internalPropertyName || iastEntry.configurationNames?.[0],
77
+ `${EXPERIMENTAL_IAST_PREFIX}.securityControlsConfiguration`,
78
+ ]
79
+ delete iastEntry.internalPropertyName
80
+ }
81
+
82
+ /**
83
+ * @param {import('./helper').SupportedConfigurationEntry[] | undefined} entries
84
+ * @param {string | ((alias: string) => boolean)} dropPredicate
85
+ */
86
+ function dropAlias (entries, dropPredicate) {
87
+ const entry = entries?.[0]
88
+ if (entry?.aliases === undefined) return
89
+ const matches = typeof dropPredicate === 'string'
90
+ ? (alias) => alias === dropPredicate
91
+ : dropPredicate
92
+ entry.aliases = entry.aliases.filter((alias) => !matches(alias))
93
+ if (entry.aliases.length === 0) {
94
+ delete entry.aliases
95
+ }
96
+ }
97
+
98
+ module.exports = applyMajorOverrides
@@ -2,6 +2,7 @@
2
2
 
3
3
  const fs = require('fs')
4
4
 
5
+ const { DD_MAJOR } = require('../../../../version')
5
6
  const tagger = require('../tagger')
6
7
 
7
8
  let warnInvalidValue
@@ -9,6 +10,7 @@ function setWarnInvalidValue (fn) {
9
10
  warnInvalidValue = fn
10
11
  }
11
12
 
13
+ // `'b3 single header'` is the legacy spelling of `'b3'`; on v6 it is normalised below.
12
14
  const VALID_PROPAGATION_STYLES = new Set([
13
15
  'datadog', 'tracecontext', 'b3', 'b3 single header', 'b3multi', 'baggage', 'none',
14
16
  ])
@@ -145,11 +147,15 @@ const transformers = {
145
147
  },
146
148
  validatePropagationStyles (value, optionName) {
147
149
  value = transformers.toLowerCase(value)
148
- for (const propagator of value) {
150
+ for (let index = 0; index < value.length; index++) {
151
+ const propagator = value[index]
149
152
  if (!VALID_PROPAGATION_STYLES.has(propagator)) {
150
153
  warnInvalidValue(propagator, optionName, optionName, 'Invalid propagator')
151
154
  return
152
155
  }
156
+ if (DD_MAJOR >= 6 && propagator === 'b3 single header') {
157
+ value[index] = 'b3'
158
+ }
153
159
  }
154
160
  return value
155
161
  },
@@ -254,7 +254,8 @@
254
254
  "appsec.extendedHeadersCollection.redaction",
255
255
  "experimental.appsec.extendedHeadersCollection.redaction"
256
256
  ],
257
- "default": "true"
257
+ "default": "true",
258
+ "deprecated": true
258
259
  }
259
260
  ],
260
261
  "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML": [
@@ -289,7 +290,8 @@
289
290
  "appsec.extendedHeadersCollection.maxHeaders",
290
291
  "experimental.appsec.extendedHeadersCollection.maxHeaders"
291
292
  ],
292
- "default": "50"
293
+ "default": "50",
294
+ "deprecated": true
293
295
  }
294
296
  ],
295
297
  "DD_APPSEC_MAX_STACK_TRACES": [
@@ -597,6 +599,13 @@
597
599
  "default": "true"
598
600
  }
599
601
  ],
602
+ "DD_CUSTOM_PARENT_ID": [
603
+ {
604
+ "implementation": "A",
605
+ "type": "string",
606
+ "default": null
607
+ }
608
+ ],
600
609
  "DD_CUSTOM_TRACE_ID": [
601
610
  {
602
611
  "implementation": "A",
@@ -780,9 +789,9 @@
780
789
  ],
781
790
  "DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR": [
782
791
  {
783
- "implementation": "A",
792
+ "implementation": "B",
784
793
  "type": "string",
785
- "default": "${os.tmpdir()}/dd-trace-git-cache"
794
+ "default": null
786
795
  }
787
796
  ],
788
797
  "DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED": [
@@ -1062,10 +1071,7 @@
1062
1071
  {
1063
1072
  "implementation": "B",
1064
1073
  "type": "string",
1065
- "configurationNames": [
1066
- "iast.securityControlsConfiguration",
1067
- "experimental.iast.securityControlsConfiguration"
1068
- ],
1074
+ "internalPropertyName": "iast.securityControlsConfiguration",
1069
1075
  "default": null
1070
1076
  }
1071
1077
  ],
@@ -1934,9 +1940,9 @@
1934
1940
  ],
1935
1941
  "DD_TRACE_AWS_SDK_AWS_BATCH_PROPAGATION_ENABLED": [
1936
1942
  {
1937
- "implementation": "A",
1943
+ "implementation": "B",
1938
1944
  "type": "boolean",
1939
- "default": "true"
1945
+ "default": "false"
1940
1946
  }
1941
1947
  ],
1942
1948
  "DD_TRACE_AWS_SDK_AWS_ENABLED": [
@@ -1948,16 +1954,16 @@
1948
1954
  ],
1949
1955
  "DD_TRACE_AWS_SDK_BATCH_PROPAGATION_ENABLED": [
1950
1956
  {
1951
- "implementation": "A",
1957
+ "implementation": "B",
1952
1958
  "type": "boolean",
1953
- "default": "true"
1959
+ "default": "false"
1954
1960
  }
1955
1961
  ],
1956
1962
  "DD_TRACE_AWS_SDK_BEDROCKRUNTIME_BATCH_PROPAGATION_ENABLED": [
1957
1963
  {
1958
- "implementation": "A",
1964
+ "implementation": "B",
1959
1965
  "type": "boolean",
1960
- "default": "true"
1966
+ "default": "false"
1961
1967
  }
1962
1968
  ],
1963
1969
  "DD_TRACE_AWS_SDK_BEDROCKRUNTIME_ENABLED": [
@@ -1969,9 +1975,9 @@
1969
1975
  ],
1970
1976
  "DD_TRACE_AWS_SDK_CLOUDWATCHLOGS_BATCH_PROPAGATION_ENABLED": [
1971
1977
  {
1972
- "implementation": "A",
1978
+ "implementation": "B",
1973
1979
  "type": "boolean",
1974
- "default": "true"
1980
+ "default": "false"
1975
1981
  }
1976
1982
  ],
1977
1983
  "DD_TRACE_AWS_SDK_CLOUDWATCHLOGS_ENABLED": [
@@ -1983,9 +1989,9 @@
1983
1989
  ],
1984
1990
  "DD_TRACE_AWS_SDK_DYNAMODB_BATCH_PROPAGATION_ENABLED": [
1985
1991
  {
1986
- "implementation": "A",
1992
+ "implementation": "B",
1987
1993
  "type": "boolean",
1988
- "default": "true"
1994
+ "default": "false"
1989
1995
  }
1990
1996
  ],
1991
1997
  "DD_TRACE_AWS_SDK_DYNAMODB_ENABLED": [
@@ -2004,9 +2010,9 @@
2004
2010
  ],
2005
2011
  "DD_TRACE_AWS_SDK_EVENTBRIDGE_BATCH_PROPAGATION_ENABLED": [
2006
2012
  {
2007
- "implementation": "A",
2013
+ "implementation": "B",
2008
2014
  "type": "boolean",
2009
- "default": "true"
2015
+ "default": "false"
2010
2016
  }
2011
2017
  ],
2012
2018
  "DD_TRACE_AWS_SDK_EVENTBRIDGE_ENABLED": [
@@ -2018,9 +2024,9 @@
2018
2024
  ],
2019
2025
  "DD_TRACE_AWS_SDK_KINESIS_BATCH_PROPAGATION_ENABLED": [
2020
2026
  {
2021
- "implementation": "A",
2027
+ "implementation": "B",
2022
2028
  "type": "boolean",
2023
- "default": "true"
2029
+ "default": "false"
2024
2030
  }
2025
2031
  ],
2026
2032
  "DD_TRACE_AWS_SDK_KINESIS_ENABLED": [
@@ -2032,9 +2038,9 @@
2032
2038
  ],
2033
2039
  "DD_TRACE_AWS_SDK_LAMBDA_BATCH_PROPAGATION_ENABLED": [
2034
2040
  {
2035
- "implementation": "A",
2041
+ "implementation": "B",
2036
2042
  "type": "boolean",
2037
- "default": "true"
2043
+ "default": "false"
2038
2044
  }
2039
2045
  ],
2040
2046
  "DD_TRACE_AWS_SDK_LAMBDA_ENABLED": [
@@ -2053,9 +2059,9 @@
2053
2059
  ],
2054
2060
  "DD_TRACE_AWS_SDK_REDSHIFT_BATCH_PROPAGATION_ENABLED": [
2055
2061
  {
2056
- "implementation": "A",
2062
+ "implementation": "B",
2057
2063
  "type": "boolean",
2058
- "default": "true"
2064
+ "default": "false"
2059
2065
  }
2060
2066
  ],
2061
2067
  "DD_TRACE_AWS_SDK_REDSHIFT_ENABLED": [
@@ -2067,9 +2073,9 @@
2067
2073
  ],
2068
2074
  "DD_TRACE_AWS_SDK_S3_BATCH_PROPAGATION_ENABLED": [
2069
2075
  {
2070
- "implementation": "A",
2076
+ "implementation": "B",
2071
2077
  "type": "boolean",
2072
- "default": "true"
2078
+ "default": "false"
2073
2079
  }
2074
2080
  ],
2075
2081
  "DD_TRACE_AWS_SDK_S3_ENABLED": [
@@ -2081,9 +2087,9 @@
2081
2087
  ],
2082
2088
  "DD_TRACE_AWS_SDK_SFN_BATCH_PROPAGATION_ENABLED": [
2083
2089
  {
2084
- "implementation": "A",
2090
+ "implementation": "B",
2085
2091
  "type": "boolean",
2086
- "default": "true"
2092
+ "default": "false"
2087
2093
  }
2088
2094
  ],
2089
2095
  "DD_TRACE_AWS_SDK_SFN_CLIENT_ENABLED": [
@@ -2109,9 +2115,9 @@
2109
2115
  ],
2110
2116
  "DD_TRACE_AWS_SDK_SNS_BATCH_PROPAGATION_ENABLED": [
2111
2117
  {
2112
- "implementation": "A",
2118
+ "implementation": "B",
2113
2119
  "type": "boolean",
2114
- "default": "true"
2120
+ "default": "false"
2115
2121
  }
2116
2122
  ],
2117
2123
  "DD_TRACE_AWS_SDK_SNS_ENABLED": [
@@ -2123,9 +2129,9 @@
2123
2129
  ],
2124
2130
  "DD_TRACE_AWS_SDK_SQS_BATCH_PROPAGATION_ENABLED": [
2125
2131
  {
2126
- "implementation": "A",
2132
+ "implementation": "B",
2127
2133
  "type": "boolean",
2128
- "default": "true"
2134
+ "default": "false"
2129
2135
  }
2130
2136
  ],
2131
2137
  "DD_TRACE_AWS_SDK_SQS_ENABLED": [
@@ -2137,9 +2143,9 @@
2137
2143
  ],
2138
2144
  "DD_TRACE_AWS_SDK_STATES_BATCH_PROPAGATION_ENABLED": [
2139
2145
  {
2140
- "implementation": "A",
2146
+ "implementation": "B",
2141
2147
  "type": "boolean",
2142
- "default": "true"
2148
+ "default": "false"
2143
2149
  }
2144
2150
  ],
2145
2151
  "DD_TRACE_AWS_SDK_STATES_ENABLED": [
@@ -2151,9 +2157,9 @@
2151
2157
  ],
2152
2158
  "DD_TRACE_AWS_SDK_STEPFUNCTIONS_BATCH_PROPAGATION_ENABLED": [
2153
2159
  {
2154
- "implementation": "A",
2160
+ "implementation": "B",
2155
2161
  "type": "boolean",
2156
- "default": "true"
2162
+ "default": "false"
2157
2163
  }
2158
2164
  ],
2159
2165
  "DD_TRACE_AWS_SDK_STEPFUNCTIONS_ENABLED": [
@@ -2485,6 +2491,13 @@
2485
2491
  "default": "true"
2486
2492
  }
2487
2493
  ],
2494
+ "DD_TRACE_ELECTRON_ENABLED": [
2495
+ {
2496
+ "implementation": "A",
2497
+ "type": "boolean",
2498
+ "default": "true"
2499
+ }
2500
+ ],
2488
2501
  "DD_TRACE_ENABLED": [
2489
2502
  {
2490
2503
  "implementation": "A",
@@ -33,7 +33,7 @@ class DataStreamsCheckpointer {
33
33
  * Examples include kafka, kinesis, sns etc.
34
34
  * @param {string} source - The source of data. This can be a topic, exchange or stream name.
35
35
  * @param {object} carrier - The carrier object to extract context from.
36
- * @param {boolean} [manualCheckpoint=true] - Whether this checkpoint was manually set. Keep true if manually
36
+ * @param {boolean} [manualCheckpoint] - Whether this checkpoint was manually set. Keep true if manually
37
37
  * instrumenting. Manual instrumentation always overrides automatic
38
38
  * instrumentation in the case a call is both manually and automatically
39
39
  * instrumented.
@@ -60,7 +60,7 @@ class DataStreamsCheckpointer {
60
60
  * Tags the active span (or the provided span) with the transaction ID and checkpoint name.
61
61
  * @param {string} transactionId - The transaction identifier to track.
62
62
  * @param {string} checkpointName - The logical checkpoint name.
63
- * @param {object|null} [span=null] - Span to tag. Defaults to the currently active span.
63
+ * @param {object|null} [span] - Span to tag. Defaults to the currently active span.
64
64
  */
65
65
  trackTransaction (transactionId, checkpointName, span = null) {
66
66
  if (!this.config.dsmEnabled) return
@@ -28,7 +28,8 @@ function lazyClass (classGetter, methods = [], staticMethods = []) {
28
28
  }
29
29
 
30
30
  const activate = () => {
31
- return (ActiveClass = ActiveClass || classGetter())
31
+ ActiveClass ??= classGetter()
32
+ return ActiveClass
32
33
  }
33
34
 
34
35
  for (const method of methods) {
@@ -26,7 +26,7 @@ class DataStreamsManager {
26
26
  /**
27
27
  * @param {string} transactionId
28
28
  * @param {string} checkpointName
29
- * @param {object|null} [span=null]
29
+ * @param {object|null} [span]
30
30
  */
31
31
  trackTransaction (transactionId, checkpointName, span = null) {
32
32
  this._dataStreamsProcessor.trackTransaction(transactionId, checkpointName, span)
@@ -237,7 +237,7 @@ class DataStreamsProcessor {
237
237
 
238
238
  if (this.enabled) {
239
239
  this.timer = setInterval(this.onInterval.bind(this), flushInterval)
240
- this.timer.unref()
240
+ this.timer.unref?.()
241
241
  }
242
242
  globalThis[Symbol.for('dd-trace')].beforeExitHandlers.add(this.onInterval.bind(this))
243
243
  }
@@ -271,8 +271,7 @@ class DataStreamsProcessor {
271
271
  */
272
272
  bucketFromTimestamp (timestamp) {
273
273
  const bucketTime = Math.round(timestamp - (timestamp % this.bucketSizeNs))
274
- const bucket = this.buckets.forTime(bucketTime)
275
- return bucket
274
+ return this.buckets.forTime(bucketTime)
276
275
  }
277
276
 
278
277
  recordCheckpoint (checkpoint, span = null) {
@@ -378,7 +377,7 @@ class DataStreamsProcessor {
378
377
  *
379
378
  * @param {string} transactionId - Truncated to 255 UTF-8 bytes.
380
379
  * @param {string} checkpointName - Mapped to a stable 1-byte ID; silently dropped if registry full.
381
- * @param {import('../opentelemetry/span').Span|null} [span=null] - Active span to tag with DSM transaction metadata.
380
+ * @param {import('../opentelemetry/span').Span|null} [span] - Active span to tag with DSM transaction metadata.
382
381
  */
383
382
  trackTransaction (transactionId, checkpointName, span = null) {
384
383
  if (!this.enabled) {
@@ -72,9 +72,9 @@ module.exports = {
72
72
  * @param {string} objectId - The ID of the object to get the properties of
73
73
  * @param {GetObjectOptions} opts - The options for the snapshot. Also used to track the deadline and communicate the
74
74
  * deadline overrun to the caller using the `deadlineReached` flag.
75
- * @param {number} [depth=0] - The depth of the object. Only used internally by this module to track the current depth
75
+ * @param {number} [depth] - The depth of the object. Only used internally by this module to track the current depth
76
76
  * and should not be set by the caller.
77
- * @param {boolean} [collection=false] - Whether the object is a collection. Only used internally by this module to
77
+ * @param {boolean} [collection] - Whether the object is a collection. Only used internally by this module to
78
78
  * track the current object type and should not be set by the caller.
79
79
  * @returns {Promise<object[]>} The properties of the object
80
80
  */
@@ -175,6 +175,7 @@ function parseJsonToTree (json) {
175
175
  switch (json.charCodeAt(index)) {
176
176
  case 34: { // 34: double quote
177
177
  const stringStart = index + 1
178
+ // eslint-disable-next-line sonarjs/updated-loop-counter -- skip past the string token
178
179
  index = skipString(json, index)
179
180
  const stringLength = index - stringStart
180
181
 
@@ -63,7 +63,7 @@ function setCacheTTL () {
63
63
  // Clear cache a few seconds after it was last used
64
64
  cache.clear()
65
65
  }
66
- }, 5000).unref()
66
+ }, 5000).unref?.()
67
67
  }
68
68
 
69
69
  function loadInlineSourceMap (data) {
@@ -230,7 +230,8 @@ session.on('Debugger.scriptParsed', ({ params }) => {
230
230
  if (reEvaluateProbesTimer === null) {
231
231
  reEvaluateProbesTimer = setTimeout(() => {
232
232
  session.emit('scriptLoadingStabilized')
233
- }, 500).unref()
233
+ }, 500)
234
+ reEvaluateProbesTimer.unref?.()
234
235
  } else {
235
236
  reEvaluateProbesTimer.refresh()
236
237
  }
@@ -132,13 +132,13 @@ function start (config, rcInstance) {
132
132
  cleanup(error) // Be nice, clean up now that the worker thread encountered an issue and we can't continue
133
133
  })
134
134
 
135
- worker.unref()
136
- probeChannel.port1.unref()
137
- probeChannel.port2.unref()
138
- logChannel.port1.unref()
139
- logChannel.port2.unref()
140
- configChannel.port1.unref()
141
- configChannel.port2.unref()
135
+ worker.unref?.()
136
+ probeChannel.port1.unref?.()
137
+ probeChannel.port2.unref?.()
138
+ logChannel.port1.unref?.()
139
+ logChannel.port2.unref?.()
140
+ configChannel.port1.unref?.()
141
+ configChannel.port2.unref?.()
142
142
  })
143
143
  }
144
144
 
@@ -161,7 +161,7 @@ class DogStatsDClient {
161
161
  const socket = dgram.createSocket(type)
162
162
 
163
163
  socket.on('error', () => {})
164
- socket.unref()
164
+ socket.unref?.()
165
165
 
166
166
  return socket
167
167
  }
@@ -361,7 +361,7 @@ class CustomMetrics {
361
361
  const flush = this.flush.bind(this)
362
362
 
363
363
  // TODO(bengl) this magic number should be configurable
364
- setInterval(flush, 10 * 1000).unref()
364
+ setInterval(flush, 10 * 1000).unref?.()
365
365
 
366
366
  globalThis[Symbol.for('dd-trace')].beforeExitHandlers.add(flush)
367
367
  }