dd-trace 6.12.0 → 6.14.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 (251) hide show
  1. package/LICENSE-3rdparty.csv +3 -1
  2. package/ci/init.js +8 -3
  3. package/ci/test-optimization-validation/ci-package-scripts.js +2 -2
  4. package/ci/test-optimization-validation/ci-remediation.js +6 -6
  5. package/ci/test-optimization-validation/command-blocker.js +7 -5
  6. package/ci/test-optimization-validation/framework-adapters/cucumber.js +1 -1
  7. package/ci/test-optimization-validation/framework-adapters/cypress.js +9 -11
  8. package/ci/test-optimization-validation/framework-adapters/vitest.js +3 -3
  9. package/ci/test-optimization-validation/package-check.js +1 -1
  10. package/ci/test-optimization-validation/report-writer.js +7 -5
  11. package/ci/test-optimization-validation/scenarios/ci-wiring.js +5 -4
  12. package/ci/vitest-no-worker-init-runner-setup.mjs +8 -0
  13. package/ci/vitest-no-worker-init-setup.mjs +13 -13
  14. package/ci/vitest-no-worker-init-v5-setup.mjs +4 -0
  15. package/index.d.ts +127 -26
  16. package/package.json +22 -19
  17. package/packages/datadog-esbuild/index.js +3 -1
  18. package/packages/datadog-instrumentations/src/bunyan.js +4 -2
  19. package/packages/datadog-instrumentations/src/cypress-config.js +19 -17
  20. package/packages/datadog-instrumentations/src/fs.js +24 -20
  21. package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -2
  22. package/packages/datadog-instrumentations/src/graphql.js +16 -16
  23. package/packages/datadog-instrumentations/src/helpers/bunyan.js +12 -3
  24. package/packages/datadog-instrumentations/src/helpers/graphql-jit-runtime.js +504 -0
  25. package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -0
  26. package/packages/datadog-instrumentations/src/helpers/pool-acquire.js +266 -0
  27. package/packages/datadog-instrumentations/src/helpers/rewriter/compiler.js +1 -2
  28. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +95 -30
  29. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/ai.js +0 -25
  30. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/graphql-jit.js +83 -0
  31. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/graphql.js +85 -1
  32. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +1 -0
  33. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/mercurius.js +30 -12
  34. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/playwright.js +13 -0
  35. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +279 -0
  36. package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +12 -1
  37. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +562 -27
  38. package/packages/datadog-instrumentations/src/jest.js +165 -38
  39. package/packages/datadog-instrumentations/src/knex.js +76 -0
  40. package/packages/datadog-instrumentations/src/mariadb-bundle.js +1597 -0
  41. package/packages/datadog-instrumentations/src/mariadb.js +13 -0
  42. package/packages/datadog-instrumentations/src/mocha/common.js +59 -2
  43. package/packages/datadog-instrumentations/src/mocha/main.js +25 -15
  44. package/packages/datadog-instrumentations/src/mocha/utils.js +2 -1
  45. package/packages/datadog-instrumentations/src/mocha/webdriverio-protocol.js +98 -0
  46. package/packages/datadog-instrumentations/src/mocha/worker.js +12 -8
  47. package/packages/datadog-instrumentations/src/net.js +14 -17
  48. package/packages/datadog-instrumentations/src/next.js +212 -62
  49. package/packages/datadog-instrumentations/src/openai.js +42 -40
  50. package/packages/datadog-instrumentations/src/pg.js +15 -0
  51. package/packages/datadog-instrumentations/src/pino.js +15 -4
  52. package/packages/datadog-instrumentations/src/playwright.js +137 -27
  53. package/packages/datadog-instrumentations/src/rum-browser-scripts.js +40 -0
  54. package/packages/datadog-instrumentations/src/sequelize.js +94 -2
  55. package/packages/datadog-instrumentations/src/undici.js +53 -4
  56. package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +44 -7
  57. package/packages/datadog-instrumentations/src/vitest-main.js +92 -9
  58. package/packages/datadog-instrumentations/src/vitest-worker.js +82 -14
  59. package/packages/datadog-instrumentations/src/webdriverio.js +986 -1
  60. package/packages/datadog-instrumentations/src/winston.js +6 -3
  61. package/packages/datadog-plugin-amqp10/src/consumer.js +3 -1
  62. package/packages/datadog-plugin-amqp10/src/producer.js +3 -1
  63. package/packages/datadog-plugin-amqp10/src/util.js +2 -1
  64. package/packages/datadog-plugin-avsc/src/schema_iterator.js +6 -1
  65. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +16 -5
  66. package/packages/datadog-plugin-cassandra-driver/src/index.js +8 -3
  67. package/packages/datadog-plugin-cucumber/src/index.js +0 -2
  68. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +262 -48
  69. package/packages/datadog-plugin-cypress/src/support.js +1 -0
  70. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +4 -1
  71. package/packages/datadog-plugin-graphql/src/execute.js +998 -196
  72. package/packages/datadog-plugin-graphql/src/index.js +27 -7
  73. package/packages/datadog-plugin-graphql/src/jit.js +136 -0
  74. package/packages/datadog-plugin-graphql/src/request.js +18 -27
  75. package/packages/datadog-plugin-graphql/src/resolve-error.js +108 -0
  76. package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -2
  77. package/packages/datadog-plugin-graphql/src/tools/transforms.js +45 -3
  78. package/packages/datadog-plugin-graphql/src/utils.js +208 -120
  79. package/packages/datadog-plugin-graphql/src/validate.js +10 -23
  80. package/packages/datadog-plugin-http/src/client.js +2 -15
  81. package/packages/datadog-plugin-http2/src/client.js +2 -15
  82. package/packages/datadog-plugin-jest/src/index.js +0 -6
  83. package/packages/datadog-plugin-langchain/src/tracing.js +7 -0
  84. package/packages/datadog-plugin-mocha/src/index.js +403 -75
  85. package/packages/datadog-plugin-mongodb-core/src/query.js +6 -0
  86. package/packages/datadog-plugin-mysql/src/index.js +41 -15
  87. package/packages/datadog-plugin-net/src/tcp.js +3 -1
  88. package/packages/datadog-plugin-next/src/index.js +63 -29
  89. package/packages/datadog-plugin-openai-agents/src/integration.js +15 -11
  90. package/packages/datadog-plugin-playwright/src/index.js +176 -28
  91. package/packages/datadog-plugin-undici/src/index.js +29 -56
  92. package/packages/datadog-plugin-vitest/src/index.js +6 -12
  93. package/packages/dd-trace/src/aiguard/evaluation.js +96 -21
  94. package/packages/dd-trace/src/aiguard/integrations/vercel-ai.js +2 -3
  95. package/packages/dd-trace/src/aiguard/messages/anthropic.js +29 -10
  96. package/packages/dd-trace/src/aiguard/messages/openai.js +8 -1
  97. package/packages/dd-trace/src/aiguard/messages/vercel-ai.js +20 -6
  98. package/packages/dd-trace/src/aiguard/noop.js +9 -1
  99. package/packages/dd-trace/src/aiguard/redaction.js +183 -0
  100. package/packages/dd-trace/src/aiguard/sdk.js +7 -2
  101. package/packages/dd-trace/src/aiguard/tags.js +2 -0
  102. package/packages/dd-trace/src/appsec/api_security/index.js +23 -6
  103. package/packages/dd-trace/src/appsec/api_security/sampler.js +99 -40
  104. package/packages/dd-trace/src/appsec/graphql.js +6 -2
  105. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +3 -3
  106. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -1
  107. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +8 -2
  108. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +11 -36
  109. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/url-sensitive-analyzer.js +1 -1
  110. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +10 -9
  111. package/packages/dd-trace/src/appsec/lambda.js +44 -26
  112. package/packages/dd-trace/src/appsec/rule_manager.js +2 -0
  113. package/packages/dd-trace/src/ci-visibility/encode/json-encoder.js +32 -2
  114. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +8 -8
  115. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +6 -4
  116. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +20 -4
  117. package/packages/dd-trace/src/ci-visibility/exporters/agentless/request-tracker.js +7 -150
  118. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +7 -6
  119. package/packages/dd-trace/src/ci-visibility/exporters/agents.js +54 -0
  120. package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/writer.js +1 -2
  121. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +397 -234
  122. package/packages/dd-trace/src/ci-visibility/exporters/limits.js +9 -0
  123. package/packages/dd-trace/src/ci-visibility/exporters/request.js +323 -31
  124. package/packages/dd-trace/src/ci-visibility/exporters/settings-cache-key.js +42 -0
  125. package/packages/dd-trace/src/ci-visibility/final-flush.js +21 -0
  126. package/packages/dd-trace/src/ci-visibility/requests/fs-cache.js +57 -18
  127. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +0 -3
  128. package/packages/dd-trace/src/ci-visibility/requests/upload-test-screenshot.js +164 -71
  129. package/packages/dd-trace/src/ci-visibility/requests/video-request.js +176 -0
  130. package/packages/dd-trace/src/ci-visibility/telemetry.js +10 -7
  131. package/packages/dd-trace/src/ci-visibility/test-video.js +61 -0
  132. package/packages/dd-trace/src/config/generated-config-types.d.ts +10 -0
  133. package/packages/dd-trace/src/config/index.js +75 -14
  134. package/packages/dd-trace/src/config/parsers.js +11 -1
  135. package/packages/dd-trace/src/config/stable.js +3 -3
  136. package/packages/dd-trace/src/config/supported-configurations.json +47 -2
  137. package/packages/dd-trace/src/crashtracking/crashtracker.js +82 -18
  138. package/packages/dd-trace/src/debugger/config.js +12 -1
  139. package/packages/dd-trace/src/debugger/constants.js +1 -0
  140. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +2 -1
  141. package/packages/dd-trace/src/debugger/devtools_client/request-options.js +33 -0
  142. package/packages/dd-trace/src/debugger/devtools_client/send.js +7 -39
  143. package/packages/dd-trace/src/debugger/devtools_client/status.js +11 -6
  144. package/packages/dd-trace/src/debugger/devtools_client/tags.js +41 -0
  145. package/packages/dd-trace/src/debugger/index.js +23 -3
  146. package/packages/dd-trace/src/dogstatsd.js +532 -71
  147. package/packages/dd-trace/src/encode/0.4-cross-payload.js +170 -0
  148. package/packages/dd-trace/src/encode/0.4.js +5 -5
  149. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +9 -8
  150. package/packages/dd-trace/src/evp_proxy/direct.js +27 -23
  151. package/packages/dd-trace/src/exporters/agent/index.js +24 -3
  152. package/packages/dd-trace/src/exporters/agent/writer.js +28 -11
  153. package/packages/dd-trace/src/exporters/agentless/index.js +7 -9
  154. package/packages/dd-trace/src/exporters/agentless/writer.js +100 -118
  155. package/packages/dd-trace/src/exporters/common/agents.js +28 -6
  156. package/packages/dd-trace/src/exporters/common/buffering-exporter.js +2 -2
  157. package/packages/dd-trace/src/exporters/common/final-flush-request-tracker.js +191 -0
  158. package/packages/dd-trace/src/exporters/common/request.js +31 -11
  159. package/packages/dd-trace/src/exporters/common/url.js +40 -1
  160. package/packages/dd-trace/src/exporters/common/writer.js +31 -7
  161. package/packages/dd-trace/src/exporters/span-stats/index.js +23 -4
  162. package/packages/dd-trace/src/external-logger/src/index.js +4 -3
  163. package/packages/dd-trace/src/flush.js +105 -0
  164. package/packages/dd-trace/src/id.js +14 -0
  165. package/packages/dd-trace/src/index.js +5 -2
  166. package/packages/dd-trace/src/llmobs/experiments/client.js +4 -0
  167. package/packages/dd-trace/src/llmobs/experiments/dataset.js +52 -2
  168. package/packages/dd-trace/src/llmobs/experiments/experiment.js +420 -105
  169. package/packages/dd-trace/src/llmobs/experiments/index.js +54 -42
  170. package/packages/dd-trace/src/llmobs/experiments/noop.js +39 -8
  171. package/packages/dd-trace/src/llmobs/experiments/result.js +1 -0
  172. package/packages/dd-trace/src/llmobs/experiments/util.js +21 -0
  173. package/packages/dd-trace/src/llmobs/index.js +111 -48
  174. package/packages/dd-trace/src/llmobs/noop.js +2 -1
  175. package/packages/dd-trace/src/llmobs/plugins/ai/ddTelemetry.js +22 -71
  176. package/packages/dd-trace/src/llmobs/plugins/ai/vercelTelemetry.js +23 -13
  177. package/packages/dd-trace/src/llmobs/plugins/anthropic/util.js +8 -4
  178. package/packages/dd-trace/src/llmobs/plugins/claude-agent-sdk/index.js +6 -3
  179. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +7 -0
  180. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +13 -6
  181. package/packages/dd-trace/src/llmobs/plugins/openai-agents/utils.js +5 -7
  182. package/packages/dd-trace/src/llmobs/util.js +0 -33
  183. package/packages/dd-trace/src/llmobs/writers/base.js +106 -53
  184. package/packages/dd-trace/src/log/index.js +7 -1
  185. package/packages/dd-trace/src/log-submission/log-submission-plugin.js +249 -0
  186. package/packages/dd-trace/src/noop/span.js +5 -0
  187. package/packages/dd-trace/src/openfeature/writers/base.js +14 -12
  188. package/packages/dd-trace/src/openfeature/writers/exposures.js +8 -1
  189. package/packages/dd-trace/src/openfeature/writers/util.js +1 -1
  190. package/packages/dd-trace/src/opentelemetry/logs/batch_log_processor.js +45 -3
  191. package/packages/dd-trace/src/opentelemetry/logs/index.js +9 -25
  192. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +7 -4
  193. package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +14 -4
  194. package/packages/dd-trace/src/opentelemetry/metrics/index.js +18 -23
  195. package/packages/dd-trace/src/opentelemetry/metrics/meter_provider.js +8 -0
  196. package/packages/dd-trace/src/opentelemetry/metrics/otlp_http_metric_exporter.js +18 -6
  197. package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_exporter.js +14 -2
  198. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +25 -5
  199. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +61 -25
  200. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +19 -4
  201. package/packages/dd-trace/src/opentelemetry/resource-attributes.js +55 -0
  202. package/packages/dd-trace/src/opentelemetry/trace/index.js +6 -1
  203. package/packages/dd-trace/src/opentelemetry/trace/otlp_http_trace_exporter.js +10 -0
  204. package/packages/dd-trace/src/opentelemetry/tracer.js +26 -2
  205. package/packages/dd-trace/src/opentracing/propagation/text_map.js +494 -351
  206. package/packages/dd-trace/src/opentracing/span.js +28 -0
  207. package/packages/dd-trace/src/otel-thread-ctx.js +23 -5
  208. package/packages/dd-trace/src/payload-tagging/index.js +2 -1
  209. package/packages/dd-trace/src/plugin_manager.js +2 -0
  210. package/packages/dd-trace/src/plugins/ci_plugin.js +1 -6
  211. package/packages/dd-trace/src/plugins/tracing.js +12 -10
  212. package/packages/dd-trace/src/plugins/util/ci.js +3 -1
  213. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +16 -15
  214. package/packages/dd-trace/src/plugins/util/status-validator.js +98 -0
  215. package/packages/dd-trace/src/plugins/util/test.js +157 -41
  216. package/packages/dd-trace/src/plugins/util/url.js +2 -2
  217. package/packages/dd-trace/src/plugins/util/web.js +6 -74
  218. package/packages/dd-trace/src/profiling/config.js +1 -0
  219. package/packages/dd-trace/src/profiling/oom.js +11 -5
  220. package/packages/dd-trace/src/profiling/profiler.js +30 -13
  221. package/packages/dd-trace/src/profiling/profilers/events.js +3 -3
  222. package/packages/dd-trace/src/profiling/profilers/space.js +38 -11
  223. package/packages/dd-trace/src/profiling/profilers/wall.js +14 -14
  224. package/packages/dd-trace/src/profiling/webspan-utils.js +7 -4
  225. package/packages/dd-trace/src/proxy.js +108 -10
  226. package/packages/dd-trace/src/remote_config/index.js +319 -101
  227. package/packages/dd-trace/src/remote_config/scheduler.js +37 -12
  228. package/packages/dd-trace/src/runtime_metrics/client.js +37 -8
  229. package/packages/dd-trace/src/runtime_metrics/index.js +5 -0
  230. package/packages/dd-trace/src/runtime_metrics/otlp_runtime_metrics.js +10 -1
  231. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +22 -7
  232. package/packages/dd-trace/src/sampling_rule.js +36 -9
  233. package/packages/dd-trace/src/serverless/telemetry-delivery-tracker.js +51 -0
  234. package/packages/dd-trace/src/serverless/vercel.js +155 -0
  235. package/packages/dd-trace/src/serverless.js +45 -21
  236. package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
  237. package/packages/dd-trace/src/span_stats.js +64 -31
  238. package/packages/dd-trace/src/startup-log.js +3 -2
  239. package/packages/dd-trace/src/telemetry/agentless-url.js +28 -0
  240. package/packages/dd-trace/src/telemetry/send-data.js +18 -16
  241. package/packages/dd-trace/src/telemetry/session-propagation.js +3 -2
  242. package/packages/dd-trace/src/tracer.js +26 -5
  243. package/packages/dd-trace/src/tracer_metadata.js +11 -3
  244. package/packages/dd-trace/src/web-tags-cache.js +67 -13
  245. package/vendor/dist/@datadog/openfeature-node-server/index.js +1 -1
  246. package/vendor/dist/@datadog/sketches-js/index.js +1 -1
  247. package/vendor/dist/protobufjs/index.js +1 -1
  248. package/vendor/dist/protobufjs/minimal/index.js +1 -1
  249. package/packages/datadog-instrumentations/src/playwright-browser-scripts.js +0 -27
  250. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +0 -53
  251. package/packages/dd-trace/src/encode/agentless-json.js +0 -209
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dd-trace",
3
- "version": "6.12.0",
3
+ "version": "6.14.0",
4
4
  "description": "Datadog APM tracing client for JavaScript",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -22,8 +22,8 @@
