diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 28d3c1b32..1c437ba8c 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -29,8 +29,8 @@ jobs:
- name: Run tests
run: |
npm run test
- - name: Publish to coveralls.io
- if: ${{ matrix.node-version == 14 }}
- uses: coverallsapp/github-action@v1.1.2
- with:
- github-token: ${{ github.token }}
+ # - name: Publish to coveralls.io
+ # if: ${{ matrix.node-version == 14 }}
+ # uses: coverallsapp/github-action@v1.1.2
+ # with:
+ # github-token: ${{ github.token }}
diff --git a/README.md b/README.md
index 06310a220..a888ef166 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,6 @@
http://nodered.org
[![Build Status](https://github.com/node-red/node-red/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/node-red/node-red/actions?query=branch%3Amaster)
-[![Coverage Status](https://coveralls.io/repos/node-red/node-red/badge.svg?branch=master)](https://coveralls.io/r/node-red/node-red?branch=master)
Low-code programming for event-driven applications.
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 e6beed2e1..5474d1a23 100644
--- 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
@@ -491,6 +491,7 @@
"unassigned": "Unassigned",
"global": "global",
"workspace": "workspace",
+ "editor": "edit dialog",
"selectAll": "Select all",
"selectNone": "Select none",
"selectAllConnected": "Select connected",
diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js
index 865636b24..94bdbfcf7 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js
@@ -2095,16 +2095,27 @@ RED.nodes = (function() {
} else if (n.type.substring(0,7) === "subflow") {
var parentId = n.type.split(":")[1];
var subflow = subflow_denylist[parentId]||subflow_map[parentId]||getSubflow(parentId);
- if (createNewIds || options.importMap[n.id] === "copy") {
- parentId = subflow.id;
- node.type = "subflow:"+parentId;
- node._def = registry.getNodeType(node.type);
- delete node.i;
+ if (!subflow){
+ node._def = {
+ color:"#fee",
+ defaults: {},
+ label: "unknown: "+n.type,
+ labelStyle: "red-ui-flow-node-label-italic",
+ outputs: n.outputs|| (n.wires && n.wires.length) || 0,
+ set: registry.getNodeSet("node-red/unknown")
+ }
+ } else {
+ if (createNewIds || options.importMap[n.id] === "copy") {
+ parentId = subflow.id;
+ node.type = "subflow:"+parentId;
+ node._def = registry.getNodeType(node.type);
+ delete node.i;
+ }
+ node.name = n.name;
+ node.outputs = subflow.out.length;
+ node.inputs = subflow.in.length;
+ node.env = n.env;
}
- node.name = n.name;
- node.outputs = subflow.out.length;
- node.inputs = subflow.in.length;
- node.env = n.env;
} else if (n.type === 'junction') {
node._def = {defaults:{}}
node._config.x = node.x
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js b/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js
index 4886deabb..d949899ca 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/actionList.js
@@ -47,7 +47,7 @@ RED.actionList = (function() {
var searchDiv = $("
",{class:"red-ui-search-container"}).appendTo(dialog);
searchInput = $('').appendTo(searchDiv).searchBox({
change: function() {
- filterTerm = $(this).val().trim();
+ filterTerm = $(this).val().trim().toLowerCase();
filterTerms = filterTerm.split(" ");
searchResults.editableList('filter');
searchResults.find("li.selected").removeClass("selected");
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 da7954625..188819734 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
@@ -45,11 +45,13 @@ RED.editor = (function() {
var hasChanged;
if (node.type.indexOf("subflow:")===0) {
subflow = RED.nodes.subflow(node.type.substring(8));
- isValid = subflow.valid;
- hasChanged = subflow.changed;
- if (isValid === undefined) {
- isValid = validateNode(subflow);
+ if (subflow){
+ isValid = subflow.valid;
hasChanged = subflow.changed;
+ if (isValid === undefined) {
+ isValid = validateNode(subflow);
+ hasChanged = subflow.changed;
+ }
}
validationErrors = validateNodeProperties(node, node._def.defaults, node);
node.valid = isValid && validationErrors.length === 0;
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js b/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js
index 40e11aa72..a081656fc 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/keyboard.js
@@ -491,7 +491,11 @@ RED.keyboard = (function() {
okButton.attr("disabled",!valid);
});
- var scopeSelect = $('').appendTo(scope);
+ var scopeSelect = $('').appendTo(scope);
scopeSelect.i18n();
if (object.scope === "workspace") {
object.scope = "red-ui-workspace";
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/subflow.js b/packages/node_modules/@node-red/editor-client/src/js/ui/subflow.js
index 43e525070..abe6402db 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/subflow.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/subflow.js
@@ -663,24 +663,23 @@ RED.subflow = (function() {
var candidateOutputs = [];
var candidateInputNodes = {};
- var boundingBox = [nodeList[0].x,
- nodeList[0].y,
- nodeList[0].x,
- nodeList[0].y];
+ var boundingBox = [nodeList[0].x-(nodeList[0].w/2),
+ nodeList[0].y-(nodeList[0].h/2),
+ nodeList[0].x+(nodeList[0].w/2),
+ nodeList[0].y+(nodeList[0].h/2)];
for (i=0;i span {
display: inline-block;
margin-left: 5px;
+ overflow-wrap: anywhere;
}
border-bottom: 1px solid var(--red-ui-secondary-border-color);
}
diff --git a/packages/node_modules/@node-red/runtime/lib/flows/util.js b/packages/node_modules/@node-red/runtime/lib/flows/util.js
index 7c98fc041..83665b589 100644
--- a/packages/node_modules/@node-red/runtime/lib/flows/util.js
+++ b/packages/node_modules/@node-red/runtime/lib/flows/util.js
@@ -199,7 +199,9 @@ function parseConfig(config) {
if (subflowDetails) {
var subflowType = subflowDetails[1]
n.subflow = subflowType;
- flow.subflows[subflowType].instances.push(n)
+ if (flow.subflows[subflowType]) {
+ flow.subflows[subflowType].instances.push(n)
+ }
}
if (container) {
container.nodes[n.id] = n;
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();
}
});