mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Add support for node: prefixed modules in function node
This commit is contained in:
parent
2feb290ae3
commit
b8fa468559
@ -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");
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user