Add support for node: prefixed modules in function node

This commit is contained in:
Nick O'Leary 2025-02-28 17:34:01 +00:00
parent 2feb290ae3
commit b8fa468559
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
2 changed files with 14 additions and 15 deletions

View File

@ -197,14 +197,6 @@
// object that maps from library name to its descriptor // object that maps from library name to its descriptor
var allLibs = []; var allLibs = [];
function moduleName(module) {
var match = /^([^@]+)@(.+)/.exec(module);
if (match) {
return [match[1], match[2]];
}
return [module, undefined];
}
function getAllUsedModules() { function getAllUsedModules() {
var moduleSet = new Set(); var moduleSet = new Set();
for (var id in knownFunctionNodes) { for (var id in knownFunctionNodes) {
@ -302,7 +294,7 @@
if (val === "_custom_") { if (val === "_custom_") {
val = $(this).val(); val = $(this).val();
} }
var varName = val.trim().replace(/^@/,"").replace(/@.*$/,"").replace(/[-_/\.].?/g, function(v) { return v[1]?v[1].toUpperCase():"" }); var varName = val.trim().replace(/^node:/,"").replace(/^@/,"").replace(/@.*$/,"").replace(/[-_/\.].?/g, function(v) { return v[1]?v[1].toUpperCase():"" });
fvar.val(varName); fvar.val(varName);
fvar.trigger("change"); fvar.trigger("change");

View File

@ -92,7 +92,7 @@ function requireModule(module) {
const parsedModule = parseModuleName(module); const parsedModule = parseModuleName(module);
if (BUILTIN_MODULES.indexOf(parsedModule.module) !== -1) { if (parsedModule.builtin) {
return require(parsedModule.module + parsedModule.subpath); return require(parsedModule.module + parsedModule.subpath);
} }
if (!knownExternalModules[parsedModule.module]) { if (!knownExternalModules[parsedModule.module]) {
@ -113,7 +113,7 @@ function importModule(module) {
const parsedModule = parseModuleName(module); const parsedModule = parseModuleName(module);
if (BUILTIN_MODULES.indexOf(parsedModule.module) !== -1) { if (parsedModule.builtin) {
return import(parsedModule.module + parsedModule.subpath); return import(parsedModule.module + parsedModule.subpath);
} }
if (!knownExternalModules[parsedModule.module]) { if (!knownExternalModules[parsedModule.module]) {
@ -135,15 +135,22 @@ function importModule(module) {
} }
function parseModuleName(module) { function parseModuleName(module) {
var match = /((?:@[^/]+\/)?[^/@]+)(\/[^/@]+)?(?:@([\s\S]+))?/.exec(module); const match = /((?:@[^/]+\/)?[^/@]+)(\/[^/@]+)?(?:@([\s\S]+))?/.exec(module);
if (match) { if (match) {
const moduleName = match[1]
let isBuiltIn = false
if (/^node:/.test(moduleName)) {
isBuiltIn = BUILTIN_MODULES.includes(moduleName.substring(5))
} else {
isBuiltIn = BUILTIN_MODULES.includes(moduleName)
}
return { return {
spec: module, spec: module,
module: match[1], module: moduleName,
subpath: match[2] || '', subpath: match[2] || '',
version: match[3], version: match[3],
builtin: BUILTIN_MODULES.indexOf(match[1]) !== -1, builtin: isBuiltIn,
known: !!knownExternalModules[match[1]] known: !!knownExternalModules[moduleName]
} }
} }
return null; return null;