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
|
||||
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");
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user