Pular para o conteúdo principal
O zapo é organizado em torno de um client enxuto que delega cada funcionalidade a um coordinator focado. O client é dono da conexão, da autenticação e do emissor de eventos; os coordinators são donos da lógica de domínio.

O client

O WaClient é o único ponto de entrada. Você o constrói com opções e um logger opcional, e então chama connect():
O client em si expõe apenas uma superfície pequena: ciclo de vida da conexão (connect, disconnect, logout), consultas de estado (getState, getCredentials) e o emissor de eventos tipado (on, once, off). Todo o resto fica atrás de um getter de coordinator.

Coordinators

Cada coordinator é acessado por um getter no client. Eles são conectados de forma lazy na construção e é seguro manter referências a eles. Como os tipos dos coordinators são exportados a partir da raiz do pacote, você pode anotá-los em TypeScript:

Fluxo de dados

  • Entrada: os frames são decodificados em binary nodes, parseados e normalizados em payloads de eventos tipados, e então emitidos (message, receipt, group, …).
  • Saída: sua chamada a um coordinator (por exemplo, client.message.send) é construída em um node de protocolo, criptografada e escrita no socket; o coordinator resolve assim que o servidor envia o ack.

Convenções de engenharia

Se você ler o código-fonte, estas convenções são onipresentes e explicam boa parte do formato da API:
  • Uint8Array em todo lugar para dados binários (Buffer é evitado), com views zero-copy nos caminhos quentes.
  • Apenas named exports — não há default exports.
  • Sem enums — as constantes usam Object.freeze({ ... } as const), expostas como os objetos WA_*.
  • Estruturas em memória limitadas para evitar crescimento ilimitado em processos de longa duração.

A seguir

Autenticação

Pareamento com QR ou um código de 8 caracteres, e o ciclo de vida das credenciais.

Eventos

O mapa completo de eventos e como escutá-los.

Stores

Providers, domínios e backends.

Configuração

Cada campo de WaClientOptions explicado.
Última modificação em 28 de maio de 2026