SDK JavaScript: funções
Cada método de aura.functions, sua assinatura, a função necessária e o que retorna.
1. Conquiste o cliente
aura.functions é um FunctionsService. Você quase nunca constrói sozinho.
O pacote @aurabase/functions é instalado com @aurabase/aurabase-js. Instale-o sozinho apenas se você compor seu próprio cliente a partir de @aurabase/core. Requer Node.js 20 ou posterior e vem com módulos ES e CommonJS com declarações de tipo.
Todo método retorna Promise<AuraResponse<T>>, um objeto { data, error } que nunca lança:
| Caso | data | error |
|---|---|---|
| Sucesso | o valor | null |
| Sucesso sem conteúdo (204, corpo vazio) | null | null |
| Falha | null | um AuraError |
Teste data em vez de error quando precisar do valor: só então TypeScript sabe que não é null.
| Método | Função necessária |
|---|---|
invoke | chave pública (anon), usuário ou service_role |
| qualquer outro método | service_role (somente servidor) |
2. invocar
| Opção | Padrão | |
|---|---|---|
body | nenhum | Serializável em JSON. Um Blob, ArrayBuffer, array digitado, FormData, URLSearchParams ou ReadableStream retorna o erro invalid_body sem qualquer solicitação. |
method | 'POST' | O método que a função vê |
path | '/' | O caminho que a função vê |
headers | nenhum | Cabeçalhos dados à função. authorization, apikey, x-request-id e x-aura-* são descartados pela plataforma. |
timeout | padrão do cliente, 30 s | Milissegundos. Cancela a chamada e retorna o código timeout. |
signal | nenhum | Seu próprio AbortSignal. Uma chamada cancelada retorna o código timeout. |
responseType | 'json' | Como data é decodificado: um valor analisado, uma string, um Blob ou um ArrayBuffer |
name é codificado na URL, portanto, um valor contendo /, ? ou # não pode sair de sua posição. Um nome que contenha tais caracteres simplesmente não é encontrado.
invoke atualiza primeiro uma sessão de usuário expirada, envia o JWT do usuário quando há uma e nunca tenta novamente uma chamada.
Como usar: Invoque uma função. Como falha: Erros, tempos limites e novas tentativas.
3. liste e obtenha
Ambos precisam de uma chave service_role. get aceita o nome ou o id ; se uma função for nomeada como um id, o nome vence. Um FunctionDef contém o código fonte e as variáveis da função, por isso uma chave pública recebe 403.
Não há método para implantar, atualizar ou excluir uma função ou para escrever segredos: use a HTTP API ou a CLI.
4. Empregos
enqueueJobretorna{ code: 'bad_request', status: 400 }sem qualquer solicitação quandofunctionNameestá vazio ou apenas espaços, e corta o nome caso contrário.listJobsfiltrastatus(pending,running,completed,failed,dead) e retorna entre 1 e 500 trabalhos, 50 por padrão.- A repetição de trabalhos inativos não tem método: consulte a fila de mensagens mortas .
5. Cron
schedule possui 5 ou 6 campos, em UTC. deleteCronJob pega o nome e retorna 404 para um nome desconhecido. Não há getCronJob ou updateCronJob.
6. Tipos e erros
Exportado por @aurabase/aurabase-js e @aurabase/functions:
| Exportar | O que é isso |
|---|---|
FunctionsHttpError | Sua função (ou rota de gerenciamento) respondeu com um erro. error.context contém o corpo retornado. |
FunctionsRelayError | A plataforma falhou: rede (status 0) ou 502, 503, 504 produzida pelo gateway ou pelo tempo de execução. |
isRelayStatus(status) | true para 0, 502, 503, 504. |
FunctionsResponseType | `'json' \ |
Ambas as classes de erro estendem AuraError, então isAuraError(error) é verdadeiro. AuraError tem status, code, message, details, retryAfter, e os getters isNotFound, isUnauthorized, isForbidden e isRateLimited.
Tipos de dados, 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? } |
Quando uma função retorna um objeto JSON, data também carrega duas propriedades não enumeráveis, body e status, mantidas para código escrito em versões mais antigas. Não confie neles em novos códigos.