dd-trace 5.21.0 → 5.22.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 (84) hide show
  1. package/package.json +3 -3
  2. package/packages/datadog-instrumentations/src/aerospike.js +1 -1
  3. package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
  4. package/packages/datadog-instrumentations/src/aws-sdk.js +4 -4
  5. package/packages/datadog-instrumentations/src/body-parser.js +4 -4
  6. package/packages/datadog-instrumentations/src/cassandra-driver.js +2 -2
  7. package/packages/datadog-instrumentations/src/child_process.js +2 -2
  8. package/packages/datadog-instrumentations/src/connect.js +4 -4
  9. package/packages/datadog-instrumentations/src/cookie-parser.js +4 -4
  10. package/packages/datadog-instrumentations/src/couchbase.js +12 -12
  11. package/packages/datadog-instrumentations/src/cucumber.js +6 -5
  12. package/packages/datadog-instrumentations/src/dns.js +10 -10
  13. package/packages/datadog-instrumentations/src/elasticsearch.js +4 -4
  14. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +3 -3
  15. package/packages/datadog-instrumentations/src/express.js +4 -4
  16. package/packages/datadog-instrumentations/src/fastify.js +6 -6
  17. package/packages/datadog-instrumentations/src/fetch.js +1 -1
  18. package/packages/datadog-instrumentations/src/find-my-way.js +2 -2
  19. package/packages/datadog-instrumentations/src/fs.js +2 -2
  20. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +2 -2
  21. package/packages/datadog-instrumentations/src/grpc/client.js +4 -6
  22. package/packages/datadog-instrumentations/src/grpc/server.js +2 -2
  23. package/packages/datadog-instrumentations/src/hapi.js +10 -13
  24. package/packages/datadog-instrumentations/src/helpers/register.js +1 -1
  25. package/packages/datadog-instrumentations/src/http/client.js +3 -3
  26. package/packages/datadog-instrumentations/src/jest.js +5 -4
  27. package/packages/datadog-instrumentations/src/knex.js +2 -2
  28. package/packages/datadog-instrumentations/src/koa.js +5 -5
  29. package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
  30. package/packages/datadog-instrumentations/src/mariadb.js +8 -8
  31. package/packages/datadog-instrumentations/src/memcached.js +2 -2
  32. package/packages/datadog-instrumentations/src/microgateway-core.js +4 -4
  33. package/packages/datadog-instrumentations/src/mocha/common.js +1 -1
  34. package/packages/datadog-instrumentations/src/mocha/main.js +1 -0
  35. package/packages/datadog-instrumentations/src/mocha/utils.js +2 -3
  36. package/packages/datadog-instrumentations/src/mocha.js +4 -0
  37. package/packages/datadog-instrumentations/src/moleculer/server.js +2 -2
  38. package/packages/datadog-instrumentations/src/mongodb-core.js +7 -7
  39. package/packages/datadog-instrumentations/src/mongoose.js +5 -6
  40. package/packages/datadog-instrumentations/src/mysql.js +3 -3
  41. package/packages/datadog-instrumentations/src/mysql2.js +6 -6
  42. package/packages/datadog-instrumentations/src/net.js +2 -2
  43. package/packages/datadog-instrumentations/src/next.js +5 -5
  44. package/packages/datadog-instrumentations/src/openai.js +58 -69
  45. package/packages/datadog-instrumentations/src/oracledb.js +8 -8
  46. package/packages/datadog-instrumentations/src/passport-http.js +1 -1
  47. package/packages/datadog-instrumentations/src/passport-local.js +1 -1
  48. package/packages/datadog-instrumentations/src/passport-utils.js +1 -1
  49. package/packages/datadog-instrumentations/src/pg.js +1 -1
  50. package/packages/datadog-instrumentations/src/pino.js +4 -4
  51. package/packages/datadog-instrumentations/src/playwright.js +6 -4
  52. package/packages/datadog-instrumentations/src/redis.js +2 -2
  53. package/packages/datadog-instrumentations/src/restify.js +4 -4
  54. package/packages/datadog-instrumentations/src/rhea.js +4 -4
  55. package/packages/datadog-instrumentations/src/router.js +5 -5
  56. package/packages/datadog-instrumentations/src/sharedb.js +2 -2
  57. package/packages/datadog-instrumentations/src/vitest.js +4 -3
  58. package/packages/datadog-instrumentations/src/winston.js +2 -3
  59. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +5 -6
  60. package/packages/datadog-plugin-hapi/src/index.js +2 -2
  61. package/packages/datadog-plugin-jest/src/index.js +1 -0
  62. package/packages/datadog-plugin-openai/src/index.js +58 -47
  63. package/packages/datadog-shimmer/src/shimmer.js +144 -10
  64. package/packages/dd-trace/src/appsec/blocking.js +23 -17
  65. package/packages/dd-trace/src/appsec/graphql.js +3 -1
  66. package/packages/dd-trace/src/appsec/iast/iast-log.js +2 -1
  67. package/packages/dd-trace/src/appsec/remote_config/manager.js +4 -1
  68. package/packages/dd-trace/src/appsec/rule_manager.js +8 -0
  69. package/packages/dd-trace/src/appsec/telemetry.js +3 -3
  70. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +2 -1
  71. package/packages/dd-trace/src/config.js +40 -31
  72. package/packages/dd-trace/src/lambda/handler.js +1 -0
  73. package/packages/dd-trace/src/lambda/index.js +12 -1
  74. package/packages/dd-trace/src/opentracing/propagation/text_map.js +1 -6
  75. package/packages/dd-trace/src/plugins/util/test.js +1 -5
  76. package/packages/dd-trace/src/profiler.js +15 -5
  77. package/packages/dd-trace/src/profiling/config.js +2 -4
  78. package/packages/dd-trace/src/profiling/exporter_cli.js +13 -1
  79. package/packages/dd-trace/src/profiling/exporters/agent.js +7 -1
  80. package/packages/dd-trace/src/profiling/profiler.js +0 -9
  81. package/packages/dd-trace/src/profiling/ssi-heuristics.js +49 -58
  82. package/packages/dd-trace/src/proxy.js +21 -21
  83. package/packages/dd-trace/src/telemetry/index.js +23 -6
  84. package/packages/dd-trace/src/telemetry/logs/index.js +20 -0
