Referencia del SDK
El SDK @bettermeter/node no tiene dependencias (usa fetch y crypto integrados). Requiere Node.js 18+.
Constructor
const bm = new BetterMeter(config);siteIdrequeridoapiKeyrequeridoapiUrlallowCustomApiUrldisabledbatchbatchIntervalhashUserIdredactPropertiesLos valores de seguridad predeterminados son conservadores: se requieren claves API para la ingesta del SDK, se eliminan los valores de flags, las propiedades personalizadas no pueden sobrescribir campos confiables del SDK, los identificadores de usuario se hashean por defecto y las claves sensibles se redactan antes de enviar eventos.
trackCommand(options)
commandrequeridosubcommandflagsversiondurationMsexitCodeisCiuserIdpropertiestrackTool(options)
toolrequeridoclientprotocolVersiondurationMssuccesserrorTypeinputTokensoutputTokensuserIdpropertiestrackApi(options)
methodrequeridoendpointrequeridostatusCodedurationMsuserIdpropertiesEncapsuladores automáticos
wrapCommander(program, options?)
Se conecta al postAction de Commander.js para rastrear automáticamente todos los comandos.
wrapMcpServer(server)
Parche dinámico de server.tool() para encapsular todos los manejadores con cronometraje y rastreo de errores.
expressMiddleware()
Devuelve un middleware Express/Connect que rastrea cada solicitud en res.end.
Detección de bots del lado del servidor
La mayoría de los bots no ejecutan JavaScript, por lo que el script de rastreo nunca se activa para ellos. Use reportBotVisit() en su middleware de servidor para detectar bots a nivel de solicitud.
// Next.js middleware
import { reportBotVisit } from "@bettermeter/node/middleware";
export function middleware(request) {
reportBotVisit(request, "my-site.com", { apiKey: "bm_..." });
// ... rest of your middleware
}requestrequeridositeIdrequeridooptions.apiUrloptions.apiKeyoptions.allowCustomApiUrlCompatible con edge (sin dependencias de Node.js). No bloqueante -- no agrega latencia a las respuestas. Omite automáticamente recursos estáticos, rutas de API e internos de Next.js.
Ciclo de vida
flush(): Promise<void>
Enviar todos los eventos en cola inmediatamente.
shutdown(): Promise<void>
Detener el temporizador de lotes y vaciar los eventos restantes. Llamar antes de que finalice el proceso.