@tracepanel/js 0.5.0 → 0.7.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 (92) hide show
  1. package/README.md +265 -14
  2. package/dist/agent.d.ts +5 -1
  3. package/dist/agent.js +12 -3
  4. package/dist/agent.js.map +1 -1
  5. package/dist/aws.d.ts +27 -0
  6. package/dist/aws.js +368 -0
  7. package/dist/aws.js.map +1 -0
  8. package/dist/browser.d.ts +4 -1
  9. package/dist/browser.js +33 -3
  10. package/dist/browser.js.map +1 -1
  11. package/dist/bun.js +6 -82
  12. package/dist/bun.js.map +1 -1
  13. package/dist/calls.d.ts +5 -0
  14. package/dist/calls.js +7 -0
  15. package/dist/calls.js.map +1 -1
  16. package/dist/config.d.ts +7 -0
  17. package/dist/config.js +2 -0
  18. package/dist/config.js.map +1 -1
  19. package/dist/explain.d.ts +5 -0
  20. package/dist/explain.js +56 -7
  21. package/dist/explain.js.map +1 -1
  22. package/dist/express.js +43 -3
  23. package/dist/express.js.map +1 -1
  24. package/dist/fastify.d.ts +2 -0
  25. package/dist/fastify.js +100 -0
  26. package/dist/fastify.js.map +1 -0
  27. package/dist/frameworks.js +3 -0
  28. package/dist/frameworks.js.map +1 -1
  29. package/dist/graphql.d.ts +39 -0
  30. package/dist/graphql.js +337 -0
  31. package/dist/graphql.js.map +1 -0
  32. package/dist/hono.d.ts +2 -0
  33. package/dist/hono.js +63 -0
  34. package/dist/hono.js.map +1 -0
  35. package/dist/koa.d.ts +2 -0
  36. package/dist/koa.js +119 -0
  37. package/dist/koa.js.map +1 -0
  38. package/dist/llm.d.ts +20 -0
  39. package/dist/llm.js +632 -0
  40. package/dist/llm.js.map +1 -0
  41. package/dist/memory.d.ts +69 -0
  42. package/dist/memory.js +203 -0
  43. package/dist/memory.js.map +1 -0
  44. package/dist/model.d.ts +22 -1
  45. package/dist/model.js.map +1 -1
  46. package/dist/next.js +4 -4
  47. package/dist/next.js.map +1 -1
  48. package/dist/processor.d.ts +50 -5
  49. package/dist/processor.js +193 -30
  50. package/dist/processor.js.map +1 -1
  51. package/dist/profile.d.ts +34 -8
  52. package/dist/profile.js +98 -13
  53. package/dist/profile.js.map +1 -1
  54. package/dist/propagation.d.ts +12 -0
  55. package/dist/propagation.js +48 -0
  56. package/dist/propagation.js.map +1 -0
  57. package/dist/queries.d.ts +20 -0
  58. package/dist/queries.js +75 -0
  59. package/dist/queries.js.map +1 -0
  60. package/dist/respond.d.ts +12 -0
  61. package/dist/respond.js +85 -0
  62. package/dist/respond.js.map +1 -0
  63. package/dist/setup.js +27 -6
  64. package/dist/setup.js.map +1 -1
  65. package/dist/sql.d.ts +1 -0
  66. package/dist/sql.js +11 -2
  67. package/dist/sql.js.map +1 -1
  68. package/dist/sqlite.d.ts +13 -0
  69. package/dist/sqlite.js +291 -0
  70. package/dist/sqlite.js.map +1 -0
  71. package/dist/stack.d.ts +3 -1
  72. package/dist/stack.js +30 -6
  73. package/dist/stack.js.map +1 -1
  74. package/dist/testing.d.ts +128 -0
  75. package/dist/testing.js +362 -0
  76. package/dist/testing.js.map +1 -0
  77. package/dist/transactions.d.ts +11 -1
  78. package/dist/transactions.js +70 -34
  79. package/dist/transactions.js.map +1 -1
  80. package/dist/view.d.ts +17 -0
  81. package/dist/view.js +71 -0
  82. package/dist/view.js.map +1 -0
  83. package/dist/vitest-setup.d.ts +1 -0
  84. package/dist/vitest-setup.js +63 -0
  85. package/dist/vitest-setup.js.map +1 -0
  86. package/dist/vitest.d.ts +57 -0
  87. package/dist/vitest.js +130 -0
  88. package/dist/vitest.js.map +1 -0
  89. package/dist/widget.d.ts +16 -0
  90. package/dist/widget.js +42 -1
  91. package/dist/widget.js.map +1 -1
  92. package/package.json +81 -4
