dd-trace 4.47.0 → 4.48.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/LICENSE-3rdparty.csv +0 -1
  2. package/ext/types.d.ts +1 -0
  3. package/ext/types.js +1 -0
  4. package/index.d.ts +26 -0
  5. package/package.json +6 -7
  6. package/packages/datadog-code-origin/index.js +38 -0
  7. package/packages/datadog-core/index.js +2 -2
  8. package/packages/datadog-instrumentations/src/avsc.js +37 -0
  9. package/packages/datadog-instrumentations/src/azure-functions.js +48 -0
  10. package/packages/datadog-instrumentations/src/child_process.js +17 -8
  11. package/packages/datadog-instrumentations/src/express.js +37 -4
  12. package/packages/datadog-instrumentations/src/fastify.js +12 -1
  13. package/packages/datadog-instrumentations/src/fs.js +27 -7
  14. package/packages/datadog-instrumentations/src/helpers/hooks.js +3 -0
  15. package/packages/datadog-instrumentations/src/jest.js +2 -1
  16. package/packages/datadog-instrumentations/src/mocha/common.js +1 -1
  17. package/packages/datadog-instrumentations/src/mysql2.js +220 -1
  18. package/packages/datadog-instrumentations/src/protobufjs.js +127 -0
  19. package/packages/datadog-instrumentations/src/winston.js +22 -0
  20. package/packages/datadog-plugin-avsc/src/index.js +9 -0
  21. package/packages/datadog-plugin-avsc/src/schema_iterator.js +169 -0
  22. package/packages/datadog-plugin-azure-functions/src/index.js +77 -0
  23. package/packages/datadog-plugin-fastify/src/code_origin.js +31 -0
  24. package/packages/datadog-plugin-fastify/src/index.js +10 -12
  25. package/packages/datadog-plugin-fastify/src/tracing.js +19 -0
  26. package/packages/datadog-plugin-protobufjs/src/index.js +14 -0
  27. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +180 -0
  28. package/packages/dd-trace/src/appsec/addresses.js +6 -1
  29. package/packages/dd-trace/src/appsec/channels.js +5 -1
  30. package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +13 -1
  31. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +8 -1
  32. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +1 -1
  33. package/packages/dd-trace/src/appsec/iast/index.js +3 -0
  34. package/packages/dd-trace/src/appsec/iast/taint-tracking/csi-methods.js +1 -0
  35. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +15 -0
  36. package/packages/dd-trace/src/appsec/index.js +58 -43
  37. package/packages/dd-trace/src/appsec/rasp/fs-plugin.js +99 -0
  38. package/packages/dd-trace/src/appsec/rasp/index.js +24 -10
  39. package/packages/dd-trace/src/appsec/rasp/lfi.js +112 -0
  40. package/packages/dd-trace/src/appsec/rasp/sql_injection.js +24 -4
  41. package/packages/dd-trace/src/appsec/rasp/utils.js +2 -1
  42. package/packages/dd-trace/src/appsec/recommended.json +2 -4
  43. package/packages/dd-trace/src/appsec/remote_config/capabilities.js +5 -1
  44. package/packages/dd-trace/src/appsec/remote_config/index.js +8 -0
  45. package/packages/dd-trace/src/appsec/reporter.js +12 -5
  46. package/packages/dd-trace/src/appsec/sdk/track_event.js +5 -0
  47. package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +1 -1
  48. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +2 -14
  49. package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +53 -0
  50. package/packages/dd-trace/src/config.js +12 -1
  51. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +25 -17
  52. package/packages/dd-trace/src/debugger/devtools_client/config.js +2 -0
  53. package/packages/dd-trace/src/debugger/devtools_client/index.js +56 -5
  54. package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +4 -4
  55. package/packages/dd-trace/src/debugger/devtools_client/send.js +14 -1
  56. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +153 -0
  57. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +30 -0
  58. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +241 -0
  59. package/packages/dd-trace/src/debugger/devtools_client/state.js +10 -4
  60. package/packages/dd-trace/src/exporters/common/request.js +8 -34
  61. package/packages/dd-trace/src/exporters/common/url-to-http-options-polyfill.js +31 -0
  62. package/packages/dd-trace/src/payload-tagging/index.js +1 -1
  63. package/packages/dd-trace/src/payload-tagging/jsonpath-plus.js +2094 -0
  64. package/packages/dd-trace/src/plugin_manager.js +4 -2
  65. package/packages/dd-trace/src/plugins/ci_plugin.js +2 -0
  66. package/packages/dd-trace/src/plugins/index.js +3 -0
  67. package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
  68. package/packages/dd-trace/src/plugins/schema.js +35 -0
  69. package/packages/dd-trace/src/plugins/util/ci.js +23 -1
  70. package/packages/dd-trace/src/plugins/util/serverless.js +7 -0
  71. package/packages/dd-trace/src/plugins/util/stacktrace.js +94 -0
  72. package/packages/dd-trace/src/plugins/util/tags.js +7 -0
  73. package/packages/dd-trace/src/plugins/util/test.js +20 -22
  74. package/packages/dd-trace/src/plugins/util/web.js +6 -4
  75. package/packages/dd-trace/src/profiling/profiler.js +24 -14
  76. package/packages/dd-trace/src/profiling/profilers/events.js +3 -3
  77. package/packages/dd-trace/src/profiling/profilers/wall.js +94 -66
  78. package/packages/dd-trace/src/proxy.js +12 -0
  79. package/packages/dd-trace/src/service-naming/schemas/v0/index.js +2 -1
  80. package/packages/dd-trace/src/service-naming/schemas/v0/serverless.js +12 -0
  81. package/packages/dd-trace/src/service-naming/schemas/v1/index.js +2 -1
  82. package/packages/dd-trace/src/service-naming/schemas/v1/serverless.js +12 -0
  83. package/packages/datadog-core/src/storage/async_resource.js +0 -108
  84. package/packages/datadog-core/src/storage/index.js +0 -5
