dd-trace 5.121.0 → 5.122.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.
- package/README.md +0 -17
- package/index.d.ts +108 -3
- package/initialize.mjs +28 -17
- package/openfeature.js +2 -2
- package/package.json +11 -8
- package/packages/datadog-esbuild/index.js +0 -34
- package/packages/datadog-instrumentations/src/anthropic.js +210 -15
- package/packages/datadog-instrumentations/src/aws-sdk.js +9 -1
- package/packages/datadog-instrumentations/src/browser-bunyan.js +11 -0
- package/packages/datadog-instrumentations/src/bunyan.js +3 -16
- package/packages/datadog-instrumentations/src/cucumber.js +26 -11
- package/packages/datadog-instrumentations/src/cypress-config.js +182 -16
- package/packages/datadog-instrumentations/src/cypress-legacy-finalizers.js +30 -0
- package/packages/datadog-instrumentations/src/cypress.js +2 -0
- package/packages/datadog-instrumentations/src/fastify.js +2 -0
- package/packages/datadog-instrumentations/src/helpers/bunyan.js +22 -0
- package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -1
- package/packages/datadog-instrumentations/src/helpers/pool-acquire.js +9 -4
- package/packages/datadog-instrumentations/src/helpers/register.js +10 -8
- package/packages/datadog-instrumentations/src/jest.js +25 -17
- package/packages/datadog-instrumentations/src/mariadb.js +278 -21
- package/packages/datadog-instrumentations/src/mocha/main.js +539 -55
- package/packages/datadog-instrumentations/src/mocha/utils.js +130 -17
- package/packages/datadog-instrumentations/src/playwright-reporter.js +99 -0
- package/packages/datadog-instrumentations/src/playwright.js +149 -2
- package/packages/datadog-instrumentations/src/router.js +2 -0
- package/packages/datadog-instrumentations/src/vitest-main.js +11 -3
- package/packages/datadog-plugin-aws-sdk/src/base.js +1 -0
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +163 -44
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +2 -8
- package/packages/datadog-plugin-azure-functions/src/index.js +1 -1
- package/packages/datadog-plugin-browser-bunyan/src/index.js +9 -0
- package/packages/datadog-plugin-bunyan/src/index.js +5 -8
- package/packages/datadog-plugin-cucumber/src/index.js +11 -0
- package/packages/datadog-plugin-cypress/src/after-run.js +5 -1
- package/packages/datadog-plugin-cypress/src/after-spec.js +5 -1
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +81 -29
- package/packages/datadog-plugin-cypress/src/finalization.js +76 -0
- package/packages/datadog-plugin-cypress/src/index.js +12 -6
- package/packages/datadog-plugin-cypress/src/plugin.js +16 -3
- package/packages/datadog-plugin-dd-trace-api/src/index.js +4 -0
- package/packages/datadog-plugin-electron/src/index.js +2 -0
- package/packages/datadog-plugin-fs/src/index.js +1 -1
- package/packages/datadog-plugin-jest/src/index.js +6 -0
- package/packages/datadog-plugin-mocha/src/index.js +56 -1
- package/packages/datadog-plugin-nats/src/index.js +1 -1
- package/packages/datadog-plugin-openai/src/tracing.js +41 -30
- package/packages/datadog-plugin-openai-agents/src/integration.js +1 -0
- package/packages/datadog-plugin-playwright/src/index.js +42 -13
- package/packages/datadog-plugin-vitest/src/index.js +6 -0
- package/packages/datadog-webpack/index.js +0 -11
- package/packages/dd-trace/index.js +0 -1
- package/packages/dd-trace/src/agent/info.js +6 -5
- package/packages/dd-trace/src/aiguard/client.js +100 -1
- package/packages/dd-trace/src/aiguard/errors.js +41 -0
- package/packages/dd-trace/src/aiguard/evaluation.js +357 -0
- package/packages/dd-trace/src/aiguard/integrations/anthropic.js +70 -0
- package/packages/dd-trace/src/aiguard/integrations/index.js +4 -0
- package/packages/dd-trace/src/aiguard/messages/anthropic.js +423 -0
- package/packages/dd-trace/src/aiguard/messages/openai.js +1 -24
- package/packages/dd-trace/src/aiguard/messages/utils.js +28 -0
- package/packages/dd-trace/src/aiguard/messages/vercel-ai.js +1 -11
- package/packages/dd-trace/src/aiguard/sdk.js +22 -278
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +9 -12
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +1 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +27 -3
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +22 -6
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +21 -5
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/request-tracker.js +164 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +22 -6
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +365 -32
- package/packages/dd-trace/src/ci-visibility/exporters/request.js +201 -0
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +5 -3
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +9 -5
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -1
- package/packages/dd-trace/src/ci-visibility/requests/rate-limit.js +39 -0
- package/packages/dd-trace/src/ci-visibility/requests/request.js +3 -6
- package/packages/dd-trace/src/ci-visibility/requests/upload-test-screenshot.js +6 -2
- package/packages/dd-trace/src/config/generated-config-types.d.ts +4 -0
- package/packages/dd-trace/src/config/index.js +13 -2
- package/packages/dd-trace/src/config/major-overrides.js +7 -0
- package/packages/dd-trace/src/config/supported-configurations.json +14 -0
- package/packages/dd-trace/src/datastreams/index.js +2 -0
- package/packages/dd-trace/src/datastreams/manager.js +9 -2
- package/packages/dd-trace/src/datastreams/processor.js +15 -13
- package/packages/dd-trace/src/datastreams/size.js +5 -0
- package/packages/dd-trace/src/debugger/devtools_client/index.js +3 -2
- package/packages/dd-trace/src/exporters/agent/writer.js +49 -9
- package/packages/dd-trace/src/exporters/common/buffering-exporter.js +6 -4
- package/packages/dd-trace/src/exporters/common/writer.js +11 -6
- package/packages/dd-trace/src/llmobs/experiments/client.js +163 -5
- package/packages/dd-trace/src/llmobs/experiments/dataset.js +241 -87
- package/packages/dd-trace/src/llmobs/experiments/experiment.js +280 -20
- package/packages/dd-trace/src/llmobs/experiments/index.js +58 -59
- package/packages/dd-trace/src/llmobs/experiments/noop.js +71 -3
- package/packages/dd-trace/src/llmobs/experiments/result.js +1 -0
- package/packages/dd-trace/src/llmobs/experiments/util.js +41 -5
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +12 -3
- package/packages/dd-trace/src/llmobs/plugins/base.js +4 -2
- package/packages/dd-trace/src/noop/proxy.js +3 -4
- package/packages/dd-trace/src/openfeature/flagging_provider.js +18 -2
- package/packages/dd-trace/src/openfeature/remote_config.js +1 -1
- package/packages/dd-trace/src/opentelemetry/context_manager.js +7 -7
- package/packages/dd-trace/src/opentelemetry/logs/batch_log_processor.js +2 -1
- package/packages/dd-trace/src/opentelemetry/logs/logger.js +67 -11
- package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +14 -3
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +25 -12
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_exporter.js +2 -5
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_transformer.js +96 -43
- package/packages/dd-trace/src/opentracing/tracer.js +5 -2
- package/packages/dd-trace/src/otel-thread-ctx.js +387 -0
- package/packages/dd-trace/src/plugin_manager.js +3 -3
- package/packages/dd-trace/src/plugins/ci_plugin.js +6 -1
- package/packages/dd-trace/src/plugins/index.js +1 -0
- package/packages/dd-trace/src/plugins/util/jest.js +4 -3
- package/packages/dd-trace/src/plugins/util/test.js +9 -9
- package/packages/dd-trace/src/plugins/util/web.js +3 -0
- package/packages/dd-trace/src/profiling/profiler.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/space.js +1 -3
- package/packages/dd-trace/src/profiling/profilers/wall.js +37 -90
- package/packages/dd-trace/src/profiling/webspan-utils.js +45 -0
- package/packages/dd-trace/src/proxy.js +38 -29
- package/packages/dd-trace/src/ritm.js +9 -2
- package/packages/dd-trace/src/serverless.js +37 -0
- package/packages/dd-trace/src/span_format.js +1 -0
- package/packages/dd-trace/src/span_stats.js +30 -3
- package/packages/dd-trace/src/storage-channels.js +86 -0
- package/packages/dd-trace/src/tracer.js +9 -2
- package/packages/dd-trace/src/tracer_metadata.js +14 -1
- package/packages/dd-trace/src/web-tags-cache.js +132 -0
- package/vendor/dist/@datadog/openfeature-node-server/LICENSE +201 -0
- package/vendor/dist/@datadog/openfeature-node-server/index.js +1 -0
- package/packages/datadog-instrumentations/src/helpers/optional-peer-bundler.js +0 -65
- package/packages/datadog-webpack/src/optional-peer-loader.js +0 -17
- package/packages/dd-trace/src/feature-registry.js +0 -29
- package/packages/dd-trace/src/openfeature/register.js +0 -35
- package/packages/dd-trace/src/openfeature/require-provider.js +0 -18
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const path = require('node:path')
|
|
4
|
-
|
|
5
|
-
// Build-time half of the optional-peer mechanism shared by the webpack and esbuild plugins.
|
|
6
|
-
//
|
|
7
|
-
// Runtime files load an optional peer through a local `requireOptionalPeer('name')` wrapper.
|
|
8
|
-
// File tracers recognize its bound-require shape, while bundlers cannot follow the dynamic
|
|
9
|
-
// argument, so a build that does not opt into the feature never pulls in the peer's dependency
|
|
10
|
-
// chain (#8635). When the peer is installed at build time the user has opted in, so the plugins
|
|
11
|
-
// rewrite the call into a literal `require('name')` and let the bundler inline the peer, which
|
|
12
|
-
// keeps it working after the bundle is relocated without the peer on disk (#8980). Peers that
|
|
13
|
-
// are absent at build time stay opaque, so the rewrite is a no-op and the #8635 guarantee holds.
|
|
14
|
-
|
|
15
|
-
// Files that load an optional peer this way, as suffixes of the resolved module path. The same
|
|
16
|
-
// suffix matches the repo layout and `node_modules/dd-trace`. Add a file here to extend the
|
|
17
|
-
// mechanism to a new optional peer; no plugin change is needed.
|
|
18
|
-
const OPTIONAL_PEER_FILES = [
|
|
19
|
-
'packages/dd-trace/src/openfeature/require-provider.js',
|
|
20
|
-
]
|
|
21
|
-
|
|
22
|
-
// Captures the peer name from `requireOptionalPeer('name')` / `requireOptionalPeer("name")`.
|
|
23
|
-
const OPTIONAL_PEER_LOAD = /requireOptionalPeer\((['"])(.+?)\1\)/g
|
|
24
|
-
|
|
25
|
-
// esbuild's `onLoad` needs a path filter; match the basenames so the callback only fires for
|
|
26
|
-
// the candidate files, then `matchesOptionalPeerFile` confirms the full suffix on a normalized
|
|
27
|
-
// path (basenames carry no separators, so the filter is OS-agnostic).
|
|
28
|
-
const OPTIONAL_PEER_FILTER = new RegExp(
|
|
29
|
-
`(?:${OPTIONAL_PEER_FILES.map((file) => path.basename(file).replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`)).join('|')})$`
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @param {string} normalizedResource - Resolved module path with forward slashes
|
|
34
|
-
* @returns {boolean} Whether the module is one of the optional-peer loader files
|
|
35
|
-
*/
|
|
36
|
-
function matchesOptionalPeerFile (normalizedResource) {
|
|
37
|
-
return OPTIONAL_PEER_FILES.some((suffix) => normalizedResource.endsWith(suffix))
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Rewrites each `requireOptionalPeer('name')` whose peer resolves from `fromDir` into a literal
|
|
42
|
-
* `require('name')` so the bundler inlines it. Peers that do not resolve stay opaque, so a build
|
|
43
|
-
* without the peer keeps the #8635 guarantee.
|
|
44
|
-
*
|
|
45
|
-
* @param {string} source - Source of an optional-peer loader file
|
|
46
|
-
* @param {string} fromDir - Directory to resolve the optional peers from
|
|
47
|
-
* @returns {string} Source with installed optional peers turned into literal requires
|
|
48
|
-
*/
|
|
49
|
-
function rewriteOptionalPeerLoads (source, fromDir) {
|
|
50
|
-
return source.replaceAll(OPTIONAL_PEER_LOAD, (match, _quote, request) => {
|
|
51
|
-
try {
|
|
52
|
-
require.resolve(request, { paths: [fromDir] })
|
|
53
|
-
} catch {
|
|
54
|
-
return match
|
|
55
|
-
}
|
|
56
|
-
return `require('${request}')`
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
module.exports = {
|
|
61
|
-
OPTIONAL_PEER_FILES,
|
|
62
|
-
OPTIONAL_PEER_FILTER,
|
|
63
|
-
matchesOptionalPeerFile,
|
|
64
|
-
rewriteOptionalPeerLoads,
|
|
65
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { rewriteOptionalPeerLoads } = require('../../datadog-instrumentations/src/helpers/optional-peer-bundler')
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Webpack loader applied to the optional-peer loader files. Rewrites each
|
|
7
|
-
* `requireOptionalPeer('name')` whose peer is installed at build time into a literal
|
|
8
|
-
* `require('name')` so webpack bundles the peer (#8980). Peers that are absent stay opaque, so
|
|
9
|
-
* builds that do not opt into the feature keep the #8635 guarantee.
|
|
10
|
-
*
|
|
11
|
-
* @param {string} source
|
|
12
|
-
* @returns {string}
|
|
13
|
-
*/
|
|
14
|
-
module.exports = function optionalPeerLoader (source) {
|
|
15
|
-
this.cacheable(false)
|
|
16
|
-
return rewriteOptionalPeerLoads(source, this.context)
|
|
17
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @typedef {{ enable: (config: import('./config/config-base')) => void, disable: () => void }} FeatureModule
|
|
5
|
-
* @typedef {new (tracer: import('./tracer'), config: import('./config/config-base')) => object} FeatureProvider
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @typedef {object} Feature
|
|
10
|
-
* @property {string} name
|
|
11
|
-
* @property {object} noop
|
|
12
|
-
* @property {() => FeatureModule} factory
|
|
13
|
-
* @property {(config: import('./config/config-base')) => boolean} isEnabled
|
|
14
|
-
* @property {() => FeatureProvider} provider
|
|
15
|
-
* @property {(rc: import('./remote_config'), config: import('./config/config-base'),
|
|
16
|
-
* proxy: import('./proxy')) => void} [remoteConfig]
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/** @type {{ [name: string]: Feature }} */
|
|
20
|
-
const features = {}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @param {Feature} feature
|
|
24
|
-
*/
|
|
25
|
-
function registerFeature (feature) {
|
|
26
|
-
features[feature.name] = feature
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
module.exports = { features, registerFeature }
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { registerFeature } = require('../feature-registry')
|
|
4
|
-
|
|
5
|
-
const noop = new (require('./noop'))()
|
|
6
|
-
|
|
7
|
-
/** @typedef {import('../proxy') & { openfeature: object }} OpenFeatureProxy */
|
|
8
|
-
|
|
9
|
-
registerFeature({
|
|
10
|
-
name: 'openfeature',
|
|
11
|
-
noop,
|
|
12
|
-
factory: () => require('./index'),
|
|
13
|
-
provider: () => require('./flagging_provider'),
|
|
14
|
-
|
|
15
|
-
/** @param {import('../config/config-base')} config */
|
|
16
|
-
isEnabled (config) {
|
|
17
|
-
return config.featureFlags.DD_FEATURE_FLAGS_ENABLED
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @param {import('../remote_config')} rc - RemoteConfig instance
|
|
22
|
-
* @param {import('../config/config-base')} config
|
|
23
|
-
* @param {OpenFeatureProxy} proxy
|
|
24
|
-
*/
|
|
25
|
-
remoteConfig (rc, config, proxy) {
|
|
26
|
-
const openfeatureRemoteConfig = require('./remote_config')
|
|
27
|
-
const subscribe = config.featureFlags.DD_FEATURE_FLAGS_ENABLED &&
|
|
28
|
-
config.featureFlags.DD_FEATURE_FLAGS_CONFIGURATION_SOURCE === 'remote_config'
|
|
29
|
-
openfeatureRemoteConfig.enable(
|
|
30
|
-
rc,
|
|
31
|
-
() => proxy.openfeature,
|
|
32
|
-
subscribe
|
|
33
|
-
)
|
|
34
|
-
},
|
|
35
|
-
})
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
/** @type {(request: string) => typeof import('@datadog/openfeature-node-server')} */
|
|
4
|
-
let requireOptionalPeer
|
|
5
|
-
|
|
6
|
-
// @ts-expect-error webpack exposes this escape hatch as a free variable.
|
|
7
|
-
// eslint-disable-next-line camelcase
|
|
8
|
-
if (typeof __non_webpack_require__ === 'function') {
|
|
9
|
-
// eslint-disable-next-line camelcase, no-undef
|
|
10
|
-
requireOptionalPeer = __non_webpack_require__
|
|
11
|
-
} else {
|
|
12
|
-
// nft recognizes createRequire through a binding named `module`.
|
|
13
|
-
const module = require('node:module')
|
|
14
|
-
const runtimeRequire = module.createRequire(__filename)
|
|
15
|
-
requireOptionalPeer = runtimeRequire
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
module.exports = requireOptionalPeer('@datadog/openfeature-node-server')
|