SDK de JavaScript: funciones
Cada método de aura.functions, su firma, el rol que necesita y lo que devuelve.
1. Consigue el cliente
aura.functions es un FunctionsService. Casi nunca lo construyes tú mismo.
El paquete @aurabase/functions se instala con @aurabase/aurabase-js. Instálelo solo si crea su propio cliente desde @aurabase/core. Requiere Node.js 20 o posterior y envía módulos ES y CommonJS con declaraciones de tipo.
Cada método devuelve Promise<AuraResponse<T>>, un objeto { data, error } que nunca arroja:
| caso | data | error |
|---|---|---|
| Éxito | el valor | null |
| Éxito sin contenido (204, cuerpo vacío) | null | null |
| fracaso | null | un AuraError |
Pruebe data en lugar de error cuando necesite el valor: solo entonces TypeScript sabe que no es null.
| Método | Rol necesario |
|---|---|
invoke | clave pública (anon), usuario o service_role |
| cualquier otro método | service_role (solo servidor) |
2. invocar
| Opción | Predeterminado | |
|---|---|---|
body | ninguno | Serializable en JSON. Una matriz escrita Blob, ArrayBuffer, FormData, URLSearchParams o ReadableStream devuelve el error invalid_body sin ninguna solicitud. |
method | 'POST' | El método que ve la función. |
path | '/' | El camino que ve la función. |
headers | ninguno | Encabezados dados a la función. La plataforma descarta authorization, apikey, x-request-id y x-aura-*. |
timeout | valor predeterminado del cliente, 30 s | Milisegundos. Cancela la llamada y devuelve el código timeout. |
signal | ninguno | Tu propio AbortSignal. Una llamada cancelada devuelve el código timeout. |
responseType | 'json' | Cómo se decodifica data: un valor analizado, una cadena, un Blob o un ArrayBuffer |
name está codificado en la URL, por lo que un valor que contenga /, ? o # no puede abandonar su posición. Un nombre que contenga tales caracteres simplemente no se encuentra.
invoke actualiza primero una sesión de usuario caducada, envía el JWT del usuario cuando hay uno y nunca vuelve a intentar una llamada.
Cómo usarlo: Invoca una función. Cómo falla: Errores, tiempos de espera y reintentos.
3. enumerar y obtener
Ambos necesitan una clave service_role. get acepta el nombre o el id ; Si una función tiene el nombre de una identificación, el nombre gana. Un FunctionDef contiene el código fuente y las variables de la función, por eso una clave pública recibe 403.
No existe ningún método para implementar, actualizar o eliminar una función, o para escribir secretos: utilice la API HTTP o la CLI .
4. Empleos
enqueueJobdevuelve{ code: 'bad_request', status: 400 }sin ninguna solicitud cuandofunctionNameestá vacío o solo tiene espacios y, en caso contrario, recorta el nombre.listJobsfiltra enstatus(pending,running,completed,failed,dead) y devuelve entre 1 y 500 trabajos, 50 de forma predeterminada.- Reintentar trabajos inactivos no tiene ningún método: consulte la cola de mensajes no entregados .
5. Cron
schedule tiene 5 o 6 campos, en UTC. deleteCronJob toma el nombre y devuelve 404 para un nombre desconocido. No hay getCronJob o updateCronJob.
6. Tipos y errores
Exportado por @aurabase/aurabase-js y @aurabase/functions:
| Exportar | que es |
|---|---|
FunctionsHttpError | Su función (o una ruta de gestión) respondió con un error. error.context contiene el cuerpo que devolvió. |
FunctionsRelayError | La plataforma falló: red (status 0) o 502, 503, 504 producida por la puerta de enlace o el tiempo de ejecución. |
isRelayStatus(status) | true para 0, 502, 503, 504. |
FunctionsResponseType | `'json' \ |
Ambas clases de error extienden AuraError, por lo que isAuraError(error) es verdadero. AuraError tiene status, code, message, details, retryAfter y los captadores isNotFound, isUnauthorized, isForbidden y isRateLimited.
Tipos de datos, exportados por @aurabase/aurabase-js:
| Tipo | Campos |
|---|---|
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? } |
Cuando una función devuelve un objeto JSON, data también incluye dos propiedades no enumerables, body y status, que se conservan para el código escrito en versiones anteriores. No confíe en ellos en el código nuevo.