Référence SDK
Le SDK @bettermeter/node est sans dépendance (utilise fetch et crypto intégrés). Nécessite Node.js 18+.
Constructeur
const bm = new BetterMeter(config);siteIdrequisapiKeyrequisapiUrlallowCustomApiUrldisabledbatchbatchIntervalhashUserIdredactPropertiesLes valeurs par défaut de sécurité sont conservatrices : les clés API sont requises pour l'ingestion SDK, les valeurs de flags sont supprimées, les propriétés personnalisées ne peuvent pas remplacer les champs SDK de confiance, les identifiants utilisateur sont hachés par défaut et les clés de propriétés sensibles sont masquées avant l'envoi.
trackCommand(options)
commandrequissubcommandflagsversiondurationMsexitCodeisCiuserIdpropertiestrackTool(options)
toolrequisclientprotocolVersiondurationMssuccesserrorTypeinputTokensoutputTokensuserIdpropertiestrackApi(options)
methodrequisendpointrequisstatusCodedurationMsuserIdpropertiesEncapsuleurs automatiques
wrapCommander(program, options?)
S'accroche au postAction de Commander.js pour suivre automatiquement toutes les commandes.
wrapMcpServer(server)
Patch dynamique de server.tool() pour encapsuler tous les gestionnaires avec chronométrage et suivi des erreurs.
expressMiddleware()
Retourne un middleware Express/Connect qui suit chaque requête sur res.end.
Détection de robots côté serveur
La plupart des robots n'exécutent pas JavaScript, donc le script de suivi ne se déclenche jamais pour eux. Utilisez reportBotVisit() dans votre middleware serveur pour détecter les robots au niveau de la requête.
// Next.js middleware
import { reportBotVisit } from "@bettermeter/node/middleware";
export function middleware(request) {
reportBotVisit(request, "my-site.com", { apiKey: "bm_..." });
// ... rest of your middleware
}requestrequissiteIdrequisoptions.apiUrloptions.apiKeyoptions.allowCustomApiUrlCompatible avec l'edge (sans dépendances Node.js). Non bloquant -- n'ajoute aucune latence aux réponses. Ignore automatiquement les ressources statiques, les routes API et les fichiers internes Next.js.
Cycle de vie
flush(): Promise<void>
Envoyer immédiatement tous les événements en file d'attente.
shutdown(): Promise<void>
Arrêter le minuteur de lot et vider les événements restants. Appeler avant la fin du processus.