dd-trace 6.16.0 → 6.18.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 (356) hide show
  1. package/ci/diagnose.js +0 -23
  2. package/ci/test-optimization-validation/approval-artifacts.js +0 -3
  3. package/ci/test-optimization-validation/approval.js +0 -6
  4. package/ci/test-optimization-validation/artifact-id.js +0 -1
  5. package/ci/test-optimization-validation/bounded-json.js +0 -1
  6. package/ci/test-optimization-validation/cli.js +0 -12
  7. package/ci/test-optimization-validation/command-output-policy.js +0 -1
  8. package/ci/test-optimization-validation/command-runner.js +0 -3
  9. package/ci/test-optimization-validation/environment.js +0 -4
  10. package/ci/test-optimization-validation/executable-approval.js +0 -1
  11. package/ci/test-optimization-validation/executable.js +0 -5
  12. package/ci/test-optimization-validation/framework-adapters/cucumber.js +0 -6
  13. package/ci/test-optimization-validation/framework-adapters/cypress.js +0 -3
  14. package/ci/test-optimization-validation/framework-adapters/playwright.js +0 -6
  15. package/ci/test-optimization-validation/framework-adapters/vitest.js +0 -4
  16. package/ci/test-optimization-validation/generated-test-contract.js +0 -5
  17. package/ci/test-optimization-validation/generated-verifier.js +0 -1
  18. package/ci/test-optimization-validation/literal-environment.js +0 -1
  19. package/ci/test-optimization-validation/manifest-scaffold.js +0 -17
  20. package/ci/test-optimization-validation/manifest-schema.js +0 -21
  21. package/ci/test-optimization-validation/offline-fixtures.js +0 -4
  22. package/ci/test-optimization-validation/plan-writer.js +0 -11
  23. package/ci/test-optimization-validation/preflight-runner.js +0 -1
  24. package/ci/test-optimization-validation/redaction.js +0 -4
  25. package/ci/test-optimization-validation/report-writer.js +0 -16
  26. package/ci/test-optimization-validation/runner-command.js +0 -3
  27. package/ci/test-optimization-validation/runner-contract.js +0 -4
  28. package/ci/test-optimization-validation/safe-files.js +0 -1
  29. package/ci/test-optimization-validation/scenarios/basic-reporting.js +0 -1
  30. package/ci/test-optimization-validation/scenarios/ci-wiring.js +0 -1
  31. package/ci/test-optimization-validation/source-text.js +0 -3
  32. package/ci/vitest-no-worker-init-setup.mjs +41 -16
  33. package/index.d.ts +208 -0
  34. package/package.json +17 -16
  35. package/packages/datadog-esbuild/src/utils.js +0 -2
  36. package/packages/datadog-instrumentations/src/aerospike.js +28 -6
  37. package/packages/datadog-instrumentations/src/aws-durable-execution-sdk-js.js +0 -2
  38. package/packages/datadog-instrumentations/src/aws-sdk.js +0 -2
  39. package/packages/datadog-instrumentations/src/claude-agent-sdk.js +0 -2
  40. package/packages/datadog-instrumentations/src/console.js +97 -0
  41. package/packages/datadog-instrumentations/src/cucumber.js +77 -12
  42. package/packages/datadog-instrumentations/src/cypress-config.js +27 -38
  43. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +6 -0
  44. package/packages/datadog-instrumentations/src/helpers/channel.js +0 -2
  45. package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +2 -1
  46. package/packages/datadog-instrumentations/src/helpers/graphql-jit-runtime.js +0 -5
  47. package/packages/datadog-instrumentations/src/helpers/hooks.js +8 -6
  48. package/packages/datadog-instrumentations/src/helpers/instrumentation-utils.js +0 -3
  49. package/packages/datadog-instrumentations/src/helpers/pool-acquire.js +0 -6
  50. package/packages/datadog-instrumentations/src/helpers/register.js +24 -0
  51. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +111 -26
  52. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentation-registry.js +41 -0
  53. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +3 -17
  54. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/playwright.js +55 -0
  55. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/postgres.js +36 -0
  56. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/supabase.js +128 -0
  57. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +13 -0
  58. package/packages/datadog-instrumentations/src/helpers/rewriter/targets.js +28 -3
  59. package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +20 -0
  60. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms/postgres.js +388 -0
  61. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +0 -5
  62. package/packages/datadog-instrumentations/src/helpers/router-helper.js +0 -1
  63. package/packages/datadog-instrumentations/src/jest.js +165 -51
  64. package/packages/datadog-instrumentations/src/knex.js +0 -1
  65. package/packages/datadog-instrumentations/src/mariadb-bundle.js +0 -24
  66. package/packages/datadog-instrumentations/src/mariadb.js +0 -2
  67. package/packages/datadog-instrumentations/src/mocha/common.js +0 -1
  68. package/packages/datadog-instrumentations/src/mocha/main.js +25 -26
  69. package/packages/datadog-instrumentations/src/mocha/utils.js +119 -49
  70. package/packages/datadog-instrumentations/src/mocha/webdriverio-protocol.js +0 -6
  71. package/packages/datadog-instrumentations/src/mocha/worker.js +14 -17
  72. package/packages/datadog-instrumentations/src/mysql2.js +0 -2
  73. package/packages/datadog-instrumentations/src/openai-realtime/audio-accumulator.js +241 -0
  74. package/packages/datadog-instrumentations/src/openai-realtime/events.js +76 -0
  75. package/packages/datadog-instrumentations/src/openai-realtime/index.js +301 -0
  76. package/packages/datadog-instrumentations/src/openai-realtime/session.js +998 -0
  77. package/packages/datadog-instrumentations/src/openai-realtime/turns.js +211 -0
  78. package/packages/datadog-instrumentations/src/openai.js +51 -12
  79. package/packages/datadog-instrumentations/src/oracledb.js +9 -3
  80. package/packages/datadog-instrumentations/src/playwright-reporter.js +6 -20
  81. package/packages/datadog-instrumentations/src/playwright.js +280 -56
  82. package/packages/datadog-instrumentations/src/{azure-cosmos.js → postgres.js} +1 -1
  83. package/packages/datadog-instrumentations/src/router.js +0 -2
  84. package/packages/datadog-instrumentations/src/rum-browser-scripts.js +0 -2
  85. package/packages/datadog-instrumentations/src/sequelize.js +0 -1
  86. package/packages/datadog-instrumentations/src/supabase.js +15 -0
  87. package/packages/datadog-instrumentations/src/undici.js +7 -3
  88. package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +18 -18
  89. package/packages/datadog-instrumentations/src/vitest-main.js +121 -30
  90. package/packages/datadog-instrumentations/src/vitest-util.js +7 -1
  91. package/packages/datadog-instrumentations/src/vitest-worker.js +49 -13
  92. package/packages/datadog-instrumentations/src/webdriverio.js +44 -47
  93. package/packages/datadog-instrumentations/src/ws.js +41 -2
  94. package/packages/datadog-plugin-ai/src/utils.js +0 -2
  95. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/trace-checkpoint.js +0 -1
  96. package/packages/datadog-plugin-aws-durable-execution-sdk-js/src/util.js +0 -2
  97. package/packages/datadog-plugin-aws-sdk/src/base.js +0 -1
  98. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +0 -1
  99. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +0 -1
  100. package/packages/datadog-plugin-aws-sdk/src/util.js +0 -1
  101. package/packages/datadog-plugin-azure-durable-functions/src/index.js +0 -1
  102. package/packages/datadog-plugin-cucumber/src/index.js +9 -0
  103. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +211 -85
  104. package/packages/datadog-plugin-cypress/src/finalization.js +0 -3
  105. package/packages/datadog-plugin-cypress/src/index.js +3 -1
  106. package/packages/datadog-plugin-cypress/src/source-map-utils.js +0 -4
  107. package/packages/datadog-plugin-cypress/src/support.js +52 -7
  108. package/packages/datadog-plugin-graphql/src/resolve-error.js +1 -2
  109. package/packages/datadog-plugin-graphql/src/utils.js +0 -5
  110. package/packages/datadog-plugin-jest/src/index.js +12 -0
  111. package/packages/datadog-plugin-kafkajs/src/producer.js +0 -1
  112. package/packages/datadog-plugin-mocha/src/index.js +38 -11
  113. package/packages/datadog-plugin-mongodb-core/src/query.js +0 -1
  114. package/packages/datadog-plugin-openai/src/index.js +16 -1
  115. package/packages/datadog-plugin-openai/src/realtime.js +144 -0
  116. package/packages/datadog-plugin-openai-agents/src/integration.js +0 -4
  117. package/packages/datadog-plugin-openai-agents/src/util.js +0 -1
  118. package/packages/datadog-plugin-playwright/src/index.js +81 -9
  119. package/packages/datadog-plugin-postgres/src/index.js +167 -0
  120. package/packages/datadog-plugin-prisma/src/datadog-tracing-helper.js +0 -1
  121. package/packages/datadog-plugin-redis/src/index.js +15 -1
  122. package/packages/datadog-plugin-supabase/src/error.js +18 -0
  123. package/packages/datadog-plugin-supabase/src/index.js +21 -0
  124. package/packages/datadog-plugin-supabase/src/supabase-auth-js-gotrueclient-getuser.js +69 -0
  125. package/packages/datadog-plugin-supabase/src/supabase-functions-js-functionsclient-invoke.js +70 -0
  126. package/packages/datadog-plugin-supabase/src/supabase-postgrest-js-postgrestbuilder-then.js +122 -0
  127. package/packages/datadog-plugin-supabase/src/supabase-realtime-js-realtimechannel-send.js +66 -0
  128. package/packages/datadog-plugin-supabase/src/supabase-storage-js-handle-request.js +93 -0
  129. package/packages/datadog-plugin-supabase/src/url.js +17 -0
  130. package/packages/datadog-plugin-vitest/src/index.js +9 -0
  131. package/packages/datadog-plugin-ws/src/producer.js +1 -1
  132. package/packages/datadog-plugin-ws/src/util.js +0 -4
  133. package/packages/datadog-shimmer/src/shimmer.js +14 -10
  134. package/packages/datadog-turbopack/index.js +4 -7
  135. package/packages/datadog-turbopack/src/loader.js +6 -18
  136. package/packages/datadog-webpack/src/loader.js +0 -1
  137. package/packages/dd-trace/src/agent/info.js +5 -4
  138. package/packages/dd-trace/src/aiguard/client.js +2 -3
  139. package/packages/dd-trace/src/aiguard/evaluation.js +6 -12
  140. package/packages/dd-trace/src/aiguard/index.js +2 -2
  141. package/packages/dd-trace/src/aiguard/integrations/index.js +1 -1
  142. package/packages/dd-trace/src/aiguard/integrations/openai.js +81 -7
  143. package/packages/dd-trace/src/aiguard/messages/anthropic.js +0 -2
  144. package/packages/dd-trace/src/aiguard/messages/openai.js +64 -1
  145. package/packages/dd-trace/src/aiguard/messages/utils.js +0 -1
  146. package/packages/dd-trace/src/aiguard/redaction.js +0 -1
  147. package/packages/dd-trace/src/aiguard/sdk.js +1 -1
  148. package/packages/dd-trace/src/appsec/activation.js +1 -1
  149. package/packages/dd-trace/src/appsec/api_security/normalized-route.js +0 -5
  150. package/packages/dd-trace/src/appsec/api_security/sampler.js +0 -4
  151. package/packages/dd-trace/src/appsec/blocking/index.js +3 -3
  152. package/packages/dd-trace/src/appsec/downstream_requests.js +1 -4
  153. package/packages/dd-trace/src/appsec/iast/index.js +1 -1
  154. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +5 -5
  155. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -1
  156. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
  157. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +3 -3
  158. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +8 -10
  159. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +2 -2
  160. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +4 -1
  161. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +7 -7
  162. package/packages/dd-trace/src/appsec/index.js +2 -2
  163. package/packages/dd-trace/src/appsec/lambda.js +71 -2
  164. package/packages/dd-trace/src/appsec/rasp/utils.js +5 -1
  165. package/packages/dd-trace/src/appsec/remote_config.js +8 -6
  166. package/packages/dd-trace/src/appsec/reporter.js +10 -6
  167. package/packages/dd-trace/src/appsec/rule_manager.js +3 -3
  168. package/packages/dd-trace/src/appsec/sdk/track_event.js +0 -2
  169. package/packages/dd-trace/src/appsec/waf/index.js +2 -2
  170. package/packages/dd-trace/src/appsec/waf/waf_manager.js +8 -5
  171. package/packages/dd-trace/src/carrier.js +0 -5
  172. package/packages/dd-trace/src/ci-visibility/dynamic-atr-retries.js +104 -0
  173. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +0 -2
  174. package/packages/dd-trace/src/ci-visibility/efd-retry-policy.js +34 -3
  175. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +0 -1
  176. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +0 -1
  177. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +0 -1
  178. package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/index.js +0 -4
  179. package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/msgpack-to-json.js +0 -1
  180. package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/sink.js +0 -2
  181. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +37 -15
  182. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +0 -3
  183. package/packages/dd-trace/src/ci-visibility/exporters/request.js +0 -11
  184. package/packages/dd-trace/src/ci-visibility/exporters/settings-cache-key.js +0 -1
  185. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +0 -1
  186. package/packages/dd-trace/src/ci-visibility/requests/fs-cache.js +0 -6
  187. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +2 -2
  188. package/packages/dd-trace/src/ci-visibility/requests/rate-limit.js +0 -1
  189. package/packages/dd-trace/src/ci-visibility/requests/upload-test-screenshot.js +0 -5
  190. package/packages/dd-trace/src/ci-visibility/requests/video-request.js +0 -1
  191. package/packages/dd-trace/src/ci-visibility/telemetry.js +13 -0
  192. package/packages/dd-trace/src/ci-visibility/test-optimization-cache.js +0 -1
  193. package/packages/dd-trace/src/ci-visibility/test-screenshot.js +0 -2
  194. package/packages/dd-trace/src/ci-visibility/test-video.js +0 -1
  195. package/packages/dd-trace/src/config/defaults.js +3 -2
  196. package/packages/dd-trace/src/config/generated-config-types.d.ts +88 -82
  197. package/packages/dd-trace/src/config/helper.js +0 -1
  198. package/packages/dd-trace/src/config/index.js +31 -30
  199. package/packages/dd-trace/src/config/parsers.js +34 -6
  200. package/packages/dd-trace/src/config/remote_config.js +25 -109
  201. package/packages/dd-trace/src/config/supported-configurations.json +150 -10
  202. package/packages/dd-trace/src/datastreams/encoding.js +0 -1
  203. package/packages/dd-trace/src/datastreams/pathway.js +0 -1
  204. package/packages/dd-trace/src/debugger/constants.js +10 -0
  205. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +62 -10
  206. package/packages/dd-trace/src/debugger/devtools_client/config.js +4 -1
  207. package/packages/dd-trace/src/debugger/devtools_client/guardrail-metrics.js +15 -0
  208. package/packages/dd-trace/src/debugger/devtools_client/index.js +103 -27
  209. package/packages/dd-trace/src/debugger/devtools_client/json-buffer.js +50 -7
  210. package/packages/dd-trace/src/debugger/devtools_client/log.js +3 -1
  211. package/packages/dd-trace/src/debugger/devtools_client/probe_sampler.js +21 -8
  212. package/packages/dd-trace/src/debugger/devtools_client/send.js +41 -15
  213. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +53 -13
  214. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +118 -71
  215. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +5 -3
  216. package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +0 -3
  217. package/packages/dd-trace/src/debugger/devtools_client/status.js +21 -7
  218. package/packages/dd-trace/src/debugger/guardrail-metrics.js +167 -0
  219. package/packages/dd-trace/src/debugger/index.js +51 -3
  220. package/packages/dd-trace/src/debugger/inspect-segment.js +0 -3
  221. package/packages/dd-trace/src/debugger/probe_sampler.js +133 -9
  222. package/packages/dd-trace/src/debugger/probe_sampler_constants.js +31 -1
  223. package/packages/dd-trace/src/dogstatsd.js +0 -23
  224. package/packages/dd-trace/src/encode/0.4-cross-payload.js +0 -3
  225. package/packages/dd-trace/src/encode/0.4.js +0 -7
  226. package/packages/dd-trace/src/encode/0.5.js +0 -2
  227. package/packages/dd-trace/src/encode/tags-processors.js +0 -1
  228. package/packages/dd-trace/src/evp_proxy/constants.js +2 -0
  229. package/packages/dd-trace/src/evp_proxy/direct.js +17 -13
  230. package/packages/dd-trace/src/evp_proxy/discovery.js +14 -11
  231. package/packages/dd-trace/src/evp_proxy/path.js +21 -9
  232. package/packages/dd-trace/src/exporters/agent/writer.js +0 -1
  233. package/packages/dd-trace/src/exporters/agentless/index.js +0 -1
  234. package/packages/dd-trace/src/exporters/agentless/intake.js +0 -1
  235. package/packages/dd-trace/src/exporters/agentless/writer.js +0 -3
  236. package/packages/dd-trace/src/exporters/common/final-flush-request-tracker.js +0 -6
  237. package/packages/dd-trace/src/exporters/common/request.js +1 -0
  238. package/packages/dd-trace/src/exporters/common/url.js +33 -4
  239. package/packages/dd-trace/src/exporters/common/writer.js +0 -2
  240. package/packages/dd-trace/src/id.js +0 -11
  241. package/packages/dd-trace/src/llmobs/audio-codec.js +192 -0
  242. package/packages/dd-trace/src/llmobs/audio-utils.js +121 -0
  243. package/packages/dd-trace/src/llmobs/constants/audio.js +35 -0
  244. package/packages/dd-trace/src/llmobs/constants/prompts.js +14 -0
  245. package/packages/dd-trace/src/llmobs/constants/tags.js +17 -0
  246. package/packages/dd-trace/src/llmobs/eval-metric.js +0 -6
  247. package/packages/dd-trace/src/llmobs/experiments/dataset.js +0 -4
  248. package/packages/dd-trace/src/llmobs/experiments/experiment.js +0 -3
  249. package/packages/dd-trace/src/llmobs/experiments/index.js +7 -6
  250. package/packages/dd-trace/src/llmobs/experiments/util.js +1 -11
  251. package/packages/dd-trace/src/llmobs/index.js +1 -3
  252. package/packages/dd-trace/src/llmobs/noop.js +10 -0
  253. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +0 -4
  254. package/packages/dd-trace/src/llmobs/plugins/anthropic/util.js +0 -1
  255. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +0 -4
  256. package/packages/dd-trace/src/llmobs/plugins/modelcontextprotocol-sdk/utils.js +0 -2
  257. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +0 -2
  258. package/packages/dd-trace/src/llmobs/plugins/openai/index.js +4 -6
  259. package/packages/dd-trace/src/llmobs/plugins/openai/realtime.js +285 -0
  260. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +16 -3
  261. package/packages/dd-trace/src/llmobs/prompts/cache.js +272 -0
  262. package/packages/dd-trace/src/llmobs/prompts/manager.js +647 -0
  263. package/packages/dd-trace/src/llmobs/prompts/noop.js +29 -0
  264. package/packages/dd-trace/src/llmobs/prompts/prompt.js +158 -0
  265. package/packages/dd-trace/src/llmobs/sdk.js +21 -6
  266. package/packages/dd-trace/src/llmobs/span_processor.js +81 -2
  267. package/packages/dd-trace/src/llmobs/tagger.js +39 -11
  268. package/packages/dd-trace/src/llmobs/telemetry.js +36 -4
  269. package/packages/dd-trace/src/llmobs/util.js +0 -34
  270. package/packages/dd-trace/src/llmobs/writers/base.js +0 -1
  271. package/packages/dd-trace/src/llmobs/writers/util.js +1 -2
  272. package/packages/dd-trace/src/log/channels.js +3 -0
  273. package/packages/dd-trace/src/log/index.js +23 -5
  274. package/packages/dd-trace/src/log-submission/log-submission-plugin.js +74 -6
  275. package/packages/dd-trace/src/msgpack/chunk.js +0 -1
  276. package/packages/dd-trace/src/openfeature/agentless_configuration_source.js +0 -12
  277. package/packages/dd-trace/src/openfeature/configuration_source.js +4 -1
  278. package/packages/dd-trace/src/openfeature/encoding.js +0 -2
  279. package/packages/dd-trace/src/openfeature/eval-metrics-hook.js +0 -1
  280. package/packages/dd-trace/src/openfeature/flagging_provider.js +3 -3
  281. package/packages/dd-trace/src/openfeature/index.js +6 -6
  282. package/packages/dd-trace/src/openfeature/span-enrichment-hook.js +0 -1
  283. package/packages/dd-trace/src/openfeature/span-enrichment.js +0 -4
  284. package/packages/dd-trace/src/openfeature/writers/base.js +90 -23
  285. package/packages/dd-trace/src/openfeature/writers/exposures.js +4 -5
  286. package/packages/dd-trace/src/openfeature/writers/util.js +104 -37
  287. package/packages/dd-trace/src/opentelemetry/logs/logger.js +0 -1
  288. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +0 -1
  289. package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +0 -1
  290. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +0 -2
  291. package/packages/dd-trace/src/opentelemetry/metrics/meter_provider.js +0 -1
  292. package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_transformer.js +0 -1
  293. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +0 -1
  294. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +1 -14
  295. package/packages/dd-trace/src/opentelemetry/metrics/time.js +0 -1
  296. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +30 -13
  297. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +0 -1
  298. package/packages/dd-trace/src/opentelemetry/span-helpers.js +0 -1
  299. package/packages/dd-trace/src/opentelemetry/trace/otlp_http_trace_exporter.js +0 -1
  300. package/packages/dd-trace/src/opentelemetry/trace/otlp_transformer.js +0 -3
  301. package/packages/dd-trace/src/opentracing/propagation/text_map.js +0 -6
  302. package/packages/dd-trace/src/opentracing/span_context.js +0 -1
  303. package/packages/dd-trace/src/opentracing/tracer.js +3 -3
  304. package/packages/dd-trace/src/otel-thread-ctx.js +38 -11
  305. package/packages/dd-trace/src/payload-tagging/tagging.js +15 -3
  306. package/packages/dd-trace/src/plugin_manager.js +27 -8
  307. package/packages/dd-trace/src/plugins/ci_plugin.js +1 -2
  308. package/packages/dd-trace/src/plugins/database.js +2 -6
  309. package/packages/dd-trace/src/plugins/index.js +7 -0
  310. package/packages/dd-trace/src/plugins/plugin.js +0 -4
  311. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  312. package/packages/dd-trace/src/plugins/util/git.js +1 -3
  313. package/packages/dd-trace/src/plugins/util/http-otel-semantics.js +0 -1
  314. package/packages/dd-trace/src/plugins/util/llm.js +0 -2
  315. package/packages/dd-trace/src/plugins/util/status-validator.js +0 -1
  316. package/packages/dd-trace/src/plugins/util/test.js +26 -20
  317. package/packages/dd-trace/src/plugins/util/url.js +0 -5
  318. package/packages/dd-trace/src/priority_sampler.js +0 -6
  319. package/packages/dd-trace/src/process-tags/index.js +0 -1
  320. package/packages/dd-trace/src/profiler.js +132 -35
  321. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +0 -1
  322. package/packages/dd-trace/src/profiling/profiler.js +101 -41
  323. package/packages/dd-trace/src/profiling/ssi-heuristics.js +29 -15
  324. package/packages/dd-trace/src/propagation-hash/index.js +0 -1
  325. package/packages/dd-trace/src/proxy.js +23 -47
  326. package/packages/dd-trace/src/random_sampler.js +0 -4
  327. package/packages/dd-trace/src/rate_limiter.js +0 -4
  328. package/packages/dd-trace/src/remote_config/capabilities.js +1 -9
  329. package/packages/dd-trace/src/remote_config/index.js +0 -1
  330. package/packages/dd-trace/src/runtime_metrics/otlp_runtime_metrics.js +0 -3
  331. package/packages/dd-trace/src/sampler.js +0 -4
  332. package/packages/dd-trace/src/sampling_rule.js +0 -7
  333. package/packages/dd-trace/src/serverless/vercel.js +0 -1
  334. package/packages/dd-trace/src/serverless.js +0 -1
  335. package/packages/dd-trace/src/service-naming/index.js +0 -1
  336. package/packages/dd-trace/src/service-naming/schemas/util.js +0 -1
  337. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +7 -0
  338. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +5 -0
  339. package/packages/dd-trace/src/span_processor.js +2 -2
  340. package/packages/dd-trace/src/span_sampler.js +0 -1
  341. package/packages/dd-trace/src/standalone/product.js +2 -2
  342. package/packages/dd-trace/src/standalone/tracesource.js +0 -1
  343. package/packages/dd-trace/src/startup-log.js +1 -1
  344. package/packages/dd-trace/src/telemetry/endpoints.js +0 -8
  345. package/packages/dd-trace/src/telemetry/logs/index.js +16 -5
  346. package/packages/dd-trace/src/telemetry/logs/log-collector.js +16 -6
  347. package/packages/dd-trace/src/telemetry/metrics.js +0 -2
  348. package/packages/dd-trace/src/telemetry/send-data.js +2 -1
  349. package/packages/dd-trace/src/telemetry/telemetry.js +4 -1
  350. package/packages/dd-trace/src/tracer.js +5 -4
  351. package/packages/dd-trace/src/util.js +13 -1
  352. package/vendor/dist/@datadog/openfeature-node-server/index.js +1 -1
  353. package/packages/datadog-instrumentations/src/bullmq.js +0 -11
  354. package/packages/datadog-instrumentations/src/langchain.js +0 -7
  355. package/packages/datadog-instrumentations/src/langgraph.js +0 -7
  356. package/packages/datadog-instrumentations/src/mercurius.js +0 -11
