Skip to main content
View as Markdown

Actions de code

La famille code exécute du TypeScript personnalisé comme étape d'automatisation pour la logique que les actions déclaratives ne couvrent pas. Un operator, runTypescript. La source est une fonction nommée execute(context) dont le corps est vérifié au niveau des types au démarrage du serveur.

Prop Description
code Source TypeScript pour une fonction nommée execute(context). Dans les configurations TS, enveloppez avec String(function execute(context: CodeContext) { … }) pour l'autocomplétion de l'IDE. Requis.
inputData Paires clé-valeur résolues par gabarit transmises comme context.inputData.
input Paires clé-valeur résolues par gabarit transmises comme context.input (mêmes règles de résolution que inputData).
packages Spécificateurs de paquets npm avec épinglage de version optionnel (par ex. lodash, date-fns@3.6.0, @scope/pkg@1.2.3). Résolus/installés au démarrage de l'application ou via sovrium install.
timeout Timeout d'exécution en ms (1000–300000, par défaut 30000).

Contexte de code

La fonction execute reçoit un objet context :

Membre Description
context.trigger La charge utile du déclencheur.
context.steps Sorties des étapes précédentes, indexées par nom d'étape.
context.inputData Entrées résolues par gabarit depuis la prop inputData.
context.input Entrées résolues par gabarit depuis la prop input.
context.env Variables d'environnement (valeurs sensibles masquées dans les journaux).
context.actions Invoque des actions natives ou des modèles réutilisables depuis le code.
context.packages Les paquets npm déclarés, accessibles par nom.
context.log Journalisation structurée : info, warn, error.
- name: enrich-lead
  type: code
  operator: runTypescript
  props:
    packages: [date-fns]
    inputData: { url: '{{trigger.data.profile_url}}' }
    code: |
      async function execute(context) {
        const res = await context.actions.http.get({ url: context.inputData.url })
        context.log.info('fetched', res.status)
        return { score: res.body.score, fetchedAt: new Date().toISOString() }
      }

Pages connexes