package/dist/processor.js CHANGED
@@ -2,21 +2,30 @@
2
2
  // each request's spans become one Tracepanel trace, sent to the agent when the request's span ends.
3
3
  import { createHash } from "node:crypto";
4
4
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
5
+ import { awsCall, isAws } from "./aws.js";
5
6
  import { httpCall, isMongo, isRedis, mongoCall, redisCall } from "./calls.js";
6
7
  import { CALL_ORIGIN } from "./fetch.js";
7
8
  import { withVersion } from "./frameworks.js";
9
+ import { GRAPHQL, RESOLVER } from "./graphql.js";
10
+ import { ANTHROPIC_SCOPE, KIND as LLM } from "./llm.js";
8
11
  import { Locals } from "./locals.js";
9
12
  import { countDropped, limited, MAX_LOGS, micros, newId, } from "./model.js";
10
- import { ASKED, ATTRIBUTE, available, Profiler, wanted } from "./profile.js";
13
+ import { ASKED, ATTRIBUTE, asking, available, Profiler, wanted } from "./profile.js";
14
+ import { QUERY_ORIGIN } from "./queries.js";
11
15
  import { fingerprint, spanName, statement } from "./sql.js";
12
16
  import { frames, madeAt } from "./stack.js";
13
17
  import { CONTROL } from "./transactions.js";
18
+ import { VIEW } from "./view.js";
19
+ /** The kinds of work a trace() or an integration starts a trace of: tracepanel.kind on its root span. */
20
+ const WORK = new Set(["command", "task", "test"]);
14
21
  // A request's span can end after the response does (Express ends an async handler's span when its promise settles):
15
22
  // the trace goes out this long after the request's span ends, with the spans that ended meanwhile.
16
23
  const LATE_SPANS_MS = 25;
17
24
  // A request whose root span never ends (the client went away mid-stream and the framework didn't end it) is dropped
18
25
  // after this long, so the open traces don't grow for ever.
19
26
  const ABANDONED_MS = 10 * 60 * 1000;
27
+ // What serves a request, below the framework that answers it.
28
+ const SERVERS = new Set(["node:http", "Bun.serve"]);
20
29
  // Spans that are bookkeeping, not work: Express's middleware and routers, a driver's connection checkouts, and
21
30
  // Nest's inner handler span (the same call as its request context span, which names the controller).
22
31
  const SKIPPED_EXPRESS = new Set(["middleware", "router"]);
