@@ -19,9 +19,11 @@ let config
19
19
const hardcodedSecretCh = dc . channel ( 'datadog:secrets:result' )
20
20
let rewriter
21
21
let unwrapCompile = ( ) => { }
22
- let getPrepareStackTrace , cacheRewrittenSourceMap
22
+ let getPrepareStackTrace
23
+ let cacheRewrittenSourceMap
23
24
let kSymbolPrepareStackTrace
24
- let esmRewriterEnabled = false
25
+
26
+ function noop ( ) { }
25
27
26
28
function isFlagPresent ( flag ) {
27
29
return process . env . NODE_OPTIONS ?. includes ( flag ) ||
@@ -155,7 +157,7 @@ function shimPrepareStackTrace () {
155
157
return
156
158
}
157
159
const pstDescriptor = Object . getOwnPropertyDescriptor ( global . Error , 'prepareStackTrace' )
158
- if ( ! pstDescriptor || pstDescriptor . configurable ) {
160
+ if ( pstDescriptor ?. configurable || pstDescriptor ?. writable ) {
159
161
Object . defineProperty ( global . Error , 'prepareStackTrace' , getPrepareStackTraceAccessor ( ) )
160
162
}
161
163
shimmedPrepareStackTrace = true
@@ -181,16 +183,17 @@ function isEsmConfigured () {
181
183
const hasLoaderArg = isFlagPresent ( '--loader' ) || isFlagPresent ( '--experimental-loader' )
182
184
if ( hasLoaderArg ) return true
183
185
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' ) )
186
191
}
187
192
188
- function enableEsmRewriter ( telemetryVerbosity ) {
189
- if ( isMainThread && Module . register && ! esmRewriterEnabled && isEsmConfigured ( ) ) {
193
+ let enableEsmRewriter = function ( telemetryVerbosity ) {
194
+ if ( isMainThread && Module . register && isEsmConfigured ( ) ) {
190
195
shimPrepareStackTrace ( )
191
196
192
- esmRewriterEnabled = true
193
-
194
197
const { port1, port2 } = new MessageChannel ( )
195
198
196
199
port1 . on ( 'message' , ( message ) => {
@@ -229,6 +232,8 @@ function enableEsmRewriter (telemetryVerbosity) {
229
232
}
230
233
231
234
cacheRewrittenSourceMap = require ( '@datadog/wasm-js-rewriter/js/source-map' ) . cacheRewrittenSourceMap
235
+
236
+ enableEsmRewriter = noop
232
237
}
233
238
}
234
239
0 commit comments