merge to latest

This commit is contained in:
Nick O'Leary
2018-05-23 12:45:29 +01:00
31 changed files with 444 additions and 105 deletions

View File

@@ -64,6 +64,17 @@ function copyObjectProperties(src,dst,copyList,blockList) {
}
}
}
function requireModule(name) {
var moduleInfo = registry.getModuleInfo(name);
if (moduleInfo && moduleInfo.path) {
var relPath = path.relative(__dirname, moduleInfo.path);
return require(relPath);
} else {
var err = new Error(`Cannot find module '${name}'`);
err.code = "MODULE_NOT_FOUND";
throw err;
}
}
function createNodeApi(node) {
var red = {
@@ -73,6 +84,7 @@ function createNodeApi(node) {
events: runtime.events,
util: runtime.util,
version: runtime.version,
require: requireModule,
comms: {
publish: function(topic,data,retain) {
runtime.events.emit("comms",{

View File

@@ -88,7 +88,7 @@ function getLocalNodeFiles(dir) {
try {
files = fs.readdirSync(dir);
} catch(err) {
return result;
return {files: [], icons: []};
}
files.sort();
files.forEach(function(fn) {
@@ -296,6 +296,7 @@ function getNodeFiles(disableNodePathScan) {
nodeList[moduleFile.package.name] = {
name: moduleFile.package.name,
version: moduleFile.package.version,
path: moduleFile.dir,
local: moduleFile.local||false,
nodes: {},
icons: nodeModuleFiles.icons,

View File

@@ -339,6 +339,7 @@ function getModuleInfo(module) {
name: module,
version: moduleConfigs[module].version,
local: moduleConfigs[module].local,
path: moduleConfigs[module].path,
nodes: []
};
for (var i = 0; i < nodes.length; ++i) {
@@ -560,30 +561,6 @@ var icon_paths = {
var iconCache = {};
var defaultIcon = path.resolve(__dirname + '/../../public/icons/arrow-in.png');
function nodeIconDir(dir) {
icon_paths[dir.name] = icon_paths[dir.name] || [];
icon_paths[dir.name].push(path.resolve(dir.path));
if (dir.icons) {
if (!moduleConfigs[dir.name]) {
moduleConfigs[dir.name] = {
name: dir.name,
nodes: {},
icons: []
};
}
var module = moduleConfigs[dir.name];
if (module.icons === undefined) {
module.icons = [];
}
dir.icons.forEach(function(icon) {
if (module.icons.indexOf(icon) === -1) {
module.icons.push(icon);
}
});
}
}
function getNodeIconPath(module,icon) {
if (/\.\./.test(icon)) {
throw new Error();
@@ -624,7 +601,6 @@ function getNodeIcons() {
}
}
}
return iconList;
}