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/normalize.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createHash } from 'node:crypto';
1
2
  const UUID_RE = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;
2
3
  const HEX_RE = /^[0-9a-f]{16,}$/i;
3
4
  const NUM_RE = /^\d+$/;
@@ -26,15 +27,83 @@ export function normalizePath(input) {
26
27
  const out = segments.join('/') || '/';
27
28
  return out.length > 1 && out.endsWith('/') ? out.slice(0, -1) : out;
28
29
  }
30
+ /**
31
+ * `url.full` (semconv OTel) sem credenciais e sem os valores da query string, que costumam
32
+ * levar tokens e assinaturas: `https://api.x.com/v1/a?token=REDACTED&page=REDACTED`.
33
+ */
34
+ export function redactedUrl(url) {
35
+ let search = '';
36
+ if (url.search) {
37
+ const keys = [];
38
+ for (const key of url.searchParams.keys())
39
+ keys.push(`${encodeURIComponent(key)}=REDACTED`);
40
+ search = keys.length > 0 ? `?${keys.join('&')}` : '';
41
+ }
42
+ return `${url.protocol}//${url.host}${url.pathname}${search}`;
43
+ }
44
+ /** Atributos semconv OTel de uma chamada HTTP de saída (aditivos aos históricos `url`/`host`). */
45
+ export function httpClientSemconv(url) {
46
+ const port = url.port ? Number(url.port) : url.protocol === 'https:' ? 443 : url.protocol === 'http:' ? 80 : undefined;
47
+ return { 'url.full': redactedUrl(url), 'server.address': url.hostname, ...(port ? { 'server.port': port } : {}) };
48
+ }
29
49
  /**
30
50
  * Normaliza SQL para agrupar queries com o mesmo "shape":
31
51
  * números → `?`, strings → `'?'`, `IN (...)` → `IN (?)`, espaços colapsados,
32
52
  * minúsculas, no máximo 200 caracteres.
33
53
  */
