Merge pull request #5067 from node-red/5065-support-node-prefix-builtins

Add support for node: prefixed modules in function node
pull/5073/head
Nick O'Leary 2025-03-03 16:43:35 +00:00 committed by GitHub
commit 9a8251c9b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 15 deletions

View File

@ -197,14 +197,6 @@
// object that maps from library name to its descriptor
var allLibs = [];
function moduleName(module) {
var match = /^([^@]+)@(.+)/.exec(module);
if (match) {
return [match[1], match[2]];
}
return [module, undefined];
}
function getAllUsedModules() {
var moduleSet = new Set();
for (var id in knownFunctionNodes) {
@ -302,7 +294,7 @@
if (val === "_custom_") {
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.trigger("change");

View File

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