@node-red/nodes 4.0.3 → 4.0.4

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.
@@ -158,9 +158,16 @@ module.exports = function(RED) {
158
158
  if(!keys || !keys.length) return null;
159
159
  keys.forEach(key => {
160
160
  let val = srcUserProperties[key];
161
- if(typeof val == "string") {
161
+ if(typeof val === "string") {
162
162
  count++;
163
163
  _clone[key] = val;
164
+ } else if (val !== undefined && val !== null) {
165
+ try {
166
+ _clone[key] = JSON.stringify(val)
167
+ count++;
168
+ } catch (err) {
169
+ // Silently drop property
170
+ }
164
171
  }
165
172
  });
166
173
  if(count) properties.userProperties = _clone;
@@ -456,7 +456,7 @@
456
456
  "staticTopic": "Subscribe to single topic",
457
457
  "dynamicTopic": "Dynamic subscription",
458
458
  "auto-connect": "Connect automatically",
459
- "auto-mode-depreciated": "This option is depreciated. Please use the new auto-detect mode.",
459
+ "auto-mode-depreciated": "This option is deprecated. Please use the new auto-detect mode.",
460
460
  "none": "none",
461
461
  "other": "other"
462
462
  },
@@ -513,15 +513,15 @@
513
513
  "method": "Método",
514
514
  "url": "URL",
515
515
  "doc": "Docs",
516
- "return": "Return",
517
- "upload": "Accept file uploads?",
518
- "status": "Status code",
519
- "headers": "Headers",
516
+ "return": "Devolver",
517
+ "upload": "¿Aceptar cargas de archivos?",
518
+ "status": "Código de estado",
519
+ "headers": "Encabezados",
520
520
  "other": "otro",
521
521
  "paytoqs": {
522
- "ignore": "Ignore",
523
- "query": "Append to query-string parameters",
524
- "body": "Send as request body"
522
+ "ignore": "Ignorar",
523
+ "query": "Agregar a los parámetros de la cadena de consulta",
524
+ "body": "Enviar como cuerpo de la solicitud"
525
525
  },
526
526
  "utf8String": "texto UTF8",
527
527
  "binaryBuffer": "buffer binario",
@@ -529,45 +529,45 @@
529
529
  "authType": "Tipo",
530
530
  "bearerToken": "Token"
531
531
  },
532
- "setby": "- set by msg.method -",
533
- "basicauth": "Use authentication",
534
- "use-tls": "Enable secure (SSL/TLS) connection",
535
- "tls-config": "TLS Configuration",
536
- "basic": "basic authentication",
537
- "digest": "digest authentication",
538
- "bearer": "bearer authentication",
539
- "use-proxy": "Use proxy",
540
- "persist": "Enable connection keep-alive",
541
- "proxy-config": "Proxy Configuration",
542
- "use-proxyauth": "Use proxy authentication",
543
- "noproxy-hosts": "Ignore hosts",
544
- "senderr": "Only send non-2xx responses to Catch node",
545
- "utf8": "a UTF-8 string",
546
- "binary": "a binary buffer",
547
- "json": "a parsed JSON object",
532
+ "setby": "- establecido por msg.method -",
533
+ "basicauth": "Usar autenticación",
534
+ "use-tls": "Habilitar conexión segura (SSL/TLS)",
535
+ "tls-config": "Configuración TLS",
536
+ "basic": "autenticación básica",
537
+ "digest": "autenticación digest",
538
+ "bearer": "autenticación bearer",
539
+ "use-proxy": "Usar proxy",
540
+ "persist": "Habilitar conexión activa (keep-alive)",
541
+ "proxy-config": "Configuración Proxy",
542
+ "use-proxyauth": "Usar autenticación de proxy",
543
+ "noproxy-hosts": "Ignorar hosts",
544
+ "senderr": "Enviar solo respuestas que no sean 2xx al nodo Catch",
545
+ "utf8": "una cadena UTF-8",
546
+ "binary": "un búfer binario",
547
+ "json": "un objeto JSON analizado",
548
548
  "tip": {
549
- "in": "The url will be relative to ",
550
- "res": "The messages sent to this node <b>must</b> originate from an <i>http input</i> node",
549
+ "in": "La URL será relativa a ",
550
+ "res": "Los mensajes enviados a este nodo <b>deben</b> originarse desde un nodo de <i>http input</i>",
551
551
  "req": "Tip: If the JSON parse fails the fetched string is returned as-is."
552
552
  },