@@ -6,10 +6,9 @@
6
6
  const { Readable } = require('stream')
7
7
  const http = require('http')
8
8
  const https = require('https')
9
- // eslint-disable-next-line n/no-deprecated-api
10
- const { parse: urlParse } = require('url')
11
9
  const zlib = require('zlib')
12
10
 
11
+ const { urlToHttpOptions } = require('./url-to-http-options-polyfill')
13
12
  const docker = require('./docker')
14
13
  const { httpAgent, httpsAgent } = require('./agents')
15
14
  const { storage } = require('../../../../datadog-core')
@@ -20,39 +19,14 @@ const containerId = docker.id()
20
19
 
21
20
  let activeRequests = 0
22
21
 
23
- // TODO: Replace with `url.urlToHttpOptions` when supported by all versions
24
- function urlToOptions (url) {
25
- const agent = url.agent || http.globalAgent
26
- const options = {
27
- protocol: url.protocol || agent.protocol,
28
- hostname: typeof url.hostname === 'string' && url.hostname.startsWith('[')
29
- ? url.hostname.slice(1, -1)
30
- : url.hostname ||
31
- url.host ||
32
- 'localhost',
33
- hash: url.hash,
34
- search: url.search,
35
- pathname: url.pathname,
36
- path: `${url.pathname || ''}${url.search || ''}`,
37
- href: url.href
38
- }
39
- if (url.port !== '') {
40
- options.port = Number(url.port)
41
- }
42
- if (url.username || url.password) {
43
- options.auth = `${url.username}:${url.password}`
44
- }
45
- return options
46
- }
22
+ function parseUrl (urlObjOrString) {
23
+ if (typeof urlObjOrString === 'object') return urlToHttpOptions(urlObjOrString)
47
24
 
48
- function fromUrlString (urlString) {
49
- const url = typeof urlToHttpOptions === 'function'
50
- ? urlToOptions(new URL(urlString))
51
- : urlParse(urlString)
25
+ const url = urlToHttpOptions(new URL(urlObjOrString))
52
26
 
53
- // Add the 'hostname' back if we're using named pipes
54
- if (url.protocol === 'unix:' && url.host === '.') {
55
- const udsPath = urlString.replace(/^unix:/, '')
27
+ // Special handling if we're using named pipes on Windows
28
+ if (url.protocol === 'unix:' && url.hostname === '.') {
29
+ const udsPath = urlObjOrString.slice(5)
56
30
  url.path = udsPath
57
31
  url.pathname = udsPath
58
32
  }
@@ -66,7 +40,7 @@ function request (data, options, callback) {
66
40
  }
67
41
 
68
42
  if (options.url) {
69
- const url = typeof options.url === 'object' ? urlToOptions(options.url) : fromUrlString(options.url)
43
+ const url = parseUrl(options.url)
70
44
  if (url.protocol === 'unix:') {
71
45
  options.socketPath = url.pathname
72
46
  } else {
@@ -0,0 +1,31 @@
1
+ 'use strict'
2
+
3
+ const { urlToHttpOptions } = require('url')
4
+
5
+ // TODO: Remove `urlToHttpOptions` polyfill once we drop support for the older Cypress versions that uses a built-in
6
+ // version of Node.js doesn't include that function.
7
+ module.exports = {
8
+ urlToHttpOptions: urlToHttpOptions ?? function (url) {
9
+ const { hostname, pathname, port, username, password, search } = url
10
+ const options = {
11
+ __proto__: null,
12
+ ...url, // In case the url object was extended by the user.
13
+ protocol: url.protocol,
14
+ hostname: typeof hostname === 'string' && hostname.startsWith('[')
15
+ ? hostname.slice(1, -1)
16
+ : hostname,
17
+ hash: url.hash,
18
+ search,
19
+ pathname,
20
+ path: `${pathname || ''}${search || ''}`,
21
+ href: url.href
22
+ }
23
+ if (port !== '') {
24
+ options.port = Number(port)
25
+ }
26
+ if (username || password) {
27
+ options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(password)}`
28
+ }
29
+ return options
30
+ }
31
+ }
@@ -5,7 +5,7 @@ const {
5
5
  PAYLOAD_TAG_RESPONSE_PREFIX
6
6
  } = require('../constants')
7
7
 
8
- const jsonpath = require('jsonpath-plus').JSONPath
8
+ const jsonpath = require('./jsonpath-plus.js').JSONPath
9
9
 
10
10
  const { tagsFromObject } = require('./tagging')
11
11