23 lines
566 B
JavaScript
23 lines
566 B
JavaScript
'use strict';
|
|
const builtinModules = require('builtin-modules');
|
|
|
|
const moduleSet = new Set(builtinModules);
|
|
const NODE_PROTOCOL = 'node:';
|
|
|
|
module.exports = moduleName => {
|
|
if (typeof moduleName !== 'string') {
|
|
throw new TypeError('Expected a string');
|
|
}
|
|
|
|
if (moduleName.startsWith(NODE_PROTOCOL)) {
|
|
moduleName = moduleName.slice(NODE_PROTOCOL.length);
|
|
}
|
|
|
|
const slashIndex = moduleName.indexOf('/');
|
|
if (slashIndex !== -1 && slashIndex !== moduleName.length - 1) {
|
|
moduleName = moduleName.slice(0, slashIndex);
|
|
}
|
|
|
|
return moduleSet.has(moduleName);
|
|
};
|