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
@@ -1,18 +1,23 @@
1
+ import { randomBytes } from 'node:crypto';
1
2
  import { hostname } from 'node:os';
2
3
  import { API_KEY_HEADER, DEFAULT_ENDPOINT } from '../constants.js';
3
4
  import { currentSpanContext } from '../context.js';
5
+ import { registerExitFlush } from '../exit-hooks.js';
6
+ import { byteLength, DEFAULT_MAX_BODY_BYTES, DEFAULT_REQUEST_TIMEOUT_MS, HttpSender, MIN_BODY_BYTES, safeStringify, Deadlines, } from '../transport.js';
4
7
  import { LOG_LEVEL_NUMBER, toLogLevel } from './types.js';
5
8
  const DEFAULT_FLUSH_INTERVAL_MS = 2000;
6
9
  const DEFAULT_MAX_BATCH = 200;
7
10
  const DEFAULT_MAX_QUEUE = 5000;
11
+ const DEFAULT_MAX_QUEUE_BYTES = 16 * 1024 * 1024;
12
+ const DEFAULT_SHUTDOWN_TIMEOUT_MS = 10_000;
8
13
  /** Limite da API por requisição (CONTRATO.md §11). */
9
14
  const API_MAX_BATCH = 500;
10
- const RETRY_DELAY_MS = 400;
11
15
  /**
12
- * Fila + envio em lote para `POST /v1/logs`. Mesma política do tracker:
13
- * timer com `unref()`, fila limitada (descarta as mais antigas), aviso único
14
- * em falha, 4xx descarta o lote, 5xx/rede tenta de novo uma vez e depois
15
- * devolve o lote para o próximo flush.
16
+ * Fila + envio em lote para `POST /v1/logs`, com o transporte do tracker (CONTRATO.md §4.3):
17
+ * timer com `unref()`, fila limitada em linhas e bytes (descarta as mais antigas), lotes
18
+ * limitados em bytes, timeout de 10 s, backoff com jitter e `Retry-After` em rede/408/429/5xx,
19
+ * 413 divide o lote, outro 4xx descarta. Cada linha leva um `eventId` gerado aqui: o reenvio
20
+ * de um lote que a API já gravou não duplica (dedupe no servidor).
16
21
  */
