fg-tracker-sdk 0.9.0 → 0.10.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +30 -7
  3. package/dist/context.d.ts +7 -0
  4. package/dist/context.d.ts.map +1 -1
  5. package/dist/context.js.map +1 -1
  6. package/dist/exit-hooks.d.ts +23 -0
  7. package/dist/exit-hooks.d.ts.map +1 -0
  8. package/dist/exit-hooks.js +88 -0
  9. package/dist/exit-hooks.js.map +1 -0
  10. package/dist/global-errors.d.ts +8 -5
  11. package/dist/global-errors.d.ts.map +1 -1
  12. package/dist/global-errors.js +59 -10
  13. package/dist/global-errors.js.map +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/infra/aggregator.d.ts +5 -0
  18. package/dist/infra/aggregator.d.ts.map +1 -1
  19. package/dist/infra/aggregator.js.map +1 -1
  20. package/dist/infra/lambda.d.ts.map +1 -1
  21. package/dist/infra/lambda.js +2 -1
  22. package/dist/infra/lambda.js.map +1 -1
  23. package/dist/logs/shipper.d.ts +5 -4
  24. package/dist/logs/shipper.d.ts.map +1 -1
  25. package/dist/logs/shipper.js +170 -52
  26. package/dist/logs/shipper.js.map +1 -1
  27. package/dist/logs/types.d.ts +18 -2
  28. package/dist/logs/types.d.ts.map +1 -1
  29. package/dist/scrub.d.ts +5 -0
  30. package/dist/scrub.d.ts.map +1 -1
  31. package/dist/scrub.js +17 -1
  32. package/dist/scrub.js.map +1 -1
  33. package/dist/tracker.d.ts +101 -6
  34. package/dist/tracker.d.ts.map +1 -1
  35. package/dist/tracker.js +468 -92
  36. package/dist/tracker.js.map +1 -1
  37. package/dist/transport.d.ts +115 -0
  38. package/dist/transport.d.ts.map +1 -0
  39. package/dist/transport.js +323 -0
  40. package/dist/transport.js.map +1 -0
  41. package/dist/types.d.ts +44 -4
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +1 -1
package/dist/tracker.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { type SpanContext } from './context.js';
2
+ import { type ExitParticipant } from './exit-hooks.js';
2
3
  import { InfraAggregator } from './infra/aggregator.js';
4
+ import { type Compression } from './transport.js';
3
5
  import type { ActiveSpan, PropagationTargets, SamplingContext, Span, SpanError, SpanKind, TrackerOptions, UserRef } from './types.js';
