@node-red/nodes 3.1.0-beta.4 → 3.1.1
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/core/common/20-inject.html +1 -1
- package/core/common/20-inject.js +2 -3
- package/core/common/21-debug.html +136 -1
- package/core/common/60-link.html +1 -1
- package/core/common/lib/debug/debug-utils.js +17 -138
- package/core/common/lib/debug/debug.js +5 -0
- package/core/function/10-function.html +10 -9
- package/core/function/10-function.js +2 -1
- package/core/function/10-switch.html +32 -3
- package/core/function/15-change.html +26 -55
- package/core/function/16-range.html +6 -1
- package/core/function/80-template.html +1 -1
- package/core/function/89-delay.js +1 -1
- package/core/function/90-exec.html +1 -1
- package/core/function/rbe.html +4 -2
- package/core/network/10-mqtt.html +2 -2
- package/core/network/10-mqtt.js +17 -17
- package/core/network/21-httprequest.js +1 -4
- package/core/parsers/70-CSV.js +16 -13
- package/core/parsers/70-HTML.html +2 -2
- package/core/parsers/70-JSON.html +1 -0
- package/core/parsers/70-XML.html +2 -1
- package/core/parsers/70-YAML.html +1 -0
- package/core/sequence/17-split.html +17 -2
- package/core/storage/10-file.html +2 -2
- package/core/storage/10-file.js +6 -1
- package/icons/arduino.svg +1 -0
- package/icons/bluetooth.svg +1 -0
- package/icons/leveldb.svg +1 -0
- package/icons/mongodb.svg +1 -0
- package/icons/mouse.svg +1 -0
- package/icons/rbe.svg +1 -0
- package/icons/redis.svg +1 -0
- package/locales/de/function/10-function.html +1 -1
- package/locales/en-US/function/10-function.html +1 -1
- package/locales/fr/common/20-inject.html +1 -1
- package/locales/fr/function/10-function.html +1 -1
- package/locales/fr/messages.json +82 -82
- package/locales/ja/function/10-function.html +1 -1
- package/locales/ko/function/10-function.html +1 -1
- package/locales/pt-BR/function/10-function.html +1 -1
- package/locales/pt-BR/messages.json +0 -0
- package/locales/ru/function/10-function.html +1 -1
- package/locales/zh-CN/function/10-function.html +1 -1
- package/locales/zh-TW/function/10-function.html +1 -1
- package/package.json +4 -4
- package/icons/arduino.png +0 -0
- package/icons/bluetooth.png +0 -0
- package/icons/leveldb.png +0 -0
- package/icons/mongodb.png +0 -0
- package/icons/mouse.png +0 -0
- package/icons/rbe.png +0 -0
- package/icons/redis.png +0 -0
package/core/function/rbe.html
CHANGED
|
@@ -56,9 +56,11 @@
|
|
|
56
56
|
inout: {value:"out"},
|
|
57
57
|
septopics: {value:true},
|
|
58
58
|
property: {value:"payload", required:true,
|
|
59
|
-
label:RED._("node-red:rbe.label.property")
|
|
59
|
+
label:RED._("node-red:rbe.label.property"),
|
|
60
|
+
validate: RED.validators.typedInput({ type: 'msg' })},
|
|
60
61
|
topi: {value:"topic", required:true,
|
|
61
|
-
label:RED._("node-red:rbe.label.topic")
|
|
62
|
+
label:RED._("node-red:rbe.label.topic"),
|
|
63
|
+
validate: RED.validators.typedInput({ type: 'msg' })}
|
|
62
64
|
},
|
|
63
65
|
inputs:1,
|
|
64
66
|
outputs:1,
|
|
@@ -492,12 +492,12 @@
|
|
|
492
492
|
let ok = true;
|
|
493
493
|
if ($("#node-config-input-clientid").length) {
|
|
494
494
|
// Currently editing the node
|
|
495
|
-
let needClientId = !$("#node-config-input-cleansession").is(":checked")
|
|
495
|
+
let needClientId = !$("#node-config-input-cleansession").is(":checked")
|
|
496
496
|
if (needClientId) {
|
|
497
497
|
ok = (v||"").length > 0;
|
|
498
498
|
}
|
|
499
499
|
} else {
|
|
500
|
-
let needClientId = !(this.cleansession===undefined || this.cleansession)
|
|
500
|
+
let needClientId = !(this.cleansession===undefined || this.cleansession)
|
|
501
501
|
if (needClientId) {
|
|
502
502
|
ok = (v||"").length > 0;
|
|
503
503
|
}
|
package/core/network/10-mqtt.js
CHANGED
|
@@ -24,7 +24,6 @@ module.exports = function(RED) {
|
|
|
24
24
|
"text/css":"string",
|
|
25
25
|
"text/html":"string",
|
|
26
26
|
"text/plain":"string",
|
|
27
|
-
"text/html":"string",
|
|
28
27
|
"application/json":"json",
|
|
29
28
|
"application/octet-stream":"buffer",
|
|
30
29
|
"application/pdf":"buffer",
|
|
@@ -105,6 +104,7 @@ module.exports = function(RED) {
|
|
|
105
104
|
* @returns `true` if it is a valid topic
|
|
106
105
|
*/
|
|
107
106
|
function isValidPublishTopic(topic) {
|
|
107
|
+
if (topic.length === 0) return false;
|
|
108
108
|
return !/[\+#\b\f\n\r\t\v\0]/.test(topic);
|
|
109
109
|
}
|
|
110
110
|
|
|
@@ -220,8 +220,8 @@ module.exports = function(RED) {
|
|
|
220
220
|
*/
|
|
221
221
|
function subscriptionHandler(node, datatype ,topic, payload, packet) {
|
|
222
222
|
const msg = {topic:topic, payload:null, qos:packet.qos, retain:packet.retain};
|
|
223
|
-
const v5 = (node && node.brokerConn)
|
|
224
|
-
? node.brokerConn.v5()
|
|
223
|
+
const v5 = (node && node.brokerConn)
|
|
224
|
+
? node.brokerConn.v5()
|
|
225
225
|
: Object.prototype.hasOwnProperty.call(packet, "properties");
|
|
226
226
|
if(v5 && packet.properties) {
|
|
227
227
|
setStrProp(packet.properties, msg, "responseTopic");
|
|
@@ -452,7 +452,7 @@ module.exports = function(RED) {
|
|
|
452
452
|
|
|
453
453
|
/**
|
|
454
454
|
* Perform the disconnect action
|
|
455
|
-
* @param {MQTTInNode|MQTTOutNode} node
|
|
455
|
+
* @param {MQTTInNode|MQTTOutNode} node
|
|
456
456
|
* @param {Function} done
|
|
457
457
|
*/
|
|
458
458
|
function handleDisconnectAction(node, done) {
|
|
@@ -612,7 +612,7 @@ module.exports = function(RED) {
|
|
|
612
612
|
node.brokerurl = node.url;
|
|
613
613
|
} else {
|
|
614
614
|
// if the broker is ws:// or wss:// or tcp://
|
|
615
|
-
if (node.broker.indexOf("://") > -1) {
|
|
615
|
+
if ((typeof node.broker === 'string') && node.broker.indexOf("://") > -1) {
|
|
616
616
|
node.brokerurl = node.broker;
|
|
617
617
|
// Only for ws or wss, check if proxy env var for additional configuration
|
|
618
618
|
if (node.brokerurl.indexOf("wss://") > -1 || node.brokerurl.indexOf("ws://") > -1) {
|
|
@@ -866,7 +866,7 @@ module.exports = function(RED) {
|
|
|
866
866
|
* Call end and wait for the client to end (or timeout)
|
|
867
867
|
* @param {mqtt.MqttClient} client The broker client
|
|
868
868
|
* @param {number} ms The time to wait for the client to end
|
|
869
|
-
* @returns
|
|
869
|
+
* @returns
|
|
870
870
|
*/
|
|
871
871
|
let waitEnd = (client, ms) => {
|
|
872
872
|
return new Promise( (resolve, reject) => {
|
|
@@ -906,7 +906,7 @@ module.exports = function(RED) {
|
|
|
906
906
|
node.subid = 1;
|
|
907
907
|
|
|
908
908
|
//typedef for subscription object:
|
|
909
|
-
/**
|
|
909
|
+
/**
|
|
910
910
|
* @typedef {Object} Subscription
|
|
911
911
|
* @property {String} topic - topic to subscribe to
|
|
912
912
|
* @property {Object} [options] - options object
|
|
@@ -934,7 +934,7 @@ module.exports = function(RED) {
|
|
|
934
934
|
const ref = _ref || 0;
|
|
935
935
|
let options
|
|
936
936
|
let qos = 1 // default to QoS 1 (AWS and several other brokers don't support QoS 2)
|
|
937
|
-
|
|
937
|
+
|
|
938
938
|
// if options is an object, then clone it
|
|
939
939
|
if (typeof _options == "object") {
|
|
940
940
|
options = RED.util.cloneMessage(_options || {})
|
|
@@ -948,7 +948,7 @@ module.exports = function(RED) {
|
|
|
948
948
|
if (typeof qos === "number" && qos >= 0 && qos <= 2) {
|
|
949
949
|
options.qos = qos;
|
|
950
950
|
}
|
|
951
|
-
|
|
951
|
+
|
|
952
952
|
subscription.topic = _topic;
|
|
953
953
|
subscription.qos = qos;
|
|
954
954
|
subscription.options = RED.util.cloneMessage(options);
|
|
@@ -958,16 +958,16 @@ module.exports = function(RED) {
|
|
|
958
958
|
}
|
|
959
959
|
|
|
960
960
|
/**
|
|
961
|
-
* If topic is a subscription object, then use that, otherwise look up the topic in
|
|
961
|
+
* If topic is a subscription object, then use that, otherwise look up the topic in
|
|
962
962
|
* the subscriptions object. If the topic is not found, then create a new subscription
|
|
963
963
|
* object and add it to the subscriptions object.
|
|
964
|
-
* @param {Subscription|String} topic
|
|
965
|
-
* @param {*} options
|
|
966
|
-
* @param {*} callback
|
|
967
|
-
* @param {*} ref
|
|
964
|
+
* @param {Subscription|String} topic
|
|
965
|
+
* @param {*} options
|
|
966
|
+
* @param {*} callback
|
|
967
|
+
* @param {*} ref
|
|
968
968
|
*/
|
|
969
969
|
node.subscribe = function (topic, options, callback, ref) {
|
|
970
|
-
/** @type {Subscription} */
|
|
970
|
+
/** @type {Subscription} */
|
|
971
971
|
let subscription
|
|
972
972
|
let doCompare = false
|
|
973
973
|
let changesFound = false
|
|
@@ -1005,7 +1005,7 @@ module.exports = function(RED) {
|
|
|
1005
1005
|
_brokerConn.unsubscribe(sub.topic, sub.ref, true)
|
|
1006
1006
|
}
|
|
1007
1007
|
})
|
|
1008
|
-
|
|
1008
|
+
|
|
1009
1009
|
// if subscription is found (or sent in as a parameter), then check for changes.
|
|
1010
1010
|
// if there are any changes requested, tidy up the old subscription
|
|
1011
1011
|
if (subscription) {
|
|
@@ -1092,7 +1092,7 @@ module.exports = function(RED) {
|
|
|
1092
1092
|
delete sub[ref]
|
|
1093
1093
|
}
|
|
1094
1094
|
}
|
|
1095
|
-
// if instructed to remove the actual MQTT client subscription
|
|
1095
|
+
// if instructed to remove the actual MQTT client subscription
|
|
1096
1096
|
if (unsub) {
|
|
1097
1097
|
// if there are no more subscriptions for the topic, then remove the topic
|
|
1098
1098
|
if (Object.keys(sub).length === 0) {
|
|
@@ -452,10 +452,6 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
|
|
452
452
|
formData.append(opt, val);
|
|
453
453
|
} else if (typeof val === 'object' && val.hasOwnProperty('value')) {
|
|
454
454
|
formData.append(opt,val.value,val.options || {});
|
|
455
|
-
} else if (Array.isArray(val)) {
|
|
456
|
-
for (var i=0; i<val.length; i++) {
|
|
457
|
-
formData.append(opt, val[i])
|
|
458
|
-
}
|
|
459
455
|
} else {
|
|
460
456
|
formData.append(opt,JSON.stringify(val));
|
|
461
457
|
}
|
|
@@ -637,6 +633,7 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
|
|
637
633
|
msg.payload = msg.payload.toString('utf8'); // txt
|
|
638
634
|
|
|
639
635
|
if (node.ret === "obj") {
|
|
636
|
+
if (msg.statusCode == 204){msg.payload= "{}"};
|
|
640
637
|
try { msg.payload = JSON.parse(msg.payload); } // obj
|
|
641
638
|
catch(e) { node.warn(RED._("httpin.errors.json-error")); }
|
|
642
639
|
}
|
package/core/parsers/70-CSV.js
CHANGED
|
@@ -63,7 +63,7 @@ module.exports = function(RED) {
|
|
|
63
63
|
if (!(notemplate && (msg.hasOwnProperty("parts") && msg.parts.hasOwnProperty("index") && msg.parts.index > 0))) {
|
|
64
64
|
template = clean(node.template);
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
const ou = [];
|
|
67
67
|
if (!Array.isArray(msg.payload)) { msg.payload = [ msg.payload ]; }
|
|
68
68
|
if (node.hdrout !== "none" && node.hdrSent === false) {
|
|
69
69
|
if ((template.length === 1) && (template[0] === '')) {
|
|
@@ -74,7 +74,7 @@ module.exports = function(RED) {
|
|
|
74
74
|
template = Object.keys(msg.payload[0]);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
ou
|
|
77
|
+
ou.push(template.map(v => v.indexOf(node.sep)!==-1 ? '"'+v+'"' : v).join(node.sep));
|
|
78
78
|
if (node.hdrout === "once") { node.hdrSent = true; }
|
|
79
79
|
}
|
|
80
80
|
for (var s = 0; s < msg.payload.length; s++) {
|
|
@@ -93,7 +93,7 @@ module.exports = function(RED) {
|
|
|
93
93
|
msg.payload[s][t] = node.quo + msg.payload[s][t].toString() + node.quo;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
ou
|
|
96
|
+
ou.push(msg.payload[s].join(node.sep));
|
|
97
97
|
}
|
|
98
98
|
else {
|
|
99
99
|
if ((template.length === 1) && (template[0] === '') && (msg.hasOwnProperty("columns"))) {
|
|
@@ -105,6 +105,7 @@ module.exports = function(RED) {
|
|
|
105
105
|
node.warn(RED._("csv.errors.obj_csv"));
|
|
106
106
|
tmpwarn = false;
|
|
107
107
|
}
|
|
108
|
+
const row = [];
|
|
108
109
|
for (var p in msg.payload[0]) {
|
|
109
110
|
/* istanbul ignore else */
|
|
110
111
|
if (msg.payload[s].hasOwnProperty(p)) {
|
|
@@ -118,21 +119,22 @@ module.exports = function(RED) {
|
|
|
118
119
|
}
|
|
119
120
|
if (q.indexOf(node.quo) !== -1) { // add double quotes if any quotes
|
|
120
121
|
q = q.replace(/"/g, '""');
|
|
121
|
-
|
|
122
|
+
row.push(node.quo + q + node.quo);
|
|
122
123
|
}
|
|
123
124
|
else if (q.indexOf(node.sep) !== -1 || p.indexOf("\n") !== -1) { // add quotes if any "commas" or "\n"
|
|
124
|
-
|
|
125
|
+
row.push(node.quo + q + node.quo);
|
|
125
126
|
}
|
|
126
|
-
else {
|
|
127
|
+
else { row.push(q); } // otherwise just add
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
|
-
ou
|
|
131
|
+
ou.push(row.join(node.sep)); // add separator
|
|
131
132
|
}
|
|
132
133
|
else {
|
|
134
|
+
const row = [];
|
|
133
135
|
for (var t=0; t < template.length; t++) {
|
|
134
136
|
if (template[t] === '') {
|
|
135
|
-
|
|
137
|
+
row.push('');
|
|
136
138
|
}
|
|
137
139
|
else {
|
|
138
140
|
var tt = template[t];
|
|
@@ -146,19 +148,20 @@ module.exports = function(RED) {
|
|
|
146
148
|
p = RED.util.ensureString(p);
|
|
147
149
|
if (p.indexOf(node.quo) !== -1) { // add double quotes if any quotes
|
|
148
150
|
p = p.replace(/"/g, '""');
|
|
149
|
-
|
|
151
|
+
row.push(node.quo + p + node.quo);
|
|
150
152
|
}
|
|
151
153
|
else if (p.indexOf(node.sep) !== -1 || p.indexOf("\n") !== -1) { // add quotes if any "commas" or "\n"
|
|
152
|
-
|
|
154
|
+
row.push(node.quo + p + node.quo);
|
|
153
155
|
}
|
|
154
|
-
else {
|
|
156
|
+
else { row.push(p); } // otherwise just add
|
|
155
157
|
}
|
|
156
158
|
}
|
|
157
|
-
ou
|
|
159
|
+
ou.push(row.join(node.sep)); // add separator
|
|
158
160
|
}
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
|
-
|
|
163
|
+
// join lines, don't forget to add the last new line
|
|
164
|
+
msg.payload = ou.join(node.ret) + node.ret;
|
|
162
165
|
msg.columns = template.map(v => v.indexOf(',')!==-1 ? '"'+v+'"' : v).join(',');
|
|
163
166
|
if (msg.payload !== '') { send(msg); }
|
|
164
167
|
done();
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
color:"#DEBD5C",
|
|
42
42
|
defaults: {
|
|
43
43
|
name: {value:""},
|
|
44
|
-
property: {value:"payload"},
|
|
45
|
-
outproperty: {value:"payload"},
|
|
44
|
+
property: {value:"payload", validate: RED.validators.typedInput({ type: 'msg' }) },
|
|
45
|
+
outproperty: {value:"payload", validate: RED.validators.typedInput({ type: 'msg' }) },
|
|
46
46
|
tag: {value:""},
|
|
47
47
|
ret: {value:"html"},
|
|
48
48
|
as: {value:"single"}
|
package/core/parsers/70-XML.html
CHANGED
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
defaults: {
|
|
28
28
|
name: {value:""},
|
|
29
29
|
property: {value:"payload",required:true,
|
|
30
|
-
label:RED._("node-red:common.label.property")
|
|
30
|
+
label:RED._("node-red:common.label.property"),
|
|
31
|
+
validate: RED.validators.typedInput({ type: 'msg' })},
|
|
31
32
|
attr: {value:""},
|
|
32
33
|
chr: {value:""}
|
|
33
34
|
},
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
arraySplt: {value:1},
|
|
58
58
|
arraySpltType: {value:"len"},
|
|
59
59
|
stream: {value:false},
|
|
60
|
-
addname: {value:""}
|
|
60
|
+
addname: {value:"", validate: RED.validators.typedInput({ type: 'msg', allowBlank: true })}
|
|
61
61
|
},
|
|
62
62
|
inputs:1,
|
|
63
63
|
outputs:1,
|
|
@@ -208,7 +208,22 @@
|
|
|
208
208
|
validate:RED.validators.typedInput("propertyType", false)
|
|
209
209
|
},
|
|
210
210
|
propertyType: { value:"msg"},
|
|
211
|
-
key: {value:"topic"
|
|
211
|
+
key: {value:"topic", validate: (function () {
|
|
212
|
+
const typeValidator = RED.validators.typedInput({ type: 'msg' })
|
|
213
|
+
return function(v, opt) {
|
|
214
|
+
const joinMode = $("#node-input-mode").val() || this.mode
|
|
215
|
+
if (joinMode !== 'custom') {
|
|
216
|
+
return true
|
|
217
|
+
}
|
|
218
|
+
const buildType = $("#node-input-build").val() || this.build
|
|
219
|
+
if (buildType !== 'object') {
|
|
220
|
+
return true
|
|
221
|
+
} else {
|
|
222
|
+
return typeValidator(v, opt)
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
})()
|
|
226
|
+
},
|
|
212
227
|
joiner: { value:"\\n"},
|
|
213
228
|
joinerType: { value:"str"},
|
|
214
229
|
accumulate: { value:"false" },
|
|
@@ -198,7 +198,7 @@
|
|
|
198
198
|
category: 'storage',
|
|
199
199
|
defaults: {
|
|
200
200
|
name: {value:""},
|
|
201
|
-
filename: {value:""},
|
|
201
|
+
filename: {value:"", validate: RED.validators.typedInput({ typeField: 'filenameType' })},
|
|
202
202
|
filenameType: {value:"str"},
|
|
203
203
|
appendNewline: {value:true},
|
|
204
204
|
createDir: {value:false},
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
category: 'storage',
|
|
298
298
|
defaults: {
|
|
299
299
|
name: {value:""},
|
|
300
|
-
filename: {value:""},
|
|
300
|
+
filename: {value:"", validate: RED.validators.typedInput({ typeField: 'filenameType' }) },
|
|
301
301
|
filenameType: {value:"str"},
|
|
302
302
|
format: {value:"utf8"},
|
|
303
303
|
chunk: {value:false},
|
package/core/storage/10-file.js
CHANGED
|
@@ -68,6 +68,9 @@ module.exports = function(RED) {
|
|
|
68
68
|
node.error(err,msg);
|
|
69
69
|
return done();
|
|
70
70
|
} else {
|
|
71
|
+
if (typeof value !== 'string' && value !== null && value !== undefined) {
|
|
72
|
+
value = value.toString();
|
|
73
|
+
}
|
|
71
74
|
processMsg2(msg,nodeSend,value,done);
|
|
72
75
|
}
|
|
73
76
|
});
|
|
@@ -278,7 +281,6 @@ module.exports = function(RED) {
|
|
|
278
281
|
}
|
|
279
282
|
RED.nodes.registerType("file",FileNode);
|
|
280
283
|
|
|
281
|
-
|
|
282
284
|
function FileInNode(n) {
|
|
283
285
|
// Read a file
|
|
284
286
|
RED.nodes.createNode(this,n);
|
|
@@ -314,6 +316,9 @@ module.exports = function(RED) {
|
|
|
314
316
|
node.error(err,msg);
|
|
315
317
|
return done();
|
|
316
318
|
} else {
|
|
319
|
+
if (typeof value !== 'string' && value !== null && value !== undefined) {
|
|
320
|
+
value = value.toString();
|
|
321
|
+
}
|
|
317
322
|
processMsg2(msg, nodeSend, (value || "").replace(/\t|\r|\n/g,''), nodeDone);
|
|
318
323
|
}
|
|
319
324
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="40" height="60" viewBox="0, 0, 40, 60" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="#fff"><path d="m9.7884 22.379c-5.2427-0.41732-9.6475 5.7885-7.4975 10.585 2.0949 5.2041 9.9782 6.6154 13.727 2.4477 3.633-3.5613 5.0332-9.0411 9.4821-11.853 4.5205-3.0872 11.797-0.172 12.68 5.3144 0.86 5.2537-4.8017 10.364-9.9231 8.8205-3.7873-0.85449-6.5051-4.0905-8.0487-7.4975-1.9019-3.2526-4.3882-6.7257-8.2693-7.6077-0.6891-0.15656-1.4003-0.21831-2.1059-0.21721z" stroke-width="3.3"/><path d="m6.7012 29.821h6.6154" stroke-width="1.4"/><path d="m26.988 29.821h5.5128m-2.8115-2.7564v5.5128" stroke-width="1.8"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="40" height="60" viewBox="0, 0, 40, 60" xmlns="http://www.w3.org/2000/svg"><path d="m8.3474 17.75 22.298 22.444-10.747 13.013v-46.497l10.747 12.428-22.298 21.859" fill="none" stroke="#fff" stroke-width="4"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="40" height="60" viewBox="0, 0, 40, 60" xmlns="http://www.w3.org/2000/svg"><path d="m2.7078 12.986c0 7.7994-0.36386 21.569 0 32.545s35.118 9.8751 34.848 0c-0.26959-9.8751 0-24.82 0-32.545 0-7.7243-34.848-7.7995-34.848 0z" fill="none" stroke="#fff"/><g fill="#fff"><path d="m3.8741 13.406v8.955c0.021834 3.5781 19.543 5.0789 25.575 3.2543 0 0 0.02229-2.6683 0.02998-2.6673l5.5325 0.7238c0.64508 0.0844 1.1345-0.74597 1.134-1.3284v-8.573l-0.99896 0.93349-15.217-2.2765c4.5883 2.1798 9.808 4.1312 9.808 4.1312-9.3667 3.1562-25.846-0.31965-25.864-3.1525z"/><path d="m3.886 26.607v8.1052c3.2188 6.1087 29.901 5.8574 32.272 0v-8.1052c-3.3598 4.6685-29.204 5.1534-32.272 0z"/><path d="m4.0032 39.082v7.1522c2.556 7.4622 28.918 7.6072 32.272 0v-7.1522c-3.2345 4.9471-29.087 5.359-32.272 0z"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="40" height="60" viewBox="0, 0, 40, 60" xmlns="http://www.w3.org/2000/svg"><path d="m23.515 13.831c-4.7594-5.8789-2.6084-5.7751-7.3474 0-8.0368 10.477-8.3322 24.431 2.5476 32.935 0.13181 2.0418 0.46056 4.9803 0.46056 4.9803h1.315s0.32875-2.9219 0.46017-4.9803c2.8458-2.2339 16.799-14.619 2.5641-32.935z" fill="#fff"/></svg>
|
package/icons/mouse.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="40" height="60" viewBox="0, 0, 40, 60" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="#fff" stroke-width="3"><path d="m6 30c6 5 24 4 29-0.07"/><path d="m21 33 0.1-19c0.02-4 4-3 4-6s-4-2-4-5"/><path d="m6 22c0-11 29-10 29 0v21c0 18-29 19-29 0s4e-7 -11 0-21z"/></g></svg>
|
package/icons/rbe.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="40" height="60" viewBox="0, 0, 40, 60" xmlns="http://www.w3.org/2000/svg"><path d="m29 12s0.1 30 0.05 31-3 5-7 5-19 0.04-19 0.04c6-4 9-5 17-5 0 0 4-0.1 4-2 0-2 8e-3 -29 8e-3 -29z" fill="#fff"/><path d="m12 47s-0.1-30-0.05-31 3-5 7-5 19-0.04 19-0.04c-6 4-9 5-17 5 0 0-4 0.1-4 2 0 2-8e-3 29-8e-3 29z" fill="#fff"/></svg>
|
package/icons/redis.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="40" height="60" viewBox="0, 0, 40, 60" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="#fff" stroke-width="3"><path class="cls-4" d="m17.639 30.221c-1.7087-0.88225-12.465-5.6284-14.414-6.636-1.9492-1.0075-1.9868-1.7073-0.075164-2.5188 1.9117-0.81145 12.643-5.3861 14.91-6.2738 2.2675-0.8877 3.0517-0.91493 4.9785-0.14704 1.9267 0.76789 12.026 5.1329 13.923 5.8898 1.8966 0.75699 1.9843 1.386 0.02631 2.4861-1.958 1.1001-12.1 5.6611-14.285 6.8729s-3.355 1.2091-5.0636 0.32685z"/><path class="cls-4" d="m32.23 25.251c2.8239 1.2039 4.155 1.764 4.7307 1.9938 1.8966 0.75699 1.9843 1.386 0.0263 2.4861s-12.1 5.6611-14.285 6.8729c-2.1848 1.2117-3.3548 1.209-5.0634 0.32676-1.7087-0.88225-12.465-5.6284-14.414-6.636-1.9492-1.0075-1.9868-1.7073-0.075164-2.5188 10.883-4.6196-9.1087 3.8612 4.9598-2.1076"/><path class="cls-4" d="m32.23 31.961c2.8239 1.2039 4.155 1.764 4.7307 1.9938 1.8966 0.75699 1.9843 1.386 0.0263 2.4861s-12.1 5.6611-14.285 6.8729c-2.1848 1.2117-3.3548 1.209-5.0634 0.32676-1.7087-0.88225-12.465-5.6284-14.414-6.636-1.9492-1.0075-1.9868-1.7073-0.075164-2.5188 10.883-4.6196-9.1087 3.8612 4.9598-2.1076"/></g></svg>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<p>Wenn ein promise-Objekt aus dem Start-Code zurückgegeben wird,
|
|
26
26
|
beginnt danach die reguläre Verarbeitung der Eingangsnachrichten.</p>
|
|
27
27
|
<h3>Details</h3>
|
|
28
|
-
<p>Siehe <a target="_blank" href="
|
|
28
|
+
<p>Siehe <a target="_blank" href="https://nodered.org/docs/writing-functions.html">Onlinedokumentation</a>
|
|
29
29
|
für weitere Informationen zum Schreiben von Funktionen.</p>
|
|
30
30
|
<h4><b>Nachrichten senden</b></h4>
|
|
31
31
|
<p>Die Funktion kann die Nachrichten zurückgeben, die sie an die nächsten Nodes im Flow weitergeben möchte,
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
<p>If the On Start code returns a Promise object, the node will not start handling messages
|
|
27
27
|
until the promise is resolved.</p>
|
|
28
28
|
<h3>Details</h3>
|
|
29
|
-
<p>See the <a target="_blank" href="
|
|
29
|
+
<p>See the <a target="_blank" href="https://nodered.org/docs/writing-functions.html">online documentation</a>
|
|
30
30
|
for more information on writing functions.</p>
|
|
31
31
|
<h4>Sending messages</h4>
|
|
32
32
|
<p>The function can either return the messages it wants to pass on to the next nodes
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
<p><b>Remarque</b> : Les options <i>"Intervalle entre les heures"</i> et <i>"à une heure précise"</i> utilisent le système cron standard.
|
|
37
37
|
Cela signifie que pour la première option, vous pouvez envoyer un message à intervalle régulier entre les heures voulues.
|
|
38
38
|
Si vous voulez envoyer un message toutes les minutes à partir de maintenant, utiliser l'option <i>"intervalle"</i>.</p>
|
|
39
|
-
<p><b>Remarque</b> : Pour inclure une nouvelle ligne dans une chaîne, vous devez utiliser un noeud de fonction pour créer la charge utile.</p>
|
|
39
|
+
<p><b>Remarque</b> : Pour inclure une nouvelle ligne dans une chaîne, vous devez utiliser soit un noeud de fonction soit le noeud template pour créer la charge utile.</p>
|
|
40
40
|
</script>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
<p>Si le code 'Au démarrage' renvoie un objet Promise (promesse), le noeud ne commencera pas à gérer les messages
|
|
27
27
|
jusqu'à ce que la promesse soit résolue.</p>
|
|
28
28
|
<h3>Détails</h3>
|
|
29
|
-
<p>Voir la <a target="_blank" href="
|
|
29
|
+
<p>Voir la <a target="_blank" href="https://nodered.org/docs/writing-functions.html">documentation en ligne</a>
|
|
30
30
|
pour plus d'informations sur les fonctions d'écriture.</p>
|
|
31
31
|
<h4>Envoi de messages</h4>
|
|
32
32
|
<p>La fonction peut envoyer les messages qu'elle souhaite transmettre aux noeuds suivants
|