Logo Aurabase
aurabasedocuments
documents›Edge Functions›SDK reference

SDK JavaScript : fonctions

Chaque méthode de aura.functions, sa signature, le rôle dont elle a besoin et ce qu'elle renvoie.

8 min de lecture·Niveau référence·Révisé le 12 oct. 2026
Ce texte anglais a été généré automatiquement à partir de l’original français et n’a pas encore été relu.
Cette page a été traduite automatiquement. La version anglaise fait foi.
#
Configuration

1. Obtenez le client

aura.functions est un FunctionsService. Vous ne le construisez presque jamais vous-même.

client.tstypescript
import { createClient } from '@aurabase/aurabase-js'

const aura = createClient('https://my-app.aurabase.cloud', 'aura_anon_…')
aura.functions.invoke('hello')

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 :

Casdataerror
Succèsla valeurnull
Succès sans contenu (204, corps vide)nullnull
Échecnullun 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éthodeRôle nécessaire
invokeclé publique (anon), utilisateur ou service_role
toutes les autres méthodesservice_role (serveur uniquement)
#
Appeler

2. invoquer

signaturetypescript
invoke<T = unknown>(
  name: string,
  options?: {
    body?: unknown
    method?: string
    path?: string
    headers?: Record<string, string>
    signal?: AbortSignal
    timeout?: number
    responseType?: 'json' | 'text' | 'blob' | 'arrayBuffer'
  },
): Promise<AuraResponse<T>>
OptionsPar défaut
bodyaucunSé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
headersaucunEn-têtes donnés à la fonction. authorization, apikey, x-request-id et x-aura-* sont supprimés par la plateforme.
timeoutclient par défaut, 30 sMillisecondes. Annule l'appel et renvoie le code timeout.
signalaucunVotre 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.

#
Gérer

3. lister et obtenir

signaturestypescript
list(): Promise<AuraResponse<FunctionDef[]>>
get(nameOrId: string): Promise<AuraResponse<FunctionDef>>

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 .

#
Contexte

4. Emplois

signaturestypescript
enqueueJob(
  functionName: string,
  options?: { payload?: unknown; delaySecs?: number; maxAttempts?: number },
): Promise<AuraResponse<Job>>

listJobs(options?: { status?: string; limit?: number }): Promise<AuraResponse<Job[]>>
getJob(jobId: string): Promise<AuraResponse<Job>>
  • enqueueJob renvoie { code: 'bad_request', status: 400 } sans aucune demande lorsque functionName est vide ou uniquement des espaces, et coupe le nom dans le cas contraire.
  • listJobs filtre sur status (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 .
#
Calendrier

5. Cron

signaturestypescript
listCronJobs(): Promise<AuraResponse<CronJob[]>>
createCronJob(
  name: string,
  schedule: string,
  functionName: string,
  options?: { payload?: unknown },
): Promise<AuraResponse<CronJob>>
deleteCronJob(name: string): Promise<AuraResponse<null>>

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.

#
Référence

6. Types et erreurs

Exporté par @aurabase/aurabase-js et @aurabase/functions:

importstypescript
import {
  FunctionsHttpError,
  FunctionsRelayError,
  isRelayStatus,
  type FunctionsResponseType,
} from '@aurabase/aurabase-js'
ExporterQu'est-ce que c'est
FunctionsHttpErrorVotre fonction (ou une voie de gestion) a répondu avec une erreur. error.context tient le corps qu'il a rendu.
FunctionsRelayErrorLa 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:

TapezChamps
FunctionDefid, project_id, name, runtime, code, code_hash, env_vars, permissions, is_active, created_at, updated_at
FunctionPermissionsallow_net: string[], memory_mb: number, timeout_secs: number
Jobid, project_id, function_name, status, payload, attempts, max_attempts, error?, scheduled_at, started_at?, created_at, completed_at?
CronJobid, project_id, name, schedule, function_name, payload, is_active, last_run?, next_run?, created_at
AuraResponse<T>{ data, error, meta? }
Propriétés rétrocompatibles

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.

Dernière mise à jour · 12 oct. 2026