dd-trace 2.27.1 → 2.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/LICENSE-3rdparty.csv +2 -2
- package/README.md +9 -5
- package/ci/init.js +9 -1
- package/ext/exporters.d.ts +2 -1
- package/ext/exporters.js +2 -1
- package/index.d.ts +36 -3
- package/package.json +21 -19
- package/packages/datadog-instrumentations/src/cucumber.js +80 -3
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +100 -27
- package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
- package/packages/datadog-instrumentations/src/jest.js +35 -3
- package/packages/datadog-instrumentations/src/ldapjs.js +12 -2
- package/packages/datadog-instrumentations/src/mariadb.js +130 -11
- package/packages/datadog-instrumentations/src/mocha.js +30 -6
- package/packages/datadog-instrumentations/src/mongodb-core.js +8 -2
- package/packages/datadog-instrumentations/src/mongoose.js +1 -1
- package/packages/datadog-instrumentations/src/next.js +33 -4
- package/packages/datadog-instrumentations/src/playwright.js +42 -13
- package/packages/datadog-plugin-amqp10/src/consumer.js +1 -1
- package/packages/datadog-plugin-amqp10/src/index.js +1 -1
- package/packages/datadog-plugin-amqp10/src/producer.js +3 -2
- package/packages/datadog-plugin-amqplib/src/client.js +3 -2
- package/packages/datadog-plugin-amqplib/src/consumer.js +1 -1
- package/packages/datadog-plugin-amqplib/src/index.js +1 -1
- package/packages/datadog-plugin-amqplib/src/producer.js +3 -2
- package/packages/datadog-plugin-aws-sdk/src/base.js +7 -2
- package/packages/datadog-plugin-aws-sdk/src/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/s3.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +2 -0
- package/packages/datadog-plugin-bunyan/src/index.js +1 -1
- package/packages/datadog-plugin-cassandra-driver/src/index.js +3 -2
- package/packages/datadog-plugin-connect/src/index.js +1 -1
- package/packages/datadog-plugin-couchbase/src/index.js +1 -1
- package/packages/datadog-plugin-cucumber/src/index.js +33 -6
- package/packages/datadog-plugin-cypress/src/index.js +1 -1
- package/packages/datadog-plugin-cypress/src/plugin.js +40 -33
- package/packages/datadog-plugin-dns/src/index.js +1 -1
- package/packages/datadog-plugin-dns/src/lookup.js +1 -1
- package/packages/datadog-plugin-dns/src/lookup_service.js +1 -1
- package/packages/datadog-plugin-dns/src/resolve.js +1 -1
- package/packages/datadog-plugin-dns/src/reverse.js +1 -1
- package/packages/datadog-plugin-elasticsearch/src/index.js +1 -1
- package/packages/datadog-plugin-express/src/index.js +1 -1
- package/packages/datadog-plugin-fastify/src/index.js +1 -1
- package/packages/datadog-plugin-find-my-way/src/index.js +1 -1
- package/packages/datadog-plugin-fs/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +5 -5
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +7 -6
- package/packages/datadog-plugin-graphql/src/execute.js +1 -1
- package/packages/datadog-plugin-graphql/src/index.js +1 -1
- package/packages/datadog-plugin-graphql/src/parse.js +1 -1
- package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
- package/packages/datadog-plugin-graphql/src/validate.js +1 -1
- package/packages/datadog-plugin-grpc/src/client.js +1 -1
- package/packages/datadog-plugin-grpc/src/index.js +1 -1
- package/packages/datadog-plugin-grpc/src/server.js +1 -1
- package/packages/datadog-plugin-hapi/src/index.js +1 -1
- package/packages/datadog-plugin-http/src/client.js +2 -2
- package/packages/datadog-plugin-http/src/index.js +1 -1
- package/packages/datadog-plugin-http/src/server.js +3 -3
- package/packages/datadog-plugin-http2/src/client.js +4 -3
- package/packages/datadog-plugin-http2/src/index.js +1 -1
- package/packages/datadog-plugin-http2/src/server.js +3 -3
- package/packages/datadog-plugin-ioredis/src/index.js +1 -1
- package/packages/datadog-plugin-jest/src/index.js +53 -19
- package/packages/datadog-plugin-kafkajs/src/consumer.js +1 -1
- package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
- package/packages/datadog-plugin-kafkajs/src/producer.js +1 -1
- package/packages/datadog-plugin-koa/src/index.js +1 -1
- package/packages/datadog-plugin-mariadb/src/index.js +18 -1
- package/packages/datadog-plugin-memcached/src/index.js +3 -2
- package/packages/datadog-plugin-microgateway-core/src/index.js +1 -1
- package/packages/datadog-plugin-mocha/src/index.js +13 -9
- package/packages/datadog-plugin-moleculer/src/client.js +1 -1
- package/packages/datadog-plugin-moleculer/src/index.js +1 -1
- package/packages/datadog-plugin-moleculer/src/server.js +1 -1
- package/packages/datadog-plugin-mongodb-core/src/index.js +1 -1
- package/packages/datadog-plugin-mysql/src/index.js +3 -2
- package/packages/datadog-plugin-mysql2/src/index.js +1 -1
- package/packages/datadog-plugin-net/src/index.js +9 -75
- package/packages/datadog-plugin-net/src/ipc.js +1 -1
- package/packages/datadog-plugin-net/src/tcp.js +3 -2
- package/packages/datadog-plugin-next/src/index.js +3 -3
- package/packages/datadog-plugin-opensearch/src/index.js +1 -1
- package/packages/datadog-plugin-oracledb/src/index.js +3 -2
- package/packages/datadog-plugin-paperplane/src/index.js +1 -1
- package/packages/datadog-plugin-paperplane/src/logger.js +1 -1
- package/packages/datadog-plugin-paperplane/src/server.js +1 -1
- package/packages/datadog-plugin-pg/src/index.js +3 -2
- package/packages/datadog-plugin-pino/src/index.js +1 -1
- package/packages/datadog-plugin-playwright/src/index.js +5 -4
- package/packages/datadog-plugin-redis/src/index.js +3 -2
- package/packages/datadog-plugin-restify/src/index.js +1 -1
- package/packages/datadog-plugin-rhea/src/consumer.js +1 -1
- package/packages/datadog-plugin-rhea/src/index.js +1 -1
- package/packages/datadog-plugin-rhea/src/producer.js +3 -2
- package/packages/datadog-plugin-router/src/index.js +8 -8
- package/packages/datadog-plugin-sharedb/src/index.js +1 -1
- package/packages/datadog-plugin-tedious/src/index.js +3 -2
- package/packages/datadog-plugin-web/src/index.js +1 -1
- package/packages/datadog-plugin-winston/src/index.js +1 -1
- 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/gateway/engine/runner.js +2 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +2 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +2 -2
- package/packages/dd-trace/src/appsec/iast/iast-context.js +6 -2
- package/packages/dd-trace/src/appsec/iast/iast-log.js +111 -0
- package/packages/dd-trace/src/appsec/iast/index.js +10 -6
- package/packages/dd-trace/src/appsec/iast/path-line.js +3 -6
- package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +2 -0
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +2 -0
- package/packages/dd-trace/src/appsec/iast/taint-tracking/origin-types.js +2 -0
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -0
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +9 -4
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +5 -3
- package/packages/dd-trace/src/appsec/iast/telemetry/log_collector.js +96 -0
- package/packages/dd-trace/src/appsec/iast/telemetry/logs.js +87 -0
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +27 -2
- package/packages/dd-trace/src/appsec/index.js +4 -4
- package/packages/dd-trace/src/appsec/recommended.json +76 -75
- 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/sdk/index.js +19 -1
- package/packages/dd-trace/src/appsec/sdk/noop.js +6 -0
- package/packages/dd-trace/src/appsec/sdk/set_user.js +30 -0
- package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +73 -0
- package/packages/dd-trace/src/ci-visibility/encode/json-encoder.js +27 -0
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +17 -9
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +14 -8
- package/packages/dd-trace/src/ci-visibility/exporters/jest-worker/index.js +33 -0
- package/packages/dd-trace/src/ci-visibility/exporters/jest-worker/writer.js +37 -0
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-itr-configuration.js +12 -4
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +12 -4
- package/packages/dd-trace/src/config.js +24 -5
- package/packages/dd-trace/src/constants.js +2 -1
- package/packages/dd-trace/src/datastreams/encoding.js +80 -0
- package/packages/dd-trace/src/exporter.js +7 -9
- package/packages/dd-trace/src/exporters/common/agents.js +42 -0
- package/packages/dd-trace/src/exporters/common/docker.js +4 -1
- package/packages/dd-trace/src/exporters/common/request.js +1 -4
- package/packages/dd-trace/src/lambda/handler.js +19 -12
- package/packages/dd-trace/src/log/writer.js +32 -24
- package/packages/dd-trace/src/metrics.js +18 -0
- package/packages/dd-trace/src/noop/proxy.js +2 -2
- package/packages/dd-trace/src/opentracing/span.js +5 -0
- package/packages/dd-trace/src/opentracing/span_context.js +1 -1
- package/packages/dd-trace/src/plugin_manager.js +7 -7
- package/packages/dd-trace/src/plugins/ci_plugin.js +20 -17
- package/packages/dd-trace/src/plugins/index.js +1 -0
- package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
- package/packages/dd-trace/src/plugins/outgoing.js +2 -1
- package/packages/dd-trace/src/plugins/tracing.js +1 -1
- package/packages/dd-trace/src/plugins/util/ci.js +12 -0
- 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/plugins/util/ip_extractor.js +23 -27
- package/packages/dd-trace/src/plugins/util/test.js +26 -7
- package/packages/dd-trace/src/profiler.js +3 -0
- package/packages/dd-trace/src/profiling/config.js +92 -20
- package/packages/dd-trace/src/profiling/constants.js +16 -0
- package/packages/dd-trace/src/profiling/exporter_cli.js +62 -0
- package/packages/dd-trace/src/profiling/exporters/agent.js +2 -1
- package/packages/dd-trace/src/profiling/exporters/file.js +13 -2
- package/packages/dd-trace/src/profiling/profiler.js +42 -12
- package/packages/dd-trace/src/profiling/profilers/space.js +21 -1
- package/packages/dd-trace/src/profiling/profilers/wall.js +1 -0
- package/packages/dd-trace/src/proxy.js +1 -1
- package/packages/dd-trace/src/span_processor.js +1 -1
- package/packages/dd-trace/src/span_sampler.js +71 -54
- package/packages/dd-trace/src/startup-log.js +3 -6
- package/packages/dd-trace/src/telemetry/index.js +16 -2
- package/packages/dd-trace/src/tracer.js +0 -16
- package/packages/dd-trace/src/util.js +10 -1
- package/scripts/install_plugin_modules.js +5 -1
- package/scripts/junit_report.js +0 -25
- package/scripts/tdd.js +0 -34
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const tracerVersion = require('../../../../package.json').version
|
|
4
|
+
const dc = require('diagnostics_channel')
|
|
4
5
|
const os = require('os')
|
|
5
6
|
const dependencies = require('./dependencies')
|
|
6
7
|
const { sendData } = require('./send-data')
|
|
@@ -9,6 +10,9 @@ const HEARTBEAT_INTERVAL = process.env.DD_TELEMETRY_HEARTBEAT_INTERVAL
|
|
|
9
10
|
? Number(process.env.DD_TELEMETRY_HEARTBEAT_INTERVAL) * 1000
|
|
10
11
|
: 60000
|
|
11
12
|
|
|
13
|
+
const telemetryStartChannel = dc.channel('datadog:telemetry:start')
|
|
14
|
+
const telemetryStopChannel = dc.channel('datadog:telemetry:stop')
|
|
15
|
+
|
|
12
16
|
let config
|
|
13
17
|
let pluginManager
|
|
14
18
|
|
|
@@ -103,8 +107,12 @@ function createHostObject () {
|
|
|
103
107
|
}
|
|
104
108
|
}
|
|
105
109
|
|
|
110
|
+
function getTelemetryData () {
|
|
111
|
+
return { config, application, host, heartbeatInterval: HEARTBEAT_INTERVAL }
|
|
112
|
+
}
|
|
113
|
+
|
|
106
114
|
function start (aConfig, thePluginManager) {
|
|
107
|
-
if (!aConfig.
|
|
115
|
+
if (!aConfig.telemetry.enabled) {
|
|
108
116
|
return
|
|
109
117
|
}
|
|
110
118
|
config = aConfig
|
|
@@ -118,6 +126,8 @@ function start (aConfig, thePluginManager) {
|
|
|
118
126
|
}, HEARTBEAT_INTERVAL)
|
|
119
127
|
interval.unref()
|
|
120
128
|
process.on('beforeExit', onBeforeExit)
|
|
129
|
+
|
|
130
|
+
telemetryStartChannel.publish(getTelemetryData())
|
|
121
131
|
}
|
|
122
132
|
|
|
123
133
|
function stop () {
|
|
@@ -126,10 +136,14 @@ function stop () {
|
|
|
126
136
|
}
|
|
127
137
|
clearInterval(interval)
|
|
128
138
|
process.removeListener('beforeExit', onBeforeExit)
|
|
139
|
+
|
|
140
|
+
telemetryStopChannel.publish(getTelemetryData())
|
|
141
|
+
|
|
142
|
+
config = undefined
|
|
129
143
|
}
|
|
130
144
|
|
|
131
145
|
function updateIntegrations () {
|
|
132
|
-
if (!config || !config.
|
|
146
|
+
if (!config || !config.telemetry.enabled) {
|
|
133
147
|
return
|
|
134
148
|
}
|
|
135
149
|
const integrations = getIntegrations()
|
|
@@ -127,22 +127,6 @@ class DatadogTracer extends Tracer {
|
|
|
127
127
|
<meta name="dd-trace-id" content="${traceId}" />\
|
|
128
128
|
<meta name="dd-trace-time" content="${traceTime}" />`
|
|
129
129
|
}
|
|
130
|
-
|
|
131
|
-
setUser (user) {
|
|
132
|
-
if (!user || !user.id) return this
|
|
133
|
-
|
|
134
|
-
const span = this.scope().active()
|
|
135
|
-
if (!span) return this
|
|
136
|
-
|
|
137
|
-
const rootSpan = span._spanContext._trace.started[0]
|
|
138
|
-
if (!rootSpan) return this
|
|
139
|
-
|
|
140
|
-
for (const k of Object.keys(user)) {
|
|
141
|
-
rootSpan.setTag(`usr.${k}`, '' + user[k])
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return this
|
|
145
|
-
}
|
|
146
130
|
}
|
|
147
131
|
|
|
148
132
|
function addError (span, error) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const path = require('path')
|
|
4
|
+
|
|
3
5
|
function isTrue (str) {
|
|
4
6
|
str = String(str).toLowerCase()
|
|
5
7
|
return str === 'true' || str === '1'
|
|
@@ -61,9 +63,16 @@ function globMatch (pattern, subject) {
|
|
|
61
63
|
return true
|
|
62
64
|
}
|
|
63
65
|
|
|
66
|
+
function calculateDDBasePath (dirname) {
|
|
67
|
+
const dirSteps = dirname.split(path.sep)
|
|
68
|
+
const packagesIndex = dirSteps.lastIndexOf('packages')
|
|
69
|
+
return dirSteps.slice(0, packagesIndex).join(path.sep) + path.sep
|
|
70
|
+
}
|
|
71
|
+
|
|
64
72
|
module.exports = {
|
|
65
73
|
isTrue,
|
|
66
74
|
isFalse,
|
|
67
75
|
isError,
|
|
68
|
-
globMatch
|
|
76
|
+
globMatch,
|
|
77
|
+
calculateDDBasePath
|
|
69
78
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const fs = require('fs')
|
|
4
|
+
const os = require('os')
|
|
4
5
|
const path = require('path')
|
|
5
6
|
const crypto = require('crypto')
|
|
6
7
|
const semver = require('semver')
|
|
@@ -11,6 +12,7 @@ const externals = require('../packages/dd-trace/test/plugins/externals')
|
|
|
11
12
|
|
|
12
13
|
const requirePackageJsonPath = require.resolve('../packages/dd-trace/src/require-package-json')
|
|
13
14
|
|
|
15
|
+
const excludeList = os.arch() === 'arm64' ? ['couchbase', 'grpc', 'oracledb'] : []
|
|
14
16
|
const workspaces = new Set()
|
|
15
17
|
const versionLists = {}
|
|
16
18
|
const deps = {}
|
|
@@ -42,6 +44,8 @@ async function run () {
|
|
|
42
44
|
assertFolder()
|
|
43
45
|
await assertVersions()
|
|
44
46
|
assertWorkspace()
|
|
47
|
+
// Some native addon packages rely on libraries that are not supported on ARM64
|
|
48
|
+
excludeList.forEach(pkg => delete workspaces[pkg])
|
|
45
49
|
install()
|
|
46
50
|
}
|
|
47
51
|
|
|
@@ -197,7 +201,7 @@ function install () {
|
|
|
197
201
|
|
|
198
202
|
function addFolder (name, version) {
|
|
199
203
|
const basename = [name, version].filter(val => val).join('@')
|
|
200
|
-
workspaces.add(basename)
|
|
204
|
+
if (!excludeList.includes(name)) workspaces.add(basename)
|
|
201
205
|
}
|
|
202
206
|
|
|
203
207
|
function folder (name, version) {
|
package/scripts/junit_report.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
|
|
3
|
-
const { execSync } = require('child_process')
|
|
4
|
-
|
|
5
|
-
function uploadJUnitXMLReport () {
|
|
6
|
-
if (process.env.CIRCLE_PR_NUMBER) {
|
|
7
|
-
console.log('Running in a fork. Skipping step.')
|
|
8
|
-
return
|
|
9
|
-
}
|
|
10
|
-
// we install @datadog/datadog-ci
|
|
11
|
-
execSync('yarn global add @datadog/datadog-ci@0.13.2', { stdio: 'inherit' })
|
|
12
|
-
const service = process.env.PLUGINS ? 'plugins' : 'core'
|
|
13
|
-
// we execute the upload command
|
|
14
|
-
execSync(
|
|
15
|
-
`DD_ENV=ci datadog-ci junit upload \
|
|
16
|
-
--tags runtime.version:${process.version} \
|
|
17
|
-
--service dd-trace-js-${service}-tests \
|
|
18
|
-
./test-results/mocha/test-results.xml`,
|
|
19
|
-
{
|
|
20
|
-
stdio: 'inherit'
|
|
21
|
-
}
|
|
22
|
-
)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
uploadJUnitXMLReport()
|
package/scripts/tdd.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const execSync = require('child_process').execSync
|
|
4
|
-
const fs = require('fs')
|
|
5
|
-
const path = require('path')
|
|
6
|
-
|
|
7
|
-
const options = { stdio: [0, 1, 2] }
|
|
8
|
-
const command = 'yarn services && NO_DEPRECATION=* mocha --watch --expose-gc'
|
|
9
|
-
|
|
10
|
-
const base = path.join(__dirname, '..', 'packages')
|
|
11
|
-
const globs = [
|
|
12
|
-
'packages/dd-trace/test/setup/node.js'
|
|
13
|
-
].map(glob => `'${glob}'`).join(' ')
|
|
14
|
-
|
|
15
|
-
const pluginName = /\/?datadog-plugin-([\w -]+)\/?/
|
|
16
|
-
const plugins = []
|
|
17
|
-
const args = process.argv.slice(2).map((arg) => {
|
|
18
|
-
if (fs.existsSync(path.join(base, `datadog-plugin-${arg}`))) {
|
|
19
|
-
plugins.push(arg)
|
|
20
|
-
return `'packages/datadog-plugin-${arg}/test/**/*.spec.js'`
|
|
21
|
-
} else if (pluginName.test(arg)) {
|
|
22
|
-
const plugin = arg.match(pluginName)[1]
|
|
23
|
-
plugins.push(plugin)
|
|
24
|
-
}
|
|
25
|
-
return arg
|
|
26
|
-
}).join(' ')
|
|
27
|
-
|
|
28
|
-
const pluginEnvList = plugins.join('|')
|
|
29
|
-
|
|
30
|
-
if (plugins) {
|
|
31
|
-
execSync(`PLUGINS=${pluginEnvList} ${command} ${globs} ${args}`, options)
|
|
32
|
-
} else {
|
|
33
|
-
execSync(`${command} ${globs} ${args}`, options)
|
|
34
|
-
}
|