dd-trace 5.57.1 → 5.59.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 (206) hide show
  1. package/LICENSE-3rdparty.csv +3 -1
  2. package/ci/cypress/after-run.js +2 -0
  3. package/ci/cypress/after-spec.js +2 -0
  4. package/ci/cypress/plugin.js +2 -0
  5. package/ci/cypress/polyfills.js +2 -0
  6. package/ci/cypress/support.js +2 -0
  7. package/ci/init.js +2 -0
  8. package/index.d.ts +7 -0
  9. package/init.js +1 -6
  10. package/initialize.mjs +2 -0
  11. package/package.json +40 -9
  12. package/packages/datadog-code-origin/index.js +14 -9
  13. package/packages/datadog-instrumentations/src/apollo.js +7 -10
  14. package/packages/datadog-instrumentations/src/avsc.js +2 -0
  15. package/packages/datadog-instrumentations/src/azure-functions.js +1 -1
  16. package/packages/datadog-instrumentations/src/child_process.js +22 -43
  17. package/packages/datadog-instrumentations/src/cucumber.js +10 -8
  18. package/packages/datadog-instrumentations/src/cypress.js +2 -0
  19. package/packages/datadog-instrumentations/src/fastify.js +19 -1
  20. package/packages/datadog-instrumentations/src/graphql.js +9 -0
  21. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  22. package/packages/datadog-instrumentations/src/helpers/register.js +2 -2
  23. package/packages/datadog-instrumentations/src/hono.js +102 -0
  24. package/packages/datadog-instrumentations/src/jest.js +1 -1
  25. package/packages/datadog-instrumentations/src/langchain.js +21 -0
  26. package/packages/datadog-instrumentations/src/mocha/common.js +2 -0
  27. package/packages/datadog-instrumentations/src/mocha.js +2 -0
  28. package/packages/datadog-instrumentations/src/mysql2.js +6 -6
  29. package/packages/datadog-instrumentations/src/next.js +3 -1
  30. package/packages/datadog-instrumentations/src/nyc.js +2 -0
  31. package/packages/datadog-instrumentations/src/oracledb.js +24 -2
  32. package/packages/datadog-instrumentations/src/orchestrion-config/index.js +32 -0
  33. package/packages/datadog-instrumentations/src/playwright.js +5 -1
  34. package/packages/datadog-instrumentations/src/protobufjs.js +2 -0
  35. package/packages/datadog-instrumentations/src/selenium.js +2 -0
  36. package/packages/datadog-instrumentations/src/tedious.js +12 -17
  37. package/packages/datadog-instrumentations/src/vitest.js +2 -0
  38. package/packages/datadog-plugin-avsc/src/index.js +2 -0
  39. package/packages/datadog-plugin-avsc/src/schema_iterator.js +2 -0
  40. package/packages/datadog-plugin-aws-sdk/src/base.js +51 -1
  41. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +2 -0
  42. package/packages/datadog-plugin-child_process/src/index.js +30 -10
  43. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +1 -1
  44. package/packages/datadog-plugin-cypress/src/after-run.js +2 -0
  45. package/packages/datadog-plugin-cypress/src/after-spec.js +2 -0
  46. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +8 -3
  47. package/packages/datadog-plugin-cypress/src/index.js +2 -0
  48. package/packages/datadog-plugin-cypress/src/plugin.js +2 -0
  49. package/packages/datadog-plugin-cypress/src/support.js +21 -25
  50. package/packages/datadog-plugin-google-cloud-vertexai/src/utils.js +2 -0
  51. package/packages/datadog-plugin-graphql/src/tools/index.js +0 -2
  52. package/packages/datadog-plugin-graphql/src/tools/signature.js +0 -2
  53. package/packages/datadog-plugin-graphql/src/tools/transforms.js +0 -2
  54. package/packages/datadog-plugin-graphql/src/utils.js +2 -0
  55. package/packages/datadog-plugin-hono/src/index.js +28 -0
  56. package/packages/datadog-plugin-http/src/client.js +3 -4
  57. package/packages/datadog-plugin-http2/src/client.js +9 -8
  58. package/packages/datadog-plugin-jest/src/index.js +2 -0
  59. package/packages/datadog-plugin-jest/src/util.js +2 -0
  60. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +2 -0
  61. package/packages/datadog-plugin-langchain/src/handlers/chain.js +1 -1
  62. package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +1 -1
  63. package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +1 -1
  64. package/packages/datadog-plugin-langchain/src/tracing.js +36 -4
  65. package/packages/datadog-plugin-nyc/src/index.js +2 -0
  66. package/packages/datadog-plugin-oracledb/src/connection-parser.js +37 -0
  67. package/packages/datadog-plugin-oracledb/src/index.js +15 -17
  68. package/packages/datadog-plugin-protobufjs/src/index.js +2 -0
  69. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +2 -0
  70. package/packages/datadog-plugin-selenium/src/index.js +2 -0
  71. package/packages/datadog-plugin-tedious/src/index.js +10 -9
  72. package/packages/datadog-plugin-vitest/src/index.js +2 -0
  73. package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +6 -4
  74. package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +9 -0
  75. package/packages/dd-trace/src/appsec/iast/iast-context.js +5 -1
  76. package/packages/dd-trace/src/appsec/iast/index.js +2 -0
  77. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +1 -1
  78. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +5 -2
  79. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +0 -2
  80. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +2 -0
  81. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +2 -0
  82. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +1 -0
  83. package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +2 -0
  84. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -3
  85. package/packages/dd-trace/src/appsec/rasp/fs-plugin.js +18 -11
  86. package/packages/dd-trace/src/appsec/rasp/utils.js +1 -1
  87. package/packages/dd-trace/src/appsec/recommended.json +88 -2
  88. package/packages/dd-trace/src/appsec/reporter.js +68 -14
  89. package/packages/dd-trace/src/appsec/rule_manager.js +63 -171
  90. package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -5
  91. package/packages/dd-trace/src/appsec/stack_trace.js +11 -11
  92. package/packages/dd-trace/src/appsec/telemetry/common.js +2 -2
  93. package/packages/dd-trace/src/appsec/telemetry/index.js +8 -0
  94. package/packages/dd-trace/src/appsec/telemetry/waf.js +5 -3
  95. package/packages/dd-trace/src/appsec/waf/diagnostics.js +15 -0
  96. package/packages/dd-trace/src/appsec/waf/index.js +47 -6
  97. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +2 -2
  98. package/packages/dd-trace/src/appsec/waf/waf_manager.js +22 -12
  99. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +3 -3
  100. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +2 -0
  101. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +3 -1
  102. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -0
  103. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +2 -0
  104. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +2 -0
  105. package/packages/dd-trace/src/ci-visibility/telemetry.js +2 -0
  106. package/packages/dd-trace/src/ci-visibility/test-api-manual/test-api-manual-plugin.js +2 -0
  107. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +7 -3
  108. package/packages/dd-trace/src/config.js +15 -4
  109. package/packages/dd-trace/src/config_stable.js +2 -0
  110. package/packages/dd-trace/src/constants.js +1 -2
  111. package/packages/dd-trace/src/datastreams/checkpointer.js +2 -0
  112. package/packages/dd-trace/src/datastreams/context.js +2 -0
  113. package/packages/dd-trace/src/datastreams/encoding.js +2 -0
  114. package/packages/dd-trace/src/datastreams/fnv.js +2 -0
  115. package/packages/dd-trace/src/datastreams/pathway.js +11 -9
  116. package/packages/dd-trace/src/datastreams/processor.js +8 -7
  117. package/packages/dd-trace/src/datastreams/schemas/schema.js +2 -0
  118. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +45 -36
  119. package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +2 -0
  120. package/packages/dd-trace/src/datastreams/writer.js +2 -0
  121. package/packages/dd-trace/src/debugger/devtools_client/index.js +12 -4
  122. package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +2 -0
  123. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +8 -5
  124. package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +1 -1
  125. package/packages/dd-trace/src/debugger/index.js +36 -9
  126. package/packages/dd-trace/src/encode/tags-processors.js +2 -0
  127. package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -0
  128. package/packages/dd-trace/src/exporters/common/request.js +1 -1
  129. package/packages/dd-trace/src/exporters/common/util.js +2 -0
  130. package/packages/dd-trace/src/exporters/span-stats/index.js +2 -0
  131. package/packages/dd-trace/src/exporters/span-stats/writer.js +2 -0
  132. package/packages/dd-trace/src/external-logger/src/index.js +2 -0
  133. package/packages/dd-trace/src/git_metadata_tagger.js +2 -0
  134. package/packages/dd-trace/src/git_properties.js +2 -0
  135. package/packages/dd-trace/src/guardrails/index.js +3 -4
  136. package/packages/dd-trace/src/guardrails/log.js +2 -2
  137. package/packages/dd-trace/src/guardrails/telemetry.js +16 -14
  138. package/packages/dd-trace/src/guardrails/util.js +0 -2
  139. package/packages/dd-trace/src/heap_snapshots.js +58 -0
  140. package/packages/dd-trace/src/llmobs/noop.js +1 -1
  141. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +2 -0
  142. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +5 -0
  143. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/tool.js +15 -0
  144. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +36 -0
  145. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +47 -4
  146. package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
  147. package/packages/dd-trace/src/llmobs/tagger.js +10 -1
  148. package/packages/dd-trace/src/log/log.js +1 -1
  149. package/packages/dd-trace/src/noop/dogstatsd.js +2 -0
  150. package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +2 -0
  151. package/packages/dd-trace/src/opentracing/span.js +1 -1
  152. package/packages/dd-trace/src/payload-tagging/config/index.js +2 -0
  153. package/packages/dd-trace/src/payload-tagging/index.js +3 -1
  154. package/packages/dd-trace/src/payload-tagging/tagging.js +4 -2
  155. package/packages/dd-trace/src/plugins/apollo.js +2 -0
  156. package/packages/dd-trace/src/plugins/ci_plugin.js +8 -3
  157. package/packages/dd-trace/src/plugins/index.js +1 -0
  158. package/packages/dd-trace/src/plugins/outbound.js +7 -0
  159. package/packages/dd-trace/src/plugins/util/ci.js +2 -0
  160. package/packages/dd-trace/src/plugins/util/env.js +2 -0
  161. package/packages/dd-trace/src/plugins/util/git.js +40 -5
  162. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +2 -0
  163. package/packages/dd-trace/src/plugins/util/llm.js +2 -0
  164. package/packages/dd-trace/src/plugins/util/serverless.js +2 -0
  165. package/packages/dd-trace/src/plugins/util/stacktrace.js +178 -50
  166. package/packages/dd-trace/src/plugins/util/tags.js +17 -1
  167. package/packages/dd-trace/src/plugins/util/test.js +9 -4
  168. package/packages/dd-trace/src/plugins/util/url.js +2 -0
  169. package/packages/dd-trace/src/plugins/util/user-provided-git.js +2 -0
  170. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +4 -0
  171. package/packages/dd-trace/src/profiling/profiler.js +89 -70
  172. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns.js +2 -0
  173. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookup.js +2 -0
  174. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookupservice.js +2 -0
  175. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_resolve.js +2 -0
  176. package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_reverse.js +2 -0
  177. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +2 -0
  178. package/packages/dd-trace/src/profiling/profilers/event_plugins/fs.js +2 -0
  179. package/packages/dd-trace/src/profiling/profilers/event_plugins/net.js +2 -0
  180. package/packages/dd-trace/src/profiling/profilers/events.js +2 -0
  181. package/packages/dd-trace/src/profiling/profilers/wall.js +2 -2
  182. package/packages/dd-trace/src/profiling/webspan-utils.js +2 -0
  183. package/packages/dd-trace/src/proxy.js +4 -0
  184. package/packages/dd-trace/src/remote_config/capabilities.js +3 -1
  185. package/packages/dd-trace/src/remote_config/index.js +4 -0
  186. package/packages/dd-trace/src/service-naming/index.js +2 -0
  187. package/packages/dd-trace/src/service-naming/schemas/definition.js +4 -9
  188. package/packages/dd-trace/src/service-naming/schemas/util.js +2 -0
  189. package/packages/dd-trace/src/service-naming/schemas/v0/graphql.js +2 -0
  190. package/packages/dd-trace/src/service-naming/schemas/v0/index.js +2 -0
  191. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +2 -0
  192. package/packages/dd-trace/src/service-naming/schemas/v0/serverless.js +2 -0
  193. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +2 -0
  194. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -0
  195. package/packages/dd-trace/src/service-naming/schemas/v1/graphql.js +2 -0
  196. package/packages/dd-trace/src/service-naming/schemas/v1/index.js +2 -0
  197. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +2 -0
  198. package/packages/dd-trace/src/service-naming/schemas/v1/serverless.js +2 -0
  199. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +4 -1
  200. package/packages/dd-trace/src/service-naming/schemas/v1/web.js +2 -0
  201. package/packages/dd-trace/src/span_stats.js +2 -0
  202. package/packages/dd-trace/src/supported-configurations.json +5 -0
  203. package/packages/dd-trace/src/telemetry/send-data.js +2 -0
  204. package/register.js +4 -0
  205. package/version.js +0 -3
  206. package/packages/dd-trace/src/payload-tagging/jsonpath-plus.js +0 -2094
