@node-red/nodes 2.2.2 → 3.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/99-sample.html.demo +1 -1
- package/core/common/05-junction.html +5 -0
- package/core/common/05-junction.js +12 -0
- package/core/common/20-inject.html +25 -13
- package/core/common/20-inject.js +3 -2
- package/core/common/21-debug.html +58 -5
- package/core/common/21-debug.js +57 -27
- package/core/common/60-link.html +65 -29
- package/core/common/60-link.js +169 -20
- package/core/common/lib/debug/debug-utils.js +34 -1
- package/core/function/10-function.html +58 -22
- package/core/function/10-switch.html +19 -12
- package/core/function/10-switch.js +1 -0
- package/core/function/15-change.html +40 -12
- package/core/function/16-range.html +14 -5
- package/core/function/80-template.html +16 -12
- package/core/function/89-delay.html +46 -6
- package/core/function/89-trigger.html +12 -4
- package/core/function/rbe.html +7 -3
- package/core/network/05-tls.html +10 -4
- package/core/network/06-httpproxy.html +10 -1
- package/core/network/10-mqtt.html +73 -17
- package/core/network/10-mqtt.js +239 -91
- package/core/network/21-httpin.html +10 -6
- package/core/network/21-httprequest.html +219 -12
- package/core/network/21-httprequest.js +98 -17
- package/core/network/22-websocket.html +19 -5
- package/core/network/22-websocket.js +16 -13
- package/core/network/31-tcpin.html +47 -10
- package/core/network/31-tcpin.js +23 -20
- package/core/network/32-udp.html +14 -2
- package/core/parsers/70-CSV.html +4 -1
- package/core/parsers/70-JSON.html +3 -2
- package/core/parsers/70-XML.html +2 -1
- package/core/parsers/70-YAML.html +2 -1
- package/core/sequence/17-split.html +6 -2
- package/core/sequence/19-batch.html +28 -4
- package/core/storage/10-file.html +66 -6
- package/core/storage/10-file.js +46 -3
- package/core/storage/23-watch.html +2 -1
- package/core/storage/23-watch.js +21 -43
- package/locales/de/messages.json +1 -0
- package/locales/en-US/common/60-link.html +19 -3
- package/locales/en-US/messages.json +136 -83
- package/locales/en-US/network/21-httprequest.html +1 -1
- package/locales/en-US/storage/10-file.html +6 -2
- package/locales/ja/common/60-link.html +13 -0
- package/locales/ja/messages.json +85 -32
- package/locales/ja/network/21-httprequest.html +1 -1
- package/locales/ja/storage/10-file.html +8 -6
- package/locales/ko/messages.json +1 -0
- package/locales/ru/messages.json +1 -0
- package/locales/zh-CN/messages.json +1 -0
- package/locales/zh-TW/messages.json +1 -0
- package/package.json +13 -13
package/core/storage/23-watch.js
CHANGED
|
@@ -16,24 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
module.exports = function(RED) {
|
|
18
18
|
"use strict";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var getAllDirs = function (dir, filelist) {
|
|
24
|
-
filelist = filelist || [];
|
|
25
|
-
fs.readdirSync(dir).forEach(file => {
|
|
26
|
-
try {
|
|
27
|
-
if (fs.statSync(path.join(dir, file)).isDirectory() ) {
|
|
28
|
-
filelist.push(path.join(dir, file));
|
|
29
|
-
getAllDirs(path.join(dir, file), filelist);
|
|
30
|
-
}
|
|
31
|
-
} catch (error) {
|
|
32
|
-
//should we raise an error?
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
return filelist;
|
|
36
|
-
}
|
|
19
|
+
const watch = require('node-watch')
|
|
20
|
+
const fs = require("fs")
|
|
21
|
+
const path = require("path")
|
|
37
22
|
|
|
38
23
|
function WatchNode(n) {
|
|
39
24
|
RED.nodes.createNode(this,n);
|
|
@@ -44,52 +29,45 @@ module.exports = function(RED) {
|
|
|
44
29
|
this.files[f] = this.files[f].trim();
|
|
45
30
|
}
|
|
46
31
|
this.p = (this.files.length === 1) ? this.files[0] : JSON.stringify(this.files);
|
|
47
|
-
|
|
32
|
+
const node = this;
|
|
48
33
|
|
|
49
|
-
|
|
50
|
-
for (var fi in node.files) {
|
|
51
|
-
if (node.files.hasOwnProperty(fi)) {
|
|
52
|
-
node.files = node.files.concat(getAllDirs( node.files[fi]));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
34
|
+
const watcher = watch(this.files, { recursive: this.recursive });
|
|
56
35
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
36
|
+
watcher.on('change', function (event, fpath) {
|
|
37
|
+
const file = path.basename(fpath)
|
|
38
|
+
let stat;
|
|
60
39
|
try {
|
|
61
|
-
if (fs.statSync(fpath).isDirectory()) { fpath = path.join(fpath,file); }
|
|
62
40
|
stat = fs.statSync(fpath);
|
|
63
41
|
} catch(e) { }
|
|
64
|
-
|
|
65
|
-
|
|
42
|
+
let type = "none";
|
|
43
|
+
const msg = {
|
|
44
|
+
payload:fpath,
|
|
45
|
+
topic:node.p,
|
|
46
|
+
file:file,
|
|
47
|
+
filename:fpath,
|
|
48
|
+
event: event
|
|
49
|
+
};
|
|
66
50
|
if (stat) {
|
|
67
51
|
if (stat.isFile()) { type = "file"; msg.size = stat.size; }
|
|
68
52
|
else if (stat.isBlockDevice()) { type = "blockdevice"; }
|
|
69
53
|
else if (stat.isCharacterDevice()) { type = "characterdevice"; }
|
|
70
54
|
else if (stat.isSocket()) { type = "socket"; }
|
|
71
55
|
else if (stat.isFIFO()) { type = "fifo"; }
|
|
72
|
-
else if (stat.isDirectory()) {
|
|
73
|
-
type = "directory";
|
|
74
|
-
if (node.recursive) {
|
|
75
|
-
notifications.add([fpath]);
|
|
76
|
-
notifications.add(getAllDirs(fpath));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
56
|
+
else if (stat.isDirectory()) { type = "directory"; }
|
|
79
57
|
else { type = "n/a"; }
|
|
80
58
|
}
|
|
81
59
|
msg.type = type;
|
|
82
60
|
node.send(msg);
|
|
83
61
|
});
|
|
84
62
|
|
|
85
|
-
|
|
86
|
-
|
|
63
|
+
watcher.on('error', function (error) {
|
|
64
|
+
const msg = { payload: "" };
|
|
87
65
|
node.error(error,msg);
|
|
88
66
|
});
|
|
89
67
|
|
|
90
68
|
this.close = function() {
|
|
91
|
-
|
|
69
|
+
watcher.close();
|
|
92
70
|
}
|
|
93
71
|
}
|
|
94
|
-
RED.nodes.registerType("watch",WatchNode);
|
|
72
|
+
RED.nodes.registerType("watch", WatchNode);
|
|
95
73
|
}
|
package/locales/de/messages.json
CHANGED
|
@@ -423,6 +423,7 @@
|
|
|
423
423
|
"string": "Ein String",
|
|
424
424
|
"base64": "Ein Base64-kodierter String",
|
|
425
425
|
"auto": "Auto-Erkennung (string oder buffer)",
|
|
426
|
+
"auto-detect": "Auto-Erkennung (parsed JSON-Objekt, string oder buffer)",
|
|
426
427
|
"json": "Ein analysiertes (parsed) JSON-Objekt"
|
|
427
428
|
},
|
|
428
429
|
"true": "wahr",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
<p>Create virtual wires between flows.</p>
|
|
30
30
|
<h3>Details</h3>
|
|
31
31
|
<p>This node can be configured to either send messages to all <code>link in</code>
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
nodes it is connected to, or to send a response back to the <code>link call</code>
|
|
33
|
+
node that triggered the flow.</p>
|
|
34
34
|
<p>When in 'send to all' mode, the wires between link nodes are only displayed when
|
|
35
35
|
the node is selected. If there are any wires to other tabs, a virtual node
|
|
36
36
|
is shown that can be clicked on to jump to the appropriate tab.</p>
|
|
@@ -39,12 +39,28 @@
|
|
|
39
39
|
|
|
40
40
|
<script type="text/html" data-help-name="link call">
|
|
41
41
|
<p>Calls a flow that starts with a <code>link in</code> node and passes on the response.</p>
|
|
42
|
+
<h3>Inputs</h3>
|
|
43
|
+
<dl class="message-properties">
|
|
44
|
+
<dt class="optional">target<span class="property-type">string</span></dt>
|
|
45
|
+
<dd>When the option <b>Link Type</b> is set to "Dynamic target", set <code>msg.target</code> to the name of the
|
|
46
|
+
<code>link in</code> node you wish to call.</dd>
|
|
47
|
+
</dl>
|
|
42
48
|
<h3>Details</h3>
|
|
43
49
|
<p>This node can be connected to a <code>link in</code> node that exists on any tab.
|
|
44
50
|
The flow connected to that node must end with a <code>link out</code> node configured
|
|
45
51
|
in 'return' mode.</p>
|
|
46
52
|
<p>When this node receives a message, it is passed to the connected <code>link in</code> node.
|
|
47
|
-
It then waits for a response which it then sends on.</
|
|
53
|
+
It then waits for a response which it then sends on.</p>
|
|
48
54
|
<p>If no response is received within the configured timeout, default 30 seconds, the node
|
|
49
55
|
will log an error that can be caught using the <code>catch</code> node.</p>
|
|
56
|
+
<p>When the option <b>Link Type</b> is set to "Dynamic target" <code>msg.target</code> can be used to call a
|
|
57
|
+
<code>link in</code> by name or id.
|
|
58
|
+
<ul>
|
|
59
|
+
<li>If there is a <code>link in</code> nodes with the same id, it will be called</li>
|
|
60
|
+
<li>If there are two or more <code>link in</code> nodes with the same name, an error will be raised</li>
|
|
61
|
+
<li>A <code>link call</code> cannot call a <code>link in</code> node inside a subflow</li>
|
|
62
|
+
</ul>
|
|
63
|
+
</p>
|
|
64
|
+
The flow connected to that node must end with a <code>link out</code> node configured
|
|
65
|
+
in 'return' mode.</p>
|
|
50
66
|
</script>
|
|
@@ -85,7 +85,11 @@
|
|
|
85
85
|
"errors": {
|
|
86
86
|
"failed": "inject failed, see log for details",
|
|
87
87
|
"toolong": "Interval too large",
|
|
88
|
-
"invalid-expr": "Invalid JSONata expression: __error__"
|
|
88
|
+
"invalid-expr": "Invalid JSONata expression: __error__",
|
|
89
|
+
"invalid-jsonata": "__prop__: invalid property expression: __error__",
|
|
90
|
+
"invalid-prop": "__prop__: invalid property expression: __error__",
|
|
91
|
+
"invalid-json": "__prop__: invalid JSON data: __error__",
|
|
92
|
+
"invalid-repeat": "Invalid repeat value"
|
|
89
93
|
}
|
|
90
94
|
},
|
|
91
95
|
"catch": {
|
|
@@ -125,6 +129,7 @@
|
|
|
125
129
|
"msgprop": "message property",
|
|
126
130
|
"msgobj": "complete msg object",
|
|
127
131
|
"autostatus": "same as debug output",
|
|
132
|
+
"messageCount": "message count",
|
|
128
133
|
"to": "To",
|
|
129
134
|
"debtab": "debug tab",
|
|
130
135
|
"tabcon": "debug tab and console",
|
|
@@ -132,6 +137,7 @@
|
|
|
132
137
|
"toConsole": "system console",
|
|
133
138
|
"toStatus": "node status (32 characters)",
|
|
134
139
|
"severity": "Level",
|
|
140
|
+
"node": "node",
|
|
135
141
|
"notification": {
|
|
136
142
|
"activated": "Successfully activated: __label__",
|
|
137
143
|
"deactivated": "Successfully deactivated: __label__"
|
|
@@ -170,6 +176,11 @@
|
|
|
170
176
|
"outMode": "Mode",
|
|
171
177
|
"sendToAll": "Send to all connected link nodes",
|
|
172
178
|
"returnToCaller": "Return to calling link node",
|
|
179
|
+
"timeout": "timeout",
|
|
180
|
+
"linkCallType": "Link Type",
|
|
181
|
+
"staticLinkCall": "Fixed target",
|
|
182
|
+
"dynamicLinkCall": "Dynamic target (msg.target)",
|
|
183
|
+
"dynamicLinkLabel": "Dynamic",
|
|
173
184
|
"error": {
|
|
174
185
|
"missingReturn": "Missing return node information"
|
|
175
186
|
}
|
|
@@ -183,20 +194,22 @@
|
|
|
183
194
|
"key": "Private Key",
|
|
184
195
|
"passphrase": "Passphrase",
|
|
185
196
|
"ca": "CA Certificate",
|
|
186
|
-
"verify-server-cert":"Verify server certificate",
|
|
197
|
+
"verify-server-cert": "Verify server certificate",
|
|
187
198
|
"servername": "Server Name",
|
|
188
199
|
"alpnprotocol": "ALPN Protocol"
|
|
189
200
|
},
|
|
190
201
|
"placeholder": {
|
|
191
|
-
"cert":"path to certificate (PEM format)",
|
|
192
|
-
"key":"path to private key (PEM format)",
|
|
193
|
-
"ca":"path to CA certificate (PEM format)",
|
|
194
|
-
"passphrase":"private key passphrase (optional)",
|
|
195
|
-
"servername":"for use with SNI",
|
|
196
|
-
"alpnprotocol":"for use with ALPN"
|
|
202
|
+
"cert": "path to certificate (PEM format)",
|
|
203
|
+
"key": "path to private key (PEM format)",
|
|
204
|
+
"ca": "path to CA certificate (PEM format)",
|
|
205
|
+
"passphrase": "private key passphrase (optional)",
|
|
206
|
+
"servername": "for use with SNI",
|
|
207
|
+
"alpnprotocol": "for use with ALPN"
|
|
197
208
|
},
|
|
198
209
|
"error": {
|
|
199
|
-
"missing-file": "No certificate/key file provided"
|
|
210
|
+
"missing-file": "No certificate/key file provided",
|
|
211
|
+
"invalid-cert": "Certificate not specified",
|
|
212
|
+
"invalid-key": "Private key not specified"
|
|
200
213
|
}
|
|
201
214
|
},
|
|
202
215
|
"exec": {
|
|
@@ -250,8 +263,10 @@
|
|
|
250
263
|
"moduleLoadError": "Failed to load module __module__: __error__",
|
|
251
264
|
"moduleNameError": "Invalid module variable name: __name__",
|
|
252
265
|
"moduleNameReserved": "Reserved variable name: __name__",
|
|
253
|
-
"inputListener":"Cannot add listener to 'input' event within Function",
|
|
254
|
-
"non-message-returned":"Function tried to send a message of type __type__"
|
|
266
|
+
"inputListener": "Cannot add listener to 'input' event within Function",
|
|
267
|
+
"non-message-returned": "Function tried to send a message of type __type__",
|
|
268
|
+
"invalid-js": "Error in JavaScript code",
|
|
269
|
+
"missing-module": "Module __module__ missing"
|
|
255
270
|
}
|
|
256
271
|
},
|
|
257
272
|
"template": {
|
|
@@ -305,27 +320,35 @@
|
|
|
305
320
|
"limit": "limit",
|
|
306
321
|
"limitTopic": "limit topic",
|
|
307
322
|
"random": "random",
|
|
308
|
-
"
|
|
323
|
+
"rate": "rate",
|
|
324
|
+
"random-first": "first random value",
|
|
325
|
+
"random-last": "last random value",
|
|
326
|
+
"units": {
|
|
309
327
|
"second": {
|
|
310
|
-
"plural"
|
|
328
|
+
"plural": "Seconds",
|
|
311
329
|
"singular": "Second"
|
|
312
330
|
},
|
|
313
331
|
"minute": {
|
|
314
|
-
"plural"
|
|
332
|
+
"plural": "Minutes",
|
|
315
333
|
"singular": "Minute"
|
|
316
334
|
},
|
|
317
335
|
"hour": {
|
|
318
|
-
"plural"
|
|
336
|
+
"plural": "Hours",
|
|
319
337
|
"singular": "Hour"
|
|
320
338
|
},
|
|
321
339
|
"day": {
|
|
322
|
-
"plural"
|
|
340
|
+
"plural": "Days",
|
|
323
341
|
"singular": "Day"
|
|
324
342
|
}
|
|
325
343
|
}
|
|
326
344
|
},
|
|
327
345
|
"errors": {
|
|
328
|
-
"too-many"
|
|
346
|
+
"too-many": "too many pending messages in delay node",
|
|
347
|
+
"invalid-timeout": "Invalid delay value",
|
|
348
|
+
"invalid-rate": "Invalid rate value",
|
|
349
|
+
"invalid-rate-unit": "Invalid rate unit value",
|
|
350
|
+
"invalid-random-first": "Invalid first random value",
|
|
351
|
+
"invalid-random-last": "Invalid last random value"
|
|
329
352
|
}
|
|
330
353
|
},
|
|
331
354
|
"trigger": {
|
|
@@ -360,9 +383,11 @@
|
|
|
360
383
|
"trigger-block": "trigger & block",
|
|
361
384
|
"trigger-loop": "resend every",
|
|
362
385
|
"reset": "Reset the trigger if:",
|
|
363
|
-
"resetMessage":"msg.reset is set",
|
|
364
|
-
"resetPayload":"msg.payload equals",
|
|
365
|
-
"resetprompt": "optional"
|
|
386
|
+
"resetMessage": "msg.reset is set",
|
|
387
|
+
"resetPayload": "msg.payload equals",
|
|
388
|
+
"resetprompt": "optional",
|
|
389
|
+
"duration": "duration",
|
|
390
|
+
"topic": "topic"
|
|
366
391
|
}
|
|
367
392
|
},
|
|
368
393
|
"comment": {
|
|
@@ -387,8 +412,8 @@
|
|
|
387
412
|
"cleansession": "Use clean session",
|
|
388
413
|
"cleanstart": "Use clean start",
|
|
389
414
|
"use-tls": "Use TLS",
|
|
390
|
-
"tls-config":"TLS Configuration",
|
|
391
|
-
"verify-server-cert":"Verify server certificate",
|
|
415
|
+
"tls-config": "TLS Configuration",
|
|
416
|
+
"verify-server-cert": "Verify server certificate",
|
|
392
417
|
"compatmode": "Use legacy MQTT 3.1 support",
|
|
393
418
|
"userProperties": "User Properties",
|
|
394
419
|
"subscriptionIdentifier": "Subscription ID",
|
|
@@ -420,12 +445,13 @@
|
|
|
420
445
|
"action": "Action",
|
|
421
446
|
"staticTopic": "Subscribe to single topic",
|
|
422
447
|
"dynamicTopic": "Dynamic subscription",
|
|
423
|
-
"auto-connect": "Connect automatically"
|
|
448
|
+
"auto-connect": "Connect automatically",
|
|
449
|
+
"auto-mode-depreciated": "This option is depreciated. Please use the new auto-detect mode."
|
|
424
450
|
},
|
|
425
|
-
"sections-label":{
|
|
451
|
+
"sections-label": {
|
|
426
452
|
"birth-message": "Message sent on connection (birth message)",
|
|
427
|
-
"will-message":"Message sent on an unexpected disconnection (will message)",
|
|
428
|
-
"close-message":"Message sent before disconnecting (close message)"
|
|
453
|
+
"will-message": "Message sent on an unexpected disconnection (will message)",
|
|
454
|
+
"close-message": "Message sent before disconnecting (close message)"
|
|
429
455
|
},
|
|
430
456
|
"tabs-label": {
|
|
431
457
|
"connection": "Connection",
|
|
@@ -434,7 +460,7 @@
|
|
|
434
460
|
},
|
|
435
461
|
"placeholder": {
|
|
436
462
|
"clientid": "Leave blank for auto generated",
|
|
437
|
-
"clientid-nonclean":"Must be set for non-clean sessions",
|
|
463
|
+
"clientid-nonclean": "Must be set for non-clean sessions",
|
|
438
464
|
"will-topic": "Leave blank to disable will message",
|
|
439
465
|
"birth-topic": "Leave blank to disable birth message",
|
|
440
466
|
"close-topic": "Leave blank to disable close message"
|
|
@@ -451,6 +477,7 @@
|
|
|
451
477
|
"string": "a String",
|
|
452
478
|
"base64": "a Base64 encoded string",
|
|
453
479
|
"auto": "auto-detect (string or buffer)",
|
|
480
|
+
"auto-detect": "auto-detect (parsed JSON object, string or buffer)",
|
|
454
481
|
"json": "a parsed JSON object"
|
|
455
482
|
},
|
|
456
483
|
"true": "true",
|
|
@@ -465,7 +492,8 @@
|
|
|
465
492
|
"invalid-json-parse": "Failed to parse JSON string",
|
|
466
493
|
"invalid-action-action": "Invalid action specified",
|
|
467
494
|
"invalid-action-alreadyconnected": "Disconnect from broker before connecting",
|
|
468
|
-
"invalid-action-badsubscription": "msg.topic is missing or invalid"
|
|
495
|
+
"invalid-action-badsubscription": "msg.topic is missing or invalid",
|
|
496
|
+
"invalid-client-id": "Missing Client ID"
|
|
469
497
|
}
|
|
470
498
|
},
|
|
471
499
|
"httpin": {
|
|
@@ -478,7 +506,7 @@
|
|
|
478
506
|
"status": "Status code",
|
|
479
507
|
"headers": "Headers",
|
|
480
508
|
"other": "other",
|
|
481
|
-
"paytoqs"
|
|
509
|
+
"paytoqs": {
|
|
482
510
|
"ignore": "Ignore",
|
|
483
511
|
"query": "Append to query-string parameters",
|
|
484
512
|
"body": "Send as request body"
|
|
@@ -492,7 +520,7 @@
|
|
|
492
520
|
"setby": "- set by msg.method -",
|
|
493
521
|
"basicauth": "Use authentication",
|
|
494
522
|
"use-tls": "Enable secure (SSL/TLS) connection",
|
|
495
|
-
"tls-config":"TLS Configuration",
|
|
523
|
+
"tls-config": "TLS Configuration",
|
|
496
524
|
"basic": "basic authentication",
|
|
497
525
|
"digest": "digest authentication",
|
|
498
526
|
"bearer": "bearer authentication",
|
|
@@ -517,11 +545,12 @@
|
|
|
517
545
|
"no-response": "No response object",
|
|
518
546
|
"json-error": "JSON parse error",
|
|
519
547
|
"no-url": "No url specified",
|
|
520
|
-
"deprecated-call":"Deprecated call to __method__",
|
|
521
|
-
"invalid-transport":"non-http transport requested",
|
|
548
|
+
"deprecated-call": "Deprecated call to __method__",
|
|
549
|
+
"invalid-transport": "non-http transport requested",
|
|
522
550
|
"timeout-isnan": "Timeout value is not a valid number, ignoring",
|
|
523
551
|
"timeout-isnegative": "Timeout value is negative, ignoring",
|
|
524
|
-
"invalid-payload": "Invalid payload"
|
|
552
|
+
"invalid-payload": "Invalid payload",
|
|
553
|
+
"invalid-url": "Invalid url"
|
|
525
554
|
},
|
|
526
555
|
"status": {
|
|
527
556
|
"requesting": "requesting"
|
|
@@ -554,7 +583,9 @@
|
|
|
554
583
|
"connect-error": "An error occurred on the ws connection: ",
|
|
555
584
|
"send-error": "An error occurred while sending: ",
|
|
556
585
|
"missing-conf": "Missing server configuration",
|
|
557
|
-
"duplicate-path": "Cannot have two WebSocket listeners on the same path: __path__"
|
|
586
|
+
"duplicate-path": "Cannot have two WebSocket listeners on the same path: __path__",
|
|
587
|
+
"missing-server": "Missing server configuration",
|
|
588
|
+
"missing-client": "Missing client configuration"
|
|
558
589
|
}
|
|
559
590
|
},
|
|
560
591
|
"watch": {
|
|
@@ -583,7 +614,8 @@
|
|
|
583
614
|
"ms": "ms",
|
|
584
615
|
"chars": "chars",
|
|
585
616
|
"close": "Close",
|
|
586
|
-
"optional": "(optional)"
|
|
617
|
+
"optional": "(optional)",
|
|
618
|
+
"reattach": "re-attach delimiter"
|
|
587
619
|
},
|
|
588
620
|
"type": {
|
|
589
621
|
"listen": "Listen on",
|
|
@@ -613,7 +645,6 @@
|
|
|
613
645
|
"connection-closed": "connection closed from __host__:__port__",
|
|
614
646
|
"connections": "__count__ connection",
|
|
615
647
|
"connections_plural": "__count__ connections"
|
|
616
|
-
|
|
617
648
|
},
|
|
618
649
|
"errors": {
|
|
619
650
|
"connection-lost": "connection lost to __host__:__port__",
|
|
@@ -624,7 +655,9 @@
|
|
|
624
655
|
"no-host": "Host and/or port not set",
|
|
625
656
|
"connect-timeout": "connect timeout",
|
|
626
657
|
"connect-fail": "connect failed",
|
|
627
|
-
"bad-string": "failed to convert to string"
|
|
658
|
+
"bad-string": "failed to convert to string",
|
|
659
|
+
"invalid-host": "Invalid host",
|
|
660
|
+
"invalid-port": "Invalid port"
|
|
628
661
|
}
|
|
629
662
|
},
|
|
630
663
|
"udp": {
|
|
@@ -638,7 +671,8 @@
|
|
|
638
671
|
"send": "Send a",
|
|
639
672
|
"toport": "to port",
|
|
640
673
|
"address": "Address",
|
|
641
|
-
"decode-base64": "Decode Base64 encoded payload?"
|
|
674
|
+
"decode-base64": "Decode Base64 encoded payload?",
|
|
675
|
+
"port": "port"
|
|
642
676
|
},
|
|
643
677
|
"placeholder": {
|
|
644
678
|
"interface": "(optional) local interface or address to bind to",
|
|
@@ -685,7 +719,8 @@
|
|
|
685
719
|
"port-notset": "udp: port not set",
|
|
686
720
|
"port-invalid": "udp: port number not valid",
|
|
687
721
|
"alreadyused": "udp: port __port__ already in use",
|
|
688
|
-
"ifnotfound": "udp: interface __iface__ not found"
|
|
722
|
+
"ifnotfound": "udp: interface __iface__ not found",
|
|
723
|
+
"invalid-group": "invalid multicast group"
|
|
689
724
|
}
|
|
690
725
|
},
|
|
691
726
|
"switch": {
|
|
@@ -693,7 +728,9 @@
|
|
|
693
728
|
"label": {
|
|
694
729
|
"property": "Property",
|
|
695
730
|
"rule": "rule",
|
|
696
|
-
"repair": "recreate message sequences"
|
|
731
|
+
"repair": "recreate message sequences",
|
|
732
|
+
"value-rules": "value rules",
|
|
733
|
+
"sequence-rules": "sequence rules"
|
|
697
734
|
},
|
|
698
735
|
"previous": "previous value",
|
|
699
736
|
"and": "and",
|
|
@@ -749,7 +786,9 @@
|
|
|
749
786
|
"invalid-from": "Invalid 'from' property: __error__",
|
|
750
787
|
"invalid-json": "Invalid 'to' JSON property",
|
|
751
788
|
"invalid-expr": "Invalid JSONata expression: __error__",
|
|
752
|
-
"no-override": "Cannot set property of non-object type: __property__"
|
|
789
|
+
"no-override": "Cannot set property of non-object type: __property__",
|
|
790
|
+
"invalid-prop": "Invalid property expression: __property__",
|
|
791
|
+
"invalid-json-data": "Invalid JSON data: __error__"
|
|
753
792
|
}
|
|
754
793
|
},
|
|
755
794
|
"range": {
|
|
@@ -760,7 +799,11 @@
|
|
|
760
799
|
"resultrange": "to the target range",
|
|
761
800
|
"from": "from",
|
|
762
801
|
"to": "to",
|
|
763
|
-
"roundresult": "Round result to the nearest integer?"
|
|
802
|
+
"roundresult": "Round result to the nearest integer?",
|
|
803
|
+
"minin": "input from",
|
|
804
|
+
"maxin": "input to",
|
|
805
|
+
"minout": "target from",
|
|
806
|
+
"maxout": "target to"
|
|
764
807
|
},
|
|
765
808
|
"placeholder": {
|
|
766
809
|
"min": "e.g. 0",
|
|
@@ -857,8 +900,8 @@
|
|
|
857
900
|
"property": "Property",
|
|
858
901
|
"actions": {
|
|
859
902
|
"toggle": "Convert between JSON String & Object",
|
|
860
|
-
"str":"Always convert to JSON String",
|
|
861
|
-
"obj":"Always convert to JavaScript Object"
|
|
903
|
+
"str": "Always convert to JSON String",
|
|
904
|
+
"obj": "Always convert to JavaScript Object"
|
|
862
905
|
}
|
|
863
906
|
}
|
|
864
907
|
},
|
|
@@ -885,6 +928,7 @@
|
|
|
885
928
|
"write": "write file",
|
|
886
929
|
"read": "read file",
|
|
887
930
|
"filename": "Filename",
|
|
931
|
+
"path": "path",
|
|
888
932
|
"action": "Action",
|
|
889
933
|
"addnewline": "Add newline (\\n) to each payload?",
|
|
890
934
|
"createdir": "Create directory if it doesn't exist?",
|
|
@@ -944,15 +988,15 @@
|
|
|
944
988
|
},
|
|
945
989
|
"split": {
|
|
946
990
|
"split": "split",
|
|
947
|
-
"intro":"Split <code>msg.payload</code> based on type:",
|
|
948
|
-
"object":"<b>Object</b>",
|
|
949
|
-
"objectSend":"Send a message for each key/value pair",
|
|
950
|
-
"strBuff":"<b>String</b> / <b>Buffer</b>",
|
|
951
|
-
"array":"<b>Array</b>",
|
|
952
|
-
"splitUsing":"Split using",
|
|
953
|
-
"splitLength":"Fixed length of",
|
|
954
|
-
"stream":"Handle as a stream of messages",
|
|
955
|
-
"addname":" Copy key to "
|
|
991
|
+
"intro": "Split <code>msg.payload</code> based on type:",
|
|
992
|
+
"object": "<b>Object</b>",
|
|
993
|
+
"objectSend": "Send a message for each key/value pair",
|
|
994
|
+
"strBuff": "<b>String</b> / <b>Buffer</b>",
|
|
995
|
+
"array": "<b>Array</b>",
|
|
996
|
+
"splitUsing": "Split using",
|
|
997
|
+
"splitLength": "Fixed length of",
|
|
998
|
+
"stream": "Handle as a stream of messages",
|
|
999
|
+
"addname": " Copy key to "
|
|
956
1000
|
},
|
|
957
1001
|
"join": {
|
|
958
1002
|
"join": "join",
|
|
@@ -985,6 +1029,7 @@
|
|
|
985
1029
|
"complete": "After a message with the <code>msg.complete</code> property set",
|
|
986
1030
|
"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.",
|
|
987
1031
|
"too-many": "too many pending messages in join node",
|
|
1032
|
+
"message-prop": "message property",
|
|
988
1033
|
"merge": {
|
|
989
1034
|
"topics-label": "Merged Topics",
|
|
990
1035
|
"topics": "topics",
|
|
@@ -1003,46 +1048,51 @@
|
|
|
1003
1048
|
"invalid-type": "Cannot join __error__ to buffer"
|
|
1004
1049
|
}
|
|
1005
1050
|
},
|
|
1006
|
-
"sort"
|
|
1051
|
+
"sort": {
|
|
1007
1052
|
"sort": "sort",
|
|
1008
|
-
"target"
|
|
1009
|
-
"seq"
|
|
1010
|
-
"key"
|
|
1011
|
-
"elem"
|
|
1012
|
-
"order"
|
|
1013
|
-
"ascending"
|
|
1014
|
-
"descending"
|
|
1015
|
-
"as-number"
|
|
1016
|
-
"invalid-exp"
|
|
1017
|
-
"too-many"
|
|
1018
|
-
"clear"
|
|
1053
|
+
"target": "Sort",
|
|
1054
|
+
"seq": "message sequence",
|
|
1055
|
+
"key": "Key",
|
|
1056
|
+
"elem": "element value",
|
|
1057
|
+
"order": "Order",
|
|
1058
|
+
"ascending": "ascending",
|
|
1059
|
+
"descending": "descending",
|
|
1060
|
+
"as-number": "as number",
|
|
1061
|
+
"invalid-exp": "Invalid JSONata expression in sort node: __message__",
|
|
1062
|
+
"too-many": "Too many pending messages in sort node",
|
|
1063
|
+
"clear": "clear pending message in sort node"
|
|
1019
1064
|
},
|
|
1020
|
-
"batch"
|
|
1065
|
+
"batch": {
|
|
1021
1066
|
"batch": "batch",
|
|
1022
1067
|
"mode": {
|
|
1023
|
-
"label"
|
|
1024
|
-
"num-msgs"
|
|
1025
|
-
"interval"
|
|
1026
|
-
"concat"
|
|
1068
|
+
"label": "Mode",
|
|
1069
|
+
"num-msgs": "Group by number of messages",
|
|
1070
|
+
"interval": "Group by time interval",
|
|
1071
|
+
"concat": "Concatenate sequences"
|
|
1027
1072
|
},
|
|
1028
1073
|
"count": {
|
|
1029
|
-
"label"
|
|
1030
|
-
"overlap"
|
|
1031
|
-
"count"
|
|
1032
|
-
"invalid"
|
|
1074
|
+
"label": "Number of messages",
|
|
1075
|
+
"overlap": "Overlap",
|
|
1076
|
+
"count": "count",
|
|
1077
|
+
"invalid": "Invalid count and overlap"
|
|
1033
1078
|
},
|
|
1034
1079
|
"interval": {
|
|
1035
|
-
"label"
|
|
1036
|
-
"seconds"
|
|
1037
|
-
"empty"
|
|
1080
|
+
"label": "Interval",
|
|
1081
|
+
"seconds": "seconds",
|
|
1082
|
+
"empty": "send empty message when no message arrives"
|
|
1038
1083
|
},
|
|
1039
1084
|
"concat": {
|
|
1040
1085
|
"topics-label": "Topics",
|
|
1041
|
-
"topic"
|
|
1086
|
+
"topic": "topic"
|
|
1042
1087
|
},
|
|
1043
|
-
"too-many"
|
|
1044
|
-
"unexpected"
|
|
1045
|
-
"no-parts"
|
|
1088
|
+
"too-many": "too many pending messages in batch node",
|
|
1089
|
+
"unexpected": "unexpected mode",
|
|
1090
|
+
"no-parts": "no parts property in message",
|
|
1091
|
+
"error": {
|
|
1092
|
+
"invalid-count": "Invalid count",
|
|
1093
|
+
"invalid-overlap": "Invalid overlap",
|
|
1094
|
+
"invalid-interval": "Invalid interval"
|
|
1095
|
+
}
|
|
1046
1096
|
},
|
|
1047
1097
|
"rbe": {
|
|
1048
1098
|
"rbe": "filter",
|
|
@@ -1051,9 +1101,12 @@
|
|
|
1051
1101
|
"init": "Send initial value",
|
|
1052
1102
|
"start": "Start value",
|
|
1053
1103
|
"name": "Name",
|
|
1054
|
-
"septopics": "Apply mode separately for each "
|
|
1104
|
+
"septopics": "Apply mode separately for each ",
|
|
1105
|
+
"gap": "value change",
|
|
1106
|
+
"property": "property",
|
|
1107
|
+
"topic": "topic"
|
|
1055
1108
|
},
|
|
1056
|
-
"placeholder":{
|
|
1109
|
+
"placeholder": {
|
|
1057
1110
|
"bandgap": "e.g. 10 or 5%",
|
|
1058
1111
|
"start": "leave blank to use first data received"
|
|
1059
1112
|
},
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<dd>If not configured in the node, this optional property sets the HTTP method of the request.
|
|
26
26
|
Must be one of <code>GET</code>, <code>PUT</code>, <code>POST</code>, <code>PATCH</code> or <code>DELETE</code>.</dd>
|
|
27
27
|
<dt class="optional">headers <span class="property-type">object</span></dt>
|
|
28
|
-
<dd>Sets the HTTP headers of the request
|
|
28
|
+
<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>
|
|
29
29
|
<dt class="optional">cookies <span class="property-type">object</span></dt>
|
|
30
30
|
<dd>If set, can be used to send cookies with the request.</dd>
|
|
31
31
|
<dt class="optional">payload</dt>
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
<h3>Inputs</h3>
|
|
21
21
|
<dl class="message-properties">
|
|
22
22
|
<dt class="optional">filename <span class="property-type">string</span></dt>
|
|
23
|
-
<dd>
|
|
23
|
+
<dd>The name of the file to be updated can be provided in the node configuration, or as a message property.
|
|
24
|
+
By default it will use <code>msg.filename</code> but this can be customised in the node.
|
|
25
|
+
</dd>
|
|
24
26
|
<dt class="optional">encoding <span class="property-type">string</span></dt>
|
|
25
27
|
<dd>If encoding is configured to be set by msg, then this optional property can set the encoding.</dt>
|
|
26
28
|
</dl>
|
|
@@ -43,7 +45,9 @@
|
|
|
43
45
|
<h3>Inputs</h3>
|
|
44
46
|
<dl class="message-properties">
|
|
45
47
|
<dt class="optional">filename <span class="property-type">string</span></dt>
|
|
46
|
-
<dd>
|
|
48
|
+
<dd>The name of the file to be read can be provided in the node configuration, or as a message property.
|
|
49
|
+
By default it will use <code>msg.filename</code> but this can be customised in the node.
|
|
50
|
+
</dd>
|
|
47
51
|
</dl>
|
|
48
52
|
<h3>Outputs</h3>
|
|
49
53
|
<dl class="message-properties">
|