@jichio/core est la seule source de vérité pour le comportement
offline-first, le batching et l’enrichissement des événements. Les adaptateurs ne
font que du wiring autour de cette bibliothèque.
Installation
source par défaut est sdk-core.
API publique
Chaque événement est enrichi automatiquement :
eventId, anonymousId,
sessionId, timestamp, source, et des namespaces dans properties
(sdk, session, page, …). Voir Modèle d’événement.
Configuration
string
requis
Clé projet, envoyée dans l’en-tête
X-API-Key.string
requis
Base URL d’ingestion. Le SDK y ajoute
/v1/events.string
défaut:"sdk-core"
Identifiant du connecteur, injecté dans chaque événement. Fourni par l’adaptateur.
boolean
défaut:"true"
Active l’auto-capture DOM (pageview MPA initial + clics).
boolean
défaut:"false"
Logs console ; en
true, l’événement identify est aussi enfilé dans la file.number
défaut:"5000"
Intervalle entre deux flushs de la file.
number
défaut:"10"
Seuil d’événements déclenchant un flush anticipé.
number
défaut:"10"
Nombre maximal de tentatives d’envoi d’un batch.
number
défaut:"1000"
Délai de base du backoff exponentiel.
number
défaut:"60000"
Plafond du délai de backoff.
Auto-capture DOM
Gérée dans le core pour tout environnement navigateur (React, WordPress, vanilla). Le scope est volontairement restreint en V1 :Hors scope V1 : scroll depth, soumissions de formulaire auto-détectées,
capture d’erreurs JS, session replay. Tout cela reste trackable manuellement via
track().autoCapture: false) et gérer eux-mêmes certains événements.
Offline-first
- Chaque événement est écrit immédiatement dans une file locale (IndexedDB, fallback localStorage) avant toute tentative d’envoi.
- Chaque événement porte un UUID client → déduplication côté ingestion
(
ON CONFLICT DO NOTHING), rejouable sans doublon. - Envoi par batch (intervalle N secondes ou seuil N événements).
- Échec réseau : backoff exponentiel ; purge uniquement après ACK
(
eventIdsacceptés). - Flush sur
visibilitychange/pagehide(best-effort,keepalive/sendBeacon).
Structure des modules
Build
- Formats ESM + UMD (
AnalyticsCoreglobal), bundle minifié visé < 5 Ko gzip. - Le UMD sert WordPress (
<script>) et vanilla. - Aucune dépendance vers
apps/api,apps/webou un adaptateur framework.