update from upstream

This commit is contained in:
andrew.greene
2022-07-21 16:36:51 -06:00
333 changed files with 31708 additions and 23101 deletions

View File

@@ -69,7 +69,7 @@
outputs:1, // set the number of outputs - 0 to n
color: "#ddd", // set icon color
// set the icon (held in icons dir below where you save the node)
icon: "myicon.png", // saved in icons/myicon.png
icon: "myicon.svg", // saved in icons/myicon.svg
label: function() { // sets the default label contents
return this.name||this.topic||"sample";
},

View File

@@ -0,0 +1,5 @@
<!--
05-junction.html
This file exists so that the runtime loads the Junction node into the registry,
but it is empty so it doesn't appear in the editor palette
-->

View File

@@ -0,0 +1,12 @@
module.exports = function(RED) {
"use strict";
function JunctionNode(n) {
RED.nodes.createNode(this,n);
this.on("input",function(msg, send, done) {
send(msg);
done();
});
}
RED.nodes.registerType("junction",JunctionNode);
}

View File

@@ -459,30 +459,38 @@ RED.debug = (function() {
function showMessageMenu(button,dbgMessage,sourceId) {
activeMenuMessage = dbgMessage;
if (!menuOptionMenu) {
menuOptionMenu = RED.menu.init({id:"red-ui-debug-msg-option-menu",
options: [
{id:"red-ui-debug-msg-menu-item-collapse",label:RED._("node-red:debug.messageMenu.collapseAll"),onselect:function(){
activeMenuMessage.collapse();
}},
var opts = [
{id:"red-ui-debug-msg-menu-item-collapse",label:RED._("node-red:debug.messageMenu.collapseAll"),onselect:function(){
activeMenuMessage.collapse();
}},
];
if (activeMenuMessage.clearPinned) {
opts.push(
{id:"red-ui-debug-msg-menu-item-clear-pins",label:RED._("node-red:debug.messageMenu.clearPinned"),onselect:function(){
activeMenuMessage.clearPinned();
}},
null,
{id:"red-ui-debug-msg-menu-item-filter", label:RED._("node-red:debug.messageMenu.filterNode"),onselect:function(){
var candidateNodes = RED.nodes.filterNodes({type:'debug'});
candidateNodes.forEach(function(n) {
filteredNodes[n.id] = true;
});
delete filteredNodes[sourceId];
$("#red-ui-sidebar-debug-filterSelected").trigger("click");
RED.settings.set('debug.filteredNodes',Object.keys(filteredNodes))
refreshMessageList();
}},
{id:"red-ui-debug-msg-menu-item-clear-filter",label:RED._("node-red:debug.messageMenu.clearFilter"),onselect:function(){
$("#red-ui-sidebar-debug-filterAll").trigger("click");
refreshMessageList();
}}
]
);
}
opts.push(
null,
{id:"red-ui-debug-msg-menu-item-filter", label:RED._("node-red:debug.messageMenu.filterNode"),onselect:function(){
var candidateNodes = RED.nodes.filterNodes({type:'debug'});
candidateNodes.forEach(function(n) {
filteredNodes[n.id] = true;
});
delete filteredNodes[sourceId];
$("#red-ui-sidebar-debug-filterSelected").trigger("click");
RED.settings.set('debug.filteredNodes',Object.keys(filteredNodes))
refreshMessageList();
}},
{id:"red-ui-debug-msg-menu-item-clear-filter",label:RED._("node-red:debug.messageMenu.clearFilter"),onselect:function(){
$("#red-ui-sidebar-debug-filterAll").trigger("click");
refreshMessageList();
}}
);
menuOptionMenu = RED.menu.init({id:"red-ui-debug-msg-option-menu",
options: opts
});
menuOptionMenu.css({
position: "absolute"
@@ -581,12 +589,45 @@ RED.debug = (function() {
var metaRow = $('<div class="red-ui-debug-msg-meta"></div>').appendTo(msg);
$('<span class="red-ui-debug-msg-date">'+ getTimestamp()+'</span>').appendTo(metaRow);
if (sourceNode) {
$('<a>',{href:"#",class:"red-ui-debug-msg-name"}).text('node: '+(o.name||sourceNode.name||sourceNode.id))
var nodeLink = $('<a>',{href:"#",class:"red-ui-debug-msg-name"}).text(RED._("node-red:debug.node")+": "+(o.name||sourceNode.name||sourceNode.id))
.appendTo(metaRow)
.on("click", function(evt) {
evt.preventDefault();
config.messageSourceClick(sourceNode.id, sourceNode._alias, sourceNode.path);
});
if (sourceNode.pathHierarchy) {
RED.popover.create({
tooltip: true,
target:nodeLink,
trigger: "hover",
size: "small",
direction: "bottom",
interactive: true,
content: function() {
const content = $("<div>")
sourceNode.pathHierarchy.forEach((pathPart,idx) => {
const link = $("<a>", {href:"#" ,style:'display: block'})
.css({
paddingLeft:((idx*10)+((idx === sourceNode.pathHierarchy.length - 1)?10:0))+"px",
paddingRight:'2px'
})
.text(pathPart.label)
.appendTo(content)
.on("click", function(evt) {
evt.preventDefault();
config.messageSourceClick(pathPart.id);
})
if (idx < sourceNode.pathHierarchy.length - 1) {
$('<i class="fa fa-angle-down" style="margin-right: 3px"></i>').prependTo(link)
}
})
return content
},
delay: { show: 50, hide: 150 }
});
}
} else if (name) {
$('<span class="red-ui-debug-msg-name">'+name+'</span>').appendTo(metaRow);
}

View File

@@ -0,0 +1,149 @@
[
{
"id": "48d660b3a4109400",
"type": "inject",
"z": "9e5f48c16729e4f0",
"name": "inject",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 185,
"y": 795,
"wires": [
[
"e0f9e206681f3504"
]
]
},
{
"id": "e0f9e206681f3504",
"type": "delay",
"z": "9e5f48c16729e4f0",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "30",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 430,
"y": 795,
"wires": [
[
"e470f1d794e1bef9",
"af7cea1dfb797a75"
]
]
},
{
"id": "943543cf7a1958e4",
"type": "change",
"z": "9e5f48c16729e4f0",
"name": "set flush to 1",
"rules": [
{
"t": "set",
"p": "flush",
"pt": "msg",
"to": "1",
"tot": "num"
},
{
"t": "delete",
"p": "payload",
"pt": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 510,
"y": 915,
"wires": [
[
"e0f9e206681f3504"
]
]
},
{
"id": "e470f1d794e1bef9",
"type": "function",
"z": "9e5f48c16729e4f0",
"name": "Do something that takes a few seconds",
"func": "\n//send on the message between 3 and 6 seconds later\nsetTimeout(\n function() { \n node.send(msg) \n }, \n Math.random() * 3000 + 3000\n);\nreturn null;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 760,
"y": 795,
"wires": [
[
"943543cf7a1958e4",
"859258551b8389b7"
]
]
},
{
"id": "af7cea1dfb797a75",
"type": "debug",
"z": "9e5f48c16729e4f0",
"name": "IN",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 710,
"y": 735,
"wires": []
},
{
"id": "859258551b8389b7",
"type": "debug",
"z": "9e5f48c16729e4f0",
"name": "OUT",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 895,
"y": 735,
"wires": []
},
{
"id": "ecaaf26326da10ee",
"type": "comment",
"z": "9e5f48c16729e4f0",
"name": "Simple Queue with release",
"info": "This example shows how to use a delay node set to rate limit mode as a simple queue to feed a\nprocess that may take some time to complete. Once that process completes the feedback is then\nset to flush out the next message - thus running the \"loop\" as fast as possible with no overlaps.\n\n**Note**: only the `msg.flush` property msut be set - otherwise the other properties that are fed \nback will be added as another new message to the queue.",
"x": 235,
"y": 915,
"wires": []
}
]

View File

@@ -423,6 +423,7 @@
"string": "Ein String",
"base64": "Ein Base64-kodierter String",
"auto": "Auto-Erkennung (string oder buffer)",
"auto-detect": "Auto-Erkennung (parsed JSON-Objekt, string oder buffer)",
"json": "Ein analysiertes (parsed) JSON-Objekt"
},
"true": "wahr",

View File

@@ -29,8 +29,8 @@
<p>Create virtual wires between flows.</p>
<h3>Details</h3>
<p>This node can be configured to either send messages to all <code>link in</code>
nodes it is connected to, or to send a response back to the <code>link call</code>
node that triggered the flow.</p>
nodes it is connected to, or to send a response back to the <code>link call</code>
node that triggered the flow.</p>
<p>When in 'send to all' mode, the wires between link nodes are only displayed when
the node is selected. If there are any wires to other tabs, a virtual node
is shown that can be clicked on to jump to the appropriate tab.</p>
@@ -39,12 +39,28 @@
<script type="text/html" data-help-name="link call">
<p>Calls a flow that starts with a <code>link in</code> node and passes on the response.</p>
<h3>Inputs</h3>
<dl class="message-properties">
<dt class="optional">target<span class="property-type">string</span></dt>
<dd>When the option <b>Link Type</b> is set to "Dynamic target", set <code>msg.target</code> to the name of the
<code>link in</code> node you wish to call.</dd>
</dl>
<h3>Details</h3>
<p>This node can be connected to a <code>link in</code> node that exists on any tab.
The flow connected to that node must end with a <code>link out</code> node configured
in 'return' mode.</p>
<p>When this node receives a message, it is passed to the connected <code>link in</code> node.
It then waits for a response which it then sends on.</o>
It then waits for a response which it then sends on.</p>
<p>If no response is received within the configured timeout, default 30 seconds, the node
will log an error that can be caught using the <code>catch</code> node.</p>
<p>When the option <b>Link Type</b> is set to "Dynamic target" <code>msg.target</code> can be used to call a
<code>link in</code> by name or id.
<ul>
<li>If there is a <code>link in</code> nodes with the same id, it will be called</li>
<li>If there are two or more <code>link in</code> nodes with the same name, an error will be raised</li>
<li>A <code>link call</code> cannot call a <code>link in</code> node inside a subflow</li>
</ul>
</p>
The flow connected to that node must end with a <code>link out</code> node configured
in 'return' mode.</p>
</script>

219
packages/node_modules/@node-red/nodes/locales/en-US/messages.json vendored Executable file → Normal file
View File

@@ -85,7 +85,11 @@
"errors": {
"failed": "inject failed, see log for details",
"toolong": "Interval too large",
"invalid-expr": "Invalid JSONata expression: __error__"
"invalid-expr": "Invalid JSONata expression: __error__",
"invalid-jsonata": "__prop__: invalid property expression: __error__",
"invalid-prop": "__prop__: invalid property expression: __error__",
"invalid-json": "__prop__: invalid JSON data: __error__",
"invalid-repeat": "Invalid repeat value"
}
},
"catch": {
@@ -125,6 +129,7 @@
"msgprop": "message property",
"msgobj": "complete msg object",
"autostatus": "same as debug output",
"messageCount": "message count",
"to": "To",
"debtab": "debug tab",
"tabcon": "debug tab and console",
@@ -132,6 +137,7 @@
"toConsole": "system console",
"toStatus": "node status (32 characters)",
"severity": "Level",
"node": "node",
"notification": {
"activated": "Successfully activated: __label__",
"deactivated": "Successfully deactivated: __label__"
@@ -170,6 +176,11 @@
"outMode": "Mode",
"sendToAll": "Send to all connected link nodes",
"returnToCaller": "Return to calling link node",
"timeout": "timeout",
"linkCallType": "Link Type",
"staticLinkCall": "Fixed target",
"dynamicLinkCall": "Dynamic target (msg.target)",
"dynamicLinkLabel": "Dynamic",
"error": {
"missingReturn": "Missing return node information"
}
@@ -183,20 +194,22 @@
"key": "Private Key",
"passphrase": "Passphrase",
"ca": "CA Certificate",
"verify-server-cert":"Verify server certificate",
"verify-server-cert": "Verify server certificate",
"servername": "Server Name",
"alpnprotocol": "ALPN Protocol"
},
"placeholder": {
"cert":"path to certificate (PEM format)",
"key":"path to private key (PEM format)",
"ca":"path to CA certificate (PEM format)",
"passphrase":"private key passphrase (optional)",
"servername":"for use with SNI",
"alpnprotocol":"for use with ALPN"
"cert": "path to certificate (PEM format)",
"key": "path to private key (PEM format)",
"ca": "path to CA certificate (PEM format)",
"passphrase": "private key passphrase (optional)",
"servername": "for use with SNI",
"alpnprotocol": "for use with ALPN"
},
"error": {
"missing-file": "No certificate/key file provided"
"missing-file": "No certificate/key file provided",
"invalid-cert": "Certificate not specified",
"invalid-key": "Private key not specified"
}
},
"exec": {
@@ -250,8 +263,10 @@
"moduleLoadError": "Failed to load module __module__: __error__",
"moduleNameError": "Invalid module variable name: __name__",
"moduleNameReserved": "Reserved variable name: __name__",
"inputListener":"Cannot add listener to 'input' event within Function",
"non-message-returned":"Function tried to send a message of type __type__"
"inputListener": "Cannot add listener to 'input' event within Function",
"non-message-returned": "Function tried to send a message of type __type__",
"invalid-js": "Error in JavaScript code",
"missing-module": "Module __module__ missing"
}
},
"template": {
@@ -305,27 +320,35 @@
"limit": "limit",
"limitTopic": "limit topic",
"random": "random",
"units" : {
"rate": "rate",
"random-first": "first random value",
"random-last": "last random value",
"units": {
"second": {
"plural" : "Seconds",
"plural": "Seconds",
"singular": "Second"
},
"minute": {
"plural" : "Minutes",
"plural": "Minutes",
"singular": "Minute"
},
"hour": {
"plural" : "Hours",
"plural": "Hours",
"singular": "Hour"
},
"day": {
"plural" : "Days",
"plural": "Days",
"singular": "Day"
}
}
},
"errors": {
"too-many" : "too many pending messages in delay node"
"too-many": "too many pending messages in delay node",
"invalid-timeout": "Invalid delay value",
"invalid-rate": "Invalid rate value",
"invalid-rate-unit": "Invalid rate unit value",
"invalid-random-first": "Invalid first random value",
"invalid-random-last": "Invalid last random value"
}
},
"trigger": {
@@ -360,9 +383,11 @@
"trigger-block": "trigger & block",
"trigger-loop": "resend every",
"reset": "Reset the trigger if:",
"resetMessage":"msg.reset is set",
"resetPayload":"msg.payload equals",
"resetprompt": "optional"
"resetMessage": "msg.reset is set",
"resetPayload": "msg.payload equals",
"resetprompt": "optional",
"duration": "duration",
"topic": "topic"
}
},
"comment": {
@@ -387,8 +412,8 @@
"cleansession": "Use clean session",
"cleanstart": "Use clean start",
"use-tls": "Use TLS",
"tls-config":"TLS Configuration",
"verify-server-cert":"Verify server certificate",
"tls-config": "TLS Configuration",
"verify-server-cert": "Verify server certificate",
"compatmode": "Use legacy MQTT 3.1 support",
"userProperties": "User Properties",
"subscriptionIdentifier": "Subscription ID",
@@ -420,12 +445,13 @@
"action": "Action",
"staticTopic": "Subscribe to single topic",
"dynamicTopic": "Dynamic subscription",
"auto-connect": "Connect automatically"
"auto-connect": "Connect automatically",
"auto-mode-depreciated": "This option is depreciated. Please use the new auto-detect mode."
},
"sections-label":{
"sections-label": {
"birth-message": "Message sent on connection (birth message)",
"will-message":"Message sent on an unexpected disconnection (will message)",
"close-message":"Message sent before disconnecting (close message)"
"will-message": "Message sent on an unexpected disconnection (will message)",
"close-message": "Message sent before disconnecting (close message)"
},
"tabs-label": {
"connection": "Connection",
@@ -434,7 +460,7 @@
},
"placeholder": {
"clientid": "Leave blank for auto generated",
"clientid-nonclean":"Must be set for non-clean sessions",
"clientid-nonclean": "Must be set for non-clean sessions",
"will-topic": "Leave blank to disable will message",
"birth-topic": "Leave blank to disable birth message",
"close-topic": "Leave blank to disable close message"
@@ -451,6 +477,7 @@
"string": "a String",
"base64": "a Base64 encoded string",
"auto": "auto-detect (string or buffer)",
"auto-detect": "auto-detect (parsed JSON object, string or buffer)",
"json": "a parsed JSON object"
},
"true": "true",
@@ -465,7 +492,8 @@
"invalid-json-parse": "Failed to parse JSON string",
"invalid-action-action": "Invalid action specified",
"invalid-action-alreadyconnected": "Disconnect from broker before connecting",
"invalid-action-badsubscription": "msg.topic is missing or invalid"
"invalid-action-badsubscription": "msg.topic is missing or invalid",
"invalid-client-id": "Missing Client ID"
}
},
"httpin": {
@@ -478,7 +506,7 @@
"status": "Status code",
"headers": "Headers",
"other": "other",
"paytoqs" : {
"paytoqs": {
"ignore": "Ignore",
"query": "Append to query-string parameters",
"body": "Send as request body"
@@ -492,7 +520,7 @@
"setby": "- set by msg.method -",
"basicauth": "Use authentication",
"use-tls": "Enable secure (SSL/TLS) connection",
"tls-config":"TLS Configuration",
"tls-config": "TLS Configuration",
"basic": "basic authentication",
"digest": "digest authentication",
"bearer": "bearer authentication",
@@ -517,11 +545,12 @@
"no-response": "No response object",
"json-error": "JSON parse error",
"no-url": "No url specified",
"deprecated-call":"Deprecated call to __method__",
"invalid-transport":"non-http transport requested",
"deprecated-call": "Deprecated call to __method__",
"invalid-transport": "non-http transport requested",
"timeout-isnan": "Timeout value is not a valid number, ignoring",
"timeout-isnegative": "Timeout value is negative, ignoring",
"invalid-payload": "Invalid payload"
"invalid-payload": "Invalid payload",
"invalid-url": "Invalid url"
},
"status": {
"requesting": "requesting"
@@ -554,7 +583,9 @@
"connect-error": "An error occurred on the ws connection: ",
"send-error": "An error occurred while sending: ",
"missing-conf": "Missing server configuration",
"duplicate-path": "Cannot have two WebSocket listeners on the same path: __path__"
"duplicate-path": "Cannot have two WebSocket listeners on the same path: __path__",
"missing-server": "Missing server configuration",
"missing-client": "Missing client configuration"
}
},
"watch": {
@@ -583,7 +614,8 @@
"ms": "ms",
"chars": "chars",
"close": "Close",
"optional": "(optional)"
"optional": "(optional)",
"reattach": "re-attach delimiter"
},
"type": {
"listen": "Listen on",
@@ -613,7 +645,6 @@
"connection-closed": "connection closed from __host__:__port__",
"connections": "__count__ connection",
"connections_plural": "__count__ connections"
},
"errors": {
"connection-lost": "connection lost to __host__:__port__",
@@ -624,7 +655,9 @@
"no-host": "Host and/or port not set",
"connect-timeout": "connect timeout",
"connect-fail": "connect failed",
"bad-string": "failed to convert to string"
"bad-string": "failed to convert to string",
"invalid-host": "Invalid host",
"invalid-port": "Invalid port"
}
},
"udp": {
@@ -638,7 +671,8 @@
"send": "Send a",
"toport": "to port",
"address": "Address",
"decode-base64": "Decode Base64 encoded payload?"
"decode-base64": "Decode Base64 encoded payload?",
"port": "port"
},
"placeholder": {
"interface": "(optional) local interface or address to bind to",
@@ -685,7 +719,8 @@
"port-notset": "udp: port not set",
"port-invalid": "udp: port number not valid",
"alreadyused": "udp: port __port__ already in use",
"ifnotfound": "udp: interface __iface__ not found"
"ifnotfound": "udp: interface __iface__ not found",
"invalid-group": "invalid multicast group"
}
},
"switch": {
@@ -693,7 +728,9 @@
"label": {
"property": "Property",
"rule": "rule",
"repair": "recreate message sequences"
"repair": "recreate message sequences",
"value-rules": "value rules",
"sequence-rules": "sequence rules"
},
"previous": "previous value",
"and": "and",
@@ -749,7 +786,9 @@
"invalid-from": "Invalid 'from' property: __error__",
"invalid-json": "Invalid 'to' JSON property",
"invalid-expr": "Invalid JSONata expression: __error__",
"no-override": "Cannot set property of non-object type: __property__"
"no-override": "Cannot set property of non-object type: __property__",
"invalid-prop": "Invalid property expression: __property__",
"invalid-json-data": "Invalid JSON data: __error__"
}
},
"range": {
@@ -760,7 +799,11 @@
"resultrange": "to the target range",
"from": "from",
"to": "to",
"roundresult": "Round result to the nearest integer?"
"roundresult": "Round result to the nearest integer?",
"minin": "input from",
"maxin": "input to",
"minout": "target from",
"maxout": "target to"
},
"placeholder": {
"min": "e.g. 0",
@@ -857,8 +900,8 @@
"property": "Property",
"actions": {
"toggle": "Convert between JSON String & Object",
"str":"Always convert to JSON String",
"obj":"Always convert to JavaScript Object"
"str": "Always convert to JSON String",
"obj": "Always convert to JavaScript Object"
}
}
},
@@ -885,6 +928,7 @@
"write": "write file",
"read": "read file",
"filename": "Filename",
"path": "path",
"action": "Action",
"addnewline": "Add newline (\\n) to each payload?",
"createdir": "Create directory if it doesn't exist?",
@@ -944,15 +988,15 @@
},
"split": {
"split": "split",
"intro":"Split <code>msg.payload</code> based on type:",
"object":"<b>Object</b>",
"objectSend":"Send a message for each key/value pair",
"strBuff":"<b>String</b> / <b>Buffer</b>",
"array":"<b>Array</b>",
"splitUsing":"Split using",
"splitLength":"Fixed length of",
"stream":"Handle as a stream of messages",
"addname":" Copy key to "
"intro": "Split <code>msg.payload</code> based on type:",
"object": "<b>Object</b>",
"objectSend": "Send a message for each key/value pair",
"strBuff": "<b>String</b> / <b>Buffer</b>",
"array": "<b>Array</b>",
"splitUsing": "Split using",
"splitLength": "Fixed length of",
"stream": "Handle as a stream of messages",
"addname": " Copy key to "
},
"join": {
"join": "join",
@@ -985,6 +1029,7 @@
"complete": "After a message with the <code>msg.complete</code> property set",
"tip": "This mode assumes this node is either paired with a <i>split</i> node or the received messages will have a properly configured <code>msg.parts</code> property.",
"too-many": "too many pending messages in join node",
"message-prop": "message property",
"merge": {
"topics-label": "Merged Topics",
"topics": "topics",
@@ -1003,46 +1048,51 @@
"invalid-type": "Cannot join __error__ to buffer"
}
},
"sort" : {
"sort": {
"sort": "sort",
"target" : "Sort",
"seq" : "message sequence",
"key" : "Key",
"elem" : "element value",
"order" : "Order",
"ascending" : "ascending",
"descending" : "descending",
"as-number" : "as number",
"invalid-exp" : "Invalid JSONata expression in sort node: __message__",
"too-many" : "Too many pending messages in sort node",
"clear" : "clear pending message in sort node"
"target": "Sort",
"seq": "message sequence",
"key": "Key",
"elem": "element value",
"order": "Order",
"ascending": "ascending",
"descending": "descending",
"as-number": "as number",
"invalid-exp": "Invalid JSONata expression in sort node: __message__",
"too-many": "Too many pending messages in sort node",
"clear": "clear pending message in sort node"
},
"batch" : {
"batch": {
"batch": "batch",
"mode": {
"label" : "Mode",
"num-msgs" : "Group by number of messages",
"interval" : "Group by time interval",
"concat" : "Concatenate sequences"
"label": "Mode",
"num-msgs": "Group by number of messages",
"interval": "Group by time interval",
"concat": "Concatenate sequences"
},
"count": {
"label" : "Number of messages",
"overlap" : "Overlap",
"count" : "count",
"invalid" : "Invalid count and overlap"
"label": "Number of messages",
"overlap": "Overlap",
"count": "count",
"invalid": "Invalid count and overlap"
},
"interval": {
"label" : "Interval",
"seconds" : "seconds",
"empty" : "send empty message when no message arrives"
"label": "Interval",
"seconds": "seconds",
"empty": "send empty message when no message arrives"
},
"concat": {
"topics-label": "Topics",
"topic" : "topic"
"topic": "topic"
},
"too-many" : "too many pending messages in batch node",
"unexpected" : "unexpected mode",
"no-parts" : "no parts property in message"
"too-many": "too many pending messages in batch node",
"unexpected": "unexpected mode",
"no-parts": "no parts property in message",
"error": {
"invalid-count": "Invalid count",
"invalid-overlap": "Invalid overlap",
"invalid-interval": "Invalid interval"
}
},
"rbe": {
"rbe": "filter",
@@ -1051,9 +1101,12 @@
"init": "Send initial value",
"start": "Start value",
"name": "Name",
"septopics": "Apply mode separately for each "
"septopics": "Apply mode separately for each ",
"gap": "value change",
"property": "property",
"topic": "topic"
},
"placeholder":{
"placeholder": {
"bandgap": "e.g. 10 or 5%",
"start": "leave blank to use first data received"
},

View File

@@ -25,7 +25,7 @@
<dd>If not configured in the node, this optional property sets the HTTP method of the request.
Must be one of <code>GET</code>, <code>PUT</code>, <code>POST</code>, <code>PATCH</code> or <code>DELETE</code>.</dd>
<dt class="optional">headers <span class="property-type">object</span></dt>
<dd>Sets the HTTP headers of the request.</dd>
<dd>Sets the HTTP headers of the request. NOTE: Any headers set in the node configuration will overwrite any matching headers in <code>msg.headers</code> </dd>
<dt class="optional">cookies <span class="property-type">object</span></dt>
<dd>If set, can be used to send cookies with the request.</dd>
<dt class="optional">payload</dt>

View File

@@ -20,7 +20,9 @@
<h3>Inputs</h3>
<dl class="message-properties">
<dt class="optional">filename <span class="property-type">string</span></dt>
<dd>If not configured in the node, this optional property sets the name of the file to be updated.</dd>
<dd>The name of the file to be updated can be provided in the node configuration, or as a message property.
By default it will use <code>msg.filename</code> but this can be customised in the node.
</dd>
<dt class="optional">encoding <span class="property-type">string</span></dt>
<dd>If encoding is configured to be set by msg, then this optional property can set the encoding.</dt>
</dl>
@@ -43,7 +45,9 @@
<h3>Inputs</h3>
<dl class="message-properties">
<dt class="optional">filename <span class="property-type">string</span></dt>
<dd>if not set in the node configuration, this property sets the filename to read.</dd>
<dd>The name of the file to be read can be provided in the node configuration, or as a message property.
By default it will use <code>msg.filename</code> but this can be customised in the node.
</dd>
</dl>
<h3>Outputs</h3>
<dl class="message-properties">

View File

@@ -32,9 +32,22 @@
<script type="text/html" data-help-name="link call">
<p><code>link in</code> </p>
<h3>入力</h3>
<dl class="message-properties">
<dt class="optional">target<span class="property-type">文字列</span></dt>
<dd><b>リンクの種類</b>""<code>msg.target</code><code>link in</code></dd>
</dl>
<h3>詳細</h3>
<p>本ノードは任意のタブ内に存在する <code>link in</code> `` <code>link out</code> </p>
<p>本ノードはメッセージを受信するとメッセージを接続した <code>link in</code>
その後応答を待った後にメッセージを送信します</o>
<p>もし設定したタイムアウト(デフォルト30秒)以内に応答がない場合は<code>catch</code> </p>
<p><b>リンクの種類</b>""<code>link in</code>ID<code>msg.target</code>
<ul>
<li>同じIDの<code>link in</code></li>
<li>もし同じ名前を付けた<code>link in</code>2</li>
<li><code>link call</code><code>link in</code></li>
</ul>
</p>
本ノードから呼び出すフローは終端の<code>link out</code>''</p>
</script>

View File

@@ -28,7 +28,7 @@
<p>返却/sendの対象は次のとおりです:</p>
<ul>
<li>単一メッセージオブジェクト - 最初の出力に接続されたノードに渡されます</li>
<li>メッセージオブジェクトの配列 - 対応する出力に接続されたノードに渡されます</li>
<li>メッセージオブジェクトの配列 - 対応する出力に接続されたノードに渡されます</li>
</ul>
<p>: 初期化処理の実行はノードの初期化中に行われますそのため初期化処理タブにsendを記述した場合に後続ードでメッセージを受け取れないことがあります</p>
<p>配列要素が配列の場合には複数のメッセージを対応する出力に送出します</p>

View File

@@ -85,7 +85,11 @@
"errors": {
"failed": "inject処理が失敗しました。詳細はログを確認してください。",
"toolong": "時間間隔が大き過ぎます",
"invalid-expr": "JSONata式が不正: __error__"
"invalid-expr": "JSONata式が不正: __error__",
"invalid-jsonata": "__prop__: プロパティ式が不正: __error__",
"invalid-prop": "__prop__: プロパティ式が不正: __error__",
"invalid-json": "__prop__: JSONデータが不正: __error__",
"invalid-repeat": "繰り返し数が不正"
}
},
"catch": {
@@ -125,6 +129,7 @@
"msgprop": "メッセージプロパティ",
"msgobj": "msgオブジェクト全体",
"autostatus": "デバッグ出力と同じ",
"messageCount": "メッセージ数をカウント",
"to": "出力先",
"debtab": "デバッグタブ",
"tabcon": "デバッグタブとコンソール",
@@ -132,6 +137,7 @@
"toConsole": "システムコンソール",
"toStatus": "ノードステータス(32 文字)",
"severity": "Level",
"node": "ノード",
"notification": {
"activated": "有効化しました: __label__",
"deactivated": "無効化しました: __label__"
@@ -170,6 +176,11 @@
"outMode": "モード",
"sendToAll": "接続された全てのlinkードへ送信",
"returnToCaller": "link callードへ返却",
"timeout": "タイムアウト",
"linkCallType": "リンクの種類",
"staticLinkCall": "対象を固定で指定",
"dynamicLinkCall": "対象を動的に指定 (msg.target)",
"dynamicLinkLabel": "動的",
"error": {
"missingReturn": "返却するノードの情報が存在しません"
}
@@ -196,7 +207,9 @@
"alpnprotocol": "ALPNで使用"
},
"error": {
"missing-file": "証明書と秘密鍵のファイルが設定されていません"
"missing-file": "証明書と秘密鍵のファイルが設定されていません",
"invalid-cert": "証明書が指定されていません",
"invalid-key": "秘密鍵が指定されていません"
}
},
"exec": {
@@ -251,7 +264,9 @@
"moduleNameError": "モジュール変数名が不正です: __name__",
"moduleNameReserved": "予約された変数名です: __name__",
"inputListener": "コード内で'input'イベントのリスナを設定できません",
"non-message-returned": "Functionードが __type__ 型のメッセージ送信を試みました"
"non-message-returned": "Functionードが __type__ 型のメッセージ送信を試みました",
"invalid-js": "JavaScriptコードのエラー",
"missing-module": "モジュール __module__ が存在しません"
}
},
"template": {
@@ -305,6 +320,9 @@
"limit": "limit",
"limitTopic": "limit topic",
"random": "random",
"rate": "流量",
"random-first": "ランダム最小値",
"random-last": "ランダム最大値",
"units": {
"second": {
"plural": "秒",
@@ -325,7 +343,12 @@
}
},
"errors": {
"too-many": "delayード内で保持しているメッセージが多すぎます"
"too-many": "delayード内で保持しているメッセージが多すぎます",
"invalid-timeout": "遅延時間が不正",
"invalid-rate": "流量値が不正",
"invalid-rate-unit": "流量単位時間が不正",
"invalid-random-first": "ランダム最小値が不正",
"invalid-random-last": "ランダム最大値が不正"
}
},
"trigger": {
@@ -362,7 +385,9 @@
"reset": "初期化条件:",
"resetMessage": "msg.resetを設定",
"resetPayload": "msg.payloadが次の値",
"resetprompt": "任意"
"resetprompt": "任意",
"duration": "時間間隔",
"topic": "トピック"
}
},
"comment": {
@@ -420,7 +445,8 @@
"action": "動作",
"staticTopic": "1つのトピックを購読",
"dynamicTopic": "動的な購読",
"auto-connect": "自動接続"
"auto-connect": "自動接続",
"auto-mode-depreciated": "本オプションは非推奨になりました。新しい自動判定モードを使用してください。"
},
"sections-label": {
"birth-message": "接続時の送信メッセージ(Birthメッセージ)",
@@ -451,6 +477,7 @@
"string": "文字列",
"base64": "Base64文字列",
"auto": "自動判定(文字列もしくはバイナリバッファ)",
"auto-detect": "自動判定(JSONオブジェクト、文字列もしくはバイナリバッファ)",
"json": "JSONオブジェクト"
},
"true": "する",
@@ -465,7 +492,8 @@
"invalid-json-parse": "JSON文字列のパースに失敗しました",
"invalid-action-action": "指定された動作が不正です",
"invalid-action-alreadyconnected": "接続する前にブローカから切断してください",
"invalid-action-badsubscription": "msg.topicが存在しないか不正です"
"invalid-action-badsubscription": "msg.topicが存在しないか不正です",
"invalid-client-id": "クライアントIDが未指定"
}
},
"httpin": {
@@ -521,7 +549,8 @@
"invalid-transport": "httpでないトランスポートが要求されました",
"timeout-isnan": "タイムアウト値が数値ではないため無視します",
"timeout-isnegative": "タイムアウト値が負数のため無視します",
"invalid-payload": "不正なペイロード"
"invalid-payload": "不正なペイロード",
"invalid-url": "URLが不正"
},
"status": {
"requesting": "要求中"
@@ -554,7 +583,9 @@
"connect-error": "ws接続でエラーが発生しました: ",
"send-error": "送信中にエラーが発生しました: ",
"missing-conf": "サーバ設定が不足しています",
"duplicate-path": "同じパスに対して2つのWebSocketリスナは指定できません: __path__"
"duplicate-path": "同じパスに対して2つのWebSocketリスナは指定できません: __path__",
"missing-server": "サーバが設定されていません",
"missing-client": "クライアントが設定されていません"
}
},
"watch": {
@@ -583,7 +614,8 @@
"ms": "ミリ秒",
"chars": "文字",
"close": "終了",
"optional": "(任意)"
"optional": "(任意)",
"reattach": "区切り文字を再追加"
},
"type": {
"listen": "待ち受け",
@@ -623,7 +655,9 @@
"no-host": "ホスト名またはポートが設定されていません",
"connect-timeout": "接続がタイムアウトしました",
"connect-fail": "接続に失敗しました",
"bad-string": "文字列への変換に失敗しました"
"bad-string": "文字列への変換に失敗しました",
"invalid-host": "ホスト名が不正",
"invalid-port": "ポートが不正"
}
},
"udp": {
@@ -637,7 +671,8 @@
"send": "送信",
"toport": "ポート",
"address": "アドレス",
"decode-base64": "Base64形式のペイロードを復号"
"decode-base64": "Base64形式のペイロードを復号",
"port": "ポート"
},
"placeholder": {
"interface": "(任意) 使用するローカルインターフェイスもしくはアドレス",
@@ -684,7 +719,8 @@
"port-notset": "udp: ポートが設定されていません",
"port-invalid": "udp: ポート番号が不正です",
"alreadyused": "udp: 既に__port__番ポートが使用されています",
"ifnotfound": "udp: インターフェイス __iface__ がありません"
"ifnotfound": "udp: インターフェイス __iface__ がありません",
"invalid-group": "マルチキャストグループが不正"
}
},
"switch": {
@@ -692,7 +728,9 @@
"label": {
"property": "プロパティ",
"rule": "条件",
"repair": "メッセージ列の補正"
"repair": "メッセージ列の補正",
"value-rules": "値ルール",
"sequence-rules": "列ルール"
},
"previous": "前回の値",
"and": "",
@@ -700,22 +738,22 @@
"stopfirst": "最初に合致した条件で終了",
"ignorecase": "大文字、小文字を区別しない",
"rules": {
"btwn": "is between",
"cont": "contains",
"regex": "matches regex",
"true": "is true",
"false": "is false",
"null": "is null",
"nnull": "is not null",
"istype": "is of type",
"empty": "is empty",
"nempty": "is not empty",
"head": "head",
"tail": "tail",
"index": "index between",
"btwn": "範囲内である",
"cont": "要素に含む",
"regex": "正規表現にマッチ",
"true": "trueである",
"false": "falseである",
"null": "nullである",
"nnull": "nullでない",
"istype": "指定型である",
"empty": "空である",
"nempty": "空でない",
"head": "先頭要素である",
"tail": "末尾要素である",
"index": "指定添字範囲要素である",
"exp": "JSONata式",
"else": "その他",
"hask": "has key"
"hask": "キーを含む"
},
"errors": {
"invalid-expr": "不正な表現: __error__",
@@ -748,7 +786,9 @@
"invalid-from": "操作対象のプロパティが不正: __error__",
"invalid-json": "対象の値のJSONプロパティが不正",
"invalid-expr": "JSONata式が不正: __error__",
"no-override": "オブジェクト型でないプロパティを設定できません: __property__"
"no-override": "オブジェクト型でないプロパティを設定できません: __property__",
"invalid-prop": "プロパティ式が不正: __property__",
"invalid-json-data": "JSONデータが不正: __error__"
}
},
"range": {
@@ -759,7 +799,11 @@
"resultrange": "出力値の範囲",
"from": "最小値",
"to": "最大値",
"roundresult": "小数値を四捨五入し整数値へ変換"
"roundresult": "小数値を四捨五入し整数値へ変換",
"minin": "入力最小値",
"maxin": "入力最大値",
"minout": "出力最小値",
"maxout": "出力最大値"
},
"placeholder": {
"min": "例) 0",
@@ -884,6 +928,7 @@
"write": "write file",
"read": "read file",
"filename": "ファイル名",
"path": "パス",
"action": "動作",
"addnewline": "メッセージの入力のたびに改行を追加",
"createdir": "ディレクトリが存在しない場合は作成",
@@ -984,6 +1029,7 @@
"complete": "<code>msg.complete</code> プロパティが設定されたメッセージ受信後",
"tip": "このモードでは、本ノードが <i>split</i> ノードと組となるか、 <code>msg.parts</code> プロパティが設定されたメッセージを受け取ることが前提となります。",
"too-many": "joinード内部で保持しているメッセージが多すぎます",
"message-prop": "メッセージプロパティ",
"merge": {
"topics-label": "対象トピック",
"topics": "トピック",
@@ -1041,7 +1087,12 @@
},
"too-many": "batchード内で保持しているメッセージが多すぎます",
"unexpected": "想定外のモード",
"no-parts": "メッセージにpartsプロパティがありません"
"no-parts": "メッセージにpartsプロパティがありません",
"error": {
"invalid-count": "メッセージ数が不正",
"invalid-overlap": "オーバラップが不正",
"invalid-interval": "時間間隔が不正"
}
},
"rbe": {
"rbe": "filter",
@@ -1050,7 +1101,10 @@
"init": "初期値を送付",
"start": "初期値",
"name": "名前",
"septopics": "個別に動作を適用"
"septopics": "個別に動作を適用",
"gap": "変化量",
"property": "プロパティ",
"topic": "トピック"
},
"placeholder": {
"bandgap": "例:10、5%",

View File

@@ -89,7 +89,7 @@
<dt class="optional">userProperties <span class="property-type">オブジェクト</span></dt>
<dd><b>MQTTv5</b>: </dd>
<dt class="optional">messageExpiryInterval <span class="property-type">数値</span></dt>
<dd><b>MQTTv5</b>: </dd>
<dd><b>MQTTv5</b>: </dd>
<dt class="optional">topicAlias <span class="property-type">数値</span></dt>
<dd><b>MQTTv5</b>: 使MQTT</dd>
</dl>

View File

@@ -24,7 +24,7 @@
<dt class="optional">method <span class="property-type">文字列</span></dt>
<dd>ノードの設定で指定していない場合このプロパティでリクエストに用いるHTTPメソッドを設定します<code>GET</code>, <code>PUT</code>, <code>POST</code>, <code>PATCH</code>, <code>DELETE</code></dd>
<dt class="optional">headers <span class="property-type">オブジェクト</span></dt>
<dd>リクエストのHTTPヘッダを指定します</dd>
<dd>リクエストのHTTPヘッダを指定します注釈: <code>msg.headers</code></dd>
<dt class="optional">cookies <span class="property-type">オブジェクト</span></dt>
<dd>設定するとリクエストと共にクッキーを送ることができます</dd>
<dt class="optional">payload</dt>

View File

@@ -15,11 +15,12 @@
-->
<script type="text/html" data-help-name="file">
<p><code>msg.payload</code></p>
<p><code>msg.payload</code></p>
<h3>入力</h3>
<dl class="message-properties">
<dt class="optional">filename <span class="property-type">文字列</span></dt>
<dd>対象ファイル名をノード設定していない場合のプロパティでファイルを指定できます</dd>
<dd>更新するファイルの名前はノード設定やメッセージのプロパティで指定できますデフォルトでは<code>msg.filename</code>使
</dd>
<dt class="optional">encoding <span class="property-type">文字列</span></dt>
<dd>エンコーディングをmsgで設定する構成にした際はこの任意のプロパティでエンコーディングを設定できます</dt>
</dl>
@@ -30,7 +31,7 @@
<p><code>msg.filename</code>使</p>
<p>追記を行う代わりにファイル全体を上書きするように設定することもできます例えば画像のようなバイナリデータをファイルに書き出す場合はこのオプションを指定し改行を追記するオプションを指定しないようにします</p>
<p>ファイル出力の際のエンコーディングはエンコーディングリストから選択できます</p>
<p>の他ファイルの削除を行うことも可能です</p>
<p>の他ファイルの削除を行うことも可能です</p>
</script>
<script type="text/html" data-help-name="file in">
@@ -38,14 +39,15 @@
<h3>入力</h3>
<dl class="message-properties">
<dt class="optional">filename <span class="property-type">文字列</span></dt>
<dd>読み出し対象のファイル名をノードに設定していない場合のプロパティでファイルを指定できます</dd>
<dd>読み込むファイルの名前はノード設定やメッセージのプロパティで指定できますデフォルトでは<code>msg.filename</code>使
</dd>
</dl>
<h3>出力</h3>
<dl class="message-properties">
<dt>payload <span class="property-type">文字列 | バッファ</span></dt>
<dd>ファイルの内容を文字列もしくはバッファで表現します</dd>
<dd>ファイルの内容を文字列もしくはバッファで表現します</dd>
<dt class="optional">filename <span class="property-type">文字列</span></dt>
<dd>読み出し対象のファイル名をノードに設定していない場合このプロパティでファイルを指定します</dd>
<dd>読み出し対象のファイル名をノードに設定していない場合この任意のプロパティでファイルの名前を指定します</dd>
</dl>
<h3>詳細</h3>
<p>ファイルネームは絶対パスでの指定を推奨します絶対パスを指定しない場合はNode-REDプロセスのワーキングディレクトリからの相対パスとして扱います</p>

View File

@@ -362,6 +362,7 @@
"string": "문자열",
"base64": "Base64문자열",
"auto": "자동판정(문자열혹은 바이너리버퍼)",
"auto-detect": "자동판정(JSON오브젝트, 문자열혹은 바이너리버퍼)",
"json": "JSON오브젝트"
},
"true": "한다",

