File tree 3 files changed +39
-0
lines changed
3 files changed +39
-0
lines changed Original file line number Diff line number Diff line change 2
2
const builtinModules = require ( 'builtin-modules' ) ;
3
3
4
4
const moduleSet = new Set ( builtinModules ) ;
5
+ const NODE_PROTOCOL = 'node:' ;
5
6
6
7
module . exports = moduleName => {
7
8
if ( typeof moduleName !== 'string' ) {
8
9
throw new TypeError ( 'Expected a string' ) ;
9
10
}
10
11
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
+
11
21
return moduleSet . has ( moduleName ) ;
12
22
} ;
Original file line number Diff line number Diff line change @@ -18,6 +18,12 @@ const isBuiltinModule = require('is-builtin-module');
18
18
isBuiltinModule (' fs' );
19
19
// => true
20
20
21
+ isBuiltinModule (' fs/promises' );
22
+ // => true
23
+
24
+ isBuiltinModule (' node:fs/promises' );
25
+ // => true
26
+
21
27
isBuiltinModule (' unicorn' );
22
28
// => false
23
29
```
Original file line number Diff line number Diff line change @@ -4,5 +4,28 @@ import isBuiltinModule from '.';
4
4
test ( 'main' , t => {
5
5
t . true ( isBuiltinModule ( 'fs' ) ) ;
6
6
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
+
7
20
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";' ) ) ;
8
31
} ) ;
You can’t perform that action at this time.
0 commit comments