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.
Files changed (187) hide show
  1. package/LICENSE-3rdparty.csv +2 -2
  2. package/README.md +9 -5
  3. package/ci/init.js +9 -1
  4. package/ext/exporters.d.ts +2 -1
  5. package/ext/exporters.js +2 -1
  6. package/index.d.ts +36 -3
  7. package/package.json +21 -19
  8. package/packages/datadog-instrumentations/src/cucumber.js +80 -3
  9. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +100 -27
  10. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  11. package/packages/datadog-instrumentations/src/jest.js +35 -3
  12. package/packages/datadog-instrumentations/src/ldapjs.js +12 -2
  13. package/packages/datadog-instrumentations/src/mariadb.js +130 -11
  14. package/packages/datadog-instrumentations/src/mocha.js +30 -6
  15. package/packages/datadog-instrumentations/src/mongodb-core.js +8 -2
  16. package/packages/datadog-instrumentations/src/mongoose.js +1 -1
  17. package/packages/datadog-instrumentations/src/next.js +33 -4
  18. package/packages/datadog-instrumentations/src/playwright.js +42 -13
  19. package/packages/datadog-plugin-amqp10/src/consumer.js +1 -1
  20. package/packages/datadog-plugin-amqp10/src/index.js +1 -1
  21. package/packages/datadog-plugin-amqp10/src/producer.js +3 -2
  22. package/packages/datadog-plugin-amqplib/src/client.js +3 -2
  23. package/packages/datadog-plugin-amqplib/src/consumer.js +1 -1
  24. package/packages/datadog-plugin-amqplib/src/index.js +1 -1
  25. package/packages/datadog-plugin-amqplib/src/producer.js +3 -2
  26. package/packages/datadog-plugin-aws-sdk/src/base.js +7 -2
  27. package/packages/datadog-plugin-aws-sdk/src/index.js +1 -1
  28. package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +2 -0
  29. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +2 -0
  30. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -0
  31. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +2 -0
  32. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +2 -0
  33. package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +2 -0
  34. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +2 -0
  35. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -0
  36. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +2 -0
  37. package/packages/datadog-plugin-bunyan/src/index.js +1 -1
  38. package/packages/datadog-plugin-cassandra-driver/src/index.js +3 -2
  39. package/packages/datadog-plugin-connect/src/index.js +1 -1
  40. package/packages/datadog-plugin-couchbase/src/index.js +1 -1
  41. package/packages/datadog-plugin-cucumber/src/index.js +33 -6
  42. package/packages/datadog-plugin-cypress/src/index.js +1 -1
  43. package/packages/datadog-plugin-cypress/src/plugin.js +40 -33
  44. package/packages/datadog-plugin-dns/src/index.js +1 -1
  45. package/packages/datadog-plugin-dns/src/lookup.js +1 -1
  46. package/packages/datadog-plugin-dns/src/lookup_service.js +1 -1
  47. package/packages/datadog-plugin-dns/src/resolve.js +1 -1
  48. package/packages/datadog-plugin-dns/src/reverse.js +1 -1
  49. package/packages/datadog-plugin-elasticsearch/src/index.js +1 -1
  50. package/packages/datadog-plugin-express/src/index.js +1 -1
  51. package/packages/datadog-plugin-fastify/src/index.js +1 -1
  52. package/packages/datadog-plugin-find-my-way/src/index.js +1 -1
  53. package/packages/datadog-plugin-fs/src/index.js +1 -1
  54. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +5 -5
  55. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +1 -1
  56. package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -1
  57. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +7 -6
  58. package/packages/datadog-plugin-graphql/src/execute.js +1 -1
  59. package/packages/datadog-plugin-graphql/src/index.js +1 -1
  60. package/packages/datadog-plugin-graphql/src/parse.js +1 -1
  61. package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
  62. package/packages/datadog-plugin-graphql/src/validate.js +1 -1
  63. package/packages/datadog-plugin-grpc/src/client.js +1 -1
  64. package/packages/datadog-plugin-grpc/src/index.js +1 -1
  65. package/packages/datadog-plugin-grpc/src/server.js +1 -1
  66. package/packages/datadog-plugin-hapi/src/index.js +1 -1
  67. package/packages/datadog-plugin-http/src/client.js +2 -2
  68. package/packages/datadog-plugin-http/src/index.js +1 -1
  69. package/packages/datadog-plugin-http/src/server.js +3 -3
  70. package/packages/datadog-plugin-http2/src/client.js +4 -3
  71. package/packages/datadog-plugin-http2/src/index.js +1 -1
  72. package/packages/datadog-plugin-http2/src/server.js +3 -3
  73. package/packages/datadog-plugin-ioredis/src/index.js +1 -1
  74. package/packages/datadog-plugin-jest/src/index.js +53 -19
  75. package/packages/datadog-plugin-kafkajs/src/consumer.js +1 -1
  76. package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
  77. package/packages/datadog-plugin-kafkajs/src/producer.js +1 -1
  78. package/packages/datadog-plugin-koa/src/index.js +1 -1
  79. package/packages/datadog-plugin-mariadb/src/index.js +18 -1
  80. package/packages/datadog-plugin-memcached/src/index.js +3 -2
  81. package/packages/datadog-plugin-microgateway-core/src/index.js +1 -1
  82. package/packages/datadog-plugin-mocha/src/index.js +13 -9
  83. package/packages/datadog-plugin-moleculer/src/client.js +1 -1
  84. package/packages/datadog-plugin-moleculer/src/index.js +1 -1
  85. package/packages/datadog-plugin-moleculer/src/server.js +1 -1
  86. package/packages/datadog-plugin-mongodb-core/src/index.js +1 -1
  87. package/packages/datadog-plugin-mysql/src/index.js +3 -2
  88. package/packages/datadog-plugin-mysql2/src/index.js +1 -1
  89. package/packages/datadog-plugin-net/src/index.js +9 -75
  90. package/packages/datadog-plugin-net/src/ipc.js +1 -1
  91. package/packages/datadog-plugin-net/src/tcp.js +3 -2
  92. package/packages/datadog-plugin-next/src/index.js +3 -3
  93. package/packages/datadog-plugin-opensearch/src/index.js +1 -1
  94. package/packages/datadog-plugin-oracledb/src/index.js +3 -2
  95. package/packages/datadog-plugin-paperplane/src/index.js +1 -1
  96. package/packages/datadog-plugin-paperplane/src/logger.js +1 -1
  97. package/packages/datadog-plugin-paperplane/src/server.js +1 -1
  98. package/packages/datadog-plugin-pg/src/index.js +3 -2
  99. package/packages/datadog-plugin-pino/src/index.js +1 -1
  100. package/packages/datadog-plugin-playwright/src/index.js +5 -4
  101. package/packages/datadog-plugin-redis/src/index.js +3 -2
  102. package/packages/datadog-plugin-restify/src/index.js +1 -1
  103. package/packages/datadog-plugin-rhea/src/consumer.js +1 -1
  104. package/packages/datadog-plugin-rhea/src/index.js +1 -1
  105. package/packages/datadog-plugin-rhea/src/producer.js +3 -2
  106. package/packages/datadog-plugin-router/src/index.js +8 -8
  107. package/packages/datadog-plugin-sharedb/src/index.js +1 -1
  108. package/packages/datadog-plugin-tedious/src/index.js +3 -2
  109. package/packages/datadog-plugin-web/src/index.js +1 -1
  110. package/packages/datadog-plugin-winston/src/index.js +1 -1
  111. package/packages/dd-trace/src/appsec/addresses.js +3 -1
  112. package/packages/dd-trace/src/appsec/blocking.js +35 -9
  113. package/packages/dd-trace/src/appsec/gateway/engine/runner.js +2 -1
  114. package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +2 -0
  115. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +2 -2
  116. package/packages/dd-trace/src/appsec/iast/iast-context.js +6 -2
  117. package/packages/dd-trace/src/appsec/iast/iast-log.js +111 -0
  118. package/packages/dd-trace/src/appsec/iast/index.js +10 -6
  119. package/packages/dd-trace/src/appsec/iast/path-line.js +3 -6
  120. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +2 -0
  121. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +2 -0
  122. package/packages/dd-trace/src/appsec/iast/taint-tracking/origin-types.js +2 -0
  123. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -0
  124. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +9 -4
  125. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +5 -3
  126. package/packages/dd-trace/src/appsec/iast/telemetry/log_collector.js +96 -0
  127. package/packages/dd-trace/src/appsec/iast/telemetry/logs.js +87 -0
  128. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +27 -2
  129. package/packages/dd-trace/src/appsec/index.js +4 -4
  130. package/packages/dd-trace/src/appsec/recommended.json +76 -75
  131. package/packages/dd-trace/src/appsec/remote_config/capabilities.js +2 -1
  132. package/packages/dd-trace/src/appsec/remote_config/index.js +3 -0
  133. package/packages/dd-trace/src/appsec/sdk/index.js +19 -1
  134. package/packages/dd-trace/src/appsec/sdk/noop.js +6 -0
  135. package/packages/dd-trace/src/appsec/sdk/set_user.js +30 -0
  136. package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
  137. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +73 -0
  138. package/packages/dd-trace/src/ci-visibility/encode/json-encoder.js +27 -0
  139. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +17 -9
  140. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +14 -8
  141. package/packages/dd-trace/src/ci-visibility/exporters/jest-worker/index.js +33 -0
  142. package/packages/dd-trace/src/ci-visibility/exporters/jest-worker/writer.js +37 -0
  143. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-itr-configuration.js +12 -4
  144. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +12 -4
  145. package/packages/dd-trace/src/config.js +24 -5
  146. package/packages/dd-trace/src/constants.js +2 -1
  147. package/packages/dd-trace/src/datastreams/encoding.js +80 -0
  148. package/packages/dd-trace/src/exporter.js +7 -9
  149. package/packages/dd-trace/src/exporters/common/agents.js +42 -0
  150. package/packages/dd-trace/src/exporters/common/docker.js +4 -1
  151. package/packages/dd-trace/src/exporters/common/request.js +1 -4
  152. package/packages/dd-trace/src/lambda/handler.js +19 -12
  153. package/packages/dd-trace/src/log/writer.js +32 -24
  154. package/packages/dd-trace/src/metrics.js +18 -0
  155. package/packages/dd-trace/src/noop/proxy.js +2 -2
  156. package/packages/dd-trace/src/opentracing/span.js +5 -0
  157. package/packages/dd-trace/src/opentracing/span_context.js +1 -1
  158. package/packages/dd-trace/src/plugin_manager.js +7 -7
  159. package/packages/dd-trace/src/plugins/ci_plugin.js +20 -17
  160. package/packages/dd-trace/src/plugins/index.js +1 -0
  161. package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
  162. package/packages/dd-trace/src/plugins/outgoing.js +2 -1
  163. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  164. package/packages/dd-trace/src/plugins/util/ci.js +12 -0
  165. package/packages/dd-trace/src/plugins/util/exec.js +2 -2
  166. package/packages/dd-trace/src/plugins/util/git.js +16 -1
  167. package/packages/dd-trace/src/plugins/util/ip_extractor.js +23 -27
  168. package/packages/dd-trace/src/plugins/util/test.js +26 -7
  169. package/packages/dd-trace/src/profiler.js +3 -0
  170. package/packages/dd-trace/src/profiling/config.js +92 -20
  171. package/packages/dd-trace/src/profiling/constants.js +16 -0
  172. package/packages/dd-trace/src/profiling/exporter_cli.js +62 -0
  173. package/packages/dd-trace/src/profiling/exporters/agent.js +2 -1
  174. package/packages/dd-trace/src/profiling/exporters/file.js +13 -2
  175. package/packages/dd-trace/src/profiling/profiler.js +42 -12
  176. package/packages/dd-trace/src/profiling/profilers/space.js +21 -1
  177. package/packages/dd-trace/src/profiling/profilers/wall.js +1 -0
  178. package/packages/dd-trace/src/proxy.js +1 -1
  179. package/packages/dd-trace/src/span_processor.js +1 -1
  180. package/packages/dd-trace/src/span_sampler.js +71 -54
  181. package/packages/dd-trace/src/startup-log.js +3 -6
  182. package/packages/dd-trace/src/telemetry/index.js +16 -2
  183. package/packages/dd-trace/src/tracer.js +0 -16
  184. package/packages/dd-trace/src/util.js +10 -1
  185. package/scripts/install_plugin_modules.js +5 -1
  186. package/scripts/junit_report.js +0 -25
  187. 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.telemetryEnabled) {
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.telemetryEnabled) {
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) {
@@ -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
- }