Skip to content

Commit 571b06e

Browse files
BridgeARbengl
authored andcommitted
Add minimal fast path for esm being enabled (#5601)
The main change is to check for the top level presence of import- in-the-middle. That way there is no need for extra checks.
1 parent 855d139 commit 571b06e

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

packages/datadog-plugin-langchain/src/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
const langChainTracingPlugins = require('./tracing')
44
const langChainLLMObsPlugins = require('../../dd-trace/src/llmobs/plugins/langchain')
5-
// const LangChainLLMObsPlugin = require('../../dd-trace/src/llmobs/plugins/langchain')
65
const CompositePlugin = require('../../dd-trace/src/plugins/composite')
76

87
const plugins = {}

packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ let config
1919
const hardcodedSecretCh = dc.channel('datadog:secrets:result')
2020
let rewriter
2121
let unwrapCompile = () => {}
22-
let getPrepareStackTrace, cacheRewrittenSourceMap
22+
let getPrepareStackTrace
23+
let cacheRewrittenSourceMap
2324
let kSymbolPrepareStackTrace
24-
let esmRewriterEnabled = false
25+
26+
function noop () {}
2527

2628
function isFlagPresent (flag) {
2729
return process.env.NODE_OPTIONS?.includes(flag) ||
@@ -155,7 +157,7 @@ function shimPrepareStackTrace () {
155157
return
156158
}
157159
const pstDescriptor = Object.getOwnPropertyDescriptor(global.Error, 'prepareStackTrace')
158-
if (!pstDescriptor || pstDescriptor.configurable) {
160+
if (pstDescriptor?.configurable || pstDescriptor?.writable) {
159161
Object.defineProperty(global.Error, 'prepareStackTrace', getPrepareStackTraceAccessor())
160162
}
161163
shimmedPrepareStackTrace = true
@@ -181,16 +183,17 @@ function isEsmConfigured () {
181183
const hasLoaderArg = isFlagPresent('--loader') || isFlagPresent('--experimental-loader')
182184
if (hasLoaderArg) return true
183185

184-
const initializeLoaded = Object.keys(require.cache).find(file => file.includes('import-in-the-middle/hook.js'))
185-
return !!initializeLoaded
186+
// Fast path for common case when enabled
187+
if (require.cache[`${process.cwd()}/node_modules/import-in-the-middle/hook.js`]) {
188+
return true
189+
}
190+
return Object.keys(require.cache).some(file => file.endsWith('import-in-the-middle/hook.js'))
186191
}
187192

188-
function enableEsmRewriter (telemetryVerbosity) {
189-
if (isMainThread && Module.register && !esmRewriterEnabled && isEsmConfigured()) {
193+
let enableEsmRewriter = function (telemetryVerbosity) {
194+
if (isMainThread && Module.register && isEsmConfigured()) {
190195
shimPrepareStackTrace()
191196

192-
esmRewriterEnabled = true
193-
194197
const { port1, port2 } = new MessageChannel()
195198

196199
port1.on('message', (message) => {
@@ -229,6 +232,8 @@ function enableEsmRewriter (telemetryVerbosity) {
229232
}
230233

231234
cacheRewrittenSourceMap = require('@datadog/wasm-js-rewriter/js/source-map').cacheRewrittenSourceMap
235+
236+
enableEsmRewriter = noop
232237
}
233238
}
234239

0 commit comments

Comments
 (0)