@tracepanel/js 0.9.2 → 0.11.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 (52) hide show
  1. package/README.md +49 -2
  2. package/dist/api.d.ts +10 -0
  3. package/dist/api.js +12 -0
  4. package/dist/api.js.map +1 -1
  5. package/dist/browser.js +21 -3
  6. package/dist/browser.js.map +1 -1
  7. package/dist/bullmq.d.ts +7 -0
  8. package/dist/bullmq.js +35 -3
  9. package/dist/bullmq.js.map +1 -1
  10. package/dist/bun.js +3 -3
  11. package/dist/bun.js.map +1 -1
  12. package/dist/calls.js +10 -4
  13. package/dist/calls.js.map +1 -1
  14. package/dist/config.d.ts +12 -0
  15. package/dist/config.js +30 -2
  16. package/dist/config.js.map +1 -1
  17. package/dist/console.d.ts +3 -1
  18. package/dist/console.js +47 -15
  19. package/dist/console.js.map +1 -1
  20. package/dist/dumps.d.ts +52 -0
  21. package/dist/dumps.js +520 -0
  22. package/dist/dumps.js.map +1 -0
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.js +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/locals.d.ts +2 -1
  27. package/dist/locals.js +8 -6
  28. package/dist/locals.js.map +1 -1
  29. package/dist/loggers.js +2 -2
  30. package/dist/loggers.js.map +1 -1
  31. package/dist/masking.d.ts +16 -0
  32. package/dist/masking.js +148 -0
  33. package/dist/masking.js.map +1 -0
  34. package/dist/next.js +6 -4
  35. package/dist/next.js.map +1 -1
  36. package/dist/nuxt-plugin.js +1 -1
  37. package/dist/nuxt-plugin.js.map +1 -1
  38. package/dist/processor.d.ts +7 -1
  39. package/dist/processor.js +37 -5
  40. package/dist/processor.js.map +1 -1
  41. package/dist/profile.d.ts +27 -1
  42. package/dist/profile.js +43 -7
  43. package/dist/profile.js.map +1 -1
  44. package/dist/request.d.ts +3 -2
  45. package/dist/request.js +6 -6
  46. package/dist/request.js.map +1 -1
  47. package/dist/setup.js +6 -4
  48. package/dist/setup.js.map +1 -1
  49. package/dist/stack.d.ts +41 -5
  50. package/dist/stack.js +392 -47
  51. package/dist/stack.js.map +1 -1
  52. package/package.json +3 -2
package/dist/stack.js CHANGED
@@ -1,12 +1,14 @@
1
1
  // The app's own code in a V8 stack: where a query was made (code.origin), or the library code that asked for one
2
2
  // none of the app's code made (code.caller); and an error's frames with their source.
3
- import { readFileSync } from "node:fs";
3
+ import { existsSync, readFileSync, statSync } from "node:fs";
4
4
  import nodeModule, {} from "node:module";
5
5
  import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  const CONTEXT_LINES = 5;
8
8
  // " at fn (file:line:col)", " at file:line:col", " at async fn (file:line:col)".
9
9
  const FRAME = /^\s*at (?:async )?(?:(.+?) \()?(.+?):(\d+):(\d+)\)?$/;
10
+ // A line of a stack that is a frame, one per CallSite.
11
+ const AT = /^\s{4}at /;
10
12
  // This package's own files are never the app's: its build, and its sources, where a runtime maps the build's frames
11
13
  // back through its source maps (Bun does).
12
14
  const OWN = fileURLToPath(new URL(".", import.meta.url));
@@ -17,18 +19,29 @@ export function ownFile(file) {
17
19
  }
18
20
  /**
19
21
  * The frames of a V8 stack, innermost first. `mapped`: a bundle's frames as the app's sources, through its source
20
- * map; without it, where the code that ran is, as the debugger sees it.
22
+ * map; without it, where the code that ran is, as the debugger sees it. `sites`: the stack's CallSites, one per line
23
+ * (captured(), errorSites()): a frame is mapped from where its code ran and where its function starts, exactly,
24
+ * though the stack's text was mapped already (Node's --enable-source-maps, a dev tool) or names a minifier's function.
21
25
  */
