Skip to content

Commit 6b5865c

Browse files
authored
Recognize alias modules and node: protocol (#6)
1 parent 2e29b5f commit 6b5865c

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

index.js

+10
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,21 @@
22
const builtinModules = require('builtin-modules');
33

44
const moduleSet = new Set(builtinModules);
5+
const NODE_PROTOCOL = 'node:';
56

67
module.exports = moduleName => {
78
if (typeof moduleName !== 'string') {
89
throw new TypeError('Expected a string');
910
}
1011

12+
if (moduleName.startsWith(NODE_PROTOCOL)) {
13+
moduleName = moduleName.slice(NODE_PROTOCOL.length);
14+
}
15+
16+
const slashIndex = moduleName.indexOf('/');
17+
if (slashIndex !== -1) {
18+
moduleName = moduleName.slice(0, slashIndex);
19+
}
20+
1121
return moduleSet.has(moduleName);
1222
};

readme.md

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ const isBuiltinModule = require('is-builtin-module');
1818
isBuiltinModule('fs');
1919
//=> true
2020

21+
isBuiltinModule('fs/promises');
22+
//=> true
23+
24+
isBuiltinModule('node:fs/promises');
25+
//=> true
26+
2127
isBuiltinModule('unicorn');
2228
//=> false
2329
```

test.js

+23
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,28 @@ import isBuiltinModule from '.';
44
test('main', t => {
55
t.true(isBuiltinModule('fs'));
66
t.true(isBuiltinModule('console'));
7+
8+
t.true(isBuiltinModule('fs/promises'));
9+
t.true(isBuiltinModule('assert/strict'));
10+
11+
// These are actually not, but should not exist
12+
t.true(isBuiltinModule('fs/'));
13+
t.true(isBuiltinModule('fs/unknown'));
14+
t.true(isBuiltinModule('fs/promises/unknown'));
15+
t.true(isBuiltinModule('fs/promises?query=1'));
16+
17+
t.true(isBuiltinModule('node:fs'));
18+
t.true(isBuiltinModule('node:fs/promises'));
19+
720
t.false(isBuiltinModule('unicorn'));
21+
t.false(isBuiltinModule('unknown'));
22+
t.false(isBuiltinModule('FS'));
23+
t.false(isBuiltinModule('nodE:fs'));
24+
t.false(isBuiltinModule('node:fS'));
25+
t.false(isBuiltinModule('fsnode:'));
26+
t.false(isBuiltinModule('node:unknown'));
27+
t.false(isBuiltinModule('node:node:fs'));
28+
t.false(isBuiltinModule('node:/fs'));
29+
t.false(isBuiltinModule('file:fs/promises'));
30+
t.false(isBuiltinModule('data:text/javascript;utf-8,export {default} from "fs";'));
831
});

0 commit comments

Comments
 (0)