22
22
  "type:check": "tsc --noEmit -p tsconfig.dev.json",
23
23
  "type:doc:build": "cd docs && yarn && yarn build",
24
24
  "type:doc:test": "cd docs && yarn && yarn test",
25
- "lint": "node scripts/check_licenses.js && node scripts/check-no-coverage-artifacts.js && node scripts/check-no-mcr-images.js && node scripts/check-docker-image-shas.js && eslint . --concurrency=auto --max-warnings 0 && npm run verify:carrier-fields && npm run lint:codeowners:ci && npm run verify-exercised-tests",
26
- "lint:fix": "node scripts/check_licenses.js && node scripts/check-no-coverage-artifacts.js && node scripts/check-no-mcr-images.js && node scripts/check-docker-image-shas.js && eslint . --concurrency=auto --max-warnings 0 --fix",
25
+ "lint": "node scripts/check_licenses.js && node scripts/check-agents-md-size.js && node scripts/check-no-coverage-artifacts.js && node scripts/check-no-mcr-images.js && node scripts/check-docker-image-shas.js && eslint . --concurrency=auto --max-warnings 0 && npm run verify:carrier-fields && npm run lint:codeowners:ci && npm run verify-exercised-tests",
26
+ "lint:fix": "node scripts/check_licenses.js && node scripts/check-agents-md-size.js && node scripts/check-no-coverage-artifacts.js && node scripts/check-no-mcr-images.js && node scripts/check-docker-image-shas.js && eslint . --concurrency=auto --max-warnings 0 --fix",
27
27
  "verify:carrier-fields": "node scripts/verify-carrier-fields.mjs",