@@ -8,7 +8,7 @@ const { getValueFromEnvSources } = require('../config/helper')
8
8
  // `config/defaults` defers its own `dns` require until after it exports, so this no longer hits
9
9
  // the `config/defaults` <-> log parse cycle that motivated the lazy require below.
10
10
  const { defaults } = require('../config/defaults')
11
- const { traceChannel, debugChannel, infoChannel, warnChannel, errorChannel } = require('./channels')
11
+ const { traceChannel, debugChannel, infoChannel, warnChannel, errorChannel, errorRecordChannel } = require('./channels')
12
12
  const logWriter = require('./writer')
13
13
  const { Log, LogConfig, NoTransmitError } = require('./log')
14
14
 
@@ -95,10 +95,25 @@ const log = {
95
95
  }
96
96
 
97
97
  function publishFormatted (ch, formatter, ...args) {
98
- if (ch.hasSubscribers) {
99
- const log = Log.parse(...args)
100
- const { formatted, cause } = getErrorLog(log)
98
+ const publishRecord = ch === errorChannel && errorRecordChannel.hasSubscribers
99
+ const publishLog = ch.hasSubscribers
100
+ if (!publishLog && !publishRecord) return
101
+
102
+ let record
103
+ try {
104
+ const parsed = Log.parse(...args)
105
+ if (!publishLog && !parsed.sendViaTelemetry) return
106
+ record = getErrorLog(parsed)
107
+ } catch (err) {
108
+ // Telemetry must not expose parsing failures while the configured logger is disabled.
109
+ if (!publishLog) return
110
+ throw err
111
+ }
112
+
113
+ if (publishRecord) errorRecordChannel.publish(record)
101
114
 
115
+ if (publishLog) {
116
+ const { formatted, cause } = record
102
117
  // calling twice ch.publish() because Error cause is only available in Node.js v16.9.0
103
118
  // TODO: replace it with Error(message, { cause }) when cause has broad support
104
119
  if (formatted) ch.publish(formatter?.(formatted) || formatted)
@@ -109,7 +124,10 @@ function publishFormatted (ch, formatter, ...args) {
109
124
  function getErrorLog (err) {
110
125
  if (typeof err?.delegate === 'function') {
111
126
  const result = err.delegate(...err.args)
112
- return Array.isArray(result) ? Log.parse(...result) : Log.parse(result)
127
+ const resolved = Array.isArray(result) ? Log.parse(...result) : Log.parse(result)
128
+ resolved.cause ??= err.cause
129
+ resolved.sendViaTelemetry &&= err.sendViaTelemetry
130
+ return resolved
113
131
  }
114
132
  return err
115
133
  }
@@ -1,7 +1,13 @@
1
1
  'use strict'
2
2
 
3
3
  const { Writable } = require('node:stream')
4
+ const { formatWithOptions } = require('node:util')
4
5
 
6
+ const { channel } = require('dc-polyfill')
7
+
8
+ const { LOG } = require('../../../../ext/formats')
9
+ const { SPAN_TYPE } = require('../../../../ext/tags')
10
+ const { storage } = require('../../../datadog-core')
5
11
  const FinalFlushRequestTracker = require('../exporters/common/final-flush-request-tracker')
6
12
  const request = require('../exporters/common/request')
7
13
  const log = require('../log')
@@ -11,6 +17,13 @@ const MAX_BATCH_BYTES = 5 * 1024 * 1024
11
17
  const MAX_BATCH_LOGS = 1000
12
18
  const BATCH_FLUSH_INTERVAL = 1000
13
19
  const FINAL_FLUSH_TIMEOUT = 60_000
20
+ const CONSOLE_METHOD_TO_STATUS = {
21
+ error: 'error',
22
+ warn: 'warn',
23
+ }
24
+ const TEST_OPTIMIZATION_SPAN_TYPES = new Set(['test', 'test_session_end', 'test_suite_end'])
25
+ const consoleConfigureCh = channel('ci:log-submission:console:configure')
26
+ const legacyStorage = storage('legacy')
14
27
 
15
28
  /**
16
29
  * @returns {Error & { code: string }}
@@ -59,12 +72,36 @@ function asTracerConfig (config) {
59
72
  /**
60
73
  * @param {import('../config/config-base')} config
61
74
  * @param {string} source
62
- * @returns {string}
63
75
  */
64
76
  function getLogSubmissionPath (config, source) {
65
77
  return `/api/v2/logs?${new URLSearchParams({ ddsource: source, service: config.service })}`
66
78
  }
67
79
 
80
+ /**
81
+ * @param {object | undefined} store
82
+ */
83
+ function getTestOptimizationSpan (store) {
84
+ const activeSpan = store?.span
85
+ if (activeSpan && TEST_OPTIMIZATION_SPAN_TYPES.has(activeSpan.context().getTag(SPAN_TYPE))) {
86
+ return activeSpan
87
+ }
88
+
89
+ // Child instrumentation spans replace store.span, so recover the enclosing test from their trace.
90
+ const traceSpans = activeSpan?.context()._trace?.started
91
+ if (traceSpans) {
92
+ let nestedTestSuiteSpan
93
+ for (const span of traceSpans) {
94
+ const spanType = span.context().getTag(SPAN_TYPE)
95
+ if (spanType === 'test') return span
96
+ if (spanType === 'test_suite_end') nestedTestSuiteSpan = span
97
+ }
98
+ if (nestedTestSuiteSpan) return nestedTestSuiteSpan
99
+ }
100
+
101
+ const testSuiteSpan = store?.testSuiteSpan
102
+ if (testSuiteSpan?.context().getTag(SPAN_TYPE) === 'test_suite_end') return testSuiteSpan
103
+ }
104
+
68
105
  class LogSubmissionPlugin extends Plugin {
69
106
  static id = 'log-submission'
70
107
 
@@ -79,6 +116,22 @@ class LogSubmissionPlugin extends Plugin {
79
116
  #timer
80
117
  #beforeExitHandler = () => this.#flushLogs()
81
118
  #createWinstonJsonFormat
119
+ #getConsoleLogHolder = () => {
120
+ if (!this._enabled ||
121
+ !this.#logSubmissionUrl ||
122
+ !this.#config?.isCiVisibility ||
123
+ !this.#config.DD_AGENTLESS_LOG_SUBMISSION_ENABLED) return
124
+
125
+ const store = legacyStorage.getStore()
126
+ if (store?.noop) return
127
+ const span = getTestOptimizationSpan(store)
128
+ if (!span) return
129
+
130
+ const logHolder = {}
131
+ this.tracer.inject(span, LOG, logHolder)
132
+ return logHolder.dd ? logHolder : undefined
133
+ }
134
+
82
135
  #winstonStreamClass
83
136
  // Winston formats records inside its transports, not at logger.write time, so (unlike Bunyan/Pino)
84
137
  // the instrumentation can't publish a post-format line. A Stream transport pipes format.json()
@@ -135,6 +188,20 @@ class LogSubmissionPlugin extends Plugin {
135
188
  this.addSub('ci:log-submission:log', (payload) => {
136
189
  this.#enqueueLog(payload)
137
190
  })
191
+ this.addSub('ci:log-submission:console', ({ args, logHolder, method }) => {
192
+ let message
193
+ try {
194
+ message = formatWithOptions({}, ...args)
195
+ } catch (error) {
196
+ log.error('Could not format console log for automatic submission', error)
197
+ return
198
+ }
199
+
200
+ this.#enqueueLog({
201
+ source: 'nodejs',
202
+ message: { dd: logHolder.dd, message, status: CONSOLE_METHOD_TO_STATUS[method] },
203
+ })
204
+ })
138
205
  this.addSub('ci:log-submission:flush', ({ onDone } = {}) => {
139
206
  if (!onDone) {
140
207
  this.#flushLogs()
@@ -149,7 +216,6 @@ class LogSubmissionPlugin extends Plugin {
149
216
 
150
217
  /**
151
218
  * @param {boolean | (Record<string, unknown> & { enabled: boolean })} config
152
- * @returns {void}
153
219
  */
154
220
  configure (config) {
155
221
  if (this._enabled) this.#flushLogs()
@@ -160,6 +226,12 @@ class LogSubmissionPlugin extends Plugin {
160
226
  ? getLogSubmissionUrl(this.#config)
161
227
  : undefined
162
228
  super.configure(config)
229
+ if (this._enabled &&
230
+ this.#logSubmissionUrl &&
231
+ this.#config?.isCiVisibility &&
232
+ this.#config.DD_AGENTLESS_LOG_SUBMISSION_ENABLED) {
233
+ consoleConfigureCh.publish({ getLogHolder: this.#getConsoleLogHolder })
234
+ }
163
235
 
164
236
  const beforeExitHandlers = globalThis[Symbol.for('dd-trace')].beforeExitHandlers
165
237
  if (this._enabled) {
@@ -171,7 +243,6 @@ class LogSubmissionPlugin extends Plugin {
171
243
 
172
244
  /**
173
245
  * @param {{ source: string, message: string | Record<string, unknown> }} payload
174
- * @returns {void}
175
246
  */
176
247
  #enqueueLog ({ source, message }) {
177
248
  if (!this.#logSubmissionUrl) return
@@ -210,9 +281,6 @@ class LogSubmissionPlugin extends Plugin {
210
281
  }
211
282
  }
212
283
 
213
- /**
214
- * @returns {void}
215
- */
216
284
  #flushLogs () {
217
285
  clearTimeout(this.#timer)
218
286
  this.#timer = undefined
@@ -67,7 +67,6 @@ class MsgpackChunk {
67
67
  * buffer at the resulting position.
68
68
  *
69
69
  * @param {string} value
70
- * @returns {number}
71
70
  */
72
71
  write (value) {
73
72
  const length = Buffer.byteLength(value)
@@ -64,9 +64,6 @@ class AgentlessConfigurationSource {
64
64
  this.#applyConfiguration = applyConfiguration
65
65
  }
66
66
 
67
- /**
68
- * @returns {void}
69
- */
70
67
  start () {
71
68
  if (this.#abortController) return
72
69
 
@@ -75,9 +72,6 @@ class AgentlessConfigurationSource {
75
72
  this.#poll(abortController)
76
73
  }
77
74
 
78
- /**
79
- * @returns {void}
80
- */
81
75
  stop () {
82
76
  this.#abortController?.abort()
83
77
  this.#abortController = undefined
@@ -175,7 +169,6 @@ class AgentlessConfigurationSource {
175
169
 
176
170
  /**
177
171
  * @param {PollResponse} response
178
- * @returns {void}
179
172
  */
180
173
  #apply (response) {
181
174
  const statusCode = response.statusCode
@@ -218,7 +211,6 @@ class AgentlessConfigurationSource {
218
211
  * @param {number | undefined} statusCode
219
212
  * @param {unknown} error
220
213
  * @param {number} attempts
221
- * @returns {void}
222
214
  */
223
215
  #warnFailure (statusCode, error, attempts) {
224
216
  const category = statusCode === 401 || statusCode === 403
@@ -279,7 +271,6 @@ function parseConfiguration (body) {
279
271
 
280
272
  /**
281
273
  * @param {unknown} error
282
- * @returns {string}
283
274
  */
284
275
  function errorMessage (error) {
285
276
  return error instanceof Error ? error.message : String(error ?? 'request was not sent')
@@ -287,7 +278,6 @@ function errorMessage (error) {
287
278
 
288
279
  /**
289
280
  * @param {number | undefined} status
290
- * @returns {boolean}
291
281
  */
292
282
  function isRetryableStatus (status) {
293
283
  return status === 408 || status === 429 || (status >= 500 && status <= 599)
@@ -297,7 +287,6 @@ function isRetryableStatus (status) {
297
287
  * @param {number} pollIntervalMs
298
288
  * @param {number} attempt
299
289
  * @param {number} random
300
- * @returns {number}
301
290
  */
302
291
  function retryDelay (pollIntervalMs, attempt, random) {
303
292
  const base = attempt === 1
@@ -310,7 +299,6 @@ function retryDelay (pollIntervalMs, attempt, random) {
310
299
  * @param {number} value
311
300
  * @param {number} minimum
312
301
  * @param {number} maximum
313
- * @returns {number}
314
302
  */
315
303
  function clamp (value, minimum, maximum) {
316
304
  return Math.max(minimum, Math.min(maximum, value))
@@ -1,5 +1,6 @@
1
1
  'use strict'
2
2
 
3
+ const { createSiteUrl } = require('../exporters/common/url')
3
4
  const log = require('../log')
4
5
 
5
6
  const DEFAULT_AGENTLESS_PATH = '/api/v2/feature-flagging/config/rules-based/server'
@@ -60,7 +61,9 @@ function endpoint (config, configuredBaseUrl) {
60
61
  const configured = configuredBaseUrl?.trim()
61
62
 
62
63
  if (!configured) {
63
- const url = new URL(`https://ufc-server.ff-cdn.${config.site.toLowerCase()}${DEFAULT_AGENTLESS_PATH}`)
64
+ const url = createSiteUrl(config.site, 'ufc-server.ff-cdn')
65
+ if (url === undefined) throw new Error('Invalid DD_SITE for Feature Flagging agentless configuration')
66
+ url.pathname = DEFAULT_AGENTLESS_PATH
64
67
  if (config.env) url.searchParams.set('dd_env', config.env)
65
68
  return url
66
69
  }
@@ -29,7 +29,6 @@ function encodeVarint (value) {
29
29
  * 4. Base64 encode the result
30
30
  *
31
31
  * @param {Set<number>} serialIds - Set of serial IDs to encode
32
- * @returns {string} Base64-encoded delta-varint string
33
32
  */
34
33
  function encodeDeltaVarint (serialIds) {
35
34
  if (!serialIds || serialIds.size === 0) {
@@ -57,7 +56,6 @@ function encodeDeltaVarint (serialIds) {
57
56
  * Hash a targeting key using SHA256.
58
57
  *
59
58
  * @param {string} targetingKey - The targeting key to hash
60
- * @returns {string} Lowercase hex digest of the SHA256 hash
61
59
  */
62
60
  function hashTargetingKey (targetingKey) {
63
61
  return crypto.createHash('sha256').update(targetingKey).digest('hex')
@@ -72,7 +72,6 @@ class EvalMetricsHook {
72
72
  * @param {{ flagKey: string }} hookContext - Hook context containing the flag key
73
73
  * @param {{ variant?: string, reason?: string, errorCode?: string, flagMetadata?: object }} evaluationDetails
74
74
  * - Full evaluation details
75
- * @returns {void}
76
75
  */
77
76
  finally (hookContext, evaluationDetails) {
78
77
  if (!this.#enabled) return
@@ -27,12 +27,12 @@ class FlaggingProvider extends DatadogNodeServerProvider {
27
27
  constructor (tracer, config) {
28
28
  super({
29
29
  exposureChannel: channel(EXPOSURE_CHANNEL),
30
- initializationTimeoutMs: config.experimental.flaggingProvider.initializationTimeoutMs,
30
+ initializationTimeoutMs: config.featureFlags.DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS,
31
31
  })
32
32
 
33
33
  this.hooks.push(new EvalMetricsHook(config))
34
34
 
35
- if (config.experimental.flaggingProvider.spanEnrichment?.enabled) {
35
+ if (config.featureFlags.DD_EXPERIMENTAL_FLAGGING_PROVIDER_SPAN_ENRICHMENT_ENABLED) {
36
36
  this.#spanEnrichmentHook = new SpanEnrichmentHook(tracer)
37
37
  // @ts-expect-error The upstream constructor always initializes its optional hooks property.
38
38
  this.hooks.push(this.#spanEnrichmentHook)
@@ -42,7 +42,7 @@ class FlaggingProvider extends DatadogNodeServerProvider {
42
42
  }
43
43
 
44
44
  log.debug('%s created with timeout: %dms', this.constructor.name,
45
- config.experimental.flaggingProvider.initializationTimeoutMs)
45
+ config.featureFlags.DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS)
46
46
 
47
47
  this.#configurationSource = configurationSource.create(config, this.setConfiguration.bind(this))
48
48
  this.#configurationSource?.start()
@@ -3,17 +3,17 @@
3
3
  const { channel } = require('dc-polyfill')
4
4
  const log = require('../log')
5
5
  const ExposuresWriter = require('./writers/exposures')
6
- const { setExposureDeliveryStrategy } = require('./writers/util')
6
+ const { setEventDeliveryStrategy } = require('./writers/util')
7
7
 
8
8
  const exposureSubmitCh = channel('ffe:exposure:submit')
9
9
  const flushCh = channel('ffe:writers:flush')
10
10
 
11
11
  let exposuresWriter = null
12
+ let stopEventDeliveryStrategy
12
13
 
13
14
  /**
14
15
  * @private
15
16
  * @param {object | Array<object>} exposureEvents - Exposure events channel subscriber
16
- * @returns {void}
17
17
  */
18
18
  function _handleExposureSubmit (exposureEvents) {
19
19
  if (!exposuresWriter) return
@@ -23,7 +23,6 @@ function _handleExposureSubmit (exposureEvents) {
23
23
  /**
24
24
  * Channel subscriber for manually flushing the exposures writer
25
25
  * @private
26
- * @returns {void}
27
26
  */
28
27
  function _handleFlush () {
29
28
  exposuresWriter?.flush()
@@ -32,7 +31,6 @@ function _handleFlush () {
32
31
  /**
33
32
  * Enables the OpenFeature module and sets up FF&E writer and channel subscribers
34
33
  * @param {import('../config')} config - Tracer configuration object
35
- * @returns {void}
36
34
  */
37
35
  function enable (config) {
38
36
  if (exposuresWriter) {
@@ -45,7 +43,7 @@ function enable (config) {
45
43
  exposureSubmitCh.subscribe(_handleExposureSubmit)
46
44
  flushCh.subscribe(_handleFlush)
47
45
 
48
- setExposureDeliveryStrategy(config, (enabled, route) => {
46
+ stopEventDeliveryStrategy = setEventDeliveryStrategy(config, (enabled, route) => {
49
47
  if (exposuresWriter !== writer) return
50
48
 
51
49
  writer.setEnabled(enabled, route)
@@ -54,11 +52,13 @@ function enable (config) {
54
52
 
55
53
  /**
56
54
  * Disables the OpenFeature module and cleans up resources
57
- * @returns {void}
58
55
  */
59
56
  function disable () {
60
57
  if (!exposuresWriter) return
61
58
 
59
+ stopEventDeliveryStrategy?.()
60
+ stopEventDeliveryStrategy = undefined
61
+
62
62
  if (exposureSubmitCh.hasSubscribers) {
63
63
  exposureSubmitCh.unsubscribe(_handleExposureSubmit)
64
64
  }
@@ -69,7 +69,6 @@ class SpanEnrichmentHook {
69
69
  * @param {boolean} [evaluationDetails.flagMetadata.__dd_do_log] - Whether to log subject
70
70
  * @param {string} [evaluationDetails.variant] - Variant key if flag was found in UFC
71
71
  * @param {boolean|string|number|object} [evaluationDetails.value] - Evaluated value
72
- * @returns {void}
73
72
  */
74
73
  finally (hookContext, evaluationDetails) {
75
74
  try {
@@ -30,7 +30,6 @@ class SpanEnrichmentState {
30
30
  * Add a serial ID from a flag evaluation.
31
31
  *
32
32
  * @param {number} serialId - The serial ID to add
33
- * @returns {boolean} True if added, false if limit reached
34
33
  */
35
34
  addSerialId (serialId) {
36
35
  if (this._serialIds.size >= MAX_SERIAL_IDS) {
@@ -47,7 +46,6 @@ class SpanEnrichmentState {
47
46
  *
48
47
  * @param {string} targetingKey - The targeting key (will be hashed)
49
48
  * @param {number} serialId - The serial ID associated with this evaluation
50
- * @returns {boolean} True if added, false if limit reached
51
49
  */
52
50
  addSubject (targetingKey, serialId) {
53
51
  const hashedKey = hashTargetingKey(targetingKey)
@@ -77,7 +75,6 @@ class SpanEnrichmentState {
77
75
  *
78
76
  * @param {string} flagKey - The flag key
79
77
  * @param {boolean|string|number|object} defaultValue - The default value used
80
- * @returns {boolean} True if added, false if limit reached
81
78
  */
82
79
  addDefault (flagKey, defaultValue) {
83
80
  if (this._defaults.has(flagKey)) {
@@ -106,7 +103,6 @@ class SpanEnrichmentState {
106
103
  * Note: _subjects is not checked because addSubject() is never called without first
107
104
  * calling addSerialId(), so _subjects having data necessitates _serialIds having data.
108
105
  *
109
- * @returns {boolean} True if there is data to add
110
106
  */
111
107
  hasData () {
112
108
  return this._serialIds.size > 0 || this._defaults.size > 0