dd-trace 4.45.0 → 4.47.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/LICENSE-3rdparty.csv +2 -0
- package/index.d.ts +20 -8
- package/package.json +11 -5
- package/packages/datadog-instrumentations/src/aerospike.js +1 -1
- package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
- package/packages/datadog-instrumentations/src/aws-sdk.js +4 -4
- package/packages/datadog-instrumentations/src/body-parser.js +4 -4
- package/packages/datadog-instrumentations/src/cassandra-driver.js +2 -2
- package/packages/datadog-instrumentations/src/child_process.js +2 -2
- package/packages/datadog-instrumentations/src/connect.js +4 -4
- package/packages/datadog-instrumentations/src/cookie-parser.js +4 -4
- package/packages/datadog-instrumentations/src/couchbase.js +12 -12
- package/packages/datadog-instrumentations/src/cucumber.js +294 -56
- package/packages/datadog-instrumentations/src/dns.js +10 -10
- package/packages/datadog-instrumentations/src/elasticsearch.js +4 -4
- package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +3 -3
- package/packages/datadog-instrumentations/src/express.js +4 -4
- package/packages/datadog-instrumentations/src/fastify.js +6 -6
- package/packages/datadog-instrumentations/src/fetch.js +1 -1
- package/packages/datadog-instrumentations/src/find-my-way.js +2 -2
- package/packages/datadog-instrumentations/src/fs.js +2 -2
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +2 -2
- package/packages/datadog-instrumentations/src/grpc/client.js +4 -6
- package/packages/datadog-instrumentations/src/grpc/server.js +2 -2
- package/packages/datadog-instrumentations/src/hapi.js +10 -13
- package/packages/datadog-instrumentations/src/helpers/register.js +1 -1
- package/packages/datadog-instrumentations/src/http/client.js +3 -3
- package/packages/datadog-instrumentations/src/jest.js +8 -5
- package/packages/datadog-instrumentations/src/kafkajs.js +67 -31
- package/packages/datadog-instrumentations/src/knex.js +2 -2
- package/packages/datadog-instrumentations/src/koa.js +5 -5
- package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
- package/packages/datadog-instrumentations/src/mariadb.js +8 -8
- package/packages/datadog-instrumentations/src/memcached.js +2 -2
- package/packages/datadog-instrumentations/src/microgateway-core.js +7 -5
- package/packages/datadog-instrumentations/src/mocha/common.js +1 -1
- package/packages/datadog-instrumentations/src/mocha/main.js +139 -53
- package/packages/datadog-instrumentations/src/mocha/utils.js +37 -18
- package/packages/datadog-instrumentations/src/mocha/worker.js +29 -1
- package/packages/datadog-instrumentations/src/mocha.js +4 -0
- package/packages/datadog-instrumentations/src/moleculer/server.js +2 -2
- package/packages/datadog-instrumentations/src/mongodb-core.js +7 -7
- package/packages/datadog-instrumentations/src/mongoose.js +5 -6
- package/packages/datadog-instrumentations/src/mysql.js +3 -3
- package/packages/datadog-instrumentations/src/mysql2.js +6 -6
- package/packages/datadog-instrumentations/src/net.js +2 -2
- package/packages/datadog-instrumentations/src/next.js +5 -5
- package/packages/datadog-instrumentations/src/openai.js +62 -71
- package/packages/datadog-instrumentations/src/oracledb.js +8 -8
- package/packages/datadog-instrumentations/src/passport-http.js +1 -1
- package/packages/datadog-instrumentations/src/passport-local.js +1 -1
- package/packages/datadog-instrumentations/src/passport-utils.js +1 -1
- package/packages/datadog-instrumentations/src/pg.js +60 -5
- package/packages/datadog-instrumentations/src/pino.js +4 -4
- package/packages/datadog-instrumentations/src/playwright.js +6 -4
- package/packages/datadog-instrumentations/src/redis.js +2 -2
- package/packages/datadog-instrumentations/src/restify.js +4 -4
- package/packages/datadog-instrumentations/src/rhea.js +4 -4
- package/packages/datadog-instrumentations/src/router.js +5 -5
- package/packages/datadog-instrumentations/src/sharedb.js +2 -2
- package/packages/datadog-instrumentations/src/vitest.js +188 -12
- package/packages/datadog-instrumentations/src/winston.js +2 -3
- package/packages/datadog-plugin-amqplib/src/consumer.js +1 -3
- package/packages/datadog-plugin-aws-sdk/src/base.js +33 -0
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -0
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +1 -1
- package/packages/datadog-plugin-cucumber/src/index.js +24 -1
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +39 -10
- package/packages/datadog-plugin-cypress/src/support.js +4 -1
- package/packages/datadog-plugin-hapi/src/index.js +2 -2
- package/packages/datadog-plugin-http/src/client.js +1 -42
- package/packages/datadog-plugin-http2/src/client.js +1 -26
- package/packages/datadog-plugin-jest/src/index.js +18 -1
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +20 -0
- package/packages/datadog-plugin-kafkajs/src/consumer.js +1 -2
- package/packages/datadog-plugin-kafkajs/src/index.js +3 -1
- package/packages/datadog-plugin-mocha/src/index.js +18 -0
- package/packages/datadog-plugin-openai/src/index.js +85 -65
- package/packages/datadog-plugin-playwright/src/index.js +9 -0
- package/packages/datadog-plugin-rhea/src/consumer.js +1 -3
- package/packages/datadog-plugin-vitest/src/index.js +68 -3
- package/packages/datadog-shimmer/src/shimmer.js +144 -10
- package/packages/dd-trace/src/appsec/addresses.js +3 -1
- package/packages/dd-trace/src/appsec/blocking.js +23 -17
- package/packages/dd-trace/src/appsec/channels.js +4 -2
- package/packages/dd-trace/src/appsec/graphql.js +3 -1
- package/packages/dd-trace/src/appsec/iast/iast-log.js +2 -1
- package/packages/dd-trace/src/appsec/rasp/index.js +103 -0
- package/packages/dd-trace/src/appsec/rasp/sql_injection.js +86 -0
- package/packages/dd-trace/src/appsec/rasp/ssrf.js +37 -0
- package/packages/dd-trace/src/appsec/rasp/utils.js +63 -0
- package/packages/dd-trace/src/appsec/remote_config/capabilities.js +2 -0
- package/packages/dd-trace/src/appsec/remote_config/index.js +16 -7
- package/packages/dd-trace/src/appsec/remote_config/manager.js +93 -52
- package/packages/dd-trace/src/appsec/rule_manager.js +8 -0
- package/packages/dd-trace/src/appsec/telemetry.js +3 -3
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +33 -14
- package/packages/dd-trace/src/appsec/waf/waf_manager.js +2 -1
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +4 -0
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +15 -1
- package/packages/dd-trace/src/config.js +100 -40
- package/packages/dd-trace/src/constants.js +11 -1
- package/packages/dd-trace/src/data_streams_context.js +3 -0
- package/packages/dd-trace/src/datastreams/fnv.js +23 -0
- package/packages/dd-trace/src/datastreams/pathway.js +12 -5
- package/packages/dd-trace/src/datastreams/processor.js +35 -0
- package/packages/dd-trace/src/datastreams/schemas/schema.js +8 -0
- package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +125 -0
- package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +29 -0
- package/packages/dd-trace/src/debugger/devtools_client/config.js +24 -0
- package/packages/dd-trace/src/debugger/devtools_client/index.js +57 -0
- package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +23 -0
- package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +164 -0
- package/packages/dd-trace/src/debugger/devtools_client/send.js +28 -0
- package/packages/dd-trace/src/debugger/devtools_client/session.js +7 -0
- package/packages/dd-trace/src/debugger/devtools_client/state.js +47 -0
- package/packages/dd-trace/src/debugger/devtools_client/status.js +109 -0
- package/packages/dd-trace/src/debugger/index.js +92 -0
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +29 -2
- package/packages/dd-trace/src/exporters/common/request.js +1 -1
- package/packages/dd-trace/src/lambda/handler.js +1 -0
- package/packages/dd-trace/src/lambda/index.js +12 -1
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +1 -6
- package/packages/dd-trace/src/payload-tagging/config/aws.json +30 -0
- package/packages/dd-trace/src/payload-tagging/config/index.js +30 -0
- package/packages/dd-trace/src/payload-tagging/index.js +93 -0
- package/packages/dd-trace/src/payload-tagging/tagging.js +83 -0
- package/packages/dd-trace/src/plugin_manager.js +11 -10
- package/packages/dd-trace/src/plugins/ci_plugin.js +33 -8
- package/packages/dd-trace/src/plugins/util/env.js +5 -2
- package/packages/dd-trace/src/plugins/util/test.js +24 -4
- package/packages/dd-trace/src/profiler.js +15 -5
- package/packages/dd-trace/src/profiling/config.js +7 -4
- package/packages/dd-trace/src/profiling/exporter_cli.js +13 -1
- package/packages/dd-trace/src/profiling/exporters/agent.js +8 -2
- package/packages/dd-trace/src/profiling/profiler.js +0 -9
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns.js +13 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookup.js +16 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_lookupservice.js +16 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_resolve.js +24 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/dns_reverse.js +16 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +48 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/net.js +24 -0
- package/packages/dd-trace/src/profiling/profilers/events.js +108 -32
- package/packages/dd-trace/src/profiling/profilers/shared.js +5 -0
- package/packages/dd-trace/src/profiling/profilers/wall.js +9 -3
- package/packages/dd-trace/src/profiling/ssi-heuristics.js +59 -60
- package/packages/dd-trace/src/proxy.js +31 -24
- package/packages/dd-trace/src/span_stats.js +4 -2
- package/packages/dd-trace/src/telemetry/index.js +23 -6
- package/packages/dd-trace/src/telemetry/logs/index.js +20 -0
- package/packages/dd-trace/src/appsec/rasp.js +0 -176
|
@@ -89,7 +89,7 @@ function getProducts (config) {
|
|
|
89
89
|
},
|
|
90
90
|
profiler: {
|
|
91
91
|
version: tracerVersion,
|
|
92
|
-
enabled: config.profiling.enabled
|
|
92
|
+
enabled: profilingEnabledToBoolean(config.profiling.enabled)
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
if (errors.profilingError) {
|
|
@@ -329,13 +329,17 @@ function updateConfig (changes, config) {
|
|
|
329
329
|
const { origin, value } = change
|
|
330
330
|
const entry = { name, value, origin }
|
|
331
331
|
|
|
332
|
-
if (namesNeedFormatting.has(entry.name))
|
|
333
|
-
|
|
334
|
-
if (entry.name === '
|
|
332
|
+
if (namesNeedFormatting.has(entry.name)) {
|
|
333
|
+
entry.value = formatMapForTelemetry(entry.value)
|
|
334
|
+
} else if (entry.name === 'url') {
|
|
335
|
+
if (entry.value) {
|
|
336
|
+
entry.value = entry.value.toString()
|
|
337
|
+
}
|
|
338
|
+
} else if (entry.name === 'DD_TRACE_SAMPLING_RULES') {
|
|
335
339
|
entry.value = JSON.stringify(entry.value)
|
|
340
|
+
} else if (Array.isArray(entry.value)) {
|
|
341
|
+
entry.value = value.join(',')
|
|
336
342
|
}
|
|
337
|
-
if (Array.isArray(entry.value)) entry.value = value.join(',')
|
|
338
|
-
|
|
339
343
|
configuration.push(entry)
|
|
340
344
|
}
|
|
341
345
|
|
|
@@ -354,6 +358,19 @@ function updateConfig (changes, config) {
|
|
|
354
358
|
}
|
|
355
359
|
}
|
|
356
360
|
|
|
361
|
+
function profilingEnabledToBoolean (profilingEnabled) {
|
|
362
|
+
if (typeof profilingEnabled === 'boolean') {
|
|
363
|
+
return profilingEnabled
|
|
364
|
+
}
|
|
365
|
+
if (['auto', 'true'].includes(profilingEnabled)) {
|
|
366
|
+
return true
|
|
367
|
+
}
|
|
368
|
+
if (profilingEnabled === 'false') {
|
|
369
|
+
return false
|
|
370
|
+
}
|
|
371
|
+
return undefined
|
|
372
|
+
}
|
|
373
|
+
|
|
357
374
|
module.exports = {
|
|
358
375
|
start,
|
|
359
376
|
stop,
|
|
@@ -5,6 +5,7 @@ const logCollector = require('./log-collector')
|
|
|
5
5
|
const { sendData } = require('../send-data')
|
|
6
6
|
|
|
7
7
|
const telemetryLog = dc.channel('datadog:telemetry:log')
|
|
8
|
+
const errorLog = dc.channel('datadog:log:error')
|
|
8
9
|
|
|
9
10
|
let enabled = false
|
|
10
11
|
|
|
@@ -33,12 +34,29 @@ function onLog (log) {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
|
|
37
|
+
function onErrorLog (msg) {
|
|
38
|
+
if (msg instanceof Error) {
|
|
39
|
+
onLog({
|
|
40
|
+
level: 'ERROR',
|
|
41
|
+
message: msg.message,
|
|
42
|
+
stack_trace: msg.stack
|
|
43
|
+
})
|
|
44
|
+
} else if (typeof msg === 'string') {
|
|
45
|
+
onLog({
|
|
46
|
+
level: 'ERROR',
|
|
47
|
+
message: msg
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
36
52
|
function start (config) {
|
|
37
53
|
if (!config.telemetry.logCollection || enabled) return
|
|
38
54
|
|
|
39
55
|
enabled = true
|
|
40
56
|
|
|
41
57
|
telemetryLog.subscribe(onLog)
|
|
58
|
+
|
|
59
|
+
errorLog.subscribe(onErrorLog)
|
|
42
60
|
}
|
|
43
61
|
|
|
44
62
|
function stop () {
|
|
@@ -47,6 +65,8 @@ function stop () {
|
|
|
47
65
|
if (telemetryLog.hasSubscribers) {
|
|
48
66
|
telemetryLog.unsubscribe(onLog)
|
|
49
67
|
}
|
|
68
|
+
|
|
69
|
+
errorLog.unsubscribe(onErrorLog)
|
|
50
70
|
}
|
|
51
71
|
|
|
52
72
|
function send (config, application, host) {
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { storage } = require('../../../datadog-core')
|
|
4
|
-
const web = require('./../plugins/util/web')
|
|
5
|
-
const addresses = require('./addresses')
|
|
6
|
-
const { httpClientRequestStart, setUncaughtExceptionCaptureCallbackStart } = require('./channels')
|
|
7
|
-
const { reportStackTrace } = require('./stack_trace')
|
|
8
|
-
const waf = require('./waf')
|
|
9
|
-
const { getBlockingAction, block } = require('./blocking')
|
|
10
|
-
const log = require('../log')
|
|
11
|
-
|
|
12
|
-
const RULE_TYPES = {
|
|
13
|
-
SSRF: 'ssrf'
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
class DatadogRaspAbortError extends Error {
|
|
17
|
-
constructor (req, res, blockingAction) {
|
|
18
|
-
super('DatadogRaspAbortError')
|
|
19
|
-
this.name = 'DatadogRaspAbortError'
|
|
20
|
-
this.req = req
|
|
21
|
-
this.res = res
|
|
22
|
-
this.blockingAction = blockingAction
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
let config, abortOnUncaughtException
|
|
27
|
-
|
|
28
|
-
function removeAllListeners (emitter, event) {
|
|
29
|
-
const listeners = emitter.listeners(event)
|
|
30
|
-
emitter.removeAllListeners(event)
|
|
31
|
-
|
|
32
|
-
let cleaned = false
|
|
33
|
-
return function () {
|
|
34
|
-
if (cleaned === true) {
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
cleaned = true
|
|
38
|
-
|
|
39
|
-
for (let i = 0; i < listeners.length; ++i) {
|
|
40
|
-
emitter.on(event, listeners[i])
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function findDatadogRaspAbortError (err, deep = 10) {
|
|
46
|
-
if (err instanceof DatadogRaspAbortError) {
|
|
47
|
-
return err
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (err.cause && deep > 0) {
|
|
51
|
-
return findDatadogRaspAbortError(err.cause, deep - 1)
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function handleUncaughtExceptionMonitor (err) {
|
|
56
|
-
const abortError = findDatadogRaspAbortError(err)
|
|
57
|
-
if (!abortError) return
|
|
58
|
-
|
|
59
|
-
const { req, res, blockingAction } = abortError
|
|
60
|
-
block(req, res, web.root(req), null, blockingAction)
|
|
61
|
-
|
|
62
|
-
if (!process.hasUncaughtExceptionCaptureCallback()) {
|
|
63
|
-
const cleanUp = removeAllListeners(process, 'uncaughtException')
|
|
64
|
-
const handler = () => {
|
|
65
|
-
process.removeListener('uncaughtException', handler)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
setTimeout(() => {
|
|
69
|
-
process.removeListener('uncaughtException', handler)
|
|
70
|
-
cleanUp()
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
process.on('uncaughtException', handler)
|
|
74
|
-
} else {
|
|
75
|
-
// uncaughtException event is not executed when hasUncaughtExceptionCaptureCallback is true
|
|
76
|
-
let previousCb
|
|
77
|
-
const cb = ({ currentCallback, abortController }) => {
|
|
78
|
-
setUncaughtExceptionCaptureCallbackStart.unsubscribe(cb)
|
|
79
|
-
if (!currentCallback) {
|
|
80
|
-
abortController.abort()
|
|
81
|
-
return
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
previousCb = currentCallback
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
setUncaughtExceptionCaptureCallbackStart.subscribe(cb)
|
|
88
|
-
|
|
89
|
-
process.setUncaughtExceptionCaptureCallback(null)
|
|
90
|
-
|
|
91
|
-
// For some reason, previous callback was defined before the instrumentation
|
|
92
|
-
// We can not restore it, so we let the app decide
|
|
93
|
-
if (previousCb) {
|
|
94
|
-
process.setUncaughtExceptionCaptureCallback(() => {
|
|
95
|
-
process.setUncaughtExceptionCaptureCallback(null)
|
|
96
|
-
process.setUncaughtExceptionCaptureCallback(previousCb)
|
|
97
|
-
})
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function enable (_config) {
|
|
103
|
-
config = _config
|
|
104
|
-
httpClientRequestStart.subscribe(analyzeSsrf)
|
|
105
|
-
|
|
106
|
-
process.on('uncaughtExceptionMonitor', handleUncaughtExceptionMonitor)
|
|
107
|
-
abortOnUncaughtException = process.execArgv?.includes('--abort-on-uncaught-exception')
|
|
108
|
-
|
|
109
|
-
if (abortOnUncaughtException) {
|
|
110
|
-
log.warn('The --abort-on-uncaught-exception flag is enabled. The RASP module will not block operations.')
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function disable () {
|
|
115
|
-
if (httpClientRequestStart.hasSubscribers) httpClientRequestStart.unsubscribe(analyzeSsrf)
|
|
116
|
-
|
|
117
|
-
process.off('uncaughtExceptionMonitor', handleUncaughtExceptionMonitor)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function analyzeSsrf (ctx) {
|
|
121
|
-
const store = storage.getStore()
|
|
122
|
-
const req = store?.req
|
|
123
|
-
const url = ctx.args.uri
|
|
124
|
-
|
|
125
|
-
if (!req || !url) return
|
|
126
|
-
|
|
127
|
-
const persistent = {
|
|
128
|
-
[addresses.HTTP_OUTGOING_URL]: url
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const result = waf.run({ persistent }, req, RULE_TYPES.SSRF)
|
|
132
|
-
|
|
133
|
-
const res = store?.res
|
|
134
|
-
handleResult(result, req, res, ctx.abortController)
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function getGenerateStackTraceAction (actions) {
|
|
138
|
-
return actions?.generate_stack
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function handleResult (actions, req, res, abortController) {
|
|
142
|
-
const generateStackTraceAction = getGenerateStackTraceAction(actions)
|
|
143
|
-
if (generateStackTraceAction && config.appsec.stackTrace.enabled) {
|
|
144
|
-
const rootSpan = web.root(req)
|
|
145
|
-
reportStackTrace(
|
|
146
|
-
rootSpan,
|
|
147
|
-
generateStackTraceAction.stack_id,
|
|
148
|
-
config.appsec.stackTrace.maxDepth,
|
|
149
|
-
config.appsec.stackTrace.maxStackTraces
|
|
150
|
-
)
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (!abortController || abortOnUncaughtException) return
|
|
154
|
-
|
|
155
|
-
const blockingAction = getBlockingAction(actions)
|
|
156
|
-
if (blockingAction) {
|
|
157
|
-
const rootSpan = web.root(req)
|
|
158
|
-
// Should block only in express
|
|
159
|
-
if (rootSpan?.context()._name === 'express.request') {
|
|
160
|
-
const abortError = new DatadogRaspAbortError(req, res, blockingAction)
|
|
161
|
-
abortController.abort(abortError)
|
|
162
|
-
|
|
163
|
-
// TODO Delete this when support for node 16 is removed
|
|
164
|
-
if (!abortController.signal.reason) {
|
|
165
|
-
abortController.signal.reason = abortError
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
module.exports = {
|
|
172
|
-
enable,
|
|
173
|
-
disable,
|
|
174
|
-
handleResult,
|
|
175
|
-
handleUncaughtExceptionMonitor // exported only for testing purpose
|
|
176
|
-
}
|