@petukhovart/agent-view 0.13.1 → 0.15.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 (65) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +21 -21
  3. package/LICENSE +21 -21
  4. package/README.md +82 -3
  5. package/dist/cdp/transport.d.ts.map +1 -1
  6. package/dist/cdp/transport.js +154 -15
  7. package/dist/cdp/transport.js.map +1 -1
  8. package/dist/cdp/types.d.ts +56 -0
  9. package/dist/cdp/types.d.ts.map +1 -1
  10. package/dist/cdp/types.js.map +1 -1
  11. package/dist/cli/commands/click.d.ts +1 -0
  12. package/dist/cli/commands/click.d.ts.map +1 -1
  13. package/dist/cli/commands/click.js +2 -0
  14. package/dist/cli/commands/click.js.map +1 -1
  15. package/dist/cli/commands/coverage.d.ts +14 -0
  16. package/dist/cli/commands/coverage.d.ts.map +1 -0
  17. package/dist/cli/commands/coverage.js +34 -0
  18. package/dist/cli/commands/coverage.js.map +1 -0
  19. package/dist/cli/commands/heap.d.ts +14 -0
  20. package/dist/cli/commands/heap.d.ts.map +1 -0
  21. package/dist/cli/commands/heap.js +25 -0
  22. package/dist/cli/commands/heap.js.map +1 -0
  23. package/dist/cli/commands/listeners.d.ts +11 -0
  24. package/dist/cli/commands/listeners.d.ts.map +1 -0
  25. package/dist/cli/commands/listeners.js +34 -0
  26. package/dist/cli/commands/listeners.js.map +1 -0
  27. package/dist/cli/index.js +92 -0
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/inspectors/coverage/index.d.ts +17 -0
  30. package/dist/inspectors/coverage/index.d.ts.map +1 -0
  31. package/dist/inspectors/coverage/index.js +62 -0
  32. package/dist/inspectors/coverage/index.js.map +1 -0
  33. package/dist/inspectors/format.d.ts +6 -0
  34. package/dist/inspectors/format.d.ts.map +1 -0
  35. package/dist/inspectors/format.js +17 -0
  36. package/dist/inspectors/format.js.map +1 -0
  37. package/dist/inspectors/heap/index.d.ts +65 -0
  38. package/dist/inspectors/heap/index.d.ts.map +1 -0
  39. package/dist/inspectors/heap/index.js +269 -0
  40. package/dist/inspectors/heap/index.js.map +1 -0
  41. package/dist/inspectors/listeners/index.d.ts +4 -0
  42. package/dist/inspectors/listeners/index.d.ts.map +1 -0
  43. package/dist/inspectors/listeners/index.js +30 -0
  44. package/dist/inspectors/listeners/index.js.map +1 -0
  45. package/dist/server/server.d.ts +21 -0
  46. package/dist/server/server.d.ts.map +1 -1
  47. package/dist/server/server.js +150 -9
  48. package/dist/server/server.js.map +1 -1
  49. package/package.json +2 -1
  50. package/skills/verify/SKILL.md +163 -427
  51. package/skills/verify/references/commands.md +384 -0
  52. package/skills/verify/references/design-conformance.md +23 -0
  53. package/skills/verify/references/memory-leaks.md +94 -0
  54. package/dist/cdp/console-stream.d.ts +0 -35
  55. package/dist/cdp/console-stream.d.ts.map +0 -1
  56. package/dist/cdp/console-stream.js +0 -103
  57. package/dist/cdp/console-stream.js.map +0 -1
  58. package/dist/inspectors/dom.d.ts +0 -17
  59. package/dist/inspectors/dom.d.ts.map +0 -1
  60. package/dist/inspectors/dom.js +0 -131
  61. package/dist/inspectors/dom.js.map +0 -1
  62. package/dist/inspectors/scene/pixi.d.ts +0 -3
  63. package/dist/inspectors/scene/pixi.d.ts.map +0 -1
  64. package/dist/inspectors/scene/pixi.js +0 -52
  65. package/dist/inspectors/scene/pixi.js.map +0 -1