@@ -44,6 +53,8 @@ const NEXT_HANDLERS = new Set([
44
53
  // Requests that aren't the app's work: Next.js's for its own assets and dev tooling, and the ones to Tracepanel's
45
54
  // console on the app's own origin (the widget, the page's recording sending its traces).
46
55
  const INTERNAL = /^\/(_next|__nextjs|__tracepanel__\/)/;
56
+ // Prisma's span of an interactive transaction, $transaction(async (tx) => ...): the app's callback runs in its context.
57
+ const ORM_TRANSACTIONS = new Set(["prisma:client:transaction"]);
47
58
  // Prisma's own spans besides the operation: its SQL goes through the driver adapter's driver (pg, mysql2), recorded
48
59
  // there; the rest is its query engine's bookkeeping.
49
60
  const SKIPPED_NAMES = /^(pg\.connect|pg-pool\.connect|mysql2?\.connect|prisma:(?!client:operation$))/;
@@ -70,7 +81,20 @@ function skipped(span) {
70
81
  return (SKIPPED_EXPRESS.has(String(attrs["express.type"])) ||
71
82
  SKIPPED_NEST.has(String(attrs["nestjs.type"])) ||
72
83
  SKIPPED_NEXT.has(String(attrs["next.span_type"])) ||
73
- SKIPPED_NAMES.test(span.name));
84
+ SKIPPED_NAMES.test(span.name) ||
85
+ // Anthropic's SDK's own span of a call: the LLM call's span (llm.ts) is the call.
86
+ span.instrumentationScope?.name.startsWith(ANTHROPIC_SCOPE) === true);
87
+ }
88
+ /** A value an instrumentation kept as JSON (an attribute holds no objects); undefined when there is none. */
89
+ function parsed(value) {
90
+ if (typeof value !== "string")
91
+ return undefined;
92
+ try {
93
+ return JSON.parse(value);
94
+ }
95
+ catch {
96
+ return undefined;
97
+ }
74
98
  }
75
99
  function statementOf(attrs) {
76
100
  const text = first(attrs, "db.query.text", "db.statement");
@@ -89,7 +113,9 @@ export class TracepanelProcessor {
89
113
  profiler;
90
114
  /** What reads an error's local variables: made as the first trace starts; null where it can't be. */
91
115
  locals;
92
- constructor(config, sink) {
116
+ constructor(config,
117
+ /** Where the traces go: a test runner's integration puts its own in front of the agent's (testing.ts). */
118
+ sink) {
93
119
  this.config = config;
94
120
  this.sink = sink;
95
121
  this.profiler =
@@ -104,15 +130,16 @@ export class TracepanelProcessor {
104
130
  if (local) {
105
131
  // A request, or work outside one that trace() or a task queue started: tracepanel.kind says which.
106
132
  const kind = attrsOf(span)["tracepanel.kind"];
107
- if (span.kind !== SpanKind.SERVER && kind !== "command" && kind !== "task")
133
+ if (span.kind !== SpanKind.SERVER && !WORK.has(String(kind)))
108
134
  return;
109
135
  if (INTERNAL.test(String(first(attrsOf(span), "http.target", "url.path") ?? "")))
110
136
  return;
111
137
  this.dropAbandoned();
112
138
  building = this.start();
113
- if (kind === "command" || kind === "task")
139
+ if (kind === "command" || kind === "task" || kind === "test")
114
140
  building.trace.kind = kind;
115
141
  building.rootSpanId = context.spanId;
142
+ building.traceId = context.traceId;
116
143
  const rootAttrs = attrsOf(span);
117
144
  building.request = requestKey(first(rootAttrs, "http.request.method", "http.method"), first(rootAttrs, "http.target", "url.path"));
118
145
  this.open.set(context.spanId, building);
@@ -120,22 +147,42 @@ export class TracepanelProcessor {
120
147
  this.profiler?.enter(building);
121
148
  // The request asked for it: its root span says so (Node's HTTP server, Bun.serve), or the context the framework
122
149
  // started it in (Next.js).
123
- const asked = rootAttrs[ATTRIBUTE] === true || parentContext.getValue(ASKED) === true;
124
- if (this.profiler && wanted(this.config, asked))
125
- building.recording = this.profiler.start(building);
150
+ const asked = asking(rootAttrs[ATTRIBUTE]) ?? asking(parentContext.getValue(ASKED));
151
+ const mode = this.profiler ? wanted(this.config, asked) : undefined;
152
+ if (mode)
153
+ building.recording = this.profiler?.start(building, mode === "memory");
154
+ // "memory" goes on as asked, though this runtime may profile the time only: the next app may count it.
155
+ if (mode && asked)
156
+ building.asked = asked;
126
157
  }
127
158
  if (!building)
128
159
  return;
129
160
  this.owner.set(context.spanId, building);
130
- const { origin: found, caller } = madeAt(this.config.root);
131
- if (found)
132
- building.lastOrigin = found;
133
- if (caller)
134
- building.callers.set(context.spanId, caller);
135
161
  const attrs = attrsOf(span);
162
+ const here = madeAt(this.config.root);
163
+ // A query whose stack has none of the app's code (Bun's, no async frames) was made where the app last called its
164
+ // ORM, in this context (queries.ts).
165
+ const query = here.origin || !first(attrs, "db.system.name", "db.system") ? undefined : queryOrigin(parentContext);
166
+ const found = here.origin ?? query?.origin ?? null;
167
+ const ormHere = here.orm ?? query?.orm ?? null;
168
+ // A driver's call made in a callback (pg-pool's query, once it has a connection) has neither the app's frames nor
169
+ // its ORM's on the stack: it went through the ORM of the app's last call, as it was made where that one was.
170
+ const orm = found ? ormHere : (ormHere ?? building.lastOrm);
171
+ if (found) {
172
+ building.lastOrigin = found;
173
+ building.lastOrm = ormHere;
174
+ }
175
+ if (here.caller && !found)
176
+ building.callers.set(context.spanId, here.caller);
177
+ if (orm)
178
+ building.orms.set(context.spanId, orm);
136
179
  if (!local && parent && skipped(span)) {
137
180
  building.ids.set(context.spanId, building.ids.get(parent.spanId) ?? null);
138
181
  building.passedOrigins.set(context.spanId, found ?? building.passedOrigins.get(parent.spanId) ?? null);
182
+ building.skippedParents.set(context.spanId, {
183
+ parent: parent.spanId,
184
+ ormTransaction: ORM_TRANSACTIONS.has(span.name),
185
+ });
139
186
  return;
140
187
  }
141
188
  if (attrs["tracepanel.span_kind"] === "transaction")
@@ -152,12 +199,34 @@ export class TracepanelProcessor {
152
199
  if (!parent && attrs["next.span_type"] === "BaseServer.handleRequest")
153
200
  building.framework = "Next.js";
154
201
  building.ids.set(context.spanId, newId());
202
+ if (parent && building.transactions.has(context.spanId))
203
+ this.adopt(building, parent.spanId, context.spanId);
155
204
  // A span started outside the app's code (undici's, under Next's fetch span) is the call the app made there.
156
205
  // So is one a call made from its context, which took the app's line as the app called it (fetch()).
157
206
  const passed = (parent ? building.passedOrigins.get(parent.spanId) : undefined) ??
158
207
  parentContext.getValue(CALL_ORIGIN);
159
208
  building.origins.set(context.spanId, found ?? passed ?? building.lastOrigin);
160
209
  }
210
+ /**
211
+ * A transaction an ORM began from its own span (Prisma's interactive $transaction: BEGIN is sent from its engine,
212
+ * under its prisma:client:transaction span, while the app's callback runs in that span's context): what the callback
213
+ * does (its queries, HTTP calls, jobs) goes inside the transaction span, as it does when the app sends BEGIN itself.
214
+ */
215
+ adopt(building, parentSpanId, spanId) {
216
+ let at = parentSpanId;
217
+ while (at !== undefined) {
218
+ const skippedSpan = building.skippedParents.get(at);
219
+ if (!skippedSpan)
220
+ return;
221
+ if (skippedSpan.ormTransaction) {
222
+ building.fixedParents.set(spanId, building.ids.get(parentSpanId) ?? null);
223
+ building.ids.set(at, building.ids.get(spanId) ?? null);
224
+ skippedSpan.ormTransaction = false;
225
+ return;
226
+ }
227
+ at = skippedSpan.parent;
228
+ }
229
+ }
161
230
  onEnd(span) {
162
231
  if (process.env.TRACEPANEL_DEBUG) {
163
232
  process.stderr.write(`[tracepanel] ${span.name} kind=${span.kind} parent=${span.parentSpanContext?.spanId ?? "-"} ${JSON.stringify(span.attributes)}\n`);
@@ -178,8 +247,12 @@ export class TracepanelProcessor {
178
247
  setTimeout(() => {
179
248
  this.close(building);
180
249
  this.finish(building, span);
181
- if (sampled?.profile)
250
+ if (sampled?.profile) {
182
251
  building.trace.profile = sampled.profile;
252
+ const gc = sampled.gc?.();
253
+ if (gc)
254
+ sampled.profile.gc = gc;
255
+ }
183
256
  if (sampled?.dropped)
184
257
  countDropped(building.trace, "tracepanel.dropped_samples", sampled.dropped);
185
258
  this.sink.submit(limited(building.trace));
@@ -212,6 +285,23 @@ export class TracepanelProcessor {
212
285
  const building = this.owner.get(context.spanId);
213
286
  return building ? { building, spanId: building.ids.get(context.spanId) ?? null } : undefined;
214
287
  }
288
+ /** The trace being built from an OTel span, while it is: a test's, its spans so far. */
289
+ /** What the trace of this OTel span asked to be profiled for, when its request's ask profiles it. */
290
+ askedBy(spanId) {
291
+ return this.owner.get(spanId)?.asked;
292
+ }
293
+ openTrace(spanId) {
294
+ return this.owner.get(spanId)?.trace;
295
+ }
296
+ /**
297
+ * The traces of this W3C trace id still being built, or waiting for their late spans: the requests a test made of
298
+ * the app, their traces not yet sent. `except`: the OTel id of a root span left out (the test's own, running).
299
+ */
300
+ building(traceId, except) {
301
+ return [...this.open.values()]
302
+ .filter((building) => building.traceId === traceId && building.rootSpanId !== except)
303
+ .map((building) => building.trace);
304
+ }
215
305
  /** What the widget shows before the request's span ends: its id, its queries so far and their time. */
216
306
  timing(request) {
217
307
  const building = this.current()?.building ?? (request ? this.waiting(request) : undefined);
@@ -222,6 +312,7 @@ export class TracepanelProcessor {
222
312
  building.answered = true;
223
313
  return {
224
314
  id: building.trace.id,
315
+ name: nameOf(building.trace),
225
316
  queries: building.queries,
226
317
  dbMs: building.dbTime / 1000,
227
318
  startedMs: building.startedMs,
@@ -294,10 +385,13 @@ export class TracepanelProcessor {
294
385
  else
295
386
  trace.logs.push({ ...log, span_id: current.spanId });
296
387
  }
297
- /** The framework the active request runs on, unless a more specific one (Nest on Express) already said so. */
388
+ /**
389
+ * The framework the active request runs on, unless a more specific one (Nest on Express) already said so. A server
390
+ * (Node's, Bun.serve) gives way to the framework on it (Hono).
391
+ */
298
392
  setFramework(name) {
299
393
  const current = this.current();
300
- if (current && current.building.framework === "node:http")
394
+ if (current && SERVERS.has(current.building.framework))
301
395
  current.building.framework = name;
302
396
  }
303
397
  /** The route pattern the framework matched, when the root span doesn't carry one (Nitro). */
@@ -338,11 +432,13 @@ export class TracepanelProcessor {
338
432
  ids: new Map(),
339
433
  origins: new Map(),
340
434
  callers: new Map(),
435
+ orms: new Map(),
341
436
  queries: 0,
342
437
  dbTime: 0,
343
438
  framework: "node:http",
344
439
  startedMs: performance.now(),
345
440
  rootSpanId: "",
441
+ traceId: "",
346
442
  route: null,
347
443
  request: "",
348
444
  answered: false,
@@ -351,8 +447,11 @@ export class TracepanelProcessor {
351
447
  expressHandlers: new Set(),
352
448
  transactions: new Set(),
353
449
  passedOrigins: new Map(),
450
+ skippedParents: new Map(),
451
+ fixedParents: new Map(),
354
452
  parents: new Map(),
355
453
  lastOrigin: null,
454
+ lastOrm: null,
356
455
  };
357
456
  }
358
457
  /** A span as Tracepanel draws it: the request, a route handler (view), a statement (sql), an outgoing call. */
@@ -361,7 +460,11 @@ export class TracepanelProcessor {
361
460
  const id = building.ids.get(context.spanId);
362
461
  if (!id)
363
462
  return;
364
- const parentId = root ? null : (building.ids.get(span.parentSpanContext?.spanId ?? "") ?? null);
463
+ const parentId = root
464
+ ? null
465
+ : building.fixedParents.has(context.spanId)
466
+ ? (building.fixedParents.get(context.spanId) ?? null)
467
+ : (building.ids.get(span.parentSpanContext?.spanId ?? "") ?? null);
365
468
  if (!root && parentId === null)
366
469
  return;
367
470
  const attrs = attrsOf(span);
@@ -379,15 +482,23 @@ export class TracepanelProcessor {
379
482
  // A database call none of the app's code made: the library code that asked for it, as the Python SDK records it.
380
483
  const caller = building.callers.get(context.spanId);
381
484
  const asked = codeOrigin === null && caller ? { "code.caller": caller } : {};
485
+ const orm = building.orms.get(context.spanId);
382
486
  const sql = isRedis(attrs) || isMongo(attrs) ? "" : statementOf(attrs);
383
487
  if (root) {
384
- converted.kind = { http: "http", task: "task.run", command: "command" }[building.trace.kind];
488
+ converted.kind = { http: "http", task: "task.run", command: "command", test: "function" }[building.trace.kind];
385
489
  }
386
490
  else if (attrs["express.type"] === "request_handler") {
387
491
  converted.kind = "view";
388
492
  converted.name = String(attrs["express.name"] ?? span.name);
389
493
  building.trace.attrs["code.view"] = converted.name;
390
494
  }
495
+ else if (attrs["tracepanel.span_kind"] === VIEW) {
496
+ // A route's handler in Fastify, Koa or Hono (view.ts): named by its route, where the app added it if known.
497
+ converted.kind = "view";
498
+ converted.name = String(attrs["code.view"] ?? span.name);
499
+ converted.attrs = attrs["code.origin"] ? { "code.origin": attrs["code.origin"] } : {};
500
+ building.trace.attrs["code.view"] = converted.name;
501
+ }
391
502
  else if (NEXT_HANDLERS.has(String(attrs["next.span_type"]))) {
392
503
  converted.kind = "view";
393
504
  converted.name = String(first(attrs, "next.route", "next.page") ?? span.name);
@@ -399,6 +510,28 @@ export class TracepanelProcessor {
399
510
  building.trace.attrs["code.view"] = converted.name;
400
511
  building.nestViews.add(id);
401
512
  }
513
+ else if (attrs["tracepanel.span_kind"] === GRAPHQL) {
514
+ // A GraphQL operation (graphql.ts), named after it, or its parse or validate phase.
515
+ converted.kind = "graphql";
516
+ converted.attrs =
517
+ attrs["graphql.library"] === undefined
518
+ ? {}
519
+ : {
520
+ "graphql.operation.type": attrs["graphql.operation.type"] ?? null,
521
+ "graphql.operation.name": attrs["graphql.operation.name"] ?? null,
522
+ "graphql.document": attrs["graphql.document"] ?? null,
523
+ "graphql.errors": attrs["graphql.errors"] ?? 0,
524
+ "graphql.library": attrs["graphql.library"],
525
+ };
526
+ }
527
+ else if (attrs["tracepanel.span_kind"] === RESOLVER) {
528
+ // A resolver of the app's: what it called is under it.
529
+ converted.attrs = {
530
+ "graphql.field": attrs["graphql.field"],
531
+ "graphql.path": attrs["graphql.path"],
532
+ "code.function": attrs["code.function"],
533
+ };
534
+ }
402
535
  else if (attrs["tracepanel.span_kind"] === "task.enqueue") {
403
536
  converted.kind = "task.enqueue";
404
537
  converted.name = String(attrs["task.name"] ?? span.name);
@@ -410,7 +543,19 @@ export class TracepanelProcessor {
410
543
  else if (attrs["tracepanel.span_kind"] === "transaction") {
411
544
  converted.kind = "transaction";
412
545
  const { "tracepanel.span_kind": _, ...own } = attrs;
413
- converted.attrs = { ...own, "code.origin": codeOrigin, ...asked };
546
+ // Begun through an ORM (Prisma's $transaction, Drizzle's db.transaction()): db.client names it, as a query's does.
547
+ converted.attrs = { ...own, ...(orm ? { "db.client": orm } : {}), "code.origin": codeOrigin, ...asked };
548
+ }
549
+ else if (attrs["tracepanel.span_kind"] === LLM) {
550
+ converted.kind = LLM;
551
+ const { "tracepanel.span_kind": _, ...own } = attrs;
552
+ converted.attrs = { ...own, "code.origin": codeOrigin };
553
+ }
554
+ else if (isAws(attrs)) {
555
+ const call = awsCall(attrs);
556
+ converted.kind = call.kind;
557
+ converted.name = call.name;
558
+ converted.attrs = { ...call.attrs, "code.origin": codeOrigin };
414
559
  }
415
560
  else if (isRedis(attrs)) {
416
561
  const call = redisCall(attrs, span.name);
@@ -422,7 +567,7 @@ export class TracepanelProcessor {
422
567
  const call = mongoCall(attrs, span.name);
423
568
  converted.kind = "mongodb";
424
569
  converted.name = call.name;
425
- converted.attrs = { ...call.attrs, "code.origin": codeOrigin, ...asked };
570
+ converted.attrs = { ...call.attrs, ...(orm ? { "db.client": orm } : {}), "code.origin": codeOrigin, ...asked };
426
571
  }
427
572
  else if (span.name === "prisma:client:operation") {
428
573
  converted.name = `prisma ${attrs.model ? `${attrs.model}.` : ""}${attrs.method ?? "operation"}`;
@@ -431,7 +576,7 @@ export class TracepanelProcessor {
431
576
  else if (sql) {
432
577
  converted.kind = "sql";
433
578
  converted.name = spanName(sql);
434
- converted.attrs = { ...this.sqlAttrs(attrs, sql, codeOrigin), ...asked };
579
+ converted.attrs = { ...this.sqlAttrs(attrs, sql, codeOrigin, orm), ...asked };
435
580
  building.queries += 1;
436
581
  building.dbTime += converted.duration;
437
582
  }
@@ -448,19 +593,25 @@ export class TracepanelProcessor {
448
593
  building.trace.spans.push(converted);
449
594
  this.collectErrors(building, span, id);
450
595
  }
451
- sqlAttrs(attrs, sql, codeOrigin) {
596
+ /** A statement's attributes. `orm`: the ORM it went through, which db.client names instead of the driver. */
597
+ sqlAttrs(attrs, sql, codeOrigin, orm) {
452
598
  const system = String(first(attrs, "db.system.name", "db.system") ?? "");
453
599
  // pg reports the parameters with enhancedDatabaseReporting: the same statement with the same values is a
454
- // duplicate, the same statement with other values an N+1 candidate.
455
- const values = first(attrs, "db.postgresql.values", "db.query.parameter");
456
- // What EXPLAIN binds back: pg's values; mysql2 writes them into the statement itself.
600
+ // duplicate, the same statement with other values an N+1 candidate. SQLite's (sqlite.ts) come as JSON.
601
+ const values = first(attrs, "db.postgresql.values", "db.query.parameter") ?? parsed(attrs["tracepanel.db.params"]);
602
+ // What EXPLAIN binds back: pg's values, SQLite's; mysql2 writes them into the statement itself.
457
603
  const params = Array.isArray(values) ? values : system === "mysql" ? [] : undefined;
604
+ const driver = attrs["tracepanel.db.client"];
605
+ const namespace = attrs["db.namespace"];
606
+ const rows = attrs["db.response.returned_rows"];
458
607
  return {
459
608
  ...(params ? { "db.params": params } : {}),
460
- "db.client": system === "postgresql" ? "pg" : system,
609
+ "db.client": orm ?? (typeof driver === "string" ? driver : system === "postgresql" ? "pg" : system),
461
610
  "db.system": system,
462
611
  "db.vendor": system,
463
612
  "db.alias": "default",
613
+ ...(system === "sqlite" && typeof namespace === "string" ? { "db.namespace": namespace } : {}),
614
+ ...(typeof rows === "number" ? { "db.response.returned_rows": rows } : {}),
464
615
  "db.statement": statement(sql),
465
616
  "db.fingerprint": fingerprint(sql),
466
617
  "db.params_hash": values === undefined ? null : createHash("sha1").update(JSON.stringify(values)).digest("hex").slice(0, 12),
@@ -503,7 +654,7 @@ export class TracepanelProcessor {
503
654
  // Nest throws NotFoundException and the like to answer 404, 422…: an answer, not an error.
504
655
  tr.errors = tr.errors.filter((error) => !building.nestViews.has(error.span_id ?? ""));
505
656
  }
506
- tr.name = `${method} ${typeof route === "string" && route ? route : path}`;
657
+ tr.name = nameOf(tr) ?? `${method} ${typeof route === "string" && route ? route : path}`;
507
658
  tr.start = startUs(root);
508
659
  tr.duration = durationUs(root);
509
660
  if (status >= 500 || root.status.code === SpanStatusCode.ERROR || tr.errors.length > 0)
@@ -529,7 +680,10 @@ export class TracepanelProcessor {
529
680
  if (root.parentSpanContext?.isRemote)
530
681
  tr.attrs["w3c.parent_span_id"] = root.parentSpanContext.spanId;
531
682
  }
532
- /** A command (trace()) or a task (a queue's job): named as it was started, its task.* attributes kept. */
683
+ /**
684
+ * A command (trace()), a task (a queue's job) or a test: named as it was started, its task.* attributes kept (a
685
+ * test's test.* and code.*: which test, where).
686
+ */
533
687
  finishWork(building, root) {
534
688
  const attrs = attrsOf(root);
535
689
  const tr = building.trace;
@@ -543,12 +697,13 @@ export class TracepanelProcessor {
543
697
  rootSpan.name = tr.name;
544
698
  rootSpan.attrs = {};
545
699
  }
546
- const own = Object.fromEntries(Object.entries(attrs).filter(([key]) => key.startsWith("task.")));
700
+ const kept = tr.kind === "test" ? /^(test|code)\./ : /^task\./;
701
+ const own = Object.fromEntries(Object.entries(attrs).filter(([key]) => kept.test(key)));
547
702
  tr.attrs = {
548
703
  ...tr.attrs,
549
704
  ...own,
550
705
  "service.name": this.config.service,
551
- "service.role": tr.kind === "task" ? "worker" : "command",
706
+ "service.role": tr.kind === "task" ? "worker" : tr.kind === "test" ? "test" : "command",
552
707
  "telemetry.sdk.language": "nodejs",
553
708
  "process.runtime.name": process.versions.bun ? "bun" : "node",
554
709
  "process.runtime.version": process.versions.bun ?? process.versions.node,
@@ -556,6 +711,14 @@ export class TracepanelProcessor {
556
711
  };
557
712
  }
558
713
  }
714
+ /** A GraphQL request's name: one URL serves every operation, so the operation names it (`GraphQL query Books`). */
715
+ function nameOf(trace) {
716
+ const operation = trace.attrs["graphql.operation"];
717
+ return typeof operation === "string" ? `GraphQL ${operation}` : undefined;
718
+ }
719
+ function queryOrigin(parentContext) {
720
+ return parentContext.getValue(QUERY_ORIGIN);
721
+ }
559
722
  function requestKey(method, target) {
560
723
  return `${String(method ?? "GET").toUpperCase()} ${String(target ?? "/")}`;
561
724
  }
@@ -1 +1 @@
1
- {"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"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"}