Módulo JavaScript
Last updated
Last updated
O módulo ferramental "JavaScript", módulo padrão da plataforma para a utilização em qualquer fluxo, permite rodar código JavaScript de maneira segura dentro de um ambiente controlado. Este módulo é ideal para realizar transformações de dados, cálculos personalizados e outras operações programáticas específicas do JavaScript.
Confira a seguir o que está disponível para uso, o que é restrito e exemplos práticos de como utilizar a funcionalidade.
Execução de código JavaScript padrão: Você pode usar todas as funcionalidades padrão do JavaScript, incluindo declarações de variáveis, loops, condicionais, manipulação de objetos e arrays.
Funções Assíncronas e Promises: Suporte para async/await e Promises, permitindo operações assíncronas como requisições de dados simuladas ou operações que dependem de temporizadores.
Temporizadores:
setTimeout: Disponível para agendar operações assíncronas após um atraso especificado.
clearTimeout: Disponível para cancelar temporizadores criados com setTimeout.
Manipulação de Strings e Números: Uso de funções globais como parseInt, parseFloat, Number, String, e outras para manipulação de números e strings.
Funções nativas de JavaScript: Todas as funções nativas de JavaScript, como Math, Date, JSON, Array, Object, e RegExp, estão disponíveis.
Memória: Pode ser usado até 60MB de memória para a execução do código.
Importação de Módulos: Não é possível importar módulos usando require ou import. Isso inclui tanto módulos nativos do Node.js quanto bibliotecas de terceiros, garantindo um ambiente seguro e isolado.
Acesso ao Sistema: Não há acesso ao sistema de arquivos, rede, ou outras operações de sistema que possam comprometer a segurança da plataforma.
Manipulação de Processos: Funções para manipulação de processos, como process.exit() e process.kill(), não estão disponíveis.
Palavras-chave Restritas: Certas palavras-chave e operações, como eval e Function, estão restritas para evitar a execução de código que poderia escapar do ambiente seguro.
Acesso a Variáveis Globais: O código executado é isolado do contexto global, sem acesso a variáveis globais externas ao sandbox.
O módulo "JavaScript" aparece na opção Ferramentas da edição de um fluxo. Após clicar para adicioná-lo, o modal de configuração será exibido.
Preencha os seguintes campos:
Chave: identificação da variável
Valor: digite ou arraste uma variável
Tipo: escolha o tipo de dados mais adequado. As opções são: texto, número, booleano, objeto e array.
Após o preenchimento das configurações, clique em "Avançar".
Nesta tela, é possível executar e visualizar as informações da transformação de dados e manipulá-las com o JavaScript.
Todos os parâmetros são passados dentro do campo "data". Na prática isso significa que todos os parâmetros estão dentro de um objeto "data", que pode ser acessado pelo código JavaScript.
Tipo de Dados: "data" é um objeto JSON. Isso significa que ele pode conter pares de chave-valor, onde as chaves são strings e os valores podem ser de tipos de dados como strings, números, arrays, objetos, booleans, ou null.
Campos Personalizados: O conteúdo de data é completamente personalizado e pode conter qualquer informação que o código do usuário precise para funcionar. Não há restrições específicas quanto à estrutura dos dados, além de serem serializáveis em JSON.
Números e Strings: Valores numéricos ou de texto que podem ser utilizados para cálculos ou manipulações.
Arrays e Objetos: Estruturas de dados mais complexas que podem conter listas de itens ou outros objetos aninhados.
Dados de Configuração: Informações de configuração específicas que determinam como o código deve se comportar.
Para finalizar a configuração do módulo, clique em "Salvar".
Imagine um cenário em que temos dois parâmetros. Neste exemplo, chamaremos de "number1" e "number2". Inserimos os dados e utilizamos o seguinte código no JavaScript:
Em seguida, clicamos em "Executar". O resultado será a soma dos parâmetros, como mostra a imagem abaixo:
Neste exemplo, vamos trabalhar com um cenário assíncrono utilizando Promises no JavaScript.
Imagine que queremos processar os dados após um certo tempo. Vamos usar dois parâmetros, que estão dentro de "data", e a função retornará uma Promise.
O código abaixo simula uma operação assíncrona usando setTimeout para aguardar um segundo antes de resolver a Promise com uma mensagem e os dados fornecidos, após o clique em "Executar":
O resultado pode ser observado na imagem abaixo:
Neste exemplo, vamos criar um token JWT utilizando o módulo Javascript.
Para isso utilizaremos a função signJwtToken disponibilizada pela plataforma no contexto do módulo. Essa função recebe três parâmetros, sendo eles:
payload: Este campo é obrigatório e do tipo 'objeto'. Seu valor corresponde ao body do token.
secret: Este campo é obrigatório e do tipo 'texto'. Seu valor corresponde a chave secreta para gerar e validar o token.
A função signJwtToken recebe um payload (dados que desejamos incluir no token) e uma chave secreta para assinar o token.
Exemplo de utilização
Nos dados de entrada pode ser configurado um parâmetro ou variável caso necessário, exemplo:
Exemplo de dados de entrada:
Inserimos o código abaixo na área de Código JavaScript:
Após a execução, o retorno pode ser observado na imagem abaixo:
Em caso de erro, o retorno será diferente, conforme abaixo:
Neste exemplo vamos decodificar um token JWT para verificar e acessar os dados armazenados nele.
Utilizaremos novamente uma função disponibilizada pelo módulo chamada decodeJwtToken. Essa função espera receber dois parâmetros, sendo eles:
token: Este campo é obrigatório e do tipo 'texto'. Representa o token que será decodificado e verificado.
secret: Este campo é obrigatório e do tipo 'texto'. Representa a chave secreta utiliza para assinar o token.
Exemplo de utilização
Para a entrada, utilizamos os seguintes dados:
Inserimos o código abaixo na área de Código JavaScript:
Após a execução, o retorno pode ser observado na imagem abaixo:
Em caso de erro o retorno será diferente sendo:
Validação de Entrada: Sempre valide os dados de entrada para garantir a execução correta do código e evitar erros inesperados.
Desempenho: Evite loops infinitos ou recursões profundas que possam causar uso excessivo de memória.
.
options: Este campo é opcional e do tipo 'objeto'. Para mais detalhes sobre sua configuração, consulte a documentação da biblioteca javacript: .
Sendo que os parâmetros paylod e secret são obrigatórios, podendo ser acrescidos de outras opções. Neste nosso exemplo, utilizamos o expiresIn. Para visualizar as demais opções,.