22
- export function parseStack(stack, mapped = true) {
26
+ export function parseStack(stack, mapped = true, sites) {
23
27
  const frames = [];
24
- for (const line of (stack ?? "").split("\n").slice(1)) {
28
+ const lines = (stack ?? "").split("\n").filter((line) => AT.test(line));
29
+ const aligned = sites !== undefined && sites.length === lines.length;
30
+ for (const [index, line] of lines.entries()) {
25
31
  const match = FRAME.exec(line);
26
32
  if (!match)
27
33
  continue;
28
34
  const [, fn, location, lineno, column] = match;
29
35
  const file = location?.startsWith("file://") ? fileURLToPath(location) : (location ?? "");
30
- const frame = { function: fn ?? "<anonymous>", file, line: Number(lineno) };
31
- frames.push(mapped ? original(frame, Number(column)) : frame);
36
+ const frame = { function: fn ?? "<anonymous>", file, line: Number(lineno), column: Number(column) };
37
+ if (!mapped) {
38
+ frames.push(frame);
39
+ continue;
40
+ }
41
+ // The stack's name of the function (`Object.k`, `o.checkout`), mapped from the CallSite's place.
42
+ const site = aligned ? sites[index] : undefined;
43
+ const exact = site ? mappedFrame({ ...site, function: frame.function }) : undefined;
44
+ frames.push(exact ?? original(frame, Number(column)));
32
45
  }
33
46
  return frames;
34
47
  }
@@ -45,42 +58,160 @@ export function asyncFrames(stack) {
45
58
  // without one are the bundler's glue, never the app's.
46
59
  const BUNDLES = [`${sep}.next${sep}`, `${sep}.nuxt${sep}`, `${sep}.output${sep}`];
47
60
  const MAPPING_URL = /\/\/[#@] sourceMappingURL=(\S+)\s*$/;
48
- /** A file's source map and where it is (its sources are relative to it), or null: cached by the file's path. */
61
+ /** The source map a file's last sourceMappingURL comment names (an inline one may be longer than the code). */
62
+ function mappingUrl(text) {
63
+ const at = Math.max(text.lastIndexOf("//# sourceMappingURL="), text.lastIndexOf("//@ sourceMappingURL="));
64
+ return at < 0 ? undefined : MAPPING_URL.exec(text.slice(at))?.[1];
65
+ }
66
+ /** A file's modification time and size, or "" for none: a cached map or source is read again once it changes. */
67
+ export function stampOf(file) {
68
+ try {
69
+ const { mtimeMs, size } = statSync(file);
70
+ return `${mtimeMs}:${size}`;
71
+ }
72
+ catch {
73
+ return "";
74
+ }
75
+ }
76
+ /**
77
+ * A file's source map and where it is (its sources are relative to it), or null: cached by the file's path, read
78
+ * again once the file or its map file changes (a dev server rewrites a chunk under the same name).
79
+ */
49
80
  const maps = new Map();
50
81
  function sourceMap(file) {
51
- if (maps.has(file))
52
- return maps.get(file) ?? null;
82
+ const stamp = stampOf(file);
83
+ const cached = maps.get(file);
84
+ if (cached?.stamp === stamp &&
85
+ (!cached.found || cached.found.at === file || cached.mapStamp === stampOf(cached.found.at))) {
86
+ return cached.found;
87
+ }
53
88
  let found = null;
54
89
  try {
55
- // The map Node loaded with the file (--enable-source-maps), else the one its sourceMappingURL names.
90
+ // The map Node loaded with the file (--enable-source-maps), else the one its sourceMappingURL names (inline, or
91
+ // a file), else the .map beside it.
56
92
  const loaded = nodeModule.findSourceMap?.(file);
57
93
  if (loaded) {
58
94
  found = { map: loaded, at: file };
59
95
  }
60
- else {
61
- const text = readFileSync(file, "utf8");
62
- const url = MAPPING_URL.exec(text.slice(-2000))?.[1];
63
- if (url && typeof nodeModule.SourceMap === "function") {
64
- let payload;
65
- let at = file;
66
- if (url.startsWith("data:")) {
67
- const [meta, data = ""] = url.split(",", 2);
68
- payload = meta?.endsWith(";base64") ? Buffer.from(data, "base64").toString("utf8") : decodeURIComponent(data);
69
- }
70
- else {
71
- at = url.startsWith("file://") ? fileURLToPath(url) : resolve(dirname(file), decodeURIComponent(url));
72
- payload = readFileSync(at, "utf8");
73
- }
74
- found = { map: new nodeModule.SourceMap(JSON.parse(payload)), at };
96
+ else if (typeof nodeModule.SourceMap === "function") {
97
+ const url = mappingUrl(readFileSync(file, "utf8"));
98
+ let payload;
99
+ let at = file;
100
+ if (url?.startsWith("data:")) {
101
+ const [meta, data = ""] = url.split(",", 2);
102
+ payload = meta?.endsWith(";base64") ? Buffer.from(data, "base64").toString("utf8") : decodeURIComponent(data);
75
103
  }
104
+ else if (url) {
105
+ at = url.startsWith("file://") ? fileURLToPath(url) : resolve(dirname(file), decodeURIComponent(url));
106
+ payload = readFileSync(at, "utf8");
107
+ }
108
+ else if (existsSync(`${file}.map`)) {
109
+ at = `${file}.map`;
110
+ payload = readFileSync(at, "utf8");
111
+ }
112
+ if (payload !== undefined)
113
+ found = { map: new nodeModule.SourceMap(JSON.parse(payload)), at };
76
114
  }
77
115
  }
78
116
  catch {
79
117
  // No map, or one that can't be read: the frame stays as it is.
80
118
  }
81
- maps.set(file, found);
119
+ maps.set(file, { found, stamp, mapStamp: found && found.at !== file ? stampOf(found.at) : "", names: new Map() });
82
120
  return found;
83
121
  }
122
+ // A file past this size isn't read for its text (a source's lines, a bundle's names).
123
+ const MAX_SOURCE = 2_000_000;
124
+ const MAX_BUNDLE = 20_000_000;
125
+ /** The names already found for a bundle's frames, while its map is the one read. */
126
+ function cachedNames(file, found) {
127
+ const cached = maps.get(file);
128
+ return cached?.found === found ? cached.names : undefined;
129
+ }
130
+ /** A bundle's lines, read once while its map is the one read; undefined for one too big or that can't be read. */
131
+ function generatedLines(file) {
132
+ const cached = maps.get(file);
133
+ if (cached && cached.lines !== undefined)
134
+ return cached.lines ?? undefined;
135
+ let lines = null;
136
+ try {
137
+ if (statSync(file).size <= MAX_BUNDLE)
138
+ lines = readFileSync(file, "utf8").split("\n");
139
+ }
140
+ catch {
141
+ // Not readable: the stack's names stay.
142
+ }
143
+ if (cached)
144
+ cached.lines = lines;
145
+ return lines ?? undefined;
146
+ }
147
+ /** Source files read for their text, by path, as of their modification time and size: a dev server's edits read anew. */
148
+ const sources = new Map();
149
+ /** A source map's text of a source, split into lines once. */
150
+ const mappedLines = new Map();
151
+ /**
152
+ * A source file's lines: as the source map that led to it holds them (what ran, though the file isn't on disk or
153
+ * changed since), else read from the file; undefined for a file too big or that can't be read.
154
+ */
155
+ export function sourceLines(file) {
156
+ const held = contents.get(file);
157
+ if (held !== undefined) {
158
+ if (held.length > MAX_SOURCE)
159
+ return undefined;
160
+ const split = mappedLines.get(file);
161
+ if (split?.text === held)
162
+ return split.lines;
163
+ const lines = held.split("\n");
164
+ mappedLines.set(file, { text: held, lines });
165
+ return lines;
166
+ }
167
+ try {
168
+ const { size, mtimeMs } = statSync(file);
169
+ if (size > MAX_SOURCE)
170
+ return undefined;
171
+ const stamp = `${mtimeMs}:${size}`;
172
+ const cached = sources.get(file);
173
+ if (cached?.stamp === stamp)
174
+ return cached.lines;
175
+ const lines = readFileSync(file, "utf8").split("\n");
176
+ sources.set(file, { stamp, lines });
177
+ return lines;
178
+ }
179
+ catch {
180
+ return undefined;
181
+ }
182
+ }
183
+ /**
184
+ * The text of the app's sources as their source maps hold it (sourcesContent), by path: what ran, though the file
185
+ * changed since or isn't on disk (a bundle's virtual module).
186
+ */
187
+ const contents = new Map();
188
+ /** The sources each map was looked through for once: a bundle's map has thousands. A map read again is new. */
189
+ const looked = new WeakMap();
190
+ /** Keep the text the map holds for the source at `path`, read from its sources (an index map's sections' too). */
191
+ function keepContent(map, mapFile, path) {
192
+ let paths = looked.get(map);
193
+ if (!paths) {
194
+ paths = new Set();
195
+ looked.set(map, paths);
196
+ }
197
+ if (paths.has(path))
198
+ return;
199
+ paths.add(path);
200
+ // A map that holds no text of it (read again without it): the file is read, not an older map's text.
201
+ if (!findContent(map.payload, mapFile, path))
202
+ contents.delete(path);
203
+ }
204
+ function findContent(payload, mapFile, path) {
205
+ const sourceRoot = String(payload.sourceRoot ?? "");
206
+ for (const [index, source] of (payload.sources ?? []).entries()) {
207
+ const content = payload.sourcesContent?.[index];
208
+ if (typeof content === "string" && sourcePath(source, mapFile, sourceRoot) === path) {
209
+ contents.set(path, content);
210
+ return true;
211
+ }
212
+ }
213
+ return (payload.sections ?? []).some((section) => findContent(section.map, mapFile, path));
214
+ }
84
215
  /** A source map's name for a source, as a path: a file URL, Turbopack's [project]/, or relative to the map. */
85
216
  function sourcePath(source, mapFile, sourceRoot) {
86
217
  if (source.startsWith("file://"))
@@ -95,11 +226,122 @@ function sourcePath(source, mapFile, sourceRoot) {
95
226
  return resolve(process.cwd(), webpack[1] ?? "");
96
227
  return isAbsolute(source) ? source : resolve(dirname(mapFile), sourceRoot, source);
97
228
  }
98
- /** Where a function is in the app's source: a file URL or path and a line and column (1-based) of the code that ran. */
99
- export function place(url, line, column) {
229
+ /**
230
+ * Where a function is in the app's source, and its name there: a file URL or path, the line and column (1-based) where
231
+ * it starts in the code that ran, and its name there (a profile's frame).
232
+ */
233
+ export function place(url, line, column, name = "") {
100
234
  const file = url.startsWith("file://") ? fileURLToPath(url) : url;
101
235
  // This package's own code stays where it is: its source map leads out of it, to its TypeScript.
102
- return ownFile(file) ? { function: "", file, line } : original({ function: "", file, line }, column);
236
+ if (ownFile(file))
237
+ return { function: name, file, line };
238
+ return original({ function: name, file, line, enclosing: { line, column } }, column);
239
+ }
240
+ /**
241
+ * A stack as the runtime would write it: the prepareStackTrace there before (a source-map tool's, Node's own on newer
242
+ * versions, Vitest's), else V8's own format, which Node's is without source maps.
243
+ */
244
+ function format(prepare, error, sites) {
245
+ if (prepare)
246
+ return prepare.call(Error, error, sites);
247
+ let head;
248
+ try {
249
+ head = Error.prototype.toString.call(error);
250
+ }
251
+ catch {
252
+ head = "Error";
253
+ }
254
+ return sites.length === 0 ? head : `${head}\n at ${sites.join("\n at ")}`;
255
+ }
256
+ /** The stack and its CallSites of the current place, `depth` frames deep, once: the global hook is put back at once. */
257
+ export function captured(depth) {
258
+ const previous = Error.prepareStackTrace;
259
+ const limit = Error.stackTraceLimit;
260
+ let sites = [];
261
+ const holder = {};
262
+ try {
263
+ Error.stackTraceLimit = Math.max(limit, depth);
264
+ Error.prepareStackTrace = (error, callSites) => {
265
+ sites = callSites;
266
+ // Through the app's own hook, not this package's (it would keep these too).
267
+ return format(previous === hook ? inner : previous, error, callSites);
268
+ };
269
+ Error.captureStackTrace(holder, captured);
270
+ void holder.stack;
271
+ }
272
+ catch {
273
+ // A runtime without CallSites: the stack as it is.
274
+ }
275
+ finally {
276
+ Error.prepareStackTrace = previous;
277
+ Error.stackTraceLimit = limit;
278
+ }
279
+ // A hook that writes no text (it hands back the CallSites): no stack to read.
280
+ return typeof holder.stack === "string"
281
+ ? { stack: holder.stack, sites: sites.map(siteFrame) }
282
+ : { stack: undefined, sites: [] };
283
+ }
284
+ /** This package's prepareStackTrace while it records, and the one it runs inside it. */
285
+ let hook;
286
+ let inner;
287
+ /** The CallSites of the errors whose stack was written, by error. */
288
+ const ERROR_SITES = new WeakMap();
289
+ // The last stacks written, and their CallSites, for a span's exception event, which has only the stack's text: a ring
290
+ // a write only puts two references in, its text looked up when an error is recorded.
291
+ const MAX_STACKS = 256;
292
+ const ringStacks = new Array(MAX_STACKS);
293
+ const ringSites = new Array(MAX_STACKS);
294
+ let ringAt = 0;
295
+ /**
296
+ * Keep the CallSites of every error whose stack is written, for its frames: Error.prepareStackTrace becomes a hook
297
+ * that keeps them and returns what the one there before returns (a source-map tool's, Node's own), or V8's format.
298
+ * Not on an older Node with --enable-source-maps and no hook: its mapping can't be run from here. Once, while
299
+ * Tracepanel records; a hook set later replaces it, and the frames are read from the stack's text again.
300
+ */
301
+ export function keepErrorSites() {
302
+ if (hook)
303
+ return;
304
+ const existing = Error.prepareStackTrace;
305
+ if (!existing && process.sourceMapsEnabled)
306
+ return;
307
+ inner = existing;
308
+ hook = function prepareStackTrace(error, sites) {
309
+ const stack = format(inner, error, sites);
310
+ if ((typeof error === "object" || typeof error === "function") && error !== null)
311
+ ERROR_SITES.set(error, sites);
312
+ ringStacks[ringAt] = stack;
313
+ ringSites[ringAt] = sites;
314
+ ringAt = (ringAt + 1) % MAX_STACKS;
315
+ return stack;
316
+ };
317
+ Error.prepareStackTrace = hook;
318
+ }
319
+ /** The CallSites kept for an error, or for the stack it wrote, as frames; undefined when none were. */
320
+ export function errorSites(error, stack) {
321
+ const sites = ((typeof error === "object" || typeof error === "function") && error !== null
322
+ ? ERROR_SITES.get(error)
323
+ : undefined) ?? (stack ? ringSites[ringStacks.lastIndexOf(stack)] : undefined);
324
+ return sites?.map(siteFrame);
325
+ }
326
+ function siteFrame(site) {
327
+ const name = site.getFileName() ?? site.getScriptNameOrSourceURL?.();
328
+ const line = site.getLineNumber();
329
+ const column = site.getColumnNumber();
330
+ if (!name || line === null || column === null)
331
+ return undefined;
332
+ const file = name.startsWith("file://") ? fileURLToPath(name) : name;
333
+ const frame = { function: site.getFunctionName() ?? "<anonymous>", file, line, column };
334
+ const at = site;
335
+ const enclosingLine = at.getEnclosingLineNumber?.();
336
+ const enclosingColumn = at.getEnclosingColumnNumber?.();
337
+ if (enclosingLine && enclosingColumn)
338
+ frame.enclosing = { line: enclosingLine, column: enclosingColumn };
339
+ return frame;
340
+ }
341
+ /** A frame of the code that ran in the app's source, through this package's own reading of its source map. */
342
+ function mappedFrame(frame) {
343
+ const found = original(frame, frame.column ?? 1);
344
+ return found === frame ? undefined : found;
103
345
  }
104
346
  /** The frame in the app's source, when its file is a bundle with a source map. */
105
347
  function original(frame, column) {
@@ -112,17 +354,125 @@ function original(frame, column) {
112
354
  const entry = found.map.findEntry(frame.line - 1, Math.max(column - 1, 0));
113
355
  if (!("originalSource" in entry) || !entry.originalSource)
114
356
  return frame;
115
- const sourceRoot = String(found.map.payload.sourceRoot ?? "");
357
+ const payload = found.map.payload;
358
+ const file = sourcePath(entry.originalSource, found.at, String(payload.sourceRoot ?? ""));
359
+ keepContent(found.map, found.at, file);
116
360
  return {
117
- function: frame.function,
118
- file: sourcePath(entry.originalSource, found.at, sourceRoot),
361
+ function: originalName(frame, column, found),
362
+ file,
119
363
  line: entry.originalLine + 1,
364
+ column: entry.originalColumn + 1,
120
365
  };
121
366
  }
122
367
  catch {
123
368
  return frame;
124
369
  }
125
370
  }
371
+ // How far up a bundle a function's or class's definition is looked for, in lines.
372
+ const MAX_LOOK_BACK = 5000;
373
+ const IDENTIFIER = /^[A-Za-z_$][\w$]*$/;
374
+ const KEYWORDS = new Set(["function", "class", "async", "return", "new", "if", "for", "while", "switch", "catch"]);
375
+ // A stack's names that are no function or class of the app's.
376
+ const NOT_RENAMED = new Set(["Object", "Module", "<anonymous>", "async", "Promise", "Array"]);
377
+ /**
378
+ * A frame's function as the source names it, where a minifier renamed it (`Object.k` -> `Object.placeOrder`,
379
+ * `o.checkout` -> `Cart.checkout`): each name found where it is defined in the code that ran (the function's start a
380
+ * CallSite gives, else its `function k`, `class o`, `k=` before the frame), and mapped there to the source's name
381
+ * (the map's `names`, else the source's text there). A name not found stays as it is.
382
+ */
383
+ function originalName(frame, column, found) {
384
+ const cached = cachedNames(frame.file, found);
385
+ const key = `${frame.function}\0${frame.line}:${column}\0${frame.enclosing?.line}:${frame.enclosing?.column}`;
386
+ const known = cached?.get(key);
387
+ if (known !== undefined)
388
+ return known;
389
+ let name = frame.function;
390
+ try {
391
+ const lines = generatedLines(frame.file);
392
+ if (lines) {
393
+ const prefix = name.startsWith("new ") ? "new " : "";
394
+ const parts = name.slice(prefix.length).split(".");
395
+ const last = parts.length - 1;
396
+ const renamed = parts.map((part, index) => {
397
+ if (index === last && frame.enclosing) {
398
+ const at = definitionAt(lines, frame.enclosing.line, frame.enclosing.column);
399
+ const source = at && originalIdentifier(found, at.line, at.column);
400
+ if (source)
401
+ return source;
402
+ }
403
+ if (!IDENTIFIER.test(part) || NOT_RENAMED.has(part))
404
+ return part;
405
+ const at = definitionBefore(lines, part, frame.line, column);
406
+ return (at && originalIdentifier(found, at.line, at.column)) || part;
407
+ });
408
+ name = prefix + renamed.join(".");
409
+ }
410
+ }
411
+ catch {
412
+ // The name as the stack has it.
413
+ }
414
+ cached?.set(key, name);
415
+ return name;
416
+ }
417
+ /** Where the function that starts at line:column (1-based) is named: `function k(`, a method's `k(`, `k=(…)=>`. */
418
+ function definitionAt(lines, line, column) {
419
+ const text = lines[line - 1];
420
+ if (text === undefined)
421
+ return undefined;
422
+ const at = column - 1;
423
+ for (const pattern of [
424
+ /(?:async\s+)?function\s*\*?\s*([A-Za-z_$][\w$]*)/y,
425
+ /class\s+([A-Za-z_$][\w$]*)/y,
426
+ /(?:(?:static|async|get|set)\s+|\*\s*)*([A-Za-z_$][\w$]*)\s*\(/y,
427
+ ]) {
428
+ pattern.lastIndex = at;
429
+ const match = pattern.exec(text);
430
+ const name = match?.[1];
431
+ if (match && name && !KEYWORDS.has(name))
432
+ return { line, column: at + match[0].lastIndexOf(name) + 1 };
433
+ }
434
+ // An arrow or a function expression assigned: `k=(r)=>`, `k:function(`.
435
+ const before = text.slice(Math.max(0, at - 200), at);
436
+ const assigned = /([A-Za-z_$][\w$]*)\s*[=:]\s*(?:async\s*)?$/.exec(before);
437
+ if (assigned?.[1] && !KEYWORDS.has(assigned[1]))
438
+ return { line, column: at - before.length + assigned.index + 1 };
439
+ return undefined;
440
+ }
441
+ /** Where `name` is defined last before line:column: `function name(`, `class name`, `name=class`, `name=(`. */
442
+ function definitionBefore(lines, name, line, column) {
443
+ const escaped = name.replace(/\$/g, "\\$");
444
+ const pattern = new RegExp(`(?:\\bfunction\\s*\\*?\\s*|\\bclass\\s+)(${escaped})(?![\\w$])|(?<![\\w$.])(${escaped})\\s*=\\s*(?:class\\b|function\\b|async\\b|\\(|[A-Za-z_$][\\w$]*\\s*=>)`, "g");
445
+ for (let index = line - 1; index >= 0 && index >= line - MAX_LOOK_BACK; index--) {
446
+ const text = index === line - 1 ? (lines[index] ?? "").slice(0, column - 1) : (lines[index] ?? "");
447
+ let last;
448
+ for (const match of text.matchAll(pattern))
449
+ last = match;
450
+ if (last) {
451
+ const offset = last[1] !== undefined ? last[0].length - name.length : 0;
452
+ return { line: index + 1, column: last.index + offset + 1 };
453
+ }
454
+ }
455
+ return undefined;
456
+ }
457
+ /** The source's name of the identifier at line:column of the code that ran: the map's `names` entry, else its text. */
458
+ function originalIdentifier(found, line, column) {
459
+ const entry = found.map.findEntry(line - 1, column - 1);
460
+ // Only a mapping of the identifier itself says its name.
461
+ if (entry.generatedLine !== line - 1 || entry.generatedColumn !== column - 1 || !entry.originalSource)
462
+ return undefined;
463
+ if (entry.name && IDENTIFIER.test(entry.name))
464
+ return entry.name;
465
+ const payload = found.map.payload;
466
+ const file = sourcePath(entry.originalSource, found.at, String(payload.sourceRoot ?? ""));
467
+ keepContent(found.map, found.at, file);
468
+ const text = sourceLines(file)?.[entry.originalLine ?? -1]?.slice(entry.originalColumn ?? 0);
469
+ if (text === undefined)
470
+ return undefined;
471
+ // The source's text there: the name, or the definition that starts there (`function placeOrder`, `const ship =`).
472
+ const match = /^(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function\s*\*?\s*|class\s+|(?:const|let|var)\s+)?([A-Za-z_$][\w$]*)/.exec(text);
473
+ const name = match?.[1];
474
+ return name && !KEYWORDS.has(name) ? name : undefined;
475
+ }
126
476
  /** The project's own code: under the root, not a dependency, not a bundle, not Node's, not Tracepanel's. */
127
477
  export function inApp(file, root) {
128
478
  return (file.startsWith(root + sep) &&
@@ -134,17 +484,6 @@ export function inApp(file, root) {
134
484
  // How deep origin() looks: a driver's span starts under a dozen frames of its own, the instrumentation's and
135
485
  // Tracepanel's, more than V8's default 10.
136
486
  const ORIGIN_DEPTH = 64;
137
- /** The current stack, ORIGIN_DEPTH frames deep. */
138
- function deepStack() {
139
- const limit = Error.stackTraceLimit;
140
- Error.stackTraceLimit = Math.max(limit, ORIGIN_DEPTH);
141
- try {
142
- return new Error().stack;
143
- }
144
- finally {
145
- Error.stackTraceLimit = limit;
146
- }
147
- }
148
487
  /** `file:line in function` of the innermost frame of the app's own code on the current stack, or null. */
149
488
  export function origin(root) {
150
489
  return madeAt(root).origin;
@@ -218,12 +557,13 @@ function asks(file, root) {
218
557
  * the call went through (`prisma`, `drizzle`), its innermost frame's, or null for a driver called directly.
219
558
  */
220
559
  export function madeAt(root) {
221
- const stack = parseStack(deepStack());
560
+ const { stack: text, sites } = captured(ORIGIN_DEPTH);
561
+ const stack = parseStack(text, true, sites);
222
562
  const ormFrame = stack.find((frame) => ormOf(frame.file) !== null);
223
563
  const orm = ormFrame ? ormOf(ormFrame.file) : null;
224
564
  const own = stack.find((frame) => inApp(frame.file, root));
225
565
  if (own) {
226
- return { origin: `${relative(root, own.file)}:${own.line} in ${shortName(own.function)}`, caller: null, orm };
566
+ return { origin: originOf(own, root), caller: null, orm };
227
567
  }
228
568
  const asked = stack.find((frame) => asks(frame.file, root));
229
569
  return {
@@ -237,6 +577,10 @@ function ormOf(file) {
237
577
  const name = packageOf(file);
238
578
  return name !== null && Object.hasOwn(ORMS, name) ? (ORMS[name] ?? null) : null;
239
579
  }
580
+ /** `file:line in function` of a frame of the app's own code, the file relative to the project. */
581
+ export function originOf(frame, root) {
582
+ return `${relative(root, frame.file)}:${frame.line} in ${shortName(frame.function)}`;
583
+ }
240
584
  function shortName(fn) {
241
585
  return fn.replace(/^Object\.|^Module\./, "");
242
586
  }
@@ -253,9 +597,10 @@ function sourceAround(file, line) {
253
597
  /**
254
598
  * An error's frames, outermost first as the console shows every SDK's, with the source of the app's own. `locals`:
255
599
  * the local variables of the app's frames, by the frame's place in the stack (innermost first), when they were read.
600
+ * `error`: the error, whose CallSites were kept as its stack was written (keepErrorSites()), else its stack's.
256
601
  */
257
- export function frames(stack, root, locals) {
258
- return parseStack(stack)
602
+ export function frames(stack, root, locals, error) {
603
+ return parseStack(stack, true, errorSites(error, stack))
259
604
  .map((frame, index) => {
260
605
  const own = inApp(frame.file, root);
261
606
  const { start, context } = own ? sourceAround(frame.file, frame.line) : { start: null, context: [] };
package/dist/stack.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.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.9.2",
3
+ "version": "0.11.0",
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.9.2",
101
+ "@tracepanel/agent": "~0.11.0",
102
102
  "import-in-the-middle": "^3.5.2"
103
103
  },
104
104
  "peerDependencies": {
@@ -165,6 +165,7 @@
165
165
  "better-sqlite3": "^12.11.1",
166
166
  "bullmq": "^6.3.17",
167
167
  "cookie-session": "^2.1.1",
168
+ "esbuild": "^0.28.2",
168
169
  "express": "^5.3.0",
169
170
  "express-session": "^1.19.0",
170
171
  "fastify": "^5.12.7",