dd-trace 5.53.0 → 5.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/LICENSE-3rdparty.csv +2 -1
  2. package/index.d.ts +33 -16
  3. package/initialize.mjs +3 -4
  4. package/package.json +36 -34
  5. package/packages/datadog-core/src/utils/src/get.js +1 -1
  6. package/packages/datadog-core/src/utils/src/has.js +1 -1
  7. package/packages/datadog-core/src/utils/src/kebabcase.js +4 -6
  8. package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
  9. package/packages/datadog-core/src/utils/src/pick.js +2 -2
  10. package/packages/datadog-core/src/utils/src/set.js +1 -1
  11. package/packages/datadog-core/src/utils/src/uniq.js +1 -1
  12. package/packages/datadog-instrumentations/src/amqp10.js +19 -17
  13. package/packages/datadog-instrumentations/src/amqplib.js +52 -35
  14. package/packages/datadog-instrumentations/src/apollo.js +2 -2
  15. package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
  16. package/packages/datadog-instrumentations/src/cassandra-driver.js +5 -4
  17. package/packages/datadog-instrumentations/src/child_process.js +1 -2
  18. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +88 -73
  19. package/packages/datadog-instrumentations/src/couchbase.js +3 -3
  20. package/packages/datadog-instrumentations/src/cucumber.js +87 -40
  21. package/packages/datadog-instrumentations/src/cypress.js +2 -1
  22. package/packages/datadog-instrumentations/src/dns.js +1 -1
  23. package/packages/datadog-instrumentations/src/fs.js +1 -1
  24. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +28 -34
  25. package/packages/datadog-instrumentations/src/graphql.js +7 -10
  26. package/packages/datadog-instrumentations/src/grpc/client.js +11 -23
  27. package/packages/datadog-instrumentations/src/grpc/server.js +7 -20
  28. package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +16 -10
  29. package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
  30. package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -1
  31. package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
  32. package/packages/datadog-instrumentations/src/helpers/register.js +5 -7
  33. package/packages/datadog-instrumentations/src/http/client.js +14 -20
  34. package/packages/datadog-instrumentations/src/jest.js +137 -48
  35. package/packages/datadog-instrumentations/src/kafkajs.js +52 -44
  36. package/packages/datadog-instrumentations/src/knex.js +4 -4
  37. package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
  38. package/packages/datadog-instrumentations/src/mariadb.js +38 -61
  39. package/packages/datadog-instrumentations/src/mocha/main.js +63 -24
  40. package/packages/datadog-instrumentations/src/mocha/utils.js +36 -12
  41. package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
  42. package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
  43. package/packages/datadog-instrumentations/src/mysql.js +20 -36
  44. package/packages/datadog-instrumentations/src/mysql2.js +53 -47
  45. package/packages/datadog-instrumentations/src/net.js +1 -1
  46. package/packages/datadog-instrumentations/src/next.js +1 -0
  47. package/packages/datadog-instrumentations/src/nyc.js +1 -1
  48. package/packages/datadog-instrumentations/src/openai.js +21 -23
  49. package/packages/datadog-instrumentations/src/oracledb.js +1 -1
  50. package/packages/datadog-instrumentations/src/pg.js +1 -2
  51. package/packages/datadog-instrumentations/src/playwright.js +112 -69
  52. package/packages/datadog-instrumentations/src/redis.js +3 -3
  53. package/packages/datadog-instrumentations/src/restify.js +2 -2
  54. package/packages/datadog-instrumentations/src/rhea.js +42 -54
  55. package/packages/datadog-instrumentations/src/router.js +22 -25
  56. package/packages/datadog-instrumentations/src/tedious.js +1 -1
  57. package/packages/datadog-instrumentations/src/vitest.js +77 -28
  58. package/packages/datadog-plugin-amqp10/src/consumer.js +7 -3
  59. package/packages/datadog-plugin-amqp10/src/producer.js +7 -3
  60. package/packages/datadog-plugin-amqplib/src/client.js +6 -2
  61. package/packages/datadog-plugin-amqplib/src/consumer.js +7 -3
  62. package/packages/datadog-plugin-amqplib/src/producer.js +7 -3
  63. package/packages/datadog-plugin-amqplib/src/util.js +1 -1
  64. package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -6
  65. package/packages/datadog-plugin-apollo/src/gateway/validate.js +2 -3
  66. package/packages/datadog-plugin-aws-sdk/src/base.js +3 -2
  67. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
  68. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +13 -13
  69. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +24 -31
  70. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
  71. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +6 -6
  72. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +1 -1
  73. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +1 -1
  74. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +4 -5
  75. package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
  76. package/packages/datadog-plugin-aws-sdk/src/util.js +5 -6
  77. package/packages/datadog-plugin-cassandra-driver/src/index.js +1 -1
  78. package/packages/datadog-plugin-child_process/src/index.js +4 -4
  79. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +23 -23
  80. package/packages/datadog-plugin-cucumber/src/index.js +57 -2
  81. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +97 -27
  82. package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
  83. package/packages/datadog-plugin-cypress/src/support.js +24 -5
  84. package/packages/datadog-plugin-express/src/code_origin.js +30 -0
  85. package/packages/datadog-plugin-express/src/index.js +10 -12
  86. package/packages/datadog-plugin-express/src/tracing.js +19 -0
  87. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +7 -3
  88. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +12 -7
  89. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +6 -2
  90. package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +26 -9
  91. package/packages/datadog-plugin-graphql/src/execute.js +2 -2
  92. package/packages/datadog-plugin-graphql/src/index.js +7 -6
  93. package/packages/datadog-plugin-graphql/src/resolve.js +2 -2
  94. package/packages/datadog-plugin-graphql/src/tools/index.js +1 -0
  95. package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -0
  96. package/packages/datadog-plugin-graphql/src/tools/transforms.js +1 -0
  97. package/packages/datadog-plugin-grpc/src/client.js +2 -2
  98. package/packages/datadog-plugin-grpc/src/util.js +2 -2
  99. package/packages/datadog-plugin-http/src/client.js +18 -7
  100. package/packages/datadog-plugin-http2/src/client.js +20 -20
  101. package/packages/datadog-plugin-jest/src/index.js +23 -21
  102. package/packages/datadog-plugin-jest/src/util.js +8 -8
  103. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +3 -1
  104. package/packages/datadog-plugin-kafkajs/src/consumer.js +9 -5
  105. package/packages/datadog-plugin-kafkajs/src/producer.js +8 -3
  106. package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
  107. package/packages/datadog-plugin-langchain/src/handlers/chain.js +7 -7
  108. package/packages/datadog-plugin-langchain/src/handlers/embedding.js +2 -2
  109. package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +6 -4
  110. package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +5 -4
  111. package/packages/datadog-plugin-langchain/src/tracing.js +11 -10
  112. package/packages/datadog-plugin-mariadb/src/index.js +3 -9
  113. package/packages/datadog-plugin-mocha/src/index.js +33 -13
  114. package/packages/datadog-plugin-mongodb-core/src/index.js +1 -1
  115. package/packages/datadog-plugin-mysql/src/index.js +11 -9
  116. package/packages/datadog-plugin-mysql2/src/index.js +16 -0
  117. package/packages/datadog-plugin-net/src/tcp.js +1 -1
  118. package/packages/datadog-plugin-next/src/index.js +6 -5
  119. package/packages/datadog-plugin-openai/src/services.js +6 -10
  120. package/packages/datadog-plugin-openai/src/tracing.js +10 -14
  121. package/packages/datadog-plugin-oracledb/src/index.js +1 -1
  122. package/packages/datadog-plugin-playwright/src/index.js +22 -2
  123. package/packages/datadog-plugin-redis/src/index.js +1 -1
  124. package/packages/datadog-plugin-rhea/src/consumer.js +8 -6
  125. package/packages/datadog-plugin-rhea/src/producer.js +5 -2
  126. package/packages/datadog-plugin-router/src/index.js +1 -1
  127. package/packages/datadog-plugin-selenium/src/index.js +1 -6
  128. package/packages/datadog-plugin-vitest/src/index.js +47 -31
  129. package/packages/datadog-shimmer/src/shimmer.js +4 -8
  130. package/packages/dd-trace/src/appsec/api_security_sampler.js +2 -2
  131. package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
  132. package/packages/dd-trace/src/appsec/blocking.js +6 -20
  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 +1 -1
  135. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +1 -1
  136. package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +4 -6
  137. package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +7 -12
  138. package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +4 -6
  139. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +4 -0
  140. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +9 -12
  141. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +5 -4
  142. package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +2 -3
  143. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
  144. package/packages/dd-trace/src/appsec/iast/index.js +1 -0
  145. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +102 -7
  146. package/packages/dd-trace/src/appsec/iast/path-line.js +7 -8
  147. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +6 -13
  148. package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +6 -6
  149. package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +2 -2
  150. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -3
  151. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +4 -28
  152. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -7
  153. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +3 -4
  154. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
  155. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +5 -7
  156. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
  157. package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +6 -6
  158. package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +1 -1
  159. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +1 -1
  160. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +1 -1
  161. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +7 -7
  162. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +23 -24
  163. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +3 -3
  164. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +4 -4
  165. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +6 -11
  166. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +9 -11
  167. package/packages/dd-trace/src/appsec/index.js +1 -1
  168. package/packages/dd-trace/src/appsec/rasp/index.js +15 -15
  169. package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
  170. package/packages/dd-trace/src/appsec/reporter.js +233 -40
  171. package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
  172. package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
  173. package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -5
  174. package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -5
  175. package/packages/dd-trace/src/appsec/user_tracking.js +3 -5
  176. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +2 -2
  177. package/packages/dd-trace/src/azure_metadata.js +2 -7
  178. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +1 -1
  179. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +2 -2
  180. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +1 -1
  181. package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +3 -3
  182. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
  183. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
  184. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +1 -1
  185. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +6 -4
  186. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +2 -2
  187. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +0 -2
  188. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +1 -1
  189. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +1 -1
  190. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +8 -5
  191. package/packages/dd-trace/src/ci-visibility/telemetry.js +4 -0
  192. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +1 -1
  193. package/packages/dd-trace/src/config.js +82 -51
  194. package/packages/dd-trace/src/config_stable.js +3 -3
  195. package/packages/dd-trace/src/datastreams/encoding.js +9 -9
  196. package/packages/dd-trace/src/datastreams/fnv.js +1 -1
  197. package/packages/dd-trace/src/datastreams/pathway.js +4 -4
  198. package/packages/dd-trace/src/datastreams/processor.js +5 -7
  199. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +1 -1
  200. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +4 -6
  201. package/packages/dd-trace/src/datastreams/size.js +1 -1
  202. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +74 -67
  203. package/packages/dd-trace/src/debugger/devtools_client/condition.js +6 -8
  204. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
  205. package/packages/dd-trace/src/debugger/devtools_client/index.js +7 -1
  206. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
  207. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +1 -1
  208. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +8 -10
  209. package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +3 -3
  210. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
  211. package/packages/dd-trace/src/debugger/devtools_client/state.js +10 -3
  212. package/packages/dd-trace/src/dogstatsd.js +5 -4
  213. package/packages/dd-trace/src/encode/0.4.js +9 -9
  214. package/packages/dd-trace/src/encode/0.5.js +1 -1
  215. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +3 -3
  216. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
  217. package/packages/dd-trace/src/encode/tags-processors.js +1 -1
  218. package/packages/dd-trace/src/exporter.js +6 -6
  219. package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
  220. package/packages/dd-trace/src/exporters/common/docker.js +1 -1
  221. package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
  222. package/packages/dd-trace/src/exporters/common/request.js +1 -1
  223. package/packages/dd-trace/src/exporters/common/util.js +1 -1
  224. package/packages/dd-trace/src/external-logger/src/index.js +5 -5
  225. package/packages/dd-trace/src/flare/file.js +1 -5
  226. package/packages/dd-trace/src/format.js +1 -1
  227. package/packages/dd-trace/src/git_properties.js +1 -1
  228. package/packages/dd-trace/src/id.js +12 -6
  229. package/packages/dd-trace/src/iitm.js +10 -22
  230. package/packages/dd-trace/src/lambda/handler.js +6 -6
  231. package/packages/dd-trace/src/lambda/runtime/patch.js +4 -4
  232. package/packages/dd-trace/src/lambda/runtime/ritm.js +1 -1
  233. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +6 -6
  234. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +2 -6
  235. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -3
  236. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +6 -6
  237. package/packages/dd-trace/src/llmobs/plugins/openai.js +1 -1
  238. package/packages/dd-trace/src/llmobs/sdk.js +2 -2
  239. package/packages/dd-trace/src/llmobs/tagger.js +110 -96
  240. package/packages/dd-trace/src/llmobs/util.js +9 -9
  241. package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
  242. package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
  243. package/packages/dd-trace/src/log/index.js +4 -4
  244. package/packages/dd-trace/src/log/log.js +1 -1
  245. package/packages/dd-trace/src/log/writer.js +2 -2
  246. package/packages/dd-trace/src/msgpack/chunk.js +3 -3
  247. package/packages/dd-trace/src/msgpack/encoder.js +28 -28
  248. package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
  249. package/packages/dd-trace/src/noop/span.js +3 -5
  250. package/packages/dd-trace/src/noop/tracer.js +1 -2
  251. package/packages/dd-trace/src/opentelemetry/span_processor.js +2 -2
  252. package/packages/dd-trace/src/opentelemetry/tracer.js +6 -5
  253. package/packages/dd-trace/src/opentracing/propagation/log.js +6 -8
  254. package/packages/dd-trace/src/opentracing/propagation/text_map.js +27 -23
  255. package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
  256. package/packages/dd-trace/src/opentracing/span.js +9 -14
  257. package/packages/dd-trace/src/opentracing/tracer.js +9 -6
  258. package/packages/dd-trace/src/payload-tagging/index.js +1 -1
  259. package/packages/dd-trace/src/payload-tagging/tagging.js +6 -6
  260. package/packages/dd-trace/src/pkg.js +1 -1
  261. package/packages/dd-trace/src/plugins/ci_plugin.js +62 -10
  262. package/packages/dd-trace/src/plugins/consumer.js +2 -2
  263. package/packages/dd-trace/src/plugins/inbound.js +5 -1
  264. package/packages/dd-trace/src/plugins/index.js +0 -1
  265. package/packages/dd-trace/src/plugins/outbound.js +4 -5
  266. package/packages/dd-trace/src/plugins/plugin.js +1 -1
  267. package/packages/dd-trace/src/plugins/producer.js +2 -2
  268. package/packages/dd-trace/src/plugins/storage.js +2 -2
  269. package/packages/dd-trace/src/plugins/util/ci.js +23 -15
  270. package/packages/dd-trace/src/plugins/util/git.js +165 -11
  271. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +1 -1
  272. package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
  273. package/packages/dd-trace/src/plugins/util/llm.js +27 -10
  274. package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
  275. package/packages/dd-trace/src/plugins/util/test.js +311 -48
  276. package/packages/dd-trace/src/plugins/util/url.js +1 -1
  277. package/packages/dd-trace/src/plugins/util/urlfilter.js +13 -17
  278. package/packages/dd-trace/src/plugins/util/user-provided-git.js +12 -3
  279. package/packages/dd-trace/src/plugins/util/web.js +5 -4
  280. package/packages/dd-trace/src/priority_sampler.js +22 -22
  281. package/packages/dd-trace/src/profiling/config.js +44 -8
  282. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +5 -5
  283. package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
  284. package/packages/dd-trace/src/profiling/profiler.js +37 -2
  285. package/packages/dd-trace/src/profiling/profilers/events.js +14 -17
  286. package/packages/dd-trace/src/profiling/profilers/shared.js +6 -1
  287. package/packages/dd-trace/src/profiling/profilers/space.js +3 -3
  288. package/packages/dd-trace/src/profiling/profilers/wall.js +6 -7
  289. package/packages/dd-trace/src/profiling/ssi-heuristics.js +3 -5
  290. package/packages/dd-trace/src/profiling/tagger.js +3 -5
  291. package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
  292. package/packages/dd-trace/src/proxy.js +7 -9
  293. package/packages/dd-trace/src/random_sampler.js +40 -0
  294. package/packages/dd-trace/src/rate_limiter.js +4 -4
  295. package/packages/dd-trace/src/remote_config/index.js +3 -7
  296. package/packages/dd-trace/src/remote_config/manager.js +25 -13
  297. package/packages/dd-trace/src/require-package-json.js +1 -1
  298. package/packages/dd-trace/src/ritm.js +4 -4
  299. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +2 -2
  300. package/packages/dd-trace/src/sampler.js +33 -4
  301. package/packages/dd-trace/src/sampling_rule.js +12 -3
  302. package/packages/dd-trace/src/scope.js +1 -1
  303. package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
  304. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
  305. package/packages/dd-trace/src/span_processor.js +3 -3
  306. package/packages/dd-trace/src/span_sampler.js +4 -1
  307. package/packages/dd-trace/src/standalone/tracesource.js +1 -1
  308. package/packages/dd-trace/src/startup-log.js +2 -2
  309. package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
  310. package/packages/dd-trace/src/telemetry/logs/log-collector.js +9 -10
  311. package/packages/dd-trace/src/telemetry/metrics.js +10 -5
  312. package/packages/dd-trace/src/telemetry/send-data.js +1 -1
  313. package/packages/dd-trace/src/telemetry/telemetry.js +23 -24
  314. package/packages/dd-trace/src/util.js +1 -1
  315. package/version.js +1 -0
  316. package/packages/datadog-instrumentations/src/paperplane.js +0 -77
  317. package/packages/datadog-plugin-paperplane/src/index.js +0 -25
  318. package/packages/datadog-plugin-paperplane/src/logger.js +0 -11
  319. package/packages/datadog-plugin-paperplane/src/server.js +0 -24
