TypeScript-Code
TypeScript ist die Standard-Sprache des Bausteins Code. Die Typannotationen werden bei der Kompilierung entfernt, anschließend läuft der Code in der QuickJS-Engine.
Die API
Section titled “Die API”| Symbol | Rolle |
|---|---|
input | Der am Eingangsport empfangene Wert |
vars | Ein schreibgeschützter Schnappschuss der Run-Variablen |
__vars | Eine Lese-/Schreib-Ansicht: get, set, has, delete, clear, keys, toObject |
console.log / .info / .warn / .error | Schreibt ins Ausführungsprotokoll |
fetch(...) | HTTP-Aufruf, geleitet über die Firewall |
return | Der zurückgegebene Wert geht auf den Port result |
Der Rumpf wird in eine asynchrone Funktion eingebettet: return und
await funktionieren auf oberster Ebene.
Beispiel
Section titled “Beispiel”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 };Integrierte Bibliothek
Section titled “Integrierte Bibliothek”Verfügbar als globale Variable und über require(), ohne etwas in
packages zu deklarieren:
| Global | Paket |
|---|---|
_, 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 };Ein require() für ein nicht verfügbares Modul löst einen expliziten
Fehler aus.
Warten und aufrufen
Section titled “Warten und aufrufen”const reponse = await fetch(`${vars.baseUrl}/sante`);const corps = await reponse.json();if (corps.statut !== 'ok') throw new Error(`état ${corps.statut}`);return corps;Der Aufruf läuft wie jeder andere Verkehr über die Firewall und wird beim Abbruch der Ausführung oder bei Überschreitung des Zeitlimits unterbrochen.
Externe Pakete
Section titled “Externe Pakete”Deklarieren Sie sie in packages (npm); sie werden einmalig gebündelt und
anschließend offline eingebunden.
Kompatibilität mit Postman und Bruno
Section titled “Kompatibilität mit Postman und Bruno”Dieselbe Umgebung stellt die Schichten pm.* und bru.* bereit – siehe
JavaScript-Code.