1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Handle scoped modules via palette editor

This commit is contained in:
Nick O'Leary 2018-01-24 15:07:43 +00:00
parent 3cb5cbd8d5
commit a62a1012fa
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
3 changed files with 20 additions and 6 deletions

View File

@ -412,16 +412,17 @@ RED.palette = (function() {
for (var j=0;j<nodeSet.types.length;j++) { for (var j=0;j<nodeSet.types.length;j++) {
showNodeType(nodeSet.types[j]); showNodeType(nodeSet.types[j]);
var def = RED.nodes.getType(nodeSet.types[j]); var def = RED.nodes.getType(nodeSet.types[j]);
if (def.onpaletteadd && typeof def.onpaletteadd === "function") { if (def && def.onpaletteadd && typeof def.onpaletteadd === "function") {
def.onpaletteadd.call(def); def.onpaletteadd.call(def);
} }
} }
}); });
RED.events.on('registry:node-set-disabled', function(nodeSet) { RED.events.on('registry:node-set-disabled', function(nodeSet) {
console.log(nodeSet);
for (var j=0;j<nodeSet.types.length;j++) { for (var j=0;j<nodeSet.types.length;j++) {
hideNodeType(nodeSet.types[j]); hideNodeType(nodeSet.types[j]);
var def = RED.nodes.getType(nodeSet.types[j]); var def = RED.nodes.getType(nodeSet.types[j]);
if (def.onpaletteremove && typeof def.onpaletteremove === "function") { if (def && def.onpaletteremove && typeof def.onpaletteremove === "function") {
def.onpaletteremove.call(def); def.onpaletteremove.call(def);
} }
} }
@ -431,7 +432,7 @@ RED.palette = (function() {
for (var j=0;j<nodeSet.types.length;j++) { for (var j=0;j<nodeSet.types.length;j++) {
removeNodeType(nodeSet.types[j]); removeNodeType(nodeSet.types[j]);
var def = RED.nodes.getType(nodeSet.types[j]); var def = RED.nodes.getType(nodeSet.types[j]);
if (def.onpaletteremove && typeof def.onpaletteremove === "function") { if (def && def.onpaletteremove && typeof def.onpaletteremove === "function") {
def.onpaletteremove.call(def); def.onpaletteremove.call(def);
} }
} }

View File

@ -29,8 +29,7 @@ var npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm';
var paletteEditorEnabled = false; var paletteEditorEnabled = false;
var settings; var settings;
var moduleRe = /^(@[^/]+?[/])?[^/]+?$/;
var moduleRe = /^[^/]+$/;
var slashRe = process.platform === "win32" ? /\\|[/]/ : /[/]/; var slashRe = process.platform === "win32" ? /\\|[/]/ : /[/]/;
function init(_settings) { function init(_settings) {

View File

@ -115,12 +115,26 @@ function getLocalNodeFiles(dir) {
function scanDirForNodesModules(dir,moduleName) { function scanDirForNodesModules(dir,moduleName) {
var results = []; var results = [];
var scopeName;
try { try {
var files = fs.readdirSync(dir); var files = fs.readdirSync(dir);
if (moduleName) {
var m = /^(?:(@[^/]+)[/])?([^@/]+)/.exec(moduleName);
if (m) {
scopeName = m[1];
moduleName = m[2];
}
}
for (var i=0;i<files.length;i++) { for (var i=0;i<files.length;i++) {
var fn = files[i]; var fn = files[i];
if (/^@/.test(fn)) { if (/^@/.test(fn)) {
results = results.concat(scanDirForNodesModules(path.join(dir,fn),moduleName)); if (scopeName && scopeName === fn) {
// Looking for a specific scope/module
results = results.concat(scanDirForNodesModules(path.join(dir,fn),moduleName));
break;
} else {
results = results.concat(scanDirForNodesModules(path.join(dir,fn),moduleName));
}
} else { } else {
if (isIncluded(fn) && !isExcluded(fn) && (!moduleName || fn == moduleName)) { if (isIncluded(fn) && !isExcluded(fn) && (!moduleName || fn == moduleName)) {
var pkgfn = path.join(dir,fn,"package.json"); var pkgfn = path.join(dir,fn,"package.json");