mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
module: add isBuiltIn method
PR-URL: https://github.com/nodejs/node/pull/43396 Fixes: https://github.com/nodejs/node/issues/42785 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
This commit is contained in:
@@ -62,6 +62,22 @@ const require = createRequire(import.meta.url);
|
||||
const siblingModule = require('./sibling-module');
|
||||
```
|
||||
|
||||
### `module.isBuiltin(moduleName)`
|
||||
|
||||
<!-- YAML
|
||||
added: REPLACEME
|
||||
-->
|
||||
|
||||
* `moduleName` {string} name of the module
|
||||
* Returns: {boolean} returns true if the module is builtin else returns false
|
||||
|
||||
```mjs
|
||||
import { isBuiltin } from 'node:module';
|
||||
isBuiltin('node:fs'); // true
|
||||
isBuiltin('fs'); // true
|
||||
isBuiltin('wss'); // false
|
||||
```
|
||||
|
||||
### `module.syncBuiltinESMExports()`
|
||||
|
||||
<!-- YAML
|
||||
|
||||
@@ -33,6 +33,7 @@ const {
|
||||
ArrayPrototypeSplice,
|
||||
ArrayPrototypeUnshift,
|
||||
ArrayPrototypeUnshiftApply,
|
||||
ArrayPrototypeFlatMap,
|
||||
Boolean,
|
||||
Error,
|
||||
JSONParse,
|
||||
@@ -50,6 +51,7 @@ const {
|
||||
ReflectSet,
|
||||
RegExpPrototypeExec,
|
||||
SafeMap,
|
||||
SafeSet,
|
||||
SafeWeakMap,
|
||||
String,
|
||||
StringPrototypeCharAt,
|
||||
@@ -186,6 +188,11 @@ for (const { 0: id, 1: mod } of NativeModule.map) {
|
||||
}
|
||||
}
|
||||
|
||||
const allBuiltins = new SafeSet(
|
||||
ArrayPrototypeFlatMap(builtinModules, (bm) => [bm, `node:${bm}`])
|
||||
);
|
||||
NativeModule.getSchemeOnlyModuleNames().forEach((builtin) => allBuiltins.add(`node:${builtin}`));
|
||||
|
||||
ObjectFreeze(builtinModules);
|
||||
Module.builtinModules = builtinModules;
|
||||
|
||||
@@ -1300,5 +1307,9 @@ Module.syncBuiltinESMExports = function syncBuiltinESMExports() {
|
||||
}
|
||||
};
|
||||
|
||||
Module.isBuiltin = function isBuiltin(moduleName) {
|
||||
return allBuiltins.has(moduleName);
|
||||
};
|
||||
|
||||
// Backwards compatibility
|
||||
Module.Module = Module;
|
||||
|
||||
16
test/parallel/test-module-isBuiltin.js
Normal file
16
test/parallel/test-module-isBuiltin.js
Normal file
@@ -0,0 +1,16 @@
|
||||
'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'));
|
||||
assert(isBuiltin('node:fs'));
|
||||
assert(isBuiltin('node:test'));
|
||||
|
||||
// Does not include internal modules
|
||||
assert(!isBuiltin('internal/errors'));
|
||||
assert(!isBuiltin('test'));
|
||||
assert(!isBuiltin(''));
|
||||
assert(!isBuiltin(undefined));
|
||||
Reference in New Issue
Block a user