dd-trace 3.12.1 → 3.15.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 -0
- package/README.md +5 -5
- package/ci/init.js +3 -1
- package/index.d.ts +100 -1
- package/package.json +5 -4
- package/packages/datadog-instrumentations/src/aws-sdk.js +86 -0
- package/packages/datadog-instrumentations/src/cucumber.js +74 -15
- package/packages/datadog-instrumentations/src/cypress.js +1 -1
- package/packages/datadog-instrumentations/src/fs.js +358 -0
- package/packages/datadog-instrumentations/src/helpers/hooks.js +4 -0
- package/packages/datadog-instrumentations/src/helpers/register.js +1 -1
- package/packages/datadog-instrumentations/src/jest.js +24 -23
- package/packages/datadog-instrumentations/src/ldapjs.js +12 -2
- package/packages/datadog-instrumentations/src/mocha.js +10 -7
- package/packages/datadog-instrumentations/src/mongoose.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +7 -1
- package/packages/datadog-instrumentations/src/mysql2.js +7 -1
- package/packages/datadog-instrumentations/src/next.js +2 -1
- package/packages/datadog-instrumentations/src/playwright.js +263 -0
- package/packages/datadog-plugin-aws-sdk/src/base.js +12 -5
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +29 -24
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +31 -16
- package/packages/datadog-plugin-cucumber/src/index.js +42 -11
- package/packages/datadog-plugin-cypress/src/plugin.js +129 -4
- package/packages/datadog-plugin-cypress/src/support.js +5 -0
- package/packages/datadog-plugin-fs/src/index.js +45 -0
- package/packages/datadog-plugin-hapi/src/index.js +5 -1
- package/packages/datadog-plugin-http/src/server.js +1 -1
- package/packages/datadog-plugin-http2/src/server.js +1 -1
- package/packages/datadog-plugin-jest/src/index.js +40 -70
- package/packages/datadog-plugin-mocha/src/index.js +44 -64
- package/packages/datadog-plugin-mysql/src/index.js +8 -7
- package/packages/datadog-plugin-playwright/src/index.js +112 -0
- package/packages/datadog-shimmer/src/shimmer.js +28 -11
- package/packages/dd-trace/src/appsec/addresses.js +3 -1
- package/packages/dd-trace/src/appsec/blocking.js +35 -9
- package/packages/dd-trace/src/appsec/callbacks/ddwaf.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +1 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +60 -0
- package/packages/dd-trace/src/appsec/iast/iast-context.js +6 -2
- package/packages/dd-trace/src/appsec/iast/index.js +3 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +5 -2
- package/packages/dd-trace/src/appsec/index.js +5 -5
- package/packages/dd-trace/src/appsec/recommended.json +320 -184
- package/packages/dd-trace/src/appsec/remote_config/capabilities.js +2 -1
- package/packages/dd-trace/src/appsec/remote_config/index.js +3 -0
- package/packages/dd-trace/src/appsec/reporter.js +14 -14
- package/packages/dd-trace/src/appsec/sdk/index.js +41 -0
- package/packages/dd-trace/src/appsec/sdk/noop.js +17 -0
- package/packages/dd-trace/src/appsec/sdk/set_user.js +30 -0
- package/packages/dd-trace/src/appsec/sdk/track_event.js +74 -0
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +73 -0
- package/packages/dd-trace/src/appsec/sdk/utils.js +10 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +1 -5
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +1 -5
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +48 -11
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +7 -1
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-itr-configuration.js +4 -2
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +5 -3
- package/packages/dd-trace/src/config.js +63 -7
- package/packages/dd-trace/src/encode/0.4.js +1 -1
- package/packages/dd-trace/src/encode/0.5.js +1 -1
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +44 -4
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +52 -37
- package/packages/dd-trace/src/encode/tags-processors.js +3 -2
- package/packages/dd-trace/src/exporters/common/request.js +10 -3
- package/packages/dd-trace/src/lambda/handler.js +5 -6
- package/packages/dd-trace/src/log/channels.js +47 -0
- package/packages/dd-trace/src/log/index.js +79 -0
- package/packages/dd-trace/src/log/writer.js +124 -0
- package/packages/dd-trace/src/metrics.js +18 -0
- package/packages/dd-trace/src/noop/proxy.js +5 -2
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +188 -36
- package/packages/dd-trace/src/opentracing/propagation/tracestate.js +99 -0
- package/packages/dd-trace/src/opentracing/span.js +2 -1
- package/packages/dd-trace/src/opentracing/span_context.js +6 -3
- package/packages/dd-trace/src/plugins/ci_plugin.js +72 -12
- package/packages/dd-trace/src/plugins/index.js +2 -0
- package/packages/dd-trace/src/plugins/util/ci.js +13 -21
- package/packages/dd-trace/src/plugins/util/exec.js +2 -2
- package/packages/dd-trace/src/plugins/util/git.js +16 -1
- package/packages/dd-trace/src/{appsec → plugins/util}/ip_extractor.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +53 -10
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +2 -7
- package/packages/dd-trace/src/plugins/util/web.js +11 -0
- package/packages/dd-trace/src/profiler.js +3 -0
- package/packages/dd-trace/src/profiling/config.js +8 -3
- package/packages/dd-trace/src/profiling/exporters/file.js +13 -2
- package/packages/dd-trace/src/profiling/profiler.js +23 -6
- package/packages/dd-trace/src/profiling/profilers/wall.js +1 -0
- package/packages/dd-trace/src/proxy.js +2 -0
- package/packages/dd-trace/src/span_processor.js +1 -1
- package/packages/dd-trace/src/span_sampler.js +68 -52
- package/packages/dd-trace/src/startup-log.js +3 -6
- package/packages/dd-trace/src/telemetry/index.js +23 -2
- package/packages/dd-trace/src/telemetry/send-data.js +4 -1
- package/packages/dd-trace/src/tracer.js +0 -16
- package/scripts/check-proposal-labels.js +71 -0
- package/packages/dd-trace/src/log.js +0 -143
- /package/packages/dd-trace/src/{appsec → plugins/util}/ip_blocklist.js +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const tracerVersion = require('../../../../package.json').version
|
|
4
|
-
const containerId = require('../exporters/common/docker').id()
|
|
5
4
|
const os = require('os')
|
|
6
5
|
const dependencies = require('./dependencies')
|
|
7
6
|
const { sendData } = require('./send-data')
|
|
@@ -76,9 +75,31 @@ function createAppObject () {
|
|
|
76
75
|
}
|
|
77
76
|
|
|
78
77
|
function createHostObject () {
|
|
78
|
+
const osName = os.type()
|
|
79
|
+
|
|
80
|
+
if (osName === 'Linux' || osName === 'Darwin') {
|
|
81
|
+
return {
|
|
82
|
+
hostname: os.hostname(),
|
|
83
|
+
os: osName,
|
|
84
|
+
architecture: os.arch(),
|
|
85
|
+
kernel_version: os.version(),
|
|
86
|
+
kernel_release: os.release(),
|
|
87
|
+
kernel_name: osName
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (osName === 'Windows_NT') {
|
|
92
|
+
return {
|
|
93
|
+
hostname: os.hostname(),
|
|
94
|
+
os: osName,
|
|
95
|
+
architecture: os.arch(),
|
|
96
|
+
os_version: os.version()
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
79
100
|
return {
|
|
80
101
|
hostname: os.hostname(), // TODO is this enough?
|
|
81
|
-
|
|
102
|
+
os: osName
|
|
82
103
|
}
|
|
83
104
|
}
|
|
84
105
|
|
|
@@ -6,6 +6,9 @@ function sendData (config, application, host, reqType, payload = {}) {
|
|
|
6
6
|
port,
|
|
7
7
|
url
|
|
8
8
|
} = config
|
|
9
|
+
|
|
10
|
+
const { logger, tags, serviceMapping, ...trimmedPayload } = payload
|
|
11
|
+
|
|
9
12
|
const options = {
|
|
10
13
|
url,
|
|
11
14
|
hostname,
|
|
@@ -24,7 +27,7 @@ function sendData (config, application, host, reqType, payload = {}) {
|
|
|
24
27
|
tracer_time: Math.floor(Date.now() / 1000),
|
|
25
28
|
runtime_id: config.tags['runtime-id'],
|
|
26
29
|
seq_id: ++seqId,
|
|
27
|
-
payload,
|
|
30
|
+
payload: trimmedPayload,
|
|
28
31
|
application,
|
|
29
32
|
host
|
|
30
33
|
})
|
|
@@ -123,22 +123,6 @@ class DatadogTracer extends Tracer {
|
|
|
123
123
|
<meta name="dd-trace-id" content="${traceId}" />\
|
|
124
124
|
<meta name="dd-trace-time" content="${traceTime}" />`
|
|
125
125
|
}
|
|
126
|
-
|
|
127
|
-
setUser (user) {
|
|
128
|
-
if (!user || !user.id) return this
|
|
129
|
-
|
|
130
|
-
const span = this.scope().active()
|
|
131
|
-
if (!span) return this
|
|
132
|
-
|
|
133
|
-
const rootSpan = span._spanContext._trace.started[0]
|
|
134
|
-
if (!rootSpan) return this
|
|
135
|
-
|
|
136
|
-
for (const k of Object.keys(user)) {
|
|
137
|
-
rootSpan.setTag(`usr.${k}`, '' + user[k])
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return this
|
|
141
|
-
}
|
|
142
126
|
}
|
|
143
127
|
|
|
144
128
|
function addError (span, error) {
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
|
|
3
|
+
const childProcess = require('child_process')
|
|
4
|
+
const ORIGIN = 'origin/'
|
|
5
|
+
|
|
6
|
+
let releaseBranch = process.env['GITHUB_BASE_REF'] // 'origin/v3.x'
|
|
7
|
+
let releaseVersion = releaseBranch
|
|
8
|
+
if (releaseBranch.startsWith(ORIGIN)) {
|
|
9
|
+
releaseVersion = releaseBranch.substring(ORIGIN.length)
|
|
10
|
+
} else {
|
|
11
|
+
releaseBranch = ORIGIN + releaseBranch
|
|
12
|
+
}
|
|
13
|
+
let currentBranch = process.env['GITHUB_HEAD_REF'] // 'ugaitz/workflow-to-verify-dont-land-on-v3.x'
|
|
14
|
+
if (!currentBranch.startsWith(ORIGIN)) {
|
|
15
|
+
currentBranch = ORIGIN + currentBranch
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const getHashesCommandWithExclusions = 'branch-diff --user DataDog --repo dd-trace-js --exclude-label=semver-major' +
|
|
19
|
+
` --exclude-label=dont-land-on-${releaseVersion} ${releaseBranch} ${currentBranch}`
|
|
20
|
+
const getHashesCommandWithoutExclusions =
|
|
21
|
+
`branch-diff --user DataDog --repo dd-trace-js ${releaseBranch} ${currentBranch}`
|
|
22
|
+
|
|
23
|
+
childProcess.exec(getHashesCommandWithExclusions, { timeout: 30000 },
|
|
24
|
+
(withExclusionError, withExclusionStdout, withExclusionStderr) => {
|
|
25
|
+
if (withExclusionError) {
|
|
26
|
+
console.error(`stdout:
|
|
27
|
+
${withExclusionStdout}
|
|
28
|
+
stderr:
|
|
29
|
+
${withExclusionStderr}
|
|
30
|
+
`, withExclusionError)
|
|
31
|
+
process.exit(1)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
if (withExclusionStderr) {
|
|
35
|
+
console.error(withExclusionStderr)
|
|
36
|
+
process.exit(1)
|
|
37
|
+
return
|
|
38
|
+
}
|
|
39
|
+
const commitsHashesWithExclusions = withExclusionStdout.split('\n')
|
|
40
|
+
|
|
41
|
+
childProcess.exec(getHashesCommandWithoutExclusions,
|
|
42
|
+
(withoutExclusionError, withoutExclusionStdout, withoutExclusionStderr) => {
|
|
43
|
+
if (withoutExclusionError) {
|
|
44
|
+
console.error(`stdout:
|
|
45
|
+
${withoutExclusionStdout}
|
|
46
|
+
stderr:
|
|
47
|
+
${withoutExclusionStderr}
|
|
48
|
+
`, withoutExclusionError)
|
|
49
|
+
process.exit(1)
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
if (withoutExclusionStderr) {
|
|
53
|
+
console.error(withoutExclusionStderr)
|
|
54
|
+
process.exit(1)
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
const commitsHashesWithoutExclusions = withoutExclusionStdout.split('\n')
|
|
58
|
+
if (commitsHashesWithExclusions.length !== commitsHashesWithoutExclusions.length) {
|
|
59
|
+
const commitsWithInvalidLabels = []
|
|
60
|
+
commitsHashesWithoutExclusions.filter(c1 => {
|
|
61
|
+
if (!commitsHashesWithExclusions.some(c2 => c2 === c1)) {
|
|
62
|
+
commitsWithInvalidLabels.push(c1)
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
console.error('Some excluded label added in the release proposal', commitsWithInvalidLabels)
|
|
66
|
+
process.exit(1)
|
|
67
|
+
} else {
|
|
68
|
+
console.log('Commit PRs label looks OK')
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
})
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { storage } = require('../../datadog-core')
|
|
4
|
-
|
|
5
|
-
const _default = {
|
|
6
|
-
debug: msg => console.debug(msg), /* eslint-disable-line no-console */
|
|
7
|
-
info: msg => console.info(msg), /* eslint-disable-line no-console */
|
|
8
|
-
warn: msg => console.warn(msg), /* eslint-disable-line no-console */
|
|
9
|
-
error: msg => console.error(msg) /* eslint-disable-line no-console */
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// based on: https://github.com/trentm/node-bunyan#levels
|
|
13
|
-
const _logLevels = {
|
|
14
|
-
'debug': 20,
|
|
15
|
-
'info': 30,
|
|
16
|
-
'warn': 40,
|
|
17
|
-
'error': 50
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const _defaultLogLevel = 'debug'
|
|
21
|
-
|
|
22
|
-
const _checkLogLevel = (logLevel) => {
|
|
23
|
-
if (logLevel && typeof logLevel === 'string') {
|
|
24
|
-
return _logLevels[logLevel.toLowerCase().trim()] || _logLevels[_defaultLogLevel]
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return _logLevels[_defaultLogLevel]
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const memoize = func => {
|
|
31
|
-
const cache = {}
|
|
32
|
-
const memoized = function (key) {
|
|
33
|
-
if (!cache[key]) {
|
|
34
|
-
cache[key] = func.apply(this, arguments)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return cache[key]
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return memoized
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function processMsg (msg) {
|
|
44
|
-
return typeof msg === 'function' ? msg() : msg
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function withNoop (fn) {
|
|
48
|
-
const store = storage.getStore()
|
|
49
|
-
|
|
50
|
-
storage.enterWith({ noop: true })
|
|
51
|
-
fn()
|
|
52
|
-
storage.enterWith(store)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const log = {
|
|
56
|
-
_isLogLevelEnabled (level) {
|
|
57
|
-
return _logLevels[level] >= this._logLevel
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
use (logger) {
|
|
61
|
-
if (logger && logger.debug instanceof Function && logger.error instanceof Function) {
|
|
62
|
-
this._logger = logger
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return this
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
toggle (enabled, logLevel, tracer) {
|
|
69
|
-
this._enabled = enabled
|
|
70
|
-
this._logLevel = _checkLogLevel(logLevel)
|
|
71
|
-
this._tracer = tracer
|
|
72
|
-
|
|
73
|
-
return this
|
|
74
|
-
},
|
|
75
|
-
|
|
76
|
-
reset () {
|
|
77
|
-
this._logger = _default
|
|
78
|
-
this._enabled = false
|
|
79
|
-
this._deprecate = memoize((code, message) => {
|
|
80
|
-
withNoop(() => this._logger.error(message))
|
|
81
|
-
return this
|
|
82
|
-
})
|
|
83
|
-
this._logLevel = _checkLogLevel()
|
|
84
|
-
|
|
85
|
-
return this
|
|
86
|
-
},
|
|
87
|
-
|
|
88
|
-
debug (message) {
|
|
89
|
-
if (this._enabled && this._isLogLevelEnabled('debug')) {
|
|
90
|
-
withNoop(() => this._logger.debug(processMsg(message)))
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return this
|
|
94
|
-
},
|
|
95
|
-
|
|
96
|
-
info (message) {
|
|
97
|
-
if (!this._logger.info) return this.debug(message)
|
|
98
|
-
if (this._enabled && this._isLogLevelEnabled('info')) {
|
|
99
|
-
withNoop(() => this._logger.info(processMsg(message)))
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return this
|
|
103
|
-
},
|
|
104
|
-
|
|
105
|
-
warn (message) {
|
|
106
|
-
if (!this._logger.warn) return this.debug(message)
|
|
107
|
-
if (this._enabled && this._isLogLevelEnabled('warn')) {
|
|
108
|
-
withNoop(() => this._logger.warn(processMsg(message)))
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return this
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
error (err) {
|
|
115
|
-
if (this._enabled && this._isLogLevelEnabled('error')) {
|
|
116
|
-
if (err instanceof Function) {
|
|
117
|
-
err = err()
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (typeof err !== 'object' || !err) {
|
|
121
|
-
err = String(err)
|
|
122
|
-
} else if (!err.stack) {
|
|
123
|
-
err = String(err.message || err)
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (typeof err === 'string') {
|
|
127
|
-
err = new Error(err)
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
withNoop(() => this._logger.error(err))
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return this
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
deprecate (code, message) {
|
|
137
|
-
return this._deprecate(code, message)
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
log.reset()
|
|
142
|
-
|
|
143
|
-
module.exports = log
|
|
File without changes
|