@@ -89,7 +89,7 @@ function getProducts (config) {
89
89
  },
90
90
  profiler: {
91
91
  version: tracerVersion,
92
- enabled: config.profiling.enabled
92
+ enabled: profilingEnabledToBoolean(config.profiling.enabled)
93
93
  }
94
94
  }
95
95
  if (errors.profilingError) {
@@ -329,13 +329,17 @@ function updateConfig (changes, config) {
329
329
  const { origin, value } = change
330
330
  const entry = { name, value, origin }
331
331
 
332
- if (namesNeedFormatting.has(entry.name)) entry.value = formatMapForTelemetry(entry.value)
333
- if (entry.name === 'url' && entry.value) entry.value = entry.value.toString()
334
- if (entry.name === 'DD_TRACE_SAMPLING_RULES') {
332
+ if (namesNeedFormatting.has(entry.name)) {
333
+ entry.value = formatMapForTelemetry(entry.value)
334
+ } else if (entry.name === 'url') {
335
+ if (entry.value) {
336
+ entry.value = entry.value.toString()
337
+ }
338
+ } else if (entry.name === 'DD_TRACE_SAMPLING_RULES') {
335
339
  entry.value = JSON.stringify(entry.value)
340
+ } else if (Array.isArray(entry.value)) {
341
+ entry.value = value.join(',')
336
342
  }
337
- if (Array.isArray(entry.value)) entry.value = value.join(',')
338
-
339
343
  configuration.push(entry)
340
344
  }
341
345
 
@@ -354,6 +358,19 @@ function updateConfig (changes, config) {
354
358
  }
355
359
  }
356
360
 
361
+ function profilingEnabledToBoolean (profilingEnabled) {
362
+ if (typeof profilingEnabled === 'boolean') {
363
+ return profilingEnabled
364
+ }
365
+ if (['auto', 'true'].includes(profilingEnabled)) {
366
+ return true
367
+ }
368
+ if (profilingEnabled === 'false') {
369
+ return false
370
+ }
371
+ return undefined
372
+ }
373
+
357
374
  module.exports = {
358
375
  start,
359
376
  stop,
@@ -5,6 +5,7 @@ const logCollector = require('./log-collector')
5
5
  const { sendData } = require('../send-data')
6
6
 
7
7
  const telemetryLog = dc.channel('datadog:telemetry:log')
8
+ const errorLog = dc.channel('datadog:log:error')
8
9
 
9
10
  let enabled = false
10
11
 
@@ -33,12 +34,29 @@ function onLog (log) {
33
34
  }
34
35
  }
35
36
 
37
+ function onErrorLog (msg) {
38
+ if (msg instanceof Error) {
39
+ onLog({
40
+ level: 'ERROR',
41
+ message: msg.message,
42
+ stack_trace: msg.stack
43
+ })
44
+ } else if (typeof msg === 'string') {
45
+ onLog({
46
+ level: 'ERROR',
47
+ message: msg
48
+ })
49
+ }
50
+ }
51
+
36
52
  function start (config) {
37
53
  if (!config.telemetry.logCollection || enabled) return
38
54
 
39
55
  enabled = true
40
56
 
41
57
  telemetryLog.subscribe(onLog)
58
+
59
+ errorLog.subscribe(onErrorLog)
42
60
  }
43
61
 
44
62
  function stop () {
@@ -47,6 +65,8 @@ function stop () {
47
65
  if (telemetryLog.hasSubscribers) {
48
66
  telemetryLog.unsubscribe(onLog)
49
67
  }
68
+
69
+ errorLog.unsubscribe(onErrorLog)
50
70
  }
51
71
 
52
72
  function send (config, application, host) {