package/dist/cli/index.js CHANGED
@@ -28,6 +28,9 @@ import { runNetwork } from './commands/network.js';
28
28
  import { runLogs } from './commands/logs.js';
29
29
  import { runWatch } from './commands/watch.js';
30
30
  import { runDialog } from './commands/dialog.js';
31
+ import { runCoverage } from './commands/coverage.js';
32
+ import { runListeners } from './commands/listeners.js';
33
+ import { runHeap } from './commands/heap.js';
31
34
  import { runUpload } from './commands/upload.js';
32
35
  // Resolve version from package.json at runtime — same path in dev (src/cli) and build (dist/cli).
33
36
  function resolveVersion() {
@@ -85,6 +88,7 @@ program
85
88
  .option('-p, --pos <x,y>', 'Click at coordinates (for canvas)')
86
89
  .option('-w, --window <id>', 'Target window ID or name')
87
90
  .option('--double', 'Double-click (fires dblclick handlers)')
91
+ .option('--right', 'Right-click (fires contextmenu)')
88
92
  .action(async (ref, options) => {
89
93
  const config = requireConfig();
90
94
  await runClick(config, ref, options);
@@ -276,6 +280,94 @@ program
276
280
  const config = requireConfig();
277
281
  await runUpload(config, options);
278
282
  });
283
+ program
284
+ .command('coverage')
285
+ .description('Which functions ran since the last --clear (V8 precise-coverage delta)')
286
+ .option('--clear', 'Open a coverage window: reset the counters and start counting')
287
+ .option('--filter <text>', 'Keep functions whose name — or whose script URL — contains this')
288
+ .option('--file <text>', 'Keep scripts whose URL contains this')
289
+ .option('--all', 'Include node_modules, runtime and url-less scripts, hidden by default')
290
+ .option('--count', 'Print the number of executed functions instead of the list')
291
+ .option('--max-lines <n>', 'Cap the output', parseMaxLines)
292
+ .option('-w, --window <id>', 'Target window ID or name')
293
+ .option('-t, --target <id|name>', 'Target ID or name (page, worker, ...)')
294
+ .action(async (options) => {
295
+ const config = requireConfig();
296
+ await runCoverage(config, options);
297
+ });
298
+ const heap = program
299
+ .command('heap')
300
+ .description('Heap snapshots: what grew between two named snapshots, and what retains it');
301
+ heap
302
+ .command('take')
303
+ .description('Take a V8 heap snapshot and keep its class summary under a name (default s1, s2, …)')
304
+ .option('--name <name>', 'Snapshot name, e.g. baseline / target / final')
305
+ .option('-w, --window <id>', 'Target window ID or name')
306
+ .option('-t, --target <id|name>', 'Target ID or name (page, worker, ...)')
307
+ .action(async (options) => {
308
+ const config = requireConfig();
309
+ await runHeap(config, 'take', options);
310
+ });
311
+ heap
312
+ .command('summary')
313
+ .description('Classes of one snapshot by size (default: the most recent)')
314
+ .option('--name <name>', 'Snapshot to read')
315
+ .option('--filter <text>', 'Keep classes whose name contains this')
316
+ .option('--detached', 'Detached DOM nodes only')
317
+ .option('--max-lines <n>', 'Cap the output', parseMaxLines)
318
+ .action(async (options) => {
319
+ const config = requireConfig();
320
+ await runHeap(config, 'summary', options);
321
+ });
322
+ heap
323
+ .command('diff [a] [b]')
324
+ .description('Per-class growth from a to b (default: the two most recent snapshots)')
325
+ .option('--filter <text>', 'Keep classes whose name contains this')
326
+ .option('--detached', 'Detached DOM nodes only')
327
+ .option('--max-lines <n>', 'Cap the output', parseMaxLines)
328
+ .action(async (a, b, options) => {
329
+ if ((a === undefined) !== (b === undefined)) {
330
+ console.error('heap diff takes two snapshot names or none (the two most recent)');
331
+ process.exit(1);
332
+ }
333
+ const config = requireConfig();
334
+ await runHeap(config, 'diff', { ...options, names: a && b ? [a, b] : undefined });
335
+ });
336
+ heap
337
+ .command('retainers <class>')
338
+ .description('What holds the instances of a class, one hop up (class name as printed by diff)')
339
+ .option('--name <name>', 'Snapshot to read (default: the most recent)')
340
+ .option('--max-lines <n>', 'Cap the output', parseMaxLines)
341
+ .action(async (cls, options) => {
342
+ const config = requireConfig();
343
+ await runHeap(config, 'retainers', { ...options, class: cls });
344
+ });
345
+ heap
346
+ .command('list')
347
+ .description('Snapshots held by the server')
348
+ .action(async () => {
349
+ const config = requireConfig();
350
+ await runHeap(config, 'list', {});
351
+ });
352
+ heap
353
+ .command('clear')
354
+ .description('Drop every snapshot')
355
+ .action(async () => {
356
+ const config = requireConfig();
357
+ await runHeap(config, 'clear', {});
358
+ });
359
+ program
360
+ .command('listeners')
361
+ .description('Event listeners bound to a node, with the file:line each was declared at')
362
+ .option('--filter <text>', 'Node by accessible name, as in `click --filter`')
363
+ .option('--ref <n>', 'Node by ref from `dom`')
364
+ .option('--selector <css>', 'Node by CSS selector — for nodes the AX tree never exposes')
365
+ .option('--depth <n>', 'Descend n levels into the subtree (-1 = all). Default 0', parseDepth)
366
+ .option('-w, --window <id>', 'Target window ID or name')
367
+ .action(async (options) => {
368
+ const config = requireConfig();
369
+ await runListeners(config, options);
370
+ });
279
371
  const dialog = program
280
372
  .command('dialog')
281
373
  .description('Inspect and answer JS modals (alert/confirm/prompt/beforeunload)');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { CoverageScript } from '../../cdp/types.js';
2
+ export type CoverageOptions = {
3
+ /** Substring matched against the function name or the script URL. */
4
+ filter?: string;
5
+ /** Substring matched against the script URL only. */
6
+ file?: string;
7
+ /** Keep runtime/library/eval scripts that are hidden by default. */
8
+ all?: boolean;
9
+ maxLines?: number;
10
+ };
11
+ export type CoverageResult = {
12
+ text: string;
13
+ /** Functions left after filtering — what `--count` prints. */
14
+ functions: number;
15
+ };
16
+ export declare function formatCoverage(scripts: CoverageScript[], options?: CoverageOptions): CoverageResult;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspectors/coverage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGxD,MAAM,MAAM,eAAe,GAAG;IAC5B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAoBD,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CAwCvG"}
@@ -0,0 +1,62 @@
1
+ import { capLines } from '../format.js';
2
+ /**
3
+ * Scripts nobody reviews: the runtime's own bundles, third-party packages, and
4
+ * code with no URL at all (`eval`, `new Function`) which cannot be pointed at in
5
+ * a review comment. `--all` brings them back.
6
+ */
7
+ function isNoise(url) {
8
+ if (url === '')
9
+ return true;
10
+ return url.includes('/node_modules/')
11
+ || url.startsWith('node:')
12
+ || url.startsWith('chrome-extension://')
13
+ || url.startsWith('devtools://')
14
+ || url.startsWith('extensions::');
15
+ }
16
+ function label(fn) {
17
+ return fn.name || `<anonymous>@${fn.offset}`;
18
+ }
19
+ export function formatCoverage(scripts, options = {}) {
20
+ const filter = options.filter?.toLowerCase();
21
+ const file = options.file?.toLowerCase();
22
+ let hidden = 0;
23
+ const kept = [];
24
+ for (const script of scripts) {
25
+ if (!options.all && isNoise(script.url)) {
26
+ hidden++;
27
+ continue;
28
+ }
29
+ if (file && !script.url.toLowerCase().includes(file))
30
+ continue;
31
+ const urlMatches = filter !== undefined && script.url.toLowerCase().includes(filter);
32
+ const functions = filter === undefined || urlMatches
33
+ ? script.functions
34
+ : script.functions.filter((fn) => label(fn).toLowerCase().includes(filter));
35
+ if (functions.length > 0)
36
+ kept.push({ ...script, functions });
37
+ }
38
+ const total = kept.reduce((n, s) => n + s.functions.length, 0);
39
+ if (total === 0) {
40
+ const term = options.filter ?? options.file;
41
+ return {
42
+ text: term !== undefined ? `(no code matching "${term}")` : '(no code executed since --clear)',
43
+ functions: 0,
44
+ };
45
+ }
46
+ kept.sort((a, b) => (a.url || '￿').localeCompare(b.url || '￿'));
47
+ const lines = [];
48
+ for (const script of kept) {
49
+ const names = script.functions
50
+ .map((fn) => ({ name: label(fn), count: fn.count }))
51
+ .sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
52
+ lines.push(script.url || '(no url)');
53
+ const width = Math.min(32, Math.max(...names.map((n) => n.name.length)));
54
+ for (const n of names)
55
+ lines.push(` ${n.name.padEnd(width)} ×${n.count}`);
56
+ }
57
+ if (hidden > 0 && !options.all) {
58
+ lines.push(`… ${hidden} script${hidden === 1 ? '' : 's'} hidden (--all to show)`);
59
+ }
60
+ return { text: capLines(lines, options.maxLines), functions: total };
61
+ }
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/inspectors/coverage/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** Output helpers every inspector prints with, so the tails and units read the same across commands. */
2
+ /** Keep the first `maxLines - 1` lines and say how many were cut. */
3
+ export declare function capLines(lines: string[], maxLines?: number): string;
4
+ /** `512 B`, `12.3 KB`, `1.5 MB`; negatives keep their sign, for deltas. */
5
+ export declare function formatBytes(n: number): string;
6
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/inspectors/format.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAExG,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C"}
@@ -0,0 +1,17 @@
1
+ /** Output helpers every inspector prints with, so the tails and units read the same across commands. */
2
+ /** Keep the first `maxLines - 1` lines and say how many were cut. */
3
+ export function capLines(lines, maxLines) {
4
+ if (maxLines === undefined || lines.length <= maxLines)
5
+ return lines.join('\n');
6
+ return [...lines.slice(0, maxLines - 1), `… ${lines.length - (maxLines - 1)} more lines`].join('\n');
7
+ }
8
+ /** `512 B`, `12.3 KB`, `1.5 MB`; negatives keep their sign, for deltas. */
9
+ export function formatBytes(n) {
10
+ const abs = Math.abs(n);
11
+ if (abs < 1024)
12
+ return `${n} B`;
13
+ if (abs < 1024 * 1024)
14
+ return `${(n / 1024).toFixed(1)} KB`;
15
+ return `${(n / 1024 / 1024).toFixed(1)} MB`;
16
+ }
17
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/inspectors/format.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAExG,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAC,KAAe,EAAE,QAAiB;IACzD,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/E,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtG,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,GAAG,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,IAAI,CAAA;IAC/B,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;IAC3D,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * V8 `.heapsnapshot` reader, sized for one question: what grew between two
3
+ * snapshots, and who holds it. Retained sizes and dominator trees are out of
4
+ * scope on purpose — they are where the DevTools engine spends its 5,000 lines,
5
+ * and "which class grew, is it detached DOM, what retains it" needs neither.
6
+ */
7
+ export type ClassStat = {
8
+ count: number;
9
+ size: number;
10
+ };
11
+ export type HeapSnapshot = {
12
+ name: string;
13
+ target: string;
14
+ nodeCount: number;
15
+ totalSize: number;
16
+ classes: Map<string, ClassStat>;
17
+ /** Retainer lookup needs the graph itself; kept as typed arrays, not as parsed JSON. */
18
+ graph: HeapGraph;
19
+ };
20
+ type HeapGraph = {
21
+ nodes: Uint32Array;
22
+ edges: Uint32Array;
23
+ strings: string[];
24
+ nodeFieldCount: number;
25
+ edgeFieldCount: number;
26
+ nodeTypes: string[];
27
+ edgeTypes: string[];
28
+ /** Field offsets inside one node / edge record. `detachedness` is -1 on V8 builds that predate it. */
29
+ nType: number;
30
+ nName: number;
31
+ nSize: number;
32
+ nEdgeCount: number;
33
+ nDetached: number;
34
+ eType: number;
35
+ eName: number;
36
+ eTo: number;
37
+ };
38
+ export declare function parseHeapSnapshot(json: string, name: string, target: string): HeapSnapshot;
39
+ export declare function isDetachedClass(cls: string): boolean;
40
+ export type ListOptions = {
41
+ filter?: string;
42
+ detached?: boolean;
43
+ maxLines?: number;
44
+ };
45
+ export declare function describeSnapshot(s: HeapSnapshot): string;
46
+ export declare function formatSummary(s: HeapSnapshot, options?: ListOptions): string;
47
+ export declare function formatDiff(a: HeapSnapshot, b: HeapSnapshot, options?: ListOptions): string;
48
+ /**
49
+ * Who holds the instances of `cls`: one row per `<retainer class> <edge>`,
50
+ * counting distinct instances, not edges. Element indices collapse to `[]`, so
51
+ * an array of 200 leaks is one row. Weak edges keep nothing alive and are
52
+ * skipped.
53
+ *
54
+ * V8 reports an array's items twice, once from the `Array` and once from its
55
+ * `(object elements)` backing store, and a Map's entries only from the store.
56
+ * Stores name nothing a developer wrote, so an edge from one is attributed to
57
+ * the store's owner; counting instances makes the duplicate collapse. Still one
58
+ * named hop, no path to a GC root: the first owner is usually the map, list or
59
+ * closure at fault. Instances holding each other (DOM sibling links, list
60
+ * nodes) are left out: they never explain why the group is alive.
61
+ */
62
+ export declare function formatRetainers(s: HeapSnapshot, cls: string, options?: Pick<ListOptions, 'maxLines'>): string;
63
+ export declare function formatList(snapshots: HeapSnapshot[]): string;
64
+ export {};
65
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspectors/heap/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC/B,wFAAwF;IACxF,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,sGAAsG;IACtG,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAKD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAmC1F;AAgCD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAQD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAIxD;AAUD,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAQhF;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAwB9F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAM,GAAG,MAAM,CAyDjH;AAyCD,wBAAgB,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAG5D"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * V8 `.heapsnapshot` reader, sized for one question: what grew between two
3
+ * snapshots, and who holds it. Retained sizes and dominator trees are out of
4
+ * scope on purpose — they are where the DevTools engine spends its 5,000 lines,
5
+ * and "which class grew, is it detached DOM, what retains it" needs neither.
6
+ */
7
+ import { capLines, formatBytes as fmtBytes } from '../format.js';
8
+ const DETACHED = 2;
9
+ const DETACHED_PREFIX = 'Detached ';
10
+ export function parseHeapSnapshot(json, name, target) {
11
+ const raw = JSON.parse(json);
12
+ const { meta } = raw.snapshot;
13
+ const graph = {
14
+ nodes: Uint32Array.from(raw.nodes),
15
+ edges: Uint32Array.from(raw.edges),
16
+ strings: raw.strings,
17
+ nodeFieldCount: meta.node_fields.length,
18
+ edgeFieldCount: meta.edge_fields.length,
19
+ nodeTypes: meta.node_types[0],
20
+ edgeTypes: meta.edge_types[0],
21
+ nType: meta.node_fields.indexOf('type'),
22
+ nName: meta.node_fields.indexOf('name'),
23
+ nSize: meta.node_fields.indexOf('self_size'),
24
+ nEdgeCount: meta.node_fields.indexOf('edge_count'),
25
+ nDetached: meta.node_fields.indexOf('detachedness'),
26
+ eType: meta.edge_fields.indexOf('type'),
27
+ eName: meta.edge_fields.indexOf('name_or_index'),
28
+ eTo: meta.edge_fields.indexOf('to_node'),
29
+ };
30
+ const classes = new Map();
31
+ let totalSize = 0;
32
+ const nodeCount = graph.nodes.length / graph.nodeFieldCount;
33
+ for (let i = 0; i < nodeCount; i++) {
34
+ const off = i * graph.nodeFieldCount;
35
+ const cls = classOf(graph, off);
36
+ const size = graph.nodes[off + graph.nSize];
37
+ const stat = classes.get(cls) ?? { count: 0, size: 0 };
38
+ stat.count++;
39
+ stat.size += size;
40
+ classes.set(cls, stat);
41
+ totalSize += size;
42
+ }
43
+ return { name, target, nodeCount, totalSize, classes, graph };
44
+ }
45
+ /**
46
+ * DevTools' grouping, minus its per-constructor heuristics: objects and DOM
47
+ * wrappers by name, everything else by V8 type. A detached DOM wrapper becomes
48
+ * its own class so it stands out in a diff instead of hiding among the
49
+ * attached ones.
50
+ */
51
+ function classOf(g, off) {
52
+ const type = g.nodeTypes[g.nodes[off + g.nType]];
53
+ const name = g.strings[g.nodes[off + g.nName]];
54
+ switch (type) {
55
+ case 'object':
56
+ case 'native':
57
+ case 'synthetic': {
58
+ if (name.startsWith(DETACHED_PREFIX))
59
+ return name;
60
+ const detached = g.nDetached >= 0 && g.nodes[off + g.nDetached] === DETACHED;
61
+ return detached ? DETACHED_PREFIX + name : name;
62
+ }
63
+ case 'closure':
64
+ return name ? `${name}()` : '(closure)';
65
+ case 'string':
66
+ case 'concatenated string':
67
+ case 'sliced string':
68
+ return '(string)';
69
+ case 'code':
70
+ return '(compiled code)';
71
+ default:
72
+ return `(${type})`;
73
+ }
74
+ }
75
+ export function isDetachedClass(cls) {
76
+ return cls.startsWith(DETACHED_PREFIX);
77
+ }
78
+ function keep(cls, options) {
79
+ if (options.detached && !isDetachedClass(cls))
80
+ return false;
81
+ if (options.filter && !cls.toLowerCase().includes(options.filter.toLowerCase()))
82
+ return false;
83
+ return true;
84
+ }
85
+ export function describeSnapshot(s) {
86
+ const detached = sumDetached(s.classes);
87
+ return `Snapshot "${s.name}" (${s.target}): ${fmtCount(s.nodeCount)} nodes, ${fmtBytes(s.totalSize)}, `
88
+ + `${fmtCount(detached.count)} detached DOM nodes (${fmtBytes(detached.size)})`;
89
+ }
90
+ function sumDetached(classes) {
91
+ const out = { count: 0, size: 0 };
92
+ for (const [cls, stat] of classes) {
93
+ if (isDetachedClass(cls)) {
94
+ out.count += stat.count;
95
+ out.size += stat.size;
96
+ }
97
+ }
98
+ return out;
99
+ }
100
+ export function formatSummary(s, options = {}) {
101
+ const rows = [...s.classes].filter(([cls]) => keep(cls, options)).sort((a, b) => b[1].size - a[1].size);
102
+ if (rows.length === 0)
103
+ return `(no class matching ${describeFilter(options)} in "${s.name}")`;
104
+ const lines = [describeSnapshot(s), ...table(['class', 'count', 'size'], rows.map(([cls, st]) => [cls, fmtCount(st.count), fmtBytes(st.size)]))];
105
+ return capLines(lines, options.maxLines);
106
+ }
107
+ export function formatDiff(a, b, options = {}) {
108
+ const rows = [];
109
+ for (const cls of new Set([...a.classes.keys(), ...b.classes.keys()])) {
110
+ if (!keep(cls, options))
111
+ continue;
112
+ const before = a.classes.get(cls) ?? { count: 0, size: 0 };
113
+ const after = b.classes.get(cls) ?? { count: 0, size: 0 };
114
+ const dCount = after.count - before.count;
115
+ const dSize = after.size - before.size;
116
+ if (dCount !== 0 || dSize !== 0)
117
+ rows.push([cls, dCount, dSize, after.count]);
118
+ }
119
+ if (rows.length === 0) {
120
+ const scope = options.filter || options.detached ? ` matching ${describeFilter(options)}` : '';
121
+ return `(no class changed between "${a.name}" and "${b.name}"${scope})`;
122
+ }
123
+ rows.sort((x, y) => y[2] - x[2] || y[1] - x[1]);
124
+ const dA = sumDetached(a.classes);
125
+ const dB = sumDetached(b.classes);
126
+ const head = `${a.name} → ${b.name} (${b.target}): ${fmtDelta(b.nodeCount - a.nodeCount)} nodes, `
127
+ + `${fmtDelta(b.totalSize - a.totalSize, true)}, detached ${fmtDelta(dB.count - dA.count)} (${fmtDelta(dB.size - dA.size, true)})`;
128
+ const lines = [head, ...table(['class', 'Δcount', 'Δsize', 'count'], rows.map(([cls, dc, ds, c]) => [cls, fmtDelta(dc), fmtDelta(ds, true), fmtCount(c)]))];
129
+ return capLines(lines, options.maxLines);
130
+ }
131
+ /**
132
+ * Who holds the instances of `cls`: one row per `<retainer class> <edge>`,
133
+ * counting distinct instances, not edges. Element indices collapse to `[]`, so
134
+ * an array of 200 leaks is one row. Weak edges keep nothing alive and are
135
+ * skipped.
136
+ *
137
+ * V8 reports an array's items twice, once from the `Array` and once from its
138
+ * `(object elements)` backing store, and a Map's entries only from the store.
139
+ * Stores name nothing a developer wrote, so an edge from one is attributed to
140
+ * the store's owner; counting instances makes the duplicate collapse. Still one
141
+ * named hop, no path to a GC root: the first owner is usually the map, list or
142
+ * closure at fault. Instances holding each other (DOM sibling links, list
143
+ * nodes) are left out: they never explain why the group is alive.
144
+ */
145
+ export function formatRetainers(s, cls, options = {}) {
146
+ const g = s.graph;
147
+ const nodeCount = g.nodes.length / g.nodeFieldCount;
148
+ const classCache = new Map();
149
+ const clsAt = (off) => {
150
+ let c = classCache.get(off);
151
+ if (c === undefined) {
152
+ c = classOf(g, off);
153
+ classCache.set(off, c);
154
+ }
155
+ return c;
156
+ };
157
+ const weak = g.edgeTypes.indexOf('weak');
158
+ const indexed = new Set([g.edgeTypes.indexOf('element'), g.edgeTypes.indexOf('hidden')]);
159
+ const stores = new Set([g.nodeTypes.indexOf('array'), g.nodeTypes.indexOf('hidden')]);
160
+ const isStore = (off) => stores.has(g.nodes[off + g.nType]);
161
+ const edgeName = (edgeOff) => {
162
+ if (indexed.has(g.edges[edgeOff + g.eType]))
163
+ return '[]';
164
+ const name = g.strings[g.edges[edgeOff + g.eName]];
165
+ return /^\d+$/.test(name) ? '[]' : `.${name}`;
166
+ };
167
+ const held = new Map();
168
+ const hold = (key, instance) => {
169
+ const set = held.get(key) ?? new Set();
170
+ set.add(instance);
171
+ held.set(key, set);
172
+ };
173
+ /** Store node → its edges into `cls`, awaiting the store's owner. */
174
+ const pending = new Map();
175
+ let instances = 0;
176
+ let edgeOff = 0;
177
+ for (let i = 0; i < nodeCount; i++) {
178
+ const off = i * g.nodeFieldCount;
179
+ if (clsAt(off) === cls)
180
+ instances++;
181
+ const edgeCount = g.nodes[off + g.nEdgeCount];
182
+ for (let e = 0; e < edgeCount; e++, edgeOff += g.edgeFieldCount) {
183
+ if (g.edges[edgeOff + g.eType] === weak)
184
+ continue;
185
+ const to = g.edges[edgeOff + g.eTo];
186
+ if (clsAt(to) !== cls || clsAt(off) === cls)
187
+ continue;
188
+ if (isStore(off)) {
189
+ const list = pending.get(off) ?? [];
190
+ list.push([edgeName(edgeOff), to]);
191
+ pending.set(off, list);
192
+ }
193
+ else {
194
+ hold(`${clsAt(off)} ${edgeName(edgeOff)}`, to);
195
+ }
196
+ }
197
+ }
198
+ foldStores(g, pending, isStore, weak, (owner, name, to) => hold(`${clsAt(owner)} ${name}`, to));
199
+ if (instances === 0)
200
+ return `(no instances of "${cls}" in "${s.name}")`;
201
+ if (held.size === 0)
202
+ return `${cls} ×${fmtCount(instances)} in "${s.name}": no strong retainers (GC roots only)`;
203
+ const rows = [...held].map(([k, set]) => [k, set.size]).sort((a, b) => b[1] - a[1]);
204
+ const lines = [
205
+ `${cls} ×${fmtCount(instances)} in "${s.name}", retained by:`,
206
+ ...table(['retainer', 'instances'], rows.map(([k, n]) => [k, fmtCount(n)])),
207
+ ];
208
+ return capLines(lines, options.maxLines);
209
+ }
210
+ /**
211
+ * Attribute edges out of V8 stores to the nearest non-store owner. A store's
212
+ * owner may itself be a store (a Map's table behind its `(object elements)`),
213
+ * so the walk repeats, bounded so a cycle of internals cannot spin it. What is
214
+ * still unowned after that is reported under the store's own name: honest, if
215
+ * unhelpful.
216
+ */
217
+ function foldStores(g, pending, isStore, weak, attribute) {
218
+ const nodeCount = g.nodes.length / g.nodeFieldCount;
219
+ for (let hop = 0; hop < 3 && pending.size > 0; hop++) {
220
+ const next = new Map();
221
+ let edgeOff = 0;
222
+ for (let i = 0; i < nodeCount; i++) {
223
+ const off = i * g.nodeFieldCount;
224
+ const edgeCount = g.nodes[off + g.nEdgeCount];
225
+ for (let e = 0; e < edgeCount; e++, edgeOff += g.edgeFieldCount) {
226
+ if (g.edges[edgeOff + g.eType] === weak)
227
+ continue;
228
+ const list = pending.get(g.edges[edgeOff + g.eTo]);
229
+ if (!list)
230
+ continue;
231
+ if (isStore(off)) {
232
+ next.set(off, [...(next.get(off) ?? []), ...list]);
233
+ }
234
+ else {
235
+ for (const [name, to] of list)
236
+ attribute(off, name, to);
237
+ }
238
+ pending.delete(g.edges[edgeOff + g.eTo]);
239
+ }
240
+ }
241
+ for (const [off, list] of pending)
242
+ next.set(off, [...(next.get(off) ?? []), ...list]);
243
+ pending = next;
244
+ }
245
+ for (const [off, list] of pending)
246
+ for (const [name, to] of list)
247
+ attribute(off, name, to);
248
+ }
249
+ export function formatList(snapshots) {
250
+ if (snapshots.length === 0)
251
+ return '(no heap snapshots taken)';
252
+ return snapshots.map(describeSnapshot).join('\n');
253
+ }
254
+ function describeFilter(options) {
255
+ return options.filter ? `"${options.filter}"` : 'detached';
256
+ }
257
+ function table(header, rows) {
258
+ const widths = header.map((h, i) => Math.max(h.length, ...rows.map(r => r[i].length)));
259
+ const line = (r) => r.map((c, i) => i === 0 ? c.padEnd(widths[i]) : c.padStart(widths[i])).join(' ');
260
+ return [line(header), ...rows.map(line)];
261
+ }
262
+ function fmtCount(n) {
263
+ return n.toLocaleString('en-US');
264
+ }
265
+ function fmtDelta(n, bytes = false) {
266
+ const sign = n > 0 ? '+' : '';
267
+ return sign + (bytes ? fmtBytes(n) : fmtCount(n));
268
+ }
269
+ //# sourceMappingURL=index.js.map