28
28
  "lint:inspect": "npx @eslint/config-inspector@latest",
29
29
  "lint:codeowners": "codeowners-audit",
@@ -41,7 +41,7 @@
41
41
  "test:debugger": "mocha \"packages/dd-trace/test/debugger/**/*.spec.js\"",
42
42
  "test:debugger:ci": "node scripts/c8-ci.js test:debugger",
43
43
  "test:eslint-rules": "node scripts/run-eslint-rule-tests.mjs eslint-rules/*.test.mjs",
44
- "test:trace:core": "node scripts/mocha-parallel-files.js --expose-gc --timeout 30000 -- \"packages/dd-trace/test/*.spec.js\" \"packages/dd-trace/test/{agent,ci-visibility,config,crashtracking,datastreams,encode,exporters,msgpack,opentelemetry,opentracing,payload-tagging,plugins,remote_config,service-naming,standalone,telemetry,external-logger}/**/*.spec.js\"",
44
+ "test:trace:core": "node scripts/mocha-parallel-files.js --expose-gc --timeout 30000 -- \"packages/dd-trace/test/*.spec.js\" \"packages/dd-trace/test/{agent,ci-visibility,config,crashtracking,datastreams,encode,exporters,log-submission,msgpack,opentelemetry,opentracing,payload-tagging,plugins,remote_config,service-naming,standalone,telemetry,external-logger}/**/*.spec.js\"",
45
45
  "test:trace:core:ci": "node scripts/c8-ci.js test:trace:core",
