@@ -35,6 +35,7 @@ const {
35
35
SafeSet,
36
36
SafeWeakMap,
37
37
SafeWeakRef,
38
+ StringPrototypeIncludes,
38
39
StringPrototypeReplace,
39
40
StringPrototypeToLowerCase,
40
41
StringPrototypeToUpperCase,
@@ -476,7 +477,7 @@ function spliceOne(list, index) {
476
477
list . pop ( ) ;
477
478
}
478
479
479
- const kNodeModulesRE = / ^ ( .* ) [ \\ / ] n o d e _ m o d u l e s [ \\ / ] / ;
480
+ const kNodeModulesRE = / ^ (?: .* ) [ \\ / ] n o d e _ m o d u l e s [ \\ / ] / ;
480
481
481
482
let getStructuredStack ;
482
483
@@ -488,13 +489,13 @@ function isInsideNodeModules() {
488
489
// side-effect-free. Since this is currently only used for a deprecated API,
489
490
// the perf implications should be okay.
490
491
getStructuredStack = runInNewContext ( `(function() {
491
- try { Error.stackTraceLimit = Infinity; } catch {}
492
- return function structuredStack() {
493
- const e = new Error();
494
- overrideStackTrace.set(e, (err, trace) => trace);
495
- return e.stack;
496
- };
497
- })()` , { overrideStackTrace } , { filename : 'structured-stack' } ) ;
492
+ try { Error.stackTraceLimit = Infinity; } catch {}
493
+ return function structuredStack() {
494
+ const e = new Error();
495
+ overrideStackTrace.set(e, (err, trace) => trace);
496
+ return e.stack;
497
+ };
498
+ })()` , { overrideStackTrace } , { filename : 'structured-stack' } ) ;
498
499
}
499
500
500
501
const stack = getStructuredStack ( ) ;
@@ -506,8 +507,10 @@ function isInsideNodeModules() {
506
507
const filename = frame . getFileName ( ) ;
507
508
// If a filename does not start with / or contain \,
508
509
// it's likely from Node.js core.
509
- if ( RegExpPrototypeExec ( / ^ \/ | \\ / , filename ) === null )
510
+ if (
511
+ filename [ 0 ] !== '/' || ! StringPrototypeIncludes ( filename , '\\' ) ) {
510
512
continue ;
513
+ }
511
514
return RegExpPrototypeExec ( kNodeModulesRE , filename ) !== null ;
512
515
}
513
516
}
0 commit comments