@@ -29,16 +29,32 @@ const debugFlags = new Set(['debug', 'debug-brk', 'inspect', 'inspect-brk']);
2929 * - `--v8-*` (but *not* `--v8-options`)
3030 * @summary Whether or not to pass a flag along to the `node` executable.
3131 * @param {string } flag - Flag to test
32- * @returns {boolean }
32+ * @param {boolean } [bareword=true] - If `false`, we expect `flag` to have one or two leading dashes.
33+ * @returns {boolean } If the flag is considered a "Node" flag.
3334 * @private
3435 */
35- exports . isNodeFlag = flag =>
36- ! / ^ (?: r e q u i r e | r ) $ / . test ( flag ) &&
37- ( nodeFlags . has ( flag ) ||
38- debugFlags . has ( flag ) ||
39- / (?: p r e s e r v e - s y m l i n k s (?: - m a i n ) ? | h a r m o n y (?: [ _ - ] | $ ) | (?: t r a c e [ _ - ] .+ $ ) | g c (?: [ _ - ] g l o b a l ) ? $ | e s [ _ - ] s t a g i n g $ | u s e [ _ - ] s t r i c t $ | v 8 [ _ - ] (? ! o p t i o n s ) .+ ?$ ) / . test (
40- flag
41- ) ) ;
36+ exports . isNodeFlag = ( flag , bareword = true ) => {
37+ if ( ! bareword ) {
38+ // check if the flag begins with dashes; if not, not a node flag.
39+ if ( ! / ^ - - ? / . test ( flag ) ) {
40+ return false ;
41+ }
42+ // strip the leading dashes to match against subsequent checks
43+ flag = flag . replace ( / ^ - - ? / , '' ) ;
44+ }
45+ return (
46+ // treat --require/-r as Mocha flag even though it's also a node flag
47+ ! ( flag === 'require' || flag === 'r' ) &&
48+ // check actual node flags from `process.allowedNodeEnvironmentFlags`,
49+ // then historical support for various V8 and non-`NODE_OPTIONS` flags
50+ // and also any V8 flags with `--v8-` prefix
51+ ( nodeFlags . has ( flag ) ||
52+ debugFlags . has ( flag ) ||
53+ / (?: p r e s e r v e - s y m l i n k s (?: - m a i n ) ? | h a r m o n y (?: [ _ - ] | $ ) | (?: t r a c e [ _ - ] .+ $ ) | g c (?: [ _ - ] g l o b a l ) ? $ | e s [ _ - ] s t a g i n g $ | u s e [ _ - ] s t r i c t $ | v 8 [ _ - ] (? ! o p t i o n s ) .+ ?$ ) / . test (
54+ flag
55+ ) )
56+ ) ;
57+ } ;
4258
4359/**
4460 * Returns `true` if the flag is a "debug-like" flag. These require timeouts
0 commit comments