Aller au contenu

Code TypeScript

TypeScript est le langage par défaut de la boîte Code. Les annotations de type sont retirées à la compilation, puis le code s’exécute dans le moteur QuickJS.

SymboleRôle
inputLa valeur reçue sur le port d’entrée
varsUn instantané en lecture seule des variables de run
__varsUne vue en lecture / écriture : get, set, has, delete, clear, keys, toObject
console.log / .info / .warn / .errorÉcrit dans le journal de l’exécution
fetch(...)Appel HTTP, routé par le pare-feu
returnLa valeur renvoyée part sur le port result

Le corps est enveloppé dans une fonction asynchrone : return et await fonctionnent au niveau supérieur.

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 };

Disponible en variable globale et via require(), sans rien déclarer dans packages :

GlobalPaquet
_, lodashlodash
momentmoment
uuiduuid
nanoidnanoid
CryptoJScrypto-js
Ajvajv
ajvFormatsajv-formats
chai, expect, assertchai
cheeriocheerio
xml2jsxml2js
const signature = CryptoJS.HmacSHA256(input.corps, vars.secret).toString();
return { signature };

Un require() sur un module non disponible lève une erreur explicite.

const reponse = await fetch(`${vars.baseUrl}/sante`);
const corps = await reponse.json();
if (corps.statut !== 'ok') throw new Error(`état ${corps.statut}`);
return corps;

L’appel passe par le pare-feu comme n’importe quel autre trafic, et il est interrompu à l’arrêt de l’exécution ou au dépassement du délai.

Déclarez-les dans packages (npm) ; ils sont empaquetés une fois puis montés hors ligne.

Le même environnement expose les couches pm.* et bru.* — voir Code JavaScript.