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(); } });