fg-tracker-sdk 0.16.1 → 0.18.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.
- package/CHANGELOG.md +18 -0
- package/README.md +38 -4
- package/dist/cli/sourcemaps.js +119 -12
- package/dist/cli/sourcemaps.js.map +1 -1
- package/dist/fastify.d.ts +5 -0
- package/dist/fastify.d.ts.map +1 -0
- package/dist/fastify.js +90 -0
- package/dist/fastify.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/infra/aws.d.ts +4 -0
- package/dist/infra/aws.d.ts.map +1 -1
- package/dist/infra/aws.js +156 -1
- package/dist/infra/aws.js.map +1 -1
- package/dist/infra/lambda.d.ts.map +1 -1
- package/dist/infra/lambda.js +13 -5
- package/dist/infra/lambda.js.map +1 -1
- package/dist/infra/messaging.d.ts +11 -12
- package/dist/infra/messaging.d.ts.map +1 -1
- package/dist/infra/messaging.js +100 -25
- package/dist/infra/messaging.js.map +1 -1
- package/dist/koa.d.ts +4 -0
- package/dist/koa.d.ts.map +1 -0
- package/dist/koa.js +80 -0
- package/dist/koa.js.map +1 -0
- package/dist/types.d.ts +66 -12
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog — fg-tracker-sdk
|
|
2
2
|
|
|
3
|
+
## 0.18.0
|
|
4
|
+
|
|
5
|
+
Continuidade de traces com Fastify, Koa, SNS e Kinesis (T116, T129).
|
|
6
|
+
|
|
7
|
+
- `tracker.fastify()` fornece hooks `onRequest` e `onError`; `tracker.koa()` registra middleware async. Ambos criam a raiz `http.server`, continuam um `traceparent` válido e deixam handlers e chamadas descendentes no mesmo contexto. O hook Fastify `onError` preserva nome, mensagem e stack das exceções.
|
|
8
|
+
- `instrumentAws` injeta `traceparent` e `tracestate` no `MessageAttributes` do SNS (`Publish` e `PublishBatch`) e em objetos JSON no `Data` do Kinesis (`PutRecord` e `PutRecords`). `wrapLambda` continua traces de eventos SNS diretos, SNS entregue em envelope SQS e registros Kinesis.
|
|
9
|
+
- Kinesis usa 1 MiB por registro por padrão (configurável até 10 MiB) e 10 MiB por pedido; SNS usa 256 KiB por padrão (configurável de 1 KiB a 1 MiB). Erros de validação de SNS/Kinesis repetem uma vez o pedido original sem o contexto.
|
|
10
|
+
- SNS `Publish` com `MessageStructure: 'json'` não injeta atributos, pois esse modo não os entrega. Payloads Kinesis não JSON, atributos ou registros que já tenham `traceparent`, e mensagens sem espaço seguem sem alteração. A mensagem SNS original permanece intacta; contexto fica em atributos separados.
|
|
11
|
+
- **Efeito ao atualizar:** por padrão, `instrumentAws` injeta contexto no JSON de `Data` do Kinesis, alterando esses bytes. Configure `propagation: false` nesse client para preservar o payload original, sem propagação distribuída.
|
|
12
|
+
- O middleware Koa preserva status HTTP e `x-trace-id` em erros lançados. Exceções lançadas, inclusive `ctx.throw(4xx)`, continuam registradas como erro; uma resposta 4xx sem exceção não é tratada como erro pelo middleware.
|
|
13
|
+
|
|
14
|
+
## 0.17.0
|
|
15
|
+
|
|
16
|
+
Upload de source maps por gzip com limites de transporte explícitos (T08).
|
|
17
|
+
|
|
18
|
+
- O CLI `fg-tracker-sourcemaps` aceita mapas de até 15 MiB, mede o envelope JSON depois de gzip e envia lotes cujo corpo final cabe em 4 MiB, respeitando também 32 MiB descomprimidos. Um mapa que não cabe sozinho é recusado antes de qualquer envio.
|
|
19
|
+
- A API aceita JSON identity legado ou gzip na rota de source maps, limita o corpo recebido antes de acumular bytes descomprimidos e preserva mapas como texto ou objeto. Os limites são próprios da rota.
|
|
20
|
+
|
|
3
21
|
## 0.16.1
|
|
4
22
|
|
|
5
23
|
Correção de compatibilidade do `node:http` (CONTRATO.md §16, T119). Nada removido, nenhuma opção nova.
|
package/README.md
CHANGED
|
@@ -146,6 +146,35 @@ process.on('SIGTERM', () => tracker.shutdown().finally(() => process.exit(0)));
|
|
|
146
146
|
|
|
147
147
|
O middleware cria um span raiz `http.server` por request. O nome é `${method} ${route}`; a rota vem de `req.baseUrl + req.route.path` (disponível no `finish` da resposta), com fallback para o path com uuids/números trocados por `:id`. Atributos: `url` (query sem valores), `userAgent` e, com `sendDefaultPii: true`, `ip`. O `identify` padrão grava `user.id` (`req.user.id` ou `sub`); e-mail e nome só com `sendDefaultPii: true` ou com um `identify` próprio. Status ≥ 500 vira `error`.
|
|
148
148
|
|
|
149
|
+
## Fastify
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
import Fastify from 'fastify';
|
|
153
|
+
import { createTracker } from 'fg-tracker-sdk';
|
|
154
|
+
|
|
155
|
+
const tracker = createTracker({ apiKey: process.env.FG_TRACKER_KEY!, serviceName: 'minha-api' });
|
|
156
|
+
const app = Fastify();
|
|
157
|
+
app.addHook('onRequest', tracker.fastify());
|
|
158
|
+
app.addHook('onError', tracker.fastifyErrorHandler());
|
|
159
|
+
app.get('/orders/:orderId', async () => ({ ok: true }));
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Registre os hooks antes dos hooks e rotas da aplicação. O `onRequest` cria uma raiz `http.server`, mantém o contexto assíncrono até a resposta terminar e continua `traceparent`/`tracestate` válidos. O `onError` registra a exceção original para preservar nome, mensagem e stack no agrupamento de issues.
|
|
163
|
+
|
|
164
|
+
## Koa
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
import Koa from 'koa';
|
|
168
|
+
import { createTracker } from 'fg-tracker-sdk';
|
|
169
|
+
|
|
170
|
+
const tracker = createTracker({ apiKey: process.env.FG_TRACKER_KEY!, serviceName: 'minha-api' });
|
|
171
|
+
const app = new Koa();
|
|
172
|
+
app.use(tracker.koa());
|
|
173
|
+
app.use(async (ctx) => { ctx.body = { ok: true }; });
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Registre o middleware antes dos demais. Ele cria uma raiz `http.server`, envolve a cadeia assíncrona da requisição e continua `traceparent`/`tracestate` válidos. Em erro lançado, preserva o status e inclui `x-trace-id` nos headers restaurados pela resposta de erro do Koa. Exceções lançadas, inclusive `ctx.throw(4xx)`, permanecem registradas como erro; respostas 4xx sem exceção não são marcadas como erro.
|
|
177
|
+
|
|
149
178
|
## NestJS (platform-express)
|
|
150
179
|
|
|
151
180
|
```ts
|
|
@@ -550,20 +579,25 @@ await sqs.send(new SendMessageCommand({ QueueUrl, MessageBody }));
|
|
|
550
579
|
- Quando há um trace em andamento, **toda** chamada AWS (de qualquer serviço) vira um span `http.client` `AWS <serviço> <operação> <recurso>` com `attributes['aws.service']`, `aws.operation`, `aws.resourceArn`, `aws.region` e `statusCode`/erro. Esses spans seguem a amostragem normal. É **um** span por chamada: o HTTP dela (`node:http` ou fetch instrumentado) não gera um segundo `http.client` nem recebe `traceparent`, e os retries do AWS SDK aparecem como `aws.attempts` (quando > 1).
|
|
551
580
|
- Nomes viram ARN quando a conta é conhecida (aprendida de ARNs/URLs vistos ou `AWS_ACCOUNT_ID`); sem conta, a API casa o nó por nome + região + serviço.
|
|
552
581
|
|
|
553
|
-
### Contexto
|
|
582
|
+
### Contexto por filas e streams (SQS, SNS, EventBridge e Kinesis)
|
|
554
583
|
|
|
555
|
-
Dentro de um trace,
|
|
584
|
+
Dentro de um trace, `instrumentAws` propaga `traceparent` e `tracestate` em `MessageAttributes` no SNS (`Publish`/`PublishBatch`) e SQS (`SendMessage`/`SendMessageBatch`), em `Detail` do EventBridge (`PutEvents`) e em objetos JSON no `Data` do Kinesis (`PutRecord`/`PutRecords`). O texto SNS não muda; o Kinesis mantém os campos do objeto e só recebe os cabeçalhos quando o `Data` já é um objeto JSON e há espaço sob o limite por registro (incluindo a partition key) e o limite de 10 MiB por chamada `PutRecords` (incluindo as partition keys). O padrão por registro Kinesis é 1 MiB; configure `kinesisMaxRecordBytes` somente quando o limite efetivo do stream for maior. SNS usa o `MaximumMessageSize` do tópico, por padrão 256 KiB; `snsMaxMessageBytes` aceita de 1 KiB a 1 MiB. Mensagens não JSON, atributos já presentes e contextos sem espaço seguem sem alteração. `Publish` com `MessageStructure: 'json'` não recebe propagação: SNS não entrega atributos nesse modo, então o SDK registra um skip em vez de uma injeção.
|
|
585
|
+
|
|
586
|
+
Para SQS, respeita até 10 atributos, 1 MiB por mensagem e 1 MiB por lote. SNS respeita até 10 atributos e o tamanho configurado do tópico (256 KiB por padrão); EventBridge respeita 1 MiB por pedido. Kinesis respeita 1 MiB por registro por padrão (configurável até 10 MiB) e 10 MiB por pedido. Se o limite efetivo do serviço for menor que o configurado, erros de validação reconhecidos de SNS/Kinesis repetem uma vez o pedido original sem o contexto. Se o original também for inválido, o erro do serviço é devolvido; não há retry quando o serviço pode já ter aceitado a publicação.
|
|
556
587
|
|
|
557
588
|
```ts
|
|
558
589
|
const sqs = tracker.instrumentAws(new SQSClient({}), {
|
|
559
590
|
propagation: true, // default (false desliga; propagateTraceTo: false também)
|
|
560
591
|
sqsMaxMessageBytes: 262_144, // MaximumMessageSize da fila, se for menor que 1 MiB
|
|
561
592
|
});
|
|
593
|
+
|
|
594
|
+
tracker.instrumentAws(new SNSClient({}), { snsMaxMessageBytes: 1_048_576 });
|
|
595
|
+
tracker.instrumentAws(new KinesisClient({}), { kinesisMaxRecordBytes: 10 * 1_048_576 });
|
|
562
596
|
```
|
|
563
597
|
|
|
564
598
|
Em fila FIFO o SDK nunca reenvia uma entrada do lote fora de ordem. Por isso, em `SendMessageBatch` sem `sqsMaxMessageBytes`, ele só põe o contexto em mensagens que ficam com até 1 KiB (o menor `MaximumMessageSize` possível); informe o limite da fila para propagar também nas maiores. Se o limite informado passar do real, o SQS recusa o lote FIFO inteiro e o SDK o repete inteiro sem o contexto, na ordem. O `SendMessage` avulso usa o limite configurado também em FIFO: uma recusa não publica nada e o pedido é repetido sem o contexto.
|
|
565
599
|
|
|
566
|
-
**Efeito no EventBridge
|
|
600
|
+
**Efeito no EventBridge e no Kinesis:** consumidores passam a ver `traceparent` no `detail` do EventBridge ou no objeto JSON do Kinesis. Se o consumidor valida schema estrito, use `propagation: false` nesse client.
|
|
567
601
|
|
|
568
602
|
### Consumidores de fila
|
|
569
603
|
|
|
@@ -587,7 +621,7 @@ await tracker.trackMessage(QueueUrl, () => handle(message));
|
|
|
587
621
|
|
|
588
622
|
- `trackMessage(queue, record, fn)` e `trackMessage(queue, fn, { record })` aceitam o record do evento da Lambda ou a `Message` do `ReceiveMessage`. O span `custom` `SQS process <fila>` continua o trace do produtor (aparece em jobs e no waterfall de quem publicou), com `messaging.message.receive.latency` (ms desde o envio) e `messaging.message.retry.count`. Cada mensagem tem o próprio contexto, inclusive em `Promise.all`.
|
|
589
623
|
- No `ReceiveMessage`, o SDK pede `traceparent`/`tracestate` e `SentTimestamp`/`ApproximateReceiveCount` sem mudar o que você recebe: o que só ele pediu sai da resposta, com o `MD5OfMessageAttributes` recalculado.
|
|
590
|
-
- `wrapLambda` continua o trace de eventos de origem única (
|
|
624
|
+
- `wrapLambda` continua o trace de eventos de origem única (SQS, SNS direto ou dentro do envelope SQS, Kinesis com JSON em `data`, EventBridge com `detail.traceparent`, HTTP com `traceparent`); lotes ficam num trace próprio, com `attributes.links` apontando para cada produtor (`continueTrace: false` desliga).
|
|
591
625
|
- A flag `00` do `traceparent` recebido vale por padrão: um chamador HTTP ou produtor com `…-00` faz a invocação e o erro dela não serem enviados. Para uma Lambda (ou API) pública, `respectUpstreamSampling: { http: false }` decide a amostragem localmente para entradas HTTP (Express, `wrapNextRoute`, eventos HTTP da Lambda) e continua respeitando os produtores de filas (`messaging`). Outra saída é `sendUnsampledErrors: true`.
|
|
592
626
|
- O cache do `ReceiveMessage` guarda só o contexto W3C válido (atributos enormes de um produtor não ficam na memória) e, mesmo sem contexto, o atraso e as tentativas.
|
|
593
627
|
- Mede `processingMsSum`/`processingMsMax` e conta `errors` quando `fn` lança (o erro é relançado).
|
package/dist/cli/sourcemaps.js
CHANGED
|
@@ -11,9 +11,16 @@
|
|
|
11
11
|
* (caminho público onde os JS ficam; `~` = qualquer host; default `~`), --endpoint,
|
|
12
12
|
* --api-key, --dry-run.
|
|
13
13
|
*/
|
|
14
|
-
import { readdirSync,
|
|
14
|
+
import { closeSync, fstatSync, openSync, readdirSync, readSync, statSync } from 'node:fs';
|
|
15
|
+
import { createHash } from 'node:crypto';
|
|
15
16
|
import { join, relative } from 'node:path';
|
|
17
|
+
import { gzipSync } from 'node:zlib';
|
|
16
18
|
import { API_KEY_HEADER, DEFAULT_ENDPOINT, readEnv, warnLegacyBin } from '../constants.js';
|
|
19
|
+
const MIB = 1024 * 1024;
|
|
20
|
+
const MAX_MAP_BYTES = 15 * MIB;
|
|
21
|
+
const MAX_WIRE_BYTES = 4 * MIB;
|
|
22
|
+
const MAX_DECODED_BYTES = 32 * MIB;
|
|
23
|
+
const MAX_FILES_PER_BATCH = 20;
|
|
17
24
|
function parseArgs(argv) {
|
|
18
25
|
const args = {};
|
|
19
26
|
for (let i = 0; i < argv.length; i += 1) {
|
|
@@ -40,6 +47,81 @@ function walk(dir, out = []) {
|
|
|
40
47
|
}
|
|
41
48
|
return out;
|
|
42
49
|
}
|
|
50
|
+
function readMap(file) {
|
|
51
|
+
const descriptor = openSync(file, 'r');
|
|
52
|
+
try {
|
|
53
|
+
if (fstatSync(descriptor).size > MAX_MAP_BYTES)
|
|
54
|
+
throw new Error('Mapa excede o limite de 15 MiB por arquivo.');
|
|
55
|
+
const chunks = [];
|
|
56
|
+
let total = 0;
|
|
57
|
+
while (total <= MAX_MAP_BYTES) {
|
|
58
|
+
const chunk = Buffer.allocUnsafe(Math.min(64 * 1024, MAX_MAP_BYTES + 1 - total));
|
|
59
|
+
const read = readSync(descriptor, chunk, 0, chunk.length, total);
|
|
60
|
+
if (read === 0)
|
|
61
|
+
break;
|
|
62
|
+
total += read;
|
|
63
|
+
if (total > MAX_MAP_BYTES)
|
|
64
|
+
throw new Error('Mapa excede o limite de 15 MiB por arquivo.');
|
|
65
|
+
chunks.push(chunk.subarray(0, read));
|
|
66
|
+
}
|
|
67
|
+
return Buffer.concat(chunks, total);
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
closeSync(descriptor);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function decodeMap(bytes) {
|
|
74
|
+
try {
|
|
75
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
throw new Error('Arquivo .map não está em UTF-8 válido.');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function jsonFor(release, files) {
|
|
82
|
+
return JSON.stringify({ release, files });
|
|
83
|
+
}
|
|
84
|
+
function encodeBody(release, files) {
|
|
85
|
+
const json = jsonFor(release, files);
|
|
86
|
+
const decodedBytes = Buffer.byteLength(json, 'utf8');
|
|
87
|
+
if (decodedBytes > MAX_DECODED_BYTES)
|
|
88
|
+
throw new Error('Corpo descomprimido do lote excede 32 MiB.');
|
|
89
|
+
const body = gzipSync(Buffer.from(json, 'utf8'));
|
|
90
|
+
if (body.byteLength > MAX_WIRE_BYTES)
|
|
91
|
+
throw new Error('Corpo gzip do lote excede 4 MiB.');
|
|
92
|
+
return body;
|
|
93
|
+
}
|
|
94
|
+
function envelopeBytes(release, files) {
|
|
95
|
+
const emptyEnvelopeBytes = Buffer.byteLength(jsonFor(release, []), 'utf8');
|
|
96
|
+
return emptyEnvelopeBytes - 2 + files.reduce((total, file) => total + Buffer.byteLength(JSON.stringify(file), 'utf8'), 0)
|
|
97
|
+
+ Math.max(0, files.length - 1);
|
|
98
|
+
}
|
|
99
|
+
function fileEnvelopeBytes(release, file) {
|
|
100
|
+
return envelopeBytes(release, [file]);
|
|
101
|
+
}
|
|
102
|
+
function hash(bytes) {
|
|
103
|
+
return createHash('sha256').update(bytes).digest('hex');
|
|
104
|
+
}
|
|
105
|
+
function mapPath(prefix, dir, file) {
|
|
106
|
+
return `${prefix}/${relative(dir, file).replace(/\\/g, '/').replace(/\.map$/, '')}`;
|
|
107
|
+
}
|
|
108
|
+
function preflightMap(file, dir, prefix, release) {
|
|
109
|
+
const bytes = readMap(file);
|
|
110
|
+
const map = decodeMap(bytes);
|
|
111
|
+
const uploadFile = { path: mapPath(prefix, dir, file), map };
|
|
112
|
+
if (fileEnvelopeBytes(release, uploadFile) > MAX_DECODED_BYTES) {
|
|
113
|
+
throw new Error('Corpo descomprimido de um mapa excede 32 MiB.');
|
|
114
|
+
}
|
|
115
|
+
encodeBody(release, [uploadFile]);
|
|
116
|
+
return { path: uploadFile.path, file, bytes: bytes.byteLength, digest: hash(bytes) };
|
|
117
|
+
}
|
|
118
|
+
function loadPreflightedMap(file) {
|
|
119
|
+
const bytes = readMap(file.file);
|
|
120
|
+
if (bytes.byteLength !== file.bytes || hash(bytes) !== file.digest) {
|
|
121
|
+
throw new Error('Um arquivo .map mudou durante a preparação do upload. Execute novamente o CLI.');
|
|
122
|
+
}
|
|
123
|
+
return { path: file.path, map: decodeMap(bytes) };
|
|
124
|
+
}
|
|
43
125
|
async function main() {
|
|
44
126
|
warnLegacyBin('fg-tracker-sourcemaps');
|
|
45
127
|
const args = parseArgs(process.argv.slice(2));
|
|
@@ -61,13 +143,10 @@ async function main() {
|
|
|
61
143
|
console.error(`Nenhum .map encontrado em ${dir}`);
|
|
62
144
|
process.exit(1);
|
|
63
145
|
}
|
|
64
|
-
const
|
|
65
|
-
path: `${prefix}/${relative(dir, file).replace(/\\/g, '/').replace(/\.map$/, '')}`,
|
|
66
|
-
map: readFileSync(file, 'utf8'),
|
|
67
|
-
}));
|
|
146
|
+
const preflighted = maps.map((file) => preflightMap(file, dir, prefix, release));
|
|
68
147
|
if (args['dry-run']) {
|
|
69
|
-
for (const file of
|
|
70
|
-
console.log(`${file.path} (${Math.round(file.
|
|
148
|
+
for (const file of preflighted)
|
|
149
|
+
console.log(`${file.path} (${Math.round(file.bytes / 1024)} KB)`);
|
|
71
150
|
return;
|
|
72
151
|
}
|
|
73
152
|
if (!apiKey) {
|
|
@@ -75,20 +154,48 @@ async function main() {
|
|
|
75
154
|
process.exit(2);
|
|
76
155
|
}
|
|
77
156
|
let accepted = 0;
|
|
78
|
-
|
|
79
|
-
|
|
157
|
+
let batch = [];
|
|
158
|
+
let batchBody = null;
|
|
159
|
+
const sendBatch = async () => {
|
|
160
|
+
if (!batchBody || batch.length === 0)
|
|
161
|
+
return;
|
|
80
162
|
const res = await fetch(`${endpoint}/v1/sourcemaps`, {
|
|
81
163
|
method: 'POST',
|
|
82
|
-
headers: { 'content-type': 'application/json', [API_KEY_HEADER]: apiKey },
|
|
83
|
-
body:
|
|
164
|
+
headers: { 'content-type': 'application/json', 'content-encoding': 'gzip', [API_KEY_HEADER]: apiKey },
|
|
165
|
+
body: batchBody,
|
|
84
166
|
signal: AbortSignal.timeout(60_000),
|
|
85
167
|
});
|
|
86
168
|
if (!res.ok) {
|
|
87
|
-
console.error(`Falha no upload (${res.status})
|
|
169
|
+
console.error(`Falha no upload de source maps (${res.status}).`);
|
|
88
170
|
process.exit(1);
|
|
89
171
|
}
|
|
90
172
|
accepted += (await res.json()).accepted;
|
|
173
|
+
batch = [];
|
|
174
|
+
batchBody = null;
|
|
175
|
+
};
|
|
176
|
+
for (const file of preflighted) {
|
|
177
|
+
const uploadFile = loadPreflightedMap(file);
|
|
178
|
+
let candidate = [...batch, uploadFile];
|
|
179
|
+
let candidateBody = null;
|
|
180
|
+
const decodedBytes = envelopeBytes(release, candidate);
|
|
181
|
+
if (batch.length < MAX_FILES_PER_BATCH && decodedBytes <= MAX_DECODED_BYTES) {
|
|
182
|
+
try {
|
|
183
|
+
candidateBody = encodeBody(release, candidate);
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
if (!(error instanceof Error) || !/excede 4 MiB|excede 32 MiB/.test(error.message))
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (!candidateBody) {
|
|
191
|
+
await sendBatch();
|
|
192
|
+
candidate = [uploadFile];
|
|
193
|
+
candidateBody = encodeBody(release, candidate);
|
|
194
|
+
}
|
|
195
|
+
batch = candidate;
|
|
196
|
+
batchBody = candidateBody;
|
|
91
197
|
}
|
|
198
|
+
await sendBatch();
|
|
92
199
|
console.log(`${accepted} source maps enviados para a release ${release}.`);
|
|
93
200
|
}
|
|
94
201
|
main().catch((error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourcemaps.js","sourceRoot":"","sources":["../../src/cli/sourcemaps.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"sourcemaps.js","sourceRoot":"","sources":["../../src/cli/sourcemaps.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3F,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,EAAE,GAAG,GAAG,CAAC;AAC/B,MAAM,cAAc,GAAG,CAAC,GAAG,GAAG,CAAC;AAC/B,MAAM,iBAAiB,GAAG,EAAE,GAAG,GAAG,CAAC;AACnC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAc/B,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAqC,EAAE,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aACvE,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3B,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,IAAI,CAAC,GAAW,EAAE,MAAgB,EAAE;IAC3C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAC7C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC/G,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,KAAK,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM;YACtB,KAAK,IAAI,IAAI,CAAC;YACd,IAAI,KAAK,GAAG,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC1F,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,CAAC;QACH,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,KAAmB;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,KAAmB;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,YAAY,GAAG,iBAAiB;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACpG,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,KAAmB;IACzD,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,OAAO,kBAAkB,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;UACrH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,IAAgB;IAC1D,OAAO,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,OAAO,CAAC,MAAc,EAAE,GAAW,EAAE,IAAY;IACxD,OAAO,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,GAAW,EAAE,MAAc,EAAE,OAAe;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7D,IAAI,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,iBAAiB,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,UAAU,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAClC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,kGAAkG,CAAC,CAAC;QAClH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9F,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChI,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjF,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACnG,OAAO;IACT,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAiB,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,gBAAgB,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE;YACrG,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,IAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC,QAAQ,CAAC;QAClE,KAAK,GAAG,EAAE,CAAC;QACX,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAiB,CAAC,GAAG,KAAK,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,MAAM,GAAG,mBAAmB,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;YAC5E,IAAI,CAAC;gBACH,aAAa,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAAE,MAAM,KAAK,CAAC;YAClG,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,SAAS,EAAE,CAAC;YAClB,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC;YACzB,aAAa,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,KAAK,GAAG,SAAS,CAAC;QAClB,SAAS,GAAG,aAAa,CAAC;IAC5B,CAAC;IACD,MAAM,SAAS,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,wCAAwC,OAAO,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { TrackerCore } from './tracker.js';
|
|
2
|
+
import type { FastifyErrorHook, FastifyHook, FastifyOptions } from './types.js';
|
|
3
|
+
export declare function createFastifyHook(core: TrackerCore, options?: FastifyOptions): FastifyHook;
|
|
4
|
+
export declare function createFastifyErrorHook(core: TrackerCore): FastifyErrorHook;
|
|
5
|
+
//# sourceMappingURL=fastify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAwBpG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,cAAmB,GAAG,WAAW,CA6D9F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB,CAK1E"}
|
package/dist/fastify.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { parseTraceContext, sanitizeBaggage } from './context.js';
|
|
2
|
+
import { normalizePath } from './normalize.js';
|
|
3
|
+
const spansByCore = new WeakMap();
|
|
4
|
+
function requestSpans(core) {
|
|
5
|
+
let spans = spansByCore.get(core);
|
|
6
|
+
if (!spans) {
|
|
7
|
+
spans = new WeakMap();
|
|
8
|
+
spansByCore.set(core, spans);
|
|
9
|
+
}
|
|
10
|
+
return spans;
|
|
11
|
+
}
|
|
12
|
+
function headerValue(value) {
|
|
13
|
+
return Array.isArray(value) ? value[0] : value;
|
|
14
|
+
}
|
|
15
|
+
function routePath(request) {
|
|
16
|
+
const route = request.routeOptions?.url;
|
|
17
|
+
return normalizePath(typeof route === 'string' && route ? route : request.url ?? '/');
|
|
18
|
+
}
|
|
19
|
+
export function createFastifyHook(core, options = {}) {
|
|
20
|
+
const continueTrace = options.continueTrace ?? true;
|
|
21
|
+
return function fgTrackerFastifyHook(request, reply, done) {
|
|
22
|
+
if (!core.enabled) {
|
|
23
|
+
done();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const method = (request.method ?? 'GET').toUpperCase();
|
|
27
|
+
const rawUrl = request.url ?? '/';
|
|
28
|
+
const route = routePath(request);
|
|
29
|
+
const requestId = headerValue(request.headers['x-request-id']) ?? request.id ?? null;
|
|
30
|
+
const attributes = {
|
|
31
|
+
url: rawUrl,
|
|
32
|
+
userAgent: headerValue(request.headers['user-agent']) ?? null,
|
|
33
|
+
...(core.options.sendDefaultPii ? { ip: request.ip ?? headerValue(request.headers['x-forwarded-for'])?.split(',')[0]?.trim() ?? request.socket?.remoteAddress ?? null } : {}),
|
|
34
|
+
...(requestId ? { requestId } : {}),
|
|
35
|
+
};
|
|
36
|
+
const remote = continueTrace ? parseTraceContext(request.headers.traceparent, request.headers.tracestate) : undefined;
|
|
37
|
+
const span = remote
|
|
38
|
+
? core.startRemoteRoot('http.server', `${method} ${route}`, attributes, remote, { origin: 'http' })
|
|
39
|
+
: core.startSpan('http.server', `${method} ${route}`, attributes, null);
|
|
40
|
+
const spans = requestSpans(core);
|
|
41
|
+
spans.set(request, span);
|
|
42
|
+
span.method = method;
|
|
43
|
+
span.route = route;
|
|
44
|
+
if (continueTrace && core.options.propagateBaggageTo !== false) {
|
|
45
|
+
const baggage = sanitizeBaggage(request.headers.baggage);
|
|
46
|
+
if (baggage)
|
|
47
|
+
span.baggage = baggage;
|
|
48
|
+
}
|
|
49
|
+
if (typeof reply.header === 'function' && !reply.getHeader?.('x-trace-id') && !reply.raw.getHeader?.('x-trace-id')) {
|
|
50
|
+
reply.header('x-trace-id', span.traceId);
|
|
51
|
+
}
|
|
52
|
+
let doneOnce = false;
|
|
53
|
+
const finish = (aborted) => {
|
|
54
|
+
if (doneOnce)
|
|
55
|
+
return;
|
|
56
|
+
doneOnce = true;
|
|
57
|
+
span.route = routePath(request);
|
|
58
|
+
span.name = `${method} ${span.route}`;
|
|
59
|
+
span.statusCode = reply.statusCode ?? reply.raw.statusCode ?? null;
|
|
60
|
+
if (aborted) {
|
|
61
|
+
span.setAttribute('aborted', true);
|
|
62
|
+
if (!span.error)
|
|
63
|
+
span.error = { name: 'ClientAborted', message: 'conexão encerrada antes da resposta' };
|
|
64
|
+
}
|
|
65
|
+
else if (typeof span.statusCode === 'number' && span.statusCode >= 500 && !span.error) {
|
|
66
|
+
span.error = { name: 'HttpError', message: `HTTP ${span.statusCode}` };
|
|
67
|
+
}
|
|
68
|
+
spans.delete(request);
|
|
69
|
+
span.end();
|
|
70
|
+
};
|
|
71
|
+
reply.raw.once('finish', () => finish(false));
|
|
72
|
+
reply.raw.once('close', () => finish(!doneOnce));
|
|
73
|
+
core.runInSpan(span, () => {
|
|
74
|
+
try {
|
|
75
|
+
done();
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
span.setError(error);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function createFastifyErrorHook(core) {
|
|
85
|
+
return function fgTrackerFastifyErrorHook(request, _reply, error, done) {
|
|
86
|
+
requestSpans(core).get(request)?.setError(error);
|
|
87
|
+
done();
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=fastify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type { DatabaseInstrumentationOptions, DatabaseOperation, PostgresSqlLike } from "./database.js";
|
|
2
2
|
import type { Tracker, TrackerOptions } from './types.js';
|
|
3
|
-
export type { ActiveSpan, CheckInHandle, CheckInOptions, ExpressErrorMiddleware, ExpressLikeRequest, ExpressLikeResponse, ExpressMiddleware, ExpressOptions, InfraOptions, NextRouteHandler, PgPoolLike, PropagationTargets, RegisterReleaseInput, ReleaseCommitInput, SamplingContext, Span, SpanError, SpanKind, Tracker, TrackerOptions, UpstreamSamplingOrigin, UpstreamSamplingPolicy, UserRef, } from './types.js';
|
|
3
|
+
export type { ActiveSpan, CheckInHandle, CheckInOptions, ExpressErrorMiddleware, ExpressLikeRequest, ExpressLikeResponse, ExpressMiddleware, ExpressOptions, FastifyHook, FastifyErrorHook, FastifyLikeReply, FastifyLikeRequest, FastifyOptions, KoaContextLike, KoaMiddleware, KoaOptions, InfraOptions, NextRouteHandler, PgPoolLike, PropagationTargets, RegisterReleaseInput, ReleaseCommitInput, SamplingContext, Span, SpanError, SpanKind, Tracker, TrackerOptions, UpstreamSamplingOrigin, UpstreamSamplingPolicy, UserRef, } from './types.js';
|
|
4
4
|
export type { MeasureOptions } from './measure.js';
|
|
5
5
|
export type { NestContainerLike, NestInstrumentationOptions } from './nest.js';
|
|
6
6
|
export { MIN_POOL_WAIT_MS } from './pool-wait.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { instrumentPostgresClient, instrumentDatabaseClient, startDatabaseSpan, databaseError } from "./database.js";
|
|
2
2
|
import { createExpressErrorHandler, createExpressMiddleware } from './express.js';
|
|
3
|
+
import { createFastifyErrorHook, createFastifyHook } from './fastify.js';
|
|
3
4
|
import { createInstrumentedFetch } from './fetch.js';
|
|
4
5
|
import { installGlobalErrorCapture } from './global-errors.js';
|
|
5
6
|
import { createMonitor, runCheckIn } from './monitors.js';
|
|
@@ -8,6 +9,7 @@ import { instrumentNestContainer } from './nest.js';
|
|
|
8
9
|
import { instrumentNodeHttp } from './node-http.js';
|
|
9
10
|
import { wrapNextRouteHandler } from './next.js';
|
|
10
11
|
import { instrumentPgPool } from './pg.js';
|
|
12
|
+
import { createKoaMiddleware } from './koa.js';
|
|
11
13
|
import { registerRelease } from './releases.js';
|
|
12
14
|
import { TrackerCore } from './tracker.js';
|
|
13
15
|
import { instrumentAwsClient, trackQueueMessage } from './infra/aws.js';
|
|
@@ -52,6 +54,9 @@ export function createTracker(options) {
|
|
|
52
54
|
const uninstallGlobalErrors = options.captureGlobalErrors && core.enabled ? installGlobalErrorCapture(core) : undefined;
|
|
53
55
|
const tracker = {
|
|
54
56
|
express: (expressOptions) => createExpressMiddleware(core, expressOptions),
|
|
57
|
+
fastify: (fastifyOptions) => createFastifyHook(core, fastifyOptions),
|
|
58
|
+
fastifyErrorHandler: () => createFastifyErrorHook(core),
|
|
59
|
+
koa: (koaOptions) => createKoaMiddleware(core, koaOptions),
|
|
55
60
|
expressErrorHandler: () => createExpressErrorHandler(core),
|
|
56
61
|
instrumentPostgres: (client) => instrumentPostgresClient(core, client),
|
|
57
62
|
instrumentDatabase: (client, options) => instrumentDatabaseClient(core, client, options),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErH,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAmD,MAAM,gBAAgB,CAAC;AACzH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/infra/aws.d.ts
CHANGED
|
@@ -57,6 +57,10 @@ export interface AwsInstrumentationOptions {
|
|
|
57
57
|
sqsMaxMessageBytes?: number;
|
|
58
58
|
/** Limite do pedido `PutEvents` (soma das entradas). Default 1 MiB. */
|
|
59
59
|
eventBridgeMaxRequestBytes?: number;
|
|
60
|
+
/** Tamanho máximo configurado por mensagem SNS (`MaximumMessageSize`). Default do tópico SNS: 256 KiB. */
|
|
61
|
+
snsMaxMessageBytes?: number;
|
|
62
|
+
/** Tamanho máximo configurado por registro Kinesis, incluindo partition key. Default do stream: 1 MiB. */
|
|
63
|
+
kinesisMaxRecordBytes?: number;
|
|
60
64
|
}
|
|
61
65
|
/** Mensagens recebidas por clients instrumentados deste tracker (contexto lido antes de retirar os atributos). */
|
|
62
66
|
export declare function receivedMessages(core: TrackerCore): ReceivedMessages;
|
package/dist/infra/aws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../src/infra/aws.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../src/infra/aws.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAoBL,gBAAgB,EAWjB,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AAEH,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE;QACf,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,KAAK,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC/H,CAAC;IACF,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7E;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5J,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA2ED,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIlG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAgBpF;AA6PD,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,0GAA0G;IAC1G,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0GAA0G;IAC1G,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAID,kHAAkH;AAClH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB,CAOpE;AAoBD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAYlD;AAmSD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAE,yBAA8B,GAAG,CAAC,CA6QrI;AAED,wGAAwG;AACxG,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,CA6D5I"}
|