@@ -14,11 +14,15 @@ const LLM_SPAN_TYPES = new Set(['llm', 'chat_model', 'embedding'])
14
14
  const LLM = 'llm'
15
15
  const WORKFLOW = 'workflow'
16
16
  const EMBEDDING = 'embedding'
17
+ const TOOL = 'tool'
18
+ const RETRIEVAL = 'retrieval'
17
19
 
18
20
  const ChainHandler = require('./handlers/chain')
19
21
  const ChatModelHandler = require('./handlers/chat_model')
20
22
  const LlmHandler = require('./handlers/llm')
21
23
  const EmbeddingHandler = require('./handlers/embedding')
24
+ const ToolHandler = require('./handlers/tool')
25
+ const VectorStoreHandler = require('./handlers/vectorstore')
22
26
 
23
27
  class BaseLangChainLLMObsPlugin extends LLMObsPlugin {
24
28
  static get integration () { return 'langchain' }
@@ -34,7 +38,9 @@ class BaseLangChainLLMObsPlugin extends LLMObsPlugin {
34
38
  chain: new ChainHandler(this._tagger),
35
39
  chat_model: new ChatModelHandler(this._tagger),
36
40
  llm: new LlmHandler(this._tagger),
37
- embedding: new EmbeddingHandler(this._tagger)
41
+ embedding: new EmbeddingHandler(this._tagger),
42
+ tool: new ToolHandler(this._tagger),
43
+ similarity_search: new VectorStoreHandler(this._tagger)
38
44
  }
39
45
  }
