dd-trace 5.38.0 → 5.40.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 (97) hide show
  1. package/LICENSE-3rdparty.csv +1 -0
  2. package/index.d.ts +30 -21
  3. package/package.json +4 -2
  4. package/packages/datadog-instrumentations/src/apollo-server-core.js +1 -1
  5. package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
  6. package/packages/datadog-instrumentations/src/express-session.js +41 -0
  7. package/packages/datadog-instrumentations/src/fetch.js +27 -6
  8. package/packages/datadog-instrumentations/src/helpers/fetch.js +6 -1
  9. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  10. package/packages/datadog-instrumentations/src/jest.js +16 -10
  11. package/packages/datadog-instrumentations/src/mocha/main.js +2 -1
  12. package/packages/datadog-instrumentations/src/nyc.js +2 -1
  13. package/packages/datadog-instrumentations/src/vitest.js +4 -2
  14. package/packages/datadog-plugin-amqplib/src/consumer.js +1 -1
  15. package/packages/datadog-plugin-amqplib/src/producer.js +1 -2
  16. package/packages/datadog-plugin-avsc/src/schema_iterator.js +1 -1
  17. package/packages/datadog-plugin-aws-sdk/src/base.js +5 -1
  18. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +9 -8
  19. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +1 -4
  20. package/packages/datadog-plugin-aws-sdk/src/services/sns.js +1 -2
  21. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +1 -2
  22. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +1 -1
  23. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +1 -2
  24. package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +1 -1
  25. package/packages/datadog-plugin-kafkajs/src/consumer.js +5 -2
  26. package/packages/datadog-plugin-kafkajs/src/producer.js +4 -3
  27. package/packages/datadog-plugin-mongodb-core/src/index.js +10 -13
  28. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +1 -1
  29. package/packages/datadog-plugin-rhea/src/consumer.js +1 -1
  30. package/packages/datadog-plugin-rhea/src/producer.js +1 -2
  31. package/packages/datadog-shimmer/src/shimmer.js +95 -95
  32. package/packages/dd-trace/src/appsec/addresses.js +1 -0
  33. package/packages/dd-trace/src/appsec/channels.js +1 -0
  34. package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +1 -1
  35. package/packages/dd-trace/src/appsec/iast/iast-context.js +2 -2
  36. package/packages/dd-trace/src/appsec/iast/index.js +0 -1
  37. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +1 -2
  38. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -5
  39. package/packages/dd-trace/src/appsec/index.js +23 -1
  40. package/packages/dd-trace/src/appsec/reporter.js +3 -8
  41. package/packages/dd-trace/src/appsec/rule_manager.js +1 -1
  42. package/packages/dd-trace/src/appsec/sdk/set_user.js +9 -5
  43. package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -4
  44. package/packages/dd-trace/src/appsec/telemetry/common.js +24 -0
  45. package/packages/dd-trace/src/appsec/telemetry/index.js +126 -0
  46. package/packages/dd-trace/src/appsec/telemetry/rasp.js +35 -0
  47. package/packages/dd-trace/src/appsec/telemetry/user.js +24 -0
  48. package/packages/dd-trace/src/appsec/telemetry/waf.js +92 -0
  49. package/packages/dd-trace/src/appsec/user_tracking.js +2 -4
  50. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +16 -4
  51. package/packages/dd-trace/src/config.js +31 -14
  52. package/packages/dd-trace/src/constants.js +1 -1
  53. package/packages/dd-trace/src/{data_streams.js → datastreams/checkpointer.js} +1 -1
  54. package/packages/dd-trace/src/{data_streams_context.js → datastreams/context.js} +2 -2
  55. package/packages/dd-trace/src/datastreams/index.js +104 -0
  56. package/packages/dd-trace/src/datastreams/manager.js +27 -0
  57. package/packages/dd-trace/src/datastreams/processor.js +1 -44
  58. package/packages/dd-trace/src/datastreams/size.js +53 -0
  59. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +2 -2
  60. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +1 -1
  61. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +22 -15
  62. package/packages/dd-trace/src/dogstatsd.js +23 -4
  63. package/packages/dd-trace/src/exporters/agent/index.js +2 -2
  64. package/packages/dd-trace/src/flare/index.js +3 -0
  65. package/packages/dd-trace/src/noop/dogstatsd.js +6 -0
  66. package/packages/dd-trace/src/opentelemetry/tracer.js +45 -1
  67. package/packages/dd-trace/src/opentracing/propagation/text_map.js +11 -47
  68. package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +1 -1
  69. package/packages/dd-trace/src/opentracing/span.js +12 -2
  70. package/packages/dd-trace/src/payload-tagging/config/aws.json +8 -0
  71. package/packages/dd-trace/src/plugin_manager.js +4 -3
  72. package/packages/dd-trace/src/plugins/ci_plugin.js +2 -2
  73. package/packages/dd-trace/src/priority_sampler.js +5 -3
  74. package/packages/dd-trace/src/profiling/profiler.js +1 -1
  75. package/packages/dd-trace/src/profiling/profilers/wall.js +15 -4
  76. package/packages/dd-trace/src/proxy.js +41 -22
  77. package/packages/dd-trace/src/{appsec/remote_config → remote_config}/capabilities.js +1 -0
  78. package/packages/dd-trace/src/{appsec/remote_config → remote_config}/index.js +8 -5
  79. package/packages/dd-trace/src/{appsec/remote_config → remote_config}/manager.js +5 -5
  80. package/packages/dd-trace/src/runtime_metrics/index.js +34 -0
  81. package/packages/dd-trace/src/{runtime_metrics.js → runtime_metrics/runtime_metrics.js} +4 -4
  82. package/packages/dd-trace/src/serverless.js +10 -1
  83. package/packages/dd-trace/src/service-naming/index.js +12 -4
  84. package/packages/dd-trace/src/span_processor.js +7 -4
  85. package/packages/dd-trace/src/span_stats.js +1 -2
  86. package/packages/dd-trace/src/standalone/index.js +70 -0
  87. package/packages/dd-trace/src/standalone/product.js +24 -0
  88. package/packages/dd-trace/src/standalone/tracesource.js +22 -0
  89. package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +47 -0
  90. package/packages/dd-trace/src/telemetry/index.js +16 -387
  91. package/packages/dd-trace/src/telemetry/telemetry.js +394 -0
  92. package/packages/dd-trace/src/tracer.js +7 -15
  93. package/packages/dd-trace/src/appsec/standalone.js +0 -130
  94. package/packages/dd-trace/src/appsec/telemetry.js +0 -218
  95. package/packages/dd-trace/src/service-naming/schemas/index.js +0 -6
  96. /package/packages/dd-trace/src/{appsec/remote_config → remote_config}/apply_states.js +0 -0
  97. /package/packages/dd-trace/src/{appsec/remote_config → remote_config}/scheduler.js +0 -0
