dd-trace 5.28.0 → 5.29.1

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 (148) hide show
  1. package/LICENSE-3rdparty.csv +8 -2
  2. package/ci/init.js +16 -0
  3. package/index.d.ts +31 -13
  4. package/init.js +4 -68
  5. package/loader-hook.mjs +4 -0
  6. package/package.json +16 -11
  7. package/packages/datadog-core/src/storage.js +39 -2
  8. package/packages/datadog-instrumentations/src/aerospike.js +1 -1
  9. package/packages/datadog-instrumentations/src/cucumber.js +29 -3
  10. package/packages/datadog-instrumentations/src/express.js +38 -4
  11. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +3 -3
  12. package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -1
  13. package/packages/datadog-instrumentations/src/helpers/register.js +3 -4
  14. package/packages/datadog-instrumentations/src/http/client.js +1 -1
  15. package/packages/datadog-instrumentations/src/jest.js +27 -8
  16. package/packages/datadog-instrumentations/src/mocha/utils.js +2 -1
  17. package/packages/datadog-instrumentations/src/mysql2.js +13 -8
  18. package/packages/datadog-instrumentations/src/next.js +7 -4
  19. package/packages/datadog-instrumentations/src/passport-http.js +2 -14
  20. package/packages/datadog-instrumentations/src/passport-local.js +2 -14
  21. package/packages/datadog-instrumentations/src/passport-utils.js +43 -19
  22. package/packages/datadog-instrumentations/src/pg.js +6 -6
  23. package/packages/datadog-instrumentations/src/playwright.js +17 -4
  24. package/packages/datadog-instrumentations/src/router.js +97 -1
  25. package/packages/datadog-instrumentations/src/sequelize.js +9 -4
  26. package/packages/datadog-instrumentations/src/url.js +4 -0
  27. package/packages/datadog-instrumentations/src/vitest.js +27 -2
  28. package/packages/datadog-plugin-avsc/src/schema_iterator.js +8 -3
  29. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +154 -0
  30. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +1 -1
  31. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +1 -1
  32. package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +1 -1
  33. package/packages/datadog-plugin-aws-sdk/src/services/s3.js +1 -1
  34. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +1 -1
  35. package/packages/datadog-plugin-aws-sdk/src/util.js +92 -0
  36. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +1 -1
  37. package/packages/datadog-plugin-cucumber/src/index.js +39 -4
  38. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +3 -3
  39. package/packages/datadog-plugin-grpc/src/client.js +2 -2
  40. package/packages/datadog-plugin-grpc/src/util.js +1 -1
  41. package/packages/datadog-plugin-jest/src/index.js +39 -4
  42. package/packages/datadog-plugin-mocha/src/index.js +36 -2
  43. package/packages/datadog-plugin-oracledb/src/index.js +1 -1
  44. package/packages/datadog-plugin-vitest/src/index.js +34 -2
  45. package/packages/datadog-shimmer/src/shimmer.js +8 -4
  46. package/packages/dd-trace/src/appsec/addresses.js +3 -0
  47. package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
  48. package/packages/dd-trace/src/appsec/channels.js +1 -0
  49. package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +4 -0
  50. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +1 -1
  51. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +1 -1
  52. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +1 -1
  53. package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +10 -3
  54. package/packages/dd-trace/src/appsec/iast/analyzers/sql-injection-analyzer.js +4 -0
  55. package/packages/dd-trace/src/appsec/iast/analyzers/template-injection-analyzer.js +4 -0
  56. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +6 -19
  57. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +3 -3
  58. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +64 -3
  59. package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +2 -1
  60. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +2 -2
  61. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +1 -1
  62. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +32 -37
  63. package/packages/dd-trace/src/appsec/index.js +16 -10
  64. package/packages/dd-trace/src/appsec/remote_config/capabilities.js +1 -0
  65. package/packages/dd-trace/src/appsec/remote_config/index.js +25 -1
  66. package/packages/dd-trace/src/appsec/reporter.js +3 -1
  67. package/packages/dd-trace/src/appsec/sdk/track_event.js +32 -19
  68. package/packages/dd-trace/src/appsec/telemetry.js +10 -0
  69. package/packages/dd-trace/src/appsec/user_tracking.js +168 -0
  70. package/packages/dd-trace/src/azure_metadata.js +4 -4
  71. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +5 -4
  72. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +39 -3
  73. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
  74. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
  75. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +1 -1
  76. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +1 -1
  77. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +29 -9
  78. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +4 -2
  79. package/packages/dd-trace/src/config.js +24 -32
  80. package/packages/dd-trace/src/constants.js +1 -0
  81. package/packages/dd-trace/src/crashtracking/crashtracker.js +3 -2
  82. package/packages/dd-trace/src/datastreams/processor.js +4 -6
  83. package/packages/dd-trace/src/datastreams/writer.js +6 -5
  84. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +80 -0
  85. package/packages/dd-trace/src/debugger/devtools_client/config.js +3 -1
  86. package/packages/dd-trace/src/debugger/devtools_client/defaults.js +6 -0
  87. package/packages/dd-trace/src/debugger/devtools_client/index.js +63 -8
  88. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +10 -67
  89. package/packages/dd-trace/src/debugger/devtools_client/send.js +2 -1
  90. package/packages/dd-trace/src/debugger/devtools_client/state.js +1 -1
  91. package/packages/dd-trace/src/debugger/devtools_client/status.js +4 -4
  92. package/packages/dd-trace/src/debugger/index.js +14 -10
  93. package/packages/dd-trace/src/dogstatsd.js +2 -2
  94. package/packages/dd-trace/src/encode/0.4.js +23 -78
  95. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +0 -32
  96. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -2
  97. package/packages/dd-trace/src/encode/span-stats.js +0 -30
  98. package/packages/dd-trace/src/exporters/agent/writer.js +3 -3
  99. package/packages/dd-trace/src/exporters/common/request.js +1 -1
  100. package/packages/dd-trace/src/exporters/span-stats/writer.js +1 -1
  101. package/packages/dd-trace/src/flare/index.js +1 -1
  102. package/packages/dd-trace/src/guardrails/index.js +64 -0
  103. package/packages/dd-trace/src/guardrails/log.js +32 -0
  104. package/packages/dd-trace/src/guardrails/telemetry.js +78 -0
  105. package/packages/dd-trace/src/guardrails/util.js +10 -0
  106. package/packages/dd-trace/src/lambda/runtime/ritm.js +2 -2
  107. package/packages/dd-trace/src/llmobs/storage.js +2 -3
  108. package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
  109. package/packages/dd-trace/src/log/channels.js +9 -2
  110. package/packages/dd-trace/src/log/index.js +11 -1
  111. package/packages/dd-trace/src/log/writer.js +14 -3
  112. package/packages/dd-trace/src/{encode → msgpack}/chunk.js +8 -5
  113. package/packages/dd-trace/src/msgpack/encoder.js +309 -0
  114. package/packages/dd-trace/src/msgpack/index.js +6 -0
  115. package/packages/dd-trace/src/opentelemetry/context_manager.js +2 -2
  116. package/packages/dd-trace/src/opentracing/propagation/text_map.js +12 -9
  117. package/packages/dd-trace/src/opentracing/span.js +1 -1
  118. package/packages/dd-trace/src/opentracing/tracer.js +2 -2
  119. package/packages/dd-trace/src/plugin_manager.js +4 -2
  120. package/packages/dd-trace/src/plugins/ci_plugin.js +47 -4
  121. package/packages/dd-trace/src/plugins/plugin.js +1 -1
  122. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  123. package/packages/dd-trace/src/plugins/util/git.js +7 -7
  124. package/packages/dd-trace/src/plugins/util/test.js +36 -3
  125. package/packages/dd-trace/src/plugins/util/web.js +2 -2
  126. package/packages/dd-trace/src/priority_sampler.js +11 -1
  127. package/packages/dd-trace/src/profiling/config.js +3 -0
  128. package/packages/dd-trace/src/profiling/exporters/agent.js +9 -68
  129. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +76 -0
  130. package/packages/dd-trace/src/profiling/exporters/file.js +8 -4
  131. package/packages/dd-trace/src/profiling/profiler.js +62 -10
  132. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +22 -12
  133. package/packages/dd-trace/src/profiling/profilers/events.js +47 -8
  134. package/packages/dd-trace/src/profiling/profilers/wall.js +2 -17
  135. package/packages/dd-trace/src/profiling/webspan-utils.js +23 -0
  136. package/packages/dd-trace/src/proxy.js +7 -2
  137. package/packages/dd-trace/src/runtime_metrics.js +107 -4
  138. package/packages/dd-trace/src/serverless.js +1 -1
  139. package/packages/dd-trace/src/span_processor.js +10 -10
  140. package/packages/dd-trace/src/tagger.js +1 -1
  141. package/packages/dd-trace/src/telemetry/index.js +1 -0
  142. package/packages/dd-trace/src/telemetry/logs/index.js +2 -2
  143. package/packages/dd-trace/src/telemetry/logs/log-collector.js +10 -2
  144. package/packages/dd-trace/src/telemetry/send-data.js +2 -2
  145. package/packages/dd-trace/src/util.js +5 -16
  146. package/packages/datadog-instrumentations/src/qs.js +0 -24
  147. package/packages/dd-trace/src/appsec/passport.js +0 -110
  148. package/packages/dd-trace/src/telemetry/init-telemetry.js +0 -75
