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