@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.
- package/README.md +49 -2
- package/dist/api.d.ts +10 -0
- package/dist/api.js +12 -0
- package/dist/api.js.map +1 -1
- package/dist/browser.js +21 -3
- package/dist/browser.js.map +1 -1
- package/dist/bullmq.d.ts +7 -0
- package/dist/bullmq.js +35 -3
- package/dist/bullmq.js.map +1 -1
- package/dist/bun.js +3 -3
- package/dist/bun.js.map +1 -1
- package/dist/calls.js +10 -4
- package/dist/calls.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.js +30 -2
- package/dist/config.js.map +1 -1
- package/dist/console.d.ts +3 -1
- package/dist/console.js +47 -15
- package/dist/console.js.map +1 -1
- package/dist/dumps.d.ts +52 -0
- package/dist/dumps.js +520 -0
- package/dist/dumps.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locals.d.ts +2 -1
- package/dist/locals.js +8 -6
- package/dist/locals.js.map +1 -1
- package/dist/loggers.js +2 -2
- package/dist/loggers.js.map +1 -1
- package/dist/masking.d.ts +16 -0
- package/dist/masking.js +148 -0
- package/dist/masking.js.map +1 -0
- package/dist/next.js +6 -4
- package/dist/next.js.map +1 -1
- package/dist/nuxt-plugin.js +1 -1
- package/dist/nuxt-plugin.js.map +1 -1
- package/dist/processor.d.ts +7 -1
- package/dist/processor.js +37 -5
- package/dist/processor.js.map +1 -1
- package/dist/profile.d.ts +27 -1
- package/dist/profile.js +43 -7
- package/dist/profile.js.map +1 -1
- package/dist/request.d.ts +3 -2
- package/dist/request.js +6 -6
- package/dist/request.js.map +1 -1
- package/dist/setup.js +6 -4
- package/dist/setup.js.map +1 -1
- package/dist/stack.d.ts +41 -5
- package/dist/stack.js +392 -47
- package/dist/stack.js.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
52
|
-
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
/**
|
|
99
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
118
|
-
file
|
|
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 =
|
|
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:
|
|
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.
|
|
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.
|
|
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",
|