@@ -1,110 +0,0 @@
1
- 'use strict'
2
-
3
- const log = require('../log')
4
- const { trackEvent } = require('./sdk/track_event')
5
- const { setUserTags } = require('./sdk/set_user')
6
-
7
- const UUID_PATTERN = '^[0-9A-F]{8}-[0-9A-F]{4}-[1-5][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$'
8
- const regexUsername = new RegExp(UUID_PATTERN, 'i')
9
-
10
- const SDK_USER_EVENT_PATTERN = '^_dd\\.appsec\\.events\\.users\\.[\\W\\w+]+\\.sdk$'
11
- const regexSdkEvent = new RegExp(SDK_USER_EVENT_PATTERN, 'i')
12
-
13
- function isSdkCalled (tags) {
14
- let called = false
15
-
16
- if (tags !== null && typeof tags === 'object') {
17
- called = Object.entries(tags).some(([key, value]) => regexSdkEvent.test(key) && value === 'true')
18
- }
19
-
20
- return called
21
- }
22
-
23
- // delete this function later if we know it's always credential.username
24
- function getLogin (credentials) {
25
- const type = credentials && credentials.type
26
- let login
27
- if (type === 'local' || type === 'http') {
28
- login = credentials.username
29
- }
30
-
31
- return login
32
- }
33
-
34
- function parseUser (login, passportUser, mode) {
35
- const user = {
36
- 'usr.id': login
37
- }
38
-
39
- if (!user['usr.id']) {
40
- return user
41
- }
42
-
43
- if (passportUser) {
44
- // Guess id
45
- if (passportUser.id) {
46
- user['usr.id'] = passportUser.id
47
- } else if (passportUser._id) {
48
- user['usr.id'] = passportUser._id
49
- }
50
-
51
- if (mode === 'extended') {
52
- if (login) {
53
- user['usr.login'] = login
54
- }
55
-
56
- if (passportUser.email) {
57
- user['usr.email'] = passportUser.email
58
- }
59
-
60
- // Guess username
61
- if (passportUser.username) {
62
- user['usr.username'] = passportUser.username
63
- } else if (passportUser.name) {
64
- user['usr.username'] = passportUser.name
65
- }
66
- }
67
- }
68
-
69
- if (mode === 'safe') {
70
- // Remove PII in safe mode
71
- if (!regexUsername.test(user['usr.id'])) {
72
- user['usr.id'] = ''
73
- }
74
- }
75
-
76
- return user
77
- }
78
-
79
- function passportTrackEvent (credentials, passportUser, rootSpan, mode) {
80
- const tags = rootSpan && rootSpan.context() && rootSpan.context()._tags
81
-
82
- if (isSdkCalled(tags)) {
83
- // Don't overwrite tags set by SDK callings
84
- return
85
- }
86
- const user = parseUser(getLogin(credentials), passportUser, mode)
87
-
88
- if (user['usr.id'] === undefined) {
89
- log.warn('No user ID found in authentication instrumentation')
90
- return
91
- }
92
-
93
- if (passportUser) {
94
- // If a passportUser object is published then the login succeded
95
- const userTags = {}
96
- Object.entries(user).forEach(([k, v]) => {
97
- const attr = k.split('.', 2)[1]
98
- userTags[attr] = v
99
- })
100
-
101
- setUserTags(userTags, rootSpan)
102
- trackEvent('users.login.success', null, 'passportTrackEvent', rootSpan, mode)
103
- } else {
104
- trackEvent('users.login.failure', user, 'passportTrackEvent', rootSpan, mode)
105
- }
106
- }
107
-
108
- module.exports = {
109
- passportTrackEvent
110
- }
@@ -1,75 +0,0 @@
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
- }