@@ -34,7 +34,6 @@ const {
3434  ArrayPrototypeSplice, 
3535  ArrayPrototypeUnshift, 
3636  ArrayPrototypeUnshiftApply, 
37-   ArrayPrototypeFlatMap, 
3837  Boolean, 
3938  Error, 
4039  JSONParse, 
@@ -51,7 +50,6 @@ const {
5150  ReflectSet, 
5251  RegExpPrototypeExec, 
5352  SafeMap, 
54-   SafeSet, 
5553  SafeWeakMap, 
5654  String, 
5755  StringPrototypeCharAt, 
@@ -81,7 +79,7 @@ const {
8179}  =  require ( 'internal/source_map/source_map_cache' ) ; 
8280const  {  pathToFileURL,  fileURLToPath,  isURL }  =  require ( 'internal/url' ) ; 
8381const  { 
84-   deprecate , 
82+   pendingDeprecate , 
8583  emitExperimentalWarning, 
8684  kEmptyObject, 
8785  filterOwnProperties, 
@@ -309,44 +307,29 @@ let debug = require('internal/util/debuglog').debuglog('module', (fn) => {
309307  debug  =  fn ; 
310308} ) ; 
311309
312- const  builtinModules  =  [ ] ; 
310+ ObjectDefineProperty ( Module . prototype ,  'parent' ,  { 
311+   __proto__ : null , 
312+   get : pendingDeprecate ( 
313+     getModuleParent , 
314+     'module.parent is deprecated due to accuracy issues. Please use '  + 
315+       'require.main to find program entry point instead.' , 
316+     'DEP0144' , 
317+   ) , 
318+   set : pendingDeprecate ( 
319+     setModuleParent , 
320+     'module.parent is deprecated due to accuracy issues. Please use '  + 
321+       'require.main to find program entry point instead.' , 
322+     'DEP0144' , 
323+   ) , 
324+ } ) ; 
325+ Module . _debug  =  pendingDeprecate ( debug ,  'Module._debug is deprecated.' ,  'DEP0077' ) ; 
326+ Module . isBuiltin  =  BuiltinModule . isBuiltin ; 
327+ 
313328// This function is called during pre-execution, before any user code is run. 
314329function  initializeCJS ( )  { 
315-   const  pendingDeprecation  =  getOptionValue ( '--pending-deprecation' ) ; 
316-   ObjectDefineProperty ( Module . prototype ,  'parent' ,  { 
317-     __proto__ : null , 
318-     get : pendingDeprecation  ? deprecate ( 
319-       getModuleParent , 
320-       'module.parent is deprecated due to accuracy issues. Please use '  + 
321-         'require.main to find program entry point instead.' , 
322-       'DEP0144' , 
323-     )  : getModuleParent , 
324-     set : pendingDeprecation  ? deprecate ( 
325-       setModuleParent , 
326-       'module.parent is deprecated due to accuracy issues. Please use '  + 
327-         'require.main to find program entry point instead.' , 
328-       'DEP0144' , 
329-     )  : setModuleParent , 
330-   } ) ; 
331-   Module . _debug  =  deprecate ( debug ,  'Module._debug is deprecated.' ,  'DEP0077' ) ; 
332- 
333-   for  ( const  {  0 : id ,  1 : mod  }  of  BuiltinModule . map )  { 
334-     if  ( mod . canBeRequiredByUsers  && 
335-       BuiltinModule . canBeRequiredWithoutScheme ( id ) )  { 
336-       ArrayPrototypePush ( builtinModules ,  id ) ; 
337-     } 
338-   } 
339- 
340-   const  allBuiltins  =  new  SafeSet ( 
341-     ArrayPrototypeFlatMap ( builtinModules ,  ( bm )  =>  [ bm ,  `node:${ bm }  ] ) , 
342-   ) ; 
343-   BuiltinModule . getSchemeOnlyModuleNames ( ) . forEach ( ( builtin )  =>  allBuiltins . add ( `node:${ builtin }  ) ) ; 
344-   ObjectFreeze ( builtinModules ) ; 
345-   Module . builtinModules  =  builtinModules ; 
346- 
347-   Module . isBuiltin  =  function  isBuiltin ( moduleName )  { 
348-     return  allBuiltins . has ( moduleName ) ; 
349-   } ; 
330+   // This need to be done at runtime in case --expose-internals is set. 
331+   const  builtinModules  =  BuiltinModule . getCanBeRequiredByUsersWithoutSchemeList ( ) ; 
332+   Module . builtinModules  =  ObjectFreeze ( builtinModules ) ; 
350333
351334  initializeCjsConditions ( ) ; 
352335
@@ -813,7 +796,6 @@ Module._resolveLookupPaths = function(request, parent) {
813796    StringPrototypeStartsWith ( request ,  'node:' )  && 
814797    BuiltinModule . canBeRequiredByUsers ( StringPrototypeSlice ( request ,  5 ) ) 
815798  )  ||  ( 
816-     BuiltinModule . canBeRequiredByUsers ( request )  && 
817799    BuiltinModule . canBeRequiredWithoutScheme ( request ) 
818800  ) )  { 
819801    debug ( 'looking for %j in []' ,  request ) ; 
@@ -935,11 +917,11 @@ Module._load = function(request, parent, isMain) {
935917    // Slice 'node:' prefix 
936918    const  id  =  StringPrototypeSlice ( request ,  5 ) ; 
937919
938-     const  module  =  loadBuiltinModule ( id ,  request ) ; 
939-     if  ( ! module ?. canBeRequiredByUsers )  { 
920+     if  ( ! BuiltinModule . canBeRequiredByUsers ( id ) )  { 
940921      throw  new  ERR_UNKNOWN_BUILTIN_MODULE ( request ) ; 
941922    } 
942923
924+     const  module  =  loadBuiltinModule ( id ,  request ) ; 
943925    return  module . exports ; 
944926  } 
945927
@@ -957,9 +939,8 @@ Module._load = function(request, parent, isMain) {
957939    } 
958940  } 
959941
960-   const  mod  =  loadBuiltinModule ( filename ,  request ) ; 
961-   if  ( mod ?. canBeRequiredByUsers  && 
962-       BuiltinModule . canBeRequiredWithoutScheme ( filename ) )  { 
942+   if  ( BuiltinModule . canBeRequiredWithoutScheme ( filename ) )  { 
943+     const  mod  =  loadBuiltinModule ( filename ,  request ) ; 
963944    return  mod . exports ; 
964945  } 
965946
@@ -1013,7 +994,6 @@ Module._resolveFilename = function(request, parent, isMain, options) {
1013994      StringPrototypeStartsWith ( request ,  'node:' )  && 
1014995      BuiltinModule . canBeRequiredByUsers ( StringPrototypeSlice ( request ,  5 ) ) 
1015996    )  ||  ( 
1016-       BuiltinModule . canBeRequiredByUsers ( request )  && 
1017997      BuiltinModule . canBeRequiredWithoutScheme ( request ) 
1018998    ) 
1019999  )  { 
@@ -1469,8 +1449,7 @@ Module._preloadModules = function(requests) {
14691449
14701450Module . syncBuiltinESMExports  =  function  syncBuiltinESMExports ( )  { 
14711451  for  ( const  mod  of  BuiltinModule . map . values ( ) )  { 
1472-     if  ( mod . canBeRequiredByUsers  && 
1473-         BuiltinModule . canBeRequiredWithoutScheme ( mod . id ) )  { 
1452+     if  ( BuiltinModule . canBeRequiredWithoutScheme ( mod . id ) )  { 
14741453      mod . syncExports ( ) ; 
14751454    } 
14761455  } 
0 commit comments