Aller au contenu

Actions de code

Quand le graphe ne suffit pas, la boîte Code exécute un script.

Sept langages sont disponibles, tous exécutés dans un bac à sable WebAssembly embarqué : aucun interpréteur n’est requis sur votre machine, et le script n’a pas accès à votre système de fichiers.

LangageMoteur
TypeScriptQuickJS (types retirés à la compilation)
JavaScriptQuickJS
PythonPyodide (CPython compilé en WebAssembly)
LuaLua 5.4 en WebAssembly
RubyCRuby en WebAssembly
RWebR
C#.NET en WebAssembly avec Roslyn

Le langage par défaut est TypeScript.

Quel que soit le langage, la boîte expose la même chose :

Entréesvalue (nommée input), code (chaîne)
Sortiesresult
Configurationlanguage, code, timeout, packages
  • input — la valeur reçue sur le port d’entrée.
  • vars — les variables de run.
  • La sortie standard du langage (console.log, print, puts, cat, Console.WriteLine) alimente le journal de l’exécution.
  • La valeur renvoyée part sur le port result. Une erreur ou un dépassement de délai part sur error.

timeout, en secondes : 5 par défaut, 60 au maximum. Un script qui dépasse est interrompu et l’exécution part sur le port error.

Le champ packages accepte une liste de { nom, version }. Les versions exactes servent de clé de cache : les dépendances sont résolues à la première exécution, mises en cache, puis montées hors ligne à chaque exécution suivante — y compris en CI.

LangageSource
TypeScript / JavaScriptnpm (l’ensemble est empaqueté)
PythonRoues pur Python depuis PyPI
LuaLuaRocks (sources pur Lua)
RubyGems pur Ruby
RCRAN, via le dépôt WebAssembly de WebR
C#Aucun — la bibliothèque standard .NET uniquement

Beaucoup de besoins sont déjà couverts par des boîtes, plus lisibles et plus rapides :

BesoinBoîte
Extraire une valeur d’une réponseUn sélecteur de liaison
Formater une chaîneTransformer
Filtrer, trier, agréger une listeListes
Hacher, encoder, signerEncodage
Vérifier une structureValider un schéma

Gardez la boîte Code pour la logique réellement spécifique.