Allow import of modules with subpath in specifier

Fixes #4446
This commit is contained in:
Nick O'Leary 2023-11-27 16:44:56 +00:00
parent a55554193b
commit 6633730bf1
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9

View File

@ -98,7 +98,7 @@ function requireModule(module) {
const parsedModule = parseModuleName(module);
if (BUILTIN_MODULES.indexOf(parsedModule.module) !== -1) {
return require(parsedModule.module);
return require(parsedModule.module + parsedModule.subpath);
}
if (!knownExternalModules[parsedModule.module]) {
const e = new Error("Module not allowed");
@ -131,7 +131,7 @@ function importModule(module) {
const parsedModule = parseModuleName(module);
if (BUILTIN_MODULES.indexOf(parsedModule.module) !== -1) {
return import(parsedModule.module);
return import(parsedModule.module + parsedModule.subpath);
}
if (!knownExternalModules[parsedModule.module]) {
const e = new Error("Module not allowed");
@ -152,12 +152,13 @@ function importModule(module) {
}
function parseModuleName(module) {
var match = /((?:@[^/]+\/)?[^/@]+)(?:@([\s\S]+))?/.exec(module);
var match = /((?:@[^/]+\/)?[^/@]+)(\/[^/@]+)?(?:@([\s\S]+))?/.exec(module);
if (match) {
return {
spec: module,
module: match[1],
version: match[2],
subpath: match[2] || '',
version: match[3],
builtin: BUILTIN_MODULES.indexOf(match[1]) !== -1,
known: !!knownExternalModules[match[1]]
}