34
- function redactSqlLiterals(sql) {
54
+ /**
55
+ * Abertura de dollar-quoting: `$$` ou `$tag$`, com a tag nas regras de identificador do Postgres
56
+ * (letra, `_` ou qualquer caractere não ASCII no início; depois também dígitos; nunca `$`). Tags
57
+ * com acento (`$é$`) são válidas e precisam ser reconhecidas, senão o conteúdo sai como texto.
58
+ * Sticky (`y`): testada na posição do `$`, sem copiar o resto do texto.
59
+ */
60
+ const DOLLAR_TAG = /\$(?:[A-Za-z_\u0080-\uffff][A-Za-z_0-9\u0080-\uffff]*)?\$/y;
61
+ /**
62
+ * Identificador (e palavra-chave) inteiro, com os `$` internos (`a$b$c`), e parâmetro (`$1`), como
63
+ * no analisador do Postgres: o `$` só abre dollar-quoting no início de um token. Depois de um
64
+ * parâmetro ele abre (`$1$t$…$t$`), e o conteúdo é ocultado.
65
+ */
66
+ const IDENTIFIER = /[A-Za-z_\u0080-\uffff][A-Za-z0-9_$\u0080-\uffff]*/y;
67
+ const PARAM = /\$[0-9]+/y;
68
+ function sticky(pattern, text, at) {
69
+ pattern.lastIndex = at;
70
+ return pattern.exec(text)?.[0];
71
+ }
72
+ /**
73
+ * `stopAtAmbiguous`: o texto que sai do processo para no literal comum com barra invertida (ver
74
+ * abaixo); a análise local dos comandos (transações) lê até o fim, pela leitura padrão do servidor.
75
+ */
76
+ function redactSqlLiterals(sql, stopAtAmbiguous = true) {
35
77
  let result = '';
36
78
  let i = 0;
79
+ /** Fim do último identificador e se ele era só `E`: `E'…'` colado é o literal com escape. */
80
+ let identifierEnd = -1;
81
+ let identifierIsE = false;
37
82
  while (i < sql.length) {
83
+ // Identificador entre aspas duplas ("a'b"): copiado como está, para uma aspa simples dentro dele
84
+ // não abrir um literal.
85
+ if (sql[i] === '"') {
86
+ let end = i + 1;
87
+ let closed = false;
88
+ while (end < sql.length) {
89
+ if (sql[end] === '"' && sql[end + 1] === '"') {
90
+ end += 2;
91
+ continue;
92
+ }
93
+ if (sql[end++] === '"') {
94
+ closed = true;
95
+ break;
96
+ }
97
+ }
98
+ // Sem fechamento, o resto pode conter literais que o servidor nunca leu como tais: corta.
99
+ if (!closed && stopAtAmbiguous) {
100
+ result += ' …';
101
+ break;
102
+ }
103
+ result += sql.slice(i, end);
104
+ i = end;
105
+ continue;
106
+ }
38
107
  if (sql.startsWith('--', i)) {
39
108
  const end = sql.indexOf('\n', i);
40
109
  i = end < 0 ? sql.length : end;
@@ -60,11 +129,21 @@ function redactSqlLiterals(sql) {
60
129
  continue;
61
130
  }
62
131
  if (sql[i] === "'") {
132
+ // `E'...'`: a barra invertida escapa. Num literal comum ela é um caractere como outro
133
+ // (standard_conforming_strings, padrão desde o PostgreSQL 9.1), mas com a opção desligada
134
+ // escapa: o fim do literal depende da configuração do servidor.
135
+ // Lido da entrada, não do `result` acumulado: ler o fim de uma string concatenada a materializa
136
+ // inteira, e isso a cada literal tornava um INSERT em lote quadrático (40 mil linhas: 2 s).
137
+ const escaped = identifierIsE && identifierEnd === i;
63
138
  i++;
139
+ let backslash = false;
64
140
  while (i < sql.length) {
65
141
  if (sql[i] === '\\') {
66
- i += 2;
67
- continue;
142
+ backslash = true;
143
+ if (escaped) {
144
+ i += 2;
145
+ continue;
146
+ }
68
147
  }
69
148
  if (sql[i] === "'" && sql[i + 1] === "'") {
70
149
  i += 2;
@@ -74,9 +153,30 @@ function redactSqlLiterals(sql) {
74
153
  break;
75
154
  }
76
155
  result += "'?'";
156
+ // Literal comum com barra invertida: as duas leituras dão fins diferentes, e o que vem depois
157
+ // pode ser outro literal. Para nunca expor um valor, o resto do texto não é enviado.
158
+ if (backslash && !escaped && stopAtAmbiguous) {
159
+ result += ' …';
160
+ break;
161
+ }
162
+ continue;
163
+ }
164
+ const identifier = sticky(IDENTIFIER, sql, i);
165
+ if (identifier) {
166
+ result += identifier;
167
+ i += identifier.length;
168
+ identifierEnd = i;
169
+ identifierIsE = identifier === 'E' || identifier === 'e';
170
+ continue;
171
+ }
172
+ // `$1`: parâmetro. Um `$` logo depois dele começa outro token e pode abrir dollar-quoting.
173
+ const param = sql[i] === '$' ? sticky(PARAM, sql, i) : undefined;
174
+ if (param) {
175
+ result += param;
176
+ i += param.length;
77
177
  continue;
78
178
  }
79
- const dollar = sql[i] === '$' ? /^(\$[a-zA-Z_][a-zA-Z_0-9]*\$|\$\$)/.exec(sql.slice(i))?.[0] : undefined;
179
+ const dollar = sql[i] === '$' ? sticky(DOLLAR_TAG, sql, i) : undefined;
80
180
  if (dollar) {
81
181
  const end = sql.indexOf(dollar, i + dollar.length);
82
182
  i = end < 0 ? sql.length : end + dollar.length;
@@ -87,15 +187,70 @@ function redactSqlLiterals(sql) {
87
187
  }
88
188
  return result;
89
189
  }
90
- export function normalizeSql(sql) {
190
+ /**
191
+ * Comandos do SQL, sem literais, para a análise local (BEGIN/COMMIT/ROLLBACK em vários comandos).
192
+ * Lê o texto inteiro pela leitura padrão (`standard_conforming_strings`); nunca é enviado.
193
+ */
194
+ export function sqlCommandText(sql) {
195
+ return redactSqlLiterals(sql, false).replace(/\s+/g, ' ').trim().toLowerCase();
196
+ }
197
+ /**
198
+ * `IN (?, ?, '?')` → `IN (?)`: itens separados por espaço e no máximo uma vírgula, vírgula final
199
+ * opcional. Escrita sem ambiguidade: depois de cada item o espaço só tem um jeito de ser consumido.
200
+ * A forma anterior (`\((?:\s*ITEM\s*,?\s*)+\)`) reconhecia a mesma linguagem, mas dividia o espaço
201
+ * entre os `\s*` de duas repetições vizinhas: uma lista que não fecha só com itens
202
+ * (`in (1, 1, …, outra_coluna)`, SQL válido) custava 2ⁿ passos antes de falhar e prendia o event
203
+ * loop da aplicação a cada query (26 itens: 2,6 s).
204
+ */
205
+ const IN_LIST = /\bin\s*\(\s*(?:(?:\?|'\?')\s*(?:,\s*)?)+\)/gi;
206
+ /** SQL normalizado inteiro (sem o corte de 200 caracteres do nome do span). */
207
+ export function normalizeSqlFull(sql) {
91
208
  let s = redactSqlLiterals(sql);
92
209
  s = s.replace(/\$\d+/g, '?');
93
210
  s = s.replace(/\b\d+(?:\.\d+)?\b/g, '?');
94
- s = s.replace(/\bin\s*\((?:\s*(?:\?|'\?')\s*,?\s*)+\)/gi, 'IN (?)');
95
- s = s.replace(/\s+/g, ' ').trim().toLowerCase();
96
- if (s.length > 200)
97
- s = s.slice(0, 200);
98
- return s;
211
+ s = s.replace(IN_LIST, 'IN (?)');
212
+ return s.replace(/\s+/g, ' ').trim().toLowerCase();
213
+ }
214
+ export function normalizeSql(sql) {
215
+ const s = normalizeSqlFull(sql);
216
+ return s.length > 200 ? s.slice(0, 200) : s;
217
+ }
218
+ /** `db.query.text` vai até este tamanho (o resto é cortado); o fingerprint usa o texto inteiro. */
219
+ export const MAX_DB_QUERY_TEXT = 2048;
220
+ /**
221
+ * Nome do span e atributos semconv de uma query: `db.query.text` (SQL normalizado, sem
222
+ * literais), `db.query.fingerprint` (16 hex do SHA-256 do SQL normalizado **inteiro**, calculado
223
+ * antes do corte de 200 caracteres do nome: duas queries com o mesmo prefixo não se fundem) e
224
+ * `db.operation.name` (primeira palavra: SELECT, INSERT, BEGIN…).
225
+ */
226
+ export function sqlSpanFields(sql) {
227
+ const full = normalizeSqlFull(sql);
228
+ const operation = /^[a-z]+/.exec(full)?.[0]?.toUpperCase();
229
+ return {
230
+ name: full.length > 200 ? full.slice(0, 200) : full,
231
+ attributes: {
232
+ 'db.query.text': full.length > MAX_DB_QUERY_TEXT ? full.slice(0, MAX_DB_QUERY_TEXT) : full,
233
+ 'db.query.fingerprint': createHash('sha256').update(full).digest('hex').slice(0, 16),
234
+ ...(operation ? { 'db.operation.name': operation } : {}),
235
+ },
236
+ };
237
+ }
238
+ const LOCK_OUTCOMES = {
239
+ '40P01': 'deadlock',
240
+ '55P03': 'lock_not_available',
241
+ '40001': 'serialization_failure',
242
+ '57014': 'query_canceled',
243
+ };
244
+ /**
245
+ * Atributos de uma falha de banco pelo SQLSTATE: `db.response.status_code` (semconv) e, para
246
+ * disputa de lock, `db.lock.outcome` (`deadlock`, `lock_not_available` — `lock_timeout`/`NOWAIT` —,
247
+ * `serialization_failure` ou `query_canceled` — `statement_timeout`/cancelamento).
248
+ */
249
+ export function databaseErrorAttributes(error) {
250
+ const code = typeof error === 'object' && error ? error.code : undefined;
251
+ if (typeof code !== 'string' || !/^[A-Z0-9_]{3,40}$/.test(code))
252
+ return {};
253
+ return { 'db.response.status_code': code, ...(LOCK_OUTCOMES[code] ? { 'db.lock.outcome': LOCK_OUTCOMES[code] } : {}) };
99
254
  }
100
255
  export function toSpanError(err) {
101
256
  if (err instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"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"}
package/dist/pg.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import type { TrackerCore } from './tracker.js';
2
2
  import type { PgPoolLike } from './types.js';
3
3
  /**
4
- * Monkey-patch de `pool.query` (pg.Pool ou compatível). Cada query vira um
5
- * span `db.query` com o nome = SQL normalizado e `attributes.rows`.
6
- * Suporta as assinaturas (text), (config), (text, values), (text, cb) e (text, values, cb).
4
+ * Instrumenta um `pg.Pool` (ou objeto compatível):
5
+ * - `pool.query`: span `db.query` com SQL normalizado, `rows`, `db.query.fingerprint` e, quando
6
+ * a espera por conexão passa de 1 ms, `db.poolWaitMs`;
7
+ * - `pool.connect()`: span `custom` `pg connect` com a espera por conexão (`db.poolWaitMs`) e a
8
+ * ocupação do pool; o client devolvido também gera spans `db.query`;
9
+ * - transação num client (`BEGIN` … `COMMIT`/`ROLLBACK`): span `custom` `pg transaction`, pai das
10
+ * queries dela, com `db.transaction.outcome` (`commit`, `rollback` ou `released_open` quando o
11
+ * client volta ao pool com a transação aberta).
7
12
  */
8
13
  export declare function instrumentPgPool<T extends PgPoolLike>(core: TrackerCore, pool: T): T;
9
14
  //# sourceMappingURL=pg.d.ts.map
package/dist/pg.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../src/pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuB7C;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CA0DpF"}
1
+ {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../src/pg.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiQ7C;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAuTpF"}