553
- "httpreq": "http request",
553
+ "httpreq": "solicitud http",
554
554
  "errors": {
555
- "not-created": "Cannot create http-in node when httpNodeRoot set to false",
556
- "missing-path": "missing path",
557
- "no-response": "No response object",
558
- "json-error": "JSON parse error",
559
- "no-url": "No url specified",
560
- "deprecated-call": "Deprecated call to __method__",
561
- "invalid-transport": "non-http transport requested",
562
- "timeout-isnan": "Timeout value is not a valid number, ignoring",
563
- "timeout-isnegative": "Timeout value is negative, ignoring",
564
- "invalid-payload": "Invalid payload",
565
- "invalid-url": "Invalid url"
555
+ "not-created": "No se puede crear el nodo http-in cuando httpNodeRoot está establecido en falso",
556
+ "missing-path": "falta la ruta",
557
+ "no-response": "No hay objeto de respuesta",
558
+ "json-error": "Error de análisis en JSON",
559
+ "no-url": "No se especificó ninguna URL",
560
+ "deprecated-call": "Llamada obsoleta a __method__",
561
+ "invalid-transport": "protocolo no-http solicitado",
562
+ "timeout-isnan": "El valor de tiempo de espera no es un número válido, se ignora",
563
+ "timeout-isnegative": "El valor de tiempo de espera es negativo, se ignora",
564
+ "invalid-payload": "payload Invalido",
565
+ "invalid-url": "URL Inválida"
566
566
  },
567
567
  "status": {
568
- "requesting": "requesting"
568
+ "requesting": "solicitando"
569
569
  },
570
- "insecureHTTPParser": "Disable strict HTTP parsing"
570
+ "insecureHTTPParser": "Deshabilitar el análisis estricto de HTTP"
571
571
  },
572
572
  "websocket": {
573
573
  "label": {
@@ -576,41 +576,42 @@
576
576
  "url": "URL",
577
577
  "subprotocol": "Subprotocolo"
578
578
  },
579
- "listenon": "Listen on",
580
- "connectto": "Connect to",
581
- "sendrec": "Send/Receive",
579
+ "listenon": "Escuchar",
580
+ "connectto": "Conectar a",
581
+ "sendrec": "Enviar/Recibir",
582
582
  "payload": "payload",
583
- "message": "entire message",
584
- "sendheartbeat": "Send heartbeat",
583
+ "message": "mensaje completo",
584
+ "sendheartbeat": "Enviar latido",
585
585
  "tip": {
586
- "path1": "By default, <code>payload</code> will contain the data to be sent over, or received from a websocket. The listener can be configured to send or receive the entire message object as a JSON formatted string.",
587
- "path2": "This path will be relative to <code>__path__</code>.",
588
- "url1": "URL should use ws:&#47;&#47; or wss:&#47;&#47; scheme and point to an existing websocket listener.",
589
- "url2": "By default, <code>payload</code> will contain the data to be sent over, or received from a websocket. The client can be configured to send or receive the entire message object as a JSON formatted string."
586
+ "path1": "De manera predeterminada, <code>payload</code> contendrá los datos que se enviarán o recibirán de un websocket. El receptor puede configurarse para enviar o recibir el objeto de mensaje completo como una cadena en formato JSON.",
587
+ "path2": "Esta ruta será relativa a <code>__path__</code>.",
588
+ "url1": "La URL debe usar el esquema ws:&#47;&#47; o wss:&#47;&#47; y apuntar a un receptor de websocket existente.",
589
+ "url2": "De manera predeterminada, <code>payload</code> contendrá los datos que se enviarán o recibirán de un websocket. El cliente puede configurarse para enviar o recibir el objeto de mensaje completo como una cadena en formato JSON",
590
+ "headers": "Los encabezados solo se envían durante el mecanismo de actualización del protocolo, de HTTP al protocolo WS/WSS."
590
591
  },
591
592
  "status": {
592
- "connected": "connected __count__",
593
- "connected_plural": "connected __count__"
593
+ "connected": "__count__ conectado",
594
+ "connected_plural": "__count__ conectados"
594
595
  },
595
596
  "errors": {
596
- "connect-error": "An error occurred on the ws connection: ",
597
- "send-error": "An error occurred while sending: ",
598
- "missing-conf": "Missing server configuration",
599
- "duplicate-path": "Cannot have two WebSocket listeners on the same path: __path__",
600
- "missing-server": "Missing server configuration",
601
- "missing-client": "Missing client configuration"
597
+ "connect-error": "Se produjo un error en la conexión ws:",
598
+ "send-error": "Se produjo un error al enviar: ",
599
+ "missing-conf": "Falta la configuración del servidor",
600
+ "duplicate-path": "No se pueden tener dos escuchas de WebSocket en la misma ruta: __path__",
601
+ "missing-server": "Falta la configuración del servidor",
602
+ "missing-client": "Falta la configuración del cliente"
602
603
  }
603
604
  },
