Código TypeScript
TypeScript es el lenguaje por defecto de la caja Código. Las anotaciones de tipo se eliminan en la compilación y después el código se ejecuta en el motor QuickJS.
La API
Section titled “La API”| Símbolo | Función |
|---|---|
input | El valor recibido en el puerto de entrada |
vars | Una instantánea de solo lectura de las variables de ejecución |
__vars | Una vista de lectura / escritura: get, set, has, delete, clear, keys, toObject |
console.log / .info / .warn / .error | Escribe en el registro de la ejecución |
fetch(...) | Llamada HTTP, encaminada por el cortafuegos |
return | El valor devuelto sale por el puerto result |
El cuerpo se envuelve en una función asíncrona: return y await funcionan en el nivel
superior.
Ejemplo
Section titled “Ejemplo”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”Disponible como variable global y mediante require(), sin necesidad de declarar nada en
packages:
| Global | Paquete |
|---|---|
_, 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 };Un require() sobre un módulo no disponible lanza un error explícito.
Esperar y llamar
Section titled “Esperar y llamar”const reponse = await fetch(`${vars.baseUrl}/sante`);const corps = await reponse.json();if (corps.statut !== 'ok') throw new Error(`état ${corps.statut}`);return corps;La llamada pasa por el cortafuegos igual que cualquier otro tráfico, y se interrumpe al detener la ejecución o al agotarse el tiempo de espera.
Paquetes externos
Section titled “Paquetes externos”Declárelos en packages (npm); se empaquetan una vez y después se montan sin conexión.
Compatibilidad con Postman y Bruno
Section titled “Compatibilidad con Postman y Bruno”El mismo entorno expone las capas pm.* y bru.*: consulte
Código JavaScript.