@tracepanel/js 0.5.0 → 0.6.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 (81) hide show
  1. package/README.md +221 -12
  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/bun.js +6 -82
  9. package/dist/bun.js.map +1 -1
  10. package/dist/calls.d.ts +5 -0
  11. package/dist/calls.js +7 -0
  12. package/dist/calls.js.map +1 -1
  13. package/dist/config.d.ts +7 -0
  14. package/dist/config.js +2 -0
  15. package/dist/config.js.map +1 -1
  16. package/dist/explain.d.ts +5 -0
  17. package/dist/explain.js +56 -7
  18. package/dist/explain.js.map +1 -1
  19. package/dist/fastify.d.ts +2 -0
  20. package/dist/fastify.js +100 -0
  21. package/dist/fastify.js.map +1 -0
  22. package/dist/frameworks.js +3 -0
  23. package/dist/frameworks.js.map +1 -1
  24. package/dist/hono.d.ts +2 -0
  25. package/dist/hono.js +63 -0
  26. package/dist/hono.js.map +1 -0
  27. package/dist/koa.d.ts +2 -0
  28. package/dist/koa.js +119 -0
  29. package/dist/koa.js.map +1 -0
  30. package/dist/llm.d.ts +20 -0
  31. package/dist/llm.js +632 -0
  32. package/dist/llm.js.map +1 -0
  33. package/dist/memory.d.ts +69 -0
  34. package/dist/memory.js +203 -0
  35. package/dist/memory.js.map +1 -0
  36. package/dist/model.d.ts +22 -1
  37. package/dist/model.js.map +1 -1
  38. package/dist/next.js +4 -4
  39. package/dist/next.js.map +1 -1
  40. package/dist/processor.d.ts +40 -4
  41. package/dist/processor.js +156 -29
  42. package/dist/processor.js.map +1 -1
  43. package/dist/profile.d.ts +34 -8
  44. package/dist/profile.js +98 -13
  45. package/dist/profile.js.map +1 -1
  46. package/dist/queries.d.ts +20 -0
  47. package/dist/queries.js +75 -0
  48. package/dist/queries.js.map +1 -0
  49. package/dist/respond.d.ts +12 -0
  50. package/dist/respond.js +85 -0
  51. package/dist/respond.js.map +1 -0
  52. package/dist/setup.js +22 -5
  53. package/dist/setup.js.map +1 -1
  54. package/dist/sql.d.ts +1 -0
  55. package/dist/sql.js +11 -2
  56. package/dist/sql.js.map +1 -1
  57. package/dist/sqlite.d.ts +13 -0
  58. package/dist/sqlite.js +291 -0
  59. package/dist/sqlite.js.map +1 -0
  60. package/dist/stack.d.ts +3 -1
  61. package/dist/stack.js +30 -6
  62. package/dist/stack.js.map +1 -1
  63. package/dist/testing.d.ts +128 -0
  64. package/dist/testing.js +362 -0
  65. package/dist/testing.js.map +1 -0
  66. package/dist/transactions.d.ts +11 -1
  67. package/dist/transactions.js +70 -34
  68. package/dist/transactions.js.map +1 -1
  69. package/dist/view.d.ts +17 -0
  70. package/dist/view.js +71 -0
  71. package/dist/view.js.map +1 -0
  72. package/dist/vitest-setup.d.ts +1 -0
  73. package/dist/vitest-setup.js +63 -0
  74. package/dist/vitest-setup.js.map +1 -0
  75. package/dist/vitest.d.ts +57 -0
  76. package/dist/vitest.js +130 -0
  77. package/dist/vitest.js.map +1 -0
  78. package/dist/widget.d.ts +16 -0
  79. package/dist/widget.js +33 -1
  80. package/dist/widget.js.map +1 -1
  81. package/package.json +69 -4
