Ações de código
Quando o grafo não basta, a caixa Código executa um script.
Estão disponíveis sete linguagens, todas executadas numa sandbox WebAssembly integrada: não é necessário nenhum interpretador na sua máquina e o script não tem acesso ao seu sistema de ficheiros.
| Linguagem | Motor |
|---|---|
| TypeScript | QuickJS (os tipos são retirados na compilação) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython compilado para WebAssembly) |
| Lua | Lua 5.4 em WebAssembly |
| Ruby | CRuby em WebAssembly |
| R | WebR |
| C# | .NET em WebAssembly com Roslyn |
A linguagem predefinida é TypeScript.
O contrato comum
Section titled “O contrato comum”Qualquer que seja a linguagem, a caixa expõe a mesma coisa:
| Entradas | value (chamada input), code (cadeia) |
| Saídas | result |
| Configuração | language, code, timeout, packages |
input— o valor recebido na porta de entrada.vars— as variáveis de execução.- A saída standard da linguagem (
console.log,print,puts,cat,Console.WriteLine) alimenta o registo da execução. - O valor devolvido sai pela porta
result. Um erro ou uma expiração do tempo limite sai porerror.
O tempo limite
Section titled “O tempo limite”timeout, em segundos: 5 por predefinição, 60 no máximo. Um script que o
exceda é interrompido e a execução sai pela porta error.
Os pacotes externos
Section titled “Os pacotes externos”O campo packages aceita uma lista de { name, version }. As versões exatas
servem de chave de cache: as dependências são resolvidas na primeira execução,
guardadas em cache e depois montadas offline em cada execução seguinte —
incluindo na CI.
| Linguagem | Origem |
|---|---|
| TypeScript / JavaScript | npm (o conjunto é empacotado) |
| Python | Wheels puramente Python do PyPI |
| Lua | LuaRocks (fontes puramente Lua) |
| Ruby | Gems puramente Ruby |
| R | CRAN, através do repositório WebAssembly do WebR |
| C# | Nenhum — apenas a biblioteca standard do .NET |
Quando não escrever código
Section titled “Quando não escrever código”Muitas necessidades já estão cobertas por caixas, mais legíveis e mais rápidas:
| Necessidade | Caixa |
|---|---|
| Extrair um valor de uma resposta | Um seletor de ligação |
| Formatar uma cadeia | Transformar |
| Filtrar, ordenar, agregar uma lista | Listas |
| Fazer hash, codificar, assinar | Codificação |
| Verificar uma estrutura | Validar um esquema |
Guarde a caixa Código para a lógica realmente específica.