17
22
  export function createLogShipper(options) {
18
23
  return new LogShipperImpl(options);
@@ -24,14 +29,29 @@ class LogShipperImpl {
24
29
  host;
25
30
  minLevel;
26
31
  tracker;
27
- fetchImpl;
28
32
  debug;
29
33
  active;
34
+ sender;
35
+ maxQueueBytes;
36
+ shutdownTimeoutMs;
37
+ batchBytes;
38
+ /** Teto de linhas por lote depois de 413 com o teto de bytes no mínimo. */
39
+ batchItems = Number.POSITIVE_INFINITY;
30
40
  queue = [];
41
+ queueBytes = 0;
31
42
  timer = null;
32
43
  flushing = null;
44
+ /** Prazos de encerramento ativos; vale o menor (`deadline`). */
45
+ deadlines = new Deadlines();
46
+ get deadline() {
47
+ return this.deadlines.current;
48
+ }
33
49
  warnedFailure = false;
34
50
  stopped = false;
51
+ pushedSinceExit = 0;
52
+ unregisterExit = () => undefined;
53
+ /** Linhas descartadas (limite de fila, 4xx ou encerramento). */
54
+ dropped = 0;
35
55
  constructor(raw) {
36
56
  this.options = {
37
57
  endpoint: (raw.endpoint ?? DEFAULT_ENDPOINT).replace(/\/+$/, ''),
@@ -45,8 +65,18 @@ class LogShipperImpl {
45
65
  this.host = raw.host === false ? undefined : (raw.host ?? safeHostname());
46
66
  this.minLevel = LOG_LEVEL_NUMBER[raw.minLevel ?? 'trace'];
47
67
  this.tracker = raw.tracker;
48
- this.fetchImpl = raw.fetch ?? globalThis.fetch;
49
68
  this.debug = raw.debug ?? false;
69
+ this.maxQueueBytes = Math.max(1024 * 1024, raw.maxQueueBytes ?? DEFAULT_MAX_QUEUE_BYTES);
70
+ this.shutdownTimeoutMs = Math.max(0, raw.shutdownTimeoutMs ?? DEFAULT_SHUTDOWN_TIMEOUT_MS);
71
+ this.batchBytes = Math.min(DEFAULT_MAX_BODY_BYTES, Math.max(MIN_BODY_BYTES, raw.maxBatchBytes ?? DEFAULT_MAX_BODY_BYTES));
72
+ const fetchImpl = raw.fetch ?? globalThis.fetch;
73
+ this.sender = new HttpSender({
74
+ fetch: (input, init) => fetchImpl(input, init),
75
+ url: `${this.options.endpoint}/v1/logs`,
76
+ headers: { [API_KEY_HEADER]: this.apiKey },
77
+ timeoutMs: Math.max(100, raw.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS),
78
+ compression: raw.compression ?? (raw.fetch ? 'none' : 'gzip'),
79
+ });
50
80
  this.active = (raw.enabled ?? true) && Boolean(this.apiKey);
51
81
  if (!this.active) {
52
82
  if (!this.apiKey && (raw.enabled ?? true))
@@ -58,6 +88,8 @@ class LogShipperImpl {
58
88
  }, this.options.flushIntervalMs);
59
89
  if (typeof this.timer === 'object' && this.timer && 'unref' in this.timer)
60
90
  this.timer.unref();
91
+ if (raw.exitHooks ?? true)
92
+ this.unregisterExit = registerExitFlush(this);
61
93
  }
62
94
  get enabled() {
63
95
  return this.active && !this.stopped;
@@ -65,6 +97,9 @@ class LogShipperImpl {
65
97
  get size() {
66
98
  return this.queue.length;
67
99
  }
100
+ get exitTimeoutMs() {
101
+ return this.shutdownTimeoutMs;
102
+ }
68
103
  log(level, message, context) {
69
104
  this.push({ level, message, context });
70
105
  }
@@ -76,6 +111,7 @@ class LogShipperImpl {
76
111
  return;
77
112
  const correlation = entry.traceId ? null : (this.tracker?.currentSpan() ?? currentSpanContext());
78
113
  const line = {
114
+ eventId: randomBytes(16).toString('hex'),
79
115
  ts: toIso(entry.ts),
80
116
  level,
81
117
  service: entry.service || this.options.service,
@@ -97,10 +133,11 @@ class LogShipperImpl {
97
133
  const host = entry.host ?? this.host;
98
134
  if (host)
99
135
  line.host = host;
100
- this.queue.push(line);
101
- if (this.queue.length > this.options.maxQueueSize) {
102
- this.queue.splice(0, this.queue.length - this.options.maxQueueSize);
103
- }
136
+ const json = safeStringify(line);
137
+ this.queue.push({ json, bytes: byteLength(json) });
138
+ this.queueBytes += this.queue[this.queue.length - 1].bytes;
139
+ this.pushedSinceExit += 1;
140
+ this.trimQueue();
104
141
  if (this.queue.length >= this.options.maxBatch)
105
142
  void this.flush();
106
143
  }
@@ -111,63 +148,147 @@ class LogShipperImpl {
111
148
  return this.flushing;
112
149
  if (this.queue.length === 0)
113
150
  return;
114
- this.flushing = this.doFlush().finally(() => {
151
+ this.flushing = this.drain(false).finally(() => {
115
152
  this.flushing = null;
116
153
  });
117
154
  return this.flushing;
118
155
  }
119
- async shutdown() {
156
+ async shutdown(options = {}) {
120
157
  if (this.timer) {
121
158
  clearInterval(this.timer);
122
159
  this.timer = null;
123
160
  }
124
- await this.flush();
161
+ this.unregisterExit();
162
+ await this.sendUntil(Date.now() + Math.max(0, options.timeoutMs ?? this.shutdownTimeoutMs));
163
+ if (this.queue.length > 0 && this.active) {
164
+ this.dropped += this.queue.length;
165
+ this.warnOnce(`encerrado com ${this.queue.length} linha(s) de log sem enviar.`);
166
+ }
125
167
  this.stopped = true;
126
168
  }
127
- async doFlush() {
128
- while (this.queue.length > 0) {
129
- const batch = this.queue.splice(0, this.options.maxBatch);
130
- let outcome = await this.send(batch);
131
- if (outcome === 'retry') {
132
- await sleep(RETRY_DELAY_MS);
133
- outcome = await this.send(batch);
134
- }
135
- if (outcome === 'retry') {
136
- // Devolve para a frente da fila e tenta no próximo flush.
137
- this.queue.unshift(...batch);
138
- if (this.queue.length > this.options.maxQueueSize) {
139
- this.queue.splice(0, this.queue.length - this.options.maxQueueSize);
140
- }
141
- return;
142
- }
169
+ hasPendingForExit() {
170
+ if (!this.enabled)
171
+ return false;
172
+ // Um lote já saiu da fila e está em voo: a saída espera ele (até o prazo).
173
+ if (this.flushing)
174
+ return true;
175
+ return this.pushedSinceExit > 0 && this.queue.length > 0;
176
+ }
177
+ async flushForExit(deadline) {
178
+ this.pushedSinceExit = 0;
179
+ try {
180
+ await this.sendUntil(deadline);
181
+ }
182
+ catch {
183
+ /* a saída nunca lança */
143
184
  }
144
185
  }
145
- async send(logs) {
186
+ async sendUntil(deadline) {
187
+ if (!this.active)
188
+ return;
189
+ const release = this.deadlines.add(deadline);
190
+ this.sender.abortAt(this.deadline ?? deadline);
146
191
  try {
147
- const res = await this.fetchImpl(`${this.options.endpoint}/v1/logs`, {
148
- method: 'POST',
149
- headers: { 'content-type': 'application/json', [API_KEY_HEADER]: this.apiKey },
150
- body: JSON.stringify({ logs }),
192
+ // Outro envio (flush, saída do processo) em andamento: espera, sem iniciar um segundo laço.
193
+ while (this.flushing)
194
+ await this.flushing;
195
+ if (this.queue.length === 0)
196
+ return;
197
+ this.flushing = this.drain(true).finally(() => {
198
+ this.flushing = null;
151
199
  });
152
- if (!res.ok) {
153
- const retry = res.status >= 500 || res.status === 429;
154
- this.warnOnce(`logs respondeu ${res.status}${retry ? ' (vai tentar de novo)' : ' (lote descartado)'}`);
155
- return retry ? 'retry' : 'drop';
200
+ await this.flushing;
201
+ }
202
+ finally {
203
+ release();
204
+ }
205
+ }
206
+ trimQueue() {
207
+ while (this.queue.length > 1 && (this.queue.length > this.options.maxQueueSize || this.queueBytes > this.maxQueueBytes)) {
208
+ this.queueBytes -= this.queue.shift().bytes;
209
+ this.dropped += 1;
210
+ }
211
+ }
212
+ async drain(waitBackoff) {
213
+ while (this.queue.length > 0) {
214
+ const now = Date.now();
215
+ if (this.deadline !== null && now >= this.deadline)
216
+ return;
217
+ const wait = this.sender.waitMs(now);
218
+ if (wait > 0) {
219
+ if (!waitBackoff || this.deadline === null || now + wait >= this.deadline)
220
+ return;
221
+ await this.deadlines.sleep(wait);
222
+ continue;
156
223
  }
157
- if (this.warnedFailure) {
158
- this.warnedFailure = false;
224
+ const batch = this.takeBatch();
225
+ const result = await this.sender.post(`{"logs":[${batch.map((line) => line.json).join(',')}]}`, this.deadline ?? undefined);
226
+ if (!this.handleResult(batch, result) && !waitBackoff)
227
+ return;
228
+ }
229
+ }
230
+ takeBatch() {
231
+ let bytes = 16;
232
+ let count = 0;
233
+ while (count < this.queue.length && count < this.options.maxBatch) {
234
+ const size = this.queue[count].bytes + 1;
235
+ if (count > 0 && (bytes + size > this.batchBytes || count >= this.batchItems))
236
+ break;
237
+ bytes += size;
238
+ count += 1;
239
+ }
240
+ const batch = this.queue.splice(0, count);
241
+ for (const line of batch)
242
+ this.queueBytes -= line.bytes;
243
+ return batch;
244
+ }
245
+ /** Devolve `false` quando o lote voltou para a fila (backoff). */
246
+ handleResult(batch, result) {
247
+ switch (result.type) {
248
+ case 'ok':
249
+ this.sender.noteSuccess();
250
+ if (this.warnedFailure) {
251
+ this.warnedFailure = false;
252
+ if (this.debug)
253
+ console.info('[fg-tracker] envio de logs restabelecido.');
254
+ }
159
255
  if (this.debug)
160
- console.info('[fg-tracker] envio de logs restabelecido.');
256
+ console.info(`[fg-tracker] enviadas ${batch.length} linhas de log.`);
257
+ return true;
258
+ case 'too_large': {
259
+ const bytes = batch.reduce((total, line) => total + line.bytes, 0);
260
+ if (batch.length <= 1) {
261
+ this.dropped += 1;
262
+ this.warnOnce(`logs respondeu 413 para uma linha de ${bytes} bytes (descartada).`);
263
+ return true;
264
+ }
265
+ const half = Math.floor(bytes / 2);
266
+ if (half >= MIN_BODY_BYTES)
267
+ this.batchBytes = Math.min(this.batchBytes, half);
268
+ else
269
+ this.batchItems = Math.max(1, Math.min(this.batchItems, Math.floor(batch.length / 2)));
270
+ this.requeue(batch);
271
+ return true;
272
+ }
273
+ case 'rejected':
274
+ this.sender.noteSuccess();
275
+ this.dropped += batch.length;
276
+ this.warnOnce(`logs respondeu ${result.status} (lote descartado)`);
277
+ return true;
278
+ case 'retry': {
279
+ const delay = this.sender.noteFailure(result);
280
+ this.warnOnce(`falha ao enviar logs para ${this.options.endpoint}/v1/logs: ${result.reason} (nova tentativa em ${Math.round(delay / 1000)} s)`);
281
+ this.requeue(batch);
282
+ return false;
161
283
  }
162
- if (this.debug)
163
- console.info(`[fg-tracker] enviadas ${logs.length} linhas de log.`);
164
- return 'ok';
165
- }
166
- catch (err) {
167
- this.warnOnce(`falha ao enviar logs para ${this.options.endpoint}/v1/logs: ${err?.message ?? err}`);
168
- return 'retry';
169
284
  }
170
285
  }
286
+ requeue(batch) {
287
+ this.queue.unshift(...batch);
288
+ for (const line of batch)
289
+ this.queueBytes += line.bytes;
290
+ this.trimQueue();
291
+ }
171
292
  warnOnce(message) {
172
293
  if (this.warnedFailure)
173
294
  return;
@@ -195,9 +316,6 @@ function safeHostname() {
195
316
  return undefined;
196
317
  }
197
318
  }
198
- function sleep(ms) {
199
- return new Promise((resolve) => setTimeout(resolve, ms));
200
- }
201
319
  /**
202
320
  * `mixin` para o pino: injeta `traceId`/`spanId` do span corrente em cada linha.
203
321
  * Necessário porque o transport roda em worker thread, sem acesso ao AsyncLocalStorage da app.
@@ -1 +1 @@
1
- {"version":3,"file":"shipper.js","sourceRoot":"","sources":["../../src/logs/shipper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shipper.js","sourceRoot":"","sources":["../../src/logs/shipper.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ export declare const LOG_LEVEL_NUMBER: Record<LogLevel, number>;
8
8
  export declare function toLogLevel(value: unknown): LogLevel;
9
9
  /** Linha como o SDK envia. */
10
10
  export interface LogEntry {
11
+ /** Id da linha gerado no shipper: o reenvio do mesmo lote não duplica (dedupe na API, §11). */
12
+ eventId: string;
11
13
  ts: string;
12
14
  level: LogLevel;
13
15
  service: string;
@@ -56,6 +58,18 @@ export interface LogShipperOptions {
56
58
  maxBatch?: number;
57
59
  /** Tamanho máximo da fila antes de descartar as mais antigas. Default 5000. */
58
60
  maxQueueSize?: number;
61
+ /** Memória máxima da fila (JSON das linhas, em bytes). Default 16 MiB. */
62
+ maxQueueBytes?: number;
63
+ /** Teto do corpo de cada POST, em bytes de JSON (antes do gzip). Default e máximo 1,5 MiB. */
64
+ maxBatchBytes?: number;
65
+ /** Timeout de cada POST. Default 10000 ms. */
66
+ requestTimeoutMs?: number;
67
+ /** Prazo do `shutdown()` e do envio na saída do processo. Default 10000 ms. */
68
+ shutdownTimeoutMs?: number;
69
+ /** Compressão dos lotes ≥ 4 KiB. Default `'gzip'` com o `fetch` global, `'none'` com `fetch` próprio (desliga sozinho se a API responder 400/415). */
70
+ compression?: 'gzip' | 'none';
71
+ /** Envia a fila no `beforeExit` e em SIGTERM/SIGINT (como o tracker). Default `true`. */
72
+ exitHooks?: boolean;
59
73
  /** Tracker do FG Tracker para correlação de traceId/spanId (senão usa o contexto global do SDK). */
60
74
  tracker?: SpanContextSource;
61
75
  /** Nível mínimo enviado. Default `trace` (tudo). */
@@ -74,8 +88,10 @@ export interface LogShipper {
74
88
  log(level: LogLevel, message: string, context?: Record<string, unknown>): void;
75
89
  /** Envia imediatamente tudo o que está na fila. */
76
90
  flush(): Promise<void>;
77
- /** Para o timer e envia o que restou. */
78
- shutdown(): Promise<void>;
91
+ /** Para o timer e envia o que restou, em até `timeoutMs` (default `shutdownTimeoutMs`, 10 s). */
92
+ shutdown(options?: {
93
+ timeoutMs?: number;
94
+ }): Promise<void>;
79
95
  /** Linhas aguardando envio. */
80
96
  readonly size: number;
81
97
  readonly enabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/E,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAOrD,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAqBnD;AAED,8BAA8B;AAC9B,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kFAAkF;AAClF,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,4FAA4F;AAC5F,MAAM,WAAW,iBAAiB;IAChC,WAAW,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAChE;AAED,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oGAAoG;IACpG,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5B,yBAAyB;IACzB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/E,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,yCAAyC;IACzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,SAAS,GAAG,iBAAiB,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;CACzI"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logs/types.ts"],"names":[],"mappings":"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"}
package/dist/scrub.d.ts CHANGED
@@ -8,4 +8,9 @@ export declare function shouldScrub(key: string, fields: string[]): boolean;
8
8
  export declare function scrubValue(value: unknown, fields: string[], depth?: number): unknown;
9
9
  export declare function scrubAttributes(attributes: Record<string, unknown>, fields: string[]): Record<string, unknown>;
10
10
  export declare function matchesAny(value: string, patterns: (string | RegExp)[] | undefined): boolean;
11
+ /**
12
+ * `RegExp.test` sem depender de estado: com flag `g` ou `y`, `test` começa em `lastIndex` e o
13
+ * avança, e a mesma regra alternaria entre casar e não casar a cada chamada.
14
+ */
15
+ export declare function testPattern(pattern: RegExp, value: string): boolean;
11
16
  //# sourceMappingURL=scrub.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scrub.d.ts","sourceRoot":"","sources":["../src/scrub.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAGhC,CAAC;AAEF,eAAO,MAAM,QAAQ,eAAe,CAAC;AAGrC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAGlE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,SAAI,GAAG,OAAO,CAQ/E;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE9G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,GAAG,OAAO,CAG5F"}
1
+ {"version":3,"file":"scrub.d.ts","sourceRoot":"","sources":["../src/scrub.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAGhC,CAAC;AAEF,eAAO,MAAM,QAAQ,eAAe,CAAC;AAGrC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAGlE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,SAAI,GAAG,OAAO,CAQ/E;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE9G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,GAAG,OAAO,CAG5F;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CASnE"}
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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"}