SDK JavaScript : fonctions
Chaque méthode de aura.functions, sa signature, le rôle dont elle a besoin et ce qu'elle renvoie.
1. Obtenez le client
aura.functions est un FunctionsService. Vous ne le construisez presque jamais vous-même.
Le package @aurabase/functions est installé avec @aurabase/aurabase-js. Installez-le seul uniquement si vous composez votre propre client à partir de @aurabase/core. Il nécessite Node.js 20 ou version ultérieure et est livré avec des modules ES et CommonJS avec des déclarations de type.
Chaque méthode renvoie Promise<AuraResponse<T>>, un objet { data, error } qui ne renvoie jamais :
| Cas | data | error |
|---|---|---|
| Succès | la valeur | null |
| Succès sans contenu (204, corps vide) | null | null |
| Échec | null | un AuraError |
Testez data plutôt que error lorsque vous avez besoin de la valeur : ce n'est qu'alors que TypeScript sait que ce n'est pas null.
| Méthode | Rôle nécessaire |
|---|---|
invoke | clé publique (anon), utilisateur ou service_role |
| toutes les autres méthodes | service_role (serveur uniquement) |
2. invoquer
| Options | Par défaut | |
|---|---|---|
body | aucun | Sérialisable en JSON. Un tableau typé Blob, ArrayBuffer, FormData, URLSearchParams ou ReadableStream renvoie l'erreur invalid_body sans aucune demande. |
method | 'POST' | La méthode que la fonction voit |
path | '/' | Le chemin que la fonction voit |
headers | aucun | En-têtes donnés à la fonction. authorization, apikey, x-request-id et x-aura-* sont supprimés par la plateforme. |
timeout | client par défaut, 30 s | Millisecondes. Annule l'appel et renvoie le code timeout. |
signal | aucun | Votre propre AbortSignal. Un appel annulé renvoie le code timeout. |
responseType | 'json' | Comment data est décodé : une valeur analysée, une chaîne, un Blob ou un ArrayBuffer |
name est codé dans l'URL, donc une valeur contenant /, ? ou # ne peut pas quitter sa position. Un nom contenant de tels caractères est tout simplement introuvable.
invoke actualise d'abord une session utilisateur expirée, envoie le JWT de l'utilisateur lorsqu'il y en a un et ne réessaye jamais d'appel.
Comment l'utiliser : Invoque une fonction. Comment cela échoue : Erreurs, délais d'attente et tentatives.
3. lister et obtenir
Les deux nécessitent une clé service_role. get accepte le nom ou l'identifiant ; si une fonction est nommée comme un identifiant, le nom l'emporte. Un FunctionDef contient le code source et les variables de la fonction, c'est pourquoi une clé publique reçoit 403.
Il n'existe aucune méthode pour déployer, mettre à jour ou supprimer une fonction, ou pour écrire des secrets : utilisez l'API HTTP ou la CLI .
4. Emplois
enqueueJobrenvoie{ code: 'bad_request', status: 400 }sans aucune demande lorsquefunctionNameest vide ou uniquement des espaces, et coupe le nom dans le cas contraire.listJobsfiltre surstatus(pending,running,completed,failed,dead) et renvoie entre 1 et 500 tâches, 50 par défaut.- Il n'existe aucune méthode pour réessayer des tâches mortes : consultez la file d'attente de lettres mortes .
5. Cron
schedule a 5 ou 6 champs, en UTC. deleteCronJob prend le nom et renvoie 404 pour un nom inconnu. Il n'y a pas de getCronJob ou updateCronJob.
6. Types et erreurs
Exporté par @aurabase/aurabase-js et @aurabase/functions:
| Exporter | Qu'est-ce que c'est |
|---|---|
FunctionsHttpError | Votre fonction (ou une voie de gestion) a répondu avec une erreur. error.context tient le corps qu'il a rendu. |
FunctionsRelayError | La plateforme a échoué : réseau (status 0) ou 502, 503, 504 produit par la passerelle ou le runtime. |
isRelayStatus(status) | true pour 0, 502, 503, 504. |
FunctionsResponseType | `'json' \ |
Les deux classes d'erreur s'étendent AuraError, donc isAuraError(error) est vrai. AuraError a status, code, message, details, retryAfter et les getters isNotFound, isUnauthorized, isForbidden et isRateLimited.
Types de données, exportés par @aurabase/aurabase-js:
| Tapez | Champs |
|---|---|
FunctionDef | id, project_id, name, runtime, code, code_hash, env_vars, permissions, is_active, created_at, updated_at |
FunctionPermissions | allow_net: string[], memory_mb: number, timeout_secs: number |
Job | id, project_id, function_name, status, payload, attempts, max_attempts, error?, scheduled_at, started_at?, created_at, completed_at? |
CronJob | id, project_id, name, schedule, function_name, payload, is_active, last_run?, next_run?, created_at |
AuraResponse<T> | { data, error, meta? } |
Lorsqu'une fonction renvoie un objet JSON, data comporte également deux propriétés non énumérables, body et status, conservées pour le code écrit sur des versions antérieures. Ne comptez pas sur eux dans le nouveau code.