dd-trace 5.17.0 → 5.19.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 +1 -2
- package/ext/exporters.d.ts +1 -1
- package/index.d.ts +105 -37
- package/init.js +40 -1
- package/initialize.mjs +8 -5
- package/package.json +29 -29
- package/packages/datadog-core/src/storage/index.js +1 -10
- package/packages/datadog-esbuild/index.js +5 -1
- package/packages/datadog-instrumentations/src/aws-sdk.js +2 -1
- package/packages/datadog-instrumentations/src/child_process.js +2 -2
- package/packages/datadog-instrumentations/src/cucumber.js +76 -34
- package/packages/datadog-instrumentations/src/fs.js +1 -1
- package/packages/datadog-instrumentations/src/hapi.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hook.js +8 -3
- package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -0
- package/packages/datadog-instrumentations/src/helpers/instrument.js +4 -3
- package/packages/datadog-instrumentations/src/helpers/register.js +56 -5
- package/packages/datadog-instrumentations/src/http/client.js +1 -1
- package/packages/datadog-instrumentations/src/jest.js +17 -2
- package/packages/datadog-instrumentations/src/kafkajs.js +1 -1
- package/packages/datadog-instrumentations/src/ldapjs.js +2 -2
- package/packages/datadog-instrumentations/src/mocha/main.js +12 -1
- package/packages/datadog-instrumentations/src/mocha/utils.js +58 -14
- package/packages/datadog-instrumentations/src/mocha/worker.js +1 -0
- package/packages/datadog-instrumentations/src/mquery.js +2 -2
- package/packages/datadog-instrumentations/src/next.js +1 -1
- package/packages/datadog-instrumentations/src/pg.js +2 -2
- package/packages/datadog-instrumentations/src/playwright.js +47 -33
- package/packages/datadog-instrumentations/src/restify.js +1 -1
- package/packages/datadog-instrumentations/src/vitest.js +349 -0
- package/packages/datadog-plugin-aws-sdk/src/base.js +8 -1
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +9 -3
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +6 -1
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +23 -5
- package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
- package/packages/datadog-plugin-child_process/src/index.js +1 -1
- package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +6 -4
- package/packages/datadog-plugin-cucumber/src/index.js +24 -1
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +79 -42
- package/packages/datadog-plugin-cypress/src/plugin.js +4 -3
- package/packages/datadog-plugin-fs/src/index.js +1 -1
- package/packages/datadog-plugin-jest/src/index.js +7 -1
- package/packages/datadog-plugin-kafkajs/src/producer.js +1 -1
- package/packages/datadog-plugin-mocha/src/index.js +25 -4
- package/packages/datadog-plugin-mongodb-core/src/index.js +1 -1
- package/packages/datadog-plugin-openai/src/index.js +57 -35
- package/packages/datadog-plugin-openai/src/token-estimator.js +20 -0
- package/packages/datadog-plugin-playwright/src/index.js +4 -1
- package/packages/datadog-plugin-sharedb/src/index.js +1 -1
- package/packages/datadog-plugin-vitest/src/index.js +167 -0
- package/packages/dd-trace/src/analytics_sampler.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/path-line.js +2 -19
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +2 -2
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +3 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +4 -0
- package/packages/dd-trace/src/appsec/index.js +4 -4
- package/packages/dd-trace/src/appsec/passport.js +1 -1
- package/packages/dd-trace/src/appsec/rasp.js +32 -5
- package/packages/dd-trace/src/appsec/recommended.json +208 -3
- package/packages/dd-trace/src/appsec/reporter.js +60 -20
- package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -0
- package/packages/dd-trace/src/appsec/stack_trace.js +90 -0
- package/packages/dd-trace/src/appsec/standalone.js +130 -0
- package/packages/dd-trace/src/appsec/telemetry.js +33 -1
- package/packages/dd-trace/src/appsec/waf/index.js +2 -2
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +3 -3
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +4 -2
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +4 -2
- package/packages/dd-trace/src/config.js +136 -63
- package/packages/dd-trace/src/constants.js +3 -1
- package/packages/dd-trace/src/datastreams/processor.js +3 -2
- package/packages/dd-trace/src/exporters/agent/index.js +2 -2
- package/packages/dd-trace/src/format.js +1 -0
- package/packages/dd-trace/src/opentelemetry/span.js +1 -1
- package/packages/dd-trace/src/opentelemetry/tracer.js +6 -0
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +12 -0
- package/packages/dd-trace/src/opentracing/span.js +4 -1
- package/packages/dd-trace/src/opentracing/tracer.js +2 -2
- package/packages/dd-trace/src/plugins/ci_plugin.js +7 -0
- package/packages/dd-trace/src/plugins/index.js +2 -0
- package/packages/dd-trace/src/plugins/util/test.js +5 -1
- package/packages/dd-trace/src/priority_sampler.js +2 -5
- package/packages/dd-trace/src/profiling/profiler.js +1 -1
- package/packages/dd-trace/src/proxy.js +3 -1
- package/packages/dd-trace/src/rate_limiter.js +2 -2
- package/packages/dd-trace/src/span_stats.js +4 -3
- package/packages/dd-trace/src/telemetry/init-telemetry.js +75 -0
- package/packages/dd-trace/src/tracer.js +2 -2
- package/packages/dd-trace/src/util.js +6 -1
- package/packages/datadog-core/src/storage/async_hooks.js +0 -49
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fs = require('fs')
|
|
4
|
+
const { spawn } = require('child_process')
|
|
5
|
+
const tracerVersion = require('../../../../package.json').version
|
|
6
|
+
const log = require('../log')
|
|
7
|
+
|
|
8
|
+
module.exports = sendTelemetry
|
|
9
|
+
|
|
10
|
+
if (!process.env.DD_INJECTION_ENABLED) {
|
|
11
|
+
module.exports = () => {}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (!process.env.DD_TELEMETRY_FORWARDER_PATH) {
|
|
15
|
+
module.exports = () => {}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (!fs.existsSync(process.env.DD_TELEMETRY_FORWARDER_PATH)) {
|
|
19
|
+
module.exports = () => {}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const metadata = {
|
|
23
|
+
language_name: 'nodejs',
|
|
24
|
+
language_version: process.versions.node,
|
|
25
|
+
runtime_name: 'nodejs',
|
|
26
|
+
runtime_version: process.versions.node,
|
|
27
|
+
tracer_version: tracerVersion,
|
|
28
|
+
pid: process.pid
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const seen = []
|
|
32
|
+
function hasSeen (point) {
|
|
33
|
+
if (point.name === 'abort') {
|
|
34
|
+
// This one can only be sent once, regardless of tags
|
|
35
|
+
return seen.includes('abort')
|
|
36
|
+
}
|
|
37
|
+
if (point.name === 'abort.integration') {
|
|
38
|
+
// For now, this is the only other one we want to dedupe
|
|
39
|
+
const compiledPoint = point.name + point.tags.join('')
|
|
40
|
+
return seen.includes(compiledPoint)
|
|
41
|
+
}
|
|
42
|
+
return false
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function sendTelemetry (name, tags = []) {
|
|
46
|
+
let points = name
|
|
47
|
+
if (typeof name === 'string') {
|
|
48
|
+
points = [{ name, tags }]
|
|
49
|
+
}
|
|
50
|
+
if (['1', 'true', 'True'].includes(process.env.DD_INJECT_FORCE)) {
|
|
51
|
+
points = points.filter(p => ['error', 'complete'].includes(p.name))
|
|
52
|
+
}
|
|
53
|
+
points = points.filter(p => !hasSeen(p))
|
|
54
|
+
points.forEach(p => {
|
|
55
|
+
p.name = `library_entrypoint.${p.name}`
|
|
56
|
+
})
|
|
57
|
+
if (points.length === 0) {
|
|
58
|
+
return
|
|
59
|
+
}
|
|
60
|
+
const proc = spawn(process.env.DD_TELEMETRY_FORWARDER_PATH, ['library_entrypoint'], {
|
|
61
|
+
stdio: 'pipe'
|
|
62
|
+
})
|
|
63
|
+
proc.on('error', () => {
|
|
64
|
+
log.error('Failed to spawn telemetry forwarder')
|
|
65
|
+
})
|
|
66
|
+
proc.on('exit', (code) => {
|
|
67
|
+
if (code !== 0) {
|
|
68
|
+
log.error(`Telemetry forwarder exited with code ${code}`)
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
proc.stdin.on('error', () => {
|
|
72
|
+
log.error('Failed to write telemetry data to telemetry forwarder')
|
|
73
|
+
})
|
|
74
|
+
proc.stdin.end(JSON.stringify({ metadata, points }))
|
|
75
|
+
}
|
|
@@ -20,8 +20,8 @@ const SERVICE_NAME = tags.SERVICE_NAME
|
|
|
20
20
|
const MEASURED = tags.MEASURED
|
|
21
21
|
|
|
22
22
|
class DatadogTracer extends Tracer {
|
|
23
|
-
constructor (config) {
|
|
24
|
-
super(config)
|
|
23
|
+
constructor (config, prioritySampler) {
|
|
24
|
+
super(config, prioritySampler)
|
|
25
25
|
this._dataStreamsProcessor = new DataStreamsProcessor(config)
|
|
26
26
|
this._scope = new Scope()
|
|
27
27
|
setStartupLogConfig(config)
|
|
@@ -69,10 +69,15 @@ function calculateDDBasePath (dirname) {
|
|
|
69
69
|
return dirSteps.slice(0, packagesIndex + 1).join(path.sep) + path.sep
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
function hasOwn (object, prop) {
|
|
73
|
+
return Object.prototype.hasOwnProperty.call(object, prop)
|
|
74
|
+
}
|
|
75
|
+
|
|
72
76
|
module.exports = {
|
|
73
77
|
isTrue,
|
|
74
78
|
isFalse,
|
|
75
79
|
isError,
|
|
76
80
|
globMatch,
|
|
77
|
-
calculateDDBasePath
|
|
81
|
+
calculateDDBasePath,
|
|
82
|
+
hasOwn
|
|
78
83
|
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { executionAsyncId } = require('async_hooks')
|
|
4
|
-
const AsyncResourceStorage = require('./async_resource')
|
|
5
|
-
|
|
6
|
-
class AsyncHooksStorage extends AsyncResourceStorage {
|
|
7
|
-
constructor () {
|
|
8
|
-
super()
|
|
9
|
-
|
|
10
|
-
this._resources = new Map()
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
disable () {
|
|
14
|
-
super.disable()
|
|
15
|
-
|
|
16
|
-
this._resources.clear()
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
_createHook () {
|
|
20
|
-
return {
|
|
21
|
-
...super._createHook(),
|
|
22
|
-
destroy: this._destroy.bind(this)
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
_init (asyncId, type, triggerAsyncId, resource) {
|
|
27
|
-
super._init.apply(this, arguments)
|
|
28
|
-
|
|
29
|
-
this._resources.set(asyncId, resource)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
_destroy (asyncId) {
|
|
33
|
-
this._resources.delete(asyncId)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
_executionAsyncResource () {
|
|
37
|
-
const asyncId = executionAsyncId()
|
|
38
|
-
|
|
39
|
-
let resource = this._resources.get(asyncId)
|
|
40
|
-
|
|
41
|
-
if (!resource) {
|
|
42
|
-
this._resources.set(asyncId, resource = {})
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return resource
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
module.exports = AsyncHooksStorage
|