fg-tracker-browser 0.12.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts CHANGED
@@ -101,6 +101,53 @@ export interface BrowserOptions {
101
101
  * não depende de `analytics`, `consent` nem Do Not Track. `true` = `{ sampleRate: 1, softNavigations: true }`.
102
102
  */
103
103
  webVitals?: boolean | WebVitalsOptions;
104
+ /**
105
+ * Eventos automáticos de navegação e engajamento (docs/trafego-eventos.md): tempo ativo por
106
+ * visualização, marcos de rolagem, navegação SPA e volta do bfcache, links externos, downloads,
107
+ * ações declaradas com `data-fg-event` e formulários marcados com `data-fg-form`. Default `false`.
108
+ * Só valem com `analytics` ligada, sob o mesmo consentimento e Do Not Track dos pageviews; não criam
109
+ * pageviews nem sessões. `true` liga todos; um objeto desliga os que vierem `false`.
110
+ * `track()` e `conversion()` funcionam com `analytics`, mesmo sem esta opção.
111
+ */
112
+ events?: boolean | EventsOptions;
113
+ }
114
+ export interface EventsOptions {
115
+ /** `page_engagement`: tempo ativo (página visível, em foco e com interação nos últimos 30 s), em ms. */
116
+ engagement?: boolean;
117
+ /** `scroll`: marcos de 25, 50, 75 e 90% da página, uma vez cada por visualização. */
118
+ scroll?: boolean;
119
+ /** `navigation`: navegação SPA (com a rota de origem) e volta do bfcache. */
120
+ navigation?: boolean;
121
+ /** `outbound_click`: clique em link para outro site (só o host). */
122
+ outboundLinks?: boolean;
123
+ /** `file_download`: clique em link de arquivo (só a extensão). `extensions` substitui a lista padrão. */
124
+ downloads?: boolean | {
125
+ extensions?: string[];
126
+ };
127
+ /** Cliques em elementos com `data-fg-event="nome"` (e até 5 `data-fg-prop-<chave>`). */
128
+ actions?: boolean;
129
+ /** `form_start` e `form_submit` dos `<form data-fg-form="id">`: nunca lê valores nem campos. */
130
+ forms?: boolean;
131
+ }
132
+ /** Valor de atributo de evento: texto curto, número finito ou booleano. */
133
+ export type EventPropValue = string | number | boolean;
134
+ export type EventProps = Record<string, EventPropValue>;
135
+ /** `auto` (SDK), `action` (`data-fg-event`), `custom` (`track`) ou `conversion` (`conversion`). */
136
+ export type TrafficEventKind = 'auto' | 'action' | 'custom' | 'conversion';
137
+ export interface TrackOptions {
138
+ /** Número do evento (quantidade, duração…), finito. */
139
+ value?: number;
140
+ /**
141
+ * Identificador estável da ocorrência (ex.: id do pedido, sem dado pessoal): o mesmo `name` + `id`
142
+ * gera o mesmo `event_id`, e a API grava uma vez dentro da janela de dedupe de 48 h (recarga da
143
+ * página de sucesso, clique duplo).
144
+ */
145
+ id?: string;
146
+ }
147
+ export interface ConversionOptions extends TrackOptions {
148
+ /** Moeda ISO 4217 (`BRL`), só com `value`. */
149
+ currency?: string;
150
+ props?: EventProps;
104
151
  }
105
152
  export interface WebVitalsOptions {
106
153
  /** Fração das cargas de documento medidas (sorteio por carga; as navegações SPA seguem a carga). Default 1. */
@@ -145,7 +192,36 @@ export interface IdentifyEvent {
145
192
  session_id: string;
146
193
  ts: string;
147
194
  }
148
- export type AnalyticsEvent = PageviewEvent | IdentifyEvent;
195
+ /**
196
+ * Evento de navegação, engajamento, ação ou conversão (`analytics[]`, docs/trafego-eventos.md). Ligado
197
+ * à visualização (`pageview_id`) e à sessão do pageview; nunca conta como pageview.
198
+ */
199
+ export interface TrafficEvent {
200
+ type: 'event';
201
+ /** 32 hex (aleatório, ou derivado de `name` + `id`): o reenvio não duplica (dedupe na API). */
202
+ event_id: string;
203
+ kind: TrafficEventKind;
204
+ /** `snake_case`, 1–64 caracteres. */
205
+ name: string;
206
+ /** Rota saneada da visualização (`sanitizePath`), sem query nem fragmento. */
207
+ url: string;
208
+ /** Visualização a que o evento pertence: o `event_id` do pageview dela. */
209
+ pageview_id: string;
210
+ /** View dos Web Vitals e dos spans da mesma página (`attributes['view.id']`), quando medida. */
211
+ view_id?: string;
212
+ value?: number;
213
+ currency?: string;
214
+ props?: EventProps;
215
+ screen: 'mobile' | 'tablet' | 'desktop' | null;
216
+ visitor_id: string;
217
+ session_id: string;
218
+ user_id?: string;
219
+ ts: string;
220
+ service?: string;
221
+ environment?: string;
222
+ release?: string;
223
+ }
224
+ export type AnalyticsEvent = PageviewEvent | IdentifyEvent | TrafficEvent;
149
225
  /** Como a view começou: carga do documento (tipo do Navigation Timing), volta do bfcache ou navegação SPA. */
150
226
  export type WebVitalsNavigationType = 'navigate' | 'reload' | 'back_forward' | 'prerender' | 'restore' | 'soft';
151
227
  /**
@@ -238,8 +314,18 @@ export interface BrowserTracker {
238
314
  page(path?: string): void;
239
315
  /** Liga o visitante anônimo ao usuário logado (`null` desliga). O id é guardado só como hash na API. */
240
316
  identify(userId: string | number | null): void;
241
- /** Atualiza o consentimento de analytics; `granted` libera a fila retida em `pending`. */
317
+ /** Atualiza o consentimento de analytics; `granted` libera a fila retida em `pending`; `denied` descarta também os eventos (`track`, automáticos) que não saíram. */
242
318
  setConsent(consent: Consent): void;
319
+ /**
320
+ * Evento próprio (`kind: 'custom'`) da visualização atual. Ignorado sem `analytics`, com Do Not Track
321
+ * ou `consent: denied`; retido como os pageviews em `pending`. Nome `snake_case`; até 10 atributos.
322
+ */
323
+ track(name: string, props?: EventProps, options?: TrackOptions): void;
324
+ /**
325
+ * Conversão concluída (`kind: 'conversion'`): chame só depois do sucesso da operação de negócio
326
+ * (pagamento aprovado, cadastro criado), não no clique ou no envio do formulário.
327
+ */
328
+ conversion(name: string, options?: ConversionOptions): void;
243
329
  /** Remove os listeners globais e o patch do fetch. */
244
330
  close(): void;
245
331
  readonly breadcrumbs: readonly Breadcrumb[];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fg-tracker-browser",
3
- "version": "0.12.1",
4
- "description": "SDK de navegador do FG Tracker: erros não tratados, breadcrumbs (cliques, navegação, console, fetch, XHR), usuário, release, propagação de trace para a API e Web Vitals",
3
+ "version": "0.14.0",
4
+ "description": "SDK de navegador do FG Tracker: erros não tratados, breadcrumbs (cliques, navegação, console, fetch, XHR), usuário, release, propagação de trace para a API, Web Vitals e eventos de navegação e engajamento",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/FORTGROUND/fg-tracker/tree/main/packages/browser#readme",
7
7
  "repository": {