package/dist/processor.js CHANGED
@@ -2,21 +2,29 @@
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 { ANTHROPIC_SCOPE, KIND as LLM } from "./llm.js";
8
10
  import { Locals } from "./locals.js";
9
11
  import { countDropped, limited, MAX_LOGS, micros, newId, } from "./model.js";
10
- import { ASKED, ATTRIBUTE, available, Profiler, wanted } from "./profile.js";
12
+ import { ASKED, ATTRIBUTE, asking, available, Profiler, wanted } from "./profile.js";
13
+ import { QUERY_ORIGIN } from "./queries.js";
11
14
  import { fingerprint, spanName, statement } from "./sql.js";
12
15
  import { frames, madeAt } from "./stack.js";
13
16
  import { CONTROL } from "./transactions.js";
17
+ import { VIEW } from "./view.js";
18
+ /** The kinds of work a trace() or an integration starts a trace of: tracepanel.kind on its root span. */
19
+ const WORK = new Set(["command", "task", "test"]);
14
20
  // A request's span can end after the response does (Express ends an async handler's span when its promise settles):
15
21
  // the trace goes out this long after the request's span ends, with the spans that ended meanwhile.
16
22
  const LATE_SPANS_MS = 25;
17
23
  // A request whose root span never ends (the client went away mid-stream and the framework didn't end it) is dropped
18
24
  // after this long, so the open traces don't grow for ever.
19
25
  const ABANDONED_MS = 10 * 60 * 1000;
26
+ // What serves a request, below the framework that answers it.
27
+ const SERVERS = new Set(["node:http", "Bun.serve"]);
20
28
  // Spans that are bookkeeping, not work: Express's middleware and routers, a driver's connection checkouts, and
21
29
  // Nest's inner handler span (the same call as its request context span, which names the controller).
22
30
  const SKIPPED_EXPRESS = new Set(["middleware", "router"]);
