Módulo JavaScript
Definición
El módulo instrumental “JavaScript”, estándar de Skyone Studio y disponible para uso en cualquier flujo, permite la ejecución de código JavaScript de forma segura en un entorno controlado.
Este módulo es ideal para transformar datos, realizar cálculos personalizados y ejecutar otras operaciones específicas con JavaScript.
A continuación, se detallan los recursos disponibles, restricciones de uso y ejemplos prácticos de cómo utilizar esta funcionalidad.
Posibilidades de uso
Ejecución de código JavaScript estándar: Puedes usar todas las funcionalidades estándar de JavaScript, incluyendo declaración de variables, bucles, condicionales y manipulación de objetos y arrays.
Funciones Asíncronas y Promises: Soporte para async/await y Promises, permitiendo operaciones asíncronas como solicitudes simuladas de datos o procesos dependientes de temporizadores.
Temporizadores:
setTimeout: disponible para programar operaciones asíncronas después de un retraso especificado.
clearTimeout: disponible para cancelar temporizadores creados con setTimeout.
Manipulación de Strings y Números:Uso de funciones globales como parseInt, parseFloat, Number, String, entre otras.
Funciones nativas de JavaScript:Todas las funciones nativas como Math, Date, JSON, Array, Object y RegExp están disponibles.
Memoria: Hasta 60 MB de memoria disponible para la ejecución del código.
Restricciones de uso
Importación de módulos: No se pueden importar módulos con require o import. Esto incluye módulos nativos de Node.js y librerías externas, garantizando un entorno seguro y aislado.
Acceso al sistema: No hay acceso al sistema de archivos, red u otras operaciones que puedan comprometer la seguridad de Skyone Studio.
Manipulación de procesos: Funciones como process.exit() o process.kill() no están disponibles.
Palabras clave restringidas: Operaciones como eval y Function están restringidas para evitar que el código escape del entorno seguro.
Acceso a variables globales: El código se ejecuta en un sandbox, aislado del contexto global, sin acceso a variables externas.
Configuración del módulo
El módulo “JavaScript” aparece en la opción Herramientas dentro de la edición de un flujo.

Después de seleccionarlo, se mostrará el modal de configuración.
Conoce más sobre el Encabezado del Módulo aquí.
Configuración de variables
Completa los siguientes campos:
Clave: identificación de la variable
Valor: ingresa o arrastra una variable
Tipo: selecciona el tipo de datos adecuado: texto, número, booleano, objeto o array

Después de completar la configuración, haz clic en “Avanzar”.
Resultado
En esta pantalla es posible ejecutar y visualizar la transformación de datos y manipularlos con JavaScript.

Parámetros
Todos los parámetros se pasan dentro del objeto data, lo que significa que todas las variables están accesibles dentro del código JavaScript bajo data.
Estructura y contenido de data:
Tipo de datos: data es un objeto JSON, conteniendo pares clave-valor donde los valores pueden ser strings, números, arrays, objetos, booleanos o null.
Campos personalizados: El contenido de data puede incluir cualquier información que el código del usuario requiera; no hay restricciones sobre la estructura mientras sea serializable en JSON.
Ejemplos de campos:
Números y Strings: para cálculos o manipulación
Arrays y Objetos: estructuras complejas, listas o objetos anidados
Datos de configuración: determinan cómo debe comportarse el código
Para finalizar la configuración, haz clic en “Guardar”.
Ejemplos de Uso
Ejemplo 1: Código síncrono con dos parámetros
Supongamos que tenemos dos parámetros: number1 y number2.
Código JavaScript:
Al hacer clic en “Ejecutar”, el resultado será la suma de ambos parámetros.

Ejemplo 2: Código asíncrono con Promises
En este ejemplo, vamos a trabajar con un escenario asíncrono utilizando Promises en JavaScript.
Imagina que queremos procesar los datos después de un cierto tiempo. Usaremos dos parámetros que se encuentran dentro de "data", y la función devolverá una Promise.
El código a continuación simula una operación asíncrona utilizando setTimeout para esperar un segundo antes de resolver la Promise con un mensaje y los datos proporcionados, después de hacer clic en "Ejecutar":
El resultado puede observarse en la imagen a continuación:

Ejemplo 3: Crear un token usando signJwtToken
signJwtTokenEn este ejemplo, se demostrará la creación de un token JWT utilizando el módulo de JavaScript.
Para ello, utilizaremos la función signJwtToken, proporcionada por el propio módulo, que permite generar tokens de manera práctica y segura.
La función signJwtToken requiere los siguientes parámetros:
Payload (obligatorio | objeto): define el cuerpo del token, que contiene la información que será codificada.
Secret (obligatorio | texto): clave secreta utilizada para firmar y validar el token.
Options (opcional | objeto): permite la configuración de parámetros adicionales del token. Para más información sobre este campo, consulta la documentación de la biblioteca de JavaScript utilizada.
Ejemplo de uso
En los datos de entrada puede configurarse un parámetro o variable si es necesario, por ejemplo:

Ejemplo de datos de entrada:
Insertamos el siguiente código en el área de Código JavaScript:
Dado que los parámetros payload y secret son obligatorios, es posible agregar otras opciones adicionales. En nuestro ejemplo, utilizamos expiresIn. Para visualizar las demás opciones, consulta la documentación.
Después de la ejecución, el resultado puede observarse en la imagen a continuación:

En caso de error, el resultado será diferente, como se muestra a continuación:
Ejemplo 4: Decodificar un token usando la función decodeJwtToken
decodeJwtTokenEn este ejemplo, vamos a decodificar un token JWT para verificar y acceder a los datos almacenados en él.
Usaremos nuevamente una función proporcionada por el módulo llamada decodeJwtToken. Esta función espera recibir dos parámetros:
token: Este campo es obligatorio y de tipo texto. Representa el token que será decodificado y verificado.
secret: Este campo es obligatorio y de tipo texto. Representa la clave secreta utilizada para firmar el token.
Ejemplo de uso
Para la entrada, utilizamos los siguientes datos:
Insertamos el siguiente código en el área de Código JavaScript:
Después de la ejecución, el resultado puede observarse en la imagen a continuación:

Error de ejecución:
Buenas Prácticas
Validación de entrada: Siempre valida los datos de entrada para garantizar la correcta ejecución y evitar errores inesperados.
Desempeño: Evita bucles infinitos o recursiones profundas que puedan generar uso excesivo de memoria.
Last updated