npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

acq-sdk

v1.2.1

Published

SDK oficial para a API da ACQ

Downloads

21

Readme

ACQ SDK

npm version TypeScript License: MIT

SDK oficial em Node.js para a API da ACQ. Oferece funcionalidades para renderização de HTML em imagens, gerenciamento de emails temporários e monitoramento em tempo real via WebSocket.

📦 Instalação

npm install acq-sdk

ou

yarn add acq-sdk

ou

pnpm add acq-sdk

🔑 Configuração

Cliente HTTP

import { AcqClient } from "acq-sdk";

const client = new AcqClient({
  apiKey: "sua-api-key-aqui",
  // Opcionais:
  baseUrl: "https://api.acq.lat", // URL base customizada
  timeout: 30000, // Timeout em milissegundos
});

Cliente WebSocket

import { AcqSocketClient, SocketEvents } from "acq-sdk";

const socketClient = new AcqSocketClient({
  apiKey: "sua-api-key-aqui",
  // Opcionais:
  email: "[email protected]", // Email para monitorar, se não informado, todos os emails serão monitorados.
  // email: ["[email protected]", "[email protected]"] para monitorar múltiplos emails
  baseUrl: "wss://ws.acq.lat", // URL base customizada
  timeout: 30000, // Timeout em milissegundos
});

📧 Gerenciamento de Emails

Listar emails

const emails = await client.mails.list();
console.log("Seus emails:", emails);
// Retorna: [{ email: '[email protected]', expiraEm: '2025-07-16T23:37:29.111Z' }]

Criar novo email

// Email com domínio padrão
const novoEmail = await client.mails.create();
console.log("Novo email:", novoEmail.mail);

// Email com domínio específico
const emailCustom = await client.mails.create({
  domain: "acq.lat",
});
console.log("Email customizado:", emailCustom.mail);

Verificar mensagens

const mensagens = await client.mails.getMessages({
  mail: "[email protected]",
});

console.log(`Email: ${mensagens.email}`);
console.log(`Total de mensagens: ${mensagens.total}`);
console.log("Mensagens:", mensagens.messages);

Deletar email

const resultado = await client.mails.delete("[email protected]");
console.log("Email deletado:", resultado.deleted_email);

Deletar mensagens

const resultado = await client.mails.deleteMessages("[email protected]");
console.log(`${resultado.deleted_count} mensagens deletadas`);

🔌 WebSocket - Monitoramento em Tempo Real

Conectar e ouvir eventos

import { AcqSocketClient, SocketEvents } from "acq-sdk";

const socketClient = new AcqSocketClient({
  apiKey: "sua-api-key-aqui",
  email: "[email protected]",
});

// Conectar ao WebSocket
await socketClient.connect();
console.log("Conectado ao WebSocket!");

// Ouvir novos emails
socketClient.on(SocketEvents.NEW, data => {
  console.log("Nova mensagem recebida:", data);
  // data contém informações da nova mensagem
});

// Ouvir eventos de conexão
socketClient.on(SocketEvents.CONNECT, () => {
  console.log("WebSocket conectado!");
});

// Ouvir eventos de desconexão
socketClient.on(SocketEvents.DISCONNECT, () => {
  console.log("WebSocket desconectado!");
});

Gerenciar conexão

// Conectar
await socketClient.connect();

// Desconectar quando necessário
await socketClient.disconnect();

Exemplo prático - Monitor de emails

import { AcqClient, AcqSocketClient, SocketEvents } from "acq-sdk";

async function monitorarEmail() {
  const client = new AcqClient({
    apiKey: "sua-api-key-aqui",
  });

  // Criar um novo email
  const novoEmail = await client.mails.create();
  console.log("Email criado:", novoEmail.mail);

  // Conectar ao WebSocket para monitorar
  const socketClient = new AcqSocketClient({
    apiKey: "sua-api-key-aqui",
    email: novoEmail.mail,
  });

  await socketClient.connect();

  // Ouvir novos emails
  socketClient.on(SocketEvents.NEW, mensagem => {
    console.log("Nova mensagem:", {
      from: mensagem.from,
      subject: mensagem.subject,
      body: mensagem.body,
    });
  });

  console.log("Monitorando emails em tempo real...");

  // Manter ativo por 5 minutos
  setTimeout(
    async () => {
      await socketClient.disconnect();
      console.log("Monitoramento finalizado");
    },
    5 * 60 * 1000
  );
}

monitorarEmail().catch(console.error);

🎨 Renderização de HTML

Renderizar HTML em imagem

import { writeFileSync } from "fs";

const html = `
  <!DOCTYPE html>
  <html>
    <head>
      <style>
        body {
          font-family: Arial, sans-serif;
          background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
          color: white;
          padding: 40px;
          text-align: center;
        }
        .card {
          background: rgba(255, 255, 255, 0.1);
          border-radius: 15px;
          padding: 30px;
          backdrop-filter: blur(10px);
        }
      </style>
    </head>
    <body>
      <div class="card">
        <h1>🚀 Minha Imagem</h1>
        <p>Gerada com ACQ SDK!</p>
      </div>
    </body>
  </html>
`;

const imagemBuffer = await client.render.htmlToImage({ html });

// Salvar como arquivo
writeFileSync("minha-imagem.png", imagemBuffer);

// Ou usar em uma aplicação web
// res.set('Content-Type', 'image/png');
// res.send(imagemBuffer);

🛡️ Tratamento de Erros

O SDK fornece tipos específicos de erro para diferentes situações:

import { AcqApiError, AcqValidationError, AcqConfigError } from "acq-sdk";

try {
  await client.mails.create();
} catch (error) {
  if (error instanceof AcqApiError) {
    console.error("Erro da API:", error.message);
    console.error("Código:", error.code);
    console.error("Status HTTP:", error.status);
  } else if (error instanceof AcqValidationError) {
    console.error("Erro de validação:", error.message);
  } else if (error instanceof AcqConfigError) {
    console.error("Erro de configuração:", error.message);
  }
}

Erros específicos do WebSocket

import { AcqSocketClient, SocketEvents } from "acq-sdk";

const socketClient = new AcqSocketClient({
  apiKey: "sua-api-key-aqui",
  email: "[email protected]",
});

try {
  await socketClient.connect();
} catch (error) {
  console.error("Erro ao conectar WebSocket:", error);
}

// Ouvir erros de conexão
socketClient.on("connect_error", error => {
  console.error("Erro de conexão:", error);
});

📚 Tipos e Interfaces

Tipos principais

import type {
  AcqClientConfig,
  AcqSocketConfig,
  EmailInfo,
  EmailMessage,
  MailboxResponse,
  CreateEmailResponse,
  DeleteEmailResponse,
  DeleteMessagesResponse,
  RenderOptions,
  CreateEmailOptions,
  GetMessagesOptions,
  AcqSocket,
  SocketEvents,
} from "acq-sdk";

// Configuração do cliente HTTP
const config: AcqClientConfig = {
  apiKey: "sua-chave",
  baseUrl: "https://api.acq.lat", // opcional
  timeout: 30000, // opcional
};

// Configuração do cliente WebSocket
const socketConfig: AcqSocketConfig = {
  apiKey: "sua-chave",
  email: "[email protected]",
  baseUrl: "wss://ws.acq.lat", // opcional
  timeout: 30000, // opcional
};

// Eventos disponíveis
const eventos = {
  CONNECT: SocketEvents.CONNECT,
  DISCONNECT: SocketEvents.DISCONNECT,
  NEW: SocketEvents.NEW,
};

📄 Licença

MIT © ACQ Team

🆘 Suporte


Feito com ❤️ pela equipe ACQ