View File

@@ -385,6 +385,7 @@
"string": "строка",
"base64": "строка в кодировке Base64",
"auto": "автоопределение (строка или буфер)",
"auto-detect": "автоопределение (разобрать объект JSON, строка или буфер)",
"json": "объект JSON"
},
"true": "да",

View File

@@ -382,6 +382,7 @@
"string": "字符串",
"base64": "Base64编码字符串",
"auto": "自动检测 (字符串或buffer)",
"auto-detect": "自动检测 (已解析的JSON对象、字符串或buffer)",
"json": "解析的JSON对象"
},
"true": "是",

View File

@@ -386,6 +386,7 @@
"string": "字串",
"base64": "Base64編碼字串",
"auto": "自動檢測 (字符串或buffer)",
"auto-detect": "自动检测 (已解析的JSON对象、字符串或buffer)",
"json": "解析的JSON對象"
},
"true": "是",

View File

@@ -1,6 +1,6 @@
{
"name": "@node-red/nodes",
"version": "2.2.2",
"version": "3.0.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
@@ -15,32 +15,32 @@
}
],
"dependencies": {
"acorn": "8.7.0",
"acorn": "8.7.1",
"acorn-walk": "8.2.0",
"ajv": "8.10.0",
"body-parser": "1.19.1",
"ajv": "8.11.0",
"body-parser": "1.20.0",
"cheerio": "1.0.0-rc.10",
"content-type": "1.0.4",
"cookie-parser": "1.4.6",
"cookie": "0.4.2",
"cookie": "0.5.0",
"cors": "2.8.5",
"cronosjs": "1.7.1",
"denque": "2.0.1",
"form-data": "4.0.0",
"fs-extra": "10.0.0",
"fs.notify": "0.0.4",
"got": "11.8.3",
"fs-extra": "10.1.0",
"got": "11.8.5",
"hash-sum": "2.0.0",
"hpagent": "0.1.2",
"https-proxy-agent": "5.0.0",
"hpagent": "1.0.0",
"https-proxy-agent": "5.0.1",
"is-utf8": "0.2.1",
"js-yaml": "3.14.1",
"js-yaml": "4.1.0",
"media-typer": "1.1.0",
"mqtt": "4.3.5",
"multer": "1.4.4",
"mqtt": "4.3.7",
"multer": "1.4.5-lts.1",
"mustache": "4.2.0",
"node-watch": "0.7.3",
"on-headers": "1.0.2",
"raw-body": "2.4.3",
"raw-body": "2.5.1",
"tough-cookie": "4.0.0",
"uuid": "8.3.2",
"ws": "7.5.6",