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
|
@@ -28,12 +28,12 @@ function wrapServer (server) {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
function wrapStart (start) {
|
|
31
|
-
return shimmer.wrapFunction(start, start => function () {
|
|
31
|
+
return shimmer.wrapFunction(start, start => function (...args) {
|
|
32
32
|
if (this && typeof this.ext === 'function') {
|
|
33
33
|
this.ext('onPreResponse', onPreResponse)
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
return start.apply(this,
|
|
36
|
+
return start.apply(this, args)
|
|
37
37
|
})
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -32,20 +32,20 @@ function createCallbackInstrumentor (prefix, { captureResult = false } = {}) {
|
|
|
32
32
|
|
|
33
33
|
return function instrument (buildContext) {
|
|
34
34
|
return function wrap (fn) {
|
|
35
|
-
return function () {
|
|
36
|
-
const lastIndex =
|
|
37
|
-
const cb =
|
|
35
|
+
return function (...args) {
|
|
36
|
+
const lastIndex = args.length - 1
|
|
37
|
+
const cb = args[lastIndex]
|
|
38
38
|
if (!startCh.hasSubscribers || typeof cb !== 'function') {
|
|
39
|
-
return fn.apply(this,
|
|
39
|
+
return fn.apply(this, args)
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
const ctx = buildContext(this,
|
|
42
|
+
const ctx = buildContext(this, args)
|
|
43
43
|
if (ctx === undefined) {
|
|
44
|
-
return fn.apply(this,
|
|
44
|
+
return fn.apply(this, args)
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
return startCh.runStores(ctx, () => {
|
|
48
|
-
|
|
48
|
+
args[lastIndex] = shimmer.wrapFunction(cb, cb => function (error, ...rest) {
|
|
49
49
|
if (error) {
|
|
50
50
|
ctx.error = error
|
|
51
51
|
errorCh.publish(ctx)
|
|
@@ -57,7 +57,7 @@ function createCallbackInstrumentor (prefix, { captureResult = false } = {}) {
|
|
|
57
57
|
})
|
|
58
58
|
|
|
59
59
|
try {
|
|
60
|
-
return fn.apply(this,
|
|
60
|
+
return fn.apply(this, args)
|
|
61
61
|
} catch (error) {
|
|
62
62
|
void error.stack // trigger getting the stack at the original throwing point
|
|
63
63
|
ctx.error = error
|
|
@@ -21,9 +21,9 @@ exports.wrapThen = function wrapThen (origThen) {
|
|
|
21
21
|
function wrapCallback (ar, callback) {
|
|
22
22
|
if (typeof callback !== 'function') return callback
|
|
23
23
|
|
|
24
|
-
return function () {
|
|
24
|
+
return function (...args) {
|
|
25
25
|
return ar.runInAsyncScope(() => {
|
|
26
|
-
return callback.apply(this,
|
|
26
|
+
return callback.apply(this, args)
|
|
27
27
|
})
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -56,10 +56,10 @@ function wrapNext (req, route, next) {
|
|
|
56
56
|
return shimmer.wrapFunction(
|
|
57
57
|
next,
|
|
58
58
|
(next) =>
|
|
59
|
-
function () {
|
|
59
|
+
function (...args) {
|
|
60
60
|
nextChannel.publish({ req, route })
|
|
61
61
|
|
|
62
|
-
return next.apply(this,
|
|
62
|
+
return next.apply(this, args)
|
|
63
63
|
}
|
|
64
64
|
)
|
|
65
65
|
}
|
|
@@ -26,10 +26,27 @@ function hookFn (http) {
|
|
|
26
26
|
return http
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
// `inputURL` may be the user's options object (for the `http.request(options)`
|
|
30
|
+
// shape); never write directly into it. The result is later mutated by
|
|
31
|
+
// `normalizeHeaders` and read by `url.format`, so the merged object must be
|
|
32
|
+
// owned by the tracer. `undefined` means "no URL supplied" — Node merges
|
|
33
|
+
// with the options object or its defaults, so build a tracer-owned
|
|
34
|
+
// options-only shape and let tracing proceed. `null`/primitive first args
|
|
35
|
+
// are returned as-is so `normalizeHeaders` throws and the surrounding
|
|
36
|
+
// try/catch in `instrumentRequest` falls through to the native request;
|
|
37
|
+
// spreading a primitive yields `{}`, which would silently turn an invalid
|
|
38
|
+
// `http.request(123)` into a synthesized localhost request.
|
|
29
39
|
function combineOptions (inputURL, inputOptions) {
|
|
30
|
-
|
|
31
|
-
?
|
|
32
|
-
|
|
40
|
+
if (inputURL === undefined) {
|
|
41
|
+
return inputOptions !== null && typeof inputOptions === 'object' ? { ...inputOptions } : {}
|
|
42
|
+
}
|
|
43
|
+
if (inputURL === null || (typeof inputURL !== 'object' && typeof inputURL !== 'function')) {
|
|
44
|
+
return inputURL
|
|
45
|
+
}
|
|
46
|
+
if (inputOptions !== null && typeof inputOptions === 'object') {
|
|
47
|
+
return { ...inputURL, ...inputOptions }
|
|
48
|
+
}
|
|
49
|
+
return { ...inputURL }
|
|
33
50
|
}
|
|
34
51
|
function normalizeHeaders (options) {
|
|
35
52
|
options.headers ??= {}
|
|
@@ -90,8 +107,8 @@ function setupResponseInstrumentation (ctx, res) {
|
|
|
90
107
|
// For 'readable' events, wrap the read() method
|
|
91
108
|
if (eventName === 'readable' && !originalRead && !dataListenerAdded && typeof res.read === 'function') {
|
|
92
109
|
originalRead = res.read
|
|
93
|
-
res.read = function () {
|
|
94
|
-
const chunk = originalRead.apply(this,
|
|
110
|
+
res.read = function (...args) {
|
|
111
|
+
const chunk = originalRead.apply(this, args)
|
|
95
112
|
if (!dataListenerAdded) {
|
|
96
113
|
dataReadStarted = true
|
|
97
114
|
collectChunk(chunk)
|
|
@@ -172,9 +189,9 @@ function patch (http, methodName) {
|
|
|
172
189
|
let callback = args.callback
|
|
173
190
|
|
|
174
191
|
if (callback) {
|
|
175
|
-
callback = shimmer.wrapFunction(args.callback, cb => function () {
|
|
192
|
+
callback = shimmer.wrapFunction(args.callback, cb => function (...args) {
|
|
176
193
|
return asyncStartChannel.runStores(ctx, () => {
|
|
177
|
-
return cb.apply(this,
|
|
194
|
+
return cb.apply(this, args)
|
|
178
195
|
})
|
|
179
196
|
})
|
|
180
197
|
}
|
|
@@ -197,9 +214,9 @@ function patch (http, methodName) {
|
|
|
197
214
|
|
|
198
215
|
// tracked to accurately discern custom request socket timeout
|
|
199
216
|
let customRequestTimeout = false
|
|
200
|
-
req.setTimeout = function () {
|
|
217
|
+
req.setTimeout = function (...args) {
|
|
201
218
|
customRequestTimeout = true
|
|
202
|
-
return setTimeout.apply(this,
|
|
219
|
+
return setTimeout.apply(this, args)
|
|
203
220
|
}
|
|
204
221
|
|
|
205
222
|
req.emit = function (eventName, arg) {
|
|
@@ -126,9 +126,9 @@ function wrapWriteHead (writeHead) {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
function wrapWrite (write) {
|
|
129
|
-
return function wrappedWrite () {
|
|
129
|
+
return function wrappedWrite (...args) {
|
|
130
130
|
if (!startWriteHeadCh.hasSubscribers) {
|
|
131
|
-
return write.apply(this,
|
|
131
|
+
return write.apply(this, args)
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
const abortController = new AbortController()
|
|
@@ -147,7 +147,7 @@ function wrapWrite (write) {
|
|
|
147
147
|
return true
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
return write.apply(this,
|
|
150
|
+
return write.apply(this, args)
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -177,9 +177,9 @@ function wrapSetHeader (setHeader) {
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
function wrapAppendOrRemoveHeader (originalMethod) {
|
|
180
|
-
return function wrappedAppendOrRemoveHeader () {
|
|
180
|
+
return function wrappedAppendOrRemoveHeader (...args) {
|
|
181
181
|
if (!startSetHeaderCh.hasSubscribers) {
|
|
182
|
-
return originalMethod.apply(this,
|
|
182
|
+
return originalMethod.apply(this, args)
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
const abortController = new AbortController()
|
|
@@ -189,14 +189,14 @@ function wrapAppendOrRemoveHeader (originalMethod) {
|
|
|
189
189
|
return this
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
return originalMethod.apply(this,
|
|
192
|
+
return originalMethod.apply(this, args)
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
function wrapEnd (end) {
|
|
197
|
-
return function wrappedEnd () {
|
|
197
|
+
return function wrappedEnd (...args) {
|
|
198
198
|
if (!startWriteHeadCh.hasSubscribers) {
|
|
199
|
-
return end.apply(this,
|
|
199
|
+
return end.apply(this, args)
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
const abortController = new AbortController()
|
|
@@ -215,6 +215,6 @@ function wrapEnd (end) {
|
|
|
215
215
|
return this
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
return end.apply(this,
|
|
218
|
+
return end.apply(this, args)
|
|
219
219
|
}
|
|
220
220
|
}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
const realSetTimeout = setTimeout
|
|
5
5
|
|
|
6
6
|
const path = require('path')
|
|
7
|
+
const satisfies = require('../../../vendor/dist/semifies')
|
|
8
|
+
const { DD_MAJOR } = require('../../../version')
|
|
7
9
|
const shimmer = require('../../datadog-shimmer')
|
|
8
10
|
const log = require('../../dd-trace/src/log')
|
|
9
11
|
const {
|
|
@@ -24,13 +26,13 @@ const {
|
|
|
24
26
|
recordAttemptToFixExecution,
|
|
25
27
|
logAttemptToFixTestExecution,
|
|
26
28
|
logTestOptimizationSummary,
|
|
29
|
+
getEfdRetryCount,
|
|
27
30
|
} = require('../../dd-trace/src/plugins/util/test')
|
|
28
31
|
const {
|
|
29
32
|
SEED_SUFFIX_RE,
|
|
30
33
|
getFormattedJestTestParameters,
|
|
31
34
|
getJestTestName,
|
|
32
35
|
getJestSuitesToRun,
|
|
33
|
-
getEfdRetryCount,
|
|
34
36
|
} = require('../../datadog-plugin-jest/src/util')
|
|
35
37
|
const { addHook, channel } = require('./helpers/instrument')
|
|
36
38
|
|
|
@@ -126,7 +128,13 @@ const testSuiteJestObjects = new Map()
|
|
|
126
128
|
|
|
127
129
|
const BREAKPOINT_HIT_GRACE_PERIOD_MS = 200
|
|
128
130
|
const ATR_RETRY_SUPPRESSION_FLAG = '_ddDisableAtrRetry'
|
|
131
|
+
const MINIMUM_JEST_VERSION = DD_MAJOR >= 6 ? '>=28.0.0' : '>=24.8.0'
|
|
132
|
+
const MINIMUM_JEST_VERSION_BEFORE_30 = DD_MAJOR >= 6 ? '>=28.0.0 <30.0.0' : '>=24.8.0 <30.0.0'
|
|
133
|
+
const MINIMUM_JEST_WORKER_VERSION_BEFORE_30 = DD_MAJOR >= 6 ? '>=28.0.0 <30.0.0' : '>=24.9.0 <30.0.0'
|
|
134
|
+
const MINIMUM_JEST_CONFIG_ASYNC_VERSION = DD_MAJOR >= 6 ? '>=28.0.0' : '>=25.1.0'
|
|
135
|
+
const MINIMUM_JEST_TEST_SCHEDULER_VERSION = DD_MAJOR >= 6 ? '>=28.0.0' : '>=27.0.0'
|
|
129
136
|
const atrSuppressedErrors = new Map()
|
|
137
|
+
let hasWarnedDeprecatedJestVersion = false
|
|
130
138
|
|
|
131
139
|
// Track quarantined tests whose errors were suppressed, keyed by "suite › testName"
|
|
132
140
|
const quarantinedFailingTests = new Set()
|
|
@@ -177,6 +185,20 @@ function formatJestError (errors) {
|
|
|
177
185
|
return error
|
|
178
186
|
}
|
|
179
187
|
|
|
188
|
+
function warnDeprecatedJestVersion (frameworkVersion) {
|
|
189
|
+
if (DD_MAJOR >= 6 || hasWarnedDeprecatedJestVersion || !frameworkVersion ||
|
|
190
|
+
!satisfies(frameworkVersion, '<28.0.0')) {
|
|
191
|
+
return
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
hasWarnedDeprecatedJestVersion = true
|
|
195
|
+
// eslint-disable-next-line no-console
|
|
196
|
+
console.warn(
|
|
197
|
+
'dd-trace support for Jest<28.0.0 is deprecated and will be removed in dd-trace v6. ' +
|
|
198
|
+
'Please upgrade Jest to >=28.0.0.'
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
|
|
180
202
|
function getTestEnvironmentOptions (config) {
|
|
181
203
|
if (config.projectConfig && config.projectConfig.testEnvironmentOptions) { // newer versions
|
|
182
204
|
return config.projectConfig.testEnvironmentOptions
|
|
@@ -499,13 +521,13 @@ function getWrappedEnvironment (BaseEnvironment, jestVersion) {
|
|
|
499
521
|
const setNameToParams = (name, params) => { this.nameToParams[name] = [...params] }
|
|
500
522
|
|
|
501
523
|
if (event.name === 'setup' && this.global.test) {
|
|
502
|
-
shimmer.wrap(this.global.test, 'each', each => function () {
|
|
503
|
-
const testParameters = getFormattedJestTestParameters(
|
|
504
|
-
const eachBind = each.apply(this,
|
|
505
|
-
return function () {
|
|
506
|
-
const [testName] =
|
|
524
|
+
shimmer.wrap(this.global.test, 'each', each => function (...args) {
|
|
525
|
+
const testParameters = getFormattedJestTestParameters(args)
|
|
526
|
+
const eachBind = each.apply(this, args)
|
|
527
|
+
return function (...args) {
|
|
528
|
+
const [testName] = args
|
|
507
529
|
setNameToParams(testName, testParameters)
|
|
508
|
-
return eachBind.apply(this,
|
|
530
|
+
return eachBind.apply(this, args)
|
|
509
531
|
}
|
|
510
532
|
})
|
|
511
533
|
}
|
|
@@ -602,16 +624,16 @@ function getWrappedEnvironment (BaseEnvironment, jestVersion) {
|
|
|
602
624
|
} else {
|
|
603
625
|
originalHookFns.set(hook, hookFn)
|
|
604
626
|
}
|
|
605
|
-
const newHookFn = shimmer.wrapFunction(hookFn, hookFn => function () {
|
|
606
|
-
return testFnCh.runStores(ctx, () => hookFn.apply(this,
|
|
627
|
+
const newHookFn = shimmer.wrapFunction(hookFn, hookFn => function (...args) {
|
|
628
|
+
return testFnCh.runStores(ctx, () => hookFn.apply(this, args))
|
|
607
629
|
})
|
|
608
630
|
hook.fn = newHookFn
|
|
609
631
|
}
|
|
610
632
|
const originalFn = event.test.fn
|
|
611
633
|
originalTestFns.set(event.test, originalFn)
|
|
612
634
|
|
|
613
|
-
const newFn = shimmer.wrapFunction(event.test.fn, testFn => function () {
|
|
614
|
-
return testFnCh.runStores(ctx, () => testFn.apply(this,
|
|
635
|
+
const newFn = shimmer.wrapFunction(event.test.fn, testFn => function (...args) {
|
|
636
|
+
return testFnCh.runStores(ctx, () => testFn.apply(this, args))
|
|
615
637
|
})
|
|
616
638
|
|
|
617
639
|
event.test.fn = newFn
|
|
@@ -626,8 +648,8 @@ function getWrappedEnvironment (BaseEnvironment, jestVersion) {
|
|
|
626
648
|
} else {
|
|
627
649
|
originalHookFns.set(event.hook, hookFn)
|
|
628
650
|
}
|
|
629
|
-
event.hook.fn = shimmer.wrapFunction(hookFn, hookFn => function () {
|
|
630
|
-
return testSuiteHookFnCh.runStores(ctx, () => hookFn.apply(this,
|
|
651
|
+
event.hook.fn = shimmer.wrapFunction(hookFn, hookFn => function (...args) {
|
|
652
|
+
return testSuiteHookFnCh.runStores(ctx, () => hookFn.apply(this, args))
|
|
631
653
|
})
|
|
632
654
|
}
|
|
633
655
|
|
|
@@ -1073,12 +1095,12 @@ function applySuiteSkipping (originalTests, rootDir, frameworkVersion) {
|
|
|
1073
1095
|
|
|
1074
1096
|
addHook({
|
|
1075
1097
|
name: 'jest-environment-node',
|
|
1076
|
-
versions: [
|
|
1098
|
+
versions: [MINIMUM_JEST_VERSION],
|
|
1077
1099
|
}, getTestEnvironment)
|
|
1078
1100
|
|
|
1079
1101
|
addHook({
|
|
1080
1102
|
name: 'jest-environment-jsdom',
|
|
1081
|
-
versions: [
|
|
1103
|
+
versions: [MINIMUM_JEST_VERSION],
|
|
1082
1104
|
}, getTestEnvironment)
|
|
1083
1105
|
|
|
1084
1106
|
addHook({
|
|
@@ -1150,6 +1172,8 @@ function searchSourceWrapper (searchSourcePackage, frameworkVersion) {
|
|
|
1150
1172
|
|
|
1151
1173
|
function getCliWrapper (isNewJestVersion) {
|
|
1152
1174
|
return function cliWrapper (cli, jestVersion) {
|
|
1175
|
+
warnDeprecatedJestVersion(jestVersion)
|
|
1176
|
+
|
|
1153
1177
|
if (isNewJestVersion) {
|
|
1154
1178
|
cli = shimmer.wrap(
|
|
1155
1179
|
cli,
|
|
@@ -1520,14 +1544,14 @@ function coverageReporterWrapper (coverageReporter) {
|
|
|
1520
1544
|
* in which case we'll leave it.
|
|
1521
1545
|
*/
|
|
1522
1546
|
// `_addUntestedFiles` is an async function
|
|
1523
|
-
shimmer.wrap(CoverageReporter.prototype, '_addUntestedFiles', addUntestedFiles => function () {
|
|
1547
|
+
shimmer.wrap(CoverageReporter.prototype, '_addUntestedFiles', addUntestedFiles => function (...args) {
|
|
1524
1548
|
if (DD_TEST_TIA_KEEP_COV_CONFIG) {
|
|
1525
|
-
return addUntestedFiles.apply(this,
|
|
1549
|
+
return addUntestedFiles.apply(this, args)
|
|
1526
1550
|
}
|
|
1527
1551
|
if (isCodeCoverageEnabledBecauseOfUs) {
|
|
1528
1552
|
return Promise.resolve()
|
|
1529
1553
|
}
|
|
1530
|
-
return addUntestedFiles.apply(this,
|
|
1554
|
+
return addUntestedFiles.apply(this, args)
|
|
1531
1555
|
})
|
|
1532
1556
|
|
|
1533
1557
|
return coverageReporter
|
|
@@ -1536,7 +1560,7 @@ function coverageReporterWrapper (coverageReporter) {
|
|
|
1536
1560
|
addHook({
|
|
1537
1561
|
name: '@jest/core',
|
|
1538
1562
|
file: 'build/TestScheduler.js',
|
|
1539
|
-
versions: [
|
|
1563
|
+
versions: [MINIMUM_JEST_TEST_SCHEDULER_VERSION],
|
|
1540
1564
|
}, (testSchedulerPackage, frameworkVersion) => {
|
|
1541
1565
|
const oldCreateTestScheduler = testSchedulerPackage.createTestScheduler
|
|
1542
1566
|
const newCreateTestScheduler = async function () {
|
|
@@ -1552,24 +1576,26 @@ addHook({
|
|
|
1552
1576
|
return testSchedulerPackage
|
|
1553
1577
|
})
|
|
1554
1578
|
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1579
|
+
if (DD_MAJOR < 6) {
|
|
1580
|
+
addHook({
|
|
1581
|
+
name: '@jest/core',
|
|
1582
|
+
file: 'build/TestScheduler.js',
|
|
1583
|
+
versions: ['>=24.8.0 <27.0.0'],
|
|
1584
|
+
}, (testSchedulerPackage, frameworkVersion) => {
|
|
1585
|
+
shimmer.wrap(
|
|
1586
|
+
testSchedulerPackage.default.prototype,
|
|
1587
|
+
'scheduleTests', scheduleTests => getWrappedScheduleTests(scheduleTests, frameworkVersion)
|
|
1588
|
+
)
|
|
1589
|
+
return testSchedulerPackage
|
|
1590
|
+
})
|
|
1591
|
+
}
|
|
1566
1592
|
|
|
1567
1593
|
addHook({
|
|
1568
1594
|
name: '@jest/test-sequencer',
|
|
1569
1595
|
versions: ['>=28'],
|
|
1570
1596
|
}, (sequencerPackage, frameworkVersion) => {
|
|
1571
|
-
shimmer.wrap(sequencerPackage.default.prototype, 'shard', shard => function () {
|
|
1572
|
-
const shardedTests = shard.apply(this,
|
|
1597
|
+
shimmer.wrap(sequencerPackage.default.prototype, 'shard', shard => function (...args) {
|
|
1598
|
+
const shardedTests = shard.apply(this, args)
|
|
1573
1599
|
|
|
1574
1600
|
if (!shardedTests.length || !isSuitesSkippingEnabled || !skippableSuites.length) {
|
|
1575
1601
|
return shardedTests
|
|
@@ -1582,16 +1608,18 @@ addHook({
|
|
|
1582
1608
|
return sequencerPackage
|
|
1583
1609
|
})
|
|
1584
1610
|
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1611
|
+
if (DD_MAJOR < 6) {
|
|
1612
|
+
addHook({
|
|
1613
|
+
name: '@jest/reporters',
|
|
1614
|
+
file: 'build/coverage_reporter.js',
|
|
1615
|
+
versions: ['>=24.8.0 <26.6.2'],
|
|
1616
|
+
}, coverageReporterWrapper)
|
|
1617
|
+
}
|
|
1590
1618
|
|
|
1591
1619
|
addHook({
|
|
1592
1620
|
name: '@jest/reporters',
|
|
1593
1621
|
file: 'build/CoverageReporter.js',
|
|
1594
|
-
versions: ['>=26.6.2'],
|
|
1622
|
+
versions: [DD_MAJOR >= 6 ? '>=28.0.0' : '>=26.6.2'],
|
|
1595
1623
|
}, coverageReporterWrapper)
|
|
1596
1624
|
|
|
1597
1625
|
addHook({
|
|
@@ -1604,7 +1632,7 @@ addHook({
|
|
|
1604
1632
|
addHook({
|
|
1605
1633
|
name: '@jest/core',
|
|
1606
1634
|
file: 'build/cli/index.js',
|
|
1607
|
-
versions: [
|
|
1635
|
+
versions: [MINIMUM_JEST_VERSION_BEFORE_30],
|
|
1608
1636
|
}, getCliWrapper(false))
|
|
1609
1637
|
|
|
1610
1638
|
addHook({
|
|
@@ -1614,10 +1642,10 @@ addHook({
|
|
|
1614
1642
|
|
|
1615
1643
|
function jestAdapterWrapper (jestAdapter, jestVersion) {
|
|
1616
1644
|
const adapter = jestAdapter.default ?? jestAdapter
|
|
1617
|
-
const newAdapter = shimmer.wrapFunction(adapter, adapter => function () {
|
|
1618
|
-
const environment =
|
|
1645
|
+
const newAdapter = shimmer.wrapFunction(adapter, adapter => function (...args) {
|
|
1646
|
+
const environment = args[2]
|
|
1619
1647
|
if (!environment || !environment.testEnvironmentOptions) {
|
|
1620
|
-
return adapter.apply(this,
|
|
1648
|
+
return adapter.apply(this, args)
|
|
1621
1649
|
}
|
|
1622
1650
|
testSuiteStartCh.publish({
|
|
1623
1651
|
testSuite: environment.testSuite,
|
|
@@ -1627,7 +1655,7 @@ function jestAdapterWrapper (jestAdapter, jestVersion) {
|
|
|
1627
1655
|
frameworkVersion: jestVersion,
|
|
1628
1656
|
testSuiteAbsolutePath: environment.testSuiteAbsolutePath,
|
|
1629
1657
|
})
|
|
1630
|
-
return adapter.apply(this,
|
|
1658
|
+
return adapter.apply(this, args).then(suiteResults => {
|
|
1631
1659
|
const { numFailingTests, skipped, failureMessage: errorMessage } = suiteResults
|
|
1632
1660
|
let status = 'pass'
|
|
1633
1661
|
if (skipped) {
|
|
@@ -1691,7 +1719,7 @@ addHook({
|
|
|
1691
1719
|
addHook({
|
|
1692
1720
|
name: 'jest-circus',
|
|
1693
1721
|
file: 'build/legacy-code-todo-rewrite/jestAdapter.js',
|
|
1694
|
-
versions: [
|
|
1722
|
+
versions: [MINIMUM_JEST_VERSION],
|
|
1695
1723
|
}, jestAdapterWrapper)
|
|
1696
1724
|
|
|
1697
1725
|
function configureTestEnvironment (readConfigsResult) {
|
|
@@ -1745,8 +1773,8 @@ function jestConfigAsyncWrapper (jestConfig) {
|
|
|
1745
1773
|
}
|
|
1746
1774
|
|
|
1747
1775
|
function jestConfigSyncWrapper (jestConfig) {
|
|
1748
|
-
return shimmer.wrap(jestConfig, 'readConfigs', readConfigs => function () {
|
|
1749
|
-
const readConfigsResult = readConfigs.apply(this,
|
|
1776
|
+
return shimmer.wrap(jestConfig, 'readConfigs', readConfigs => function (...args) {
|
|
1777
|
+
const readConfigsResult = readConfigs.apply(this, args)
|
|
1750
1778
|
configureTestEnvironment(readConfigsResult)
|
|
1751
1779
|
return readConfigsResult
|
|
1752
1780
|
})
|
|
@@ -1828,7 +1856,7 @@ function wrapCreateScriptTransformer (createScriptTransformer) {
|
|
|
1828
1856
|
|
|
1829
1857
|
addHook({
|
|
1830
1858
|
name: '@jest/transform',
|
|
1831
|
-
versions: [
|
|
1859
|
+
versions: [MINIMUM_JEST_VERSION_BEFORE_30],
|
|
1832
1860
|
file: 'build/ScriptTransformer.js',
|
|
1833
1861
|
}, transformPackage => {
|
|
1834
1862
|
transformPackage.createScriptTransformer = wrapCreateScriptTransformer(transformPackage.createScriptTransformer)
|
|
@@ -1848,20 +1876,22 @@ addHook({
|
|
|
1848
1876
|
*/
|
|
1849
1877
|
addHook({
|
|
1850
1878
|
name: '@jest/core',
|
|
1851
|
-
versions: [
|
|
1879
|
+
versions: [MINIMUM_JEST_VERSION_BEFORE_30],
|
|
1852
1880
|
file: 'build/SearchSource.js',
|
|
1853
1881
|
}, searchSourceWrapper)
|
|
1854
1882
|
|
|
1855
1883
|
// from 25.1.0 on, readConfigs becomes async
|
|
1856
1884
|
addHook({
|
|
1857
1885
|
name: 'jest-config',
|
|
1858
|
-
versions: [
|
|
1886
|
+
versions: [MINIMUM_JEST_CONFIG_ASYNC_VERSION],
|
|
1859
1887
|
}, jestConfigAsyncWrapper)
|
|
1860
1888
|
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1889
|
+
if (DD_MAJOR < 6) {
|
|
1890
|
+
addHook({
|
|
1891
|
+
name: 'jest-config',
|
|
1892
|
+
versions: ['24.8.0 - 24.9.0'],
|
|
1893
|
+
}, jestConfigSyncWrapper)
|
|
1894
|
+
}
|
|
1865
1895
|
|
|
1866
1896
|
const LIBRARIES_BYPASSING_JEST_REQUIRE_ENGINE = new Set([
|
|
1867
1897
|
'selenium-webdriver',
|
|
@@ -1876,7 +1906,7 @@ const LIBRARIES_BYPASSING_JEST_REQUIRE_ENGINE = new Set([
|
|
|
1876
1906
|
|
|
1877
1907
|
addHook({
|
|
1878
1908
|
name: 'jest-runtime',
|
|
1879
|
-
versions: [
|
|
1909
|
+
versions: [MINIMUM_JEST_VERSION],
|
|
1880
1910
|
}, (runtimePackage) => {
|
|
1881
1911
|
const Runtime = runtimePackage.default ?? runtimePackage
|
|
1882
1912
|
|
|
@@ -1953,10 +1983,10 @@ addHook({
|
|
|
1953
1983
|
})
|
|
1954
1984
|
|
|
1955
1985
|
function onMessageWrapper (onMessage) {
|
|
1956
|
-
return function () {
|
|
1957
|
-
const response =
|
|
1986
|
+
return function (...args) {
|
|
1987
|
+
const response = args[0]
|
|
1958
1988
|
if (!Array.isArray(response)) {
|
|
1959
|
-
return onMessage.apply(this,
|
|
1989
|
+
return onMessage.apply(this, args)
|
|
1960
1990
|
}
|
|
1961
1991
|
|
|
1962
1992
|
const [code, data] = response
|
|
@@ -1983,7 +2013,7 @@ function onMessageWrapper (onMessage) {
|
|
|
1983
2013
|
}
|
|
1984
2014
|
return
|
|
1985
2015
|
}
|
|
1986
|
-
return onMessage.apply(this,
|
|
2016
|
+
return onMessage.apply(this, args)
|
|
1987
2017
|
}
|
|
1988
2018
|
}
|
|
1989
2019
|
|
|
@@ -2047,8 +2077,8 @@ function wrapWorker (worker) {
|
|
|
2047
2077
|
}
|
|
2048
2078
|
|
|
2049
2079
|
function enqueueWrapper (enqueue) {
|
|
2050
|
-
return function () {
|
|
2051
|
-
shimmer.wrap(
|
|
2080
|
+
return function (...args) {
|
|
2081
|
+
shimmer.wrap(args[0], 'onStart', onStart => function (worker) {
|
|
2052
2082
|
if (worker) {
|
|
2053
2083
|
const currentChannel = worker._child || worker._worker
|
|
2054
2084
|
const previousChannel = wrappedWorkerChannels.get(worker)
|
|
@@ -2065,7 +2095,7 @@ function enqueueWrapper (enqueue) {
|
|
|
2065
2095
|
}
|
|
2066
2096
|
return onStart.apply(this, arguments)
|
|
2067
2097
|
})
|
|
2068
|
-
return enqueue.apply(this,
|
|
2098
|
+
return enqueue.apply(this, args)
|
|
2069
2099
|
}
|
|
2070
2100
|
}
|
|
2071
2101
|
|
|
@@ -2077,7 +2107,7 @@ function enqueueWrapper (enqueue) {
|
|
|
2077
2107
|
*/
|
|
2078
2108
|
addHook({
|
|
2079
2109
|
name: 'jest-worker',
|
|
2080
|
-
versions: [
|
|
2110
|
+
versions: [MINIMUM_JEST_WORKER_VERSION_BEFORE_30],
|
|
2081
2111
|
file: 'build/workers/ChildProcessWorker.js',
|
|
2082
2112
|
}, (childProcessWorker) => {
|
|
2083
2113
|
const ChildProcessWorker = childProcessWorker.default
|
|
@@ -2092,7 +2122,7 @@ addHook({
|
|
|
2092
2122
|
|
|
2093
2123
|
addHook({
|
|
2094
2124
|
name: 'jest-worker',
|
|
2095
|
-
versions: [
|
|
2125
|
+
versions: [MINIMUM_JEST_WORKER_VERSION_BEFORE_30],
|
|
2096
2126
|
file: 'build/workers/NodeThreadsWorker.js',
|
|
2097
2127
|
}, (nodeThreadsWorker) => {
|
|
2098
2128
|
const ExperimentalWorker = nodeThreadsWorker.default
|
|
@@ -34,16 +34,16 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
shimmer.wrap(Kafka.prototype, 'producer', createProducer => function () {
|
|
38
|
-
const producer = createProducer.apply(this,
|
|
37
|
+
shimmer.wrap(Kafka.prototype, 'producer', createProducer => function (...args) {
|
|
38
|
+
const producer = createProducer.apply(this, args)
|
|
39
39
|
const send = producer.send
|
|
40
40
|
const bootstrapServers = this._brokers
|
|
41
41
|
|
|
42
42
|
const kafkaClusterIdPromise = getKafkaClusterId(this)
|
|
43
43
|
|
|
44
|
-
producer.send = function () {
|
|
44
|
+
producer.send = function (...args) {
|
|
45
45
|
const wrappedSend = (clusterId) => {
|
|
46
|
-
const { topic, messages = [] } =
|
|
46
|
+
const { topic, messages = [] } = args[0]
|
|
47
47
|
|
|
48
48
|
const ctx = {
|
|
49
49
|
bootstrapServers,
|
|
@@ -61,7 +61,7 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
|
|
|
61
61
|
|
|
62
62
|
return producerStartCh.runStores(ctx, () => {
|
|
63
63
|
try {
|
|
64
|
-
const result = send.apply(this,
|
|
64
|
+
const result = send.apply(this, args)
|
|
65
65
|
result.then(
|
|
66
66
|
(res) => {
|
|
67
67
|
ctx.result = res
|
|
@@ -110,9 +110,9 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
|
|
|
110
110
|
return producer
|
|
111
111
|
})
|
|
112
112
|
|
|
113
|
-
shimmer.wrap(Kafka.prototype, 'consumer', createConsumer => function () {
|
|
113
|
+
shimmer.wrap(Kafka.prototype, 'consumer', createConsumer => function (...args) {
|
|
114
114
|
if (!consumerStartCh.hasSubscribers) {
|
|
115
|
-
return createConsumer.apply(this,
|
|
115
|
+
return createConsumer.apply(this, args)
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
const kafkaClusterIdPromise = getKafkaClusterId(this)
|
|
@@ -129,7 +129,7 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
|
|
|
129
129
|
return { topic, partition, messages, groupId, clusterId }
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
const consumer = createConsumer.apply(this,
|
|
132
|
+
const consumer = createConsumer.apply(this, args)
|
|
133
133
|
|
|
134
134
|
consumer.on(consumer.events.COMMIT_OFFSETS, (event) => {
|
|
135
135
|
const { payload: { groupId: commitGroupId, topics } } = event
|
|
@@ -149,7 +149,7 @@ addHook({ name: 'kafkajs', file: 'src/index.js', versions: ['>=1.4'] }, (BaseKaf
|
|
|
149
149
|
})
|
|
150
150
|
|
|
151
151
|
const run = consumer.run
|
|
152
|
-
const groupId =
|
|
152
|
+
const groupId = args[0].groupId
|
|
153
153
|
|
|
154
154
|
consumer.run = function ({ eachMessage, eachBatch, ...runArgs }) {
|
|
155
155
|
const wrapConsume = (clusterId) => {
|