Configuração
Todas as opções que os dois clients aceitam, e como sobrescrevê-las por requisição.
Uma nota sobre convenção de nomes
O SDK mistura duas convenções de propósito:
- Opções da biblioteca são camelCase —
throwErrors,trackUser,storageKeys. - Campos que trafegam para a plataforma são snake_case —
access_token,status_code,redirect_uri.
Nada é renomeado na ida nem na volta, então o que você lê numa resposta é o que a plataforma enviou.
ClientOptions
Aceito pelo createClient. O createServerClient aceita os mesmos, menos
storage e storageKeys.
language() => LanguageOptionaldefault 'en-US'Devolve a tag BCP 47 enviada em cada requisição.
timeoutnumberOptionalAborta requisições depois desse tanto de milissegundos.
debugbooleanOptionalLoga informações de requisição e resposta no console.
headersRecord<string, string> | (() => Record<string, string>)OptionalHeaders extras mesclados em cada requisição. Passe uma função para resolvê-los por requisição.
throwErrorsbooleanOptionaldefault falseLança NulvlessException em vez de devolver { data: null, error }.
storageNulvlessStorageOptionalAdaptador para persistir os tokens de sessão. O padrão é o localStorage no
navegador e um armazenamento em memória do próprio client fora dele. Só no
client de navegador — veja Storage.
storageKeys{ token?: string; accounts?: string }OptionalSobrescreve as chaves de armazenamento. O padrão é nlv-<slug>-token e
nlv-<slug>-token-accounts. Só no navegador.
autoRefreshbooleanOptionaldefault trueRenova o access token num timer, antes de vencer, em vez de esperar uma requisição encontrá-lo vencido. Desligue quando o host controla a renovação. Só no navegador — veja SessionManager.
multiUserbooleanOptionaldefault falseMantém várias contas autenticadas e habilita auth.add / list / switch /
remove. Só no navegador.
trackUserbooleanOptionalEnvia nlv-user-tracking, para a plataforma coletar dados de dispositivo e
navegador da sessão.
Headers preguiçosos
O headers aceita uma função, resolvida a cada requisição. É assim que você
repassa um valor por requisição sem reconstruir o client:
createServerClient(url, key, {
trackUser: true,
headers: () => forwardUserHeaders(cls.get('req')),
});Opções por requisição
A maioria dos métodos recebe um objeto de opções como último argumento, que sobrescreve a configuração do client naquela chamada.
await nulvless.auth.signIn(params, {
timeout: 5000,
throwErrors: true,
headers: forwardUserHeaders(req),
});Os headers da requisição são mesclados sobre os do client sem diferenciar maiúsculas e minúsculas: um header que você passa substitui o do client ou um padrão com o mesmo nome em qualquer capitalização, então nenhum header é enviado duas vezes.
O nonce não é uma opção de requisição. Ele vai nos params do método
protegido por sudo — é assim que uma única chamada satisfaz o sudo mode sem
elevar a sessão inteira:
await nulvless.auth.sessions.revoke({ id, nonce });Ele é enviado como header nlv-sudo-nonce, nunca no corpo.
Idioma
createClient(url, key, { language: () => 'pt-BR' });A tag decide em qual idioma de template a plataforma renderiza qualquer mensagem que aquela chamada dispare — um e-mail de verificação enviado durante o cadastro, por exemplo.