Code
Exécute votre JavaScript dans le service isolé, pour tous les éléments ou pour chacun.
Fonctionnement
Même contrat que les nœuds JavaScript de l'espace développeur : un module qui exporte « run(ctx) ». Le code s'exécute dans QuickJS (WebAssembly) dans le conteneur isolé : ni Node.js, ni système de fichiers, ni variables d'environnement, ni secrets, ni modules npm. Mémoire 64 Mo, durée et journaux limités.
Paramètres
| Paramètre | Type | Détail |
|---|---|---|
| Langage | choix | Valeurs : JavaScript. |
| Exécution | choix | Valeurs : Une fois pour tous les éléments, Une fois par élément. |
| Codeobligatoire | code JavaScript | — |
| Domaines autorisés (ctx.http) | texte | Vide : aucun accès réseau. Adresses publiques uniquement. |
| Durée maximale (secondes) | nombre | 30 s au plus. |
Données reçues et renvoyées
- Entréectx.input : liste des objets JSON (tous les éléments) ou l'objet de l'élément (par élément) ; ctx.items en mode « tous » ; ctx.itemIndex en mode « par élément » ; ctx.log, ctx.http (si des domaines sont autorisés).
- SortieMode tous : une liste d'objets (un élément par objet) ou un objet. Mode par élément : un objet, une liste d'objets, ou null pour écarter l'élément.
Erreurs
Erreur levée par le code (fichier et ligne), délai dépassé, mémoire insuffisante, sortie qui n'est pas du JSON objet, service isolé indisponible. Jamais relancé automatiquement.
À savoir. Les journaux (ctx.log.info, console.log) sont enregistrés avec l'étape, secrets exclus.
Exemple
Paramètres d'un bloc prêt à l'emploi. Dans l'éditeur, l'onglet Aide du bloc applique cet exemple en un clic.
{
"mode": "all",
"code": "export async function run(ctx) {\n const total = ctx.input.reduce((s, x) => s + (Number(x.montant) || 0), 0);\n ctx.log.info(\"Total calculé\", total);\n return [{ total, nombre: ctx.input.length }];\n}\n"
}