From 02c7d014cb7aa1fd1c06578eb71592b42cdc6ce1 Mon Sep 17 00:00:00 2001 From: Stephen McLaughlin <44235289+Steve-Mcl@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:00:26 +0100 Subject: [PATCH 1/7] dont use subscriptionIdentifier no broker support --- .../node_modules/@node-red/nodes/core/network/10-mqtt.js | 8 +++++++- 1 file changed, 7 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 0a7ed6dfa..f4fc9ad2c 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 @@ -697,7 +697,8 @@ module.exports = function(RED) { node.options.rejectUnauthorized = (node.verifyservercert == "true" || node.verifyservercert === true); } } - + node.v5 = () => node.options && node.options.protocolVersion == 5 + node.subscriptionIdentifiersAvailable = () => node.v5() && node.serverProperties && node.serverProperties.subscriptionIdentifiersAvailable n.autoConnect = n.autoConnect === "false" || n.autoConnect === false ? false : true; node.setOptions(n, true); @@ -920,7 +921,12 @@ module.exports = function(RED) { }; node.subscriptions[topic][ref] = sub; if (node.connected) { + const subIdsAvailable = node.subscriptionIdentifiersAvailable() node._clientOn('message',sub.handler); + // if the broker doesn't support subscription identifiers (e.g. AWS core), then don't send them + if (options.properties && options.properties.subscriptionIdentifier && subIdsAvailable !== true) { + delete options.properties.subscriptionIdentifier + } node.client.subscribe(topic, options); } }; From c0650cc0f5b9071269c1208f9633bdc0c1693bdf Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Mon, 1 May 2023 13:53:54 +0900 Subject: [PATCH 2/7] Add Japanese translation for keyboard shortcut scope --- .../node_modules/@node-red/editor-client/locales/ja/editor.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index b5939cec0..6022b5e81 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -491,6 +491,7 @@ "unassigned": "未割当", "global": "グローバル", "workspace": "ワークスペース", + "editor": "編集ダイアログ", "selectAll": "全てのノードを選択", "selectNone": "選択を外す", "selectAllConnected": "接続されたノードを選択", From be4eab65f66fb98025f53633dabbcad45428eecd Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sat, 6 May 2023 19:40:52 +0900 Subject: [PATCH 3/7] Fix content type for downloading flows.json --- .../@node-red/editor-client/src/js/ui/clipboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js b/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js index f547203d4..b185a90c1 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js @@ -37,13 +37,13 @@ RED.clipboard = (function() { // IE11 workaround // IE does not support data uri scheme for downloading data var blob = new Blob([data], { - type: "data:text/plain;charset=utf-8" + type: "data:json/application;charset=utf-8" }); navigator.msSaveBlob(blob, file); } else { var element = document.createElement('a'); - element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(data)); + element.setAttribute('href', 'data:json/application;charset=utf-8,' + encodeURIComponent(data)); element.setAttribute('download', file); element.style.display = 'none'; document.body.appendChild(element); From e8ddee24a9944e57d186f02b081295c56a45b67c Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sat, 6 May 2023 21:10:49 +0900 Subject: [PATCH 4/7] Use correct content type for downloading flows.json --- .../@node-red/editor-client/src/js/ui/clipboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js b/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js index b185a90c1..af82f1b14 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/clipboard.js @@ -37,13 +37,13 @@ RED.clipboard = (function() { // IE11 workaround // IE does not support data uri scheme for downloading data var blob = new Blob([data], { - type: "data:json/application;charset=utf-8" + type: "data:application/json;charset=utf-8" }); navigator.msSaveBlob(blob, file); } else { var element = document.createElement('a'); - element.setAttribute('href', 'data:json/application;charset=utf-8,' + encodeURIComponent(data)); + element.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(data)); element.setAttribute('download', file); element.style.display = 'none'; document.body.appendChild(element); From 67c5a248ad74f88d7fb5c044af288447c3e393a2 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Mon, 8 May 2023 09:28:35 +0100 Subject: [PATCH 5/7] Fix RBE for missing "payload" To close #4165 --- packages/node_modules/@node-red/nodes/core/function/rbe.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/nodes/core/function/rbe.js b/packages/node_modules/@node-red/nodes/core/function/rbe.js index eb526a441..34a8e91ed 100644 --- a/packages/node_modules/@node-red/nodes/core/function/rbe.js +++ b/packages/node_modules/@node-red/nodes/core/function/rbe.js @@ -35,7 +35,11 @@ module.exports = function(RED) { } else { node.previous = {}; } } - var value = RED.util.getMessageProperty(msg,node.property); + var value; + try { + value = RED.util.getMessageProperty(msg,node.property); + } + catch(e) { } if (value !== undefined) { var t = "_no_topic"; if (node.septopics) { t = topic || t; } From 7e9042e9f713eec981adeb8ff6af226a40efb5af Mon Sep 17 00:00:00 2001 From: wooferguy Date: Wed, 17 May 2023 05:14:18 +1200 Subject: [PATCH 6/7] Check for group Remove junction from groups node list if it is present. --- .../@node-red/editor-client/src/js/ui/view.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index 4131f5dbf..84bf02332 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -2646,6 +2646,16 @@ RED.view = (function() { var result = RED.nodes.removeJunction(node) removedJunctions.push(node); removedLinks = removedLinks.concat(result.links); + if (node.g) { + var group = RED.nodes.group(node.g); + if (selectedGroups.indexOf(group) === -1) { + // Don't use RED.group.removeFromGroup as that emits + // a change event on the node - but we're deleting it + var index = group.nodes.indexOf(node); + group.nodes.splice(index,1); + RED.group.markDirty(group); + } + } } else { if (node.direction === "out") { removedSubflowOutputs.push(node); From 9e3f1482735cfb5b5b46ad03debfc159b61694c6 Mon Sep 17 00:00:00 2001 From: wooferguy Date: Wed, 17 May 2023 18:56:07 +1200 Subject: [PATCH 7/7] Invalid JSONata Inject node test passing condition This test would sometimes run twice, causing the author to increase its catch count to 2 before considering the test complete. However even one pass proves the node is behaving as expected, and it always runs at least once. I have left the conditional statement in so it can be changed in future. --- test/nodes/core/common/20-inject_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/nodes/core/common/20-inject_spec.js b/test/nodes/core/common/20-inject_spec.js index a4dbdd9e4..3e9a35391 100644 --- a/test/nodes/core/common/20-inject_spec.js +++ b/test/nodes/core/common/20-inject_spec.js @@ -854,7 +854,7 @@ describe('inject node', function() { }); n1.on("call:error", function(err) { count++; - if (count == 2) { + if (count == 1) { done(); } });