fg-tracker-sdk 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.
Files changed (91) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +375 -0
  3. package/dist/cli/release.d.ts +3 -0
  4. package/dist/cli/release.d.ts.map +1 -0
  5. package/dist/cli/release.js +134 -0
  6. package/dist/cli/release.js.map +1 -0
  7. package/dist/cli/sourcemaps.d.ts +3 -0
  8. package/dist/cli/sourcemaps.d.ts.map +1 -0
  9. package/dist/cli/sourcemaps.js +98 -0
  10. package/dist/cli/sourcemaps.js.map +1 -0
  11. package/dist/constants.d.ts +28 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/constants.js +35 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/context.d.ts +22 -0
  16. package/dist/context.d.ts.map +1 -0
  17. package/dist/context.js +42 -0
  18. package/dist/context.js.map +1 -0
  19. package/dist/database.d.ts +29 -0
  20. package/dist/database.d.ts.map +1 -0
  21. package/dist/database.js +157 -0
  22. package/dist/database.js.map +1 -0
  23. package/dist/express.d.ts +17 -0
  24. package/dist/express.d.ts.map +1 -0
  25. package/dist/express.js +125 -0
  26. package/dist/express.js.map +1 -0
  27. package/dist/fetch.d.ts +9 -0
  28. package/dist/fetch.d.ts.map +1 -0
  29. package/dist/fetch.js +78 -0
  30. package/dist/fetch.js.map +1 -0
  31. package/dist/global-errors.d.ts +11 -0
  32. package/dist/global-errors.d.ts.map +1 -0
  33. package/dist/global-errors.js +35 -0
  34. package/dist/global-errors.js.map +1 -0
  35. package/dist/index.d.ts +29 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +154 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/logs/nest-logger.d.ts +40 -0
  40. package/dist/logs/nest-logger.d.ts.map +1 -0
  41. package/dist/logs/nest-logger.js +99 -0
  42. package/dist/logs/nest-logger.js.map +1 -0
  43. package/dist/logs/pino.d.ts +24 -0
  44. package/dist/logs/pino.d.ts.map +1 -0
  45. package/dist/logs/pino.js +62 -0
  46. package/dist/logs/pino.js.map +1 -0
  47. package/dist/logs/shipper.d.ts +18 -0
  48. package/dist/logs/shipper.d.ts.map +1 -0
  49. package/dist/logs/shipper.js +217 -0
  50. package/dist/logs/shipper.js.map +1 -0
  51. package/dist/logs/types.d.ts +84 -0
  52. package/dist/logs/types.d.ts.map +1 -0
  53. package/dist/logs/types.js +47 -0
  54. package/dist/logs/types.js.map +1 -0
  55. package/dist/logs/winston.d.ts +31 -0
  56. package/dist/logs/winston.d.ts.map +1 -0
  57. package/dist/logs/winston.js +57 -0
  58. package/dist/logs/winston.js.map +1 -0
  59. package/dist/monitors.d.ts +8 -0
  60. package/dist/monitors.d.ts.map +1 -0
  61. package/dist/monitors.js +69 -0
  62. package/dist/monitors.js.map +1 -0
  63. package/dist/next.d.ts +9 -0
  64. package/dist/next.d.ts.map +1 -0
  65. package/dist/next.js +55 -0
  66. package/dist/next.js.map +1 -0
  67. package/dist/normalize.d.ts +12 -0
  68. package/dist/normalize.d.ts.map +1 -0
  69. package/dist/normalize.js +113 -0
  70. package/dist/normalize.js.map +1 -0
  71. package/dist/pg.d.ts +9 -0
  72. package/dist/pg.d.ts.map +1 -0
  73. package/dist/pg.js +83 -0
  74. package/dist/pg.js.map +1 -0
  75. package/dist/releases.d.ts +5 -0
  76. package/dist/releases.d.ts.map +1 -0
  77. package/dist/releases.js +30 -0
  78. package/dist/releases.js.map +1 -0
  79. package/dist/scrub.d.ts +11 -0
  80. package/dist/scrub.d.ts.map +1 -0
  81. package/dist/scrub.js +34 -0
  82. package/dist/scrub.js.map +1 -0
  83. package/dist/tracker.d.ts +99 -0
  84. package/dist/tracker.d.ts.map +1 -0
  85. package/dist/tracker.js +400 -0
  86. package/dist/tracker.js.map +1 -0
  87. package/dist/types.d.ts +264 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +2 -0
  90. package/dist/types.js.map +1 -0
  91. package/package.json +98 -0