@@ -1,218 +0,0 @@
1
- 'use strict'
2
-
3
- const telemetryMetrics = require('../telemetry/metrics')
4
-
5
- const appsecMetrics = telemetryMetrics.manager.namespace('appsec')
6
-
7
- const DD_TELEMETRY_WAF_RESULT_TAGS = Symbol('_dd.appsec.telemetry.waf.result.tags')
8
- const DD_TELEMETRY_REQUEST_METRICS = Symbol('_dd.appsec.telemetry.request.metrics')
9
-
10
- const tags = {
11
- REQUEST_BLOCKED: 'request_blocked',
12
- RULE_TRIGGERED: 'rule_triggered',
13
- WAF_TIMEOUT: 'waf_timeout',
14
- WAF_VERSION: 'waf_version',
15
- EVENT_RULES_VERSION: 'event_rules_version'
16
- }
17
-
18
- const metricsStoreMap = new WeakMap()
19
-
20
- let enabled = false
21
-
22
- function enable (telemetryConfig) {
23
- enabled = telemetryConfig?.enabled && telemetryConfig.metrics
24
- }
25
-
26
- function disable () {
27
- enabled = false
28
- }
29
-
30
- function newStore () {
31
- return {
32
- [DD_TELEMETRY_REQUEST_METRICS]: {
33
- duration: 0,
34
- durationExt: 0,
35
- raspDuration: 0,
36
- raspDurationExt: 0,
37
- raspEvalCount: 0
38
- }
39
- }
40
- }
41
-
42
- function getStore (req) {
43
- let store = metricsStoreMap.get(req)
44
- if (!store) {
45
- store = newStore()
46
- metricsStoreMap.set(req, store)
47
- }
48
- return store
49
- }
50
-
51
- function getVersionsTags (wafVersion, rulesVersion) {
52
- return {
53
- [tags.WAF_VERSION]: wafVersion,
54
- [tags.EVENT_RULES_VERSION]: rulesVersion
55
- }
56
- }
57
-
58
- function trackWafDurations (metrics, versionsTags) {
59
- if (metrics.duration) {
60
- appsecMetrics.distribution('waf.duration', versionsTags).track(metrics.duration)
61
- }
62
- if (metrics.durationExt) {
63
- appsecMetrics.distribution('waf.duration_ext', versionsTags).track(metrics.durationExt)
64
- }
65
- }
66
-
67
- function getOrCreateMetricTags (store, versionsTags) {
68
- let metricTags = store[DD_TELEMETRY_WAF_RESULT_TAGS]
69
- if (!metricTags) {
70
- metricTags = {
71
- [tags.REQUEST_BLOCKED]: false,
72
- [tags.RULE_TRIGGERED]: false,
73
- [tags.WAF_TIMEOUT]: false,
74
-
75
- ...versionsTags
76
- }
77
- store[DD_TELEMETRY_WAF_RESULT_TAGS] = metricTags
78
- }
79
- return metricTags
80
- }
81
-
82
- function updateRaspRequestsMetricTags (metrics, req, raspRule) {
83
- if (!req) return
84
-
85
- const store = getStore(req)
86
-
87
- // it does not depend on whether telemetry is enabled or not
88
- addRaspRequestMetrics(store, metrics)
89
-
90
- if (!enabled) return
91
-
92
- const tags = { rule_type: raspRule.type, waf_version: metrics.wafVersion }
93
-
94
- if (raspRule.variant) {
95
- tags.rule_variant = raspRule.variant
96
- }
97
-
98
- appsecMetrics.count('rasp.rule.eval', tags).inc(1)
99
-
100
- if (metrics.wafTimeout) {
101
- appsecMetrics.count('rasp.timeout', tags).inc(1)
102
- }
103
-
104
- if (metrics.ruleTriggered) {
105
- appsecMetrics.count('rasp.rule.match', tags).inc(1)
106
- }
107
- }
108
-
109
- function updateWafRequestsMetricTags (metrics, req) {
110
- if (!req) return
111
-
112
- const store = getStore(req)
113
-
114
- // it does not depend on whether telemetry is enabled or not
115
- addRequestMetrics(store, metrics)
116
-
117
- if (!enabled) return
118
-
119
- const versionsTags = getVersionsTags(metrics.wafVersion, metrics.rulesVersion)
120
-
121
- trackWafDurations(metrics, versionsTags)
122
-
123
- const metricTags = getOrCreateMetricTags(store, versionsTags)
124
-
125
- const { blockTriggered, ruleTriggered, wafTimeout } = metrics
126
-
127
- if (blockTriggered) {
128
- metricTags[tags.REQUEST_BLOCKED] = blockTriggered
129
- }
130
- if (ruleTriggered) {
131
- metricTags[tags.RULE_TRIGGERED] = ruleTriggered
132
- }
133
- if (wafTimeout) {
134
- metricTags[tags.WAF_TIMEOUT] = wafTimeout
135
- }
136
-
137
- return metricTags
138
- }
139
-
140
- function incrementWafInitMetric (wafVersion, rulesVersion) {
141
- if (!enabled) return
142
-
143
- const versionsTags = getVersionsTags(wafVersion, rulesVersion)
144
-
145
- appsecMetrics.count('waf.init', versionsTags).inc()
146
- }
147
-
148
- function incrementWafUpdatesMetric (wafVersion, rulesVersion) {
149
- if (!enabled) return
150
-
151
- const versionsTags = getVersionsTags(wafVersion, rulesVersion)
152
-
153
- appsecMetrics.count('waf.updates', versionsTags).inc()
154
- }
155
-
156
- function incrementWafRequestsMetric (req) {
157
- if (!req || !enabled) return
158
-
159
- const store = getStore(req)
160
-
161
- const metricTags = store[DD_TELEMETRY_WAF_RESULT_TAGS]
162
- if (metricTags) {
163
- appsecMetrics.count('waf.requests', metricTags).inc()
164
- }
165
-
166
- metricsStoreMap.delete(req)
167
- }
168
-
169
- function addRequestMetrics (store, { duration, durationExt }) {
170
- store[DD_TELEMETRY_REQUEST_METRICS].duration += duration || 0
171
- store[DD_TELEMETRY_REQUEST_METRICS].durationExt += durationExt || 0
172
- }
173
-
174
- function addRaspRequestMetrics (store, { duration, durationExt }) {
175
- store[DD_TELEMETRY_REQUEST_METRICS].raspDuration += duration || 0
176
- store[DD_TELEMETRY_REQUEST_METRICS].raspDurationExt += durationExt || 0
177
- store[DD_TELEMETRY_REQUEST_METRICS].raspEvalCount++
178
- }
179
-
180
- function incrementMissingUserLoginMetric (framework, eventType) {
181
- if (!enabled) return
182
-
183
- appsecMetrics.count('instrum.user_auth.missing_user_login', {
184
- framework,
185
- event_type: eventType
186
- }).inc()
187
- }
188
-
189
- function incrementMissingUserIdMetric (framework, eventType) {
190
- if (!enabled) return
191
-
192
- appsecMetrics.count('instrum.user_auth.missing_user_id', {
193
- framework,
194
- event_type: eventType
195
- }).inc()
196
- }
197
-
198
- function getRequestMetrics (req) {
199
- if (req) {
200
- const store = getStore(req)
201
- return store?.[DD_TELEMETRY_REQUEST_METRICS]
202
- }
203
- }
204
-
205
- module.exports = {
206
- enable,
207
- disable,
208
-
209
- updateWafRequestsMetricTags,
210
- updateRaspRequestsMetricTags,
211
- incrementWafInitMetric,
212
- incrementWafUpdatesMetric,
213
- incrementWafRequestsMetric,
214
- incrementMissingUserLoginMetric,
215
- incrementMissingUserIdMetric,
216
-
217
- getRequestMetrics
218
- }
@@ -1,6 +0,0 @@
1
- const v0 = require('./v0')
2
- const v1 = require('./v1')
3
-
4
- module.exports = {
5
- schemaDefinitions: { v0, v1 }
6
- }