@@ -44,6 +52,8 @@ const NEXT_HANDLERS = new Set([
44
52
  // 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
53
  // console on the app's own origin (the widget, the page's recording sending its traces).
46
54
  const INTERNAL = /^\/(_next|__nextjs|__tracepanel__\/)/;
55
+ // Prisma's span of an interactive transaction, $transaction(async (tx) => ...): the app's callback runs in its context.
56
+ const ORM_TRANSACTIONS = new Set(["prisma:client:transaction"]);
47
57
  // Prisma's own spans besides the operation: its SQL goes through the driver adapter's driver (pg, mysql2), recorded
48
58
  // there; the rest is its query engine's bookkeeping.
49
59
  const SKIPPED_NAMES = /^(pg\.connect|pg-pool\.connect|mysql2?\.connect|prisma:(?!client:operation$))/;
@@ -70,7 +80,20 @@ function skipped(span) {
70
80
  return (SKIPPED_EXPRESS.has(String(attrs["express.type"])) ||
71
81
  SKIPPED_NEST.has(String(attrs["nestjs.type"])) ||
72
82
  SKIPPED_NEXT.has(String(attrs["next.span_type"])) ||
73
- SKIPPED_NAMES.test(span.name));
83
+ SKIPPED_NAMES.test(span.name) ||
84
+ // Anthropic's SDK's own span of a call: the LLM call's span (llm.ts) is the call.
85
+ span.instrumentationScope?.name.startsWith(ANTHROPIC_SCOPE) === true);
86
+ }
87
+ /** A value an instrumentation kept as JSON (an attribute holds no objects); undefined when there is none. */
88
+ function parsed(value) {
89
+ if (typeof value !== "string")
90
+ return undefined;
91
+ try {
92
+ return JSON.parse(value);
93
+ }
94
+ catch {
95
+ return undefined;
96
+ }
74
97
  }
75
98
  function statementOf(attrs) {
76
99
  const text = first(attrs, "db.query.text", "db.statement");
@@ -89,7 +112,9 @@ export class TracepanelProcessor {
89
112
  profiler;
90
113
  /** What reads an error's local variables: made as the first trace starts; null where it can't be. */
91
114
  locals;
92
- constructor(config, sink) {
115
+ constructor(config,
116
+ /** Where the traces go: a test runner's integration puts its own in front of the agent's (testing.ts). */
117
+ sink) {
93
118
  this.config = config;
94
119
  this.sink = sink;
95
120
  this.profiler =
@@ -104,15 +129,16 @@ export class TracepanelProcessor {
104
129
  if (local) {
105
130
  // A request, or work outside one that trace() or a task queue started: tracepanel.kind says which.
106
131
  const kind = attrsOf(span)["tracepanel.kind"];
107
- if (span.kind !== SpanKind.SERVER && kind !== "command" && kind !== "task")
132
+ if (span.kind !== SpanKind.SERVER && !WORK.has(String(kind)))
108
133
  return;
109
134
  if (INTERNAL.test(String(first(attrsOf(span), "http.target", "url.path") ?? "")))
110
135
  return;
111
136
  this.dropAbandoned();
112
137
  building = this.start();
113
- if (kind === "command" || kind === "task")
138
+ if (kind === "command" || kind === "task" || kind === "test")
114
139
  building.trace.kind = kind;
115
140
  building.rootSpanId = context.spanId;
141
+ building.traceId = context.traceId;
116
142
  const rootAttrs = attrsOf(span);
117
143
  building.request = requestKey(first(rootAttrs, "http.request.method", "http.method"), first(rootAttrs, "http.target", "url.path"));
118
144
  this.open.set(context.spanId, building);
@@ -120,22 +146,39 @@ export class TracepanelProcessor {
120
146
  this.profiler?.enter(building);
121
147
  // The request asked for it: its root span says so (Node's HTTP server, Bun.serve), or the context the framework
122
148
  // 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);
149
+ const asked = asking(rootAttrs[ATTRIBUTE]) ?? asking(parentContext.getValue(ASKED));
150
+ const mode = this.profiler ? wanted(this.config, asked) : undefined;
151
+ if (mode)
152
+ building.recording = this.profiler?.start(building, mode === "memory");
126
153
  }
127
154
  if (!building)
128
155
  return;
129
156
  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
157
  const attrs = attrsOf(span);
158
+ const here = madeAt(this.config.root);
159
+ // A query whose stack has none of the app's code (Bun's, no async frames) was made where the app last called its
160
+ // ORM, in this context (queries.ts).
161
+ const query = here.origin || !first(attrs, "db.system.name", "db.system") ? undefined : queryOrigin(parentContext);
162
+ const found = here.origin ?? query?.origin ?? null;
163
+ const ormHere = here.orm ?? query?.orm ?? null;
164
+ // A driver's call made in a callback (pg-pool's query, once it has a connection) has neither the app's frames nor
165
+ // 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.
166
+ const orm = found ? ormHere : (ormHere ?? building.lastOrm);
167
+ if (found) {
168
+ building.lastOrigin = found;
169
+ building.lastOrm = ormHere;
170
+ }
171
+ if (here.caller && !found)
172
+ building.callers.set(context.spanId, here.caller);
173
+ if (orm)
174
+ building.orms.set(context.spanId, orm);
136
175
  if (!local && parent && skipped(span)) {
137
176
  building.ids.set(context.spanId, building.ids.get(parent.spanId) ?? null);
138
177
  building.passedOrigins.set(context.spanId, found ?? building.passedOrigins.get(parent.spanId) ?? null);
178
+ building.skippedParents.set(context.spanId, {
179
+ parent: parent.spanId,
180
+ ormTransaction: ORM_TRANSACTIONS.has(span.name),
181
+ });
139
182
  return;
140
183
  }
141
184
  if (attrs["tracepanel.span_kind"] === "transaction")
@@ -152,12 +195,34 @@ export class TracepanelProcessor {
152
195
  if (!parent && attrs["next.span_type"] === "BaseServer.handleRequest")
153
196
  building.framework = "Next.js";
154
197
  building.ids.set(context.spanId, newId());
198
+ if (parent && building.transactions.has(context.spanId))
199
+ this.adopt(building, parent.spanId, context.spanId);
155
200
  // A span started outside the app's code (undici's, under Next's fetch span) is the call the app made there.
156
201
  // So is one a call made from its context, which took the app's line as the app called it (fetch()).
157
202
  const passed = (parent ? building.passedOrigins.get(parent.spanId) : undefined) ??
158
203
  parentContext.getValue(CALL_ORIGIN);
159
204
  building.origins.set(context.spanId, found ?? passed ?? building.lastOrigin);
160
205
  }
206
+ /**
207
+ * A transaction an ORM began from its own span (Prisma's interactive $transaction: BEGIN is sent from its engine,
208
+ * under its prisma:client:transaction span, while the app's callback runs in that span's context): what the callback
209
+ * does (its queries, HTTP calls, jobs) goes inside the transaction span, as it does when the app sends BEGIN itself.
210
+ */
211
+ adopt(building, parentSpanId, spanId) {
212
+ let at = parentSpanId;
213
+ while (at !== undefined) {
214
+ const skippedSpan = building.skippedParents.get(at);
215
+ if (!skippedSpan)
216
+ return;
217
+ if (skippedSpan.ormTransaction) {
218
+ building.fixedParents.set(spanId, building.ids.get(parentSpanId) ?? null);
219
+ building.ids.set(at, building.ids.get(spanId) ?? null);
220
+ skippedSpan.ormTransaction = false;
221
+ return;
222
+ }
223
+ at = skippedSpan.parent;
224
+ }
225
+ }
161
226
  onEnd(span) {
162
227
  if (process.env.TRACEPANEL_DEBUG) {
163
228
  process.stderr.write(`[tracepanel] ${span.name} kind=${span.kind} parent=${span.parentSpanContext?.spanId ?? "-"} ${JSON.stringify(span.attributes)}\n`);
@@ -178,8 +243,12 @@ export class TracepanelProcessor {
178
243
  setTimeout(() => {
179
244
  this.close(building);
180
245
  this.finish(building, span);
181
- if (sampled?.profile)
246
+ if (sampled?.profile) {
182
247
  building.trace.profile = sampled.profile;
248
+ const gc = sampled.gc?.();
249
+ if (gc)
250
+ sampled.profile.gc = gc;
251
+ }
183
252
  if (sampled?.dropped)
184
253
  countDropped(building.trace, "tracepanel.dropped_samples", sampled.dropped);
185
254
  this.sink.submit(limited(building.trace));
@@ -212,6 +281,19 @@ export class TracepanelProcessor {
212
281
  const building = this.owner.get(context.spanId);
213
282
  return building ? { building, spanId: building.ids.get(context.spanId) ?? null } : undefined;
214
283
  }
284
+ /** The trace being built from an OTel span, while it is: a test's, its spans so far. */
285
+ openTrace(spanId) {
286
+ return this.owner.get(spanId)?.trace;
287
+ }
288
+ /**
289
+ * The traces of this W3C trace id still being built, or waiting for their late spans: the requests a test made of
290
+ * the app, their traces not yet sent. `except`: the OTel id of a root span left out (the test's own, running).
291
+ */
292
+ building(traceId, except) {
293
+ return [...this.open.values()]
294
+ .filter((building) => building.traceId === traceId && building.rootSpanId !== except)
295
+ .map((building) => building.trace);
296
+ }
215
297
  /** What the widget shows before the request's span ends: its id, its queries so far and their time. */
216
298
  timing(request) {
217
299
  const building = this.current()?.building ?? (request ? this.waiting(request) : undefined);
@@ -294,10 +376,13 @@ export class TracepanelProcessor {
294
376
  else
295
377
  trace.logs.push({ ...log, span_id: current.spanId });
296
378
  }
297
- /** The framework the active request runs on, unless a more specific one (Nest on Express) already said so. */
379
+ /**
380
+ * The framework the active request runs on, unless a more specific one (Nest on Express) already said so. A server
381
+ * (Node's, Bun.serve) gives way to the framework on it (Hono).
382
+ */
298
383
  setFramework(name) {
299
384
  const current = this.current();
300
- if (current && current.building.framework === "node:http")
385
+ if (current && SERVERS.has(current.building.framework))
301
386
  current.building.framework = name;
302
387
  }
303
388
  /** The route pattern the framework matched, when the root span doesn't carry one (Nitro). */
@@ -338,11 +423,13 @@ export class TracepanelProcessor {
338
423
  ids: new Map(),
339
424
  origins: new Map(),
340
425
  callers: new Map(),
426
+ orms: new Map(),
341
427
  queries: 0,
342
428
  dbTime: 0,
343
429
  framework: "node:http",
344
430
  startedMs: performance.now(),
345
431
  rootSpanId: "",
432
+ traceId: "",
346
433
  route: null,
347
434
  request: "",
348
435
  answered: false,
@@ -351,8 +438,11 @@ export class TracepanelProcessor {
351
438
  expressHandlers: new Set(),
352
439
  transactions: new Set(),
353
440
  passedOrigins: new Map(),
441
+ skippedParents: new Map(),
442
+ fixedParents: new Map(),
354
443
  parents: new Map(),
355
444
  lastOrigin: null,
445
+ lastOrm: null,
356
446
  };
357
447
  }
358
448
  /** A span as Tracepanel draws it: the request, a route handler (view), a statement (sql), an outgoing call. */
@@ -361,7 +451,11 @@ export class TracepanelProcessor {
361
451
  const id = building.ids.get(context.spanId);
362
452
  if (!id)
363
453
  return;
364
- const parentId = root ? null : (building.ids.get(span.parentSpanContext?.spanId ?? "") ?? null);
454
+ const parentId = root
455
+ ? null
456
+ : building.fixedParents.has(context.spanId)
457
+ ? (building.fixedParents.get(context.spanId) ?? null)
458
+ : (building.ids.get(span.parentSpanContext?.spanId ?? "") ?? null);
365
459
  if (!root && parentId === null)
366
460
  return;
367
461
  const attrs = attrsOf(span);
@@ -379,15 +473,23 @@ export class TracepanelProcessor {
379
473
  // A database call none of the app's code made: the library code that asked for it, as the Python SDK records it.
380
474
  const caller = building.callers.get(context.spanId);
381
475
  const asked = codeOrigin === null && caller ? { "code.caller": caller } : {};
476
+ const orm = building.orms.get(context.spanId);
382
477
  const sql = isRedis(attrs) || isMongo(attrs) ? "" : statementOf(attrs);
383
478
  if (root) {
384
- converted.kind = { http: "http", task: "task.run", command: "command" }[building.trace.kind];
479
+ converted.kind = { http: "http", task: "task.run", command: "command", test: "function" }[building.trace.kind];
385
480
  }
386
481
  else if (attrs["express.type"] === "request_handler") {
387
482
  converted.kind = "view";
388
483
  converted.name = String(attrs["express.name"] ?? span.name);
389
484
  building.trace.attrs["code.view"] = converted.name;
390
485
  }
486
+ else if (attrs["tracepanel.span_kind"] === VIEW) {
487
+ // A route's handler in Fastify, Koa or Hono (view.ts): named by its route, where the app added it if known.
488
+ converted.kind = "view";
489
+ converted.name = String(attrs["code.view"] ?? span.name);
490
+ converted.attrs = attrs["code.origin"] ? { "code.origin": attrs["code.origin"] } : {};
491
+ building.trace.attrs["code.view"] = converted.name;
492
+ }
391
493
  else if (NEXT_HANDLERS.has(String(attrs["next.span_type"]))) {
392
494
  converted.kind = "view";
393
495
  converted.name = String(first(attrs, "next.route", "next.page") ?? span.name);
@@ -410,7 +512,19 @@ export class TracepanelProcessor {
410
512
  else if (attrs["tracepanel.span_kind"] === "transaction") {
411
513
  converted.kind = "transaction";
412
514
  const { "tracepanel.span_kind": _, ...own } = attrs;
413
- converted.attrs = { ...own, "code.origin": codeOrigin, ...asked };
515
+ // Begun through an ORM (Prisma's $transaction, Drizzle's db.transaction()): db.client names it, as a query's does.
516
+ converted.attrs = { ...own, ...(orm ? { "db.client": orm } : {}), "code.origin": codeOrigin, ...asked };
517
+ }
518
+ else if (attrs["tracepanel.span_kind"] === LLM) {
519
+ converted.kind = LLM;
520
+ const { "tracepanel.span_kind": _, ...own } = attrs;
521
+ converted.attrs = { ...own, "code.origin": codeOrigin };
522
+ }
523
+ else if (isAws(attrs)) {
524
+ const call = awsCall(attrs);
525
+ converted.kind = call.kind;
526
+ converted.name = call.name;
527
+ converted.attrs = { ...call.attrs, "code.origin": codeOrigin };
414
528
  }
415
529
  else if (isRedis(attrs)) {
416
530
  const call = redisCall(attrs, span.name);
@@ -422,7 +536,7 @@ export class TracepanelProcessor {
422
536
  const call = mongoCall(attrs, span.name);
423
537
  converted.kind = "mongodb";
424
538
  converted.name = call.name;
425
- converted.attrs = { ...call.attrs, "code.origin": codeOrigin, ...asked };
539
+ converted.attrs = { ...call.attrs, ...(orm ? { "db.client": orm } : {}), "code.origin": codeOrigin, ...asked };
426
540
  }
427
541
  else if (span.name === "prisma:client:operation") {
428
542
  converted.name = `prisma ${attrs.model ? `${attrs.model}.` : ""}${attrs.method ?? "operation"}`;
@@ -431,7 +545,7 @@ export class TracepanelProcessor {
431
545
  else if (sql) {
432
546
  converted.kind = "sql";
433
547
  converted.name = spanName(sql);
434
- converted.attrs = { ...this.sqlAttrs(attrs, sql, codeOrigin), ...asked };
548
+ converted.attrs = { ...this.sqlAttrs(attrs, sql, codeOrigin, orm), ...asked };
435
549
  building.queries += 1;
436
550
  building.dbTime += converted.duration;
437
551
  }
@@ -448,19 +562,25 @@ export class TracepanelProcessor {
448
562
  building.trace.spans.push(converted);
449
563
  this.collectErrors(building, span, id);
450
564
  }
451
- sqlAttrs(attrs, sql, codeOrigin) {
565
+ /** A statement's attributes. `orm`: the ORM it went through, which db.client names instead of the driver. */
566
+ sqlAttrs(attrs, sql, codeOrigin, orm) {
452
567
  const system = String(first(attrs, "db.system.name", "db.system") ?? "");
453
568
  // 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.
569
+ // duplicate, the same statement with other values an N+1 candidate. SQLite's (sqlite.ts) come as JSON.
570
+ const values = first(attrs, "db.postgresql.values", "db.query.parameter") ?? parsed(attrs["tracepanel.db.params"]);
571
+ // What EXPLAIN binds back: pg's values, SQLite's; mysql2 writes them into the statement itself.
457
572
  const params = Array.isArray(values) ? values : system === "mysql" ? [] : undefined;
573
+ const driver = attrs["tracepanel.db.client"];
574
+ const namespace = attrs["db.namespace"];
575
+ const rows = attrs["db.response.returned_rows"];
458
576
  return {
459
577
  ...(params ? { "db.params": params } : {}),
460
- "db.client": system === "postgresql" ? "pg" : system,
578
+ "db.client": orm ?? (typeof driver === "string" ? driver : system === "postgresql" ? "pg" : system),
461
579
  "db.system": system,
462
580
  "db.vendor": system,
463
581
  "db.alias": "default",
582
+ ...(system === "sqlite" && typeof namespace === "string" ? { "db.namespace": namespace } : {}),
583
+ ...(typeof rows === "number" ? { "db.response.returned_rows": rows } : {}),
464
584
  "db.statement": statement(sql),
465
585
  "db.fingerprint": fingerprint(sql),
466
586
  "db.params_hash": values === undefined ? null : createHash("sha1").update(JSON.stringify(values)).digest("hex").slice(0, 12),
@@ -529,7 +649,10 @@ export class TracepanelProcessor {
529
649
  if (root.parentSpanContext?.isRemote)
530
650
  tr.attrs["w3c.parent_span_id"] = root.parentSpanContext.spanId;
531
651
  }
532
- /** A command (trace()) or a task (a queue's job): named as it was started, its task.* attributes kept. */
652
+ /**
653
+ * A command (trace()), a task (a queue's job) or a test: named as it was started, its task.* attributes kept (a
654
+ * test's test.* and code.*: which test, where).
655
+ */
533
656
  finishWork(building, root) {
534
657
  const attrs = attrsOf(root);
535
658
  const tr = building.trace;
@@ -543,12 +666,13 @@ export class TracepanelProcessor {
543
666
  rootSpan.name = tr.name;
544
667
  rootSpan.attrs = {};
545
668
  }
546
- const own = Object.fromEntries(Object.entries(attrs).filter(([key]) => key.startsWith("task.")));
669
+ const kept = tr.kind === "test" ? /^(test|code)\./ : /^task\./;
670
+ const own = Object.fromEntries(Object.entries(attrs).filter(([key]) => kept.test(key)));
547
671
  tr.attrs = {
548
672
  ...tr.attrs,
549
673
  ...own,
550
674
  "service.name": this.config.service,
551
- "service.role": tr.kind === "task" ? "worker" : "command",
675
+ "service.role": tr.kind === "task" ? "worker" : tr.kind === "test" ? "test" : "command",
552
676
  "telemetry.sdk.language": "nodejs",
553
677
  "process.runtime.name": process.versions.bun ? "bun" : "node",
554
678
  "process.runtime.version": process.versions.bun ?? process.versions.node,
@@ -556,6 +680,9 @@ export class TracepanelProcessor {
556
680
  };
557
681
  }
558
682
  }
683
+ function queryOrigin(parentContext) {
684
+ return parentContext.getValue(QUERY_ORIGIN);
685
+ }
559
686
  function requestKey(method, target) {
560
687
  return `${String(method ?? "GET").toUpperCase()} ${String(target ?? "/")}`;
561
688
  }
@@ -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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"}
package/dist/profile.d.ts CHANGED
@@ -1,29 +1,46 @@
1
1
  import type { Config } from "./config.js";
2
+ import { type Heap } from "./memory.js";
2
3
  import type { Profile } from "./model.js";
3
4
  import { type RequestHeaders } from "./request.js";
4
5
  export declare const HEADER = "x-tracepanel-profile";
5
6
  export declare const COOKIE = "tracepanel_profile";
6
- /** On a request's root span: the request asked to be profiled. */
7
+ /** On a request's root span: what the request asked for ("1", or "memory"). */
7
8
  export declare const ATTRIBUTE = "tracepanel.profile";
8
- /** In the context a framework starts the request's root span in (Next.js's): the request asked to be profiled. */
9
+ /** In the context a framework starts the request's root span in (Next.js's): what the request asked for. */
9
10
  export declare const ASKED: symbol;
10
- /** Whether a request asks to be profiled: the X-Tracepanel-Profile header, or the cookie the panel's toggle sets. */
11
- export declare function requested(headers: RequestHeaders): boolean;
12
- /** Whether to profile a trace: the setting profiles every one, a request may ask; nothing when profiling is off. */
13
- export declare function wanted(config: Config, asked: boolean): boolean;
11
+ /** What a request asks for: the profile ("1"), or the profile with its memory ("memory"). */
12
+ export type Asked = "1" | "memory";
13
+ /** What a value asks for: "1" or "memory" as they are, true (a span marked by code) "1"; else nothing. */
14
+ export declare function asking(value: unknown): Asked | undefined;
15
+ /**
16
+ * What a request asks for: the X-Tracepanel-Profile header's, else the cookie's the panel's toggle sets; undefined
17
+ * when neither asks.
18
+ */
19
+ export declare function requested(headers: RequestHeaders): Asked | undefined;
20
+ /**
21
+ * How to profile a trace: "memory" with its memory, "1" its time only; undefined for none. The setting profiles
22
+ * every one, a request may ask; nothing when profiling is off.
23
+ */
24
+ export declare function wanted(config: Config, asked: Asked | undefined): Asked | undefined;
14
25
  /** Whether this runtime can profile: Node, with its inspector. */
15
26
  export declare function available(): boolean;
27
+ /** Whether this runtime can profile memory too: Node's inspector, and V8's GC profiler. */
28
+ export declare function memoryProfiling(): boolean;
16
29
  /** One trace's profile while it runs: its console profile's title, and when it started (performance.now()). */
17
30
  export interface Recording {
18
31
  title: string;
19
32
  startedMs: number;
20
33
  /** The trace it profiles, as the profiler knows every trace of the process (see enter()). */
21
34
  trace: object;
35
+ /** Its memory, when that was asked for. */
36
+ heap: Heap | undefined;
22
37
  }
23
38
  /** The trace's profile and the samples left out because another trace ran at the same time. */
24
39
  export interface Result {
25
40
  profile: Profile | undefined;
26
41
  dropped: number;
42
+ /** The collector's runs during the trace, read once Node has told them (after the trace's late spans). */
43
+ gc?: () => Profile["gc"];
27
44
  }
28
45
  /** The app's profiler: the profile that runs while traces are profiled, and when each trace of the process ran. */
29
46
  export declare class Profiler {
@@ -40,17 +57,26 @@ export declare class Profiler {
40
57
  private ended;
41
58
  /** The console profiles stopped, by title, as the inspector hands them over. */
42
59
  private readonly finished;
60
+ private heaps;
61
+ private readonly collections;
43
62
  constructor(root: string, intervalMs: number);
44
63
  /** A trace started (each one, profiled or not): a sample taken while it runs may be its. */
45
64
  enter(trace: object): void;
46
65
  /** A trace ended. */
47
66
  leave(trace: object): void;
48
- /** Begins profiling a trace that started (enter() first); undefined when the inspector can't. */
49
- start(trace: object): Recording | undefined;
67
+ /**
68
+ * Begins profiling a trace that started (enter() first), its memory too when `memory`; undefined when the
69
+ * inspector can't.
70
+ */
71
+ start(trace: object, memory?: boolean): Recording | undefined;
50
72
  /** Ends a trace's profile, before it leaves: what was sampled while it alone ran. */
51
73
  stop(recording: Recording): Result;
52
74
  /** The profile that runs under the traces' own: started with the first profiled trace. */
53
75
  private ensure;
76
+ /** Whether another trace than the recording's ran while it did (the heap is the process's). */
77
+ private overlapped;
78
+ /** The profile's `memory`: its sites' frames added to the profile's own, each once. */
79
+ private memory;
54
80
  /** No trace is profiled: the profile under them stops after a while, or now when it ran long. */
55
81
  private rest;
56
82
  private halt;