mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Debug message formatting mangling brackets
This commit is contained in:
parent
1d10eba0cc
commit
b61a250d58
@ -156,7 +156,9 @@
|
|||||||
msg:msg
|
msg:msg
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function sanitize(m) {
|
||||||
|
return m.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
||||||
|
}
|
||||||
this.handleDebugMessage = function(t,o) {
|
this.handleDebugMessage = function(t,o) {
|
||||||
var msg = document.createElement("div");
|
var msg = document.createElement("div");
|
||||||
msg.onmouseover = function() {
|
msg.onmouseover = function() {
|
||||||
@ -184,15 +186,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
var name = (o.name?o.name:o.id).toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
console.log(o);
|
||||||
var topic = (o.topic||"").toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
var name = sanitize(((o.name?o.name:o.id)||"").toString());
|
||||||
var property = (o.property?o.property:'').replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
var topic = sanitize((o.topic||"").toString());
|
||||||
var payload = (o.msg||"()").toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
var property = sanitize(o.property?o.property:'');
|
||||||
var typ = payload.substring(0,payload.indexOf(')')+1);
|
var payload = sanitize((o.msg||"").toString());
|
||||||
payload = payload.substring(payload.indexOf(')')+1);
|
var format = sanitize((o.format||"").toString());
|
||||||
|
|
||||||
msg.className = 'debug-message'+(o.level?(' debug-message-level-'+o.level):'');
|
msg.className = 'debug-message'+(o.level?(' debug-message-level-'+o.level):'');
|
||||||
msg.innerHTML = '<span class="debug-message-date">'+
|
msg.innerHTML = '<span class="debug-message-date">'+
|
||||||
getTimestamp()+'</span><span class="debug-message-name">['+name+']'+
|
getTimestamp()+'</span>'+
|
||||||
|
(name?'<span class="debug-message-name">['+name+']':'')+
|
||||||
'</span>';
|
'</span>';
|
||||||
// NOTE: relying on function error to have a "type" that all other msgs don't
|
// NOTE: relying on function error to have a "type" that all other msgs don't
|
||||||
if (o.hasOwnProperty("type") && (o.type === "function")) {
|
if (o.hasOwnProperty("type") && (o.type === "function")) {
|
||||||
@ -205,8 +209,11 @@
|
|||||||
msg.className = 'debug-message debug-message-level-' + errorLvl;
|
msg.className = 'debug-message debug-message-level-' + errorLvl;
|
||||||
msg.innerHTML += '<span class="debug-message-topic">[function] : (' + errorLvlType + ')</span>';
|
msg.innerHTML += '<span class="debug-message-topic">[function] : (' + errorLvlType + ')</span>';
|
||||||
} else {
|
} else {
|
||||||
msg.innerHTML += '<span class="debug-message-topic">'+(o.topic?topic+' : ':'')+
|
msg.innerHTML += '<span class="debug-message-topic">'+
|
||||||
(o.property?'[msg.'+property+']':'[msg]')+" : "+typ+'</span>';
|
(o.topic?topic+' : ':'')+
|
||||||
|
(o.property?'[msg.'+property+']':'[msg]')+" : "+format+
|
||||||
|
|
||||||
|
'</span>';
|
||||||
}
|
}
|
||||||
msg.innerHTML += '<span class="debug-message-payload">'+ payload+ '</span>';
|
msg.innerHTML += '<span class="debug-message-payload">'+ payload+ '</span>';
|
||||||
var atBottom = (sbc.scrollHeight-messages.offsetHeight-sbc.scrollTop) < 5;
|
var atBottom = (sbc.scrollHeight-messages.offsetHeight-sbc.scrollTop) < 5;
|
||||||
|
@ -82,14 +82,18 @@ module.exports = function(RED) {
|
|||||||
|
|
||||||
function sendDebug(msg) {
|
function sendDebug(msg) {
|
||||||
if (msg.msg instanceof Error) {
|
if (msg.msg instanceof Error) {
|
||||||
|
msg.format = "error";
|
||||||
msg.msg = msg.msg.toString();
|
msg.msg = msg.msg.toString();
|
||||||
} else if (msg.msg instanceof Buffer) {
|
} else if (msg.msg instanceof Buffer) {
|
||||||
msg.msg = "(Buffer) "+msg.msg.toString('hex');
|
msg.format = "buffer";
|
||||||
|
msg.msg = msg.msg.toString('hex');
|
||||||
} else if (typeof msg.msg === 'object') {
|
} else if (typeof msg.msg === 'object') {
|
||||||
var seen = [];
|
var seen = [];
|
||||||
var ty = "(Object) ";
|
msg.format = "object";
|
||||||
if (util.isArray(msg.msg)) { ty = "(Array) "; }
|
if (util.isArray(msg.msg)) {
|
||||||
msg.msg = ty + JSON.stringify(msg.msg, function(key, value) {
|
msg.format = "array";
|
||||||
|
}
|
||||||
|
msg.msg = JSON.stringify(msg.msg, function(key, value) {
|
||||||
if (typeof value === 'object' && value !== null) {
|
if (typeof value === 'object' && value !== null) {
|
||||||
if (seen.indexOf(value) !== -1) { return "[circular]"; }
|
if (seen.indexOf(value) !== -1) { return "[circular]"; }
|
||||||
seen.push(value);
|
seen.push(value);
|
||||||
@ -98,14 +102,21 @@ module.exports = function(RED) {
|
|||||||
}," ");
|
}," ");
|
||||||
seen = null;
|
seen = null;
|
||||||
} else if (typeof msg.msg === "boolean") {
|
} else if (typeof msg.msg === "boolean") {
|
||||||
msg.msg = "(boolean) "+msg.msg.toString();
|
msg.format = "boolean";
|
||||||
|
msg.msg = msg.msg.toString();
|
||||||
} else if (typeof msg.msg === "number") {
|
} else if (typeof msg.msg === "number") {
|
||||||
msg.msg = "(number) "+msg.msg.toString();
|
msg.format = "number";
|
||||||
|
msg.msg = msg.msg.toString();
|
||||||
} else if (msg.msg === 0) {
|
} else if (msg.msg === 0) {
|
||||||
|
msg.format = "number";
|
||||||
msg.msg = "0";
|
msg.msg = "0";
|
||||||
} else if (msg.msg === null || typeof msg.msg === "undefined") {
|
} else if (msg.msg === null || typeof msg.msg === "undefined") {
|
||||||
|
msg.format = (msg.msg === null)?"null":"undefined";
|
||||||
msg.msg = "(undefined)";
|
msg.msg = "(undefined)";
|
||||||
} else { msg.msg = "(string) "+msg.msg; }
|
} else {
|
||||||
|
msg.format = "string";
|
||||||
|
msg.msg = msg.msg;
|
||||||
|
}
|
||||||
|
|
||||||
if (msg.msg.length > debuglength) {
|
if (msg.msg.length > debuglength) {
|
||||||
msg.msg = msg.msg.substr(0,debuglength) +" ....";
|
msg.msg = msg.msg.substr(0,debuglength) +" ....";
|
||||||
|
@ -97,7 +97,7 @@ RED.sidebar.info = (function() {
|
|||||||
var val = node[n]||"";
|
var val = node[n]||"";
|
||||||
var type = typeof val;
|
var type = typeof val;
|
||||||
if (type === "string") {
|
if (type === "string") {
|
||||||
if (val.length == 0) {
|
if (val.length === 0) {
|
||||||
val += '<span style="font-style: italic; color: #ccc;">blank</span>';
|
val += '<span style="font-style: italic; color: #ccc;">blank</span>';
|
||||||
} else {
|
} else {
|
||||||
if (val.length > 30) {
|
if (val.length > 30) {
|
||||||
|
@ -21,7 +21,7 @@ var typeRegistry = require("./registry");
|
|||||||
var credentials = require("./credentials");
|
var credentials = require("./credentials");
|
||||||
var redUtil = require("../util");
|
var redUtil = require("../util");
|
||||||
var events = require("../events");
|
var events = require("../events");
|
||||||
var log = require("../log");
|
var Log = require("../log");
|
||||||
|
|
||||||
function getID() {
|
function getID() {
|
||||||
return (1+Math.random()*4294967295).toString(16);
|
return (1+Math.random()*4294967295).toString(16);
|
||||||
@ -35,10 +35,15 @@ function createNode(type,config) {
|
|||||||
nn = new nt(clone(config));
|
nn = new nt(clone(config));
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
log.warn(type+" : "+err);
|
Log.log({
|
||||||
|
level: Log.ERROR,
|
||||||
|
id:config.id,
|
||||||
|
type: type,
|
||||||
|
msg: err
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.warn("unknown type: "+type);
|
Log.error("Unknown type: "+type);
|
||||||
}
|
}
|
||||||
return nn;
|
return nn;
|
||||||
}
|
}
|
||||||
|
@ -47,8 +47,8 @@ describe('debug node', function() {
|
|||||||
n1.emit("input", {payload:"test"});
|
n1.emit("input", {payload:"test"});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",name:"Debug",msg:"(string) test",
|
topic:"debug",data:{id:"n1",name:"Debug",msg:"test",
|
||||||
property:"payload"}
|
format:"string",property:"payload"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -63,7 +63,7 @@ describe('debug node', function() {
|
|||||||
n1.emit("input", {payload:"test"});
|
n1.emit("input", {payload:"test"});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",msg:"(string) test",property:"payload"}
|
topic:"debug",data:{id:"n1",msg:"test",property:"payload",format:"string"}
|
||||||
});
|
});
|
||||||
count++;
|
count++;
|
||||||
}, function() {
|
}, function() {
|
||||||
@ -93,7 +93,7 @@ describe('debug node', function() {
|
|||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",
|
topic:"debug",
|
||||||
data:{id:"n1",msg:'(Object) {\n "payload": "test"\n}'}
|
data:{id:"n1",msg:'{\n "payload": "test"\n}',format:"object"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -107,7 +107,7 @@ describe('debug node', function() {
|
|||||||
n1.emit("input", {payload:"test", foo:"bar"});
|
n1.emit("input", {payload:"test", foo:"bar"});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",msg:"(string) bar",property:"foo"}
|
topic:"debug",data:{id:"n1",msg:"bar",property:"foo",format:"string"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -121,7 +121,7 @@ describe('debug node', function() {
|
|||||||
n1.emit("input", {payload:"test", foo: {bar: "bar"}});
|
n1.emit("input", {payload:"test", foo: {bar: "bar"}});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",msg:"(string) bar",property:"foo.bar"}
|
topic:"debug",data:{id:"n1",msg:"bar",property:"foo.bar",format:"string"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -135,7 +135,7 @@ describe('debug node', function() {
|
|||||||
n1.emit("input", {payload: new Error("oops")});
|
n1.emit("input", {payload: new Error("oops")});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",msg:"Error: oops",property:"payload"}
|
topic:"debug",data:{id:"n1",msg:"Error: oops",property:"payload",format:"error"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -149,7 +149,7 @@ describe('debug node', function() {
|
|||||||
n1.emit("input", {payload: true});
|
n1.emit("input", {payload: true});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",msg: '(boolean) true',property:"payload"}
|
topic:"debug",data:{id:"n1",msg: 'true',property:"payload",format:"boolean"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -163,7 +163,7 @@ describe('debug node', function() {
|
|||||||
n1.emit("input", {});
|
n1.emit("input", {});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",msg: '(undefined)',property:"payload"}
|
topic:"debug",data:{id:"n1",msg: '(undefined)',property:"payload",format:"undefined"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -178,7 +178,7 @@ describe('debug node', function() {
|
|||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",
|
topic:"debug",
|
||||||
data:{id:"n1",msg:'(Object) {\n "type": "foo"\n}',property:"payload"}
|
data:{id:"n1",msg:'{\n "type": "foo"\n}',property:"payload",format:"object"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
@ -193,7 +193,7 @@ describe('debug node', function() {
|
|||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",
|
topic:"debug",
|
||||||
data:{id:"n1",msg: '(Array) [\n 0,\n 1,\n 2,\n 3\n]',
|
data:{id:"n1",msg: '[\n 0,\n 1,\n 2,\n 3\n]',format:"array",
|
||||||
property:"payload"}
|
property:"payload"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
@ -213,8 +213,8 @@ describe('debug node', function() {
|
|||||||
topic:"debug",
|
topic:"debug",
|
||||||
data:{
|
data:{
|
||||||
id:"n1",
|
id:"n1",
|
||||||
msg:'(Object) {\n "name": "bar",\n "o": "[circular]"\n}',
|
msg:'{\n "name": "bar",\n "o": "[circular]"\n}',
|
||||||
property:"payload"
|
property:"payload",format:"object"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
@ -228,12 +228,14 @@ describe('debug node', function() {
|
|||||||
websocket_test(function() {
|
websocket_test(function() {
|
||||||
n1.emit("input", {payload: Array(1002).join("X")});
|
n1.emit("input", {payload: Array(1002).join("X")});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
var a = JSON.parse(msg);
|
||||||
|
a.should.eql({
|
||||||
topic:"debug",
|
topic:"debug",
|
||||||
data:{
|
data:{
|
||||||
id:"n1",
|
id:"n1",
|
||||||
msg: "(string) "+Array(992).join("X")+' ....',
|
msg: Array(1001).join("X")+' ....',
|
||||||
property:"payload"
|
property:"payload",
|
||||||
|
format:"string"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
@ -251,8 +253,9 @@ describe('debug node', function() {
|
|||||||
topic:"debug",
|
topic:"debug",
|
||||||
data:{
|
data:{
|
||||||
id:"n1",
|
id:"n1",
|
||||||
msg: '(Buffer) 48454c4c4f',
|
msg: '48454c4c4f',
|
||||||
property:"payload"
|
property:"payload",
|
||||||
|
format: "buffer"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
@ -273,7 +276,7 @@ describe('debug node', function() {
|
|||||||
});
|
});
|
||||||
}, function(msg) {
|
}, function(msg) {
|
||||||
JSON.parse(msg).should.eql({
|
JSON.parse(msg).should.eql({
|
||||||
topic:"debug",data:{id:"n1",msg:"(string) message 2",property:"payload"}
|
topic:"debug",data:{id:"n1",msg:"message 2",property:"payload",format:"string"}
|
||||||
});
|
});
|
||||||
}, done);
|
}, done);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user