46
46
  "test:trace:guardrails": "mocha \"packages/dd-trace/test/guardrails/**/*.spec.js\"",
47
47
  "test:trace:guardrails:ci": "node scripts/c8-ci.js test:trace:guardrails",
@@ -115,7 +115,7 @@
115
115
  "test:integration:plugins:coverage": "yarn services && node ./integration-tests/coverage/run-suite.js \"packages/datadog-plugin-@(${PLUGINS})/test/integration-test/**/${SPEC:-*}*.spec.js\"",
116
116
  "test:unit:plugins": "mocha \"packages/datadog-instrumentations/test/@(${PLUGINS}).spec.js\" \"packages/datadog-plugin-@(${PLUGINS})/test/**/*.spec.js\" --exclude \"packages/datadog-plugin-@(${PLUGINS})/test/integration-test/**/*.spec.js\"",
117
117
  "test:release": "mocha \"scripts/release/**/*.spec.js\"",
118
- "test:scripts": "mocha \"benchmark/sirun/*.spec.js\" \"scripts/helpers/**/*.spec.js\" \"scripts/*.spec.mjs\"",
118
+ "test:scripts": "mocha \"benchmark/e2e-test-optimization/*.spec.js\" \"benchmark/sirun/*.spec.js\" \"scripts/helpers/**/*.spec.js\" \"scripts/*.spec.mjs\"",
119
119
  "test:shimmer": "mocha \"packages/datadog-shimmer/test/**/*.spec.js\"",