40
46
 
@@ -45,7 +51,10 @@ class BaseLangChainLLMObsPlugin extends LLMObsPlugin {
45
51
  const modelProvider = tags['langchain.request.provider'] // could be undefined
46
52
  const modelName = tags['langchain.request.model'] // could be undefined
47
53
  const kind = this.getKind(ctx.type, modelProvider)
48
- const name = tags['resource.name']
54
+
55
+ const instance = ctx.instance || ctx.self
56
+ const handler = this._handlers[ctx.type]
57
+ const name = handler?.getName({ span, instance })
49
58
 
50
59
  return {
51
60
  modelProvider,
@@ -113,7 +122,14 @@ class BaseLangChainLLMObsPlugin extends LLMObsPlugin {
113
122
  }
114
123
  }
115
124
 
116
- return WORKFLOW
125
+ switch (type) {
126
+ case 'tool':
127
+ return TOOL
128
+ case 'similarity_search':
129
+ return RETRIEVAL
130
+ default:
131
+ return WORKFLOW
132
+ }
117
133
  }
118
134
 
119
135
  getIntegrationName (type, provider = 'custom') {
@@ -181,11 +197,38 @@ class EmbeddingsEmbedDocumentsPlugin extends BaseLangChainLLMObsPlugin {
181
197
  }
182
198
  }
