mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Initial plugin runtime api implementation
This commit is contained in:
@@ -67,17 +67,24 @@ function filterNodeInfo(n) {
|
||||
if (n.hasOwnProperty("err")) {
|
||||
r.err = n.err;
|
||||
}
|
||||
if (n.hasOwnProperty("plugins")) {
|
||||
r.plugins = n.plugins;
|
||||
}
|
||||
if (n.type === "plugin") {
|
||||
r.editor = !!n.template;
|
||||
r.runtime = !!n.file;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function getModule(id) {
|
||||
function getModuleFromSetId(id) {
|
||||
var parts = id.split("/");
|
||||
return parts.slice(0,parts.length-1).join("/");
|
||||
}
|
||||
|
||||
function getNode(id) {
|
||||
function getNodeFromSetId(id) {
|
||||
var parts = id.split("/");
|
||||
return parts[parts.length-1];
|
||||
}
|
||||
@@ -220,11 +227,11 @@ function addModule(module) {
|
||||
|
||||
|
||||
function removeNode(id) {
|
||||
var config = moduleConfigs[getModule(id)].nodes[getNode(id)];
|
||||
var config = moduleConfigs[getModuleFromSetId(id)].nodes[getNodeFromSetId(id)];
|
||||
if (!config) {
|
||||
throw new Error("Unrecognised id: "+id);
|
||||
}
|
||||
delete moduleConfigs[getModule(id)].nodes[getNode(id)];
|
||||
delete moduleConfigs[getModuleFromSetId(id)].nodes[getNodeFromSetId(id)];
|
||||
var i = nodeList.indexOf(id);
|
||||
if (i > -1) {
|
||||
nodeList.splice(i,1);
|
||||
@@ -294,9 +301,9 @@ function getNodeInfo(typeOrId) {
|
||||
}
|
||||
/* istanbul ignore else */
|
||||
if (id) {
|
||||
var module = moduleConfigs[getModule(id)];
|
||||
var module = moduleConfigs[getModuleFromSetId(id)];
|
||||
if (module) {
|
||||
var config = module.nodes[getNode(id)];
|
||||
var config = module.nodes[getNodeFromSetId(id)];
|
||||
if (config) {
|
||||
var info = filterNodeInfo(config);
|
||||
if (config.hasOwnProperty("loaded")) {
|
||||
@@ -323,9 +330,9 @@ function getFullNodeInfo(typeOrId) {
|
||||
}
|
||||
/* istanbul ignore else */
|
||||
if (id) {
|
||||
var module = moduleConfigs[getModule(id)];
|
||||
var module = moduleConfigs[getModuleFromSetId(id)];
|
||||
if (module) {
|
||||
return module.nodes[getNode(id)];
|
||||
return module.nodes[getNodeFromSetId(id)];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -359,16 +366,10 @@ function getNodeList(filter) {
|
||||
}
|
||||
|
||||
function getModuleList() {
|
||||
//var list = [];
|
||||
//for (var module in moduleNodes) {
|
||||
// /* istanbul ignore else */
|
||||
// if (moduleNodes.hasOwnProperty(module)) {
|
||||
// list.push(registry.getModuleInfo(module));
|
||||
// }
|
||||
//}
|
||||
//return list;
|
||||
return moduleConfigs;
|
||||
|
||||
}
|
||||
function getModule(id) {
|
||||
return moduleConfigs[id];
|
||||
}
|
||||
|
||||
function getModuleInfo(module) {
|
||||
@@ -461,13 +462,11 @@ function getAllNodeConfigs(lang) {
|
||||
var script = "";
|
||||
for (var i=0;i<nodeList.length;i++) {
|
||||
var id = nodeList[i];
|
||||
|
||||
var module = moduleConfigs[getModule(id)]
|
||||
var module = moduleConfigs[getModuleFromSetId(id)]
|
||||
if (!module.user && (module.usedBy && module.usedBy.length > 0)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var config = module.nodes[getNode(id)];
|
||||
var config = module.nodes[getNodeFromSetId(id)];
|
||||
if (config.enabled && !config.err) {
|
||||
result += "\n<!-- --- [red-module:"+id+"] --- -->\n";
|
||||
result += config.config;
|
||||
@@ -486,11 +485,11 @@ function getAllNodeConfigs(lang) {
|
||||
}
|
||||
|
||||
function getNodeConfig(id,lang) {
|
||||
var config = moduleConfigs[getModule(id)];
|
||||
var config = moduleConfigs[getModuleFromSetId(id)];
|
||||
if (!config) {
|
||||
return null;
|
||||
}
|
||||
config = config.nodes[getNode(id)];
|
||||
config = config.nodes[getNodeFromSetId(id)];
|
||||
if (config) {
|
||||
var result = "<!-- --- [red-module:"+id+"] --- -->\n"+config.config;
|
||||
result += loader.getNodeHelp(config,lang||"en-US")
|
||||
@@ -511,7 +510,7 @@ function getNodeConstructor(type) {
|
||||
if (typeof id === "undefined") {
|
||||
config = undefined;
|
||||
} else {
|
||||
config = moduleConfigs[getModule(id)].nodes[getNode(id)];
|
||||
config = moduleConfigs[getModuleFromSetId(id)].nodes[getNodeFromSetId(id)];
|
||||
}
|
||||
|
||||
if (!config || (config.enabled && !config.err)) {
|
||||
@@ -548,7 +547,7 @@ function enableNodeSet(typeOrId) {
|
||||
}
|
||||
var config;
|
||||
try {
|
||||
config = moduleConfigs[getModule(id)].nodes[getNode(id)];
|
||||
config = moduleConfigs[getModuleFromSetId(id)].nodes[getNodeFromSetId(id)];
|
||||
delete config.err;
|
||||
config.enabled = true;
|
||||
nodeConfigCache = {};
|
||||
@@ -571,7 +570,7 @@ function disableNodeSet(typeOrId) {
|
||||
}
|
||||
var config;
|
||||
try {
|
||||
config = moduleConfigs[getModule(id)].nodes[getNode(id)];
|
||||
config = moduleConfigs[getModuleFromSetId(id)].nodes[getNodeFromSetId(id)];
|
||||
// TODO: persist setting
|
||||
config.enabled = false;
|
||||
nodeConfigCache = {};
|
||||
@@ -710,6 +709,7 @@ var registry = module.exports = {
|
||||
getFullNodeInfo: getFullNodeInfo,
|
||||
getNodeList: getNodeList,
|
||||
getModuleList: getModuleList,
|
||||
getModule: getModule,
|
||||
getModuleInfo: getModuleInfo,
|
||||
|
||||
getNodeIconPath: getNodeIconPath,
|
||||
@@ -725,5 +725,8 @@ var registry = module.exports = {
|
||||
|
||||
saveNodeList: saveNodeList,
|
||||
|
||||
cleanModuleList: cleanModuleList
|
||||
cleanModuleList: cleanModuleList,
|
||||
getModuleFromSetId: getModuleFromSetId,
|
||||
getNodeFromSetId: getNodeFromSetId,
|
||||
filterNodeInfo: filterNodeInfo
|
||||
};
|
||||
|
Reference in New Issue
Block a user