fg-tracker-browser 0.2.2 → 0.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog — fg-tracker-browser
2
2
 
3
+ ## 0.4.0
4
+
5
+ - **Erro ligado ao fetch que o causou** (CONTRATO.md §16.1). Com tracing (`tracesSampleRate`) e propagação (`propagateTraceTo`), um erro entra no trace do fetch quando há vínculo causal: o erro que o fetch lançou (inclusive via `unhandledrejection`), um erro cuja cadeia `cause` chega a ele ou à `Response`, ou `captureException(err, attrs, { cause: response })`. O erro fica no mesmo trace da API que atendeu o fetch, pendurado sob o span do fetch (`remoteParentSpanId`), e continua raiz: o agrupamento da issue não muda. Erro sem vínculo continua num trace próprio; nunca "o último trace ativo".
6
+ - `captureException` aceita um terceiro argumento opcional (`CaptureOptions`); a forma com dois argumentos continua igual.
7
+
8
+ ## 0.3.0
9
+
10
+ Transporte confiável (CONTRATO.md §4.3, §24, §25).
11
+
12
+ - **Pageviews e identify com `event_id`** (32 hex): o reenvio do lote não conta o pageview duas vezes (dedupe na API).
13
+ - **429, 408, 5xx e rede**: o lote volta inteiro para a fila (até 200 eventos de cada tipo) e o próximo envio espera backoff com jitter ou o `Retry-After`. Antes, 429 e qualquer 4xx eram descartados em silêncio e só 50 eventos voltavam. 413 divide o lote; outro 4xx descarta. Timeout de 10 s.
14
+ - **Orçamento de 64 KiB do navegador**: `keepalive` só enquanto o lote cabe no que sobra de 60 KiB; lotes maiores saem sem `keepalive`. No `pagehide`, a fila e o lote em voo sem `keepalive` saem em pedaços de até 60 KiB por `sendBeacon`, erros primeiro, até o orçamento.
15
+ - Evento acima de 48 KiB (bytes UTF-8 do JSON) é cortado com `attributes['fg.truncated'] = true`, com o teto garantido para o evento inteiro.
16
+ - Atributo circular, BigInt ou `toJSON` que lança não quebra o `fetch` instrumentado nem o `captureException` (vira `"[Circular]"`/`"[Unserializable]"`).
17
+ - No `pagehide`, os lotes de um flush em andamento que ainda não saíram também entram no beacon, na ordem de prioridade.
18
+ - `flush()` espera também o envio que outro chamador iniciou depois do seu.
19
+ - Novos exports: `fitEvent`, `parseRetryAfter`, `KEEPALIVE_BUDGET_BYTES`, `MAX_EVENT_BYTES`. Tipos `PageviewEvent`/`IdentifyEvent` ganham `event_id`.
20
+
3
21
  ## 0.2.2
4
22
 
5
23
  - Tipos e documentação passam a dizer **FG Tracker**. API e coleta de eventos não mudam.
