Código TypeScript
O TypeScript é a linguagem predefinida da caixa Código. As anotações de tipo são retiradas na compilação e o código é depois executado no motor QuickJS.
| Símbolo | Função |
|---|---|
input | O valor recebido na porta de entrada |
vars | Um instantâneo apenas de leitura das variáveis de execução |
__vars | Uma vista de leitura / escrita: get, set, has, delete, clear, keys, toObject |
console.log / .info / .warn / .error | Escreve no registo da execução |
fetch(...) | Chamada HTTP, encaminhada pela firewall |
return | O valor devolvido sai pela porta result |
O corpo é envolvido numa função assíncrona: return e await funcionam ao
nível superior.
Exemplo
Section titled “Exemplo”interface Commande { id: number; montant: number; statut: 'payee' | 'attente' | 'annulee';}
const commandes = input as Commande[];
const payees = commandes.filter((c) => c.statut === 'payee');const total = payees.reduce((s, c) => s + c.montant, 0);
console.log(`${payees.length} commandes payées, total ${total} €`);
__vars.set('totalPaye', total);
return { nombre: payees.length, total };Biblioteca integrada
Section titled “Biblioteca integrada”Disponível como variável global e através de require(), sem nada declarar em
packages:
| Global | Pacote |
|---|---|
_, lodash | lodash |
moment | moment |
uuid | uuid |
nanoid | nanoid |
CryptoJS | crypto-js |
Ajv | ajv |
ajvFormats | ajv-formats |
chai, expect, assert | chai |
cheerio | cheerio |
xml2js | xml2js |
const signature = CryptoJS.HmacSHA256(input.corps, vars.secret).toString();return { signature };Um require() sobre um módulo não disponível lança um erro explícito.
Esperar e chamar
Section titled “Esperar e chamar”const reponse = await fetch(`${vars.baseUrl}/sante`);const corps = await reponse.json();if (corps.statut !== 'ok') throw new Error(`état ${corps.statut}`);return corps;A chamada passa pela firewall como qualquer outro tráfego, e é interrompida quando a execução para ou quando o tempo limite é excedido.
Pacotes externos
Section titled “Pacotes externos”Declare-os em packages (npm); são empacotados uma vez e depois montados
offline.
Compatibilidade com o Postman e o Bruno
Section titled “Compatibilidade com o Postman e o Bruno”O mesmo ambiente expõe as camadas pm.* e bru.* — ver
Código JavaScript.