summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/01_require.js
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-03-08 18:06:04 -0800
committerGitHub <noreply@github.com>2024-03-08 18:06:04 -0800
commit26cee4eb0d041786f1d70cb2d9f3a6b6d82bd93d (patch)
tree2981cb52f726056bcfb71132f3814385ea5a8eb9 /ext/node/polyfills/01_require.js
parent529f79505d5924ee461593840c9383c5d8f6ed65 (diff)
fix(ext/node): Implement `isBuiltin` in `node:module` (#22817)
Fixes #22502 Implements the [`isBuiltin`](https://nodejs.org/api/module.html#moduleisbuiltinmodulename) function in `node:module`. I had to update the version of `@types/node` in the test registry in order to get the test I added to typecheck.
Diffstat (limited to 'ext/node/polyfills/01_require.js')
-rw-r--r--ext/node/polyfills/01_require.js21
1 files changed, 20 insertions, 1 deletions
diff --git a/ext/node/polyfills/01_require.js b/ext/node/polyfills/01_require.js
index 81af7062a..8136bc68e 100644
--- a/ext/node/polyfills/01_require.js
+++ b/ext/node/polyfills/01_require.js
@@ -1181,6 +1181,25 @@ function createRequire(filenameOrUrl) {
return createRequireFromPath(filename);
}
+function isBuiltin(moduleName) {
+ if (typeof moduleName !== "string") {
+ return false;
+ }
+
+ if (StringPrototypeStartsWith(moduleName, "node:")) {
+ moduleName = StringPrototypeSlice(moduleName, 5);
+ } else if (moduleName === "test") {
+ // test is only a builtin if it has the "node:" scheme
+ // see https://github.com/nodejs/node/blob/73025c4dec042e344eeea7912ed39f7b7c4a3991/test/parallel/test-module-isBuiltin.js#L14
+ return false;
+ }
+
+ return moduleName in nativeModuleExports &&
+ !StringPrototypeStartsWith(moduleName, "internal/");
+}
+
+Module.isBuiltin = isBuiltin;
+
Module.createRequire = createRequire;
Module._initPaths = function () {
@@ -1249,7 +1268,7 @@ internals.requireImpl = {
nativeModuleExports,
};
-export { builtinModules, createRequire, Module };
+export { builtinModules, createRequire, isBuiltin, Module };
export const _cache = Module._cache;
export const _extensions = Module._extensions;
export const _findPath = Module._findPath;