604
605
  "watch": {
605
- "watch": "watch",
606
+ "watch": "observar",
606
607
  "label": {
607
- "files": "File(s)",
608
- "recursive": "Watch sub-directories recursively"
608
+ "files": "Fichero(s)",
609
+ "recursive": "Observar subdirectorios recursivamente"
609
610
  },
610
611
  "placeholder": {
611
- "files": "Comma-separated list of files and/or directories"
612
+ "files": "Lista de archivos y/o directorios separados por comas"
612
613
  },
613
- "tip": "On Windows you must use double back-slashes \\\\ in any directory names."
614
+ "tip": "En Windows, debes utilizar barras invertidas dobles \\\\ en cualquier nombre de directorio."
614
615
  },
615
616
  "tcpin": {
616
617
  "label": {
@@ -849,7 +850,13 @@
849
850
  "newline": "Nueva línea",
850
851
  "usestrings": "analizar valores numéricos",
851
852
  "include_empty_strings": "incluir cadenas vacías",
852
- "include_null_values": "incluir valores nulos"
853
+ "include_null_values": "incluir valores nulos",
854
+ "spec": "Analizador"
855
+ },
856
+ "spec": {
857
+ "rfc": "RFC4180",
858
+ "legacy": "Legado",
859
+ "legacy_warning": "El modo legado se eliminará en una versión futura."
853
860
  },
854
861
  "placeholder": {
855
862
  "columns": "nombres de columnas separados por comas"
@@ -878,6 +885,7 @@
878
885
  "once": "enviar encabezados una vez, hasta msg.reset"
879
886
  },
880
887
  "errors": {
888
+ "bad_template": "Plantilla de columnas mal formada.",
881
889
  "csv_js": "Este nodo solo maneja cadenas CSV u objetos JS.",
882
890
  "obj_csv": "No se ha especificado ninguna plantilla de columnas para el objeto -> CSV.",
883
891
  "bad_csv": "Datos CSV con formato incorrecto: la salida probablemente esté corrupta."
@@ -887,12 +895,14 @@
887
895
  "label": {
888
896
  "select": "Selector",
889
897
  "output": "Salida",
890
- "in": "en"
898
+ "in": "en",
899
+ "prefix": "Nombre de la propiedad para el contenido HTML"
891
900
  },
892
901
  "output": {
893
902
  "html": "el contenido HTML de los elementos",
894
903
  "text": "sólo el contenido textual de los elementos",
895
- "attr": "un objeto de cualquier atributo de los elementos"
904
+ "attr": "un objeto de cualquier atributo de los elementos",
905
+ "compl": "un objeto de cualquier atributo de los elementos y contenidos html"
896
906
  },
897
907
  "format": {
898
908
  "single": "como un mensaje único que contiene una matriz",
@@ -1007,6 +1017,7 @@
1007
1017
  "objectSend": "Enviar un mensaje para cada par clave/valor",
1008
1018
  "strBuff": "<b>Texto</b> / <b>Buffer</b>",
1009
1019
  "array": "<b>Array</b>",
1020
+ "splitThe": "Dividir el",
1010
1021
  "splitUsing": "Dividir usando",
1011
1022
  "splitLength": "Longitud fija de",
1012
1023
  "stream": "Manejar como un flujo de mensajes",
@@ -1036,6 +1047,7 @@
1036
1047
  "joinedUsing": "se unió usando",
1037
1048
  "send": "Enviar el mensaje:",
1038
1049
  "afterCount": "Después de varias partes del mensaje",
1050
+ "useparts": "Usar la propiedad msg.parts existente",
1039
1051
  "count": "contar",
1040
1052
  "subsequent": "y cada mensaje posterior.",
1041
1053
  "afterTimeout": "Después de un tiempo de espera trás el primer mensaje",
@@ -1102,6 +1114,7 @@
1102
1114
  "too-many": "demasiados mensajes pendientes en el nodo de lotes",
1103
1115
  "unexpected": "modo inesperado",
1104
1116
  "no-parts": "ninguna propiedad 'parte' en el mensaje",
1117
+ "honourParts": "Permitir que msg.parts también complete la operación por lotes.",
1105
1118
  "error": {
1106
1119
  "invalid-count": "Recuento no válido",
1107
1120
  "invalid-overlap": "Solapamiento no válido",
@@ -24,12 +24,14 @@
24
24
  <p>Solo se envía el <code>msg.payload</code>.</p>
25
25
  <p>Si <code>msg.payload</code> es una cadena que contiene una codificación Base64 de datos binarios, la opción de decodificación Base64 hará que se vuelva a convertir a binario antes de enviarse.</p>
26
26
  <p>Si <code>msg._session</code> no está presente, la carga se envía a <b>todos</b> los clientes conectados.</p>
27
+ <p>En el modo Responder a, configurar <code>msg.reset = true</code> restablecerá la conexión especificada por _session.id, o todas las conexiones si no se especifica _session.id.</p>
27
28
  <p><b>Nota: </b>En algunos sistemas, es posible que necesites acceso raíz o de administrador para acceder a los puertos inferiores a 1024.</p>
28
29
  </script>
29
30
 
30
31
  <script type="text/html" data-help-name="tcp request">
31
32
  <p>Un nodo de solicitud TCP simple: envía el <code>msg.payload</code> a un puerto tcp del servidor y espera una respuesta.</p>
32
33
  <p>Se conecta, envía la "solicitud" y lee la "respuesta". Puede contar una cantidad de caracteres devueltos en un búfer fijo, hacer coincidir un carácter específico antes de regresar, esperar un tiempo de espera fijo desde la primera respuesta y luego regresar, esperar datos, o enviar y luego cerrar la conexión inmediatamente, sin esperar una respuesta.</p>
34
+ <p>Si está en modo sentado y esperando (permanecer conectado), puede enviar <code>msg.reset = true</code> o <code>msg.reset = "host:port"</code> para forzar una interrupción en la conexión y una reconexión automática.</p>
33
35
  <p>La respuesta se generará en <code>msg.payload</code> como un búfer, por lo que es posible que quieras utilizar .toString().</p>
34
36
  <p>Si dejas el host TCP o el puerto en blanco, debes configurarlos utilizando las propiedades <code>msg.host</code> y <code>msg.port</code> en cada mensaje enviado al nodo.</p>
35
37
  </script>
@@ -35,7 +35,9 @@
35
35
  </dd>
36
36
  </dl>
37
37
  <h3>Detalles</h3>
38
- <p>La plantilla de columnas puede contener una lista ordenada de nombres de columnas. Al convertir CSV en un objeto, los nombres de las columnas se utilizarán como nombres de propiedades. Alternativamente, los nombres de las columnas se pueden tomar de la primera fila del CSV.</p>
38
+ <p>La plantilla de columnas puede contener una lista ordenada de nombres de columnas. Al convertir CSV en un objeto, los nombres de las columnas se utilizarán como nombres de propiedades. Alternativamente, los nombres de las columnas se pueden tomar de la primera fila del CSV.
39
+ <p>Cuando se selecciona el analizador RFC, la plantilla de columna debe ser compatible con RFC4180.</p>
40
+ </p>
39
41
  <p>Al convertir a CSV, la plantilla de columnas se utiliza para identificar qué propiedades extraer del objeto y en qué orden.</p>
40
42
  <p>Si la plantilla de columnas está en blanco, puede utilizar una lista simple de propiedades separadas por comas proporcionada en <code>msg.columns</code> para determinar qué extraer y en qué orden. Si ninguno de los dos está presente, todas las propiedades del objeto se muestran en el orden en que se encuentran en la primera fila.</p>
41
43
  <p>Si la entrada es una matriz, entonces la plantilla de columnas solo se usa para generar opcionalmente una fila de títulos de columnas.</p>
@@ -46,4 +48,5 @@
46
48
  <p>Si genera varios mensajes, tendrán su propiedad <code>parts</code> configurada y formarán una secuencia de mensajes completa.</p>
47
49
  <p>Si el nodo está configurado para enviar encabezados de columna solo una vez, si se configura <code>msg.reset</code> en cualquier valor hará que el nodo reenvíe los encabezados.</p>
48
50
  <p><b>Nota:</b> la plantilla de columna debe estar separada por comas, incluso si se elige un separador diferente para los datos.</p>
51
+ <p><b>Nota:</b> en el modo RFC, se generarán errores detectables para encabezados CSV mal formados y datos de carga útil de entrada no válidos</p>
49
52
  </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node-red/nodes",
3
- "version": "4.0.3",
3
+ "version": "4.0.4",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,14 +21,14 @@
21
21
  "body-parser": "1.20.3",
22
22
  "cheerio": "1.0.0-rc.10",
23
23
  "content-type": "1.0.5",
24
- "cookie-parser": "1.4.6",
25
- "cookie": "0.6.0",
24
+ "cookie-parser": "1.4.7",
25
+ "cookie": "0.7.2",
26
26
  "cors": "2.8.5",
27
27
  "cronosjs": "1.7.1",
28
28
  "denque": "2.1.0",
29
29
  "form-data": "4.0.0",
30
30
  "fs-extra": "11.2.0",
31
- "got": "12.6.0",
31
+ "got": "12.6.1",
32
32
  "hash-sum": "2.0.0",
33
33
  "hpagent": "1.2.0",
34
34
  "https-proxy-agent": "5.0.1",
@@ -40,7 +40,7 @@
40
40
  "mustache": "4.2.0",
41
41
  "node-watch": "0.7.4",
42
42
  "on-headers": "1.0.2",
43
- "raw-body": "2.5.2",
43
+ "raw-body": "3.0.0",
44
44
  "tough-cookie": "^5.0.0",
45
45
  "uuid": "9.0.1",
46
46
  "ws": "7.5.10",