120
120
  "test:shimmer:ci": "node scripts/c8-ci.js test:shimmer",
121
121
  "verify:workflow-job-names": "node scripts/verify-workflow-job-names.js",
@@ -183,12 +183,13 @@
183
183
  "opentracing": ">=0.14.7"
184
184
  },
185
185
  "optionalDependencies": {
186
- "@datadog/libdatadog": "0.12.1",
187
- "@datadog/native-appsec": "11.0.1",
188
- "@datadog/native-iast-taint-tracking": "4.2.0",
189
- "@datadog/native-metrics": "3.1.2",
186
+ "@datadog/libdatadog": "^0.20.0",
187
+ "@datadog/libdatadog-extras": "^0.20.0",
188
+ "@datadog/native-appsec": "11.0.2",
189
+ "@datadog/native-iast-taint-tracking": "4.2.1",
190
+ "@datadog/native-metrics": "4.0.0",
190
191
  "@datadog/pprof": "5.18.1",
191
- "@datadog/wasm-js-rewriter": "5.0.3",
192
+ "@datadog/wasm-js-rewriter": "5.0.4",
192
193
  "@opentelemetry/api": ">=1.0.0 <1.10.0",
193
194
  "@opentelemetry/api-logs": "<1.0.0",
194
195
  "oxc-parser": "^0.132.0"
@@ -200,7 +201,7 @@
200
201
  "@eslint/eslintrc": "^3.3.6",
201
202
  "@eslint/js": "^10.0.1",
202
203
  "@eslint/plugin-kit": "^0.7.2",
203
- "@datadog/openfeature-node-server": "2.1.0",
204
+ "@datadog/openfeature-node-server": "2.2.0",
204
205
  "@msgpack/msgpack": "^3.1.3",
205
206
  "@openfeature/core": "^1.12.0",
206
207
  "@openfeature/server-sdk": "~1.23.0",
@@ -208,28 +209,30 @@
208
209
  "@types/mocha": "^10.0.10",
209
210
  "@types/node": "^18.19.106",
210
211
  "@types/sinon": "^22.0.0",
211
- "@vercel/nft": "^1.10.2",
212
+ "@vercel/nft": "^1.11.0",
212
213
  "@yarnpkg/lockfile": "^1.1.0",
213
- "axios": "^1.19.0",
214
+ "axios": "^1.20.0",
214
215
  "benchmark": "^2.1.4",
215
216
  "body-parser": "^2.3.0",
216
- "bun": "1.3.14",
217
+ "bun": "1.4.0",
217
218
  "c8": "^12.0.0",
218
219
  "codeowners-audit": "^2.9.0",
219
- "eslint": "^10.8.1",
220
- "eslint-plugin-cypress": "^7.0.0",
220
+ "eslint": "^10.9.1",
221
+ "eslint-plugin-cypress": "^7.0.1",
221
222
  "eslint-plugin-import-x": "^4.16.2",
222
- "eslint-plugin-jsdoc": "^64.2.0",
223
- "eslint-plugin-mocha": "^11.3.0",
223
+ "eslint-plugin-jsdoc": "^64.2.1",
224
+ "eslint-plugin-mocha": "^12.0.2",
224
225
  "eslint-plugin-n": "^18.3.0",
225
226
  "eslint-plugin-promise": "^7.3.0",
227
+ "eslint-plugin-regexp": "^3.1.0",
226
228
  "eslint-plugin-sonarjs": "^4.2.0",
227
- "eslint-plugin-unicorn": "^73.0.0",
229
+ "eslint-plugin-unicorn": "^74.0.0",
228
230
  "express": "^5.1.0",
229
231
  "glob": "^10.4.5",
230
232
  "globals": "^17.11.0",
231
233
  "graphql": "*",
232
234
  "husky": "^9.1.7",
235
+ "istanbul-lib-coverage": "^3.2.2",
233
236
  "istanbul-lib-report": "^3.0.0",
234
237
  "istanbul-reports": "^3.0.2",
235
238
  "jsonc-parser": "^3.3.1",
@@ -370,7 +370,9 @@ register(${JSON.stringify(toRegister)}, _, set, get, ${JSON.stringify(data.raw)}
370
370
  return {
371
371
  contents,
372
372
  loader: 'js',
373
- resolveDir: path.dirname(args.path),
373
+ resolveDir: data.internal
374
+ ? build.initialOptions.absWorkingDir ?? process.cwd()
375
+ : path.dirname(args.path),
374
376
  }
375
377
  }
376
378
  if (DD_IAST_ENABLED && args.pluginData?.applicationFile) {
@@ -1,9 +1,11 @@
1
1
  'use strict'
2
2
 
3
3
  const wrapLogger = require('./helpers/bunyan')
4
- const { addHook } = require('./helpers/instrument')
4
+ const { addHook, channel } = require('./helpers/instrument')
5
+
6
+ const logSubmissionCh = channel('ci:log-submission:log')
5
7
 
6
8
  addHook({ name: 'bunyan', versions: ['>=1'] }, Logger => {
7
- wrapLogger(Logger, 'bunyan')
9
+ wrapLogger(Logger, 'bunyan', logSubmissionCh)
8
10
  return Logger
9
11
  })
@@ -67,7 +67,13 @@ function formatFileSystemError (error, fallbackPath) {
67
67
  * @returns {void}
68
68
  */
69
69
  function warnFileCreationFailures (artifact, failures, consequence, customerVisible = false) {
70
- const details = failures.map(({ directory, error }) => formatFileSystemError(error, directory)).join('; ')
70
+ let details = ''
71
+ let isFirstFailure = true
72
+ for (const { directory, error } of failures) {
73
+ if (!isFirstFailure) details += '; '
74
+ details += formatFileSystemError(error, directory)
75
+ isFirstFailure = false
76
+ }
71
77
  const message = 'Datadog could not create %s. Attempts failed: %s. %s'
72
78
 
73
79
  if (customerVisible) {
@@ -790,22 +796,18 @@ function createConfigWrapper (originalConfigFile, wrapperDirectory) {
790
796
  // supported. Guards against ES-module-default shape so TS-authored
791
797
  // configs using `export default` still work.
792
798
  const body = isEsm
793
- ? [
794
- `import originalConfig from ${JSON.stringify(pathToFileURL(originalConfigFile).href)}`,
795
- `import cypressConfig from ${JSON.stringify(pathToFileURL(cypressConfigPath).href)}`,
796
- '',
797
- 'export default cypressConfig.wrapConfig(originalConfig)',
798
- '',
799
- ].join('\n')
800
- : [
801
- `const cypressConfig = require(${JSON.stringify(cypressConfigPath)})`,
802
- `const originalExports = require(${JSON.stringify(originalConfigFile)})`,
803
- 'const originalConfig = originalExports && originalExports.__esModule',
804
- ' ? originalExports.default',
805
- ' : originalExports',
806
- 'module.exports = cypressConfig.wrapConfig(originalConfig)',
807
- '',
808
- ].join('\n')
799
+ ? `import originalConfig from ${JSON.stringify(pathToFileURL(originalConfigFile).href)}
800
+ import cypressConfig from ${JSON.stringify(pathToFileURL(cypressConfigPath).href)}
801
+
802
+ export default cypressConfig.wrapConfig(originalConfig)
803
+ `
804
+ : `const cypressConfig = require(${JSON.stringify(cypressConfigPath)})
805
+ const originalExports = require(${JSON.stringify(originalConfigFile)})
806
+ const originalConfig = originalExports && originalExports.__esModule
807
+ ? originalExports.default
808
+ : originalExports
809
+ module.exports = cypressConfig.wrapConfig(originalConfig)
810
+ `
809
811
 
810
812
  writeExclusiveFile(wrapperFile, body)
811
813
  return wrapperFile
@@ -191,32 +191,36 @@ function wrapCreateStream (original) {
191
191
  const ctx = getMessage(name, ['path', 'options'], arguments)
192
192
 
193
193
  return startChannel.runStores(ctx, () => {
194
- try {
195
- const stream = original.apply(this, arguments)
196
- const onError = error => {
197
- ctx.error = error
198
- errorChannel.publish(ctx)
199
- onFinish()
200
- }
201
- const onFinish = () => {
202
- finishChannel.runStores(ctx, () => {})
203
- stream.removeListener('close', onFinish)
204
- stream.removeListener('end', onFinish)
205
- stream.removeListener('finish', onFinish)
206
- stream.removeListener(errorMonitor, onError)
207
- }
194
+ let stream
208
195
 
209
- stream.once('close', onFinish)
210
- stream.once('end', onFinish)
211
- stream.once('finish', onFinish)
212
- stream.once(errorMonitor, onError)
213
-
214
- return stream
196
+ try {
197
+ stream = original.apply(this, arguments)
215
198
  } catch (error) {
216
199
  ctx.error = error
217
200
  errorChannel.publish(ctx)
218
201
  finishChannel.runStores(ctx, () => {})
202
+ throw error
219
203
  }
204
+
205
+ const onError = error => {
206
+ ctx.error = error
207
+ errorChannel.publish(ctx)
208
+ onFinish()
209
+ }
210
+ const onFinish = () => {
211
+ finishChannel.runStores(ctx, () => {})
212
+ stream.removeListener('close', onFinish)
213
+ stream.removeListener('end', onFinish)
214
+ stream.removeListener('finish', onFinish)
215
+ stream.removeListener(errorMonitor, onError)
216
+ }
217
+
218
+ stream.once('close', onFinish)
219
+ stream.once('end', onFinish)
220
+ stream.once('finish', onFinish)
221
+ stream.once(errorMonitor, onError)
222
+
223
+ return stream
220
224
  })
221
225
  }
222
226
  }
@@ -13,7 +13,7 @@ function wrapGenerate (generate) {
13
13
  const ctx = {
14
14
  request,
15
15
  instance: this,
16
- resource: [this.constructor.name, generate.name].join('.'),
16
+ resource: `${this.constructor.name}.${generate.name}`,
17
17
  }
18
18
 
19
19
  return vertexaiTracingChannel.tracePromise(generate, ctx, this, ...arguments)
@@ -29,7 +29,7 @@ function wrapGenerateStream (generateStream) {
29
29
  const ctx = {
30
30
  request,
31
31
  instance: this,
32
- resource: [this.constructor.name, generateStream.name].join('.'),
32
+ resource: `${this.constructor.name}.${generateStream.name}`,
33
33
  stream: true,
34
34
  }
35
35
 
@@ -3,26 +3,26 @@
3
3
  const { addHook, getHooks } = require('./helpers/instrument')
4
4
 
5
5
  // Orchestrion rewriter handles wrapping of:
6
- // - graphql: execute, parse, validate (CJS + ESM)
7
- // - @graphql-tools/executor: execute, normalizedExecutor (CJS + ESM)
6
+ // - graphql: execute, locatedError, parse, validate (CJS + ESM)
7
+ // - @graphql-tools/executor: execute, handleFieldError, normalizedExecutor (CJS + ESM)
8
8
  // See helpers/rewriter/instrumentations/graphql.js for the full config.
9
- //
10
- // The plugin (packages/datadog-plugin-graphql/src/execute.js) handles the
11
- // `apm:graphql:execute:start` AppSec/WAF contract from inside its bindStart:
12
- // publishing the channel synchronously runs subscribers, and an
13
- // `abortController.abort()` from a subscriber is observed by replacing
14
- // `ctx.arguments[0]` with an object whose getters throw AbortError. The
15
- // orchestrion-emitted wrapper's `catch { ...; throw err }` block propagates
16
- // that throw to the caller of graphql.execute. No outer wrap needed.
17
-
18
- for (const hook of getHooks('graphql')) {
19
- addHook(hook, exports => exports)
20
- }
21
9
 
22
- for (const hook of getHooks('@graphql-tools/executor')) {
23
- addHook(hook, exports => exports)
10
+ /**
11
+ * @param {string} name
12
+ */
13
+ function addRewriterHooks (name) {
14
+ const files = new Set()
15
+ for (const hook of getHooks(name)) {
16
+ if (files.has(hook.file)) continue
17
+ files.add(hook.file)
18
+ addHook(hook, exports => exports)
19
+ }
24
20
  }
25
21
 
22
+ addRewriterHooks('graphql')
23
+ addRewriterHooks('@graphql-tools/executor')
24
+ addRewriterHooks('graphql-jit')
25
+
26
26
  // Module-load hooks: capture references on ddGlobal for cross-plugin access
27
27
  // (read lazily inside each callback so agent.load() between mocha suites can
28
28
  // rebind globalThis[dd-trace] without us stashing a stale reference).
@@ -6,17 +6,26 @@ const { channel } = require('./instrument')
6
6
  /**
7
7
  * @param {{ prototype: object }} Logger
8
8
  * @param {string} id
9
+ * @param {import('node:diagnostics_channel').Channel} [logSubmissionCh]
9
10
  */
10
- module.exports = function wrapLogger (Logger, id) {
11
+ module.exports = function wrapLogger (Logger, id, logSubmissionCh) {
11
12
  const logCh = channel(`apm:${id}:log`)
13
+ // The record must be replaceable before Bunyan emits it, while the serialized line is only available afterward.
14
+ // This before-and-after contract requires the existing runtime wrapper rather than an Orchestrion subscriber.
12
15
  shimmer.wrap(Logger.prototype, '_emit', emit => {
13
16
  return function wrappedEmit (rec) {
14
17
  if (logCh.hasSubscribers) {
15
18
  const payload = { message: rec }
16
19
  logCh.publish(payload)
17
- arguments[0] = payload.message
20
+ rec = arguments[0] = payload.message
18
21
  }
19
- return emit.apply(this, arguments)
22
+
23
+ // Reuse Bunyan's cycle-safe serialization instead of serializing the record again.
24
+ const line = emit.apply(this, arguments)
25
+ if (logSubmissionCh?.hasSubscribers && logCh.hasSubscribers && !arguments[1]) {
26
+ logSubmissionCh.publish({ source: id, message: line ?? rec })
27
+ }
28
+ return line
20
29
  }
21
30
  })
22
31
  }