Acciones de código
Cuando el grafo no basta, la caja Código ejecuta un script.
Hay siete lenguajes disponibles, todos ejecutados en un entorno aislado WebAssembly incorporado: no se requiere ningún intérprete en su máquina y el script no tiene acceso a su sistema de archivos.
| Lenguaje | Motor |
|---|---|
| TypeScript | QuickJS (los tipos se eliminan en la compilación) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython compilado a WebAssembly) |
| Lua | Lua 5.4 en WebAssembly |
| Ruby | CRuby en WebAssembly |
| R | WebR |
| C# | .NET en WebAssembly con Roslyn |
El lenguaje por defecto es TypeScript.
El contrato común
Section titled “El contrato común”Sea cual sea el lenguaje, la caja expone lo mismo:
| Entradas | value (llamada input), code (cadena) |
| Salidas | result |
| Configuración | language, code, timeout, packages |
input— el valor recibido en el puerto de entrada.vars— las variables de ejecución.- La salida estándar del lenguaje (
console.log,print,puts,cat,Console.WriteLine) alimenta el registro de la ejecución. - El valor devuelto sale por el puerto
result. Un error o un tiempo de espera agotado sale porerror.
El tiempo de espera
Section titled “El tiempo de espera”timeout, en segundos: 5 por defecto, 60 como máximo. Un script que se pasa se
interrumpe y la ejecución sale por el puerto error.
Los paquetes externos
Section titled “Los paquetes externos”El campo packages acepta una lista de { nombre, versión }. Las versiones exactas sirven
como clave de caché: las dependencias se resuelven en la primera ejecución, se guardan en
caché y después se montan sin conexión en cada ejecución siguiente, incluso en CI.
| Lenguaje | Origen |
|---|---|
| TypeScript / JavaScript | npm (el conjunto se empaqueta) |
| Python | Ruedas de Python puro desde PyPI |
| Lua | LuaRocks (fuentes de Lua puro) |
| Ruby | Gems de Ruby puro |
| R | CRAN, mediante el repositorio WebAssembly de WebR |
| C# | Ninguno: solo la biblioteca estándar de .NET |
Cuándo no escribir código
Section titled “Cuándo no escribir código”Muchas necesidades ya están cubiertas por cajas, más legibles y más rápidas:
| Necesidad | Caja |
|---|---|
| Extraer un valor de una respuesta | Un selector de enlace |
| Formatear una cadena | Transformar |
| Filtrar, ordenar, agregar una lista | Listas |
| Hacer hash, codificar, firmar | Codificación |
| Comprobar una estructura | Validar un esquema |
Reserve la caja Código para la lógica realmente específica.