").parent();
this.uiContainer.addClass("red-ui-searchBox-container");
-
+ if (this.element.parents("form").length === 0) {
+ var form = this.element.wrap("
';
- RED.sidebar.info.set(aboutHeader+marked(data));
+ RED.sidebar.info.set(aboutHeader+RED.utils.renderMarkdown(data));
RED.sidebar.info.show();
});
}
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/expression.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/expression.js
index c8a93964d..9a9765c35 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/expression.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/expression.js
@@ -102,7 +102,7 @@
var f = $(this).val();
var args = RED._('jsonata:'+f+".args",{defaultValue:''});
var title = "
"+f+"("+args+")
";
- var body = marked(RED._('jsonata:'+f+'.desc',{defaultValue:''}));
+ var body = RED.utils.renderMarkdown(RED._('jsonata:'+f+'.desc',{defaultValue:''}));
$("#red-ui-editor-type-expression-help").html(title+"
"}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}).call(function(){return this||(typeof window!=="undefined"?window:global)}());
\ No newline at end of file
From 40c3099e4e4f4eafa5e1f5ccedcd8608726d2d23 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Mon, 24 Feb 2020 11:41:27 +0000
Subject: [PATCH 15/55] Avoid adding extra newlines when formating jsonata
Fixes #2472
---
.../@node-red/editor-client/src/vendor/jsonata/formatter.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js b/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js
index 382537be3..9fbab4fbf 100644
--- a/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js
+++ b/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js
@@ -59,8 +59,8 @@
stack.pop();
}
}
-
}
+
// console.log(stack);
var result = str;
var indent = 0;
@@ -83,7 +83,7 @@
pre = result.substring(0,offset+f.pos+1);
post = result.substring(offset+f.pos+1);
indented = indentLine(post,indent);
- result = pre+"\n"+indented;
+ result = pre+(/\n$/.test(pre)?"":"\n")+indented;
offset += indented.length-post.length+1;
} else {
longStack.push(false);
@@ -94,7 +94,7 @@
pre = result.substring(0,offset+f.pos);
post = result.substring(offset+f.pos);
indented = indentLine(post,indent);
- result = pre+"\n"+indented;
+ result = pre+(/\n$/.test(pre)?"":"\n")+indented;
offset += indented.length-post.length+1;
}
longStack.pop();
From 04d398192190db914869a52a278386e14de2f551 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Mon, 24 Feb 2020 11:42:56 +0000
Subject: [PATCH 16/55] Bump to jsonata 1.8.1
---
package.json | 2 +-
packages/node_modules/@node-red/util/package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 3db93d8c6..a410aa12f 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"is-utf8": "0.2.1",
"js-yaml": "3.13.1",
"json-stringify-safe": "5.0.1",
- "jsonata": "1.8.0",
+ "jsonata": "1.8.1",
"media-typer": "1.1.0",
"memorystore": "1.6.1",
"mime": "2.4.4",
diff --git a/packages/node_modules/@node-red/util/package.json b/packages/node_modules/@node-red/util/package.json
index 411c35a7c..9ad86f6c9 100644
--- a/packages/node_modules/@node-red/util/package.json
+++ b/packages/node_modules/@node-red/util/package.json
@@ -18,7 +18,7 @@
"clone": "2.1.2",
"i18next": "15.1.2",
"json-stringify-safe": "5.0.1",
- "jsonata": "1.8.0",
+ "jsonata": "1.8.1",
"when": "3.7.8"
}
}
From e16fe1e6a514572854fcc776892fe06716c1a061 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Mon, 24 Feb 2020 13:27:42 +0000
Subject: [PATCH 17/55] Add better regex highlighting in jsonata edit mode
Fixes #2465
---
.../src/vendor/jsonata/mode-jsonata.js | 82 ++++++++++++-------
1 file changed, 52 insertions(+), 30 deletions(-)
diff --git a/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/mode-jsonata.js b/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/mode-jsonata.js
index 2a90e4ce7..48358517e 100644
--- a/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/mode-jsonata.js
+++ b/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/mode-jsonata.js
@@ -28,6 +28,11 @@ ace.define("ace/mode/jsonata",["require","exports","module","ace/lib/oop","ace/m
}, "identifier");
this.$rules = {
"start" : [
+ {
+ token: "string.regexp",
+ regex: "\\/",
+ next: "regex"
+ },
{
token : "string",
regex : "'(?=.)",
@@ -46,34 +51,35 @@ ace.define("ace/mode/jsonata",["require","exports","module","ace/lib/oop","ace/m
token : "constant.numeric", // float
regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
},
- { token: "keyword",
- regex: /λ/
- },
- {
- token: "keyword",
- regex: jsonataFunctions
- },
- {
- token : keywordMapper,
- regex : "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"
- },
- {
- token : "punctuation.operator",
- regex : /[.](?![.])/
- },
- {
- token : "keyword.operator",
- regex : /\|\||<=|>=|\.\.|\*\*|!=|:=|[=<>`!$%&*+\-~\/^]/,
- next : "start"
- },
- {
- token : "punctuation.operator",
- regex : /[?:,;.]/,
- next : "start"
- },
- {
- token : "paren.lparen",
- regex : /[\[({]/,
+ {
+ token: "keyword",
+ regex: /λ/
+ },
+ {
+ token: "keyword",
+ regex: jsonataFunctions
+ },
+ {
+ token : keywordMapper,
+ regex : "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"
+ },
+ {
+ token : "punctuation.operator",
+ regex : /[.](?![.])/
+ },
+ {
+ token : "keyword.operator",
+ regex : /\|\||<=|>=|\.\.|\*\*|!=|:=|[=<>`!$%&*+\-~\/^]/,
+ next : "start"
+ },
+ {
+ token : "punctuation.operator",
+ regex : /[?:,;.]/,
+ next : "start"
+ },
+ {
+ token : "paren.lparen",
+ regex : /[\[({]/,
next : "start"
},
{
@@ -86,7 +92,8 @@ ace.define("ace/mode/jsonata",["require","exports","module","ace/lib/oop","ace/m
token : "string",
regex : '"|$',
next : "start"
- }, {
+ },
+ {
defaultToken: "string"
}
],
@@ -95,9 +102,24 @@ ace.define("ace/mode/jsonata",["require","exports","module","ace/lib/oop","ace/m
token : "string",
regex : "'|$",
next : "start"
- }, {
+ },
+ {
defaultToken: "string"
}
+ ],
+ "regex" : [
+ {
+ token: "string.regexp",
+ regex: "\\\\/"
+ },
+ {
+ token: "string.regexp",
+ regex: "/[sxngimy]*",
+ next: "start"
+ },
+ {
+ defaultToken: "string.regexp"
+ }
]
};
};
From 79feb691bdf0f8ff55d82304153858cfdd6fee40 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Mon, 24 Feb 2020 16:08:58 +0000
Subject: [PATCH 18/55] Add regex awareness to jsonata formatter
---
.../src/vendor/jsonata/formatter.js | 79 +++++++++++++++----
1 file changed, 62 insertions(+), 17 deletions(-)
diff --git a/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js b/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js
index 9fbab4fbf..49a02c206 100644
--- a/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js
+++ b/packages/node_modules/@node-red/editor-client/src/vendor/jsonata/formatter.js
@@ -11,6 +11,7 @@
var length = str.length;
var start = 0;
var inString = false;
+ var inRegex = false;
var inBox = false;
var quoteChar;
var list = [];
@@ -24,8 +25,13 @@
}
for (var i=0;i 70) {
+ post = result.substring(offset+f.pos+1);
+ if (!/^\n/.test(post)) {
+ indented = indentLine(post,indent);
+ hasNewline = /\n$/.test(pre);
+ result = pre+(hasNewline?"":"\n")+indented;
+ offset += indented.length-post.length+(hasNewline?0:1);
+ }
+ }
+
} else if (f.type === "open-block") {
- if (f.width > 30) {
+ if (f.width > 40) {
longStack.push(true);
indent += 4;
pre = result.substring(0,offset+f.pos+1);
post = result.substring(offset+f.pos+1);
+ hasNewline = /\n$/.test(pre);
indented = indentLine(post,indent);
- result = pre+(/\n$/.test(pre)?"":"\n")+indented;
- offset += indented.length-post.length+1;
+ result = pre+(hasNewline?"":"\n")+indented;
+ offset += indented.length-post.length+(hasNewline?0:1);
} else {
longStack.push(false);
}
} else if (f.type === "close-block") {
- if (f.width > 30) {
+ if (f.width > 40) {
indent -= 4;
pre = result.substring(0,offset+f.pos);
post = result.substring(offset+f.pos);
indented = indentLine(post,indent);
- result = pre+(/\n$/.test(pre)?"":"\n")+indented;
- offset += indented.length-post.length+1;
+ hasNewline = /\n *$/.test(pre);
+ if (hasNewline) {
+ result = pre + post;
+ } else {
+ result = pre+"\n"+indented;
+ offset += indented.length-post.length+1;
+ }
}
longStack.pop();
}
From 22de8855c19da76049eeab8f38090509ced40dce Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Mon, 24 Feb 2020 21:08:29 +0000
Subject: [PATCH 19/55] Handle httpAdminRoot missing ending slash with login
strategy Fixes #2473
---
packages/node_modules/@node-red/editor-api/lib/auth/index.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/packages/node_modules/@node-red/editor-api/lib/auth/index.js b/packages/node_modules/@node-red/editor-api/lib/auth/index.js
index a7ee2e7f3..189f903d8 100644
--- a/packages/node_modules/@node-red/editor-api/lib/auth/index.js
+++ b/packages/node_modules/@node-red/editor-api/lib/auth/index.js
@@ -100,7 +100,10 @@ function login(req,res) {
}
} else if (mergedAdminAuth.type === "strategy") {
- var urlPrefix = (settings.httpAdminRoot==='/')?"":settings.httpAdminRoot;
+ var urlPrefix = (settings.httpAdminRoot||"").replace(/\/$/,"");
+ if (urlPrefix.length > 0) {
+ urlPrefix += "/";
+ }
response = {
"type":"strategy",
"prompts":[{type:"button",label:mergedAdminAuth.strategy.label, url: urlPrefix + "auth/strategy"}]
From 01a143cd5af295b39cd93347edafab10221bbae9 Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones
Date: Mon, 24 Feb 2020 21:28:40 +0000
Subject: [PATCH 20/55] Emsure trigger complete 2nd msg when set to send latest
and add test
to close #2474
---
.../@node-red/nodes/core/function/89-trigger.js | 10 +++++-----
test/nodes/core/function/89-trigger_spec.js | 8 +++++---
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/core/function/89-trigger.js b/packages/node_modules/@node-red/nodes/core/function/89-trigger.js
index 48a595ccc..a068550e2 100644
--- a/packages/node_modules/@node-red/nodes/core/function/89-trigger.js
+++ b/packages/node_modules/@node-red/nodes/core/function/89-trigger.js
@@ -106,7 +106,9 @@ module.exports = function(RED) {
});
}
+ var npay;
this.on('input', function(msg) {
+ if (node.op2type === "payl") { npay = RED.util.cloneMessage(msg); }
processMessageQueue(msg);
});
@@ -124,7 +126,7 @@ module.exports = function(RED) {
else {
if (((!node.topics[topic].tout) && (node.topics[topic].tout !== 0)) || (node.loop === true)) {
promise = Promise.resolve();
- if (node.op2type === "pay" || node.op2type === "payl") { node.topics[topic].m2 = RED.util.cloneMessage(msg.payload); }
+ if (node.op2type === "pay") { node.topics[topic].m2 = RED.util.cloneMessage(msg.payload); }
else if (node.op2Templated) { node.topics[topic].m2 = mustache.render(node.op2,msg); }
else if (node.op2type !== "nul") {
promise = new Promise((resolve,reject) => {
@@ -188,7 +190,8 @@ module.exports = function(RED) {
promise.then(() => {
msg2.payload = node.topics[topic].m2;
delete node.topics[topic];
- node.send(msg2);
+ if (node.op2type === "payl") { node.send(npay); }
+ else { node.send(msg2); }
node.status({});
}).catch(err => {
node.error(err);
@@ -244,9 +247,6 @@ module.exports = function(RED) {
});
}, node.duration);
}
- else {
- if (node.op2type === "payl") { node.topics[topic].m2 = RED.util.cloneMessage(msg.payload); }
- }
}
return Promise.resolve();
}
diff --git a/test/nodes/core/function/89-trigger_spec.js b/test/nodes/core/function/89-trigger_spec.js
index 5f7bfc2d1..be0094ccf 100644
--- a/test/nodes/core/function/89-trigger_spec.js
+++ b/test/nodes/core/function/89-trigger_spec.js
@@ -736,10 +736,12 @@ describe('trigger node', function() {
try {
if (c === 0) {
msg.should.have.a.property("payload", "Goodbye");
+ msg.should.have.a.property("topic", "test2");
c += 1;
}
else {
msg.should.have.a.property("payload", "World");
+ msg.should.have.a.property("topic", "test3");
(Date.now() - ss).should.be.greaterThan(70);
done();
}
@@ -747,12 +749,12 @@ describe('trigger node', function() {
catch(err) { done(err); }
});
var ss = Date.now();
- n1.emit("input", {payload:"Hello"});
+ n1.emit("input", {payload:"Hello", topic:"test1"});
setTimeout( function() {
- n1.emit("input", {payload:"Goodbye"});
+ n1.emit("input", {payload:"Goodbye", topic:"test2"});
},20);
setTimeout( function() {
- n1.emit("input", {payload:"World"});
+ n1.emit("input", {payload:"World", topic:"test3"});
},80);
});
});
From 1fd4b2b9fc817bb4c14c0d6bacc3c5c3a67e5181 Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones
Date: Mon, 24 Feb 2020 21:31:01 +0000
Subject: [PATCH 21/55] join node - check existance before clearing timeout
---
packages/node_modules/@node-red/nodes/core/sequence/17-split.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js
index 5d93c8faf..0492a0dc2 100644
--- a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js
+++ b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js
@@ -429,7 +429,7 @@ module.exports = function(RED) {
var completeSend = function(partId) {
var group = inflight[partId];
- clearTimeout(group.timeout);
+ if (group.timeout) { clearTimeout(group.timeout); }
if ((node.accumulate !== true) || group.msg.hasOwnProperty("complete")) { delete inflight[partId]; }
if (group.type === 'array' && group.arrayLen > 1) {
var newArray = [];
From 608834eafbee4c3b48f60748d99ca1bc5e3e3e06 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Mon, 24 Feb 2020 21:49:58 +0000
Subject: [PATCH 22/55] Ensure IPv6 broker names are wrapped in brackets Fixes
#2462
---
.../node_modules/@node-red/nodes/core/network/10-mqtt.js | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js
index 6f682b279..3f5b2dff4 100644
--- a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js
+++ b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js
@@ -153,7 +153,12 @@ module.exports = function(RED) {
this.brokerurl="mqtt://";
}
if (this.broker !== "") {
- this.brokerurl = this.brokerurl+this.broker+":";
+ //Check for an IPv6 address
+ if (/(?:^|(?<=\s))(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))(?=\s|$)/.test(this.broker)) {
+ this.brokerurl = this.brokerurl+"["+this.broker+"]:";
+ } else {
+ this.brokerurl = this.brokerurl+this.broker+":";
+ }
// port now defaults to 1883 if unset.
if (!this.port){
this.brokerurl = this.brokerurl+"1883";
From 5ecf8c83db90f9022ec02c2b64aa26200bdcac4e Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Tue, 25 Feb 2020 18:46:02 +0900
Subject: [PATCH 23/55] Support to input JSON path in debug node property
---
test/editor/pageobjects/nodes/core/common/21-debug_page.js | 2 ++
test/editor/specs/scenario/cookbook_httprequests_uispec.js | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/test/editor/pageobjects/nodes/core/common/21-debug_page.js b/test/editor/pageobjects/nodes/core/common/21-debug_page.js
index 602d4d542..56854b195 100644
--- a/test/editor/pageobjects/nodes/core/common/21-debug_page.js
+++ b/test/editor/pageobjects/nodes/core/common/21-debug_page.js
@@ -33,6 +33,8 @@ debugNode.prototype.setOutput = function (complete) {
// Select the "msg" type.
browser.clickWithWait('//div[contains(@class, "red-ui-typedInput-options")][1]/a[1]');
// Input the path in msg.
+ browser.clickWithWait('//*[contains(@class, "red-ui-typedInput-input")]/input');
+ browser.keys(Array('payload'.length).fill('Backspace'));
browser.setValue('//*[contains(@class, "red-ui-typedInput-input")]/input', complete);
} else {
// Select the "complete msg object" type.
diff --git a/test/editor/specs/scenario/cookbook_httprequests_uispec.js b/test/editor/specs/scenario/cookbook_httprequests_uispec.js
index 785451429..797b06041 100644
--- a/test/editor/specs/scenario/cookbook_httprequests_uispec.js
+++ b/test/editor/specs/scenario/cookbook_httprequests_uispec.js
@@ -190,7 +190,7 @@ describe('cookbook', function () {
httpRequestNode.clickOk();
debugNode.edit();
- debugNode.setOutput('.title');
+ debugNode.setOutput('payload.title');
debugNode.clickOk();
injectNode.connect(changeNodeSetPost);
From f7d2314d64eb0af5fa0db9f9af942da462531fb5 Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Tue, 25 Feb 2020 19:01:17 +0900
Subject: [PATCH 24/55] Add page object code for split node and remove
duplicated code
---
.../editor/pageobjects/nodes/core/sequence/17-split_page.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/test/editor/pageobjects/nodes/core/sequence/17-split_page.js b/test/editor/pageobjects/nodes/core/sequence/17-split_page.js
index 6029e4d90..3c8c70aa5 100644
--- a/test/editor/pageobjects/nodes/core/sequence/17-split_page.js
+++ b/test/editor/pageobjects/nodes/core/sequence/17-split_page.js
@@ -18,13 +18,13 @@ var util = require('util');
var nodePage = require('../../node_page');
-function joinNode(id) {
+function splitNode(id) {
nodePage.call(this, id);
}
-util.inherits(joinNode, nodePage);
+util.inherits(splitNode, nodePage);
-module.exports = joinNode;
+module.exports = splitNode;
function joinNode(id) {
nodePage.call(this, id);
From 21c57f968a0f92e696dbc532a6669995645e24b6 Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Tue, 25 Feb 2020 19:02:46 +0900
Subject: [PATCH 25/55] Add page object code for nodes
---
.../editor/pageobjects/editor/palette_page.js | 8 +++-
.../nodes/core/common/24-complete_page.js | 47 ++++++++++++++++++
.../nodes/core/common/25-catch_page.js | 48 +++++++++++++++++++
.../nodes/core/common/25-status_page.js | 48 +++++++++++++++++++
.../nodes/core/common/90-comment_page.js | 27 +++++++++++
.../nodes/core/function/89-delay_page.js | 33 +++++++++++++
.../nodes/core/sequence/19-batch_page.js | 39 +++++++++++++++
.../pageobjects/nodes/nodefactory_page.js | 12 +++++
8 files changed, 261 insertions(+), 1 deletion(-)
create mode 100644 test/editor/pageobjects/nodes/core/common/24-complete_page.js
create mode 100644 test/editor/pageobjects/nodes/core/common/25-catch_page.js
create mode 100644 test/editor/pageobjects/nodes/core/common/25-status_page.js
create mode 100644 test/editor/pageobjects/nodes/core/common/90-comment_page.js
create mode 100644 test/editor/pageobjects/nodes/core/function/89-delay_page.js
create mode 100644 test/editor/pageobjects/nodes/core/sequence/19-batch_page.js
diff --git a/test/editor/pageobjects/editor/palette_page.js b/test/editor/pageobjects/editor/palette_page.js
index 97077059b..6af0b5271 100644
--- a/test/editor/pageobjects/editor/palette_page.js
+++ b/test/editor/pageobjects/editor/palette_page.js
@@ -18,11 +18,16 @@ var idMap = {
// common
"inject": ".red-ui-palette-node[data-palette-type='inject']",
"debug": ".red-ui-palette-node[data-palette-type='debug']",
+ "complete": ".red-ui-palette-node[data-palette-type='complete']",
+ "catch": ".red-ui-palette-node[data-palette-type='catch']",
+ "status": ".red-ui-palette-node[data-palette-type='status']",
+ "comment": ".red-ui-palette-node[data-palette-type='comment']",
// function
"function": ".red-ui-palette-node[data-palette-type='function']",
"change": ".red-ui-palette-node[data-palette-type='change']",
"range": ".red-ui-palette-node[data-palette-type='range']",
"template": ".red-ui-palette-node[data-palette-type='template']",
+ "delay": ".red-ui-palette-node[data-palette-type='delay']",
// network
"mqttIn": ".red-ui-palette-node[data-palette-type='mqtt in']",
"mqttOut": ".red-ui-palette-node[data-palette-type='mqtt out']",
@@ -30,8 +35,9 @@ var idMap = {
"httpResponse": ".red-ui-palette-node[data-palette-type='http response']",
"httpRequest": ".red-ui-palette-node[data-palette-type='http request']",
// sequence
- "join": ".red-ui-palette-node[data-palette-type='join']",
"split": ".red-ui-palette-node[data-palette-type='split']",
+ "join": ".red-ui-palette-node[data-palette-type='join']",
+ "batch": ".red-ui-palette-node[data-palette-type='batch']",
// parser
"csv": ".red-ui-palette-node[data-palette-type='csv']",
"html": ".red-ui-palette-node[data-palette-type='html']",
diff --git a/test/editor/pageobjects/nodes/core/common/24-complete_page.js b/test/editor/pageobjects/nodes/core/common/24-complete_page.js
new file mode 100644
index 000000000..558ee709a
--- /dev/null
+++ b/test/editor/pageobjects/nodes/core/common/24-complete_page.js
@@ -0,0 +1,47 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+var util = require('util');
+
+var nodePage = require('../../node_page');
+
+function completeNode(id) {
+ nodePage.call(this, id);
+}
+
+util.inherits(completeNode, nodePage);
+
+completeNode.prototype.setScope = function (scope) {
+ if (scope) {
+ browser.clickWithWait('//*[@id="node-input-complete-target-select"]');
+ browser.pause(1000);
+ if (Array.isArray(scope)) {
+ for (var i = 0; i < scope.length; i++) {
+ browser.moveToObject(scope[i].id);
+ browser.buttonDown();
+ browser.buttonUp();
+ }
+ } else {
+ browser.moveToObject(scope.id);
+ browser.buttonDown();
+ browser.buttonUp();
+ }
+ browser.clickWithWait('//*[contains(@class, "red-ui-notification")]/div/button[2]');
+ browser.pause(1000);
+ }
+}
+
+module.exports = completeNode;
diff --git a/test/editor/pageobjects/nodes/core/common/25-catch_page.js b/test/editor/pageobjects/nodes/core/common/25-catch_page.js
new file mode 100644
index 000000000..89bcb7f1e
--- /dev/null
+++ b/test/editor/pageobjects/nodes/core/common/25-catch_page.js
@@ -0,0 +1,48 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+var util = require('util');
+
+var nodePage = require('../../node_page');
+
+function catchNode(id) {
+ nodePage.call(this, id);
+}
+
+util.inherits(catchNode, nodePage);
+
+catchNode.prototype.setScope = function (scope) {
+ if (scope) {
+ browser.selectWithWait('#node-input-scope-select', 'target');
+ browser.clickWithWait('//*[@id="node-input-catch-target-select"]');
+ browser.pause(1000);
+ if (Array.isArray(scope)) {
+ for (var i = 0; i < scope.length; i++) {
+ browser.moveToObject(scope[i].id);
+ browser.buttonDown();
+ browser.buttonUp();
+ }
+ } else {
+ browser.moveToObject(scope.id);
+ browser.buttonDown();
+ browser.buttonUp();
+ }
+ browser.clickWithWait('//*[contains(@class, "red-ui-notification")]/div/button[2]');
+ browser.pause(1000);
+ }
+}
+
+module.exports = catchNode;
diff --git a/test/editor/pageobjects/nodes/core/common/25-status_page.js b/test/editor/pageobjects/nodes/core/common/25-status_page.js
new file mode 100644
index 000000000..6de0fcde7
--- /dev/null
+++ b/test/editor/pageobjects/nodes/core/common/25-status_page.js
@@ -0,0 +1,48 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+var util = require('util');
+
+var nodePage = require('../../node_page');
+
+function statusNode(id) {
+ nodePage.call(this, id);
+}
+
+util.inherits(statusNode, nodePage);
+
+statusNode.prototype.setScope = function (scope) {
+ if (scope) {
+ browser.selectWithWait('#node-input-scope-select', 'target');
+ browser.clickWithWait('//*[@id="node-input-status-target-select"]');
+ browser.pause(1000);
+ if (Array.isArray(scope)) {
+ for (var i = 0; i < scope.length; i++) {
+ browser.moveToObject(scope[i].id);
+ browser.buttonDown();
+ browser.buttonUp();
+ }
+ } else {
+ browser.moveToObject(scope.id);
+ browser.buttonDown();
+ browser.buttonUp();
+ }
+ browser.clickWithWait('//*[contains(@class, "red-ui-notification")]/div/button[2]');
+ browser.pause(1000);
+ }
+}
+
+module.exports = statusNode;
diff --git a/test/editor/pageobjects/nodes/core/common/90-comment_page.js b/test/editor/pageobjects/nodes/core/common/90-comment_page.js
new file mode 100644
index 000000000..2687dacfe
--- /dev/null
+++ b/test/editor/pageobjects/nodes/core/common/90-comment_page.js
@@ -0,0 +1,27 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+var util = require('util');
+
+var nodePage = require('../../node_page');
+
+function commentNode(id) {
+ nodePage.call(this, id);
+}
+
+util.inherits(commentNode, nodePage);
+
+module.exports = commentNode;
diff --git a/test/editor/pageobjects/nodes/core/function/89-delay_page.js b/test/editor/pageobjects/nodes/core/function/89-delay_page.js
new file mode 100644
index 000000000..a4e2197e4
--- /dev/null
+++ b/test/editor/pageobjects/nodes/core/function/89-delay_page.js
@@ -0,0 +1,33 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+var util = require("util");
+
+var nodePage = require("../../node_page");
+
+var keyPage = require("../../../util/key_page");
+
+function delayNode(id) {
+ nodePage.call(this, id);
+}
+
+util.inherits(delayNode, nodePage);
+
+delayNode.prototype.setTimeout = function (timeout) {
+ browser.setValue('//*[@id="node-input-timeout"]', timeout);
+}
+
+module.exports = delayNode;
diff --git a/test/editor/pageobjects/nodes/core/sequence/19-batch_page.js b/test/editor/pageobjects/nodes/core/sequence/19-batch_page.js
new file mode 100644
index 000000000..0d7b13028
--- /dev/null
+++ b/test/editor/pageobjects/nodes/core/sequence/19-batch_page.js
@@ -0,0 +1,39 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+var util = require('util');
+
+var nodePage = require('../../node_page');
+
+function batchNode(id) {
+ nodePage.call(this, id);
+}
+
+batchNode.prototype.setMode = function (mode) {
+ browser.selectWithWait('#node-input-mode', mode);
+}
+
+batchNode.prototype.setCount = function (count) {
+ browser.setValue('#node-input-count', count);
+}
+
+batchNode.prototype.setOverlap = function (overlap) {
+ browser.setValue('#node-input-overlap', overlap);
+}
+
+util.inherits(batchNode, nodePage);
+
+module.exports = batchNode;
diff --git a/test/editor/pageobjects/nodes/nodefactory_page.js b/test/editor/pageobjects/nodes/nodefactory_page.js
index 33193e112..17949e313 100644
--- a/test/editor/pageobjects/nodes/nodefactory_page.js
+++ b/test/editor/pageobjects/nodes/nodefactory_page.js
@@ -16,10 +16,15 @@
var injectNode = require('./core/common/20-inject_page');
var debugNode = require('./core/common/21-debug_page');
+var completeNode = require('./core/common/24-complete_page');
+var catchNode = require('./core/common/25-catch_page');
+var statusNode = require('./core/common/25-status_page');
+var commentNode = require('./core/common/90-comment_page');
var functionNode = require('./core/function/10-function_page');
var changeNode = require('./core/function/15-change_page');
var rangeNode = require('./core/function/16-range_page');
var templateNode = require('./core/function/80-template_page');
+var delayNode = require('./core/function/89-delay_page');
var mqttInNode = require('./core/network/10-mqttin_page');
var mqttOutNode = require('./core/network/10-mqttout_page');
var httpInNode = require('./core/network/21-httpin_page');
@@ -27,6 +32,7 @@ var httpResponseNode = require('./core/network/21-httpresponse_page');
var httpRequestNode = require('./core/network/21-httprequest_page');
var splitNode = require('./core/sequence/17-split_page');
var joinNode = require('./core/sequence/17-split_page');
+var batchNode = require('./core/sequence/19-batch_page');
var csvNode = require('./core/parsers/70-CSV_page');
var htmlNode = require('./core/parsers/70-HTML_page');
var jsonNode = require('./core/parsers/70-JSON_page');
@@ -38,11 +44,16 @@ var nodeCatalog = {
// common
"inject": injectNode,
"debug": debugNode,
+ "complete": completeNode,
+ "catch": catchNode,
+ "status": statusNode,
+ "comment": commentNode,
// function
"function": functionNode,
"change": changeNode,
"range": rangeNode,
"template": templateNode,
+ "delay": delayNode,
// network
"mqttIn": mqttInNode,
"mqttOut": mqttOutNode,
@@ -52,6 +63,7 @@ var nodeCatalog = {
// sequence
"split": splitNode,
"join": joinNode,
+ "batch": batchNode,
// parser
"csv": csvNode,
"html": htmlNode,
From 00477fd67a159faf3fb26cefea503fbd483a2b6a Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Tue, 25 Feb 2020 19:56:48 +0900
Subject: [PATCH 26/55] Add UI test case for error handling
---
.../scenario/cookbook_errorhandling_uispec.js | 74 +++++++++++++++++++
1 file changed, 74 insertions(+)
create mode 100644 test/editor/specs/scenario/cookbook_errorhandling_uispec.js
diff --git a/test/editor/specs/scenario/cookbook_errorhandling_uispec.js b/test/editor/specs/scenario/cookbook_errorhandling_uispec.js
new file mode 100644
index 000000000..5285c5c0f
--- /dev/null
+++ b/test/editor/specs/scenario/cookbook_errorhandling_uispec.js
@@ -0,0 +1,74 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+var when = require('when');
+var should = require('should');
+var fs = require('fs-extra');
+
+var helper = require('../../editor_helper');
+var debugTab = require('../../pageobjects/editor/debugTab_page');
+var workspace = require('../../pageobjects/editor/workspace_page');
+var specUtil = require('../../pageobjects/util/spec_util_page');
+
+var httpNodeRoot = '/api';
+
+// https://cookbook.nodered.org/
+describe('cookbook', function () {
+ beforeEach(function () {
+ workspace.init();
+ });
+
+ before(function () {
+ helper.startServer();
+ });
+
+ after(function () {
+ helper.stopServer();
+ });
+
+ describe('messages', function () {
+ it('trigger a flow when a node throws an error', function () {
+ var injectNode = workspace.addNode('inject');
+ var functionNode = workspace.addNode('function');
+ var catchNode = workspace.addNode('catch', 0 , 80);
+ var debugNode = workspace.addNode('debug');
+
+ functionNode.edit();
+ functionNode.setFunction('node.error("an example error", msg);');
+ functionNode.clickOk();
+
+ catchNode.edit();
+ catchNode.setScope(functionNode);
+ catchNode.clickOk();
+
+ debugNode.edit();
+ debugNode.setOutput('error');
+ debugNode.clickOk();
+
+ injectNode.connect(functionNode);
+ catchNode.connect(debugNode);
+
+ workspace.deploy();
+
+ debugTab.open();
+ injectNode.clickLeftButton();
+ debugTab.getMessage().should.eql(['"an example error"', 'function']);
+ });
+
+ // skip this case since the flow outputs random results.
+ it.skip('automatically retry an action after an error');
+ });
+});
From 1868289b7127e372be9b2eb72e61240e89be2b53 Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones
Date: Tue, 25 Feb 2020 22:15:53 +0000
Subject: [PATCH 27/55] Better fix for trigegr 2nd message in last payload mode
Now works correctly in multiple topics mode.
And update tests
---
.../nodes/core/function/89-trigger.js | 15 +++++---
test/nodes/core/function/89-trigger_spec.js | 35 +++++++++++++++++++
2 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/core/function/89-trigger.js b/packages/node_modules/@node-red/nodes/core/function/89-trigger.js
index a068550e2..4debeacde 100644
--- a/packages/node_modules/@node-red/nodes/core/function/89-trigger.js
+++ b/packages/node_modules/@node-red/nodes/core/function/89-trigger.js
@@ -76,6 +76,7 @@ module.exports = function(RED) {
var node = this;
node.topics = {};
+ var npay = {};
var pendingMessages = [];
var activeMessagePromise = null;
var processMessageQueue = function(msg) {
@@ -106,9 +107,7 @@ module.exports = function(RED) {
});
}
- var npay;
this.on('input', function(msg) {
- if (node.op2type === "payl") { npay = RED.util.cloneMessage(msg); }
processMessageQueue(msg);
});
@@ -124,6 +123,7 @@ module.exports = function(RED) {
node.status({});
}
else {
+ if (node.op2type === "payl") { npay[topic] = RED.util.cloneMessage(msg); }
if (((!node.topics[topic].tout) && (node.topics[topic].tout !== 0)) || (node.loop === true)) {
promise = Promise.resolve();
if (node.op2type === "pay") { node.topics[topic].m2 = RED.util.cloneMessage(msg.payload); }
@@ -188,10 +188,15 @@ module.exports = function(RED) {
});
}
promise.then(() => {
- msg2.payload = node.topics[topic].m2;
+ if (node.op2type === "payl") {
+ node.send(npay[topic]);
+ delete npay[topic];
+ }
+ else {
+ msg2.payload = node.topics[topic].m2;
+ node.send(msg2);
+ }
delete node.topics[topic];
- if (node.op2type === "payl") { node.send(npay); }
- else { node.send(msg2); }
node.status({});
}).catch(err => {
node.error(err);
diff --git a/test/nodes/core/function/89-trigger_spec.js b/test/nodes/core/function/89-trigger_spec.js
index be0094ccf..7d7450580 100644
--- a/test/nodes/core/function/89-trigger_spec.js
+++ b/test/nodes/core/function/89-trigger_spec.js
@@ -759,6 +759,41 @@ describe('trigger node', function() {
});
});
+ it('should be able output the 2nd payload and handle multiple topics', function(done) {
+ var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", extend:"false", op1type:"nul", op2type:"payl", op1:"false", op2:"true", duration:"80", bytopic:"topic", wires:[["n2"]] },
+ {id:"n2", type:"helper"} ];
+ helper.load(triggerNode, flow, function() {
+ var n1 = helper.getNode("n1");
+ var n2 = helper.getNode("n2");
+ var c = 0;
+ n2.on("input", function(msg) {
+ try {
+ if (c === 0) {
+ msg.should.have.a.property("payload", "Goodbye1");
+ msg.should.have.a.property("topic", "test1");
+ c += 1;
+ }
+ else {
+ msg.should.have.a.property("payload", "Goodbye2");
+ msg.should.have.a.property("topic", "test2");
+ done();
+ }
+ }
+ catch(err) { done(err); }
+ });
+ n1.emit("input", {payload:"Hello1", topic:"test1"});
+ setTimeout( function() {
+ n1.emit("input", {payload:"Hello2", topic:"test2"});
+ },20);
+ setTimeout( function() {
+ n1.emit("input", {payload:"Goodbye2", topic:"test2"});
+ },20);
+ setTimeout( function() {
+ n1.emit("input", {payload:"Goodbye1", topic:"test1"});
+ },20);
+ });
+ });
+
it('should be able to apply mustache templates to payloads', function(done) {
var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", op1type:"val", op2type:"val", op1:"{{payload}}", op2:"{{topic}}", duration:"50", wires:[["n2"]] },
{id:"n2", type:"helper"} ];
From 43970b404eef80bdf08bcd4a05e14011a5738702 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Tue, 25 Feb 2020 23:05:59 +0000
Subject: [PATCH 28/55] Update github templates
---
.github/ISSUE_TEMPLATE/--bug_report.md | 2 +-
.github/PULL_REQUEST_TEMPLATE.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/--bug_report.md b/.github/ISSUE_TEMPLATE/--bug_report.md
index 63923455e..7cdc9caad 100644
--- a/.github/ISSUE_TEMPLATE/--bug_report.md
+++ b/.github/ISSUE_TEMPLATE/--bug_report.md
@@ -1,6 +1,6 @@
---
name: Bug report
-about: Reproducable software issues in the core of Node-RED
+about: Reproducible software issues in the core of Node-RED
title: ''
labels: ''
assignees: ''
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 05fdacd51..92a0abb8a 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -29,6 +29,6 @@ the [forum](https://discourse.nodered.org) or
- [ ] I have read the [contribution guidelines](https://github.com/node-red/node-red/blob/master/CONTRIBUTING.md)
-- [ ] For non-bugfix PRs, I have discussed this change on the mailing list/slack team.
+- [ ] For non-bugfix PRs, I have discussed this change on the forum/slack team.
- [ ] I have run `grunt` to verify the unit tests pass
- [ ] I have added suitable unit tests to cover the new/changed functionality
From d09ee6611f5aceeb2e7fbee1f150af7b368a7c42 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Wed, 26 Feb 2020 11:37:37 +0000
Subject: [PATCH 29/55] Update dependencies
---
package.json | 18 +++++++++---------
.../@node-red/editor-api/package.json | 6 +++---
.../node_modules/@node-red/nodes/package.json | 10 +++++-----
.../@node-red/registry/package.json | 2 +-
4 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/package.json b/package.json
index a5c4816f4..335dddbb3 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
}
],
"dependencies": {
- "ajv": "6.10.2",
+ "ajv": "6.12.0",
"basic-auth": "2.0.1",
"bcryptjs": "2.4.3",
"body-parser": "1.19.0",
@@ -34,7 +34,7 @@
"cookie": "0.4.0",
"cookie-parser": "1.4.4",
"cors": "2.8.5",
- "cron": "1.7.2",
+ "cron": "1.8.2",
"denque": "1.4.1",
"express": "4.17.1",
"express-session": "1.17.0",
@@ -43,33 +43,33 @@
"hash-sum": "2.0.0",
"https-proxy-agent": "5.0.0",
"i18next": "15.1.2",
- "iconv-lite": "0.5.0",
+ "iconv-lite": "0.5.1",
"is-utf8": "0.2.1",
"js-yaml": "3.13.1",
"json-stringify-safe": "5.0.1",
"jsonata": "1.8.1",
"media-typer": "1.1.0",
- "memorystore": "1.6.1",
+ "memorystore": "1.6.2",
"mime": "2.4.4",
"mqtt": "2.18.8",
"multer": "1.4.2",
- "mustache": "3.0.2",
+ "mustache": "4.0.0",
"node-red-node-rbe": "^0.2.6",
"node-red-node-sentiment": "^0.1.6",
"node-red-node-tail": "^0.1.0",
"nopt": "4.0.1",
"oauth2orize": "1.11.0",
"on-headers": "1.0.2",
- "passport": "0.4.0",
+ "passport": "0.4.1",
"passport-http-bearer": "1.0.1",
"passport-oauth2-client-password": "0.1.2",
"raw-body": "2.4.1",
"request": "2.88.0",
"semver": "6.3.0",
- "uglify-js": "3.6.9",
+ "uglify-js": "3.8.0",
"when": "3.7.8",
"ws": "6.2.1",
- "xml2js": "0.4.22"
+ "xml2js": "0.4.23"
},
"optionalDependencies": {
"bcrypt": "3.0.6"
@@ -104,7 +104,7 @@
"mocha": "^5.2.0",
"mosca": "^2.8.3",
"node-red-node-test-helper": "^0.2.3",
- "node-sass": "^4.13.0",
+ "node-sass": "^4.13.1",
"should": "^8.4.0",
"sinon": "1.17.7",
"stoppable": "^1.1.0",
diff --git a/packages/node_modules/@node-red/editor-api/package.json b/packages/node_modules/@node-red/editor-api/package.json
index 824f4df5b..81be91b6d 100644
--- a/packages/node_modules/@node-red/editor-api/package.json
+++ b/packages/node_modules/@node-red/editor-api/package.json
@@ -24,13 +24,13 @@
"cors": "2.8.5",
"express-session": "1.17.0",
"express": "4.17.1",
- "memorystore": "1.6.1",
+ "memorystore": "1.6.2",
"mime": "2.4.4",
- "mustache": "3.0.2",
+ "mustache": "4.0.0",
"oauth2orize": "1.11.0",
"passport-http-bearer": "1.0.1",
"passport-oauth2-client-password": "0.1.2",
- "passport": "0.4.0",
+ "passport": "0.4.1",
"when": "3.7.8",
"ws": "6.2.1"
},
diff --git a/packages/node_modules/@node-red/nodes/package.json b/packages/node_modules/@node-red/nodes/package.json
index ca4e26626..1b707b95b 100644
--- a/packages/node_modules/@node-red/nodes/package.json
+++ b/packages/node_modules/@node-red/nodes/package.json
@@ -15,14 +15,14 @@
}
],
"dependencies": {
- "ajv": "6.10.2",
+ "ajv": "6.12.0",
"body-parser": "1.19.0",
"cheerio": "0.22.0",
"content-type": "1.0.4",
"cookie-parser": "1.4.4",
"cookie": "0.4.0",
"cors": "2.8.5",
- "cron": "1.7.2",
+ "cron": "1.8.2",
"denque": "1.4.1",
"fs-extra": "8.1.0",
"fs.notify": "0.0.4",
@@ -33,12 +33,12 @@
"media-typer": "1.1.0",
"mqtt": "2.18.8",
"multer": "1.4.2",
- "mustache": "3.0.2",
+ "mustache": "4.0.0",
"on-headers": "1.0.2",
"raw-body": "2.4.1",
"request": "2.88.0",
"ws": "6.2.1",
- "xml2js": "0.4.22",
- "iconv-lite": "0.5.0"
+ "xml2js": "0.4.23",
+ "iconv-lite": "0.5.1"
}
}
diff --git a/packages/node_modules/@node-red/registry/package.json b/packages/node_modules/@node-red/registry/package.json
index fefb24360..c1ee06050 100644
--- a/packages/node_modules/@node-red/registry/package.json
+++ b/packages/node_modules/@node-red/registry/package.json
@@ -18,7 +18,7 @@
"dependencies": {
"@node-red/util": "1.0.3",
"semver": "6.3.0",
- "uglify-js": "3.6.9",
+ "uglify-js": "3.8.0",
"when": "3.7.8"
}
}
From cc5fdd984459f74bb022bfc4f34d7a4f95eb8b7a Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Wed, 26 Feb 2020 13:17:03 +0000
Subject: [PATCH 30/55] Avoid adding extra divs to edit form to avoid size
miscalculation
---
.../node_modules/@node-red/editor-client/src/js/ui/editor.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js
index 9fb29833a..6641e9b88 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js
@@ -584,8 +584,8 @@ RED.editor = (function() {
// cases, and also prevent browser auto-fill of password
// - the elements cannot be hidden otherwise Chrome will ignore them.
// - the elements need to have id's that imply password/username
- $('').prependTo(dialogForm);
- $('').prependTo(dialogForm);
+ $('').prependTo(dialogForm);
+ $('').prependTo(dialogForm);
dialogForm.on("submit", function(e) { e.preventDefault();});
dialogForm.find('input').attr("autocomplete","off");
return dialogForm;
From 2a6bedbd8d2467da4b1f37607cd486902ba02a6a Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Thu, 27 Feb 2020 11:38:44 +0000
Subject: [PATCH 31/55] update changelog
---
CHANGELOG.md | 490 ++++++++++++++++++++++++++++-----------------------
1 file changed, 272 insertions(+), 218 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b7b75d30f..7ea3845c2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,57 @@
+#### 1.0.4: Maintenance Release
+
+Runtime
+
+ - Update all dependencies to latest fix versions
+ - Update JSONata to 1.8.1
+ - #2473 Handle httpAdminRoot missing ending slash with login strategy Fixes
+ - #2470 Update https-proxy-agent
+ - #2461 Allow credentials to be provided as part of /flows api
+ - #2444 Move receive metric position to better reflect async changes Fixes
+ - #2406 Improve file store error when cache disabled and sync api used Closes
+ - #2399 cloneMessage should handle undefined without throwing err Fixes
+ - #2418 Fix the library api routes to prevent too broad matching of regex URLs
+ - #2417 Remove undefined loadFlowLibrary call
+
+Editor
+
+ - #2465 Add better regex highlighting in jsonata edit mode Fixes
+ - Add regex awareness to jsonata formatter
+ - #2472 Avoid adding extra newlines when formating jsonata Fixes
+ - #2475 Add UI test case for error handling
+ - Avoid adding extra divs to edit form to avoid size miscalculation
+ - Upgrade to latest marked and dompurify libs
+ - Ensure catalog load errors are logged to the console
+ - #2460 Track context sidebar element paths to track formatting changes Fixes
+ - Battling Chrome Autocomplete, part 31: Wrap search input with form
+ - #2445 Trick chrome into autofilling dummy username/password inputs Fixes
+ - #2457 Fix garbled characters in library
+ - #2409 Filter palette using raw label not html formatted label Fixes
+ - #2400 Wrap long context values when displaying in sidebar Fixes
+ - Fix duplicating array item in visual json editor
+ - #2338 Modify history sidebar button positioning to handle long labels Fixes
+ - #2438 Add some auto-complete snippets to the nrjavascript mode Close
+ - #2430 Ignore disabled nodes when checking for invalid configs on deploy Closes
+ - #2442 #2458 #2453 Update zh-CN translations
+ - #2235 Add initial zh-TW translation
+ - Re-enable jshint on editor and fixup issues
+ - #2431 Remove unnecessary namespaces for i18n
+ - #2440 Support BrowserStack in UI testing
+ - #2358 Add path property to debug messages Fixes
+ - Fix false change detection when no config node selected
+ - Fix IME bug in text editor
+ - Make node highlighting a bit more obvious for busy flows
+ - #2392 Add icons and support i18n in typedInput of JSON editor
+
+Nodes
+ - #2462 MQTT: Ensure IPv6 broker names are wrapped in brackets Fixes
+ - Join node - check existance before clearing timeout
+ - Trigger: Complete 2nd msg when set to send latest
+ - TCP: clarify text regarding blank parameters.
+ - #2449 HTTP Request: Add HEAD as Method
+ - Make min-height for change, switch, batch and mqtt consistent
+
+
#### 1.0.3: Maintenance Release
Runtime
@@ -44,7 +98,7 @@ Runtime
Editor
- Ensure node status is refreshed whenever node is edited
- - #2315 #2316 Ensure z property included in full message debug payload
+ - #2316 Ensure z property included in full message debug payload #2315
- #2321 Fixed editor.json (JA nls)
- #2313 Fix element to collapse items in visual JSON editor
- #2314 Insert divider in menu by calling RED.menu.addItem('id', null);
@@ -113,9 +167,9 @@ Editor
- Move flow-status button to footer for consistency
- Fix node hover effect to prevent jumping position
- Filter quick-add properly when splicing a wire
- - Mark workspace dirty when deleting link node link Fixes #2274
+ - #2274 Mark workspace dirty when deleting link node link Fixes
- Add red-ui-button class to strategy login button
- - Fix padding of subflow locale select Closes #2276
+ - #2276 Fix padding of subflow locale select Closes
- Update info text of complete node & add JP text
- Add class red-ui-button to cancel button
- Add css class to login submit button (#2275)
@@ -138,12 +192,12 @@ Runtime
- [FEATURE] Add Node Done API - make message passing async
- Ensure the subflow stop promise is waiting for before restarting
- Limit the regex for the /nodes/ api end points
- - Add error event handler to ssh-keygen child_process Fixes #2255
- - Fix default value handling on context array access Fixes #2252
+ - #2255 Add error event handler to ssh-keygen child_process Fixes
+ - #2252 Fix default value handling on context array access Fixes
- Remove all ui test dependencies from package.json
- Add req back to audit log events and extend to Projects api
- - Ensure 2nd arg to node.error is an object Fixes #2228
- - Use a more atomic process for writing context files Fixes #2271
+ - #2228 Ensure 2nd arg to node.error is an object Fixes
+ - #2271 Use a more atomic process for writing context files Fixes
Editor
@@ -162,25 +216,25 @@ Editor
- [FEATURE] add support for specifying subflow template color
- [FEATURE] Use ctrl-click on wire to splice node in place
- [FEATURE] Allow search results to show more than 25 results
- - [FEATURE] Allow a node to change if it has an input port Closes #2268
- - Revealing node position needs to account for zoom level Fixes #2172
- - Fix typedInput option selection Fixes #2174
- - Fix palette node id handling so search works Fixes #2173
+ - #2268 [FEATURE] Allow a node to change if it has an input port Closes
+ - #2172 Revealing node position needs to account for zoom level Fixes
+ - #2174 Fix typedInput option selection Fixes
+ - #2173 Fix palette node id handling so search works Fixes
- Add popover tooltips to debug sidebar,function and template
- Add popovers to context sidebar mini buttons
- Ensure node status icon is shown when value set
- Revert treeList children function signature change
- Restore tray component css for compatibility. Mark as deprecated
- fix function name & string compare function
- - Handle empty list of example flows Fixes #2171
+ - #2171 Handle empty list of example flows Fixes
- Ensure library list has an item selected when opened
- Ensure tooltip popover doesn't replace normal popover
- Fix clipboard export download button
- Ensure input box has focus on repeated quick add
- Fix width calculation of typedInput
- Remove some hardcoded css colors
- - Fix display of node help when clicking in palette Fixes #2194
- - Ensure node help is loaded in the right language Fixes #2195
+ - #2194 Fix display of node help when clicking in palette Fixes
+ - #2195 Ensure node help is loaded in the right language Fixes
- Do not allow tab focus on clipboard hidden element
- Fix undefined error on typedInput due to valueLabel used before being added
- Fix undo of flow disable state change
@@ -193,7 +247,7 @@ Editor
- Update all node icons to SVG
- Handle png/svg fallback for def.icon values. Remove old pngs
- Ignore empty examples directories (don't add to import menu)
- - better handle example file at any depth - #2222
+ - #2222 better handle example file at any depth -
- Properly escape node types in palette
- Ensure session expiry timeout doesn't exceed limit
- Use node/tab map to make filterNodes more efficient
@@ -201,22 +255,22 @@ Editor
- Handle undefined node.\_def in edit stack title.
- fix converting selection to subflow
- Fix inserting new subflow node to existing wire between nodes
- - Support displaying falsey node status values Fixes #2246
+ - #2246 Support displaying falsey node status values Fixes
- Remove tab menu from node property UI for subflow and config nodes
- - Mark workspace dirty when shift-click-drag detaches wires Fixes #2260
+ - #2260 Mark workspace dirty when shift-click-drag detaches wires Fixes
- Fix subflow category change on palette
Nodes
- Remove pi gpi, twitter, email and feedparser nodes from core
- - Fix error handling in Websocket broadcast function Fixes #2182
+ - #2182 Fix error handling in Websocket broadcast function Fixes
- Handle websocket item being parseable but not an object better
- stop join tripping up if last message of buffer is blank.
- Add support for env var propety in switch node
- Improve handling of file upload in request node
- Add "has key" rule to switch node + tests
- Optimise generation of switch node edit dialog
- - Add keep-alive option to HTTP Request - #2261
+ - #2261 Add keep-alive option to HTTP Request -
#### 1.0.0-beta.2: Beta Release
@@ -228,7 +282,7 @@ Runtime
Runtime
- Update runtime apis to support multiple libraries
- Add Node 12 to travis (allow_failures)
- - Bump all dependencies Fixes #2152
+ - #2152 Bump all dependencies Fixes
Editor
- [BREAKING] complete overhaul of editor DOM/CSS structure
@@ -240,17 +294,17 @@ Editor
- Allow script tags with src to reference esm modules
- Upgrade to jq 3.4.1 / jq-ui 1.12.1
- Allow editor language to be chosen in editor settings
- - Only NLS status text that starts with a letter Fixes #2128
- - Fix display of link node list within subflow Fixes #2140
- - Blur the active element when closing edit dialog via action Fixes #2097
- - Trigger change evnt on typedInput when type changes and options present Fixes #2160
+ - #2128 Only NLS status text that starts with a letter Fixes
+ - #2140 Fix display of link node list within subflow Fixes
+ - #2097 Blur the active element when closing edit dialog via action Fixes
+ - #2160 Trigger change evnt on typedInput when type changes and options present Fixes
- Move library import/export to single dialog
- Move type-library dialogs to new style dialog
- Fix node drag and drop animation
- let status be simple text if wanted
- Add workspace statusBar
- Complete refresh of German translations
- - Fix memory leak in Debug sidebar #2163
+ - #2163 Fix memory leak in Debug sidebar
- Introduce toggleButton and move flow-disabled to use it
- Allow RED.settings.get/set to use full property desc
- Add auto-refresh toggle to context sidebar
@@ -269,26 +323,26 @@ Nodes
#### 0.20.8: Maintenance Release
- Sanitize tab name in edit dialog
- - Pass httpServer to runtime even when httpAdmin disabled Fixes #2272
+ - #2272 Pass httpServer to runtime even when httpAdmin disabled Fixes
#### 0.20.7: Maintenance Release
- - Update jsonata to 1.6.5 which should fix #2183
+ - #2183 Update jsonata to 1.6.5 which should fix
- Ensure the subflow stop promise is waiting for before restarting
- Properly escape node types in palette
#### 0.20.6: Maintenance Release
- - Revealing node position needs to account for zoom level Fixes #2172
+ - #2172 Revealing node position needs to account for zoom level Fixes
- stop join tripping up if last message of buffer is blank.
- Improve handling of file upload in request node
- - Handle subflow internal node wired to a non-existant node Fixes #2202
+ - #2202 Handle subflow internal node wired to a non-existant node Fixes
- Do not save subflow env vars with blank names
- Don't allow a link node virtual wire to connect to normal port
- - Clear HTTP Request node authType when auth disabled Fixes #2215
- - Fix parsing of content-type header Fixes #2216
+ - #2215 Clear HTTP Request node authType when auth disabled Fixes
+ - #2216 Fix parsing of content-type header Fixes
- Fix join node reset issue with merging objects
- - Copy data-i18n attribute on TypedInput Fixes #2211
+ - #2211 Copy data-i18n attribute on TypedInput Fixes
#### 0.20.5: Maintenance Release
@@ -325,27 +379,27 @@ Nodes
#### 0.20.1: Maintenance Release
- - Ensure all subflow instances are stopped when flow stopping Fixes #2095
- - modify name of korean locale forders #2091
+ - #2095 Ensure all subflow instances are stopped when flow stopping Fixes
+ - #2091 modify name of korean locale forders
- Ensure node names are sanitized before being presented
- - Subflow status node must pass status to parent flow Fixes #2087
- - fix problem on displaying option label on Firefox #2090
+ - #2087 Subflow status node must pass status to parent flow Fixes
+ - #2090 fix problem on displaying option label on Firefox
#### 0.20.0: Milestone Release
Runtime
- Pass complete status to Status node and filter to editor
- - Ensure flows wait for all nodes to close before restarting Fixes #2067
+ - #2067 Ensure flows wait for all nodes to close before restarting Fixes
- Fix git clone with password protected key
- Allow a project to be located below the root of repo
- Detect the cloning of an empty git repo properly
- Fix use of custom auth strategy plugins
- - Remove remnants of when library in git/index Fixes #2057
+ - #2057 Remove remnants of when library in git/index Fixes
- Clear subflow status on close
- Add exportGlobalContextKeys to prevent exposing functionGlobalContext keys
- Add --no-audit and --no-update-notifier flags to npm commands to reduce workload
- Add envVarExcludes setting to block named env vars
- - Update settings.js docs on userDir to match reality Fixes #2082
+ - #2082 Update settings.js docs on userDir to match reality Fixes
- Add Korean Language
@@ -389,16 +443,16 @@ Editor
- Add env type to subflow env var types
- Display parent subflow properties in edit dialog
- Fix direction value of subflow output
- - Add Status Node to Subflow to allow subflow-specific status Closes #597
- - Better handling of multiple flow merges Fixes #2039
+ - #597 Add Status Node to Subflow to allow subflow-specific status Closes
+ - #2039 Better handling of multiple flow merges Fixes
Nodes
- Various translation updates
- - Catch: Add 'catch uncaught only' mode. Closes #1747
+ - #1747 Catch: Add 'catch uncaught only' mode. Closes
- Link: scroll to current flow in node list
- HTTPRequest: add option to urlencode cookies
- - HTTPRequest: option to use msg.payload as query params on GET. #1981
+ - #1981 HTTPRequest: option to use msg.payload as query params on GET.
- Debug: Add local time display option to numerics in debug window
- MQTT: Add parsed JSON output option
@@ -416,9 +470,9 @@ Editor
- German translation
- Change default dropdown appearance and sidebar tab menu handling
- - Handle multiple-select box when nothing selected Fixes #2021
- - Handle i18n properly when key is a valid sub-identifier Fixes #2028
- - Avoid duplicate links when missing node type installed Fixes #2032
+ - #2021 Handle multiple-select box when nothing selected Fixes
+ - #2028 Handle i18n properly when key is a valid sub-identifier Fixes
+ - #2032 Avoid duplicate links when missing node type installed Fixes
- Add View Tools
- Don't collapse version control header when clicking refresh
- Add fast entry via keyboard for string of nodes
@@ -438,15 +492,15 @@ Editor
- Update palette manager view properly when module updated
- Add TreeList common widget
- - Fix visual jump when opening Comment editor on Safari Part of #2008
- - Fix vertical align of markdown editor in Safari Fixes #2008
- - Avoid marking node as changed if label state is default Fixes #2009
+ - #2008 Fix visual jump when opening Comment editor on Safari Part of
+ - #2008 Fix vertical align of markdown editor in Safari Fixes
+ - #2009 Avoid marking node as changed if label state is default Fixes
- Highlight port on node hover while joining
- Support drag-wiring of link nodes
- Allow TypeSearch to include a filter option
- Improve diff colouring
- Allow sections to toggle in 2-element stack
- - Add support for ${} env var syntax when skipping validation Closes #1980
+ - #1980 Add support for ${} env var syntax when skipping validation Closes
- i18 support for markdown editor tooltip
- Add RED.editor.registerTypeEditor for custom type editors
- Tidy up markdown toolbar handling across all editors
@@ -456,15 +510,15 @@ Editor
Runtime
- - Bump JSONata to 1.6.4 Fixes #2023
+ - #2023 Bump JSONata to 1.6.4 Fixes
- Add audit logging to admin api
- - Fix failure of RED.require #2010
- - Allow oauth strategy callback method to be customised Closes #1998
- - Ensure fs context cache is flushed on close Fixes #2001
+ - #2010 Fix failure of RED.require
+ - #1998 Allow oauth strategy callback method to be customised Closes
+ - #2001 Ensure fs context cache is flushed on close Fixes
- Fix library Buffer( to Buffer.alloc( for node 10
- Catch file-not-found on startup when non-existant flow file specified
- Actively expire login sesssions and notify user
- - Add quotation marks for basic auth challenge #1976
+ - #1976 Add quotation marks for basic auth challenge
Nodes
@@ -482,7 +536,7 @@ Nodes
Editor
- Allow the editor to use a custom admin api url root
- - Improve performance of Flow Diff dialog - @TothiViseo #1989
+ - #1989 Improve performance of Flow Diff dialog - @TothiViseo
- Add 'open project' option to Projects Welcome dialog
- Add 'type already registered' check in palette editor
- Handle missing tab.disabled property
@@ -500,11 +554,11 @@ Editor
- Allow left-hand node button to act as toggle
- Support dbl-click in tab bar to add new flow in position
- Fix duplicate subflow detection on import
- - Add import notification with info on what has been imported Closes #1862
+ - #1862 Add import notification with info on what has been imported Closes
- Show error details when trying to import invalid json
- Show default icon when non-existent font-awesome icon was specified
- Add configurable option for showing node label
- - Avoid http redirects as Safari doesn't reuse Auth header Fixes #1903
+ - #1903 Avoid http redirects as Safari doesn't reuse Auth header Fixes
- Tidy up ace tooltip styling
- Add event log to editor
- Add tooltips to multiple editor elements
@@ -532,30 +586,30 @@ Editor
Runtime
- Allow a project to be loaded from cmdline
- - Handle lookup of undefined property in Global context Fixes #1978
+ - #1978 Handle lookup of undefined property in Global context Fixes
- Refuse to enable Manage Palette if npm too old
- Remove restriction on upgrading non-local modules
- - Remove deprecated Buffer constructor usage Fixes #1709
+ - #1709 Remove deprecated Buffer constructor usage Fixes
- Update httpServerOptions doc in settings.js
- Exclude non-testable .js files from the unit tests
- Add --safe mode flag to allow starting without flows running
- - Add setting-defined accessToken for automated access to the adminAPI - #1789
+ - #1789 Add setting-defined accessToken for automated access to the adminAPI -
Nodes
- - Move all core node EN help to their own locale files - #1990
+ - #1990 Move all core node EN help to their own locale files -
- CSV: better regex for number detection
- Debug: hide button if not configured to send to sidebar
- Delay: report queue activity when in by-topic mode
- Delay: add msg.flush mode
- Exec: Preserve existing properties on msg object
- File: remove CR/LF from incoming filename
- - Function: create custom ace javascript mode to handle ES6 Fixes #1911
+ - #1911 Function: create custom ace javascript mode to handle ES6 Fixes
- Function: add env.get
- - HTTP Request: Add http-proxy config #1913
+ - #1913 HTTP Request: Add http-proxy config
- HTTP Request: add msg.redirectList to output
- - HTTP Request: add msg.requestTimeout option for per-message setting - @natcl #1959
- - MQTT: add auto-detect and base64 output to mqtt node Fixes #1912 - @DurandA
+ - #1959 HTTP Request: add msg.requestTimeout option for per-message setting - @natcl
+ - #1912 - @DurandA MQTT: add auto-detect and base64 output to mqtt node Fixes
- MQTT: only unsubscribe node that is being removed
- Sentiment: move to node-red-node-sentiment
- Switch: add missing edit dialog icon
@@ -570,48 +624,48 @@ Nodes
#### 0.19.6: Maintenance Release
- - Fix encoding of file node from binary to utf8 - #2051
+ - #2051 Fix encoding of file node from binary to utf8 -
#### 0.19.5: Maintenance Release
- Recognize pip installs of RPi.GPIO (#1934)
- - Merge pull request #1941 from node-red-hitachi/master-batch
- - Merge pull request #1931 from node-red-hitachi/master-typedinput
+ - #1941 from node-red-hitachi/master-batch Merge pull request
+ - #1931 from node-red-hitachi/master-typedinput Merge pull request
- Set min value of properties and spinners for batch
- Fix that unnecessary optionMenu remains
- - Merge pull request #1894 from node-red-hitachi/fix-overlapping-file-node-execution
- - Merge pull request #1924 from imZack/patch-1
+ - #1894 from node-red-hitachi/fix-overlapping-file-node-execution Merge pull request
+ - #1924 from imZack/patch-1 Merge pull request
- Add missing comma
- - Do not disable context sidebar during node edit Fixes #1921
- - Don't allow virtual links to be spliced Fixes #1920
+ - #1921 Do not disable context sidebar during node edit Fixes
+ - #1920 Don't allow virtual links to be spliced Fixes
- Merge project package changes to avoid overwritten changes
- - Handle manually added project deps that are unused Fixes #1908
+ - #1908 Handle manually added project deps that are unused Fixes
- update close & input handling of File node
- make close handler argument only one
- - Merge pull request #1907 from amilajack/patch-2
+ - #1907 from amilajack/patch-2 Merge pull request
- Change repo badge to point to master branch
- invoke callbacks if async handler is specified
- - Merge pull request #1891 from camlow325/resolve-example-path-for-windows-support
- - Merge pull request #1900 from kazuhitoyokoi/master-addtestcases4settings.js
+ - #1891 from camlow325/resolve-example-path-for-windows-support Merge pull request
+ - #1900 from kazuhitoyokoi/master-addtestcases4settings.js Merge pull request
- wait closing while pending messages exist
- Add test cases for red/api/editor/settings.js
- - Ensure all palette categories are opened properly Closes #1893
+ - #1893 Ensure all palette categories are opened properly Closes
- Resolve path when sending example file for Windows support
- fix multiple input message processing of file node
#### 0.19.4: Maintenance Release
- - Fix race condition in non-cache lfs context Fixes #1888
+ - #1888 Fix race condition in non-cache lfs context Fixes
- LocalFileSystem Context: Remove extra flush code
- Prevent race condition in caching mode of lfs context (#1889)
- Allow context store name to be provided in the key
- Switch node: only use promises when absolutely necessary
- Fix dbl-click handling on webkit-based browsers
- Ensure context.flow/global cannot be deleted or enumerated
- - Handle context.get with multiple levels of unknown key Fixes #1883
+ - #1883 Handle context.get with multiple levels of unknown key Fixes
- Fix global.get("foo.bar") for functionGlobalContext set values
- Fix node color bug (#1877)
- - Merge pull request #1857 from cclauss/patch-1
+ - #1857 from cclauss/patch-1 Merge pull request
- Define raw_input() in Python 3 & fix time.sleep()
#### 0.19.3: Maintenance Release
@@ -626,14 +680,14 @@ Nodes
- TCP-request node - only write payload
- JSON schema: perform validation when obj -> obj or str -> str
- JSON schema: add draft-06 support (via $schema keyword)
- - Mqtt proxy configuration for websocket connection, #1651.
+ - #1651. Mqtt proxy configuration for websocket connection,
- Allows MQTT Shared Subscriptions for MQTT-In core node
- Fix use of HTML tag or CSS class specification as icon of typedInput
#### 0.19.2: Maintenance Release
- Ensure node default colour is used if palette.theme has no match
- - fix lost messages / properties in TCPRequest Node; closes #1863 (#1864)
+ - #1863 (#1864) fix lost messages / properties in TCPRequest Node; closes
- Fix typo in template.html
- Improve error reporting from context plugin loading
- Prevent no-op edit of node marking as changed due to icon
@@ -653,8 +707,8 @@ Nodes
Editor
- Add editorTheme.palette.theme to allow overriding colours
- - Index all node properties when searching Fixes #1446
- - Handle NaN and Infinity properly in debug sidebar Fixes #1778 #1779
+ - #1446 Index all node properties when searching Fixes
+ - #1779 Handle NaN and Infinity properly in debug sidebar Fixes #1778
- Prevent horizontal scroll when palette name cannot wrap
- Ignore middle-click on node/ports to enable panning
- Better wire layout when looping back
@@ -668,7 +722,7 @@ Editor
- Only edit nodes on dbl click on primary button with no modifiers
- Allow subflows to be put in any palette category
- Add flow navigator widget
- - Cache flow library result to improve response time Fixes #1753
+ - #1753 Cache flow library result to improve response time Fixes
- Add middle-button-drag to pan the workspace
- allow multi-line category name in editor
- Redesign sidebar tabs
@@ -676,20 +730,20 @@ Editor
Nodes
- - Change: Ensure runtime errors in Change node can be caught Fixes #1769
+ - #1769 Change: Ensure runtime errors in Change node can be caught Fixes
- File: Add output to File Out node
- Function: add expandable JavaScript editor pane
- Function: allow id and name reference in function node code (#1731)
- HTTP Request: Move to request module
- - HTTP: Ensure apiMaxLength applies to HTTP Nodes Fixes #1278
+ - #1278 HTTP: Ensure apiMaxLength applies to HTTP Nodes Fixes
- Join: accumulate top level properties
- Join: allow environment variable as reduce init value
- JSON: add JSON schema validation via msg.schema
- Pi: Let nrgpio code work with python 3
- Pi: let Pi nodes be visible/editable on all platforms
- Switch: add isEmpty rule
- - TCP: queue messages while connecting; closes #1414
- - TLS: Add servername option to TLS config node for SNI Fixes #1805
+ - #1414 TCP: queue messages while connecting; closes
+ - #1805 TLS: Add servername option to TLS config node for SNI Fixes
- UDP: Don't accidentally re-use udp port when set to not do so
Persistent Context
@@ -704,8 +758,8 @@ Persistent Context
Runtime
- Support flow.disabled and .info in /flow API
- - Node errors should be Strings not Errors Fixes #1781
- - Add detection of connection timeout in git communication Fixes #1770
+ - #1781 Node errors should be Strings not Errors Fixes
+ - #1770 Add detection of connection timeout in git communication Fixes
- Handle loading empty nodesDir
- Add 'private' property to userDir generated package.json
- Add RED.require to allow nodes to access other modules
@@ -715,7 +769,7 @@ Runtime
Editor Fixes
- - Do not trim wires if node declares outputs in defaults but misses value Fixes #1737
+ - #1737 Do not trim wires if node declares outputs in defaults but misses value Fixes
Node Fixes
@@ -725,16 +779,16 @@ Node Fixes
- typo fix in node help (#1735)
Other Fixes
- - Tidy up default grunt task and fixup test break due to reorder Fixes #1738
+ - #1738 Tidy up default grunt task and fixup test break due to reorder Fixes
- Bump jsonata version
#### 0.18.6: Maintenance Release
Editor Fixes
- - Handle a node having wires in the editor on ports it no longer has Fixes #1724
+ - #1724 Handle a node having wires in the editor on ports it no longer has Fixes
- Add missing ACE snippet files
- - Fix wireClippedNodes is not defined Fixes #1726
+ - #1726 Fix wireClippedNodes is not defined Fixes
- Split node html to isolate bad nodes when loading
- Avoid unnecessary use of .html() where .text() will do
@@ -761,32 +815,32 @@ New Features
Editor Fixes
- - Highlight subflow node when log msg comes from inside Fixes #1698
- - Ensure node wires array is not longer than outputs value Fixes #1678
- - Allow importing an unknown config node to be undone Fixes #1681
- - Ensure keyboard shortcuts get saved in runtime settings Fixes #1696
+ - #1698 Highlight subflow node when log msg comes from inside Fixes
+ - #1678 Ensure node wires array is not longer than outputs value Fixes
+ - #1681 Allow importing an unknown config node to be undone Fixes
+ - #1696 Ensure keyboard shortcuts get saved in runtime settings Fixes
- Don't mark a subflow changed when actually modified nothing (#1665)
Node Fixes
- bind to correct port when doing udp broadcast/multicast (#1686)
- Provide full error stack in Function node log message (#1700)
- - Fix http request doc type Fixes #1690
+ - #1690 Fix http request doc type Fixes
- Make debug slightly larger to pass WCAG AA rating
- - Make core nodes labels more consistent, to close #1673
- - Allow template node to be updated more than once Fixes #1671
+ - #1673 Make core nodes labels more consistent, to close
+ - #1671 Allow template node to be updated more than once Fixes
- Fix the problem that output labels of switch node sometimes disappear (#1664)
- Chinese translations for core nodes (#1607)
Runtime Fixes
- - Handle and display for invalid flow credentials when project is disabled #1689 (#1694)
+ - #1689 (#1694) Handle and display for invalid flow credentials when project is disabled
- node-red-pi: fix behavior with old bash version (#1713)
- Fix ENOENT error on first start when no user dir (#1711)
- - Handle null error object in Flow.handleError Fixes #1721
+ - #1721 Handle null error object in Flow.handleError Fixes
- update settings comments to describe how to setup for ipv6 (#1675)
- - Remove credential props after diffing flow to prevent future false positives Fixes #1359
- - Log error if settings unavailable when saving user settings Fixes #1645
+ - #1359 Remove credential props after diffing flow to prevent future false positives Fixes
+ - #1645 Log error if settings unavailable when saving user settings Fixes
- Keep backup of .config.json
- Add warning if using \_credentialSecret from .config.json
- Filter req.user in /settings to prevent potentially leaking info
@@ -812,7 +866,7 @@ Editor Fixes
- Fix merging a remote diff
- Fixed the problems when using a node without defaults
- Disable user defined icon for subflow
- - getDefaultNodeIcon should handle subflow instance nodes Fixes #1635
+ - #1635 getDefaultNodeIcon should handle subflow instance nodes Fixes
- Add Japanese info text for core nodes
- Fix message lookup for core nodes in case of i18 locales directory exists
- Prevent the last tab from being deleted
@@ -843,7 +897,7 @@ Editor Fixes
- Fix offset calculation when dragging node from palette
- Allow a library entry to use non-default node-input- prefixes
- - Change remote-diff shortcut and add it to keymap Fixes #1628
+ - #1628 Change remote-diff shortcut and add it to keymap Fixes
#### 0.18.2: Maintenance Release
@@ -882,7 +936,7 @@ Projects
- Handle more repo clone error cases
- Relax validation of git urls
- Revalidate project name on return to project-details view
- - Avoid unnecessary project refresh on branch-switch Fixes #1597
+ - #1597 Avoid unnecessary project refresh on branch-switch Fixes
- Add support for file:// git urls
- Handle project first-run without existing flow file
- Handle delete of last remote in project settings
@@ -893,9 +947,9 @@ Projects
Node Fixes
- Trigger node migration - ensure bytopic not blank
- - Add HEAD to list of methods with no body in http req node #1598
- - Do not include payload in GET requests Fixes #1598
- - Update sort/batch docs Fixes #1601
+ - #1598 Add HEAD to list of methods with no body in http req node
+ - #1598 Do not include payload in GET requests Fixes
+ - #1601 Update sort/batch docs Fixes
- Don't assume node has defaults when exporting icon property
@@ -908,11 +962,11 @@ Runtime
- Better error reporting when module provides duplicate type
- Update jsonata to 1.5.0
- add express-session memorystore without leaks (#1435)
- - Allow adminAuth.user to be a Function Fixes #1461
+ - #1461 Allow adminAuth.user to be a Function Fixes
- Ensure RED.server is set even if admin api disabled
- - Ensure strategy login button uses relative URL Fixes #1481
+ - #1481 Ensure strategy login button uses relative URL Fixes
- ignore `_msgid` when merging full objects
- - Move node install to spawn to allow for big stdout Fixes #1488
+ - #1488 Move node install to spawn to allow for big stdout Fixes
- SIGINT handler should wait for stop to complete before exit
Editor
@@ -920,12 +974,12 @@ Editor
- allow a node's icon to be set dynamically (#1490)
- Batch messages sent over comms to increase throughput
- Migrate deploy confirmations to notifications
- - `oneditdelete` should be available to all node types Closes #1346
+ - #1346 `oneditdelete` should be available to all node types Closes
- Sort typeSearch results based on position of match
- Update ACE to test and add python highlighter (#1373)
- - Clear mouse state when typeSearch cancelled Fixes #1517
+ - #1517 Clear mouse state when typeSearch cancelled Fixes
- Handle scoped modules via palette editor
- - TypedInput: handle user defined value/labels options Fixes #1549
+ - #1549 TypedInput: handle user defined value/labels options Fixes
Nodes
@@ -940,7 +994,7 @@ Nodes
- Add support for rejectUnauthorized msg property
- Add TLS options to WebSocket client
- Added parsed YAML support for template node (#1443)
- - Allow delay node in rate-limit mode to be reset Fixes #1360
+ - #1360 Allow delay node in rate-limit mode to be reset Fixes
- Allow setTimeout in Function node to be promisified in node 8
- Debug to status option (#1499)
- enable template config via msg.template for stored or generated templates (#1503)
@@ -959,13 +1013,13 @@ Nodes
- MQTT node - if Server/URL config contains '//' use it as a complete url; enabled ws:// and wss://
- clone messages before delayed send (#1474)
- Decrement connected client count rather than show disconnected
- - Don't end mqtt client on first error Fixes #1566
- - File out - create dirs synchronously to ensure they exist Fixes #1489
+ - #1566 Don't end mqtt client on first error Fixes
+ - #1489 File out - create dirs synchronously to ensure they exist Fixes
- Fix debug message format for Buffer (#1444)
- Fix global.keys() bug in function node (#1417)
- Handle escape characters in template node which uses Mustache format and JSON output mode (#1377)
- - Move all node.send to end of timer functions in trigger node (issue #1527) (#1539)
- - Publish null/undefined to mqtt as blank not toString Fixes #1521
+ - #1527) (#1539) Move all node.send to end of timer functions in trigger node (issue
+ - #1521 Publish null/undefined to mqtt as blank not toString Fixes
- remove inject node at specific time spinner
- restrict inject interval to less that 2^31 millisecs
- tag UDP ports in use properly so they get closed correctly (#1508)
@@ -974,10 +1028,10 @@ Nodes
- Add express-session missing dependency for oauth
- Fix improper type tests is core test cases
- - File node: recreate write stream when file deleted Fixes #1351
+ - #1351 File node: recreate write stream when file deleted Fixes
- Add flow stopping trace messages
- Fix userDir test case when .config.json exists (#1350)
- - Do not try to send msg after http request error handled Fixes #1344
+ - #1344 Do not try to send msg after http request error handled Fixes
- Fix boundary problem in range node (#1338)
- Modify messages in node properties to refer messages.json (#1339)
- Fix settings.js replacing webSocketVerifyClient by webSocketNodeVerifyClient (#1343)
@@ -988,16 +1042,16 @@ Nodes
- Add request node test case for POSTing 0
- Allow false and 0 in payload for httprequest (#1334)
- Add file extension into flow name of library automatically (#1331)
- - Fix accessing global context from jsonata expressions Fixes #1335
- - Disable editor whilst a deploy is inflight Fixes #1332
+ - #1335 Fix accessing global context from jsonata expressions Fixes
+ - #1332 Disable editor whilst a deploy is inflight Fixes
- Replace Unknown nodes with their real versions when node loaded
- Retry auto-install of modules that fail
- Fix column name in link nodes to refer language file (#1330)
- - Use namespaces with link node title attributes i18n name Fixes #1329
- - Tidy up GPIO pin table presentation Fixes #1328
+ - #1329 Use namespaces with link node title attributes i18n name Fixes
+ - #1328 Tidy up GPIO pin table presentation Fixes
- Join: count of 0 should not send on every msg
- Handle importing only one end of a link node pair
- - Make sending to Debug synchronous again Fixes #1323
+ - #1323 Make sending to Debug synchronous again Fixes
- Make send-error behaviour optional in file node
- Restore File In node behaviour of sending msg on error
- Expose context.keys within Function node
@@ -1011,10 +1065,10 @@ Nodes
- Fix missing icons for some nodes (#1321)
- Add reformat button to JSONata test data editor
- Update delay node status without spawning unnecessary intervals
- - Avoid stringify ServerResponse and Socket in Debug node Fixes #1311
+ - #1311 Avoid stringify ServerResponse and Socket in Debug node Fixes
- Fix creating userDir other than system drive on Windows (#1317)
- - Trigger node not handling a duration of 0 as block mode Fixes #1316
- - Unable to config GPIO Pin 13 Fixes #1314
+ - #1316 Trigger node not handling a duration of 0 as block mode Fixes
+ - #1314 Unable to config GPIO Pin 13 Fixes
#### 0.17.2: Maintenance Release
@@ -1023,7 +1077,7 @@ Nodes
#### 0.17.1: Maintenance Release
- Fix PI gpio to use BCM
- - Prevent event thread contention when sending to Debug node Closes #1311
+ - #1311 Prevent event thread contention when sending to Debug node Closes
- Fix Bug: Can not display node icon when npm package has scope (#1305) (#1309)
- Clear moved flag when nodes are deployed
@@ -1031,7 +1085,7 @@ Nodes
Runtime
- - Return flow rev on reload api when api v2 enabled Closes #1273
+ - #1273 Return flow rev on reload api when api v2 enabled Closes
- Provide single endpoint to load all node message catalogs
- Add .trace and .debug to Node prototype
- Rename oauth auth scheme to strategy as it works for openid
@@ -1039,16 +1093,16 @@ Runtime
- Add support for oauth adminAuth configs
- Cache auth details to save needlessly recalculating hashes
- Add context.keys function to list top-level keys
- - Strip BOM character from JSON files if present Fixes #1239
+ - #1239 Strip BOM character from JSON files if present Fixes
- Version check no meta (#1243)
- - Ensure all nodes have access to global context Fixes #1230
- - Don't process subscription for unauthenticated comms link Fixes #851
- - Clone credentials when passing to node Fixes #1198
+ - #1230 Ensure all nodes have access to global context Fixes
+ - #851 Don't process subscription for unauthenticated comms link Fixes
+ - #1198 Clone credentials when passing to node Fixes
- Resolve dir argument of getLocalNodeFiles function (#1216)
- Add wait for writing a library entry into a file. (#1186)
- Use correct Buffer.from method rather than constructor
- update core nodes to use newer Buffer syntax
- - Treat missing msg properties as undefined rather than throw error Fixes #1167
+ - #1167 Treat missing msg properties as undefined rather than throw error Fixes
- Allows flows to be enabled/disabled in the runtime
- add off option to logging settings comment
- Log error stack traces if verbose flag is set
@@ -1081,8 +1135,8 @@ Nodes
- Fix wrong number of double quotes in CSV parsing
- let csv node handle ip addresses without trying to parse
- Update debug node to register the settings it uses
- - Handle IncomingMessage/ServerResponse object types in debug Fixes #1202
- - Toggling debug node enabled/disabled state should set state dirty Fixes #1203
+ - #1202 Handle IncomingMessage/ServerResponse object types in debug Fixes
+ - #1203 Toggling debug node enabled/disabled state should set state dirty Fixes
- redo delay node status messages to be interval based
- Update delay node ui
- Add new msg.delay option to delay node
@@ -1118,16 +1172,16 @@ Nodes
- First pass of new node-info style
- MQTT new style info
- Fix empty extra node help content issue
- - Handle HTTP In url that is missing its leading / Fixes #1218
+ - #1218 Handle HTTP In url that is missing its leading / Fixes
- Add file upload support to HTTP In node
- HTTP Request node: add info on how to do form encoding
- - Prevent unmodified msg.headers from breaking HTTP Request flows Closed #1015
+ - #1015 Prevent unmodified msg.headers from breaking HTTP Request flows Closed
- Add cookie handling to HTTP Request node
- Add guard against the http-request buffer fix being reverted
- Multipart streaming
- Add http-request node unit tests
- http request node add transport validity check and warn.
- - Update follow_redirects to fix http_proxy handling Fixes #1172
+ - #1172 Update follow_redirects to fix http_proxy handling Fixes
- Allow statusCode/headers to be set directly within HTTP Response node
- let inject "between time" also fire at start - Plus new info
- remove repeat symbol from inject if repeat is 0
@@ -1176,7 +1230,7 @@ Nodes
- Move udp sock error listener to only be instantiated once.
- Let watch node recurse into subdirectories
- Misconfigured WebSocket nodes should not register msg handlers
- - Add websocketVerifyClient option to enable custom websocket auth Fixes #1127
+ - #1127 Add websocketVerifyClient option to enable custom websocket auth Fixes
Editor
@@ -1198,11 +1252,11 @@ Editor
- Remove unused modified flag on debug messages
- Add copy path/value buttons to debug messages
- dont match only part of the node type (#1242)
- - Add editorTheme.logout.redirect to allow redirect on logout Closes #1213
- - Handle logging out and already logged-out editor Fixes #1288
+ - #1213 Add editorTheme.logout.redirect to allow redirect on logout Closes
+ - #1288 Handle logging out and already logged-out editor Fixes
- Fix bug: Export Subflows (#1282)
- destroy editor to ensure fully removed on close (function, template, comment)
- - Don't try to nls status text starting with '.' Fixes #1258
+ - #1258 Don't try to nls status text starting with '.' Fixes
- Add note of removed flows in diffConfig (#1253)
- Add description to flow same as subflow
- Allow tabs to be enabled/disabled in the editor
@@ -1274,7 +1328,7 @@ Editor
- Allow RED.validators.number to allow blank values as valid
- Support dropping json files into the editor
- NLS Expression/JSON editor and fix their height calculation
- - Update JSONata to 1.2.4 Closes #1275
+ - #1275 Update JSONata to 1.2.4 Closes
- Remember test expression data on a per-node basis
- NLS jsonata test messages
- Add JSONata expr tester and improved feedback
@@ -1291,13 +1345,13 @@ Other
#### 0.16.2: Maintenance Release
- - Ensure custom mustache context parent set in Template node fixes #1126
+ - #1126 Ensure custom mustache context parent set in Template node fixes
- Display debug node name in debug panel if its known
- Ensure auth-tokens are removed when no user is specified in settings
- Ensure all a tags have blank target in info sidebar
- Ensure links do not span tabs in the editor
- Avoid creating multiple reconnect timers in websocket node
- - Fix inner reference in install fail message catalog entry Fixes #1120
+ - #1120 Fix inner reference in install fail message catalog entry Fixes
- Display buffer data properly for truncated buffers under Object property
#### 0.16.1: Maintenance Release
@@ -1305,9 +1359,9 @@ Other
- Add colour swatches to debug when hex colour matched
- Nodes with hasUsers set to false should not appear unused
- Change hard error to verbose warning if using old node.js level
- - Don't filter debug properties starting with _ Fixes #1117
- - Node logged errors not displayed properly in debug pane Fixes #1116
- - Do not look for existing nodes when checking for wires on paste Fixes #1114
+ - #1117 Don't filter debug properties starting with _ Fixes
+ - #1116 Node logged errors not displayed properly in debug pane Fixes
+ - #1114 Do not look for existing nodes when checking for wires on paste Fixes
- -v option not enabling verbose mode properly
- Add node.js version check on startup
@@ -1319,10 +1373,10 @@ Runtime
Nodes
- - Add option to colourise debug console output Closes #1103
+ - #1103 Add option to colourise debug console output Closes
- Add property validation to nodes using typedInput
- - Add common validator for typedInput fields Closes #1104
- - Update debug node console logging indicator icon Closes #1094
+ - #1104 Add common validator for typedInput fields Closes
+ - #1094 Update debug node console logging indicator icon Closes
- Let exec node (spawn) handle commands with spaces in path
- Add symbol to debug node to indicate debugging also to console.log
- Change file node to use node 4 syntax (drops support for 0.8)
@@ -1334,9 +1388,9 @@ Nodes
Editor
- - Add install/remove dialog to increase friction Closes #1109
- - Report node catalogue load errors Closes #1009
- - Properly report module remove errors in palette editor Fixes #1043
+ - #1109 Add install/remove dialog to increase friction Closes
+ - #1009 Report node catalogue load errors Closes
+ - #1043 Properly report module remove errors in palette editor Fixes
- Update rather than hide install button after success install
- Tweak search box styling
- Display info tips slightly longer
@@ -1357,36 +1411,36 @@ Editor
- Focus tray body when edit dialog opened
- Hit enter to edit first node in selection
- Add node delete button to edit dialog
- - Add notification when runtime stopped due to missing types Part of #832
+ - #832 Add notification when runtime stopped due to missing types Part of
Fixes
- - Do not tie debug src loading to needsPermission Fixes #1111
- - Initialise nodeApp regardless of httpAdmin setting Closes #1096 #1095
+ - #1111 Do not tie debug src loading to needsPermission Fixes
+ - #1095 Initialise nodeApp regardless of httpAdmin setting Closes #1096
- Speed up reveal of search dialogs
- - Ensure flows exist before delegating status/error events Fixes #1069
+ - #1069 Ensure flows exist before delegating status/error events Fixes
- Update package dependencies
- Update MQTT to latest 2.2.1
- Node status not being refreshed properly in the editor
- - Try to prevent auto-fill of password fields in node edit tray Fixes #1081
+ - #1081 Try to prevent auto-fill of password fields in node edit tray Fixes
- Fix whitespace in localfilesystem
- fix bug where savesettings did not honor local settings variables (#1073)
- - Tidy up unused/duplicate editor messages Closes #922
+ - #922 Tidy up unused/duplicate editor messages Closes
- Property expressions must not be blank
- Tidy up merge commit of validatePropertyExpression
- add port if wires array > number of ports declared.
- - Allow quoted property expressions Fixes #1101
+ - #1101 Allow quoted property expressions Fixes
- Index all node properties for node search
- Remove node 0.10 from travis config
- update welcome message to use logger so it can be turned off/on if required (#1083)
- Fix dynamically loading multiple node-sets from palette editor
- - Allow a node to reorder its outputs and maintain links Fixes #1031
+ - #1031 Allow a node to reorder its outputs and maintain links Fixes
#### 0.15.3: Maintenance Release
- Tcpgetfix: Another small check (#1070)
- TCPGet: Ensure done() is called only once (#1068)
- - Allow $ and _ at start of property identifiers Fixes #1063
+ - #1063 Allow $ and _ at start of property identifiers Fixes
- TCPGet: Separated the node.connected property for each instance (#1062)
- Corrected 'overide' typo in XML node help (#1061)
- TCPGet: Last property check (hopefully) (#1059)
@@ -1419,11 +1473,11 @@ Fixes
#### 0.15.2: Maintenance Release
- - Revert bidi changes to nodes and hide menu option until fixed Fixes #1024
+ - #1024 Revert bidi changes to nodes and hide menu option until fixed Fixes
- Let xml node set options both ways
- Bump serialport to use version 4
- gpio node handle multiple bits of data returned in one go
- - HTTP In should pass application/octet-stream as buffer not string Fixes #1023
+ - #1023 HTTP In should pass application/octet-stream as buffer not string Fixes
- Handle missing httpNodeRoot setting properly
- Config sidebar not handling node definition error properly
- Add minimum show time to deploy spinner to avoid flicker
@@ -1431,24 +1485,24 @@ Fixes
- Add log.removeHandler function
- Add Crtl/Shift/p shortcut for manage palette
- Add spinner to deploy button
- - Status messages from nodes in subflows not delegated properly Fixes #1016
+ - #1016 Status messages from nodes in subflows not delegated properly Fixes
- fix spelling in join node info
- Speed up tab scrolling
- - Update delay burst test to be more tolerant of timing Fixes #1013
+ - #1013 Update delay burst test to be more tolerant of timing Fixes
#### 0.15.1: Maintenance Release
- Update default palette catalogue to use https
- Disable palette editor if npm not found - and fix for Windows
- - Searching package catalogue should be case-insensitive Fixes #1010
- - contenteditable fields not handled in config nodes Fixes #1011
+ - #1010 Searching package catalogue should be case-insensitive Fixes
+ - #1011 contenteditable fields not handled in config nodes Fixes
- Change html link refs from `_new` to `_blank` to be standards compliant
#### 0.15.0: Milestone Release
Runtime
- - Increase default apiMaxLength to 5mb and add to default settings Closes #1001
+ - #1001 Increase default apiMaxLength to 5mb and add to default settings Closes
- Add v2 /flows api and deploy-overwrite protection
- Encrypt credentials by default
- Ensure errors thrown by RED.events handlers don't percolate up
@@ -1457,7 +1511,7 @@ Editor
- Mark nodes as changed when they are moved
- Added parent containment option for draggable. (#1006)
- - Ignore bidi event handling on non-existent and non-Input elements Closes #999
+ - #999 Ignore bidi event handling on non-existent and non-Input elements Closes
- Remove list of flows from menu
- Allow nodes to be imported with their credentials
- Add workspace search option
@@ -1469,7 +1523,7 @@ Editor
- Add import-to-new-tab option
- Add new options to export-nodes dialog
- Stop nodes being added beyond the outer bounds of the workspace
- - Default config nodes to global scope unless in a subflow Closes #972
+ - #972 Default config nodes to global scope unless in a subflow Closes
- Bidi support for Text Direction and Structured Text (#961)
- Fix jQuery selector, selecting more than one help pane/popover and displaying incorrectly. (#970)
- Fixes removeItem not passing row data to callback. (#965)
@@ -1483,7 +1537,7 @@ Nodes
- Clean up status on close for several core nodes.
- Change node: re-parse JSON set value each time to avoid pass-by-ref
- Better handle HTTP Request header capitalisation
- - Enable ES6 parsing in Function editor by default Fixes #985
+ - #985 Enable ES6 parsing in Function editor by default Fixes
- Update debug sidebar to use RED.view.reveal to show debug nodes
- Add full path tip to file node, And tidy up Pi node tips
- Remove WebSocket node maxlistener warning
@@ -1502,7 +1556,7 @@ Nodes
Other
- - Add npm build/test scripts Closes #946 #660
+ - #660 Add npm build/test scripts Closes #946
- Move travis to node 6 and 7 - drop 5 and 0.12
@@ -1510,15 +1564,15 @@ Other
Fixes
- - Tell ace about Function node globals. Closes #927
- - Tidy up mqtt nodes - linting and done handling. Closes #935
+ - #927 Tell ace about Function node globals. Closes
+ - #935 Tidy up mqtt nodes - linting and done handling. Closes
- Fix invalid html in TCP and HTML node edit templates
- Add proper help text to link nodes
- Handle importing old mqtt-broker configs that lack properties
- Update ace to 1.2.4
- Allow config nodes to provide a sort function for their select list
- Add log warning if node module required version cannot be satisfied
- - Handle empty credentials file. Closes #937
+ - #937 Handle empty credentials file. Closes
- Add RPi.GPIO lib test for ArchLinux
#### 0.14.5: Maintenance Release
@@ -1528,8 +1582,8 @@ Fixes
- Cannot clear cookies with http nodes
- let HTML parse node allow msg.select set select
- Validate nodes on import after any references have been remapped
- - Debug node handles objects without constructor property Fixes #933
- - Ensure 'false' property values are displayed in info panel Fixes #940
+ - #933 Debug node handles objects without constructor property Fixes
+ - #940 Ensure 'false' property values are displayed in info panel Fixes
- Fix node enable/disable over restart - load configs after settings init
#### 0.14.4: Maintenance Release
@@ -1538,20 +1592,20 @@ Nodes
- Update trigger node ui to use typedInputs
- Better handling of quotes in CSV node
- - Clarify the MQTT node sends msg.payload - closes #929
- - Inject node should reuse the message it is triggered with Closes #914
+ - #929 Clarify the MQTT node sends msg.payload - closes
+ - #914 Inject node should reuse the message it is triggered with Closes
- Stop trigger node re-using old message
- Allow node.status text to be 'falsey' values
Fixes
- - Handle DOMException when embedded in an iframe of different origin Fixes #932
+ - #932 Handle DOMException when embedded in an iframe of different origin Fixes
- Fix double firing of menu actions
- - Fix select box handling in Safari - fixes #928
- - Clear context in node test helper Fixes #858
- - Allow node properties to be same as existing object functions Fixes #880
+ - #928 Fix select box handling in Safari - fixes
+ - #858 Clear context in node test helper Fixes
+ - #880 Allow node properties to be same as existing object functions Fixes
- Handle comms link closing whilst completing the initial connect
- - Protect against node type names that clash with Object property names Fixes #917
+ - #917 Protect against node type names that clash with Object property names Fixes
- Clone default node properties to avoid reference leakage
- Strip tab node definition when exporting
- Check for null config properties in editor before over-writing them
@@ -1561,16 +1615,16 @@ Editor
- Add sql mode to ace editor
- Keyboard shortcuts dialog update (#923)
- - Ensure importing link nodes to a subflow doesn't add outbound links Fixes #921
+ - #921 Ensure importing link nodes to a subflow doesn't add outbound links Fixes
- Add updateConfigNodeUsers function to editor
- Scroll to bottom when item added to editableList
- - Form input widths behave more consistently when resizing Fixes #919 #920
+ - #920 Form input widths behave more consistently when resizing Fixes #919
#### 0.14.3: Maintenance Release
Fixes
- - Create default setting.js in user-specified directory. Fixes #908
+ - #908 Create default setting.js in user-specified directory. Fixes
- MQTT In subscription qos not defaulting properly
- Let exec node handle 0 as well as "0"
@@ -1578,7 +1632,7 @@ Fixes
Fixes
- - Cannot add new twitter credentials. Fixes #913
+ - #913 Cannot add new twitter credentials. Fixes
- Support array references in Debug property field
#### 0.14.1: Maintenance Release
@@ -1586,8 +1640,8 @@ Fixes
Fixes
- Handle undefined property that led to missing wires in the editor
- - Remove duplicate 'Delete' entry in keyboard shortcut window. Closes #911
- - Add 'exec' to node-red-pi launch script. Closes #910
+ - #911 Remove duplicate 'Delete' entry in keyboard shortcut window. Closes
+ - #910 Add 'exec' to node-red-pi launch script. Closes
#### 0.14.0: Milestone Release
@@ -1609,9 +1663,9 @@ Editor
Runtime
- Always log node warnings on start without requiring -v
- - Add support for loading scoped node modules. Closes #885
+ - #885 Add support for loading scoped node modules. Closes
- Add process.env.PORT to settings.js
- - Clear node context on deploy. Closes #870
+ - #870 Clear node context on deploy. Closes
- Enable finer grained permissions in adminAuth
Nodes
@@ -1619,9 +1673,9 @@ Nodes
- Enable config nodes to reference other config nodes
- Add Split/Join nodes
- Add Link nodes
- - Add support to HTTP In node for PATCH requests. Closes #904
+ - #904 Add support to HTTP In node for PATCH requests. Closes
- Add cookie handling to HTTP In and HTTP Response nodes
- - Add repeat indicator to inject node label. Closes #887
+ - #887 Add repeat indicator to inject node label. Closes
- Add javascript highlighter to template node
- Add optional timeout to exec node
- Add TLS node and update MQTT/HTTP nodes to use it
@@ -1633,19 +1687,19 @@ Nodes
- Update Serial node to support custom baud rates
- Add support for array-syntax in typedInput msg properties
- Add RED.util to Function node sandbox
- - Capture error stack on node.error. Closes #879
+ - #879 Capture error stack on node.error. Closes
Fixes
- Add error handling to all node definition api calls
- Handle null return from Function node in array of messages
- - Defer loading of token sessions until they are accessed. Fixes #895
+ - #895 Defer loading of token sessions until they are accessed. Fixes
- set pi gpio pin status correctly if set on start
- - Prevent parent window scrolling when view is focused. Fixes #635
+ - #635 Prevent parent window scrolling when view is focused. Fixes
- Handle missing tab nodes in a loaded flow config
- Ensure typedInput dropdown doesn't fall off the page
- - Protect against node types with reserved names such as toString. Fixes #880
+ - #880 Protect against node types with reserved names such as toString. Fixes
- Do not rely on the HTML file to identify where nodes are registered from
- Preserve node properties on import
- Fix regression in delay node. topic based queue was emptying all the time instead of spreading out messages.
@@ -1661,22 +1715,22 @@ Fixes
#### 0.13.4: Maintenance Release
- Add timed release mode to delay node
- - Enable link splicing for when import_dragging nodes. Closes #811
+ - #811 Enable link splicing for when import_dragging nodes. Closes
- Fix uncaught exception on deploy whilst node sending messages
- Deprecate old mqtt client and connection pool modules
- - Change node: add bool/num types to change mode Closes #835
- - Validate fields that are `$(env-vars)` Closes #825
+ - #835 Change node: add bool/num types to change mode Closes
+ - #825 Validate fields that are `$(env-vars)` Closes
- Handle missing config nodes when validating node properties
- Pi node - don't try to send data if closing
- Load node message catalog when added dynamically
- Split palette labels on spaces and hyphens when laying out
- - Warn if editor routes are accessed but runtime not started Closes #816
- - Better handling of zero-length flow files Closes #819
+ - #816 Warn if editor routes are accessed but runtime not started Closes
+ - #819 Better handling of zero-length flow files Closes
- Allow runtime calls to RED._ to specify other namespace
- Better right alignment of numerics in delay and trigger nodes
- Allow node modules to include example flows
- Create node_modules in userDir
- - Ensure errors in node def functions don't break view rendering Fixes #815
+ - #815 Ensure errors in node def functions don't break view rendering Fixes
- Updated Inject node info with instructions for flow and global options
@@ -1700,13 +1754,13 @@ Fixes
- Make jquery spinner element css consistent with other inputs
- tcp node add reply (to all) capability
- Allow the template node to be treated as plain text
- - Validate MQTT In topics Fixes #792
- - httpNodeAuth should not block http options requests Fixes #793
+ - #792 Validate MQTT In topics Fixes
+ - #793 httpNodeAuth should not block http options requests Fixes
- Disable perMessageDeflate on WS servers - fixes 'zlib binding closed' error
- Clear trigger status icon on re-deploy
- Don't default inject payload to blank string
- Trigger node, add configurable reset
- - Allow function properties in settings Fixes #790 - fixes use of httpNodeMiddleware
+ - #790 - fixes use of httpNodeMiddleware Allow function properties in settings Fixes
- Fix order of config dialog calls to save/creds/validate
- Add debounce to Pi GPIO node
@@ -1722,7 +1776,7 @@ Fixes
- Add 'previous value' option to Switch node
- Allow existing nodes to splice into links on drag
- - CORS not properly configured on multiple http routes Fixes #783
+ - #783 CORS not properly configured on multiple http routes Fixes
- Restore shift-drag to snap/unsnap to grid
- Moving nodes with keyboard should flag workspace dirty
- Notifications flagged as fixed should not be click-closable
From 32aa4c41ce7e938878accebe17bdc4f9eb3ab609 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Thu, 27 Feb 2020 14:37:25 +0000
Subject: [PATCH 32/55] Bump for 1.0.4
---
package.json | 2 +-
.../node_modules/@node-red/editor-api/package.json | 6 +++---
.../node_modules/@node-red/editor-client/package.json | 2 +-
packages/node_modules/@node-red/nodes/package.json | 2 +-
packages/node_modules/@node-red/registry/package.json | 4 ++--
packages/node_modules/@node-red/runtime/package.json | 6 +++---
packages/node_modules/@node-red/util/package.json | 2 +-
packages/node_modules/node-red/package.json | 10 +++++-----
8 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/package.json b/package.json
index 335dddbb3..ca61f0e49 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "node-red",
- "version": "1.0.3",
+ "version": "1.0.4",
"description": "Low-code programming for event-driven applications",
"homepage": "http://nodered.org",
"license": "Apache-2.0",
diff --git a/packages/node_modules/@node-red/editor-api/package.json b/packages/node_modules/@node-red/editor-api/package.json
index 81be91b6d..9866a81ad 100644
--- a/packages/node_modules/@node-red/editor-api/package.json
+++ b/packages/node_modules/@node-red/editor-api/package.json
@@ -1,6 +1,6 @@
{
"name": "@node-red/editor-api",
- "version": "1.0.3",
+ "version": "1.0.4",
"license": "Apache-2.0",
"main": "./lib/index.js",
"repository": {
@@ -16,8 +16,8 @@
}
],
"dependencies": {
- "@node-red/util": "1.0.3",
- "@node-red/editor-client": "1.0.3",
+ "@node-red/util": "1.0.4",
+ "@node-red/editor-client": "1.0.4",
"bcryptjs": "2.4.3",
"body-parser": "1.19.0",
"clone": "2.1.2",
diff --git a/packages/node_modules/@node-red/editor-client/package.json b/packages/node_modules/@node-red/editor-client/package.json
index 7f8061c6d..0b3e16e7f 100644
--- a/packages/node_modules/@node-red/editor-client/package.json
+++ b/packages/node_modules/@node-red/editor-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@node-red/editor-client",
- "version": "1.0.3",
+ "version": "1.0.4",
"license": "Apache-2.0",
"repository": {
"type": "git",
diff --git a/packages/node_modules/@node-red/nodes/package.json b/packages/node_modules/@node-red/nodes/package.json
index 1b707b95b..cf897dbb0 100644
--- a/packages/node_modules/@node-red/nodes/package.json
+++ b/packages/node_modules/@node-red/nodes/package.json
@@ -1,6 +1,6 @@
{
"name": "@node-red/nodes",
- "version": "1.0.3",
+ "version": "1.0.4",
"license": "Apache-2.0",
"repository": {
"type": "git",
diff --git a/packages/node_modules/@node-red/registry/package.json b/packages/node_modules/@node-red/registry/package.json
index c1ee06050..448c46861 100644
--- a/packages/node_modules/@node-red/registry/package.json
+++ b/packages/node_modules/@node-red/registry/package.json
@@ -1,6 +1,6 @@
{
"name": "@node-red/registry",
- "version": "1.0.3",
+ "version": "1.0.4",
"license": "Apache-2.0",
"main": "./lib/index.js",
"repository": {
@@ -16,7 +16,7 @@
}
],
"dependencies": {
- "@node-red/util": "1.0.3",
+ "@node-red/util": "1.0.4",
"semver": "6.3.0",
"uglify-js": "3.8.0",
"when": "3.7.8"
diff --git a/packages/node_modules/@node-red/runtime/package.json b/packages/node_modules/@node-red/runtime/package.json
index 0d03b355b..50f9fb264 100644
--- a/packages/node_modules/@node-red/runtime/package.json
+++ b/packages/node_modules/@node-red/runtime/package.json
@@ -1,6 +1,6 @@
{
"name": "@node-red/runtime",
- "version": "1.0.3",
+ "version": "1.0.4",
"license": "Apache-2.0",
"main": "./lib/index.js",
"repository": {
@@ -16,8 +16,8 @@
}
],
"dependencies": {
- "@node-red/registry": "1.0.3",
- "@node-red/util": "1.0.3",
+ "@node-red/registry": "1.0.4",
+ "@node-red/util": "1.0.4",
"clone": "2.1.2",
"express": "4.17.1",
"fs-extra": "8.1.0",
diff --git a/packages/node_modules/@node-red/util/package.json b/packages/node_modules/@node-red/util/package.json
index 9ad86f6c9..9beb6189b 100644
--- a/packages/node_modules/@node-red/util/package.json
+++ b/packages/node_modules/@node-red/util/package.json
@@ -1,6 +1,6 @@
{
"name": "@node-red/util",
- "version": "1.0.3",
+ "version": "1.0.4",
"license": "Apache-2.0",
"repository": {
"type": "git",
diff --git a/packages/node_modules/node-red/package.json b/packages/node_modules/node-red/package.json
index 618480400..2b7116f64 100644
--- a/packages/node_modules/node-red/package.json
+++ b/packages/node_modules/node-red/package.json
@@ -1,6 +1,6 @@
{
"name": "node-red",
- "version": "1.0.3",
+ "version": "1.0.4",
"description": "Low-code programming for event-driven applications",
"homepage": "http://nodered.org",
"license": "Apache-2.0",
@@ -31,10 +31,10 @@
"flow"
],
"dependencies": {
- "@node-red/editor-api": "1.0.3",
- "@node-red/runtime": "1.0.3",
- "@node-red/util": "1.0.3",
- "@node-red/nodes": "1.0.3",
+ "@node-red/editor-api": "1.0.4",
+ "@node-red/runtime": "1.0.4",
+ "@node-red/util": "1.0.4",
+ "@node-red/nodes": "1.0.4",
"basic-auth": "2.0.1",
"bcryptjs": "2.4.3",
"express": "4.17.1",
From 491812fac5d524692bcb489b6e20890eb533f1ce Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Mon, 2 Mar 2020 05:07:48 +0000
Subject: [PATCH 33/55] Fix XPath in UI tests
---
test/editor/pageobjects/nodes/core/function/15-change_page.js | 2 +-
test/editor/pageobjects/nodes/core/parsers/70-JSON_page.js | 2 +-
test/editor/pageobjects/nodes/core/parsers/70-XML_page.js | 2 +-
test/editor/pageobjects/nodes/core/parsers/70-YAML_page.js | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/test/editor/pageobjects/nodes/core/function/15-change_page.js b/test/editor/pageobjects/nodes/core/function/15-change_page.js
index 59ac4f2f1..fab408718 100644
--- a/test/editor/pageobjects/nodes/core/function/15-change_page.js
+++ b/test/editor/pageobjects/nodes/core/function/15-change_page.js
@@ -85,7 +85,7 @@ changeNode.prototype.ruleMove = function (p, to, index) {
}
changeNode.prototype.addRule = function () {
- browser.clickWithWait('//*[@id="dialog-form"]/div[5]/div/a');
+ browser.clickWithWait('//div[contains(@class, "red-ui-editableList")]/a');
}
module.exports = changeNode;
diff --git a/test/editor/pageobjects/nodes/core/parsers/70-JSON_page.js b/test/editor/pageobjects/nodes/core/parsers/70-JSON_page.js
index 875c3b013..e0b31dd36 100644
--- a/test/editor/pageobjects/nodes/core/parsers/70-JSON_page.js
+++ b/test/editor/pageobjects/nodes/core/parsers/70-JSON_page.js
@@ -29,7 +29,7 @@ jsonNode.prototype.setAction = function (action) {
}
jsonNode.prototype.setProperty = function (property) {
- browser.setValue('//*[@id="dialog-form"]/div[4]/div/div[1]/input', property);
+ browser.setValue('//*[contains(@class, "red-ui-typedInput-container")]/div[1]/input', property);
}
module.exports = jsonNode;
diff --git a/test/editor/pageobjects/nodes/core/parsers/70-XML_page.js b/test/editor/pageobjects/nodes/core/parsers/70-XML_page.js
index 2a8be7d95..696ec59cb 100644
--- a/test/editor/pageobjects/nodes/core/parsers/70-XML_page.js
+++ b/test/editor/pageobjects/nodes/core/parsers/70-XML_page.js
@@ -29,7 +29,7 @@ xmlNode.prototype.setAction = function (action) {
}
xmlNode.prototype.setProperty = function (property) {
- browser.setValue('//*[@id="dialog-form"]/div[3]/div/div[1]/input', property);
+ browser.setValue('//*[contains(@class, "red-ui-typedInput-container")]/div[1]/input', property);
}
module.exports = xmlNode;
diff --git a/test/editor/pageobjects/nodes/core/parsers/70-YAML_page.js b/test/editor/pageobjects/nodes/core/parsers/70-YAML_page.js
index 16e4a678d..1002f3eb4 100644
--- a/test/editor/pageobjects/nodes/core/parsers/70-YAML_page.js
+++ b/test/editor/pageobjects/nodes/core/parsers/70-YAML_page.js
@@ -29,7 +29,7 @@ yamlNode.prototype.setAction = function (action) {
}
yamlNode.prototype.setProperty = function (property) {
- browser.setValue('//*[@id="dialog-form"]/div[3]/div/div[1]/input', property);
+ browser.setValue('//*[contains(@class, "red-ui-typedInput-container")]/div[1]/input', property);
}
module.exports = yamlNode;
From 5090b01b8e30093c8cab6d0c741034564d5e96b8 Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones
Date: Mon, 2 Mar 2020 19:50:39 +0000
Subject: [PATCH 34/55] Ensure join node handles missing buffer joiner when not
in string mode
and add tests
to close #2491
---
.../nodes/core/sequence/17-split.html | 4 +-
.../@node-red/nodes/core/sequence/17-split.js | 9 ++--
test/nodes/core/sequence/17-split_spec.js | 43 +++++++++++++++++++
3 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/core/sequence/17-split.html b/packages/node_modules/@node-red/nodes/core/sequence/17-split.html
index d730bb221..eccd33647 100644
--- a/packages/node_modules/@node-red/nodes/core/sequence/17-split.html
+++ b/packages/node_modules/@node-red/nodes/core/sequence/17-split.html
@@ -14,7 +14,7 @@
limitations under the License.
-->
-
-
diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json
index e1d7c6368..bf476ab44 100755
--- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json
+++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json
@@ -455,7 +455,7 @@
"message": "entire message",
"tip": {
"path1": "By default, payload will contain the data to be sent over, or received from a websocket. The listener can be configured to send or receive the entire message object as a JSON formatted string.",
- "path2": "This path will be relative to ",
+ "path2": "This path will be relative to __path__.",
"url1": "URL should use ws:// or wss:// scheme and point to an existing websocket listener.",
"url2": "By default, payload will contain the data to be sent over, or received from a websocket. The client can be configured to send or receive the entire message object as a JSON formatted string."
},
diff --git a/packages/node_modules/@node-red/nodes/locales/ja/messages.json b/packages/node_modules/@node-red/nodes/locales/ja/messages.json
index adc033390..4e728690b 100755
--- a/packages/node_modules/@node-red/nodes/locales/ja/messages.json
+++ b/packages/node_modules/@node-red/nodes/locales/ja/messages.json
@@ -455,7 +455,7 @@
"message": "メッセージ全体を送信/受信",
"tip": {
"path1": "標準では payload がwebsocketから送信、受信されるデータを持ちます。クライアントはJSON形式の文字列としてメッセージ全体を送信、受信するよう設定できます。",
- "path2": "This path will be relative to ",
+ "path2": "このパスは __path__ の相対パスになります。",
"url1": "URLには ws:// または wss:// スキーマを使用して、存在するwebsocketリスナを設定してください。",
"url2": "標準では payload がwebsocketから送信、受信されるデータを持ちます。クライアントはJSON形式の文字列としてメッセージ全体を送信、受信するよう設定できます。"
},
From fd2213232c936f93cdec17fabde6c33dd527f5c0 Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Fri, 13 Mar 2020 16:29:16 +0900
Subject: [PATCH 37/55] Update message catalogs for other languages
---
packages/node_modules/@node-red/nodes/locales/de/messages.json | 2 +-
packages/node_modules/@node-red/nodes/locales/ko/messages.json | 2 +-
.../node_modules/@node-red/nodes/locales/zh-CN/messages.json | 2 +-
.../node_modules/@node-red/nodes/locales/zh-TW/messages.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/locales/de/messages.json b/packages/node_modules/@node-red/nodes/locales/de/messages.json
index c36c309f3..58fce3a92 100755
--- a/packages/node_modules/@node-red/nodes/locales/de/messages.json
+++ b/packages/node_modules/@node-red/nodes/locales/de/messages.json
@@ -397,7 +397,7 @@
"message" : "gesamte Nachricht",
"tip" : {
"path1" : "Standardmäßig enthält Nutzdaten die Daten, die über einen Websocket gesendet oder von einem Websocket empfangen werden. Der Listener kann so konfiguriert werden, dass er das gesamte Nachrichtenobjekt als eine JSON-formatierte Zeichenfolge sendet oder empfängt.",
- "path2" : "Dieser Pfad ist relativ zu ",
+ "path2" : "Dieser Pfad ist relativ zu __path__.",
"url1" : "URL sollte ws: / & #47; oder wss: / & #47; Schema verwenden und auf einen vorhandenen Websocket-Listener verweisen.",
"url2" : "Standardmäßig enthält Nutzdaten die Daten, die über einen Websocket gesendet oder von einem Websocket empfangen werden. Der Client kann so konfiguriert werden, dass er das gesamte Nachrichtenobjekt als eine JSON-formatierte Zeichenfolge sendet oder empfängt."
},
diff --git a/packages/node_modules/@node-red/nodes/locales/ko/messages.json b/packages/node_modules/@node-red/nodes/locales/ko/messages.json
index d87b2c0f5..8e3a4f325 100755
--- a/packages/node_modules/@node-red/nodes/locales/ko/messages.json
+++ b/packages/node_modules/@node-red/nodes/locales/ko/messages.json
@@ -446,7 +446,7 @@
"message": "메세지 전체를 송신/수신",
"tip": {
"path1": "표준으로는 payload 가 websocket에서 송신, 수신된 데이터를 기다립니다. 클라이언트는 JSON형식의 문자열로 메세지전체를 송신, 수신하도록 설정할 수 있습니다.",
- "path2": "This path will be relative to ",
+ "path2": "This path will be relative to __path__.",
"url1": "URL에는 ws:// 또는 wss:// 스키마를 사용하여, 존재하는 websocket리스너를 설정해 주세요.",
"url2": "표준으로는 payload 가 websocket에서 송신,수신될 데이터를 기다립니다.클라이언트는 JSON형식의 문자열로 메세지전체를 송신, 수신하도록 설정할 수 있습니다."
},
diff --git a/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json b/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json
index 4fc5dc4d4..934cc734d 100644
--- a/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json
+++ b/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json
@@ -455,7 +455,7 @@
"message": "完整信息",
"tip": {
"path1": "默认情况下,payload将包含要发送或从Websocket接收的数据。侦听器可以配置为以JSON格式的字符串发送或接收整个消息对象.",
- "path2": "这条路径将相对于 ",
+ "path2": "这条路径将相对于 __path__.",
"url1": "URL 应该使用ws://或者wss://方案并指向现有的websocket侦听器.",
"url2": "默认情况下,payload 将包含要发送或从Websocket接收的数据。可以将客户端配置为以JSON格式的字符串发送或接收整个消息对象."
},
diff --git a/packages/node_modules/@node-red/nodes/locales/zh-TW/messages.json b/packages/node_modules/@node-red/nodes/locales/zh-TW/messages.json
index 7ece3333d..5368bb993 100644
--- a/packages/node_modules/@node-red/nodes/locales/zh-TW/messages.json
+++ b/packages/node_modules/@node-red/nodes/locales/zh-TW/messages.json
@@ -455,7 +455,7 @@
"message": "完整資訊",
"tip": {
"path1": "預設情況下,payload將包含要發送或從Websocket接收的資料。偵聽器可以配置為以JSON格式的字串發送或接收整個消息物件.",
- "path2": "這條路徑將相對於 ",
+ "path2": "這條路徑將相對於 __path__.",
"url1": "URL 應該使用ws://或者wss://方案並指向現有的websocket監聽器.",
"url2": "預設情況下,payload 將包含要發送或從Websocket接收的資料。可以將使用者端配置為以JSON格式的字串發送或接收整個消息物件."
},
From 72126730efb4439d474f61d6077903f9989bfc0e Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Fri, 13 Mar 2020 16:32:00 +0900
Subject: [PATCH 38/55] Remove unnecessary code for node property of websocket
node in the German language
---
.../locales/de/network/22-websocket.html | 24 -------------------
1 file changed, 24 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/locales/de/network/22-websocket.html b/packages/node_modules/@node-red/nodes/locales/de/network/22-websocket.html
index 5aa5cf884..26cc078ae 100755
--- a/packages/node_modules/@node-red/nodes/locales/de/network/22-websocket.html
+++ b/packages/node_modules/@node-red/nodes/locales/de/network/22-websocket.html
@@ -37,30 +37,6 @@
Dieser Konfigurations-Node erstellt einen WebSocket Server-Endpunkt unter Verwendung des angegebenen Pfades.
-
-
-
From 9ba9998bd6fd87443d849a17fddb6df8cff66275 Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones
Date: Fri, 13 Mar 2020 11:26:49 +0000
Subject: [PATCH 39/55] make exec node logging consistent with itself. (only be
verbose when in verbose mode)
---
packages/node_modules/@node-red/nodes/core/function/90-exec.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/node_modules/@node-red/nodes/core/function/90-exec.js b/packages/node_modules/@node-red/nodes/core/function/90-exec.js
index a5132230e..f5e7edd87 100644
--- a/packages/node_modules/@node-red/nodes/core/function/90-exec.js
+++ b/packages/node_modules/@node-red/nodes/core/function/90-exec.js
@@ -145,7 +145,7 @@ module.exports = function(RED) {
if (error.signal) { msg3.payload.signal = error.signal; }
if (error.code === null) { node.status({fill:"red",shape:"dot",text:"killed"}); }
else { node.status({fill:"red",shape:"dot",text:"error:"+error.code}); }
- node.log('error:' + error);
+ if (RED.settings.verbose) { node.log('error:' + error); }
}
else if (node.oldrc === "false") {
msg3 = RED.util.cloneMessage(msg);
From b165129388f37f2f8b873016c1cc346b9aaf0185 Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones
Date: Fri, 13 Mar 2020 11:28:19 +0000
Subject: [PATCH 40/55] Remove old leagcy wording from file node info to stop
confusing users.
---
.../@node-red/nodes/core/storage/10-file.html | 4 ++--
.../nodes/locales/en-US/storage/10-file.html | 15 ++-------------
2 files changed, 4 insertions(+), 15 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/core/storage/10-file.html b/packages/node_modules/@node-red/nodes/core/storage/10-file.html
index d20ad75c5..5487920b8 100755
--- a/packages/node_modules/@node-red/nodes/core/storage/10-file.html
+++ b/packages/node_modules/@node-red/nodes/core/storage/10-file.html
@@ -1,5 +1,5 @@
-
-
-
From 09d55a0cbdff545f59138c232163283dfe0fde65 Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones
Date: Fri, 13 Mar 2020 11:33:37 +0000
Subject: [PATCH 41/55] remove unneeded title line from file info text
---
.../@node-red/nodes/locales/en-US/storage/10-file.html | 1 -
1 file changed, 1 deletion(-)
diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/storage/10-file.html b/packages/node_modules/@node-red/nodes/locales/en-US/storage/10-file.html
index f25ce0292..fe2bbc324 100644
--- a/packages/node_modules/@node-red/nodes/locales/en-US/storage/10-file.html
+++ b/packages/node_modules/@node-red/nodes/locales/en-US/storage/10-file.html
@@ -49,7 +49,6 @@
The contents of the file as either a string or binary buffer.
filename string
If not configured in the node, this optional property sets the name of the file to be read.
-
error object
Details
The filename should be an absolute path, otherwise it will be relative to
From a9508a2c0402e055011d48d28e5df3bb353269eb Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Fri, 13 Mar 2020 21:31:16 +0900
Subject: [PATCH 42/55] Remove old leagcy wording from file node info
(Japanese)
---
.../@node-red/nodes/locales/ja/storage/10-file.html | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/locales/ja/storage/10-file.html b/packages/node_modules/@node-red/nodes/locales/ja/storage/10-file.html
index 2df174104..21d4af9be 100644
--- a/packages/node_modules/@node-red/nodes/locales/ja/storage/10-file.html
+++ b/packages/node_modules/@node-red/nodes/locales/ja/storage/10-file.html
@@ -14,7 +14,7 @@
limitations under the License.
-->
-
-
From c700d5c922af369680c27248c8da2863c2c75e63 Mon Sep 17 00:00:00 2001
From: Kazuhito Yokoi
Date: Fri, 13 Mar 2020 21:38:23 +0900
Subject: [PATCH 43/55] Remove old leagcy wording from file node info (Chinese)
---
.../@node-red/nodes/locales/zh-CN/storage/10-file.html | 8 ++------
.../@node-red/nodes/locales/zh-TW/storage/10-file.html | 8 ++------
2 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/packages/node_modules/@node-red/nodes/locales/zh-CN/storage/10-file.html b/packages/node_modules/@node-red/nodes/locales/zh-CN/storage/10-file.html
index 4ec78cdb4..eb38a5235 100644
--- a/packages/node_modules/@node-red/nodes/locales/zh-CN/storage/10-file.html
+++ b/packages/node_modules/@node-red/nodes/locales/zh-CN/storage/10-file.html
@@ -14,7 +14,7 @@
limitations under the License.
-->
-
-
diff --git a/packages/node_modules/@node-red/nodes/locales/zh-TW/storage/10-file.html b/packages/node_modules/@node-red/nodes/locales/zh-TW/storage/10-file.html
index 03705ea5c..ce2531137 100644
--- a/packages/node_modules/@node-red/nodes/locales/zh-TW/storage/10-file.html
+++ b/packages/node_modules/@node-red/nodes/locales/zh-TW/storage/10-file.html
@@ -14,7 +14,7 @@
limitations under the License.
-->
-
-
From 4c78f06c2b639f8f7eb9edcfe3f31a7d296cce2b Mon Sep 17 00:00:00 2001
From: Mauricio Bonani
Date: Fri, 13 Mar 2020 08:44:56 -0400
Subject: [PATCH 44/55] Fix paletteCategories order
---
packages/node_modules/node-red/settings.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/node_modules/node-red/settings.js b/packages/node_modules/node-red/settings.js
index 960cb6d17..c5e4355e1 100644
--- a/packages/node_modules/node-red/settings.js
+++ b/packages/node_modules/node-red/settings.js
@@ -243,7 +243,7 @@ module.exports = {
// palette. If a node's category is not in the list, the category will get
// added to the end of the palette.
// If not set, the following default order is used:
- //paletteCategories: ['subflows','flow','input','output','function','parser','social','mobile','storage','analysis','advanced'],
+ //paletteCategories: ['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'],
// Configure the logging output
logging: {
From 20f97d0d136310a994b185b0de13ea6da88b9904 Mon Sep 17 00:00:00 2001
From: Nick O'Leary
Date: Fri, 13 Mar 2020 13:09:47 +0000
Subject: [PATCH 45/55] Add better handling of host-key-verify error with
projects
---
.../editor-client/locales/en-US/editor.json | 3 +-
.../src/js/ui/projects/projects.js | 171 ++++++++++--------
.../localfilesystem/projects/git/index.js | 6 +-
3 files changed, 101 insertions(+), 79 deletions(-)
diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json
index a5f232aa6..ed4d4f9a6 100755
--- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json
+++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json
@@ -977,7 +977,8 @@
"passphrase": "Passphrase",
"retry": "Retry",
"update-failed": "Failed to update auth",
- "unhandled": "Unhandled error response"
+ "unhandled": "Unhandled error response",
+ "host-key-verify-failed": "
Host key verification failed.
The repository host key could not be verified. Please update your known_hosts file and try again."
},
"create-branch-list": {
"invalid": "Invalid branch",
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js
index 0c297c82a..da54a81c8 100755
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js
@@ -1939,100 +1939,121 @@ RED.projects = (function() {
}
}).fail(function(xhr,textStatus,err) {
var responses;
+
if (options.responses && options.responses[xhr.status]) {
responses = options.responses[xhr.status];
if (typeof responses === 'function') {
resultCallback = responses;
resultCallbackArgs = {error:responses.statusText};
return;
- } else if (options.handleAuthFail !== false && xhr.responseJSON.code === 'git_auth_failed') {
- var url = activeProject.git.remotes[xhr.responseJSON.remote||options.remote||'origin'].fetch;
+ } else if (options.handleAuthFail !== false && (xhr.responseJSON.code === 'git_auth_failed' || xhr.responseJSON.code === 'git_host_key_verification_failed')) {
+ if (xhr.responseJSON.code === 'git_auth_failed') {
+ var url = activeProject.git.remotes[xhr.responseJSON.remote||options.remote||'origin'].fetch;
- var message = $('
'+
+ var message = $('
'+
'
'+RED._("projects.send-req.auth-req")+':
'+
'
'+url+'
'+
'
');
- var isSSH = false;
- if (/^https?:\/\//.test(url)) {
- $(''+
- '').appendTo(message);
- } else if (/^(?:ssh|[\d\w\.\-_]+@[\w\.]+):(?:\/\/)?/.test(url)) {
- isSSH = true;
- var row = $('').appendTo(message);
- $('').appendTo(row);
- var projectRepoSSHKeySelect = $('