SarutobiDocumentation

API de la librairie

Méthodes

sarutobi.init(options): void

sarutobi.capture(name, props?): void    // event métier
sarutobi.track(name, props?): void      // alias de compatibilité
sarutobi.identify(id, props?): void     // relie l'activité à une personne
sarutobi.reset(): void                  // renouvelle identité anonyme et session
sarutobi.setConsent(state): void        // granted, denied ou pending
sarutobi.pageview(path?): void          // pageview manuel
sarutobi.flush(): void                  // vide la file immédiatement
sarutobi.setContext(props | null): void // props ajoutées à tous les events suivants
sarutobi.optOut(): void                 // arrête la collecte, mémorisé localement
sarutobi.optIn(): void
sarutobi.isOptedOut(): boolean

Options

OptionTypeDéfautDescription
projectTokenstringRequis. Fourni par le dashboard.
siteIdstringAlias de compatibilité de projectToken.
hoststringsarutobi.ascencia.reInstance de collecte.
autoPageviewbooleantruePageview à l'init et à chaque changement d'URL.
trackDurationbooleantrueEnvoie un pageleave portant le temps passé.
trackVitalsbooleantrueCore Web Vitals.
trackErrorsbooleantruewindow.onerror et unhandledrejection.
hashRoutingbooleanfalseTraite le #hash comme faisant partie du chemin.
respectDntbooleanfalseNe collecte rien si navigator.doNotTrack vaut « 1 ».
excludePathsstring[][]Motifs glob ignorés côté client.
enabledbooleantrue sauf localhostInterrupteur général.
debugbooleanfalseTrace chaque event dans la console.
beforeSend(e) => e | nullDernier filtre : modifie ou annule un event.
consentgranted | denied | pendingpendingÉtat initial de collecte.
persistencelocalStorage | memory | nonelocalStoragePersistance de l'identité anonyme.
releasestringVersion du produit instrumenté.
environmentstringEnvironnement : production, staging…

Identité

Le SDK crée un anonymous_id persistant et un identifiant de session. Après authentification, identify() rattache l'activité à l'identifiant métier. Appelez reset()à la déconnexion ou lors d'un changement de compte.

sarutobi.identify("user_42", { plan: "pro" });
sarutobi.reset();

Consentement

Le SDK démarre avec consent: "pending": aucun événement ni identifiant persistant n'est créé avant setConsent("granted"). Un refus efface l'identité locale.

setContext

Pour les dimensions transverses — locale, thème, version déployée. Les propriétés sont ajoutées à tous les events suivants.

sarutobi.setContext({ locale: "fr", theme: "dark", app_version: "1.4.2" });

Les appels successifs fusionnent ; setContext(null)réinitialise tout. Il n'existe pas de suppression clé par clé : nullest une valeur de propriété légitime, lui donner en plus le sens de « supprime cette clé » rendrait impossible d'en transmettre une.

beforeSend

Dernier filtre avant l'envoi. Renvoyez nullpour annuler l'event, ou une version modifiée. Utile comme garde défensif sur un site sensible.

beforeSend: (event) => {
  // Ne jamais laisser passer un chemin contenant un identifiant
  if (/\/profil\/[^/]+$/.test(new URL(event.u).pathname)) return null;
  return event;
}

Opt-out

optOut() écrit une clé sarutobi_opt_out en localStorage. Cette API historique équivaut désormais à un consentement refusé ; optIn() réactive la collecte avec une nouvelle identité.

Poids

Environ 3,6 ko gzip pour @sarutobi/js, 3,8 ko avec l'adaptateur React, zéro dépendance runtime. Le budget est une contrainte de CI : le build échoue au-delà.