183
199
 
200
+ class ToolInvokePlugin extends BaseLangChainLLMObsPlugin {
201
+ static get id () { return 'llmobs_langchain_tool_invoke' }
202
+ static get lcType () { return 'tool' }
203
+ static get prefix () {
204
+ return 'tracing:orchestrion:@langchain/core:Tool_invoke'
205
+ }
206
+ }
207
+
208
+ class VectorStoreSimilaritySearchPlugin extends BaseLangChainLLMObsPlugin {
209
+ static get id () { return 'llmobs_langchain_vectorstore_similarity_search' }
210
+ static get lcType () { return 'similarity_search' }
211
+ static get prefix () {
212
+ return 'tracing:orchestrion:@langchain/core:VectorStore_similaritySearch'
213
+ }
214
+ }
215
+
216
+ class VectorStoreSimilaritySearchWithScorePlugin extends BaseLangChainLLMObsPlugin {
217
+ static get id () { return 'llmobs_langchain_vectorstore_similarity_search_with_score' }
218
+ static get lcType () { return 'similarity_search' }
219
+ static get prefix () {
220
+ return 'tracing:orchestrion:@langchain/core:VectorStore_similaritySearchWithScore'
221
+ }
222
+ }
223
+
184
224
  module.exports = [
185
225
  RunnableSequenceInvokePlugin,
186
226
  RunnableSequenceBatchPlugin,
187
227
  BaseChatModelGeneratePlugin,
188
228
  BaseLLMGeneratePlugin,
189
229
  EmbeddingsEmbedQueryPlugin,
190
- EmbeddingsEmbedDocumentsPlugin
230
+ EmbeddingsEmbedDocumentsPlugin,
231
+ ToolInvokePlugin,
232
+ VectorStoreSimilaritySearchPlugin,
233
+ VectorStoreSimilaritySearchWithScorePlugin
191
234
  ]
