dd-trace 5.100.0 → 5.102.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/index.d.ts +14 -0
- package/package.json +11 -9
- package/packages/datadog-instrumentations/src/aerospike.js +2 -2
- package/packages/datadog-instrumentations/src/ai.js +8 -8
- package/packages/datadog-instrumentations/src/amqplib.js +6 -7
- package/packages/datadog-instrumentations/src/anthropic.js +10 -10
- package/packages/datadog-instrumentations/src/apollo-server-core.js +3 -3
- package/packages/datadog-instrumentations/src/apollo-server.js +5 -5
- package/packages/datadog-instrumentations/src/avsc.js +6 -6
- package/packages/datadog-instrumentations/src/aws-sdk.js +151 -67
- package/packages/datadog-instrumentations/src/azure-durable-functions.js +8 -8
- package/packages/datadog-instrumentations/src/bluebird.js +2 -2
- package/packages/datadog-instrumentations/src/body-parser.js +2 -2
- package/packages/datadog-instrumentations/src/cassandra-driver.js +7 -7
- package/packages/datadog-instrumentations/src/child_process.js +12 -12
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +9 -9
- package/packages/datadog-instrumentations/src/connect.js +7 -7
- package/packages/datadog-instrumentations/src/cookie-parser.js +4 -4
- package/packages/datadog-instrumentations/src/cookie.js +2 -2
- package/packages/datadog-instrumentations/src/couchbase.js +16 -30
- package/packages/datadog-instrumentations/src/crypto.js +4 -4
- package/packages/datadog-instrumentations/src/cucumber.js +77 -16
- package/packages/datadog-instrumentations/src/cypress.js +5 -3
- package/packages/datadog-instrumentations/src/dns.js +0 -3
- package/packages/datadog-instrumentations/src/elasticsearch.js +8 -11
- package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +6 -6
- package/packages/datadog-instrumentations/src/express-session.js +4 -4
- package/packages/datadog-instrumentations/src/express.js +10 -11
- package/packages/datadog-instrumentations/src/fastify.js +2 -2
- package/packages/datadog-instrumentations/src/fs.js +14 -14
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +5 -7
- package/packages/datadog-instrumentations/src/google-genai.js +4 -4
- package/packages/datadog-instrumentations/src/grpc/server.js +2 -2
- package/packages/datadog-instrumentations/src/hapi.js +2 -2
- package/packages/datadog-instrumentations/src/helpers/callback-instrumentor.js +8 -8
- package/packages/datadog-instrumentations/src/helpers/promise.js +2 -2
- package/packages/datadog-instrumentations/src/hono.js +2 -2
- package/packages/datadog-instrumentations/src/http/client.js +26 -9
- package/packages/datadog-instrumentations/src/http/server.js +9 -9
- package/packages/datadog-instrumentations/src/jest.js +93 -63
- package/packages/datadog-instrumentations/src/kafkajs.js +9 -9
- package/packages/datadog-instrumentations/src/knex.js +17 -17
- package/packages/datadog-instrumentations/src/koa.js +12 -12
- package/packages/datadog-instrumentations/src/ldapjs.js +5 -5
- package/packages/datadog-instrumentations/src/light-my-request.js +2 -2
- package/packages/datadog-instrumentations/src/limitd-client.js +4 -4
- package/packages/datadog-instrumentations/src/lodash.js +4 -4
- package/packages/datadog-instrumentations/src/mariadb.js +13 -13
- package/packages/datadog-instrumentations/src/memcached.js +2 -2
- package/packages/datadog-instrumentations/src/microgateway-core.js +2 -2
- package/packages/datadog-instrumentations/src/mocha/common.js +7 -4
- package/packages/datadog-instrumentations/src/mocha/main.js +37 -14
- package/packages/datadog-instrumentations/src/mocha/utils.js +133 -16
- package/packages/datadog-instrumentations/src/mocha/worker.js +12 -7
- package/packages/datadog-instrumentations/src/mongodb-core.js +9 -22
- package/packages/datadog-instrumentations/src/mongodb.js +5 -5
- package/packages/datadog-instrumentations/src/mongoose.js +21 -21
- package/packages/datadog-instrumentations/src/mquery.js +5 -5
- package/packages/datadog-instrumentations/src/multer.js +4 -4
- package/packages/datadog-instrumentations/src/mysql.js +16 -16
- package/packages/datadog-instrumentations/src/mysql2.js +4 -4
- package/packages/datadog-instrumentations/src/net.js +14 -8
- package/packages/datadog-instrumentations/src/nyc.js +5 -5
- package/packages/datadog-instrumentations/src/openai.js +19 -19
- package/packages/datadog-instrumentations/src/oracledb.js +6 -6
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +11 -6
- package/packages/datadog-instrumentations/src/passport-utils.js +5 -5
- package/packages/datadog-instrumentations/src/pg.js +15 -15
- package/packages/datadog-instrumentations/src/pino.js +6 -10
- package/packages/datadog-instrumentations/src/playwright.js +20 -15
- package/packages/datadog-instrumentations/src/protobufjs.js +16 -16
- package/packages/datadog-instrumentations/src/redis.js +1 -2
- package/packages/datadog-instrumentations/src/restify.js +2 -2
- package/packages/datadog-instrumentations/src/router.js +12 -12
- package/packages/datadog-instrumentations/src/stripe.js +12 -12
- package/packages/datadog-instrumentations/src/vitest.js +107 -26
- package/packages/datadog-instrumentations/src/winston.js +4 -4
- package/packages/datadog-instrumentations/src/ws.js +7 -7
- package/packages/datadog-plugin-aws-sdk/src/base.js +52 -4
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +19 -12
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +45 -35
- package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +33 -22
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +12 -13
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +73 -54
- package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +19 -17
- package/packages/datadog-plugin-aws-sdk/src/util.js +22 -0
- package/packages/datadog-plugin-bullmq/src/consumer.js +2 -2
- package/packages/datadog-plugin-bullmq/src/producer.js +14 -20
- package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +6 -6
- package/packages/datadog-plugin-cucumber/src/index.js +4 -0
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +18 -4
- package/packages/datadog-plugin-cypress/src/plugin.js +5 -14
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +1 -5
- package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +3 -1
- package/packages/datadog-plugin-http/src/client.js +1 -5
- package/packages/datadog-plugin-jest/src/util.js +1 -2
- package/packages/datadog-plugin-kafkajs/src/consumer.js +2 -9
- package/packages/datadog-plugin-kafkajs/src/producer.js +2 -8
- package/packages/datadog-plugin-mocha/src/index.js +4 -0
- package/packages/datadog-plugin-mongodb-core/src/index.js +2 -1
- package/packages/datadog-plugin-openai/src/tracing.js +12 -23
- package/packages/datadog-plugin-playwright/src/index.js +1 -1
- package/packages/datadog-plugin-vitest/src/index.js +8 -1
- package/packages/datadog-shimmer/src/shimmer.js +7 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +81 -81
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +2 -0
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +1 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +83 -48
- package/packages/dd-trace/src/appsec/index.js +21 -24
- package/packages/dd-trace/src/appsec/reporter.js +7 -2
- package/packages/dd-trace/src/appsec/rule_manager.js +4 -2
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +31 -16
- package/packages/dd-trace/src/ci-visibility/lage.js +2 -1
- package/packages/dd-trace/src/ci-visibility/requests/request.js +11 -33
- package/packages/dd-trace/src/config/config-types.d.ts +0 -2
- package/packages/dd-trace/src/config/git_properties.js +2 -2
- package/packages/dd-trace/src/config/index.js +1 -55
- package/packages/dd-trace/src/datastreams/checkpointer.js +4 -10
- package/packages/dd-trace/src/datastreams/encoding.js +39 -28
- package/packages/dd-trace/src/datastreams/index.js +2 -1
- package/packages/dd-trace/src/datastreams/pathway.js +29 -26
- package/packages/dd-trace/src/datastreams/processor.js +18 -17
- package/packages/dd-trace/src/datastreams/size.js +6 -2
- package/packages/dd-trace/src/debugger/config.js +5 -2
- package/packages/dd-trace/src/debugger/devtools_client/index.js +2 -5
- package/packages/dd-trace/src/debugger/devtools_client/send.js +2 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +1 -0
- package/packages/dd-trace/src/dogstatsd.js +10 -7
- package/packages/dd-trace/src/encode/0.4.js +759 -234
- package/packages/dd-trace/src/encode/0.5.js +15 -9
- package/packages/dd-trace/src/encode/agentless-json.js +2 -2
- package/packages/dd-trace/src/encode/tags-processors.js +2 -27
- package/packages/dd-trace/src/exporters/common/request.js +22 -11
- package/packages/dd-trace/src/exporters/common/retry.js +104 -0
- package/packages/dd-trace/src/git_metadata.js +66 -0
- package/packages/dd-trace/src/git_metadata_tagger.js +13 -5
- package/packages/dd-trace/src/id.js +15 -26
- package/packages/dd-trace/src/llmobs/constants/tags.js +2 -0
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +1 -2
- package/packages/dd-trace/src/llmobs/plugins/anthropic/index.js +27 -16
- package/packages/dd-trace/src/llmobs/plugins/anthropic/util.js +3 -0
- package/packages/dd-trace/src/llmobs/plugins/genai/util.js +33 -13
- package/packages/dd-trace/src/llmobs/plugins/openai/index.js +20 -50
- package/packages/dd-trace/src/llmobs/sdk.js +29 -27
- package/packages/dd-trace/src/llmobs/span_processor.js +52 -6
- package/packages/dd-trace/src/llmobs/tagger.js +42 -0
- package/packages/dd-trace/src/llmobs/telemetry.js +29 -0
- package/packages/dd-trace/src/llmobs/util.js +81 -5
- package/packages/dd-trace/src/msgpack/chunk.js +6 -3
- package/packages/dd-trace/src/openfeature/noop.js +40 -36
- package/packages/dd-trace/src/openfeature/writers/exposures.js +33 -52
- package/packages/dd-trace/src/opentelemetry/active-span-proxy.js +42 -0
- package/packages/dd-trace/src/opentelemetry/bridge-span-base.js +106 -0
- package/packages/dd-trace/src/opentelemetry/context_manager.js +11 -2
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +1 -2
- package/packages/dd-trace/src/opentelemetry/span-helpers.js +188 -50
- package/packages/dd-trace/src/opentelemetry/span.js +42 -80
- package/packages/dd-trace/src/opentelemetry/tracer.js +0 -22
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +65 -27
- package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +2 -11
- package/packages/dd-trace/src/opentracing/propagation/tracestate.js +58 -22
- package/packages/dd-trace/src/opentracing/span.js +56 -48
- package/packages/dd-trace/src/opentracing/span_context.js +1 -0
- package/packages/dd-trace/src/plugins/util/ci.js +1 -1
- package/packages/dd-trace/src/plugins/util/git-cache.js +3 -5
- package/packages/dd-trace/src/plugins/util/test.js +19 -7
- package/packages/dd-trace/src/plugins/util/url.js +1 -3
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -1
- package/packages/dd-trace/src/plugins/util/web.js +5 -7
- package/packages/dd-trace/src/priority_sampler.js +6 -4
- package/packages/dd-trace/src/profiling/config.js +5 -4
- package/packages/dd-trace/src/profiling/profilers/events.js +3 -23
- package/packages/dd-trace/src/profiling/profilers/wall.js +4 -5
- package/packages/dd-trace/src/remote_config/index.js +5 -3
- package/packages/dd-trace/src/runtime_metrics/index.js +2 -2
- package/packages/dd-trace/src/scope.js +3 -10
- package/packages/dd-trace/src/serverless.js +1 -4
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +7 -1
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +4 -0
- package/packages/dd-trace/src/span_format.js +52 -5
- package/packages/dd-trace/src/span_processor.js +0 -4
- package/packages/dd-trace/src/spanleak.js +0 -1
- package/packages/dd-trace/src/tracer.js +7 -7
- package/packages/dd-trace/src/util.js +17 -0
|
@@ -32,41 +32,41 @@ addHook({
|
|
|
32
32
|
versions: ['>=2'],
|
|
33
33
|
file: 'lib/knex-builder/Knex.js',
|
|
34
34
|
}, Knex => {
|
|
35
|
-
shimmer.wrap(Knex.Client.prototype, 'raw', raw => function () {
|
|
35
|
+
shimmer.wrap(Knex.Client.prototype, 'raw', raw => function (...args) {
|
|
36
36
|
if (!startRawQueryCh.hasSubscribers) {
|
|
37
|
-
return raw.apply(this,
|
|
37
|
+
return raw.apply(this, args)
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
const sql =
|
|
40
|
+
const sql = args[0]
|
|
41
41
|
|
|
42
42
|
// Skip query done by Knex to get the value used for undefined
|
|
43
43
|
if (sql === 'DEFAULT') {
|
|
44
|
-
return raw.apply(this,
|
|
44
|
+
return raw.apply(this, args)
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
const context = { sql, dialect: this.dialect }
|
|
48
48
|
return startRawQueryCh.runStores(context, () => {
|
|
49
|
-
const rawResult = raw.apply(this,
|
|
50
|
-
shimmer.wrap(rawResult, 'then', originalThen => function () {
|
|
49
|
+
const rawResult = raw.apply(this, args)
|
|
50
|
+
shimmer.wrap(rawResult, 'then', originalThen => function (...args) {
|
|
51
51
|
return rawQuerySubscribes.runStores(context, () => {
|
|
52
|
-
|
|
53
|
-
if (
|
|
52
|
+
args[0] = wrapCallbackWithFinish(args[0], finish, context)
|
|
53
|
+
if (args[1]) args[1] = wrapCallbackWithFinish(args[1], finish, context)
|
|
54
54
|
|
|
55
|
-
const originalThenResult = originalThen.apply(this,
|
|
55
|
+
const originalThenResult = originalThen.apply(this, args)
|
|
56
56
|
|
|
57
|
-
shimmer.wrap(originalThenResult, 'catch', originalCatch => function () {
|
|
58
|
-
|
|
59
|
-
return originalCatch.apply(this,
|
|
57
|
+
shimmer.wrap(originalThenResult, 'catch', originalCatch => function (...args) {
|
|
58
|
+
args[0] = wrapCallbackWithFinish(args[0], finish, context)
|
|
59
|
+
return originalCatch.apply(this, args)
|
|
60
60
|
})
|
|
61
61
|
|
|
62
62
|
return originalThenResult
|
|
63
63
|
})
|
|
64
64
|
})
|
|
65
65
|
|
|
66
|
-
shimmer.wrap(rawResult, 'asCallback', originalAsCallback => function () {
|
|
66
|
+
shimmer.wrap(rawResult, 'asCallback', originalAsCallback => function (...args) {
|
|
67
67
|
return rawQuerySubscribes.runStores(context, () => {
|
|
68
|
-
|
|
69
|
-
return originalAsCallback.apply(this,
|
|
68
|
+
args[0] = wrapCallbackWithFinish(args[0], finish, context)
|
|
69
|
+
return originalAsCallback.apply(this, args)
|
|
70
70
|
})
|
|
71
71
|
})
|
|
72
72
|
|
|
@@ -80,7 +80,7 @@ addHook({
|
|
|
80
80
|
function wrapCallbackWithFinish (callback, finish, context) {
|
|
81
81
|
if (typeof callback !== 'function') return callback
|
|
82
82
|
|
|
83
|
-
return shimmer.wrapFunction(callback, callback => function () {
|
|
84
|
-
finish(context, () => callback.apply(this,
|
|
83
|
+
return shimmer.wrapFunction(callback, callback => function (...args) {
|
|
84
|
+
finish(context, () => callback.apply(this, args))
|
|
85
85
|
})
|
|
86
86
|
}
|
|
@@ -14,8 +14,8 @@ const routeChannel = channel('apm:koa:request:route')
|
|
|
14
14
|
const originals = new WeakMap()
|
|
15
15
|
|
|
16
16
|
function wrapCallback (callback) {
|
|
17
|
-
return function callbackWithTrace () {
|
|
18
|
-
const handleRequest = callback.apply(this,
|
|
17
|
+
return function callbackWithTrace (...args) {
|
|
18
|
+
const handleRequest = callback.apply(this, args)
|
|
19
19
|
|
|
20
20
|
if (typeof handleRequest !== 'function') return handleRequest
|
|
21
21
|
|
|
@@ -28,14 +28,14 @@ function wrapCallback (callback) {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
function wrapUse (use) {
|
|
31
|
-
return function useWithTrace () {
|
|
32
|
-
const result = use.apply(this,
|
|
31
|
+
return function useWithTrace (...args) {
|
|
32
|
+
const result = use.apply(this, args)
|
|
33
33
|
|
|
34
|
-
if (
|
|
34
|
+
if (Array.isArray(this.middleware)) {
|
|
35
|
+
const fn = this.middleware.pop()
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.middleware.push(wrapMiddleware(fn))
|
|
37
|
+
this.middleware.push(wrapMiddleware(fn))
|
|
38
|
+
}
|
|
39
39
|
|
|
40
40
|
return result
|
|
41
41
|
}
|
|
@@ -54,8 +54,8 @@ function wrapRegister (register) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
function wrapRouterUse (use) {
|
|
57
|
-
return function useWithTrace () {
|
|
58
|
-
const router = use.apply(this,
|
|
57
|
+
return function useWithTrace (...args) {
|
|
58
|
+
const router = use.apply(this, args)
|
|
59
59
|
|
|
60
60
|
for (const layer of router.stack) {
|
|
61
61
|
wrapStack(layer)
|
|
@@ -144,10 +144,10 @@ function fulfill (ctx, error) {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
function wrapNext (req, next) {
|
|
147
|
-
return shimmer.wrapFunction(next, next => function () {
|
|
147
|
+
return shimmer.wrapFunction(next, next => function (...args) {
|
|
148
148
|
nextChannel.publish({ req })
|
|
149
149
|
|
|
150
|
-
return next.apply(this,
|
|
150
|
+
return next.apply(this, args)
|
|
151
151
|
})
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -71,12 +71,12 @@ addHook({ name: 'ldapjs', versions: ['>=2'] }, ldapjs => {
|
|
|
71
71
|
return search.apply(this, arguments)
|
|
72
72
|
})
|
|
73
73
|
|
|
74
|
-
shimmer.wrap(ldapjs.Client.prototype, '_send', _send => function () {
|
|
75
|
-
const callbackIndex = getCallbackArgIndex(
|
|
74
|
+
shimmer.wrap(ldapjs.Client.prototype, '_send', _send => function (...args) {
|
|
75
|
+
const callbackIndex = getCallbackArgIndex(args)
|
|
76
76
|
if (callbackIndex > -1) {
|
|
77
|
-
const callback =
|
|
77
|
+
const callback = args[callbackIndex]
|
|
78
78
|
// eslint-disable-next-line n/handle-callback-err
|
|
79
|
-
|
|
79
|
+
args[callbackIndex] = shimmer.wrapFunction(callback, callback => function (err, corkedEmitter) {
|
|
80
80
|
if (corkedEmitter !== null && typeof corkedEmitter === 'object' && typeof corkedEmitter.on === 'function') {
|
|
81
81
|
wrapEmitter(corkedEmitter)
|
|
82
82
|
}
|
|
@@ -84,7 +84,7 @@ addHook({ name: 'ldapjs', versions: ['>=2'] }, ldapjs => {
|
|
|
84
84
|
})
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
return _send.apply(this,
|
|
87
|
+
return _send.apply(this, args)
|
|
88
88
|
})
|
|
89
89
|
|
|
90
90
|
shimmer.wrap(ldapjs.Client.prototype, 'bind', bind => function (dn, password, controls, callback) {
|
|
@@ -69,8 +69,8 @@ function wrapDispatchFunc (dispatchFunc) {
|
|
|
69
69
|
// Also wrap end() as fallback
|
|
70
70
|
const originalEnd = res.end
|
|
71
71
|
if (originalEnd) {
|
|
72
|
-
res.end = function wrappedEnd () {
|
|
73
|
-
const result = originalEnd.apply(this,
|
|
72
|
+
res.end = function wrappedEnd (...args) {
|
|
73
|
+
const result = originalEnd.apply(this, args)
|
|
74
74
|
// Trigger finish if events don't fire
|
|
75
75
|
setImmediate(onFinish)
|
|
76
76
|
return result
|
|
@@ -4,10 +4,10 @@ const shimmer = require('../../datadog-shimmer')
|
|
|
4
4
|
const { addHook, AsyncResource } = require('./helpers/instrument')
|
|
5
5
|
|
|
6
6
|
function wrapRequest (original) {
|
|
7
|
-
return function () {
|
|
8
|
-
const id =
|
|
9
|
-
|
|
10
|
-
return original.apply(this,
|
|
7
|
+
return function (...args) {
|
|
8
|
+
const id = args.length - 1
|
|
9
|
+
args[id] = AsyncResource.bind(args[id])
|
|
10
|
+
return original.apply(this, args)
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
|
|
@@ -12,13 +12,13 @@ addHook({ name: 'lodash', versions: ['>=4'] }, lodash => {
|
|
|
12
12
|
lodash,
|
|
13
13
|
instrumentedLodashFn,
|
|
14
14
|
lodashFn => {
|
|
15
|
-
return function () {
|
|
15
|
+
return function (...args) {
|
|
16
16
|
if (!lodashOperationCh.hasSubscribers) {
|
|
17
|
-
return lodashFn.apply(this,
|
|
17
|
+
return lodashFn.apply(this, args)
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
const result = lodashFn.apply(this,
|
|
21
|
-
const message = { operation: lodashFn.name, arguments, result }
|
|
20
|
+
const result = lodashFn.apply(this, args)
|
|
21
|
+
const message = { operation: lodashFn.name, arguments: args, result }
|
|
22
22
|
lodashOperationCh.publish(message)
|
|
23
23
|
|
|
24
24
|
return message.result
|
|
@@ -12,13 +12,13 @@ const errorCh = channel('apm:mariadb:query:error')
|
|
|
12
12
|
const skipCh = channel('apm:mariadb:pool:skip')
|
|
13
13
|
|
|
14
14
|
function wrapCommandStart (start, ctx) {
|
|
15
|
-
return shimmer.wrapFunction(start, start => function () {
|
|
16
|
-
if (!startCh.hasSubscribers) return start.apply(this,
|
|
15
|
+
return shimmer.wrapFunction(start, start => function (...args) {
|
|
16
|
+
if (!startCh.hasSubscribers) return start.apply(this, args)
|
|
17
17
|
|
|
18
18
|
const { reject, resolve } = this
|
|
19
19
|
shimmer.wrap(this, 'resolve', function wrapResolve () {
|
|
20
|
-
return function () {
|
|
21
|
-
return finishCh.runStores(ctx, resolve, this, ...
|
|
20
|
+
return function (...args) {
|
|
21
|
+
return finishCh.runStores(ctx, resolve, this, ...args)
|
|
22
22
|
}
|
|
23
23
|
})
|
|
24
24
|
|
|
@@ -32,7 +32,7 @@ function wrapCommandStart (start, ctx) {
|
|
|
32
32
|
}
|
|
33
33
|
})
|
|
34
34
|
|
|
35
|
-
return startCh.runStores(ctx, start, this, ...
|
|
35
|
+
return startCh.runStores(ctx, start, this, ...args)
|
|
36
36
|
})
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -128,25 +128,25 @@ function wrapPoolBase (PoolBase) {
|
|
|
128
128
|
// so instead we just skip instrumentation completely to avoid memory leaks
|
|
129
129
|
// and/or orphan spans.
|
|
130
130
|
function wrapPoolMethod (createConnection) {
|
|
131
|
-
return function () {
|
|
132
|
-
return skipCh.runStores({}, createConnection, this, ...
|
|
131
|
+
return function (...args) {
|
|
132
|
+
return skipCh.runStores({}, createConnection, this, ...args)
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
function wrapPoolGetConnectionMethod (getConnection) {
|
|
137
|
-
return function wrappedGetConnection () {
|
|
138
|
-
const cb =
|
|
139
|
-
if (typeof cb !== 'function') return getConnection.apply(this,
|
|
137
|
+
return function wrappedGetConnection (...args) {
|
|
138
|
+
const cb = args[args.length - 1]
|
|
139
|
+
if (typeof cb !== 'function') return getConnection.apply(this, args)
|
|
140
140
|
|
|
141
141
|
const ctx = {}
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
return connectionFinishCh.runStores(ctx, cb, this, ...
|
|
143
|
+
args[args.length - 1] = function (...args) {
|
|
144
|
+
return connectionFinishCh.runStores(ctx, cb, this, ...args)
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
connectionStartCh.publish(ctx)
|
|
148
148
|
|
|
149
|
-
return getConnection.apply(this,
|
|
149
|
+
return getConnection.apply(this, args)
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -18,8 +18,8 @@ addHook({ name: 'memcached', versions: ['>=2.2'] }, Memcached => {
|
|
|
18
18
|
|
|
19
19
|
const client = this
|
|
20
20
|
|
|
21
|
-
const wrappedQueryCompiler = function () {
|
|
22
|
-
const query = queryCompiler.apply(this,
|
|
21
|
+
const wrappedQueryCompiler = function (...args) {
|
|
22
|
+
const query = queryCompiler.apply(this, args)
|
|
23
23
|
|
|
24
24
|
const ctx = { client, server, query }
|
|
25
25
|
startCh.runStores(ctx, () => {
|
|
@@ -14,8 +14,8 @@ const versions = ['>=2.1 <=3.0.0']
|
|
|
14
14
|
const requestContexts = new WeakMap()
|
|
15
15
|
|
|
16
16
|
function wrapConfigProxyFactory (configProxyFactory) {
|
|
17
|
-
return function () {
|
|
18
|
-
const configProxy = configProxyFactory.apply(this,
|
|
17
|
+
return function (...args) {
|
|
18
|
+
const configProxy = configProxyFactory.apply(this, args)
|
|
19
19
|
|
|
20
20
|
return function (req, res, next) {
|
|
21
21
|
const ctx = { req, res }
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
const { addHook, channel } = require('../helpers/instrument')
|
|
4
4
|
const shimmer = require('../../../datadog-shimmer')
|
|
5
5
|
const { getCallSites } = require('../../../dd-trace/src/plugins/util/stacktrace')
|
|
6
|
+
const { DD_MAJOR } = require('../../../../version')
|
|
6
7
|
const { testToStartLine } = require('./utils')
|
|
7
8
|
|
|
9
|
+
const MINIMUM_MOCHA_VERSION = DD_MAJOR >= 6 ? '>=8.0.0' : '>=5.2.0'
|
|
10
|
+
|
|
8
11
|
const parameterizedTestCh = channel('ci:mocha:test:parameterize')
|
|
9
12
|
const patched = new WeakSet()
|
|
10
13
|
|
|
@@ -17,9 +20,9 @@ addHook({
|
|
|
17
20
|
|
|
18
21
|
patched.add(mochaEach)
|
|
19
22
|
|
|
20
|
-
return shimmer.wrapFunction(mochaEach, mochaEach => function () {
|
|
21
|
-
const [params] =
|
|
22
|
-
const { it, ...rest } = mochaEach.apply(this,
|
|
23
|
+
return shimmer.wrapFunction(mochaEach, mochaEach => function (...args) {
|
|
24
|
+
const [params] = args
|
|
25
|
+
const { it, ...rest } = mochaEach.apply(this, args)
|
|
23
26
|
return {
|
|
24
27
|
it: function (title) {
|
|
25
28
|
parameterizedTestCh.publish({ title, params })
|
|
@@ -33,7 +36,7 @@ addHook({
|
|
|
33
36
|
// support for start line
|
|
34
37
|
addHook({
|
|
35
38
|
name: 'mocha',
|
|
36
|
-
versions: [
|
|
39
|
+
versions: [MINIMUM_MOCHA_VERSION],
|
|
37
40
|
file: 'lib/suite.js',
|
|
38
41
|
}, (Suite) => {
|
|
39
42
|
shimmer.wrap(Suite.prototype, 'addTest', addTest => function (test) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { createCoverageMap } = require('../../../../vendor/dist/istanbul-lib-coverage')
|
|
4
|
+
const satisfies = require('../../../../vendor/dist/semifies')
|
|
5
|
+
const { DD_MAJOR } = require('../../../../version')
|
|
4
6
|
const { addHook, channel } = require('../helpers/instrument')
|
|
5
7
|
const shimmer = require('../../../datadog-shimmer')
|
|
6
8
|
const { isMarkedAsUnskippable } = require('../../../datadog-plugin-jest/src/util')
|
|
@@ -41,7 +43,10 @@ const {
|
|
|
41
43
|
|
|
42
44
|
require('./common')
|
|
43
45
|
|
|
46
|
+
const MINIMUM_MOCHA_VERSION = DD_MAJOR >= 6 ? '>=8.0.0' : '>=5.2.0'
|
|
47
|
+
|
|
44
48
|
const patched = new WeakSet()
|
|
49
|
+
let hasWarnedDeprecatedMochaVersion = false
|
|
45
50
|
|
|
46
51
|
const unskippableSuites = []
|
|
47
52
|
let suitesToSkip = []
|
|
@@ -79,6 +84,20 @@ const itrSkippedSuitesCh = channel('ci:mocha:itr:skipped-suites')
|
|
|
79
84
|
|
|
80
85
|
const getCodeCoverageCh = channel('ci:nyc:get-coverage')
|
|
81
86
|
|
|
87
|
+
function warnDeprecatedMochaVersion (frameworkVersion) {
|
|
88
|
+
if (DD_MAJOR >= 6 || hasWarnedDeprecatedMochaVersion || !frameworkVersion ||
|
|
89
|
+
!satisfies(frameworkVersion, '<8.0.0')) {
|
|
90
|
+
return
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
hasWarnedDeprecatedMochaVersion = true
|
|
94
|
+
// eslint-disable-next-line no-console
|
|
95
|
+
console.warn(
|
|
96
|
+
'dd-trace support for Mocha<8.0.0 is deprecated and will be removed in dd-trace v6. ' +
|
|
97
|
+
'Please upgrade Mocha to >=8.0.0.'
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
|
|
82
101
|
// Tests from workers do not come with `isFailed` method
|
|
83
102
|
function isTestFailed (test) {
|
|
84
103
|
if (test.isFailed) {
|
|
@@ -307,6 +326,7 @@ function getExecutionConfiguration (runner, isParallel, frameworkVersion, onFini
|
|
|
307
326
|
}
|
|
308
327
|
config.isEarlyFlakeDetectionEnabled = libraryConfig.isEarlyFlakeDetectionEnabled
|
|
309
328
|
config.earlyFlakeDetectionNumRetries = libraryConfig.earlyFlakeDetectionNumRetries
|
|
329
|
+
config.earlyFlakeDetectionSlowTestRetries = libraryConfig.earlyFlakeDetectionSlowTestRetries ?? {}
|
|
310
330
|
config.earlyFlakeDetectionFaultyThreshold = libraryConfig.earlyFlakeDetectionFaultyThreshold
|
|
311
331
|
config.isKnownTestsEnabled = libraryConfig.isKnownTestsEnabled
|
|
312
332
|
config.isTestManagementTestsEnabled = libraryConfig.isTestManagementEnabled
|
|
@@ -345,20 +365,22 @@ function getExecutionConfiguration (runner, isParallel, frameworkVersion, onFini
|
|
|
345
365
|
// It is called but skipped in parallel mode.
|
|
346
366
|
addHook({
|
|
347
367
|
name: 'mocha',
|
|
348
|
-
versions: [
|
|
368
|
+
versions: [MINIMUM_MOCHA_VERSION],
|
|
349
369
|
file: 'lib/mocha.js',
|
|
350
370
|
}, (Mocha, frameworkVersion) => {
|
|
351
|
-
|
|
371
|
+
warnDeprecatedMochaVersion(frameworkVersion)
|
|
372
|
+
|
|
373
|
+
shimmer.wrap(Mocha.prototype, 'run', run => function (...args) {
|
|
352
374
|
// Workers do not need to request any data, just run the tests
|
|
353
375
|
if (!testFinishCh.hasSubscribers || getEnvironmentVariable('MOCHA_WORKER_ID') || this.options.parallel) {
|
|
354
|
-
return run.apply(this,
|
|
376
|
+
return run.apply(this, args)
|
|
355
377
|
}
|
|
356
378
|
|
|
357
379
|
// `options.delay` does not work in parallel mode, so we can't delay the execution this way
|
|
358
380
|
// This needs to be both here and in `runMocha` hook. Read the comment in `runMocha` hook for more info.
|
|
359
381
|
this.options.delay = true
|
|
360
382
|
|
|
361
|
-
const runner = run.apply(this,
|
|
383
|
+
const runner = run.apply(this, args)
|
|
362
384
|
|
|
363
385
|
// eslint-disable-next-line unicorn/no-array-for-each
|
|
364
386
|
this.files.forEach((path) => {
|
|
@@ -401,15 +423,15 @@ addHook({
|
|
|
401
423
|
|
|
402
424
|
addHook({
|
|
403
425
|
name: 'mocha',
|
|
404
|
-
versions: [
|
|
426
|
+
versions: [MINIMUM_MOCHA_VERSION],
|
|
405
427
|
file: 'lib/cli/run-helpers.js',
|
|
406
428
|
}, (run) => {
|
|
407
429
|
// `runMocha` is an async function
|
|
408
|
-
shimmer.wrap(run, 'runMocha', runMocha => function () {
|
|
430
|
+
shimmer.wrap(run, 'runMocha', runMocha => function (...args) {
|
|
409
431
|
if (!testFinishCh.hasSubscribers) {
|
|
410
|
-
return runMocha.apply(this,
|
|
432
|
+
return runMocha.apply(this, args)
|
|
411
433
|
}
|
|
412
|
-
const mocha =
|
|
434
|
+
const mocha = args[0]
|
|
413
435
|
|
|
414
436
|
/**
|
|
415
437
|
* This attaches `run` to the global context, which we'll call after
|
|
@@ -423,7 +445,7 @@ addHook({
|
|
|
423
445
|
mocha.options.delay = true
|
|
424
446
|
}
|
|
425
447
|
|
|
426
|
-
return runMocha.apply(this,
|
|
448
|
+
return runMocha.apply(this, args)
|
|
427
449
|
})
|
|
428
450
|
return run
|
|
429
451
|
})
|
|
@@ -432,7 +454,7 @@ addHook({
|
|
|
432
454
|
// This hook is used to generate session, module, suite and test events
|
|
433
455
|
addHook({
|
|
434
456
|
name: 'mocha',
|
|
435
|
-
versions: [
|
|
457
|
+
versions: [MINIMUM_MOCHA_VERSION],
|
|
436
458
|
file: 'lib/runner.js',
|
|
437
459
|
}, function (Runner, frameworkVersion) {
|
|
438
460
|
if (patched.has(Runner)) return Runner
|
|
@@ -441,9 +463,9 @@ addHook({
|
|
|
441
463
|
|
|
442
464
|
shimmer.wrap(Runner.prototype, 'runTests', runTests => getRunTestsWrapper(runTests, config))
|
|
443
465
|
|
|
444
|
-
shimmer.wrap(Runner.prototype, 'run', run => function () {
|
|
466
|
+
shimmer.wrap(Runner.prototype, 'run', run => function (...args) {
|
|
445
467
|
if (!testFinishCh.hasSubscribers) {
|
|
446
|
-
return run.apply(this,
|
|
468
|
+
return run.apply(this, args)
|
|
447
469
|
}
|
|
448
470
|
|
|
449
471
|
const { suitesByTestFile, numSuitesByTestFile } = getSuitesByTestFile(this.suite)
|
|
@@ -531,7 +553,7 @@ addHook({
|
|
|
531
553
|
}
|
|
532
554
|
})
|
|
533
555
|
|
|
534
|
-
return run.apply(this,
|
|
556
|
+
return run.apply(this, args)
|
|
535
557
|
})
|
|
536
558
|
|
|
537
559
|
return Runner
|
|
@@ -541,7 +563,7 @@ addHook({
|
|
|
541
563
|
// Used to set the correct async resource to the test.
|
|
542
564
|
addHook({
|
|
543
565
|
name: 'mocha',
|
|
544
|
-
versions: [
|
|
566
|
+
versions: [MINIMUM_MOCHA_VERSION],
|
|
545
567
|
file: 'lib/runnable.js',
|
|
546
568
|
}, (runnablePackage) => runnableWrapper(runnablePackage, config))
|
|
547
569
|
|
|
@@ -701,6 +723,7 @@ addHook({
|
|
|
701
723
|
if (config.knownTests?.mocha) {
|
|
702
724
|
const testSuiteKnownTests = config.knownTests.mocha[testPath] || []
|
|
703
725
|
newWorkerArgs._ddEfdNumRetries = config.earlyFlakeDetectionNumRetries
|
|
726
|
+
newWorkerArgs._ddEfdSlowTestRetries = config.earlyFlakeDetectionSlowTestRetries
|
|
704
727
|
newWorkerArgs._ddIsEfdEnabled = config.isEarlyFlakeDetectionEnabled
|
|
705
728
|
newWorkerArgs._ddIsKnownTestsEnabled = true
|
|
706
729
|
newWorkerArgs._ddKnownTests = {
|