Skip to content

Commit 1524997

Browse files
committed
Prefer module.isBuiltin when checking core modules
1 parent 39ebaec commit 1524997

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

lib/walker.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import assert from 'assert';
44
import fs from 'fs/promises';
55
import path from 'path';
6-
import { builtinModules } from 'module';
6+
import module, { builtinModules } from 'module';
77
import picomatch from 'picomatch';
88
import { globSync } from 'tinyglobby';
99

@@ -76,10 +76,17 @@ const win32 = process.platform === 'win32';
7676

7777
/**
7878
* Checks if a module is a core module
79-
* module.isBuiltin is available in Node.js 16.17.0 or later. Once we drop support for older
80-
* versions of Node.js, we can use module.isBuiltin instead of this function.
79+
* module.isBuiltin is available in Node.js 16.17.0 or later. Use that if available
80+
* as prefix-only modules (those starting with 'node:') can only be checked that way.
8181
*/
8282
function isBuiltin(moduleName: string) {
83+
if (
84+
Reflect.has(module, 'isBuiltin') &&
85+
typeof module.isBuiltin === 'function'
86+
) {
87+
return module.isBuiltin(moduleName);
88+
}
89+
8390
const moduleNameWithoutPrefix = moduleName.startsWith('node:')
8491
? moduleName.slice(5)
8592
: moduleName;

0 commit comments

Comments
 (0)