@@ -165,7 +165,7 @@ class LLMObsSpanProcessor {
165
165
  carrier[key] = UNSERIALIZABLE_VALUE_TEXT
166
166
  continue
167
167
  }
168
- if (typeof value === 'object') {
168
+ if (value !== null && typeof value === 'object') {
169
169
  add(value, carrier[key] = {})
170
170
  } else {
171
171
  carrier[key] = value
@@ -281,6 +281,7 @@ class LLMObsTagger {
281
281
 
282
282
  const { content = '', role } = message
283
283
  const toolCalls = message.toolCalls
284
+ const toolId = message.toolId
284
285
  const messageObj = { content }
285
286
 
286
287
  const valid = typeof content === 'string'
@@ -288,7 +289,7 @@ class LLMObsTagger {
288
289
  this.#handleFailure('Message content must be a string.', 'invalid_io_messages')
289
290
  }
290
291
 
291
- const condition = this.#tagConditionalString(role, 'Message role', messageObj, 'role')
292
+ let condition = this.#tagConditionalString(role, 'Message role', messageObj, 'role')
292
293
 
293
294
  if (toolCalls) {
294
295
  const filteredToolCalls = this.#filterToolCalls(toolCalls)
@@ -298,6 +299,14 @@ class LLMObsTagger {
298
299
  }
299
300
  }
300
301
 
302
+ if (toolId) {
303
+ if (role === 'tool') {
304
+ condition = this.#tagConditionalString(toolId, 'Tool ID', messageObj, 'tool_id')
305
+ } else {
306
+ log.warn(`Tool ID for tool message not associated with a "tool" role, instead got "${role}"`)
307
+ }
308
+ }
309
+
301
310
  if (valid && condition) {
302
311
  messages.push(messageObj)
303
312
  }
@@ -32,7 +32,7 @@ class Log {
32
32
  if (firstArg) {
33
33
  if (typeof firstArg === 'string') {
34
34
  message = firstArg
35
- } else if (typeof firstArg === 'object') {
35
+ } else if (typeof firstArg === 'object') { // eslint-disable-line eslint-rules/eslint-safe-typeof-object
36
36
  message = String(firstArg.message || firstArg)
37
37
  } else if (typeof firstArg === 'function') {
38
38
  delegate = firstArg
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  /**
2
4
  * @import { DogStatsD } from "../../../../index.d.ts"
3
5
  * @implements {DogStatsD}
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const pick = require('../../../../datadog-core/src/utils/src/pick')
2
4
  const log = require('../../log')
3
5
 
@@ -220,7 +220,7 @@ class DatadogSpan {
220
220
  addEvent (name, attributesOrStartTime, startTime) {
221
221
  const event = { name }
222
222
  if (attributesOrStartTime) {
223
- if (typeof attributesOrStartTime === 'object') {
223
+ if (typeof attributesOrStartTime === 'object') { // eslint-disable-line eslint-rules/eslint-safe-typeof-object
224
224
  event.attributes = this._sanitizeEventAttributes(attributesOrStartTime)
225
225
  } else {
226
226
  startTime = attributesOrStartTime
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const aws = require('./aws.json')
2
4
  const sdks = { aws }
3
5
 
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const rfdc = require('rfdc')({ proto: false, circles: false })
2
4
 
3
5
  const {
@@ -5,7 +7,7 @@ const {
5
7
  PAYLOAD_TAG_RESPONSE_PREFIX
6
8
  } = require('../constants')
7
9
 
8
- const jsonpath = require('./jsonpath-plus.js').JSONPath
10
+ const jsonpath = require('jsonpath-plus').JSONPath
9
11
 
10
12
  const { tagsFromObject } = require('./tagging')
11
13
 
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const { PAYLOAD_TAGGING_MAX_TAGS } = require('../constants')
2
4
 
3
5
  const redactedKeys = new Set([
@@ -36,7 +38,7 @@ function tagsFromObject (object, opts) {
36
38
  return
37
39
  }
38
40
 
39
- if (depth >= maxDepth && typeof object === 'object') {
41
+ if (depth >= maxDepth && object !== null && typeof object === 'object') {
40
42
  tagCount += 1
41
43
  result[prefix] = truncated
42
44
  return
@@ -65,7 +67,7 @@ function tagsFromObject (object, opts) {
65
67
  result[prefix] = object.slice(0, 5000)
66
68
  }
67
69
 
68
- if (typeof object === 'object') {
70
+ if (typeof object === 'object') { // eslint-disable-line eslint-rules/eslint-safe-typeof-object
69
71
  for (const [key, value] of Object.entries(object)) {
70
72
  if (redactedKeys.has(key.toLowerCase())) {
71
73
  tagCount += 1
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const TracingPlugin = require('./tracing')
2
4
  const { storage } = require('../../../datadog-core')
3
5
 
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const { storage } = require('../../../datadog-core')
2
4
  const {
3
5
  getTestEnvironmentMetadata,
@@ -53,7 +55,8 @@ const {
53
55
  GIT_TAG,
54
56
  GIT_PULL_REQUEST_BASE_BRANCH_SHA,
55
57
  GIT_COMMIT_HEAD_SHA,
56
- GIT_PULL_REQUEST_BASE_BRANCH
58
+ GIT_PULL_REQUEST_BASE_BRANCH,
59
+ GIT_COMMIT_HEAD_MESSAGE
57
60
  } = require('./util/tags')
58
61
  const { OS_VERSION, OS_PLATFORM, OS_ARCHITECTURE, RUNTIME_NAME, RUNTIME_VERSION } = require('./util/env')
59
62
  const getDiClient = require('../ci-visibility/dynamic-instrumentation')
@@ -311,7 +314,8 @@ module.exports = class CiPlugin extends Plugin {
311
314
  [GIT_COMMIT_MESSAGE]: commitMessage,
312
315
  [GIT_TAG]: tag,
313
316
  [GIT_PULL_REQUEST_BASE_BRANCH_SHA]: pullRequestBaseSha,
314
- [GIT_COMMIT_HEAD_SHA]: commitHeadSha
317
+ [GIT_COMMIT_HEAD_SHA]: commitHeadSha,
318
+ [GIT_COMMIT_HEAD_MESSAGE]: commitHeadMessage
315
319
  } = this.testEnvironmentMetadata
316
320
 
317
321
  this.repositoryRoot = repositoryRoot || process.cwd()
@@ -333,7 +337,8 @@ module.exports = class CiPlugin extends Plugin {
333
337
  commitMessage,
334
338
  tag,
335
339
  pullRequestBaseSha,
336
- commitHeadSha
340
+ commitHeadSha,
341
+ commitHeadMessage
337
342
  }
338
343
  }
339
344
 
@@ -45,6 +45,7 @@ module.exports = {
45
45
  get graphql () { return require('../../../datadog-plugin-graphql/src') },
46
46
  get grpc () { return require('../../../datadog-plugin-grpc/src') },
47
47
  get hapi () { return require('../../../datadog-plugin-hapi/src') },
48
+ get hono () { return require('../../../datadog-plugin-hono/src') },
48
49
  get http () { return require('../../../datadog-plugin-http/src') },
49
50
  get http2 () { return require('../../../datadog-plugin-http2/src') },
50
51
  get https () { return require('../../../datadog-plugin-http/src') },
@@ -8,6 +8,7 @@ const {
8
8
  } = require('../constants')
9
9
  const TracingPlugin = require('./tracing')
10
10
  const { exitTags } = require('../../../datadog-code-origin')
11
+ const { storage } = require('../../../datadog-core')
11
12
 
12
13
  const COMMON_PEER_SVC_SOURCE_TAGS = [
13
14
  'net.peer.name',
@@ -93,6 +94,12 @@ class OutboundPlugin extends TracingPlugin {
93
94
  finish (ctx) {
94
95
  const span = ctx?.currentStore?.span || this.activeSpan
95
96
  this.tagPeerService(span)
97
+
98
+ if (this._tracerConfig?._isInServerlessEnvironment()) {
99
+ const peerHostname = storage('peerServerless').getStore()?.peerHostname
100
+ if (peerHostname) span.setTag('peer.service', peerHostname)
101
+ }
102
+
96
103
  super.finish(...arguments)
97
104
  }
98
105
 
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const { readFileSync } = require('fs')
2
4
  const {
3
5
  GIT_BRANCH,
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const os = require('os')
2
4
 
3
5
  const OS_PLATFORM = 'os.platform'
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const cp = require('child_process')
2
4
  const os = require('os')
3
5
  const path = require('path')
@@ -16,7 +18,14 @@ const {
16
18
  GIT_COMMIT_AUTHOR_DATE,
17
19
  GIT_COMMIT_AUTHOR_EMAIL,
18
20
  GIT_COMMIT_AUTHOR_NAME,
19
- CI_WORKSPACE_PATH
21
+ CI_WORKSPACE_PATH,
22
+ GIT_COMMIT_HEAD_AUTHOR_DATE,
23
+ GIT_COMMIT_HEAD_AUTHOR_EMAIL,
24
+ GIT_COMMIT_HEAD_AUTHOR_NAME,
25
+ GIT_COMMIT_HEAD_COMMITER_DATE,
26
+ GIT_COMMIT_HEAD_COMMITER_EMAIL,
27
+ GIT_COMMIT_HEAD_COMMITER_NAME,
28
+ GIT_COMMIT_HEAD_MESSAGE
20
29
  } = require('./tags')
21
30
  const {
22
31
  incrementCountMetric,
@@ -117,7 +126,7 @@ function getGitVersion () {
117
126
  }
118
127
  }
119
128
 
120
- function unshallowRepository () {
129
+ function unshallowRepository (parentOnly = false) {
121
130
  const gitVersion = getGitVersion()
122
131
  if (!gitVersion) {
123
132
  log.warn('Git version could not be extracted, so git unshallow will not proceed')
@@ -132,7 +141,7 @@ function unshallowRepository () {
132
141
 
133
142
  const baseGitOptions = [
134
143
  'fetch',
135
- '--shallow-since="1 month ago"',
144
+ parentOnly ? '--deepen=1' : '--shallow-since="1 month ago"',
136
145
  '--update-shallow',
137
146
  '--filter=blob:none',
138
147
  '--recurse-submodules=no',
@@ -451,7 +460,8 @@ function getGitMetadata (ciMetadata) {
451
460
  commitMessage,
452
461
  authorName: ciAuthorName,
453
462
  authorEmail: ciAuthorEmail,
454
- ciWorkspacePath
463
+ ciWorkspacePath,
464
+ headCommitSha
455
465
  } = ciMetadata
456
466
 
457
467
  // With stdio: 'pipe', errors in this command will not be output to the parent process,
@@ -470,7 +480,32 @@ function getGitMetadata (ciMetadata) {
470
480
  commitMessage || sanitizedExec('git', ['show', '-s', '--format=%B'], null, null, null, false),
471
481
  [GIT_BRANCH]: branch || sanitizedExec('git', ['rev-parse', '--abbrev-ref', 'HEAD']),
472
482
  [GIT_COMMIT_SHA]: commitSHA || sanitizedExec('git', ['rev-parse', 'HEAD']),
473
- [CI_WORKSPACE_PATH]: ciWorkspacePath || sanitizedExec('git', ['rev-parse', '--show-toplevel'])
483
+ [CI_WORKSPACE_PATH]: ciWorkspacePath || sanitizedExec('git', ['rev-parse', '--show-toplevel']),
484
+ }
485
+
486
+ if (headCommitSha) {
487
+ if (isShallowRepository()) {
488
+ unshallowRepository(true)
489
+ }
490
+
491
+ tags[GIT_COMMIT_HEAD_MESSAGE] =
492
+ sanitizedExec('git', ['show', '-s', '--format=%B', headCommitSha], null, null, null, false)
493
+
494
+ const [
495
+ headAuthorName,
496
+ headAuthorEmail,
497
+ headAuthorDate,
498
+ headCommitterName,
499
+ headCommitterEmail,
500
+ headCommitterDate
501
+ ] = sanitizedExec('git', ['show', '-s', '--format=%an,%ae,%aI,%cn,%ce,%cI', headCommitSha]).split(',')
502
+
503
+ tags[GIT_COMMIT_HEAD_AUTHOR_DATE] = headAuthorDate
504
+ tags[GIT_COMMIT_HEAD_AUTHOR_EMAIL] = headAuthorEmail
505
+ tags[GIT_COMMIT_HEAD_AUTHOR_NAME] = headAuthorName
506
+ tags[GIT_COMMIT_HEAD_COMMITER_DATE] = headCommitterDate
507
+ tags[GIT_COMMIT_HEAD_COMMITER_EMAIL] = headCommitterEmail
508
+ tags[GIT_COMMIT_HEAD_COMMITER_NAME] = headCommitterName
474
509
  }
475
510
 
476
511
  const entries = [
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const log = require('../../log')
2
4
  const tags = require('../../../../../ext/tags')
3
5
 
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const Sampler = require('../../sampler')
2
4
 
3
5
  const RE_NEWLINE = /\n/g
@@ -1,3 +1,5 @@
1
+ 'use strict'
2
+
1
3
  const types = require('../../../../../ext/types')
2
4
  const web = require('./web')
3
5