package/README.md CHANGED
@@ -18,6 +18,9 @@ const tracker = init({
18
18
 
19
19
  tracker.setUser({ id: user.id, email: user.email });
20
20
  tracker.captureException(err, { stage: 'checkout' });
21
+ // Erro causado por um fetch: entra no trace dele (e no da API que o atendeu).
22
+ const res = await tracker.fetch('/api/pay', { method: 'POST' });
23
+ if (!res.ok) tracker.captureException(new Error('pagamento recusado', { cause: res }));
21
24
  tracker.captureMessage('cupom aplicado', 'info');
22
25
  tracker.addBreadcrumb({ type: 'custom', message: 'modal aberto' });
23
26
  ```
@@ -34,7 +37,7 @@ tracker.addBreadcrumb({ type: 'custom', message: 'modal aberto' });
34
37
  | `breadcrumbs` | tudo ligado | `{ click, navigation, console, fetch }` |
35
38
  | `maxBreadcrumbs` | `30` | anel de breadcrumbs |
36
39
  | `captureGlobalErrors` | `true` | `window.onerror` + `unhandledrejection` |
37
- | `flushIntervalMs` | `1500` | envio em lote (`keepalive`; `sendBeacon` ao sair da página) |
40
+ | `flushIntervalMs` | `1500` | envio em lote (`keepalive` dentro do orçamento de 64 KiB; `sendBeacon` ao sair da página) |
38
41
  | `analytics` | `false` | liga visitantes anônimos + pageviews (§25). Quem não passa a opção não muda nada |
39
42
  | `trackPageviews` | `= analytics` | pageviews automáticos (carga inicial, `pushState`/`replaceState`/`popstate`) |
40
43
  | `consent` | `'granted'` | `'pending'` guarda em memória sem cookies até `setConsent('granted')`; `'denied'` descarta |
@@ -43,6 +46,15 @@ tracker.addBreadcrumb({ type: 'custom', message: 'modal aberto' });
43
46
 
44
47
  Cada erro vira um span `kind: 'browser'`, `name: page:/rota/:id`, com `attributes.breadcrumbs` — o painel mostra "O que o usuário fez antes" no trace e a issue nasce agrupada por assinatura, com usuário afetado e release.
45
48
 
49
+ Com `tracesSampleRate` e `propagateTraceTo`, um erro **causado** por um fetch entra no trace dele, junto da API que o atendeu: o erro que o fetch lançou (também quando chega como rejeição não tratada), um erro com `cause` apontando para esse erro ou para a `Response`, ou `captureException(err, attrs, { cause: response })`. Sem vínculo causal (erro de UI, outro fetch), o erro fica num trace próprio: o SDK nunca usa "o último trace ativo", que daria o trace errado com fetches em paralelo.
50
+
51
+ ### Envio (CONTRATO.md §4.3)
52
+
53
+ - Rede, timeout (10 s), 408, 429 e 5xx: o lote volta para a fila (até 200 eventos de cada tipo) e o próximo envio espera um backoff com jitter (1 s → 60 s) ou o `Retry-After` da resposta. 413 divide o lote; outro 4xx descarta. O reenvio não duplica: spans e pageviews têm identidade e a API deduplica.
54
+ - O navegador aceita no máximo ~64 KiB em voo somando `fetch` com `keepalive` e `sendBeacon`; acima disso a requisição falha antes de chegar à API. O SDK só usa `keepalive` enquanto o lote cabe no que sobra de 60 KiB; lotes maiores vão sem `keepalive`.
55
+ - No `pagehide`, a fila (e um lote em voo sem `keepalive`, que o navegador cancelaria) sai em pedaços de até 60 KiB por `sendBeacon`, erros primeiro, depois pageviews, depois o resto, até o orçamento. O que não couber se perde: a página está fechando.
56
+ - Um evento acima de 48 KiB é cortado (5 últimos breadcrumbs, stack e mensagem encurtados) e leva `attributes['fg.truncated'] = true`.
57
+
46
58
  ## Tráfego (pageviews)
47
59
 
48
60
  ```ts
@@ -53,7 +65,7 @@ tracker.setConsent('granted'); // quando o banner de cookies for aceito (se
53
65
  ```
54
66
 
55
67
  - Visitante: 128 bits aleatórios no cookie first-party `fgt_vid` (1 ano, `SameSite=Lax`, `Secure` em https), com fallback em `localStorage`. Sessão: `fgt_sid`, renovada a cada evento e trocada após 30 min sem atividade.
56
- - Payload (`analytics[]` no `POST /v1/ingest`): `{ type: 'pageview', url (caminho normalizado + só utm_*), title?, referrer (só a origem externa), utm_source/medium/campaign/term/content, screen (mobile/tablet/desktop), locale, visitor_id, session_id, ts, user_id? }` e `{ type: 'identify', user_id, visitor_id, session_id, ts }`.
68
+ - Payload (`analytics[]` no `POST /v1/ingest`): `{ type: 'pageview', event_id, url (caminho normalizado + só utm_*), title?, referrer (só a origem externa), utm_source/medium/campaign/term/content, screen (mobile/tablet/desktop), locale, visitor_id, session_id, ts, user_id? }` e `{ type: 'identify', event_id, user_id, visitor_id, session_id, ts }`. O `event_id` (32 hex) é gerado no navegador: reenviar o lote não conta o pageview duas vezes.
57
69
  - `navigator.doNotTrack === '1'` desliga a analytics (erros continuam). Nenhuma PII: query string, hash, e-mail e títulos não são guardados pela API.
58
70
  - Instalação em Next.js App Router: `docs/instalar-pageviews.md`.
59
71
 
package/dist/analytics.js CHANGED
@@ -202,6 +202,7 @@ export function createAnalytics(env, options) {
202
202
  const at = Date.now();
203
203
  const event = {
204
204
  type: 'pageview',
205
+ event_id: randomId(env),
205
206
  url,
206
207
  referrer: firstPage ? referrerOrigin(doc?.referrer, loc?.origin) : null,
207
208
  ...utm,
@@ -223,7 +224,7 @@ export function createAnalytics(env, options) {
223
224
  if (!userId || consent === 'denied')
224
225
  return;
225
226
  const at = Date.now();
226
- emit({ type: 'identify', user_id: userId, visitor_id: visitorId(), session_id: sessionId(at), ts: new Date(at).toISOString() });
227
+ emit({ type: 'identify', event_id: randomId(env), user_id: userId, visitor_id: visitorId(), session_id: sessionId(at), ts: new Date(at).toISOString() });
227
228
  },
228
229
  setConsent(next) {
229
230
  consent = next;
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,29 @@
1
- import type { BrowserEnv, BrowserOptions, BrowserTracker } from './types.js';
2
- export type { AnalyticsEvent, Breadcrumb, BreadcrumbType, BrowserEnv, BrowserEvent, BrowserOptions, BrowserTracker, BrowserUser, Consent, IdentifyEvent, PageviewEvent, } from './types.js';
1
+ import type { BrowserEnv, BrowserEvent, BrowserOptions, BrowserTracker } from './types.js';
2
+ export type { AnalyticsEvent, Breadcrumb, CaptureOptions, BreadcrumbType, BrowserEnv, BrowserEvent, BrowserOptions, BrowserTracker, BrowserUser, Consent, IdentifyEvent, PageviewEvent, } from './types.js';
3
3
  /** Header da chave do projeto enviado pelo SDK (a API aceita também o legado `x-stread-track-key`). */
4
4
  export declare const API_KEY_HEADER = "x-fg-tracker-key";
5
5
  export { doNotTrackEnabled, pageUrl, referrerOrigin, screenBucket, utmParams, SESSION_COOKIE, VISITOR_COOKIE } from './analytics.js';
6
+ /**
7
+ * `fetch` com `keepalive` e `sendBeacon` têm ~64 KiB em voo, somados: acima disso o navegador
8
+ * recusa antes de chegar à API (sem 413). Lotes e o flush do `pagehide` cabem neste orçamento.
9
+ */
10
+ export declare const KEEPALIVE_BUDGET_BYTES: number;
11
+ /** Evento individual acima disto é cortado (breadcrumbs, stack, atributos) com `fg.truncated`. */
12
+ export declare const MAX_EVENT_BYTES: number;
13
+ /** `Retry-After` em segundos ou data HTTP → ms; `null` quando ausente ou inválido. */
14
+ export declare function parseRetryAfter(value: string | null | undefined, now?: number): number | null;
15
+ /**
16
+ * Cópia JSON-segura de um valor: referência circular vira `"[Circular]"`, BigInt vira string, e
17
+ * `toJSON`/getter que lança vira `"[Unserializable]"`. Roda no `finally` do fetch instrumentado e
18
+ * no `captureException`: nada aqui pode lançar para a aplicação.
19
+ */
20
+ export declare function toJsonSafe(value: unknown, seen?: WeakSet<object>): unknown;
21
+ /**
22
+ * Cabe um evento em `MAX_EVENT_BYTES` (bytes UTF-8 do JSON): primeiro só os 5 últimos
23
+ * breadcrumbs, depois stack e mensagem cortados, depois atributos curtos dentro de um orçamento
24
+ * acumulado, e por fim só a marca. Marca `attributes['fg.truncated']`. Nunca lança.
25
+ */
26
+ export declare function fitEvent(event: BrowserEvent, maxBytes?: number): BrowserEvent;
6
27
  /** `/orders/42/items/9f…` → `/orders/:id/items/:id` (mesma regra do SDK Node). */
7
28
  export declare function normalizePath(input: string | undefined | null): string;
8
29
  export declare function toError(input: unknown): {
package/dist/index.js CHANGED
@@ -13,6 +13,179 @@ const DEFAULT_MAX_BREADCRUMBS = 30;
13
13
  const MAX_QUEUE = 200;
14
14
  const MAX_STACK_LINES = 30;
15
15
  const DEDUPE_WINDOW_MS = 1000;
16
+ /** Timeout de cada POST. */
17
+ const REQUEST_TIMEOUT_MS = 10000;
18
+ /**
19
+ * `fetch` com `keepalive` e `sendBeacon` têm ~64 KiB em voo, somados: acima disso o navegador
20
+ * recusa antes de chegar à API (sem 413). Lotes e o flush do `pagehide` cabem neste orçamento.
21
+ */
22
+ export const KEEPALIVE_BUDGET_BYTES = 60 * 1024;
23
+ /** Lote normal (fetch sem keepalive quando passa do orçamento acima). */
24
+ const MAX_BATCH_BYTES = 512 * 1024;
25
+ /** Evento individual acima disto é cortado (breadcrumbs, stack, atributos) com `fg.truncated`. */
26
+ export const MAX_EVENT_BYTES = 48 * 1024;
27
+ const BACKOFF_BASE_MS = 1000;
28
+ const BACKOFF_MAX_MS = 60000;
29
+ const RETRY_AFTER_MAX_MS = 5 * 60000;
30
+ function utf8Bytes(text) {
31
+ if (typeof TextEncoder !== 'undefined')
32
+ return new TextEncoder().encode(text).length;
33
+ return unescape(encodeURIComponent(text)).length;
34
+ }
35
+ /** `Retry-After` em segundos ou data HTTP → ms; `null` quando ausente ou inválido. */
36
+ export function parseRetryAfter(value, now = Date.now()) {
37
+ if (!value)
38
+ return null;
39
+ const trimmed = value.trim();
40
+ if (/^\d+$/.test(trimmed))
41
+ return Number(trimmed) * 1000;
42
+ const at = Date.parse(trimmed);
43
+ return Number.isNaN(at) ? null : Math.max(0, at - now);
44
+ }
45
+ function truncateText(value, maxChars) {
46
+ return value.length > maxChars ? `${value.slice(0, Math.max(0, maxChars - 1))}…` : value;
47
+ }
48
+ /**
49
+ * Cópia JSON-segura de um valor: referência circular vira `"[Circular]"`, BigInt vira string, e
50
+ * `toJSON`/getter que lança vira `"[Unserializable]"`. Roda no `finally` do fetch instrumentado e
51
+ * no `captureException`: nada aqui pode lançar para a aplicação.
52
+ */
53
+ export function toJsonSafe(value, seen = new WeakSet()) {
54
+ let current = value;
55
+ if (current && typeof current === 'object' && typeof current.toJSON === 'function') {
56
+ try {
57
+ current = current.toJSON();
58
+ }
59
+ catch {
60
+ return '[Unserializable]';
61
+ }
62
+ }
63
+ if (typeof current === 'bigint')
64
+ return current.toString();
65
+ if (typeof current === 'function' || typeof current === 'symbol' || current === undefined)
66
+ return undefined;
67
+ if (typeof current === 'number' && !Number.isFinite(current))
68
+ return null;
69
+ if (!current || typeof current !== 'object')
70
+ return current;
71
+ if (seen.has(current))
72
+ return '[Circular]';
73
+ seen.add(current);
74
+ try {
75
+ if (Array.isArray(current))
76
+ return current.map((item) => toJsonSafe(item, seen) ?? null);
77
+ const out = {};
78
+ for (const key of Object.keys(current)) {
79
+ let item;
80
+ try {
81
+ item = toJsonSafe(current[key], seen);
82
+ }
83
+ catch {
84
+ item = '[Unserializable]';
85
+ }
86
+ if (item !== undefined)
87
+ out[key] = item;
88
+ }
89
+ return out;
90
+ }
91
+ catch {
92
+ return '[Unserializable]';
93
+ }
94
+ finally {
95
+ seen.delete(current);
96
+ }
97
+ }
98
+ /**
99
+ * Cabe um evento em `MAX_EVENT_BYTES` (bytes UTF-8 do JSON): primeiro só os 5 últimos
100
+ * breadcrumbs, depois stack e mensagem cortados, depois atributos curtos dentro de um orçamento
101
+ * acumulado, e por fim só a marca. Marca `attributes['fg.truncated']`. Nunca lança.
102
+ */
103
+ export function fitEvent(event, maxBytes = MAX_EVENT_BYTES) {
104
+ const safe = toJsonSafe(event);
105
+ const size = (value) => utf8Bytes(JSON.stringify(value));
106
+ if (size(safe) <= maxBytes)
107
+ return safe;
108
+ const attributes = { ...(safe.attributes ?? {}), 'fg.truncated': true };
109
+ if (Array.isArray(attributes.breadcrumbs))
110
+ attributes.breadcrumbs = attributes.breadcrumbs.slice(-5);
111
+ const error = safe.error
112
+ ? { name: truncateText(String(safe.error.name), 200), message: truncateText(String(safe.error.message), 2000), ...(safe.error.stack ? { stack: truncateText(String(safe.error.stack), 8000) } : {}) }
113
+ : null;
114
+ let out = { ...safe, attributes, error };
115
+ if (size(out) <= maxBytes)
116
+ return out;
117
+ // Atributos curtos, na ordem, enquanto couberem no que sobra depois do resto do evento.
118
+ const marker = { 'fg.truncated': true };
119
+ let budget = maxBytes - size({ ...out, attributes: marker });
120
+ const small = { ...marker };
121
+ for (const [key, value] of Object.entries(attributes)) {
122
+ if (key === 'breadcrumbs' || key === 'fg.truncated')
123
+ continue;
124
+ const json = JSON.stringify(value) ?? 'null';
125
+ const candidate = utf8Bytes(json) <= 512 ? value : typeof value === 'string' ? truncateText(value, 128) : '[truncado]';
126
+ const entry = utf8Bytes(`,${JSON.stringify(key)}:${JSON.stringify(candidate)}`);
127
+ if (entry > budget)
128
+ continue;
129
+ small[key] = candidate;
130
+ budget -= entry;
131
+ }
132
+ out = { ...out, attributes: small };
133
+ if (size(out) <= maxBytes)
134
+ return out;
135
+ // Ainda grande (nome, rota ou erro enormes): só o essencial.
136
+ out = {
137
+ ...out,
138
+ name: truncateText(String(out.name), 256),
139
+ route: out.route === null ? null : truncateText(String(out.route), 256),
140
+ attributes: marker,
141
+ error: out.error ? { name: truncateText(out.error.name, 100), message: truncateText(out.error.message, 500) } : null,
142
+ };
143
+ return out;
144
+ }
145
+ /** `{"traces":[…],"analytics":[…]}` com os itens na ordem dada (spans agrupados por trace). */
146
+ function chunkBody(items) {
147
+ const byTrace = new Map();
148
+ const analytics = [];
149
+ for (const item of items) {
150
+ if (item.type === 'analytics') {
151
+ analytics.push(item.event);
152
+ continue;
153
+ }
154
+ const { traceId, ...rest } = item.event;
155
+ const list = byTrace.get(traceId);
156
+ if (list)
157
+ list.push(rest);
158
+ else
159
+ byTrace.set(traceId, [rest]);
160
+ }
161
+ const payload = { traces: [...byTrace].map(([traceId, spans]) => ({ traceId, spans })) };
162
+ if (analytics.length > 0)
163
+ payload.analytics = analytics;
164
+ return JSON.stringify(payload);
165
+ }
166
+ /** Lotes de até `limitBytes` (um item maior que o limite vai sozinho). */
167
+ function buildChunks(items, limitBytes) {
168
+ const chunks = [];
169
+ let current = [];
170
+ let estimate = 32;
171
+ const close = () => {
172
+ if (current.length === 0)
173
+ return;
174
+ const body = chunkBody(current);
175
+ chunks.push({ items: current, body, bytes: utf8Bytes(body) });
176
+ current = [];
177
+ estimate = 32;
178
+ };
179
+ for (const item of items) {
180
+ const size = utf8Bytes(JSON.stringify(item.event)) + 48;
181
+ if (current.length > 0 && estimate + size > limitBytes)
182
+ close();
183
+ current.push(item);
184
+ estimate += size;
185
+ }
186
+ close();
187
+ return chunks;
188
+ }
16
189
  function randomHex(bytes, env) {
17
190
  const cryptoImpl = (env.window?.crypto ?? globalThis.crypto);
18
191
  const out = new Uint8Array(bytes);
@@ -48,8 +221,21 @@ export function toError(input) {
48
221
  }
49
222
  return { name: 'Error', message: typeof input === 'string' ? input : JSON.stringify(input) ?? String(input) };
50
223
  }
224
+ /** `RegExp.test` sem depender de `lastIndex` (flag `g`/`y` alternaria o resultado entre chamadas). */
225
+ function testPattern(pattern, value) {
226
+ if (!pattern.global && !pattern.sticky)
227
+ return pattern.test(value);
228
+ const previous = pattern.lastIndex;
229
+ pattern.lastIndex = 0;
230
+ try {
231
+ return pattern.test(value);
232
+ }
233
+ finally {
234
+ pattern.lastIndex = previous;
235
+ }
236
+ }
51
237
  function matches(value, patterns) {
52
- return !!patterns?.some((pattern) => (pattern instanceof RegExp ? pattern.test(value) : value.includes(pattern)));
238
+ return !!patterns?.some((pattern) => (pattern instanceof RegExp ? testPattern(pattern, value) : value.includes(pattern)));
53
239
  }
54
240
  /** Seletor curto de um elemento clicado: `button#buy.primary` ou texto. */
55
241
  export function describeTarget(target) {
@@ -73,7 +259,7 @@ export function describeTarget(target) {
73
259
  function shouldPropagate(url, targets, origin) {
74
260
  if (!targets)
75
261
  return !!origin && url.origin === origin;
76
- return targets.some((t) => (t instanceof RegExp ? t.test(url.href) : t.startsWith('http') ? url.href.startsWith(t) : url.host === t || url.hostname === t || url.hostname.endsWith(`.${t}`)));
262
+ return targets.some((t) => (t instanceof RegExp ? testPattern(t, url.href) : t.startsWith('http') ? url.href.startsWith(t) : url.host === t || url.hostname === t || url.hostname.endsWith(`.${t}`)));
77
263
  }
78
264
  export function createBrowserTracker(options, env = globalThis) {
79
265
  const endpoint = options.endpoint.replace(/\/+$/, '');
@@ -141,72 +327,202 @@ export function createBrowserTracker(options, env = globalThis) {
141
327
  }
142
328
  if (!out)
143
329
  return;
144
- queue.push(out);
330
+ // Roda no `finally` do fetch instrumentado e no `captureException`: nunca lança para a aplicação.
331
+ try {
332
+ queue.push(fitEvent(out));
333
+ }
334
+ catch (err) {
335
+ log('evento descartado: não foi possível serializar', err);
336
+ return;
337
+ }
145
338
  if (queue.length > MAX_QUEUE)
146
339
  queue.splice(0, queue.length - MAX_QUEUE);
147
340
  };
148
- const send = async (events, analyticsEvents = [], useBeacon = false) => {
149
- if (events.length === 0 && analyticsEvents.length === 0)
150
- return true;
151
- const byTrace = new Map();
152
- for (const event of events) {
153
- const { traceId, ...rest } = event;
154
- byTrace.set(traceId, [...(byTrace.get(traceId) ?? []), rest]);
155
- }
156
- const payload = { traces: [...byTrace].map(([traceId, spans]) => ({ traceId, spans })) };
157
- if (analyticsEvents.length > 0)
158
- payload.analytics = analyticsEvents;
159
- const body = JSON.stringify(payload);
160
- const url = `${endpoint}/v1/ingest?key=${encodeURIComponent(options.apiKey)}`;
161
- const nav = env.navigator ?? env.window?.navigator;
162
- if (useBeacon && nav?.sendBeacon) {
163
- try {
164
- // text/plain é "simples" para CORS: o beacon sai sem preflight; a API aceita JSON nesse content-type.
165
- if (nav.sendBeacon(url, new Blob([body], { type: 'text/plain;charset=UTF-8' })))
166
- return true;
167
- }
168
- catch {
169
- /* cai no fetch */
170
- }
171
- }
341
+ /* ------------------------------------------------------------ transporte */
342
+ // Backoff com jitter e `Retry-After` (CONTRATO.md §4.3): rede, 408, 429 e 5xx tentam de novo;
343
+ // 413 divide o lote; outro 4xx descarta. O reenvio é seguro: spans têm identidade e pageviews
344
+ // levam `event_id` (dedupe na API).
345
+ let failures = 0;
346
+ let nextAttemptAt = 0;
347
+ let keepaliveInFlight = 0;
348
+ /** Lote em voo sem `keepalive`: o navegador o cancela no unload, então o `pagehide` o reenvia. */
349
+ let inFlight = null;
350
+ /** Lotes já retirados da fila que ainda vão sair neste flush (o `pagehide` os recolhe). */
351
+ let outbox = [];
352
+ const ingestUrl = `${endpoint}/v1/ingest`;
353
+ const beaconUrl = `${endpoint}/v1/ingest?key=${encodeURIComponent(options.apiKey)}`;
354
+ const post = async (chunk, keepalive) => {
172
355
  if (!baseFetch)
173
- return false;
356
+ return { retryAfterMs: null };
357
+ const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;
358
+ const timer = controller ? setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS) : null;
359
+ timer?.unref?.();
360
+ if (keepalive)
361
+ keepaliveInFlight += chunk.bytes;
362
+ else
363
+ inFlight = chunk.items;
174
364
  try {
175
- const res = await baseFetch(`${endpoint}/v1/ingest`, {
365
+ const res = await baseFetch(ingestUrl, {
176
366
  method: 'POST',
177
367
  headers: { 'content-type': 'application/json', [API_KEY_HEADER]: options.apiKey },
178
- body,
179
- keepalive: true,
368
+ body: chunk.body,
369
+ keepalive,
370
+ ...(controller ? { signal: controller.signal } : {}),
180
371
  });
181
- log('enviados', events.length, 'eventos e', analyticsEvents.length, 'de analytics →', res.status);
182
- return res.ok || res.status < 500;
372
+ log('enviados', chunk.items.length, 'eventos →', res.status);
373
+ if (res.ok)
374
+ return 'ok';
375
+ if (res.status === 413)
376
+ return 'too_large';
377
+ if (res.status === 408 || res.status === 429 || res.status >= 500)
378
+ return { retryAfterMs: parseRetryAfter(res.headers?.get?.('retry-after')) };
379
+ return 'rejected';
183
380
  }
184
381
  catch (err) {
185
382
  log('falha no envio', err);
186
- return false;
383
+ return { retryAfterMs: null };
384
+ }
385
+ finally {
386
+ if (timer)
387
+ clearTimeout(timer);
388
+ if (keepalive)
389
+ keepaliveInFlight = Math.max(0, keepaliveInFlight - chunk.bytes);
390
+ else if (inFlight === chunk.items)
391
+ inFlight = null;
392
+ }
393
+ };
394
+ const requeue = (items) => {
395
+ const spans = items.flatMap((item) => (item.type === 'span' ? [item.event] : []));
396
+ const analyticsEvents = items.flatMap((item) => (item.type === 'analytics' ? [item.event] : []));
397
+ queue.unshift(...spans);
398
+ if (queue.length > MAX_QUEUE)
399
+ queue.splice(0, queue.length - MAX_QUEUE);
400
+ analyticsQueue.unshift(...analyticsEvents);
401
+ if (analyticsQueue.length > MAX_QUEUE)
402
+ analyticsQueue.splice(0, analyticsQueue.length - MAX_QUEUE);
403
+ };
404
+ const sendItems = async (items) => {
405
+ // `outbox` (e não uma variável local): o `pagehide` enxerga os lotes ainda não enviados.
406
+ outbox = buildChunks(items, MAX_BATCH_BYTES);
407
+ const pending = outbox;
408
+ while (pending.length > 0) {
409
+ const chunk = pending.shift();
410
+ // keepalive só enquanto cabe no orçamento do navegador; acima disso vai sem.
411
+ const keepalive = chunk.bytes + keepaliveInFlight <= KEEPALIVE_BUDGET_BYTES;
412
+ const outcome = await post(chunk, keepalive);
413
+ if (outcome === 'ok' || outcome === 'rejected') {
414
+ failures = 0;
415
+ nextAttemptAt = 0;
416
+ continue;
417
+ }
418
+ if (outcome === 'too_large') {
419
+ if (chunk.items.length > 1) {
420
+ const half = Math.ceil(chunk.items.length / 2);
421
+ pending.unshift(...buildChunks(chunk.items.slice(0, half), chunk.bytes / 2), ...buildChunks(chunk.items.slice(half), chunk.bytes / 2));
422
+ }
423
+ continue;
424
+ }
425
+ failures += 1;
426
+ const ceiling = Math.min(BACKOFF_MAX_MS, BACKOFF_BASE_MS * 2 ** (failures - 1));
427
+ const jitter = Math.round(ceiling / 2 + Math.random() * (ceiling / 2));
428
+ nextAttemptAt = Date.now() + Math.max(jitter, Math.min(RETRY_AFTER_MAX_MS, outcome.retryAfterMs ?? 0));
429
+ // Os itens voltam para as filas e deixam o `outbox`: o `pagehide` não os vê duas vezes.
430
+ requeue([...chunk.items, ...pending.splice(0).flatMap((rest) => rest.items)]);
431
+ return;
187
432
  }
188
433
  };
189
434
  let flushing = null;
190
435
  const flush = async () => {
191
- if (flushing)
436
+ // Espera o envio em andamento (e o que outro chamador iniciou depois dele).
437
+ while (flushing)
192
438
  await flushing;
193
439
  if (queue.length === 0 && analyticsQueue.length === 0)
194
440
  return;
195
- const batch = queue.splice(0, queue.length);
196
- const analyticsBatch = analyticsQueue.splice(0, analyticsQueue.length);
197
- flushing = send(batch, analyticsBatch)
198
- .then((ok) => {
199
- if (!ok) {
200
- queue.unshift(...batch.slice(-50));
201
- analyticsQueue.unshift(...analyticsBatch.slice(-100));
202
- }
203
- })
204
- .finally(() => {
441
+ if (Date.now() < nextAttemptAt)
442
+ return;
443
+ const items = [
444
+ ...queue.splice(0, queue.length).map((event) => ({ type: 'span', event })),
445
+ ...analyticsQueue.splice(0, analyticsQueue.length).map((event) => ({ type: 'analytics', event })),
446
+ ];
447
+ flushing = sendItems(items).finally(() => {
205
448
  flushing = null;
206
449
  });
207
450
  return flushing;
208
451
  };
209
- const capture = (error, attributes = {}, level = 'error') => {
452
+ /**
453
+ * `pagehide`: o que está na fila (e o lote em voo sem keepalive) sai em pedaços de até 60 KiB
454
+ * por `sendBeacon` (ou `fetch` keepalive), erros primeiro, depois analytics, depois o resto,
455
+ * até o orçamento de ~64 KiB do navegador. O que não couber se perde (a página está saindo).
456
+ */
457
+ const flushOnHide = () => {
458
+ // O lote em voo sem keepalive (o navegador o cancela), os lotes à espera neste flush e as filas.
459
+ const taken = [...(inFlight ?? []), ...outbox.splice(0).flatMap((chunk) => chunk.items)];
460
+ const pendingSpans = [...taken.flatMap((item) => (item.type === 'span' ? [item.event] : [])), ...queue.splice(0, queue.length)];
461
+ const pendingAnalytics = [...taken.flatMap((item) => (item.type === 'analytics' ? [item.event] : [])), ...analyticsQueue.splice(0, analyticsQueue.length)];
462
+ if (pendingSpans.length === 0 && pendingAnalytics.length === 0)
463
+ return;
464
+ const ordered = [
465
+ ...pendingSpans.filter((event) => event.error).map((event) => ({ type: 'span', event })),
466
+ ...pendingAnalytics.map((event) => ({ type: 'analytics', event })),
467
+ ...pendingSpans.filter((event) => !event.error).map((event) => ({ type: 'span', event })),
468
+ ];
469
+ // Seleciona, na ordem de prioridade, o que cabe no orçamento que sobra (o resto se perde).
470
+ let budget = KEEPALIVE_BUDGET_BYTES - keepaliveInFlight - 64;
471
+ const selected = [];
472
+ for (const item of ordered) {
473
+ const size = utf8Bytes(JSON.stringify(item.event)) + 48;
474
+ if (size > budget)
475
+ continue;
476
+ selected.push(item);
477
+ budget -= size;
478
+ }
479
+ const nav = env.navigator ?? env.window?.navigator;
480
+ for (const chunk of buildChunks(selected, KEEPALIVE_BUDGET_BYTES)) {
481
+ let sent = false;
482
+ if (nav?.sendBeacon) {
483
+ try {
484
+ // text/plain é "simples" para CORS: o beacon sai sem preflight; a API aceita JSON nesse content-type.
485
+ sent = nav.sendBeacon(beaconUrl, new Blob([chunk.body], { type: 'text/plain;charset=UTF-8' }));
486
+ }
487
+ catch {
488
+ sent = false;
489
+ }
490
+ }
491
+ if (!sent)
492
+ void post(chunk, true);
493
+ }
494
+ };
495
+ /**
496
+ * Fetches propagados (`traceparent` enviado) por objeto: a `Response` que o fetch devolveu e o
497
+ * erro que ele lançou apontam para o span `http.client` dele. É o único vínculo de um erro com um
498
+ * trace: nunca "o último trace ativo" (dois fetches em paralelo dariam o trace errado).
499
+ */
500
+ // Todo objeto que sai de um fetch instrumentado: o vínculo do fetch propagado, `'none'` para um
501
+ // fetch sem propagação, e `'ambiguous'` quando o mesmo objeto saiu de mais de um fetch (motivo de
502
+ // abort de um AbortController compartilhado, propagado ou não): aí o vínculo não vale.
503
+ const fetchCauses = new WeakMap();
504
+ const linkCause = (key, link) => {
505
+ fetchCauses.set(key, fetchCauses.has(key) ? 'ambiguous' : (link ?? 'none'));
506
+ };
507
+ const causeOf = (error, explicit) => {
508
+ const candidates = [explicit];
509
+ let current = error;
510
+ for (let depth = 0; depth < 5 && current && typeof current === 'object'; depth += 1) {
511
+ candidates.push(current);
512
+ current = current.cause;
513
+ }
514
+ for (const candidate of candidates) {
515
+ if (candidate && typeof candidate === 'object') {
516
+ const hit = fetchCauses.get(candidate);
517
+ if (hit === 'ambiguous')
518
+ return undefined;
519
+ if (hit && hit !== 'none')
520
+ return hit;
521
+ }
522
+ }
523
+ return undefined;
524
+ };
525
+ const capture = (error, attributes = {}, level = 'error', explicitCause) => {
210
526
  if (!enabled)
211
527
  return;
212
528
  const err = toError(error);
@@ -222,9 +538,17 @@ export function createBrowserTracker(options, env = globalThis) {
222
538
  return;
223
539
  const loc = env.location ?? env.window?.location;
224
540
  const startedAt = now();
541
+ let cause;
542
+ try {
543
+ cause = causeOf(error, explicitCause);
544
+ }
545
+ catch {
546
+ cause = undefined;
547
+ }
225
548
  enqueue({
226
- traceId: randomHex(16, env),
549
+ traceId: cause?.traceId ?? randomHex(16, env),
227
550
  spanId: randomHex(8, env),
551
+ // Continua raiz (o agrupamento da issue não muda); o waterfall a pendura sob o fetch.
228
552
  parentSpanId: null,
229
553
  kind: 'browser',
230
554
  name: `page:${loc ? normalizePath(loc.pathname) : '/'}`,
@@ -234,7 +558,13 @@ export function createBrowserTracker(options, env = globalThis) {
234
558
  startedAt,
235
559
  endedAt: startedAt,
236
560
  durationMs: 0,
237
- attributes: { ...baseAttributes(), ...attributes, level, breadcrumbs: crumbs.slice(-maxBreadcrumbs) },
561
+ attributes: {
562
+ ...baseAttributes(),
563
+ ...attributes,
564
+ level,
565
+ breadcrumbs: crumbs.slice(-maxBreadcrumbs),
566
+ ...(cause ? { remoteParentSpanId: cause.spanId, 'error.cause': 'fetch' } : {}),
567
+ },
238
568
  error: level === 'error' || level === 'warning' ? err : null,
239
569
  });
240
570
  addBreadcrumb({ type: 'error', level: level === 'info' ? 'info' : 'error', message: `${err.name}: ${err.message}`.slice(0, 200) });
@@ -261,7 +591,8 @@ export function createBrowserTracker(options, env = globalThis) {
261
591
  const rootId = randomHex(8, env);
262
592
  const spanId = randomHex(8, env);
263
593
  let request = { input, init };
264
- if (sampled && shouldPropagate(url, options.propagateTraceTo, origin)) {
594
+ const propagated = sampled && shouldPropagate(url, options.propagateTraceTo, origin);
595
+ if (propagated) {
265
596
  const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : undefined));
266
597
  headers.set('traceparent', `00-${traceId}-${spanId}-01`);
267
598
  request = { input, init: { ...init, headers } };
@@ -273,10 +604,14 @@ export function createBrowserTracker(options, env = globalThis) {
273
604
  try {
274
605
  const res = await baseFetch(request.input, request.init);
275
606
  status = res.status;
607
+ if (res && typeof res === 'object')
608
+ linkCause(res, propagated ? { traceId, spanId } : null);
276
609
  return res;
277
610
  }
278
611
  catch (err) {
279
612
  failure = toError(err);
613
+ if (err && typeof err === 'object')
614
+ linkCause(err, propagated ? { traceId, spanId } : null);
280
615
  throw err;
281
616
  }
282
617
  finally {
@@ -287,7 +622,7 @@ export function createBrowserTracker(options, env = globalThis) {
287
622
  const loc = env.location ?? env.window?.location;
288
623
  const endedAt = new Date(started + durationMs).toISOString();
289
624
  enqueue({ traceId, spanId: rootId, parentSpanId: null, kind: 'browser', name: `page:${loc ? normalizePath(loc.pathname) : '/'}`, method: null, route: loc ? normalizePath(loc.pathname) : null, statusCode: null, startedAt, endedAt, durationMs, attributes: { ...baseAttributes(), sampled: true }, error: null });
290
- enqueue({ traceId, spanId, parentSpanId: rootId, kind: 'http.client', name: `${method} ${url.origin}${normalizePath(url.pathname)}`, method, route: normalizePath(url.pathname), statusCode: status, startedAt, endedAt, durationMs, attributes: { url: url.href, host: url.host, propagated: shouldPropagate(url, options.propagateTraceTo, origin), ...(options.serviceName ? { serviceName: options.serviceName } : {}), ...(options.release ? { release: options.release } : {}) }, error: status && status >= 500 ? { name: 'HttpError', message: `HTTP ${status}` } : failure });
625
+ enqueue({ traceId, spanId, parentSpanId: rootId, kind: 'http.client', name: `${method} ${url.origin}${normalizePath(url.pathname)}`, method, route: normalizePath(url.pathname), statusCode: status, startedAt, endedAt, durationMs, attributes: { url: url.href, host: url.host, propagated, ...(options.serviceName ? { serviceName: options.serviceName } : {}), ...(options.release ? { release: options.release } : {}) }, error: status && status >= 500 ? { name: 'HttpError', message: `HTTP ${status}` } : failure });
291
626
  }
292
627
  }
293
628
  };
@@ -385,10 +720,7 @@ export function createBrowserTracker(options, env = globalThis) {
385
720
  win.fetch = original;
386
721
  });
387
722
  }
388
- const onHide = () => {
389
- if (queue.length > 0 || analyticsQueue.length > 0)
390
- void send(queue.splice(0, queue.length), analyticsQueue.splice(0, analyticsQueue.length), true);
391
- };
723
+ const onHide = () => flushOnHide();
392
724
  win.addEventListener('pagehide', onHide);
393
725
  cleanups.push(() => win.removeEventListener('pagehide', onHide));
394
726
  // Pageview da carga inicial.
@@ -405,7 +737,7 @@ export function createBrowserTracker(options, env = globalThis) {
405
737
  if (!enabled)
406
738
  (env.console ?? console).warn('[fg-tracker-browser] apiKey ausente: SDK desabilitado.');
407
739
  return {
408
- captureException: (error, attributes) => capture(error, attributes, 'error'),
740
+ captureException: (error, attributes, captureOptions) => capture(error, attributes, 'error', captureOptions?.cause),
409
741
  captureMessage: (message, level = 'info', attributes) => capture(new Error(message), { ...attributes, isMessage: true }, level),
410
742
  addBreadcrumb,
411
743
  setUser: (next) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -71,6 +71,8 @@ export type Consent = 'granted' | 'denied' | 'pending';
71
71
  /** Pageview no formato do `POST /v1/ingest` (`analytics[]`). Sem PII: caminho sem query (exceto `utm_*`), referrer só com a origem. */
72
72
  export interface PageviewEvent {
73
73
  type: 'pageview';
74
+ /** Id do evento (32 hex) gerado no navegador: o reenvio do lote não duplica o pageview (dedupe na API, §25). */
75
+ event_id: string;
74
76
  /** Caminho + `utm_*` (ex.: `/precos?utm_source=instagram`). */
75
77
  url: string;
76
78
  title?: string;
@@ -92,6 +94,7 @@ export interface PageviewEvent {
92
94
  /** Liga o visitante anônimo a um usuário (a API guarda só o hash do id). */
93
95
  export interface IdentifyEvent {
94
96
  type: 'identify';
97
+ event_id: string;
95
98
  user_id: string;
96
99
  visitor_id: string;
97
100
  session_id: string;
@@ -118,8 +121,17 @@ export interface BrowserEvent {
118
121
  stack?: string;
119
122
  } | null;
120
123
  }
124
+ /** Vínculo causal de um erro com o `fetch` que o causou (CONTRATO.md §24). */
125
+ export interface CaptureOptions {
126
+ /**
127
+ * `Response` devolvida pelo `fetch` instrumentado (ou o erro que ele lançou): o erro entra no
128
+ * trace daquele fetch, e com ele no trace da API. Sem isso, o vínculo vem do próprio erro
129
+ * (o erro que o fetch lançou) ou da cadeia `error.cause`.
130
+ */
131
+ cause?: unknown;
132
+ }
121
133
  export interface BrowserTracker {
122
- captureException(error: unknown, attributes?: Record<string, unknown>): void;
134
+ captureException(error: unknown, attributes?: Record<string, unknown>, options?: CaptureOptions): void;
123
135
  captureMessage(message: string, level?: 'info' | 'warning' | 'error', attributes?: Record<string, unknown>): void;
124
136
  addBreadcrumb(crumb: Omit<Breadcrumb, 'ts'> & {
125
137
  ts?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fg-tracker-browser",
3
- "version": "0.2.2",
3
+ "version": "0.4.0",
4
4
  "description": "SDK de navegador do FG Tracker: erros não tratados, breadcrumbs (cliques, navegação, console, fetch), usuário, release e propagação de trace para a API",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/FORTGROUND/fg-tracker/tree/main/packages/browser#readme",