Skip to content

Commit 20d89af

Browse files
authored
module: add isBuiltIn method
1 parent 5ca2ab1 commit 20d89af

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

lib/internal/modules/cjs/loader.js

+6
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ for (const { 0: id, 1: mod } of NativeModule.map) {
191191
ObjectFreeze(builtinModules);
192192
Module.builtinModules = builtinModules;
193193

194+
194195
Module._cache = ObjectCreate(null);
195196
Module._pathCache = ObjectCreate(null);
196197
Module._extensions = ObjectCreate(null);
@@ -1293,5 +1294,10 @@ Module.syncBuiltinESMExports = function syncBuiltinESMExports() {
12931294
}
12941295
};
12951296

1297+
Module.isBuiltIn = function isBuiltIn(moduleName) {
1298+
moduleName = String(moduleName).replace('node:', '');
1299+
return Module.builtinModules.includes(moduleName);
1300+
};
1301+
12961302
// Backwards compatibility
12971303
Module.Module = Module;
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
require('../common');
3+
const assert = require('assert');
4+
const { builtinModules } = require('module');
5+
6+
// Includes modules in lib/ (even deprecated ones)
7+
assert(builtinModules.includes('http'));
8+
assert(builtinModules.includes('sys'));
9+
10+
// Does not include internal modules
11+
assert.deepStrictEqual(
12+
builtinModules.filter((mod) => mod.startsWith('internal/')),
13+
[]
14+
);

0 commit comments

Comments
 (0)