dd-trace 3.28.0 → 3.29.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/README.md +2 -2
- package/package.json +3 -3
- package/packages/datadog-core/src/storage/async_resource.js +4 -0
- package/packages/datadog-instrumentations/src/couchbase.js +4 -4
- package/packages/datadog-instrumentations/src/jest.js +6 -4
- package/packages/datadog-plugin-graphql/src/execute.js +6 -4
- package/packages/datadog-plugin-jest/src/index.js +8 -3
- package/packages/datadog-plugin-openai/src/index.js +39 -16
- package/packages/datadog-plugin-openai/src/services.js +13 -9
- package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +3 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +45 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/index.js +3 -3
- package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +66 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +25 -8
- package/packages/dd-trace/src/appsec/iast/analyzers/xcontenttype-header-missing-analyzer.js +19 -0
- package/packages/dd-trace/src/appsec/iast/index.js +5 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +4 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +17 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +1 -0
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +5 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +3 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +1 -1
- package/packages/dd-trace/src/config.js +26 -10
- package/packages/dd-trace/src/external-logger/src/index.js +9 -1
- package/packages/dd-trace/src/external-logger/test/index.spec.js +1 -1
- package/packages/dd-trace/src/format.js +1 -1
- package/packages/dd-trace/src/lambda/handler.js +8 -1
- package/packages/dd-trace/src/opentelemetry/span.js +3 -1
- package/packages/dd-trace/src/opentracing/span_context.js +2 -1
- package/packages/dd-trace/src/plugins/util/ci.js +2 -1
- package/packages/dd-trace/src/plugins/util/web.js +1 -0
- package/packages/dd-trace/src/profiling/config.js +8 -5
- package/packages/dd-trace/src/profiling/exporters/agent.js +4 -1
- package/packages/dd-trace/src/profiling/profiler.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/wall.js +144 -4
- package/packages/dd-trace/src/service-naming/index.js +2 -2
- package/packages/dd-trace/src/service-naming/schemas/v0/graphql.js +12 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/index.js +2 -1
- package/packages/dd-trace/src/service-naming/schemas/v1/graphql.js +12 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/index.js +2 -1
- package/packages/dd-trace/src/span_processor.js +0 -4
- package/packages/dd-trace/src/span_sampler.js +1 -1
- package/packages/dd-trace/src/telemetry/dependencies.js +24 -12
- package/packages/dd-trace/src/telemetry/metrics.js +11 -1
- package/scripts/install_plugin_modules.js +1 -0
- package/scripts/version.js +0 -66
|
@@ -7,8 +7,10 @@ const { sendData } = require('./send-data')
|
|
|
7
7
|
const dc = require('../../../diagnostics_channel')
|
|
8
8
|
const { fileURLToPath } = require('url')
|
|
9
9
|
|
|
10
|
-
const
|
|
11
|
-
const
|
|
10
|
+
const savedDependenciesToSend = new Set()
|
|
11
|
+
const detectedDependencyKeys = new Set()
|
|
12
|
+
const detectedDependencyVersions = new Set()
|
|
13
|
+
|
|
12
14
|
const FILE_URI_START = `file://`
|
|
13
15
|
const moduleLoadStartChannel = dc.channel('dd-trace:moduleLoadStart')
|
|
14
16
|
|
|
@@ -18,14 +20,14 @@ function waitAndSend (config, application, host) {
|
|
|
18
20
|
if (!immediate) {
|
|
19
21
|
immediate = setImmediate(() => {
|
|
20
22
|
immediate = null
|
|
21
|
-
if (
|
|
22
|
-
const dependencies = Array.from(
|
|
23
|
-
|
|
23
|
+
if (savedDependenciesToSend.size > 0) {
|
|
24
|
+
const dependencies = Array.from(savedDependenciesToSend.values()).splice(0, 1000).map(pair => {
|
|
25
|
+
savedDependenciesToSend.delete(pair)
|
|
24
26
|
const [name, version] = pair.split(' ')
|
|
25
27
|
return { name, version }
|
|
26
28
|
})
|
|
27
29
|
sendData(config, application, host, 'app-dependencies-loaded', { dependencies })
|
|
28
|
-
if (
|
|
30
|
+
if (savedDependenciesToSend.size > 0) {
|
|
29
31
|
waitAndSend(config, application, host)
|
|
30
32
|
}
|
|
31
33
|
}
|
|
@@ -46,15 +48,24 @@ function onModuleLoad (data) {
|
|
|
46
48
|
}
|
|
47
49
|
const parseResult = filename && parse(filename)
|
|
48
50
|
const request = data.request || (parseResult && parseResult.name)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
const dependencyKey = parseResult && parseResult.basedir ? parseResult.basedir : request
|
|
52
|
+
|
|
53
|
+
if (filename && request && isDependency(filename, request) && !detectedDependencyKeys.has(dependencyKey)) {
|
|
54
|
+
detectedDependencyKeys.add(dependencyKey)
|
|
55
|
+
|
|
51
56
|
if (parseResult) {
|
|
52
57
|
const { name, basedir } = parseResult
|
|
53
58
|
if (basedir) {
|
|
54
59
|
try {
|
|
55
60
|
const { version } = requirePackageJson(basedir, module)
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
const dependencyAndVersion = `${name} ${version}`
|
|
62
|
+
|
|
63
|
+
if (!detectedDependencyVersions.has(dependencyAndVersion)) {
|
|
64
|
+
savedDependenciesToSend.add(dependencyAndVersion)
|
|
65
|
+
detectedDependencyVersions.add(dependencyAndVersion)
|
|
66
|
+
|
|
67
|
+
waitAndSend(config, application, host)
|
|
68
|
+
}
|
|
58
69
|
} catch (e) {
|
|
59
70
|
// can not read the package.json, do nothing
|
|
60
71
|
}
|
|
@@ -88,8 +99,9 @@ function stop () {
|
|
|
88
99
|
config = null
|
|
89
100
|
application = null
|
|
90
101
|
host = null
|
|
91
|
-
|
|
92
|
-
|
|
102
|
+
detectedDependencyKeys.clear()
|
|
103
|
+
savedDependenciesToSend.clear()
|
|
104
|
+
detectedDependencyVersions.clear()
|
|
93
105
|
if (moduleLoadStartChannel.hasSubscribers) {
|
|
94
106
|
moduleLoadStartChannel.unsubscribe(onModuleLoad)
|
|
95
107
|
}
|
|
@@ -25,6 +25,10 @@ function mapToJsonArray (map) {
|
|
|
25
25
|
return Array.from(map.values()).map(v => v.toJSON())
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
function hasPoints (metric) {
|
|
29
|
+
return metric.points.length > 0
|
|
30
|
+
}
|
|
31
|
+
|
|
28
32
|
class Metric {
|
|
29
33
|
constructor (namespace, metric, common, tags) {
|
|
30
34
|
this.namespace = namespace.toString()
|
|
@@ -172,10 +176,16 @@ class MetricsCollection extends Map {
|
|
|
172
176
|
|
|
173
177
|
toJSON () {
|
|
174
178
|
if (!this.size) return
|
|
179
|
+
|
|
180
|
+
const series = mapToJsonArray(this)
|
|
181
|
+
.filter(hasPoints)
|
|
182
|
+
|
|
183
|
+
if (!series.length) return
|
|
184
|
+
|
|
175
185
|
const { namespace } = this
|
|
176
186
|
return {
|
|
177
187
|
namespace,
|
|
178
|
-
series
|
|
188
|
+
series
|
|
179
189
|
}
|
|
180
190
|
}
|
|
181
191
|
}
|
|
@@ -12,6 +12,7 @@ const externals = require('../packages/dd-trace/test/plugins/externals')
|
|
|
12
12
|
|
|
13
13
|
const requirePackageJsonPath = require.resolve('../packages/dd-trace/src/require-package-json')
|
|
14
14
|
|
|
15
|
+
// Can remove couchbase after removing support for couchbase <= 3.2.0
|
|
15
16
|
const excludeList = os.arch() === 'arm64' ? ['couchbase', 'grpc', 'oracledb'] : []
|
|
16
17
|
const workspaces = new Set()
|
|
17
18
|
const versionLists = {}
|
package/scripts/version.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const path = require('path')
|
|
4
|
-
const fs = require('fs')
|
|
5
|
-
const semver = require('semver')
|
|
6
|
-
const exec = require('./helpers/exec')
|
|
7
|
-
const title = require('./helpers/title')
|
|
8
|
-
|
|
9
|
-
const pkg = require('../package.json')
|
|
10
|
-
const increment = getIncrement()
|
|
11
|
-
const version = semver.inc(pkg.version, increment, 'pre')
|
|
12
|
-
|
|
13
|
-
title(`Bumping version to v${version}.`)
|
|
14
|
-
|
|
15
|
-
const currentBranch = exec.pipe(`git branch --show-current`)
|
|
16
|
-
|
|
17
|
-
if (currentBranch === 'master') {
|
|
18
|
-
const major = semver.major(pkg.version)
|
|
19
|
-
const nextMajor = semver.major(pkg.version) + 1
|
|
20
|
-
|
|
21
|
-
exec(`git checkout -b v${major}.x`)
|
|
22
|
-
exec(`git push -u origin HEAD`)
|
|
23
|
-
|
|
24
|
-
bump(`${nextMajor}.0.0-pre`)
|
|
25
|
-
|
|
26
|
-
exec(`git checkout v${major}.x`)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
bump(version)
|
|
30
|
-
|
|
31
|
-
exec(`git checkout ${currentBranch}`)
|
|
32
|
-
|
|
33
|
-
function bump (newVersion) {
|
|
34
|
-
pkg.version = newVersion
|
|
35
|
-
|
|
36
|
-
exec(`git checkout -b v${newVersion}-bump`)
|
|
37
|
-
write('package.json', JSON.stringify(pkg, null, 2) + '\n')
|
|
38
|
-
write('packages/dd-trace/lib/version.js', `module.exports = '${newVersion}'\n`)
|
|
39
|
-
add('package.json')
|
|
40
|
-
add('packages/dd-trace/lib/version.js')
|
|
41
|
-
exec(`git commit -m "v${newVersion}"`)
|
|
42
|
-
exec(`git push -u origin HEAD`)
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function getIncrement () {
|
|
46
|
-
const increments = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease']
|
|
47
|
-
const index = increments.indexOf(process.argv[2])
|
|
48
|
-
|
|
49
|
-
if (index === -1) {
|
|
50
|
-
throw new Error(`increment must be one of ${increments.join(', ')}`)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return increments[index]
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function filename (relativePath) {
|
|
57
|
-
return path.normalize(path.join(__dirname, '..', relativePath))
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function write (file, data) {
|
|
61
|
-
fs.writeFileSync(filename(file), data)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function add (file) {
|
|
65
|
-
exec(`git add ${filename(file)}`)
|
|
66
|
-
}
|