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.
- package/LICENSE-3rdparty.csv +3 -1
- package/ci/cypress/after-run.js +2 -0
- package/ci/cypress/after-spec.js +2 -0
- package/ci/cypress/plugin.js +2 -0
- package/ci/cypress/polyfills.js +2 -0
- package/ci/cypress/support.js +2 -0
- package/ci/init.js +2 -0
- package/index.d.ts +7 -0
- package/init.js +1 -6
- package/initialize.mjs +2 -0
- package/package.json +40 -9
- package/packages/datadog-code-origin/index.js +14 -9
- package/packages/datadog-instrumentations/src/apollo.js +7 -10
- package/packages/datadog-instrumentations/src/avsc.js +2 -0
- package/packages/datadog-instrumentations/src/azure-functions.js +1 -1
- package/packages/datadog-instrumentations/src/child_process.js +22 -43
- package/packages/datadog-instrumentations/src/cucumber.js +10 -8
- package/packages/datadog-instrumentations/src/cypress.js +2 -0
- package/packages/datadog-instrumentations/src/fastify.js +19 -1
- package/packages/datadog-instrumentations/src/graphql.js +9 -0
- package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
- package/packages/datadog-instrumentations/src/helpers/register.js +2 -2
- package/packages/datadog-instrumentations/src/hono.js +102 -0
- package/packages/datadog-instrumentations/src/jest.js +1 -1
- package/packages/datadog-instrumentations/src/langchain.js +21 -0
- package/packages/datadog-instrumentations/src/mocha/common.js +2 -0
- package/packages/datadog-instrumentations/src/mocha.js +2 -0
- package/packages/datadog-instrumentations/src/mysql2.js +6 -6
- package/packages/datadog-instrumentations/src/next.js +3 -1
- package/packages/datadog-instrumentations/src/nyc.js +2 -0
- package/packages/datadog-instrumentations/src/oracledb.js +24 -2
- package/packages/datadog-instrumentations/src/orchestrion-config/index.js +32 -0
- package/packages/datadog-instrumentations/src/playwright.js +5 -1
- package/packages/datadog-instrumentations/src/protobufjs.js +2 -0
- package/packages/datadog-instrumentations/src/selenium.js +2 -0
- package/packages/datadog-instrumentations/src/tedious.js +12 -17
- package/packages/datadog-instrumentations/src/vitest.js +2 -0
- package/packages/datadog-plugin-avsc/src/index.js +2 -0
- package/packages/datadog-plugin-avsc/src/schema_iterator.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/base.js +51 -1
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +2 -0
- package/packages/datadog-plugin-child_process/src/index.js +30 -10
- package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +1 -1
- package/packages/datadog-plugin-cypress/src/after-run.js +2 -0
- package/packages/datadog-plugin-cypress/src/after-spec.js +2 -0
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +8 -3
- package/packages/datadog-plugin-cypress/src/index.js +2 -0
- package/packages/datadog-plugin-cypress/src/plugin.js +2 -0
- package/packages/datadog-plugin-cypress/src/support.js +21 -25
- package/packages/datadog-plugin-google-cloud-vertexai/src/utils.js +2 -0
- package/packages/datadog-plugin-graphql/src/tools/index.js +0 -2
- package/packages/datadog-plugin-graphql/src/tools/signature.js +0 -2
- package/packages/datadog-plugin-graphql/src/tools/transforms.js +0 -2
- package/packages/datadog-plugin-graphql/src/utils.js +2 -0
- package/packages/datadog-plugin-hono/src/index.js +28 -0
- package/packages/datadog-plugin-http/src/client.js +3 -4
- package/packages/datadog-plugin-http2/src/client.js +9 -8
- package/packages/datadog-plugin-jest/src/index.js +2 -0
- package/packages/datadog-plugin-jest/src/util.js +2 -0
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +2 -0
- package/packages/datadog-plugin-langchain/src/handlers/chain.js +1 -1
- package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +1 -1
- package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +1 -1
- package/packages/datadog-plugin-langchain/src/tracing.js +36 -4
- package/packages/datadog-plugin-nyc/src/index.js +2 -0
- package/packages/datadog-plugin-oracledb/src/connection-parser.js +37 -0
- package/packages/datadog-plugin-oracledb/src/index.js +15 -17
- package/packages/datadog-plugin-protobufjs/src/index.js +2 -0
- package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +2 -0
- package/packages/datadog-plugin-selenium/src/index.js +2 -0
- package/packages/datadog-plugin-tedious/src/index.js +10 -9
- package/packages/datadog-plugin-vitest/src/index.js +2 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +6 -4
- package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +9 -0
- package/packages/dd-trace/src/appsec/iast/iast-context.js +5 -1
- package/packages/dd-trace/src/appsec/iast/index.js +2 -0
- package/packages/dd-trace/src/appsec/iast/overhead-controller.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +5 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +0 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +2 -0
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +2 -0
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +1 -0
- package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +2 -0
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -3
- package/packages/dd-trace/src/appsec/rasp/fs-plugin.js +18 -11
- package/packages/dd-trace/src/appsec/rasp/utils.js +1 -1
- package/packages/dd-trace/src/appsec/recommended.json +88 -2
- package/packages/dd-trace/src/appsec/reporter.js +68 -14
- package/packages/dd-trace/src/appsec/rule_manager.js +63 -171
- package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -5
- package/packages/dd-trace/src/appsec/stack_trace.js +11 -11
- package/packages/dd-trace/src/appsec/telemetry/common.js +2 -2
- package/packages/dd-trace/src/appsec/telemetry/index.js +8 -0
- package/packages/dd-trace/src/appsec/telemetry/waf.js +5 -3
- package/packages/dd-trace/src/appsec/waf/diagnostics.js +15 -0
- package/packages/dd-trace/src/appsec/waf/index.js +47 -6
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +2 -2
- package/packages/dd-trace/src/appsec/waf/waf_manager.js +22 -12
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +3 -3
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +2 -0
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +3 -1
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -0
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +2 -0
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +2 -0
- package/packages/dd-trace/src/ci-visibility/telemetry.js +2 -0
- package/packages/dd-trace/src/ci-visibility/test-api-manual/test-api-manual-plugin.js +2 -0
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +7 -3
- package/packages/dd-trace/src/config.js +15 -4
- package/packages/dd-trace/src/config_stable.js +2 -0
- package/packages/dd-trace/src/constants.js +1 -2
- package/packages/dd-trace/src/datastreams/checkpointer.js +2 -0
- package/packages/dd-trace/src/datastreams/context.js +2 -0
- package/packages/dd-trace/src/datastreams/encoding.js +2 -0
- package/packages/dd-trace/src/datastreams/fnv.js +2 -0
- package/packages/dd-trace/src/datastreams/pathway.js +11 -9
- package/packages/dd-trace/src/datastreams/processor.js +8 -7
- package/packages/dd-trace/src/datastreams/schemas/schema.js +2 -0
- package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +45 -36
- package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +2 -0
- package/packages/dd-trace/src/datastreams/writer.js +2 -0
- package/packages/dd-trace/src/debugger/devtools_client/index.js +12 -4
- package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +2 -0
- package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +8 -5
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +1 -1
- package/packages/dd-trace/src/debugger/index.js +36 -9
- package/packages/dd-trace/src/encode/tags-processors.js +2 -0
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -0
- package/packages/dd-trace/src/exporters/common/request.js +1 -1
- package/packages/dd-trace/src/exporters/common/util.js +2 -0
- package/packages/dd-trace/src/exporters/span-stats/index.js +2 -0
- package/packages/dd-trace/src/exporters/span-stats/writer.js +2 -0
- package/packages/dd-trace/src/external-logger/src/index.js +2 -0
- package/packages/dd-trace/src/git_metadata_tagger.js +2 -0
- package/packages/dd-trace/src/git_properties.js +2 -0
- package/packages/dd-trace/src/guardrails/index.js +3 -4
- package/packages/dd-trace/src/guardrails/log.js +2 -2
- package/packages/dd-trace/src/guardrails/telemetry.js +16 -14
- package/packages/dd-trace/src/guardrails/util.js +0 -2
- package/packages/dd-trace/src/heap_snapshots.js +58 -0
- package/packages/dd-trace/src/llmobs/noop.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +2 -0
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +5 -0
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/tool.js +15 -0
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +36 -0
- package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +47 -4
- package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
- package/packages/dd-trace/src/llmobs/tagger.js +10 -1
- package/packages/dd-trace/src/log/log.js +1 -1
- package/packages/dd-trace/src/noop/dogstatsd.js +2 -0
- package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +2 -0
- package/packages/dd-trace/src/opentracing/span.js +1 -1
- package/packages/dd-trace/src/payload-tagging/config/index.js +2 -0
- package/packages/dd-trace/src/payload-tagging/index.js +3 -1
- package/packages/dd-trace/src/payload-tagging/tagging.js +4 -2
- package/packages/dd-trace/src/plugins/apollo.js +2 -0
- package/packages/dd-trace/src/plugins/ci_plugin.js +8 -3
- package/packages/dd-trace/src/plugins/index.js +1 -0
- package/packages/dd-trace/src/plugins/outbound.js +7 -0
- package/packages/dd-trace/src/plugins/util/ci.js +2 -0
- package/packages/dd-trace/src/plugins/util/env.js +2 -0
- package/packages/dd-trace/src/plugins/util/git.js +40 -5
- package/packages/dd-trace/src/plugins/util/inferred_proxy.js +2 -0
- package/packages/dd-trace/src/plugins/util/llm.js +2 -0
- package/packages/dd-trace/src/plugins/util/serverless.js +2 -0
- package/packages/dd-trace/src/plugins/util/stacktrace.js +178 -50
- package/packages/dd-trace/src/plugins/util/tags.js +17 -1
- package/packages/dd-trace/src/plugins/util/test.js +9 -4
- package/packages/dd-trace/src/plugins/util/url.js +2 -0
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +2 -0
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +4 -0
- package/packages/dd-trace/src/profiling/profiler.js +89 -70
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookup.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookupservice.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_resolve.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_reverse.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/fs.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/net.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/events.js +2 -0
- package/packages/dd-trace/src/profiling/profilers/wall.js +2 -2
- package/packages/dd-trace/src/profiling/webspan-utils.js +2 -0
- package/packages/dd-trace/src/proxy.js +4 -0
- package/packages/dd-trace/src/remote_config/capabilities.js +3 -1
- package/packages/dd-trace/src/remote_config/index.js +4 -0
- package/packages/dd-trace/src/service-naming/index.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/definition.js +4 -9
- package/packages/dd-trace/src/service-naming/schemas/util.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/graphql.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/index.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/serverless.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/graphql.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/index.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/serverless.js +2 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +4 -1
- package/packages/dd-trace/src/service-naming/schemas/v1/web.js +2 -0
- package/packages/dd-trace/src/span_stats.js +2 -0
- package/packages/dd-trace/src/supported-configurations.json +5 -0
- package/packages/dd-trace/src/telemetry/send-data.js +2 -0
- package/register.js +4 -0
- package/version.js +0 -3
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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 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('
|
|
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 { 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 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 = [
|