@@ -86,23 +86,23 @@ class LLMObsTagger {
86
86
  // TODO: similarly for the following `tag` methods,
87
87
  // how can we transition from a span weakmap to core API functionality
88
88
  tagLLMIO (span, inputData, outputData) {
89
- this._tagMessages(span, inputData, INPUT_MESSAGES)
90
- this._tagMessages(span, outputData, OUTPUT_MESSAGES)
89
+ this.#tagMessages(span, inputData, INPUT_MESSAGES)
90
+ this.#tagMessages(span, outputData, OUTPUT_MESSAGES)
91
91
  }
92
92
 
93
93
  tagEmbeddingIO (span, inputData, outputData) {
94
- this._tagDocuments(span, inputData, INPUT_DOCUMENTS)
95
- this._tagText(span, outputData, OUTPUT_VALUE)
94
+ this.#tagDocuments(span, inputData, INPUT_DOCUMENTS)
95
+ this.#tagText(span, outputData, OUTPUT_VALUE)
96
96
  }
97
97
 
98
98
  tagRetrievalIO (span, inputData, outputData) {
99
- this._tagText(span, inputData, INPUT_VALUE)
100
- this._tagDocuments(span, outputData, OUTPUT_DOCUMENTS)
99
+ this.#tagText(span, inputData, INPUT_VALUE)
100
+ this.#tagDocuments(span, outputData, OUTPUT_DOCUMENTS)
101
101
  }
102
102
 
103
103
  tagTextIO (span, inputData, outputData) {
104
- this._tagText(span, inputData, INPUT_VALUE)
105
- this._tagText(span, outputData, OUTPUT_VALUE)
104
+ this.#tagText(span, inputData, INPUT_VALUE)
105
+ this.#tagText(span, outputData, OUTPUT_VALUE)
106
106
  }
107
107
 
108
108
  tagMetadata (span, metadata) {
@@ -135,7 +135,7 @@ class LLMObsTagger {
135
135
  if (typeof value === 'number') {
136
136
  filterdMetrics[processedKey] = value
137
137
  } else {
138
- this._handleFailure(`Value for metric '${key}' must be a number, instead got ${value}`, 'invalid_metrics')
138
+ this.#handleFailure(`Value for metric '${key}' must be a number, instead got ${value}`, 'invalid_metrics')
139
139
  }
140
140
  }
141
141
 
@@ -160,7 +160,7 @@ class LLMObsTagger {
160
160
  this._setTag(span, SPAN_KIND, newKind)
161
161
  }
162
162
 
163
- _tagText (span, data, key) {
163
+ #tagText (span, data, key) {
164
164
  if (data) {
165
165
  if (typeof data === 'string') {
166
166
  this._setTag(span, key, data)
@@ -169,142 +169,156 @@ class LLMObsTagger {
169
169
  this._setTag(span, key, JSON.stringify(data))
170
170
  } catch {
171
171
  const type = key === INPUT_VALUE ? 'input' : 'output'
172
- this._handleFailure(`Failed to parse ${type} value, must be JSON serializable.`, 'invalid_io_text')
172
+ this.#handleFailure(`Failed to parse ${type} value, must be JSON serializable.`, 'invalid_io_text')
173
173
  }
174
174
  }
175
175
  }
176
176
  }
177
177
 
178
- _tagDocuments (span, data, key) {
179
- if (data) {
180
- if (!Array.isArray(data)) {
181
- data = [data]
182
- }
178
+ #tagDocuments (span, data, key) {
179
+ if (!data) {
180
+ return
181
+ }
183
182
 
184
- const documents = data.map(document => {
185
- if (typeof document === 'string') {
186
- return { text: document }
187
- }
183
+ if (!Array.isArray(data)) {
184
+ data = [data]
185
+ }
188
186
 
189
- if (document == null || typeof document !== 'object') {
190
- this._handleFailure('Documents must be a string, object, or list of objects.', 'invalid_embedding_io')
191
- return undefined
192
- }
187
+ const documents = []
188
+ for (const document of data) {
189
+ if (typeof document === 'string') {
190
+ documents.push({ text: document })
191
+ continue
192
+ }
193
193
 
194
- const { text, name, id, score } = document
195
- let validDocument = true
194
+ if (document == null || typeof document !== 'object') {
195
+ this.#handleFailure('Documents must be a string, object, or list of objects.', 'invalid_embedding_io')
196
+ continue
197
+ }
196
198
 
197
- if (typeof text !== 'string') {
198
- this._handleFailure('Document text must be a string.', 'invalid_embedding_io')
199
- validDocument = false
200
- }
199
+ const { text, name, id, score } = document
201
200
 
202
- const documentObj = { text }
201
+ const valid = typeof text === 'string'
202
+ if (!valid) {
203
+ this.#handleFailure('Document text must be a string.', 'invalid_embedding_io')
204
+ }
203
205
 
204
- validDocument = this._tagConditionalString(name, 'Document name', documentObj, 'name') && validDocument
205
- validDocument = this._tagConditionalString(id, 'Document ID', documentObj, 'id') && validDocument
206
- validDocument = this._tagConditionalNumber(score, 'Document score', documentObj, 'score') && validDocument
206
+ const documentObj = { text }
207
207
 
208
- return validDocument ? documentObj : undefined
209
- }).filter(doc => !!doc)
208
+ const condition1 = this.#tagConditionalString(name, 'Document name', documentObj, 'name')
209
+ const condition2 = this.#tagConditionalString(id, 'Document ID', documentObj, 'id')
210
+ const condition3 = this.#tagConditionalNumber(score, 'Document score', documentObj, 'score')
210
211
 
211
- if (documents.length) {
212
- this._setTag(span, key, documents)
212
+ if (valid && condition1 && condition2 && condition3) {
213
+ documents.push(documentObj)
213
214
  }
214
215
  }
215
- }
216
216
 
217
- _tagMessages (span, data, key) {
218
- if (data) {
219
- if (!Array.isArray(data)) {
220
- data = [data]
221
- }
217
+ if (documents.length) {
218
+ this._setTag(span, key, documents)
219
+ }
220
+ }
222
221
 
223
- const messages = data.map(message => {
224
- if (typeof message === 'string') {
225
- return { content: message }
226
- }
222
+ #filterToolCalls (toolCalls) {
223
+ if (!Array.isArray(toolCalls)) {
224
+ toolCalls = [toolCalls]
225
+ }
227
226
 
228
- if (message == null || typeof message !== 'object') {
229
- this._handleFailure('Messages must be a string, object, or list of objects', 'invalid_io_messages')
230
- return undefined
231
- }
227
+ const filteredToolCalls = []
228
+ for (const toolCall of toolCalls) {
229
+ if (typeof toolCall !== 'object') {
230
+ this.#handleFailure('Tool call must be an object.', 'invalid_io_messages')
231
+ continue
232
+ }
232
233
 
233
- let validMessage = true
234
+ const { name, arguments: args, toolId, type } = toolCall
235
+ const toolCallObj = {}
234
236
 
235
- const { content = '', role } = message
236
- let toolCalls = message.toolCalls
237
- const messageObj = { content }
237
+ const condition1 = this.#tagConditionalString(name, 'Tool name', toolCallObj, 'name')
238
+ const condition2 = this.#tagConditionalObject(args, 'Tool arguments', toolCallObj, 'arguments')
239
+ const condition3 = this.#tagConditionalString(toolId, 'Tool ID', toolCallObj, 'tool_id')
240
+ const condition4 = this.#tagConditionalString(type, 'Tool type', toolCallObj, 'type')
238
241
 
239
- if (typeof content !== 'string') {
240
- this._handleFailure('Message content must be a string.', 'invalid_io_messages')
241
- validMessage = false
242
- }
242
+ if (condition1 && condition2 && condition3 && condition4) {
243
+ filteredToolCalls.push(toolCallObj)
244
+ }
245
+ }
246
+ return filteredToolCalls
247
+ }
243
248
 
244
- validMessage = this._tagConditionalString(role, 'Message role', messageObj, 'role') && validMessage
249
+ #tagMessages (span, data, key) {
250
+ if (!data) {
251
+ return
252
+ }
253
+ if (!Array.isArray(data)) {
254
+ data = [data]
255
+ }
245
256
 
246
- if (toolCalls) {
247
- if (!Array.isArray(toolCalls)) {
248
- toolCalls = [toolCalls]
249
- }
257
+ const messages = []
250
258
 
251
- const filteredToolCalls = toolCalls.map(toolCall => {
252
- if (typeof toolCall !== 'object') {
253
- this._handleFailure('Tool call must be an object.', 'invalid_io_messages')
254
- return undefined
255
- }
259
+ for (const message of data) {
260
+ if (typeof message === 'string') {
261
+ messages.push({ content: message })
262
+ continue
263
+ }
264
+ if (message == null || typeof message !== 'object') {
265
+ this.#handleFailure('Messages must be a string, object, or list of objects', 'invalid_io_messages')
266
+ continue
267
+ }
256
268
 
257
- let validTool = true
269
+ const { content = '', role } = message
270
+ const toolCalls = message.toolCalls
271
+ const messageObj = { content }
258
272
 
259
- const { name, arguments: args, toolId, type } = toolCall
260
- const toolCallObj = {}
273
+ const valid = typeof content === 'string'
274
+ if (!valid) {
275
+ this.#handleFailure('Message content must be a string.', 'invalid_io_messages')
276
+ }
261
277
 
262
- validTool = this._tagConditionalString(name, 'Tool name', toolCallObj, 'name') && validTool
263
- validTool = this._tagConditionalObject(args, 'Tool arguments', toolCallObj, 'arguments') && validTool
264
- validTool = this._tagConditionalString(toolId, 'Tool ID', toolCallObj, 'tool_id') && validTool
265
- validTool = this._tagConditionalString(type, 'Tool type', toolCallObj, 'type') && validTool
278
+ const condition = this.#tagConditionalString(role, 'Message role', messageObj, 'role')
266
279
 
267
- return validTool ? toolCallObj : undefined
268
- }).filter(toolCall => !!toolCall)
280
+ if (toolCalls) {
281
+ const filteredToolCalls = this.#filterToolCalls(toolCalls)
269
282
 
270
- if (filteredToolCalls.length) {
271
- messageObj.tool_calls = filteredToolCalls
272
- }
283
+ if (filteredToolCalls.length) {
284
+ messageObj.tool_calls = filteredToolCalls
273
285
  }
286
+ }
274
287
 
275
- return validMessage ? messageObj : undefined
276
- }).filter(msg => !!msg)
277
-
278
- if (messages.length) {
279
- this._setTag(span, key, messages)
288
+ if (valid && condition) {
289
+ messages.push(messageObj)
280
290
  }
281
291
  }
292
+
293
+ if (messages.length) {
294
+ this._setTag(span, key, messages)
295
+ }
282
296
  }
283
297
 
284
- _tagConditionalString (data, type, carrier, key) {
298
+ #tagConditionalString (data, type, carrier, key) {
285
299
  if (!data) return true
286
300
  if (typeof data !== 'string') {
287
- this._handleFailure(`"${type}" must be a string.`)
301
+ this.#handleFailure(`"${type}" must be a string.`)
288
302
  return false
289
303
  }
290
304
  carrier[key] = data
291
305
  return true
292
306
  }
293
307
 
294
- _tagConditionalNumber (data, type, carrier, key) {
308
+ #tagConditionalNumber (data, type, carrier, key) {
295
309
  if (!data) return true
296
310
  if (typeof data !== 'number') {
297
- this._handleFailure(`"${type}" must be a number.`)
311
+ this.#handleFailure(`"${type}" must be a number.`)
298
312
  return false
299
313
  }
300
314
  carrier[key] = data
301
315
  return true
302
316
  }
303
317
 
304
- _tagConditionalObject (data, type, carrier, key) {
318
+ #tagConditionalObject (data, type, carrier, key) {
305
319
  if (!data) return true
306
320
  if (typeof data !== 'object') {
307
- this._handleFailure(`"${type}" must be an object.`)
321
+ this.#handleFailure(`"${type}" must be an object.`)
308
322
  return false
309
323
  }
310
324
  carrier[key] = data
@@ -313,7 +327,7 @@ class LLMObsTagger {
313
327
 
314
328
  // any public-facing LLMObs APIs using this tagger should not soft fail
315
329
  // auto-instrumentation should soft fail
316
- _handleFailure (msg, errorTag) {
330
+ #handleFailure (msg, errorTag) {
317
331
  if (this.softFail) {
318
332
  log.warn(msg)
319
333
  } else {
@@ -328,7 +342,7 @@ class LLMObsTagger {
328
342
  _register (span) {
329
343
  if (!this._config.llmobs.enabled) return
330
344
  if (registry.has(span)) {
331
- this._handleFailure(`LLMObs Span "${span._name}" already registered.`)
345
+ this.#handleFailure(`LLMObs Span "${span._name}" already registered.`)
332
346
  return
333
347
  }
334
348
 
@@ -338,7 +352,7 @@ class LLMObsTagger {
338
352
  _setTag (span, key, value) {
339
353
  if (!this._config.llmobs.enabled) return
340
354
  if (!registry.has(span)) {
341
- this._handleFailure(`Span "${span._name}" must be an LLMObs generated span.`)
355
+ this.#handleFailure(`Span "${span._name}" must be an LLMObs generated span.`)
342
356
  return
343
357
  }
344
358
 
@@ -2,15 +2,13 @@
2
2
 
3
3
  const { SPAN_KINDS } = require('./constants/tags')
4
4
 
5
- function encodeUnicode (str) {
6
- if (!str) return str
7
- return str.split('').map(char => {
8
- const code = char.charCodeAt(0)
9
- if (code > 127) {
10
- return `\\u${code.toString(16).padStart(4, '0')}`
11
- }
12
- return char
13
- }).join('')
5
+ function encodeUnicode (str = '') {
6
+ let result = ''
7
+ for (let i = 0; i < str.length; i++) {
8
+ const code = str.charCodeAt(i)
9
+ result += code > 127 ? `\\u${code.toString(16).padStart(4, '0')}` : str[i]
10
+ }
11
+ return result
14
12
  }
15
13
 
16
14
  function validateKind (kind) {
@@ -107,6 +105,8 @@ function findArgumentsBounds (str) {
107
105
  let end = -1
108
106
  let closerCount = 0
109
107
 
108
+ // TODO(BridgeAR): This "breaks" up codePoints.
109
+ // Investigate if this is a problem.
110
110
  for (let i = 0; i < str.length; i++) {
111
111
  const char = str[i]
112
112
 
@@ -157,7 +157,7 @@ class BaseLLMObsWriter {
157
157
  return encodeUnicode(value) // serialize unicode characters
158
158
  }
159
159
  return value
160
- }).replace(/\\\\u/g, '\\u') // remove double escaping
160
+ }).replace(/\\\\u/g, String.raw`\u`) // remove double escaping
161
161
  }
162
162
  }
163
163
 
@@ -27,7 +27,7 @@ function setAgentStrategy (config, setWritersAgentlessValue) {
27
27
  }
28
28
 
29
29
  const endpoints = agentInfo.endpoints
30
- const hasEndpoint = Array.isArray(endpoints) && endpoints.some(endpoint => endpoint === EVP_PROXY_AGENT_BASE_PATH)
30
+ const hasEndpoint = Array.isArray(endpoints) && endpoints.includes(EVP_PROXY_AGENT_BASE_PATH)
31
31
  setWritersAgentlessValue(!hasEndpoint)
32
32
  })
33
33
  }
@@ -95,7 +95,7 @@ const log = {
95
95
  return this._deprecate(code, message)
96
96
  },
97
97
 
98
- isEnabled (fleetStableConfigValue = undefined, localStableConfigValue = undefined) {
98
+ isEnabled (fleetStableConfigValue, localStableConfigValue) {
99
99
  return isTrue(coalesce(
100
100
  fleetStableConfigValue,
101
101
  process.env?.DD_TRACE_DEBUG,
@@ -106,9 +106,9 @@ const log = {
106
106
  },
107
107
 
108
108
  getLogLevel (
109
- optionsValue = undefined,
110
- fleetStableConfigValue = undefined,
111
- localStableConfigValue = undefined
109
+ optionsValue,
110
+ fleetStableConfigValue,
111
+ localStableConfigValue
112
112
  ) {
113
113
  return coalesce(
114
114
  optionsValue,
@@ -23,7 +23,7 @@ class Log {
23
23
  static parse (...args) {
24
24
  let message, cause, delegate
25
25
 
26
- const lastArg = args[args.length - 1]
26
+ const lastArg = args.at(-1)
27
27
  if (lastArg && typeof lastArg === 'object' && lastArg.stack) { // lastArg instanceof Error?
28
28
  cause = args.pop()
29
29
  }
@@ -42,7 +42,7 @@ function toggle (enable, level) {
42
42
  }
43
43
 
44
44
  function use (newLogger) {
45
- if (newLogger && newLogger.debug instanceof Function && newLogger.error instanceof Function) {
45
+ if (typeof newLogger?.debug === 'function' && typeof newLogger.error === 'function') {
46
46
  logger = newLogger
47
47
  }
48
48
  }
@@ -54,7 +54,7 @@ function reset () {
54
54
  }
55
55
 
56
56
  function getErrorLog (err) {
57
- if (err && typeof err.delegate === 'function') {
57
+ if (typeof err?.delegate === 'function') {
58
58
  const result = err.delegate()
59
59
  return Array.isArray(result) ? Log.parse(...result) : Log.parse(result)
60
60
  } else {
@@ -21,10 +21,10 @@ class Chunk {
21
21
 
22
22
  if (length < 0x20) { // fixstr
23
23
  this.reserve(length + 1)
24
- this.buffer[offset] = length | 0xa0
25
- } else if (length < 0x100000000) { // str 32
24
+ this.buffer[offset] = length | 0xA0
25
+ } else if (length < 0x1_00_00_00_00) { // str 32
26
26
  this.reserve(length + 5)
27
- this.buffer[offset] = 0xdb
27
+ this.buffer[offset] = 0xDB
28
28
  this.buffer[offset + 1] = length >> 24
29
29
  this.buffer[offset + 2] = length >> 16
30
30
  this.buffer[offset + 3] = length >> 8
@@ -49,14 +49,14 @@ class MsgpackEncoder {
49
49
  const offset = bytes.length
50
50
 
51
51
  bytes.reserve(1)
52
- bytes.buffer[offset] = 0xc0
52
+ bytes.buffer[offset] = 0xC0
53
53
  }
54
54
 
55
55
  encodeBoolean (bytes, value) {
56
56
  const offset = bytes.length
57
57
 
58
58
  bytes.reserve(1)
59
- bytes.buffer[offset] = value ? 0xc3 : 0xc2
59
+ bytes.buffer[offset] = value ? 0xC3 : 0xC2
60
60
  }
61
61
 
62
62
  encodeString (bytes, value) {
@@ -75,7 +75,7 @@ class MsgpackEncoder {
75
75
  const offset = bytes.length
76
76
 
77
77
  bytes.reserve(5)
78
- bytes.buffer[offset] = 0xdd
78
+ bytes.buffer[offset] = 0xDD
79
79
  bytes.buffer[offset + 1] = length >> 24
80
80
  bytes.buffer[offset + 2] = length >> 16
81
81
  bytes.buffer[offset + 3] = length >> 8
@@ -105,7 +105,7 @@ class MsgpackEncoder {
105
105
  const offset = bytes.length
106
106
 
107
107
  bytes.reserve(5)
108
- bytes.buffer[offset] = 0xdf
108
+ bytes.buffer[offset] = 0xDF
109
109
  bytes.buffer[offset + 1] = keysLength >> 24
110
110
  bytes.buffer[offset + 2] = keysLength >> 16
111
111
  bytes.buffer[offset + 3] = keysLength >> 8
@@ -122,16 +122,16 @@ class MsgpackEncoder {
122
122
 
123
123
  if (value.byteLength < 256) {
124
124
  bytes.reserve(2)
125
- bytes.buffer[offset] = 0xc4
125
+ bytes.buffer[offset] = 0xC4
126
126
  bytes.buffer[offset + 1] = value.byteLength
127
- } else if (value.byteLength < 65536) {
127
+ } else if (value.byteLength < 65_536) {
128
128
  bytes.reserve(3)
129
- bytes.buffer[offset] = 0xc5
129
+ bytes.buffer[offset] = 0xC5
130
130
  bytes.buffer[offset + 1] = value.byteLength >> 8
131
131
  bytes.buffer[offset + 2] = value.byteLength
132
132
  } else {
133
133
  bytes.reserve(5)
134
- bytes.buffer[offset] = 0xc6
134
+ bytes.buffer[offset] = 0xC6
135
135
  bytes.buffer[offset + 1] = value.byteLength >> 24
136
136
  bytes.buffer[offset + 2] = value.byteLength >> 16
137
137
  bytes.buffer[offset + 3] = value.byteLength >> 8
@@ -145,7 +145,7 @@ class MsgpackEncoder {
145
145
  const offset = bytes.length
146
146
 
147
147
  bytes.reserve(5)
148
- bytes.buffer[offset] = 0xce
148
+ bytes.buffer[offset] = 0xCE
149
149
  bytes.buffer[offset + 1] = value >> 24
150
150
  bytes.buffer[offset + 2] = value >> 16
151
151
  bytes.buffer[offset + 3] = value >> 8
@@ -156,7 +156,7 @@ class MsgpackEncoder {
156
156
  const offset = bytes.length
157
157
 
158
158
  bytes.reserve(3)
159
- bytes.buffer[offset] = 0xcd
159
+ bytes.buffer[offset] = 0xCD
160
160
  bytes.buffer[offset + 1] = value >> 8
161
161
  bytes.buffer[offset + 2] = value
162
162
  }
@@ -167,7 +167,7 @@ class MsgpackEncoder {
167
167
  const lo = value >>> 0
168
168
 
169
169
  bytes.reserve(9)
170
- bytes.buffer[offset] = 0xcf
170
+ bytes.buffer[offset] = 0xCF
171
171
  bytes.buffer[offset + 1] = hi >> 24
172
172
  bytes.buffer[offset + 2] = hi >> 16
173
173
  bytes.buffer[offset + 3] = hi >> 8
@@ -201,16 +201,16 @@ class MsgpackEncoder {
201
201
  bytes.buffer[offset] = value
202
202
  } else if (value >= -0x80) {
203
203
  bytes.reserve(2)
204
- bytes.buffer[offset] = 0xd0
204
+ bytes.buffer[offset] = 0xD0
205
205
  bytes.buffer[offset + 1] = value
206
- } else if (value >= -0x8000) {
206
+ } else if (value >= -0x80_00) {
207
207
  bytes.reserve(3)
208
- bytes.buffer[offset] = 0xd1
208
+ bytes.buffer[offset] = 0xD1
209
209
  bytes.buffer[offset + 1] = value >> 8
210
210
  bytes.buffer[offset + 2] = value
211
- } else if (value >= -0x80000000) {
211
+ } else if (value >= -0x80_00_00_00) {
212
212
  bytes.reserve(5)
213
- bytes.buffer[offset] = 0xd2
213
+ bytes.buffer[offset] = 0xD2
214
214
  bytes.buffer[offset + 1] = value >> 24
215
215
  bytes.buffer[offset + 2] = value >> 16
216
216
  bytes.buffer[offset + 3] = value >> 8
@@ -220,7 +220,7 @@ class MsgpackEncoder {
220
220
  const lo = value >>> 0
221
221
 
222
222
  bytes.reserve(9)
223
- bytes.buffer[offset] = 0xd3
223
+ bytes.buffer[offset] = 0xD3
224
224
  bytes.buffer[offset + 1] = hi >> 24
225
225
  bytes.buffer[offset + 2] = hi >> 16
226
226
  bytes.buffer[offset + 3] = hi >> 8
@@ -235,21 +235,21 @@ class MsgpackEncoder {
235
235
  encodeUnsigned (bytes, value) {
236
236
  const offset = bytes.length
237
237
 
238
- if (value <= 0x7f) {
238
+ if (value <= 0x7F) {
239
239
  bytes.reserve(1)
240
240
  bytes.buffer[offset] = value
241
- } else if (value <= 0xff) {
241
+ } else if (value <= 0xFF) {
242
242
  bytes.reserve(2)
243
- bytes.buffer[offset] = 0xcc
243
+ bytes.buffer[offset] = 0xCC
244
244
  bytes.buffer[offset + 1] = value
245
- } else if (value <= 0xffff) {
245
+ } else if (value <= 0xFF_FF) {
246
246
  bytes.reserve(3)
247
- bytes.buffer[offset] = 0xcd
247
+ bytes.buffer[offset] = 0xCD
248
248
  bytes.buffer[offset + 1] = value >> 8
249
249
  bytes.buffer[offset + 2] = value
250
- } else if (value <= 0xffffffff) {
250
+ } else if (value <= 0xFF_FF_FF_FF) {
251
251
  bytes.reserve(5)
252
- bytes.buffer[offset] = 0xce
252
+ bytes.buffer[offset] = 0xCE
253
253
  bytes.buffer[offset + 1] = value >> 24
254
254
  bytes.buffer[offset + 2] = value >> 16
255
255
  bytes.buffer[offset + 3] = value >> 8
@@ -259,7 +259,7 @@ class MsgpackEncoder {
259
259
  const lo = value >>> 0
260
260
 
261
261
  bytes.reserve(9)
262
- bytes.buffer[offset] = 0xcf
262
+ bytes.buffer[offset] = 0xCF
263
263
  bytes.buffer[offset + 1] = hi >> 24
264
264
  bytes.buffer[offset + 2] = hi >> 16
265
265
  bytes.buffer[offset + 3] = hi >> 8
@@ -278,10 +278,10 @@ class MsgpackEncoder {
278
278
  bytes.reserve(9)
279
279
 
280
280
  if (value >= 0n) {
281
- bytes.buffer[offset] = 0xcf
281
+ bytes.buffer[offset] = 0xCF
282
282
  bytes.view.setBigUint64(offset + 1, value)
283
283
  } else {
284
- bytes.buffer[offset] = 0xd3
284
+ bytes.buffer[offset] = 0xD3
285
285
  bytes.view.setBigInt64(offset + 1, value)
286
286
  }
287
287
  }
@@ -301,7 +301,7 @@ class MsgpackEncoder {
301
301
  const offset = bytes.length
302
302
 
303
303
  bytes.reserve(9)
304
- bytes.buffer[offset] = 0xcb
304
+ bytes.buffer[offset] = 0xCB
305
305
  bytes.view.setFloat64(offset + 1, value)
306
306
  }
307
307
  }
@@ -3,15 +3,15 @@
3
3
  * @implements {DogStatsD}
4
4
  */
5
5
  module.exports = class NoopDogStatsDClient {
6
- increment () { }
6
+ increment () {}
7
7
 
8
- decrement () { }
8
+ decrement () {}
9
9
 
10
- gauge () { }
10
+ gauge () {}
11
11
 
12
- distribution () { }
12
+ distribution () {}
13
13
 
14
- histogram () { }
14
+ histogram () {}
15
15
 
16
- flush () { }
16
+ flush () {}
17
17
  }
@@ -30,21 +30,19 @@ class NoopSpan {
30
30
  _createContext (parent) {
31
31
  const spanId = id()
32
32
 
33
- if (parent) {
34
- return new NoopSpanContext({
33
+ return parent
34
+ ? new NoopSpanContext({
35
35
  noop: this,
36
36
  traceId: parent._traceId,
37
37
  spanId,
38
38
  parentId: parent._spanId,
39
39
  baggageItems: Object.assign({}, parent._baggageItems)
40
40
  })
41
- } else {
42
- return new NoopSpanContext({
41
+ : new NoopSpanContext({
43
42
  noop: this,
44
43
  traceId: spanId,
45
44
  spanId
46
45
  })
47
- }
48
46
  }
49
47
  }
50
48
 
@@ -27,8 +27,7 @@ class NoopTracer {
27
27
  return ''
28
28
  }
29
29
 
30
- setUrl () {
31
- }
30
+ setUrl () {}
32
31
 
33
32
  startSpan (name, options) {
34
33
  return this._span