@@ -0,0 +1,264 @@
1
+ import type { DatabaseInstrumentationOptions, DatabaseOperation, PostgresSqlLike } from "./database.js";
2
+ /**
3
+ * Tipos públicos do fg-tracker-sdk. Espelham as seções 5, 15–18 do docs/CONTRATO.md
4
+ * e o body de `POST /v1/ingest` (seção 4).
5
+ */
6
+ export type SpanKind = 'http.server' | 'db.query' | 'http.client' | 'custom' | 'browser';
7
+ export interface SpanError {
8
+ name: string;
9
+ message: string;
10
+ stack?: string;
11
+ }
12
+ /** Span finalizado, no formato enviado ao endpoint de ingestão. */
13
+ export interface Span {
14
+ traceId: string;
15
+ spanId: string;
16
+ parentSpanId: string | null;
17
+ kind: SpanKind;
18
+ name: string;
19
+ method: string | null;
20
+ route: string | null;
21
+ statusCode: number | null;
22
+ startedAt: string;
23
+ endedAt: string;
24
+ durationMs: number;
25
+ attributes: Record<string, unknown>;
26
+ error: SpanError | null;
27
+ }
28
+ /** Usuário associado à requisição corrente (impacto por usuário, CONTRATO.md §17). */
29
+ export interface UserRef {
30
+ id: string | number;
31
+ email?: string;
32
+ name?: string;
33
+ }
34
+ /** Para quais destinos o `traceparent` é enviado: `true` = todos, lista = hosts/prefixos/regex. */
35
+ export type PropagationTargets = boolean | (string | RegExp)[];
36
+ export interface TrackerOptions {
37
+ /** Chave do projeto (`stk_...`). Sem chave o tracker fica desabilitado. */
38
+ apiKey: string;
39
+ /** URL base da API do FG Tracker. Default `http://localhost:4050` (`DEFAULT_ENDPOINT`). */
40
+ endpoint?: string;
41
+ /** Nome do serviço instrumentado; vai em `attributes.serviceName` de todo span. */
42
+ serviceName?: string;
43
+ /**
44
+ * Versão em execução (`attributes.release`). Default: detectada de FG_TRACKER_RELEASE (legado: STREAD_TRACK_RELEASE),
45
+ * VERCEL_GIT_COMMIT_SHA, RAILWAY_GIT_COMMIT_SHA, GITHUB_SHA, SOURCE_VERSION, COMMIT_SHA
46
+ * ou GIT_COMMIT — formatada como `${serviceName}@${sha}`. `false` desliga.
47
+ */
48
+ release?: string | false;
49
+ /** Ambiente (`attributes.environment`). Default: FG_TRACKER_ENV (legado: STREAD_TRACK_ENV), APP_ENV ou NODE_ENV. */
50
+ environment?: string | false;
51
+ /** Destinos que recebem o header `traceparent` no `fetch` instrumentado. Default `true` (todos). */
52
+ propagateTraceTo?: PropagationTargets;
53
+ /** Substitui `globalThis.fetch` pelo fetch instrumentado (chamadas a provedores viram spans). Default `false`. */
54
+ instrumentGlobalFetch?: boolean;
55
+ /**
56
+ * Registra `uncaughtException` (via `uncaughtExceptionMonitor`, sem alterar o comportamento
57
+ * do processo) e `unhandledRejection` como spans `custom` com erro. Default `false`.
58
+ */
59
+ captureGlobalErrors?: boolean;
60
+ /**
61
+ * Fração de traces enviados (0..1). Default 1. A decisão é tomada no span raiz e
62
+ * propagada aos filhos e a outros serviços (flag do `traceparent`).
63
+ */
64
+ tracesSampleRate?: number;
65
+ /** Decide por trace (raiz): devolve fração 0..1 ou boolean. Vence `tracesSampleRate`. */
66
+ tracesSampler?: (context: SamplingContext) => number | boolean;
67
+ /** Raízes (ex.: `GET /health`) cujos traces nunca são enviados. Strings casam por substring; RegExp por teste. */
68
+ ignoreTransactions?: (string | RegExp)[];
69
+ /** Erros (nome ou mensagem) que não viram issue: o span é enviado sem `error`. */
70
+ ignoreErrors?: (string | RegExp)[];
71
+ /** Último filtro antes do envio: altere o span ou devolva `null` para descartá-lo. */
72
+ beforeSend?: (span: Span) => Span | null;
73
+ /**
74
+ * Chaves de `attributes` (em qualquer profundidade) cujos valores viram `[Filtered]`.
75
+ * Default: password, passwd, secret, token, authorization, cookie, api_key, apiKey, credit_card, cvv, ssn.
76
+ * `false` desliga; um array substitui a lista.
77
+ */
78
+ scrubFields?: string[] | false;
79
+ /** Intervalo de envio em ms. Default 2000. */
80
+ flushIntervalMs?: number;
81
+ /** Tamanho do lote que dispara envio imediato. Default 200. */
82
+ maxBatchSize?: number;
83
+ /** Tamanho máximo da fila antes de descartar os spans mais antigos. Default 5000. */
84
+ maxQueueSize?: number;
85
+ /** Desliga a instrumentação sem remover o código. Default `true`. */
86
+ enabled?: boolean;
87
+ /** Loga cada flush no console. Default `false`. */
88
+ debug?: boolean;
89
+ /** Implementação de fetch usada para o envio. Default `globalThis.fetch`. */
90
+ fetch?: typeof globalThis.fetch;
91
+ }
92
+ /** Contexto passado ao `tracesSampler` (span raiz). */
93
+ export interface SamplingContext {
94
+ kind: SpanKind;
95
+ name: string;
96
+ attributes: Record<string, unknown>;
97
+ /** Decisão herdada de um `traceparent` recebido, quando houver. */
98
+ parentSampled?: boolean;
99
+ }
100
+ /** Handle de um span em andamento (recebido pelo callback de `tracker.span`). */
101
+ export interface ActiveSpan {
102
+ readonly traceId: string;
103
+ readonly spanId: string;
104
+ readonly parentSpanId: string | null;
105
+ readonly kind: SpanKind;
106
+ name: string;
107
+ method: string | null;
108
+ route: string | null;
109
+ statusCode: number | null;
110
+ attributes: Record<string, unknown>;
111
+ error: SpanError | null;
112
+ /** `false` quando o trace foi descartado pela amostragem. */
113
+ readonly sampled: boolean;
114
+ setAttribute(key: string, value: unknown): void;
115
+ setError(err: unknown): void;
116
+ /** Associa um usuário ao span (`user.id`, `user.email`, `user.name`). */
117
+ setUser(user: UserRef | null): void;
118
+ /** Encerra o span e o enfileira para envio. Idempotente. */
119
+ end(): void;
120
+ }
121
+ /** Objeto mínimo que o middleware Express precisa (compatível com express e NestJS platform-express). */
122
+ export interface ExpressLikeRequest {
123
+ method?: string;
124
+ url?: string;
125
+ originalUrl?: string;
126
+ baseUrl?: string;
127
+ ip?: string;
128
+ route?: {
129
+ path?: unknown;
130
+ };
131
+ headers: Record<string, string | string[] | undefined>;
132
+ socket?: {
133
+ remoteAddress?: string;
134
+ };
135
+ /** Preenchido por middlewares de autenticação (passport, Nest guards); lido no fim da resposta. */
136
+ user?: unknown;
137
+ }
138
+ export interface ExpressLikeResponse {
139
+ statusCode: number;
140
+ on(event: 'finish' | 'close', listener: () => void): unknown;
141
+ once(event: 'finish' | 'close', listener: () => void): unknown;
142
+ setHeader?(name: string, value: string): unknown;
143
+ getHeader?(name: string): unknown;
144
+ }
145
+ export type ExpressMiddleware = (req: ExpressLikeRequest, res: ExpressLikeResponse, next: (err?: unknown) => void) => void;
146
+ export type ExpressErrorMiddleware = (err: unknown, req: ExpressLikeRequest, res: ExpressLikeResponse, next: (err?: unknown) => void) => void;
147
+ export interface ExpressOptions {
148
+ /**
149
+ * Extrai o usuário da requisição ao fim da resposta (depois da autenticação).
150
+ * Default: `req.user.id` / `req.user.email` quando existirem. `false` desliga.
151
+ */
152
+ identify?: ((req: ExpressLikeRequest) => UserRef | null | undefined) | false;
153
+ /** Continua traces recebidos via `traceparent`. Default `true`. */
154
+ continueTrace?: boolean;
155
+ }
156
+ /** Subconjunto de `pg.Pool` que o SDK instrumenta. */
157
+ export interface PgPoolLike {
158
+ query: (...args: any[]) => any;
159
+ }
160
+ export type NextRouteHandler<TCtx = unknown> = (req: Request, ctx: TCtx) => Response | Promise<Response>;
161
+ export interface CheckInOptions {
162
+ /** Nome legível (usado ao criar o monitor no primeiro check-in). */
163
+ name?: string;
164
+ /** Intervalo esperado entre execuções, em segundos (ex.: 86400 para diário). */
165
+ intervalSeconds?: number;
166
+ /** Tolerância além do intervalo antes de "job não rodou". Default 300 s. */
167
+ graceSeconds?: number;
168
+ /** Descrição humana do agendamento (ex.: "todo dia às 03:00"). */
169
+ schedule?: string;
170
+ /** Crontab de 5 campos (ex.: `0 3 * * *`); vence `intervalSeconds`. */
171
+ cron?: string;
172
+ /** Fuso IANA do crontab (ex.: `America/Sao_Paulo`). */
173
+ timezone?: string;
174
+ /** Tempo máximo de execução em segundos: acima disso o job é marcado como timeout. */
175
+ maxRuntimeSeconds?: number;
176
+ }
177
+ export interface CheckInHandle {
178
+ /** Marca o fim com sucesso (duração calculada automaticamente). */
179
+ ok(): Promise<void>;
180
+ /** Marca o fim com falha. */
181
+ fail(error?: unknown): Promise<void>;
182
+ }
183
+ export interface ReleaseCommitInput {
184
+ sha: string;
185
+ message: string;
186
+ author?: string;
187
+ authoredAt?: string;
188
+ url?: string;
189
+ pullRequest?: number;
190
+ files?: {
191
+ path: string;
192
+ additions?: number;
193
+ deletions?: number;
194
+ ranges?: [number, number][];
195
+ }[];
196
+ }
197
+ export interface RegisterReleaseInput {
198
+ /** Default: a release configurada/detectada no tracker. */
199
+ version?: string;
200
+ environment?: string;
201
+ commitSha?: string;
202
+ previousVersion?: string;
203
+ repository?: string;
204
+ url?: string;
205
+ notes?: string;
206
+ deployedAt?: string;
207
+ commits?: ReleaseCommitInput[];
208
+ }
209
+ export interface Tracker {
210
+ instrumentPostgres<T extends PostgresSqlLike>(client: T): T;
211
+ instrumentDatabase<T extends object>(client: T, options: DatabaseInstrumentationOptions): T;
212
+ traceDatabase<T>(operation: DatabaseOperation, fn: () => T | Promise<T>): Promise<T>;
213
+ traceDatabaseSync<T>(operation: DatabaseOperation, fn: () => T): T;
214
+ /** Middleware para Express / NestJS (platform-express). Cria o span raiz `http.server` por request. */
215
+ express(options?: ExpressOptions): ExpressMiddleware;
216
+ /**
217
+ * Middleware de erro do Express (registre DEPOIS das rotas): grava a exceção real no span
218
+ * da requisição, para o agrupamento de issues distinguir bugs diferentes com o mesmo 500.
219
+ */
220
+ expressErrorHandler(): ExpressErrorMiddleware;
221
+ /** Instrumenta `pool.query` de um `pg.Pool` (ou objeto compatível) gerando spans `db.query`. */
222
+ instrumentPg<T extends PgPoolLike>(pool: T): T;
223
+ /** Cria um span filho do contexto atual e executa `fn` dentro dele. */
224
+ span<T>(kind: SpanKind, name: string, fn: (span: ActiveSpan) => T | Promise<T>, attributes?: Record<string, unknown>): Promise<T>;
225
+ /** Envolve um route handler do Next.js (App Router) num span `http.server`. */
226
+ wrapNextRoute<TCtx = unknown>(handler: NextRouteHandler<TCtx>): NextRouteHandler<TCtx>;
227
+ /** Retorna um `fetch` instrumentado que gera spans `http.client` e propaga `traceparent`. */
228
+ wrapFetch(fetchImpl?: typeof globalThis.fetch): typeof globalThis.fetch;
229
+ /** Substitui `globalThis.fetch` pelo fetch instrumentado (idempotente). Retorna o `fetch` original. */
230
+ instrumentGlobalFetch(): typeof globalThis.fetch;
231
+ /** Span ativo no contexto assíncrono atual (se houver). */
232
+ currentSpan(): ActiveSpan | undefined;
233
+ /** Span raiz (requisição) do contexto atual, se houver. */
234
+ rootSpan(): ActiveSpan | undefined;
235
+ /** `traceId` do contexto atual (para logs, headers de resposta, correlação). */
236
+ currentTraceId(): string | undefined;
237
+ /** Headers de propagação (`traceparent`) do contexto atual, para clientes HTTP não instrumentados. */
238
+ traceHeaders(): Record<string, string>;
239
+ /** Associa o usuário à requisição corrente (span raiz). */
240
+ setUser(user: UserRef | null): void;
241
+ /**
242
+ * Registra uma exceção no span raiz da requisição corrente; fora de uma requisição, cria
243
+ * um span `custom` com o erro. Use em filtros de exceção (NestJS) ou `catch` de jobs.
244
+ */
245
+ captureException(err: unknown, attributes?: Record<string, unknown>): void;
246
+ /** Inicia um span manual (o chamador deve chamar `end()`). Não altera o contexto assíncrono. */
247
+ startSpan(kind: SpanKind, name: string, attributes?: Record<string, unknown>): ActiveSpan;
248
+ /** Executa um job com check-in de início/fim no monitor `slug` (CONTRATO.md §18). */
249
+ checkIn<T>(slug: string, fn: () => T | Promise<T>, options?: CheckInOptions): Promise<T>;
250
+ /** Check-in manual: `start()` envia in_progress e devolve `ok()`/`fail()`. */
251
+ monitor(slug: string, options?: CheckInOptions): {
252
+ start(): Promise<CheckInHandle>;
253
+ };
254
+ /** Registra uma release/deploy (`POST /v1/releases`). O CLI `fg-tracker-release` faz isso a partir do git. */
255
+ registerRelease(input?: RegisterReleaseInput): Promise<boolean>;
256
+ /** Release e ambiente efetivos deste tracker. */
257
+ readonly release: string | undefined;
258
+ readonly environment: string | undefined;
259
+ /** Envia imediatamente tudo o que está na fila. */
260
+ flush(): Promise<void>;
261
+ /** Para o timer e envia o que restou. */
262
+ shutdown(): Promise<void>;
263
+ }
264
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "fg-tracker-sdk",
3
+ "version": "0.4.0",
4
+ "description": "SDK de instrumentação Node para o FG Tracker (Express, NestJS, Next.js, pg, fetch), tracing distribuído, releases, check-ins de jobs e envio de logs (pino, winston, NestJS Logger)",
5
+ "license": "UNLICENSED",
6
+ "homepage": "https://github.com/FORTGROUND/fg-tracker/tree/main/packages/sdk#readme",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/FORTGROUND/fg-tracker.git",
10
+ "directory": "packages/sdk"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/FORTGROUND/fg-tracker/issues"
14
+ },
15
+ "keywords": [
16
+ "fg-tracker",
17
+ "apm",
18
+ "tracing",
19
+ "distributed-tracing",
20
+ "observability",
21
+ "monitoring",
22
+ "express",
23
+ "nestjs",
24
+ "nextjs",
25
+ "pino",
26
+ "winston",
27
+ "releases",
28
+ "sourcemaps"
29
+ ],
30
+ "bin": {
31
+ "fg-tracker-release": "dist/cli/release.js",
32
+ "fg-tracker-sourcemaps": "dist/cli/sourcemaps.js",
33
+ "stread-track-release": "dist/cli/release.js",
34
+ "stread-track-sourcemaps": "dist/cli/sourcemaps.js"
35
+ },
36
+ "type": "module",
37
+ "main": "./dist/index.js",
38
+ "types": "./dist/index.d.ts",
39
+ "exports": {
40
+ ".": {
41
+ "types": "./dist/index.d.ts",
42
+ "import": "./dist/index.js",
43
+ "default": "./dist/index.js"
44
+ },
45
+ "./pino": {
46
+ "types": "./dist/logs/pino.d.ts",
47
+ "import": "./dist/logs/pino.js",
48
+ "default": "./dist/logs/pino.js"
49
+ },
50
+ "./winston": {
51
+ "types": "./dist/logs/winston.d.ts",
52
+ "import": "./dist/logs/winston.js",
53
+ "default": "./dist/logs/winston.js"
54
+ }
55
+ },
56
+ "files": [
57
+ "dist",
58
+ "README.md",
59
+ "CHANGELOG.md"
60
+ ],
61
+ "sideEffects": false,
62
+ "engines": {
63
+ "node": ">=20"
64
+ },
65
+ "scripts": {
66
+ "build": "tsc -p tsconfig.json && chmod +x dist/cli/release.js dist/cli/sourcemaps.js",
67
+ "typecheck": "tsc -p tsconfig.json --noEmit",
68
+ "clean": "rm -rf dist",
69
+ "test": "node --test test/*.test.mjs",
70
+ "prepack": "npm run clean && npm run build"
71
+ },
72
+ "peerDependencies": {
73
+ "pg": ">=8",
74
+ "winston-transport": ">=4"
75
+ },
76
+ "peerDependenciesMeta": {
77
+ "pg": {
78
+ "optional": true
79
+ },
80
+ "winston-transport": {
81
+ "optional": true
82
+ }
83
+ },
84
+ "devDependencies": {
85
+ "@types/node": "^24.3.0",
86
+ "pino": "^10.3.1",
87
+ "postgres": "3.4.9",
88
+ "typescript": "^5.9.2",
89
+ "winston": "^3.19.0",
90
+ "winston-transport": "^4.9.0"
91
+ },
92
+ "dependencies": {
93
+ "pino-abstract-transport": "^3.0.0"
94
+ },
95
+ "publishConfig": {
96
+ "access": "public"
97
+ }
98
+ }