4
6
  export interface ResolvedOptions {
5
7
  apiKey: string;
@@ -20,6 +22,13 @@ export interface ResolvedOptions {
20
22
  enabled: boolean;
21
23
  debug: boolean;
22
24
  fetch: typeof globalThis.fetch;
25
+ maxQueueBytes: number;
26
+ maxBatchBytes: number;
27
+ requestTimeoutMs: number;
28
+ shutdownTimeoutMs: number;
29
+ compression: Compression;
30
+ exitHooks: boolean;
31
+ sendUnsampledErrors: boolean;
23
32
  infraEnabled: boolean;
24
33
  infraIdleIntervalMs: number;
25
34
  autoSpanMinDurationMs: number;
@@ -36,20 +45,50 @@ export declare function shouldPropagate(targets: PropagationTargets, url: URL):
36
45
  * Núcleo do tracker: constrói spans, mantém a fila e faz o envio em lote.
37
46
  * As integrações (express, pg, next, fetch) ficam em arquivos separados e só
38
47
  * usam `startSpan` / `runInSpan`.
48
+ *
49
+ * Envio (CONTRATO.md §4.3): lotes limitados por bytes (`maxBatchBytes`) e por 1000 spans, uma
50
+ * requisição por vez, timeout de 10 s, backoff exponencial com jitter e `Retry-After` em
51
+ * rede/408/429/5xx, 413 divide o lote, outro 4xx descarta. Spans recusados num 202 parcial não
52
+ * são reenviados (a recusa se repetiria); agregados de infra em `retryableIds` voltam para a fila.
39
53
  */
40
- export declare class TrackerCore {
54
+ export declare class TrackerCore implements ExitParticipant {
41
55
  readonly options: ResolvedOptions;
42
56
  private queue;
57
+ private queueBytes;
43
58
  private timer;
44
59
  private flushing;
45
60
  private warnedFailure;
61
+ private warnedRejected;
46
62
  private stopped;
63
+ /** Prazo do encerramento em andamento (epoch ms): nenhum envio passa dele. */
64
+ /** Prazos de encerramento ativos; vale o menor (`deadline`). */
65
+ private readonly deadlines;
66
+ private get deadline();
67
+ /** Spans descartados por limite de fila ou por 4xx desde o último aviso. */
68
+ dropped: number;
69
+ private readonly sender;
70
+ /** Teto atual do corpo: começa em `maxBatchBytes` e cai pela metade a cada 413. */
71
+ private batchBytes;
72
+ /** Teto de itens por lote: só cai quando um 413 chega com o teto de bytes já no mínimo. */
73
+ private batchItems;
74
+ /** Enfileiramentos desde a última tentativa de envio na saída do processo. */
75
+ private enqueuedSinceExit;
76
+ private readonly unregisterExit;
77
+ /**
78
+ * Raízes locais (por `spanId`) de traces não amostrados em que um descendente falhou: quando
79
+ * fecham, também são enviadas (`sendUnsampledErrors`). A chave é a raiz, não o trace: duas
80
+ * requisições do mesmo trace distribuído têm raízes locais diferentes.
81
+ */
82
+ private readonly keptRoots;
47
83
  /** Spans ainda abertos, por spanId — permite `currentSpan()` a partir do contexto assíncrono. */
48
84
  private readonly active;
49
85
  /** Agregados de infra (nunca amostrados); `null` quando `infra.enabled === false`. */
50
86
  readonly infra: InfraAggregator | null;
51
87
  /** Agregados já fechados aguardando envio (retentativa após falha). */
52
88
  private infraPending;
89
+ /** Identidade dos agregados deste processo: `<emissor>:<sequência>` (dedupe no servidor). */
90
+ private readonly emitterId;
91
+ private infraSeq;
53
92
  /** A janela de infra venceu: o próximo flush fecha o agregador e envia junto dos spans. */
54
93
  private infraDue;
55
94
  private infraTimer;
@@ -63,12 +102,17 @@ export declare class TrackerCore {
63
102
  private readonly eventLoop;
64
103
  constructor(options: TrackerOptions);
65
104
  get enabled(): boolean;
105
+ /** Spans aguardando envio. */
106
+ get queueSize(): number;
107
+ get exitTimeoutMs(): number;
66
108
  currentContext(): SpanContext | undefined;
67
109
  /** Cria um span; o pai é o contexto assíncrono atual, salvo se `parent` for informado. */
68
110
  startSpan(kind: SpanKind, name: string, attributes?: Record<string, unknown>, parent?: SpanContext | null): ActiveSpanImpl;
111
+ /** Raiz local de um span ainda aberto (sobe pelos pais abertos); senão o próprio id. */
112
+ private localRootOf;
69
113
  private decorate;
70
114
  /** `ignoreTransactions` → nunca; `tracesSampler` → fração/boolean; senão `tracesSampleRate`. */
71
- decideSampling(context: SamplingContext): boolean;
115
+ decideSampling(context: SamplingContext, exclusionChecked?: boolean): boolean;
72
116
  /**
73
117
  * Continua um trace recebido de outro serviço: mesmo `traceId`, mas o span nasce como
74
118
  * raiz local (`parentSpanId` null) e guarda o pai remoto em `attributes.remoteParentSpanId`,
@@ -94,6 +138,8 @@ export declare class TrackerCore {
94
138
  traceHeaders(): Record<string, string>;
95
139
  /** Chamado por ActiveSpanImpl.end(): amostragem, ignoreErrors, scrubbing e beforeSend. */
96
140
  finishSpan(span: ActiveSpanImpl, payload: Span): void;
141
+ private isFailure;
142
+ private keepRoot;
97
143
  /**
98
144
  * Registra um span que já terminou, sem ter existido um `ActiveSpanImpl`
99
145
  * durante a execução.
@@ -117,13 +163,41 @@ export declare class TrackerCore {
117
163
  /** Executa `fn` com `span` como contexto pai das operações internas. */
118
164
  runInSpan<T>(span: ActiveSpanImpl, fn: () => T): T;
119
165
  enqueue(span: Span): void;
166
+ /** Acima dos limites (spans ou bytes), descarta os mais antigos para não crescer sem limite. */
167
+ private trimQueue;
120
168
  /**
121
169
  * Envia a fila. `includeInfra` (default `true`) também fecha a janela de infra e envia os
122
170
  * agregados no mesmo lote; o timer de spans chama com `false` para respeitar a janela de 60 s/5 s.
171
+ * Não espera o backoff: em backoff, volta na hora e o próximo flush tenta.
123
172
  */
124
173
  flush(includeInfra?: boolean): Promise<void>;
174
+ /**
175
+ * Envia o que der até `deadline`, sem esperar backoff (fim de invocação da Lambda). Aborta a
176
+ * requisição em andamento no prazo: nada fica pendurado no congelamento do ambiente.
177
+ */
178
+ flushUntil(deadline: number): Promise<void>;
125
179
  private hasInfraToSend;
126
- private doFlush;
180
+ /**
181
+ * Laço de envio. `waitBackoff` (encerramento) espera o backoff enquanto couber no prazo;
182
+ * sem ele, uma falha devolve o lote à fila e encerra o laço.
183
+ */
184
+ private drain;
185
+ /**
186
+ * Monta o próximo lote: agregados (até 500) e depois spans (até 1000), todos dentro do teto de
187
+ * bytes e do teto de itens (este só cai depois de 413 com o teto de bytes no mínimo). Sempre leva
188
+ * pelo menos um item.
189
+ */
190
+ private takeBatch;
191
+ /** Aplica o resultado do envio. Devolve `false` quando o lote voltou para a fila (backoff). */
192
+ private handleResult;
193
+ /** Devolve o lote para a frente da fila (os limites de memória continuam valendo). */
194
+ private requeue;
195
+ /**
196
+ * 202 da ingestão: `live`/`liveIntervalMs` (infra ao vivo), spans recusados (não reenvia: a
197
+ * recusa se repetiria) e agregados de infra com falha transitória (`retryableIds`, reenvia só
198
+ * esses). Devolve `true` quando algum agregado voltou para a fila.
199
+ */
200
+ private readIngestResponse;
127
201
  private pushInfraPending;
128
202
  /** Mesma política dos spans: acima do limite, descarta os agregados mais antigos. */
129
203
  private trimInfraPending;
@@ -137,9 +211,22 @@ export declare class TrackerCore {
137
211
  onShutdown(dispose: () => void): () => void;
138
212
  /** POST autenticado na API (ingest, check-ins, releases). Devolve a resposta ou `null` em falha de rede. */
139
213
  post(path: string, body: unknown, timeoutMs?: number): Promise<Response | null>;
140
- private send;
141
214
  warnOnce(message: string): void;
142
- shutdown(): Promise<void>;
215
+ hasPendingForExit(): boolean;
216
+ /** Saída do processo sem `shutdown()` (`beforeExit`, SIGTERM/SIGINT): envia com prazo, sem parar o tracker. */
217
+ flushForExit(deadline: number): Promise<void>;
218
+ /**
219
+ * Envia tudo o que der até `deadline`, esperando backoff/`Retry-After` quando cabe no prazo.
220
+ * A requisição em andamento é abortada no prazo.
221
+ */
222
+ private sendUntil;
223
+ /**
224
+ * Para os timers e envia o que restou em até `timeoutMs` (default `shutdownTimeoutMs`, 10 s).
225
+ * Com a API muda ou fora, volta no prazo; o que não saiu é descartado (e contado em `dropped`).
226
+ */
227
+ shutdown(options?: {
228
+ timeoutMs?: number;
229
+ }): Promise<void>;
143
230
  }
144
231
  export declare function userAttributes(user: UserRef | null): Record<string, unknown>;
145
232
  export declare class ActiveSpanImpl implements ActiveSpan {
@@ -149,6 +236,10 @@ export declare class ActiveSpanImpl implements ActiveSpan {
149
236
  readonly parentSpanId: string | null;
150
237
  readonly kind: SpanKind;
151
238
  readonly sampled: boolean;
239
+ /** Trace excluído por `ignoreTransactions`: nunca enviado (nem com `sendUnsampledErrors`). */
240
+ readonly ignored: boolean;
241
+ /** `spanId` da raiz local deste ramo (o próprio, quando o span é raiz local). */
242
+ readonly localRootId: string;
152
243
  name: string;
153
244
  method: string | null;
154
245
  route: string | null;
@@ -158,7 +249,11 @@ export declare class ActiveSpanImpl implements ActiveSpan {
158
249
  private readonly startedAt;
159
250
  private readonly startedPerf;
160
251
  private ended;
161
- constructor(core: TrackerCore, traceId: string, spanId: string, parentSpanId: string | null, kind: SpanKind, name: string, attributes: Record<string, unknown>, sampled?: boolean);
252
+ constructor(core: TrackerCore, traceId: string, spanId: string, parentSpanId: string | null, kind: SpanKind, name: string, attributes: Record<string, unknown>, sampled?: boolean,
253
+ /** Trace excluído por `ignoreTransactions`: nunca enviado (nem com `sendUnsampledErrors`). */
254
+ ignored?: boolean,
255
+ /** `spanId` da raiz local deste ramo (o próprio, quando o span é raiz local). */
256
+ localRootId?: string);
162
257
  setAttribute(key: string, value: unknown): void;
163
258
  setError(err: unknown): void;
164
259
  setUser(user: UserRef | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}