Skip to content

Commit a66a302

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

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

lib/internal/modules/cjs/loader.js

Lines changed: 6 additions & 0 deletions
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;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
'use strict';
2+
require('../common');
3+
const assert = require('assert');
4+
const { isBuiltIn } = require('module');
5+
6+
// Includes modules in lib/ (even deprecated ones)
7+
assert(isBuiltIn('http'));
8+
assert(isBuiltIn('sys'));
9+
10+
// Does not include internal modules
11+
assert(!isBuiltIn('internal'));
12+
assert(!isBuiltIn(''));
13+
assert(!isBuiltIn(undefined));
14+
15+
16+

0 commit comments

Comments
 (0)