From ec1f95aa30323f0c5b232ebca799d42db9506bd4 Mon Sep 17 00:00:00 2001 From: "hemanth.hm" Date: Tue, 14 Jun 2022 00:32:00 +0000 Subject: [PATCH] module: add isBuiltIn method --- lib/internal/modules/cjs/loader.js | 5 +++++ test/parallel/test-module-isBuiltIn.js | 13 +++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 test/parallel/test-module-isBuiltIn.js diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index b7fc3f9b2a1ea5..6b023c9f13fdd8 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -1293,5 +1293,10 @@ Module.syncBuiltinESMExports = function syncBuiltinESMExports() { } }; +Module.isBuiltIn = function isBuiltIn(moduleName) { + moduleName = String(moduleName).replace('node:', ''); + return Module.builtinModules.includes(moduleName); +}; + // Backwards compatibility Module.Module = Module; diff --git a/test/parallel/test-module-isBuiltIn.js b/test/parallel/test-module-isBuiltIn.js new file mode 100644 index 00000000000000..e2514161333c2c --- /dev/null +++ b/test/parallel/test-module-isBuiltIn.js @@ -0,0 +1,13 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const { isBuiltIn } = require('module'); + +// Includes modules in lib/ (even deprecated ones) +assert(isBuiltIn('http')); +assert(isBuiltIn('sys')); + +// Does not include internal modules +assert(!isBuiltIn('internal')); +assert(!isBuiltIn('')); +assert(!isBuiltIn(undefined));