@tracepanel/js 0.8.0 → 0.9.2
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/README.md +63 -183
- package/dist/browser.js +33 -7
- package/dist/browser.js.map +1 -1
- package/dist/sql.d.ts +3 -2
- package/dist/sql.js +19 -4
- package/dist/sql.js.map +1 -1
- package/dist/vite.js +11 -3
- package/dist/vite.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ It runs while you develop, and everything stays on your machine.
|
|
|
31
31
|
| **Background jobs** | BullMQ: each job a worker runs is a task, each job the app adds a step, and the jobs in flight are listed live. |
|
|
32
32
|
| **Logs** | `console`, pino, winston and Nest's `Logger`, each line on the request or job that wrote it. |
|
|
33
33
|
| **Errors** | Thrown in a handler, with your frames, their source and, on Node, their local variables. |
|
|
34
|
-
| **Profiling** | Where a request's CPU time goes, and
|
|
34
|
+
| **Profiling** | Where a request's CPU time goes, and its memory and garbage collections when you ask for them, on Node. |
|
|
35
35
|
| **Tests** | Vitest 4.1 and later: a test fails when it makes an N+1 or duplicate queries. |
|
|
36
36
|
| **Browser** | The badge and its panel on server-rendered pages, in Next.js through `<Tracepanel />` and in an SPA through the Vite plugin. The pages' views and clicks with their `fetch()` calls, linked to the API's traces. |
|
|
37
37
|
|
|
@@ -50,17 +50,14 @@ traces and serves the console.
|
|
|
50
50
|
## Setup
|
|
51
51
|
|
|
52
52
|
Tracepanel is on unless `NODE_ENV` is `production`. `TRACEPANEL_ENABLED=0`
|
|
53
|
-
turns it off and `TRACEPANEL_ENABLED=1` turns it on.
|
|
54
|
-
the
|
|
55
|
-
|
|
56
|
-
corner.
|
|
53
|
+
turns it off and `TRACEPANEL_ENABLED=1` turns it on. The app's first request
|
|
54
|
+
starts the agent, which keeps the traces in `.tracepanel/` and serves the
|
|
55
|
+
console. Open a page and click the badge in the corner.
|
|
57
56
|
|
|
58
57
|
### Express
|
|
59
58
|
|
|
60
|
-
Start the app with Tracepanel loaded before it,
|
|
61
|
-
|
|
62
|
-
middleware. It puts the badge on HTML pages and gives every response its
|
|
63
|
-
trace id:
|
|
59
|
+
Start the app with Tracepanel loaded before it, and add the middleware. It
|
|
60
|
+
puts the badge on HTML pages and gives every response its trace id:
|
|
64
61
|
|
|
65
62
|
```bash
|
|
66
63
|
node --import @tracepanel/js/register server.js
|
|
@@ -74,10 +71,9 @@ const app = express();
|
|
|
74
71
|
app.use(tracepanel());
|
|
75
72
|
```
|
|
76
73
|
|
|
77
|
-
The flag
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Without the flag, either let the CLI add it:
|
|
74
|
+
The flag loads Tracepanel before the app's imports, which `import
|
|
75
|
+
"@tracepanel/js/register"` in `server.js` can't do. Without the flag, let the
|
|
76
|
+
CLI add it:
|
|
81
77
|
|
|
82
78
|
```json
|
|
83
79
|
{ "scripts": { "dev": "tracepanel run node server.js" } }
|
|
@@ -91,12 +87,10 @@ import "@tracepanel/js/register";
|
|
|
91
87
|
await import("./server.js");
|
|
92
88
|
```
|
|
93
89
|
|
|
94
|
-
The agent starts by itself either way, on the app's first request.
|
|
95
|
-
|
|
96
90
|
### Fastify
|
|
97
91
|
|
|
98
92
|
Load Tracepanel before the app as for Express, and register the plugin
|
|
99
|
-
before the routes
|
|
93
|
+
before the routes:
|
|
100
94
|
|
|
101
95
|
```bash
|
|
102
96
|
node --import @tracepanel/js/register server.js
|
|
@@ -111,11 +105,7 @@ await app.register(tracepanel());
|
|
|
111
105
|
app.get("/books/:id", async (request) => findBook(request.params.id));
|
|
112
106
|
```
|
|
113
107
|
|
|
114
|
-
Each request is named by its route (`GET /books/:id`)
|
|
115
|
-
step of its own, with the line that added the route. HTML pages get the
|
|
116
|
-
badge, sent whole or streamed. An error Fastify answers with a 500 is the
|
|
117
|
-
request's error, with its local variables; one it answers below 500, such
|
|
118
|
-
as a validation error or a `statusCode: 404`, is the response.
|
|
108
|
+
Each request is named by its route (`GET /books/:id`).
|
|
119
109
|
|
|
120
110
|
### Koa
|
|
121
111
|
|
|
@@ -139,10 +129,7 @@ router.get("/books/:id", async (ctx) => {
|
|
|
139
129
|
app.use(router.routes());
|
|
140
130
|
```
|
|
141
131
|
|
|
142
|
-
Each
|
|
143
|
-
the request, nested routers' prefixes included. The badge goes on HTML pages,
|
|
144
|
-
and on the answer Koa gives an error. `ctx.throw(404)` is the response, not
|
|
145
|
-
an error.
|
|
132
|
+
Each request is named by its `@koa/router` route.
|
|
146
133
|
|
|
147
134
|
### Hono
|
|
148
135
|
|
|
@@ -164,21 +151,14 @@ app.get("/books/:id", async (c) => c.json(await findBook(c.req.param("id"))));
|
|
|
164
151
|
serve({ fetch: app.fetch });
|
|
165
152
|
```
|
|
166
153
|
|
|
167
|
-
Each request is named by its route, a sub-app's base path included, and its
|
|
168
|
-
handler is a step of its own. HTML pages get the badge, and the request's
|
|
169
|
-
body goes into its trace as far as the handler read it. An `HTTPException`
|
|
170
|
-
below 500, or what `app.onError` answers below 500, is the response.
|
|
171
|
-
|
|
172
154
|
On Bun, add the same middleware and serve the app with `serve()` from
|
|
173
|
-
`@tracepanel/js/bun` (see Bun below)
|
|
155
|
+
`@tracepanel/js/bun` (see Bun below).
|
|
174
156
|
|
|
175
157
|
### NestJS
|
|
176
158
|
|
|
177
159
|
Nest runs on Express: load Tracepanel the same way and add the same
|
|
178
160
|
middleware in `main.ts`. Each request's handler is its controller method,
|
|
179
|
-
such as `BooksController.list
|
|
180
|
-
request's trace. An `HttpException` that answers below 500 is the response,
|
|
181
|
-
not an error.
|
|
161
|
+
such as `BooksController.list`.
|
|
182
162
|
|
|
183
163
|
```bash
|
|
184
164
|
node --import @tracepanel/js/register dist/main.js
|
|
@@ -196,8 +176,9 @@ await app.listen(3000);
|
|
|
196
176
|
|
|
197
177
|
### GraphQL
|
|
198
178
|
|
|
199
|
-
Add the plugin of your GraphQL server
|
|
200
|
-
middleware as above. GraphQL Yoga, on Express or any other
|
|
179
|
+
Add the plugin of your GraphQL server, and load Tracepanel and its
|
|
180
|
+
framework's middleware as above. GraphQL Yoga, on Express or any other
|
|
181
|
+
server:
|
|
201
182
|
|
|
202
183
|
```js
|
|
203
184
|
import { createYoga } from "graphql-yoga";
|
|
@@ -216,21 +197,13 @@ import { tracepanelApolloPlugin } from "@tracepanel/js/graphql";
|
|
|
216
197
|
const server = new ApolloServer({ typeDefs, resolvers, plugins: [tracepanelApolloPlugin()] });
|
|
217
198
|
```
|
|
218
199
|
|
|
219
|
-
Each request is named after its operation, such as `GraphQL query Books`,
|
|
220
|
-
|
|
221
|
-
GraphQL page lists them. The operation is a step with its parse and validate
|
|
222
|
-
phases, and each of your resolvers is a step, such as `Book.author`, with
|
|
223
|
-
the queries and calls it makes under it: an N+1 shows which field runs it.
|
|
224
|
-
Fields without a resolver of their own are left out. An exception a resolver
|
|
225
|
-
throws is the request's error though the client gets it with a 200; a
|
|
226
|
-
`GraphQLError` you answer with, and a client's syntax or validation error,
|
|
227
|
-
are not. The variables are in the request's body, their secrets masked.
|
|
200
|
+
Each request is named after its operation, such as `GraphQL query Books`,
|
|
201
|
+
and each of your resolvers is a step with its queries and calls under it.
|
|
228
202
|
|
|
229
203
|
### Next.js
|
|
230
204
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
of the bundles, and put the badge in the root layout:
|
|
205
|
+
Tracepanel goes in from the instrumentation hook. Keep the package out of the
|
|
206
|
+
bundles, and put the badge in the root layout:
|
|
234
207
|
|
|
235
208
|
```ts
|
|
236
209
|
// instrumentation.ts
|
|
@@ -261,26 +234,17 @@ export default function RootLayout({ children }) {
|
|
|
261
234
|
}
|
|
262
235
|
```
|
|
263
236
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
In development the app's server also serves the console at `/__tracepanel__/`
|
|
268
|
-
on its own origin, for this machine only, and the badge loads from there.
|
|
269
|
-
`<Tracepanel />` records the pages in the browser too, as the Vite plugin
|
|
270
|
-
does (see below). It takes the same options:
|
|
237
|
+
In development the app's server serves the console at `/__tracepanel__/`.
|
|
238
|
+
`<Tracepanel />` also records the pages in the browser, and takes the Vite
|
|
239
|
+
plugin's options (see below). `browser={false}` leaves the recording out:
|
|
271
240
|
|
|
272
241
|
```tsx
|
|
273
242
|
<Tracepanel browser={{ service: "shop-web", propagateTo: ["http://127.0.0.1:8000"] }} />
|
|
274
243
|
```
|
|
275
244
|
|
|
276
|
-
The recording is inline in `<head>`, so it wraps `fetch` before the app's
|
|
277
|
-
scripts run, even a client that keeps `fetch` from when it is made
|
|
278
|
-
(`openapi-fetch`). `browser={false}` leaves it out.
|
|
279
|
-
|
|
280
245
|
### Nuxt
|
|
281
246
|
|
|
282
|
-
Add the module and start `nuxt dev` with Tracepanel loaded
|
|
283
|
-
database driver as Nitro loads it:
|
|
247
|
+
Add the module and start `nuxt dev` with Tracepanel loaded:
|
|
284
248
|
|
|
285
249
|
```ts
|
|
286
250
|
// nuxt.config.ts
|
|
@@ -291,15 +255,11 @@ export default defineNuxtConfig({ modules: ["@tracepanel/js/nuxt"] });
|
|
|
291
255
|
NODE_OPTIONS=--import=@tracepanel/js/register nuxt dev
|
|
292
256
|
```
|
|
293
257
|
|
|
294
|
-
The module names each request by its route (`/api/books/:id`), puts the
|
|
295
|
-
badge on server-rendered pages, and records the errors h3 answers with a 500.
|
|
296
|
-
|
|
297
258
|
### Bun
|
|
298
259
|
|
|
299
260
|
`serve()` is `Bun.serve` with each route traced under its pattern, and
|
|
300
261
|
`withTracepanel()` wraps any fetch handler, such as Elysia's `handle`. A Hono
|
|
301
|
-
app is `serve({ fetch: app.fetch })`, with its `tracepanel()` middleware
|
|
302
|
-
Hono above) naming its routes:
|
|
262
|
+
app is `serve({ fetch: app.fetch })`, with its `tracepanel()` middleware:
|
|
303
263
|
|
|
304
264
|
```bash
|
|
305
265
|
bun --preload @tracepanel/js/register server.ts
|
|
@@ -317,10 +277,9 @@ serve({
|
|
|
317
277
|
|
|
318
278
|
### An SPA on Vite
|
|
319
279
|
|
|
320
|
-
A single-page app on Vite's dev server gets the badge from the plugin,
|
|
321
|
-
serves its API
|
|
322
|
-
|
|
323
|
-
from the backend project's `.tracepanel/`:
|
|
280
|
+
A single-page app on Vite's dev server gets the badge from the plugin,
|
|
281
|
+
whatever serves its API, in Node or in Python. It serves the backend's
|
|
282
|
+
console on Vite's origin, from the backend project's `.tracepanel/`:
|
|
324
283
|
|
|
325
284
|
```ts
|
|
326
285
|
// vite.config.ts
|
|
@@ -329,47 +288,24 @@ import { tracepanel } from "@tracepanel/js/vite";
|
|
|
329
288
|
export default { plugins: [tracepanel({ dir: "../backend" })] };
|
|
330
289
|
```
|
|
331
290
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
only, even with Vite on the network (`vite --host`): its traces and what it
|
|
335
|
-
lets a local caller do, such as switching the user, are the developer's.
|
|
336
|
-
|
|
337
|
-
An API on another origin exposes the trace's headers to the page on its CORS
|
|
338
|
-
responses, so the badge lists each call the app makes. A backend that serves
|
|
339
|
-
its own console (Django, FastAPI) is named with `console`:
|
|
291
|
+
A backend that serves its own console (Django, FastAPI) is named with
|
|
292
|
+
`console`:
|
|
340
293
|
|
|
341
294
|
```ts
|
|
342
295
|
tracepanel({ console: "http://localhost:8000/__tracepanel__/" });
|
|
343
296
|
```
|
|
344
297
|
|
|
345
|
-
The plugin also records the pages in the browser
|
|
346
|
-
or
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
console, with the line that logged each record, and lasts until its last
|
|
350
|
-
call answered. The console lists them in Pages, the page's view first and
|
|
351
|
-
its actions under it, and the badge's panel lists each action over the
|
|
352
|
-
requests it made.
|
|
353
|
-
|
|
354
|
-
A call to the page's own origin carries a W3C `traceparent`, so the console
|
|
355
|
-
links it to the API's trace. While the panel's Profile toggle is on, the
|
|
356
|
-
same calls carry `X-Tracepanel-Profile` (`1`, or `memory`), so an API on
|
|
357
|
-
another origin, which never gets the toggle's cookie, profiles the request
|
|
358
|
-
too, and so does each app it calls in turn. `propagateTo` names other
|
|
359
|
-
origins, whose CORS must allow both headers (`cors()` and
|
|
360
|
-
`allow_headers=["*"]` do):
|
|
298
|
+
The plugin also records the pages in the browser: each view and each click
|
|
299
|
+
or submit is a trace, with its API calls, errors and console output.
|
|
300
|
+
`propagateTo` names the API origins to link to the page's traces. Their CORS
|
|
301
|
+
must allow the `traceparent` and `X-Tracepanel-Profile` headers:
|
|
361
302
|
|
|
362
303
|
```ts
|
|
363
304
|
tracepanel({ dir: "../backend", browser: { service: "shop-web", propagateTo: ["http://127.0.0.1:8000"] } });
|
|
364
305
|
```
|
|
365
306
|
|
|
366
|
-
`browser: false` leaves the recording out. Vite
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
Without Vite, call `record()` from `@tracepanel/js/browser` in the page, with the
|
|
370
|
-
console on the page's origin (`api`, `/__tracepanel__/` by default).
|
|
371
|
-
`ignoreSources` takes the path prefixes of scripts whose console isn't the
|
|
372
|
-
page's, such as a dev server's client.
|
|
307
|
+
`browser: false` leaves the recording out. Without Vite, call `record()` from
|
|
308
|
+
`@tracepanel/js/browser` in the page.
|
|
373
309
|
|
|
374
310
|
## What it looks like
|
|
375
311
|
|
|
@@ -388,84 +324,28 @@ the line that ran it and the fix:
|
|
|
388
324
|
|
|
389
325
|
## What it records
|
|
390
326
|
|
|
391
|
-
- HTTP requests,
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
`
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
- A form's POST that redirects to another page: the panel on that page
|
|
414
|
-
lists the POST before it.
|
|
415
|
-
- SQL from `pg` and `mysql2` (and so Drizzle, Knex, Sequelize, TypeORM and
|
|
416
|
-
Prisma's driver adapters), and from SQLite through `better-sqlite3`,
|
|
417
|
-
Node's `node:sqlite` and `libsql`, with the line of your code that ran each
|
|
418
|
-
statement. A statement no code of yours made, such as a session store's,
|
|
419
|
-
names the library code that asked for it, past the driver and the ORM;
|
|
420
|
-
so do Redis and MongoDB commands. Prisma's operations show as steps.
|
|
421
|
-
- Transactions: BEGIN … COMMIT (or ROLLBACK) on a `pg` client, a `mysql2`
|
|
422
|
-
connection or a SQLite database, and better-sqlite3's `db.transaction()`,
|
|
423
|
-
with its statements and the calls made inside it, and its savepoints.
|
|
424
|
-
- The console's EXPLAIN of a SQLite query (EXPLAIN QUERY PLAN) runs on the
|
|
425
|
-
app's own connection, so a database in memory has a plan too.
|
|
426
|
-
- Redis commands (`ioredis`, `redis`) and MongoDB commands, with their own
|
|
427
|
-
N+1 and duplicates.
|
|
428
|
-
- Outgoing HTTP calls: `fetch()`, and `node:http` clients such as axios, on
|
|
429
|
-
Node and on Bun.
|
|
430
|
-
- BullMQ: each job a worker runs is a task, each job the app adds a step.
|
|
431
|
-
While a job is in flight, the console's Tasks page lists it under Now:
|
|
432
|
-
queued, running in its worker, or waiting for its next attempt, and the
|
|
433
|
-
workers that run them.
|
|
434
|
-
- Logs made during a request: `console` calls, Nest's `Logger`, and pino's
|
|
435
|
-
and winston's loggers, with their fields and the error they carry.
|
|
436
|
-
- Errors thrown in a handler, with your frames, their source and their
|
|
437
|
-
local variables. Node's inspector reads the variables as the error is
|
|
438
|
-
thrown, in your own frames only, while a request runs; a value under a
|
|
439
|
-
name such as `password` or `token` is masked, and a long one is cut. A
|
|
440
|
-
caller waiting on an `await` has none. Each error read costs about a
|
|
441
|
-
millisecond, at most 50 a second; a process under a debugger
|
|
442
|
-
(`--inspect`) is left alone.
|
|
443
|
-
- Where a request's time goes in code, for the console's flame graph, when
|
|
444
|
-
it asks: the panel's Profile toggle, or an `X-Tracepanel-Profile: 1`
|
|
445
|
-
header. V8's profiler samples the whole process, and one event loop runs
|
|
446
|
-
every request at once, so a profile keeps the samples taken while its
|
|
447
|
-
request was the only one running, and counts the rest
|
|
448
|
-
(`tracepanel.dropped_samples`). Time spent waiting on I/O is not in it.
|
|
449
|
-
Every profile counts the garbage collector's runs and their pauses.
|
|
450
|
-
A request profiled because it asked asks the same of the apps it calls:
|
|
451
|
-
each call that carries a `traceparent` (fetch, node:http, axios, got)
|
|
452
|
-
carries `X-Tracepanel-Profile` too, so the panel's toggle profiles the
|
|
453
|
-
whole chain. `TRACEPANEL_PROFILE=1` asks nothing of them: each app's own
|
|
454
|
-
setting decides.
|
|
455
|
-
- A profile's memory too, when asked: `X-Tracepanel-Profile: memory`, the
|
|
456
|
-
`tracepanel_profile=memory` cookie (the panel's Profile toggle offers
|
|
457
|
-
it), or `TRACEPANEL_PROFILE_MEMORY=1`. V8's sampling heap profiler takes
|
|
458
|
-
about one allocation in every 32 KB with its stack: the profile shows the
|
|
459
|
-
heap's peak above where the request started, what V8 allocated in all
|
|
460
|
-
(on Node 26), and the 50 sites whose allocations still lived at its end.
|
|
461
|
-
The heap is the whole process's, so a request that ran beside others says
|
|
462
|
-
so. It costs: code runs about 15% slower while it is sampled, and reading
|
|
463
|
-
the sampler's profile makes V8 collect the whole heap once at the end of
|
|
464
|
-
each such request, after its response, which stops the process for a few
|
|
465
|
-
milliseconds on a small heap and over 100 ms on a heap of a few hundred
|
|
466
|
-
MB. Leave it off when you measure time. Not on Bun.
|
|
467
|
-
- The caller's trace, when a request carries a W3C `traceparent`: the agent
|
|
468
|
-
links the two.
|
|
327
|
+
- HTTP requests: route, handler, headers, query, cookies and the body the app
|
|
328
|
+
read, secrets masked.
|
|
329
|
+
- The session as the handler left it: express-session, cookie-session, h3's
|
|
330
|
+
`useSession()`.
|
|
331
|
+
- A form's POST that redirects, listed on the next page's panel.
|
|
332
|
+
- SQL from `pg` and `mysql2`, and so Drizzle, Knex, Sequelize, TypeORM and
|
|
333
|
+
Prisma.
|
|
334
|
+
- SQLite from `better-sqlite3`, `node:sqlite` and `libsql`.
|
|
335
|
+
- The line of your code that ran each query.
|
|
336
|
+
- Transactions and their savepoints, with the statements inside them.
|
|
337
|
+
- Redis commands from `ioredis` and `redis`, and MongoDB commands.
|
|
338
|
+
- Outgoing HTTP calls from `fetch()` and `node:http` clients such as axios.
|
|
339
|
+
- BullMQ jobs as tasks, and the jobs in flight.
|
|
340
|
+
- Logs from `console`, pino, winston and Nest's `Logger`, with their fields.
|
|
341
|
+
- Errors thrown in a handler, with your frames, their source and local
|
|
342
|
+
variables.
|
|
343
|
+
- Where a request's CPU time and memory go, when you ask for a profile, on
|
|
344
|
+
Node.
|
|
345
|
+
- The caller's trace, when a request carries a W3C `traceparent`.
|
|
346
|
+
|
|
347
|
+
What each integration records, and its limits, are in
|
|
348
|
+
[Integrations](https://tracepanel.dev/docs/javascript/integrations).
|
|
469
349
|
|
|
470
350
|
## Your own steps and traces
|
|
471
351
|
|
|
@@ -500,7 +380,7 @@ export default defineConfig({
|
|
|
500
380
|
Each test runs as a trace named after the test, with its queries in it. A
|
|
501
381
|
request the test makes of a server it started (supertest, `fetch()`) is a
|
|
502
382
|
trace of its own, linked to the test's in the console. Work in `beforeAll` is
|
|
503
|
-
outside every test's trace
|
|
383
|
+
outside every test's trace. `beforeEach` and `afterEach` run inside it.
|
|
504
384
|
|
|
505
385
|
When the test passes, the agent looks at its traces. An issue of a kind in
|
|
506
386
|
`failOn` (`n+1` and `duplicates` by default) fails the test with the issue,
|
|
@@ -551,9 +431,9 @@ setUser({ id: customer.id, username: customer.email });
|
|
|
551
431
|
|
|
552
432
|
Call `setUser()` where the app knows who is signed in, such as its auth
|
|
553
433
|
middleware. The request's trace gets `user.id`, and `user.username` and
|
|
554
|
-
`user.email` when given
|
|
555
|
-
|
|
556
|
-
|
|
434
|
+
`user.email` when given. `setUser(null)` marks a request nobody signed in
|
|
435
|
+
to. The username and email stay on your machine. Outside a trace it does
|
|
436
|
+
nothing.
|
|
557
437
|
|
|
558
438
|
## Settings
|
|
559
439
|
|
package/dist/browser.js
CHANGED
|
@@ -236,6 +236,8 @@ export function record(options = {}) {
|
|
|
236
236
|
root,
|
|
237
237
|
w3cTraceId,
|
|
238
238
|
pending: 0,
|
|
239
|
+
open: new Set(),
|
|
240
|
+
sent: false,
|
|
239
241
|
lastActivityMs: performance.now(),
|
|
240
242
|
endUs: startUs,
|
|
241
243
|
timer: undefined,
|
|
@@ -264,6 +266,17 @@ export function record(options = {}) {
|
|
|
264
266
|
view = undefined;
|
|
265
267
|
if (current.timer)
|
|
266
268
|
clearTimeout(current.timer);
|
|
269
|
+
if (current.sent)
|
|
270
|
+
return;
|
|
271
|
+
current.sent = true;
|
|
272
|
+
// A call still open (a route change, the tab going away, the longest wait) goes out as far as it got: no answer
|
|
273
|
+
// yet, so no status code, and marked unfinished.
|
|
274
|
+
const sentUs = nowUs();
|
|
275
|
+
for (const span of current.open) {
|
|
276
|
+
span.duration = sentUs - span.start;
|
|
277
|
+
span.attrs["http.unfinished"] = true;
|
|
278
|
+
}
|
|
279
|
+
current.open.clear();
|
|
267
280
|
// Until its last call answered, not the quiet second after: a view, until the page's load too.
|
|
268
281
|
const lastSpan = Math.max(...current.trace.spans.map((span) => span.start + span.duration));
|
|
269
282
|
let end = Math.max(current.endUs, lastSpan, current.trace.start);
|
|
@@ -343,19 +356,27 @@ export function record(options = {}) {
|
|
|
343
356
|
};
|
|
344
357
|
if (current.trace.spans.length < MAX_SPANS)
|
|
345
358
|
current.trace.spans.push(span);
|
|
359
|
+
current.open.add(span);
|
|
346
360
|
const propagated = propagate.has(url.origin);
|
|
347
361
|
return {
|
|
348
362
|
traceparent: propagated ? `00-${current.w3cTraceId}-${spanId}-01` : undefined,
|
|
349
363
|
// Where a traceparent goes, the panel's Profile asks for a profile too.
|
|
350
364
|
profile: propagated ? profileAsked() : undefined,
|
|
351
365
|
page: current.trace.id,
|
|
352
|
-
finish(status,
|
|
366
|
+
finish(status, failure) {
|
|
367
|
+
current.pending -= 1;
|
|
368
|
+
// Its trace went out without it: closed there as unfinished.
|
|
369
|
+
if (!current.open.delete(span))
|
|
370
|
+
return;
|
|
353
371
|
span.duration = nowUs() - span.start;
|
|
354
372
|
current.endUs = Math.max(current.endUs, span.start + span.duration);
|
|
355
|
-
|
|
356
|
-
if (
|
|
373
|
+
// No answer (the network, CORS, an abort): no status code, why it failed instead, as OpenTelemetry has it.
|
|
374
|
+
if (failure !== undefined)
|
|
375
|
+
span.attrs["error.type"] = failure;
|
|
376
|
+
else
|
|
377
|
+
span.attrs["http.response.status_code"] = status;
|
|
378
|
+
if (failure !== undefined || status >= 500)
|
|
357
379
|
span.status = "error";
|
|
358
|
-
current.pending -= 1;
|
|
359
380
|
touch(current);
|
|
360
381
|
},
|
|
361
382
|
};
|
|
@@ -376,11 +397,11 @@ export function record(options = {}) {
|
|
|
376
397
|
Object.defineProperty(arrived, PAGE, { value: out.page });
|
|
377
398
|
return arrived;
|
|
378
399
|
});
|
|
379
|
-
out.finish(response.status
|
|
400
|
+
out.finish(response.status);
|
|
380
401
|
return response;
|
|
381
402
|
}
|
|
382
403
|
catch (error) {
|
|
383
|
-
out.finish(0,
|
|
404
|
+
out.finish(0, (error instanceof Error && error.name) || "Error");
|
|
384
405
|
throw error;
|
|
385
406
|
}
|
|
386
407
|
};
|
|
@@ -401,7 +422,12 @@ export function record(options = {}) {
|
|
|
401
422
|
this.setRequestHeader(PROFILE_HEADER, out.profile);
|
|
402
423
|
if (out.page)
|
|
403
424
|
Object.defineProperty(this, PAGE, { value: out.page, configurable: true });
|
|
404
|
-
|
|
425
|
+
// No answer: why, from the event before loadend (a network error, an abort, the request's timeout).
|
|
426
|
+
let failure = "Error";
|
|
427
|
+
this.addEventListener("error", () => (failure = "NetworkError"));
|
|
428
|
+
this.addEventListener("abort", () => (failure = "AbortError"));
|
|
429
|
+
this.addEventListener("timeout", () => (failure = "timeout"));
|
|
430
|
+
this.addEventListener("loadend", () => out.finish(this.status, this.status === 0 ? failure : undefined));
|
|
405
431
|
}
|
|
406
432
|
return sendXhr.call(this, body);
|
|
407
433
|
};
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/sql.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
/** The statement on one line, a line comment (`-- a note`) closed so the line it ended still reads as SQL. */
|
|
1
2
|
export declare function statement(sql: string): string;
|
|
2
3
|
export declare function fingerprint(sql: string): string;
|
|
3
|
-
/** `SELECT category`: the verb and the table, its schema and quotes left out. */
|
|
4
|
-
export declare function spanName(
|
|
4
|
+
/** `SELECT category`: the verb and the table, its schema and quotes left out, its comments too. */
|
|
5
|
+
export declare function spanName(commented: string): string;
|
package/dist/sql.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// A statement's span name, its one-line form, and its fingerprint, which the agent groups queries (and finds N+1
|
|
2
2
|
// queries) by: the same rules in every Tracepanel SDK.
|
|
3
3
|
const WHITESPACE = /\s+/g;
|
|
4
|
+
// A comment (`-- a note` to the line's end, `/* sqlcommenter's tags */`), or a string or quoted name, whose `--` and
|
|
5
|
+
// `/*` are its text: matched so a comment is told from a string that looks like one.
|
|
6
|
+
const COMMENT = /(--[^\n]*)|(\/\*[\s\S]*?\*\/)|'(?:[^']|'')*'|"(?:[^"]|"")*"|`[^`]*`/g;
|
|
4
7
|
const IN_LIST = /\bIN \((?:%s|\?|\$\d+)(?:, ?(?:%s|\?|\$\d+))*\)/gi;
|
|
5
8
|
// One part of a table's name, bare or quoted: "standard SQL", `MySQL`, [SQL Server].
|
|
6
9
|
const PART = String.raw `(?:"[^"]+"|\`[^\`]+\`|\[[^\]]+\]|[\w$]+)`;
|
|
@@ -8,14 +11,26 @@ const PART = String.raw `(?:"[^"]+"|\`[^\`]+\`|\[[^\]]+\]|[\w$]+)`;
|
|
|
8
11
|
const TABLE = new RegExp(String.raw `\b(?:FROM|INTO|UPDATE|JOIN)\s+(${PART}(?:\s*\.\s*${PART})*)`, "i");
|
|
9
12
|
const PARTS = new RegExp(PART, "g");
|
|
10
13
|
const COUNT = /^\s*SELECT\s+COUNT\(/i;
|
|
14
|
+
/** The statement on one line, a line comment (`-- a note`) closed so the line it ended still reads as SQL. */
|
|
11
15
|
export function statement(sql) {
|
|
12
|
-
|
|
16
|
+
const closed = sql.includes("--")
|
|
17
|
+
? sql.replace(COMMENT, (found, line) => line === undefined ? found : `/* ${line.slice(2).trim().replaceAll("*/", "* /")} */`)
|
|
18
|
+
: sql;
|
|
19
|
+
return closed.replace(WHITESPACE, " ").trim();
|
|
20
|
+
}
|
|
21
|
+
/** The one-line statement without its comments (an ORM's or sqlcommenter's tags, a note): what names and groups it. */
|
|
22
|
+
function uncommented(sql) {
|
|
23
|
+
if (!sql.includes("--") && !sql.includes("/*")) {
|
|
24
|
+
return statement(sql);
|
|
25
|
+
}
|
|
26
|
+
return statement(sql.replace(COMMENT, (found, line, block) => line === undefined && block === undefined ? found : " "));
|
|
13
27
|
}
|
|
14
28
|
export function fingerprint(sql) {
|
|
15
|
-
return
|
|
29
|
+
return uncommented(sql).replace(IN_LIST, "IN (...)");
|
|
16
30
|
}
|
|
17
|
-
/** `SELECT category`: the verb and the table, its schema and quotes left out. */
|
|
18
|
-
export function spanName(
|
|
31
|
+
/** `SELECT category`: the verb and the table, its schema and quotes left out, its comments too. */
|
|
32
|
+
export function spanName(commented) {
|
|
33
|
+
const sql = uncommented(commented);
|
|
19
34
|
const verb = COUNT.test(sql) ? "SELECT COUNT" : (sql.trim().split(/\s+/)[0] ?? "SQL").toUpperCase() || "SQL";
|
|
20
35
|
const name = TABLE.exec(sql)?.[1];
|
|
21
36
|
const table = name
|
package/dist/sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,uDAAuD;AAEvD,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,OAAO,GAAG,mDAAmD,CAAC;AACpE,qFAAqF;AACrF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA,0CAA0C,CAAC;AAClE,gHAAgH;AAChH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,kCAAkC,IAAI,cAAc,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;AACvG,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,MAAM,KAAK,GAAG,uBAAuB,CAAC;AAEtC,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,uDAAuD;AAEvD,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,qHAAqH;AACrH,qFAAqF;AACrF,MAAM,OAAO,GAAG,sEAAsE,CAAC;AACvF,MAAM,OAAO,GAAG,mDAAmD,CAAC;AACpE,qFAAqF;AACrF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA,0CAA0C,CAAC;AAClE,gHAAgH;AAChH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,kCAAkC,IAAI,cAAc,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;AACvG,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,MAAM,KAAK,GAAG,uBAAuB,CAAC;AAEtC,8GAA8G;AAC9G,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE,CAC5C,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CACrF;QACH,CAAC,CAAC,GAAG,CAAC;IACR,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,uHAAuH;AACvH,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,SAAS,CACd,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAa,EAAE,KAAc,EAAE,EAAE,CAC5D,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CACxD,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC;IAC7G,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI;QAChB,EAAE,KAAK,CAAC,KAAK,CAAC;QACd,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACR,EAAE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC"}
|
package/dist/vite.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// Only this machine reaches the console here, whatever address Vite listens on (`vite --host` for a phone): the
|
|
12
12
|
// backend sees the proxy's own address, so its own local-only checks (switching the user) would let anyone through.
|
|
13
13
|
import { existsSync, readFileSync } from "node:fs";
|
|
14
|
-
import { dirname, join, resolve } from "node:path";
|
|
14
|
+
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
15
15
|
import { Starter } from "./agent.js";
|
|
16
16
|
import { answeredHere, forward, PREFIX } from "./proxy.js";
|
|
17
17
|
/** The console's address: given, or what the project's agent wrote in .tracepanel/console.addr. */
|
|
@@ -19,13 +19,17 @@ function consoleAddress(options, root) {
|
|
|
19
19
|
const given = options.console ?? process.env.TRACEPANEL_CONSOLE;
|
|
20
20
|
if (given)
|
|
21
21
|
return given;
|
|
22
|
+
const store = process.env.TRACEPANEL_DIR ?? ".tracepanel";
|
|
23
|
+
// A store given by its absolute path is the one: no folder to look up from.
|
|
24
|
+
if (isAbsolute(store))
|
|
25
|
+
return read(join(store, "console.addr"));
|
|
22
26
|
const starts = options.dir ? [resolve(root, options.dir)] : [root];
|
|
23
27
|
for (const start of starts) {
|
|
24
28
|
let folder = start;
|
|
25
29
|
for (;;) {
|
|
26
|
-
const file = join(folder,
|
|
30
|
+
const file = join(folder, store, "console.addr");
|
|
27
31
|
if (existsSync(file))
|
|
28
|
-
return
|
|
32
|
+
return read(file);
|
|
29
33
|
const parent = dirname(folder);
|
|
30
34
|
if (parent === folder)
|
|
31
35
|
break;
|
|
@@ -34,6 +38,10 @@ function consoleAddress(options, root) {
|
|
|
34
38
|
}
|
|
35
39
|
return undefined;
|
|
36
40
|
}
|
|
41
|
+
/** An address file's address, if it has one. */
|
|
42
|
+
function read(file) {
|
|
43
|
+
return existsSync(file) ? readFileSync(file, "utf8").trim() || undefined : undefined;
|
|
44
|
+
}
|
|
37
45
|
/**
|
|
38
46
|
* Where the backend project keeps its store, for an agent the plugin starts itself: its `dir`, else Vite's root. None
|
|
39
47
|
* when the console is given (a backend that serves its own, as Django does, starts its agent itself).
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,EAAE;AACF,sBAAsB;AACtB,sDAAsD;AACtD,qEAAqE;AACrE,EAAE;AACF,8GAA8G;AAC9G,kHAAkH;AAClH,uFAAuF;AACvF,EAAE;AACF,gHAAgH;AAChH,oHAAoH;AAEpH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tracepanel/js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Traces and logs for Node.js and Bun apps (Express, Fastify, Koa, Hono, NestJS, Next.js, Nuxt, Bun.serve, GraphQL Yoga, Apollo Server): every request with its SQL, logs and errors, N+1 queries found",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"@opentelemetry/sdk-trace-base": "^2.12.0",
|
|
99
99
|
"@opentelemetry/sdk-trace-node": "^2.12.0",
|
|
100
100
|
"@prisma/instrumentation": "^7.10.0",
|
|
101
|
-
"@tracepanel/agent": "~0.
|
|
101
|
+
"@tracepanel/agent": "~0.9.2",
|
|
102
102
|
"import-in-the-middle": "^3.5.2"
|
|
103
103
|
},
|
|
104
104
|
"peerDependencies": {
|