@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +21 -21
- package/LICENSE +21 -21
- package/README.md +82 -3
- package/dist/cdp/transport.d.ts.map +1 -1
- package/dist/cdp/transport.js +154 -15
- package/dist/cdp/transport.js.map +1 -1
- package/dist/cdp/types.d.ts +56 -0
- package/dist/cdp/types.d.ts.map +1 -1
- package/dist/cdp/types.js.map +1 -1
- package/dist/cli/commands/click.d.ts +1 -0
- package/dist/cli/commands/click.d.ts.map +1 -1
- package/dist/cli/commands/click.js +2 -0
- package/dist/cli/commands/click.js.map +1 -1
- package/dist/cli/commands/coverage.d.ts +14 -0
- package/dist/cli/commands/coverage.d.ts.map +1 -0
- package/dist/cli/commands/coverage.js +34 -0
- package/dist/cli/commands/coverage.js.map +1 -0
- package/dist/cli/commands/heap.d.ts +14 -0
- package/dist/cli/commands/heap.d.ts.map +1 -0
- package/dist/cli/commands/heap.js +25 -0
- package/dist/cli/commands/heap.js.map +1 -0
- package/dist/cli/commands/listeners.d.ts +11 -0
- package/dist/cli/commands/listeners.d.ts.map +1 -0
- package/dist/cli/commands/listeners.js +34 -0
- package/dist/cli/commands/listeners.js.map +1 -0
- package/dist/cli/index.js +92 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/inspectors/coverage/index.d.ts +17 -0
- package/dist/inspectors/coverage/index.d.ts.map +1 -0
- package/dist/inspectors/coverage/index.js +62 -0
- package/dist/inspectors/coverage/index.js.map +1 -0
- package/dist/inspectors/format.d.ts +6 -0
- package/dist/inspectors/format.d.ts.map +1 -0
- package/dist/inspectors/format.js +17 -0
- package/dist/inspectors/format.js.map +1 -0
- package/dist/inspectors/heap/index.d.ts +65 -0
- package/dist/inspectors/heap/index.d.ts.map +1 -0
- package/dist/inspectors/heap/index.js +269 -0
- package/dist/inspectors/heap/index.js.map +1 -0
- package/dist/inspectors/listeners/index.d.ts +4 -0
- package/dist/inspectors/listeners/index.d.ts.map +1 -0
- package/dist/inspectors/listeners/index.js +30 -0
- package/dist/inspectors/listeners/index.js.map +1 -0
- package/dist/server/server.d.ts +21 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +150 -9
- package/dist/server/server.js.map +1 -1
- package/package.json +2 -1
- package/skills/verify/SKILL.md +163 -427
- package/skills/verify/references/commands.md +384 -0
- package/skills/verify/references/design-conformance.md +23 -0
- package/skills/verify/references/memory-leaks.md +94 -0
- package/dist/cdp/console-stream.d.ts +0 -35
- package/dist/cdp/console-stream.d.ts.map +0 -1
- package/dist/cdp/console-stream.js +0 -103
- package/dist/cdp/console-stream.js.map +0 -1
- package/dist/inspectors/dom.d.ts +0 -17
- package/dist/inspectors/dom.d.ts.map +0 -1
- package/dist/inspectors/dom.js +0 -131
- package/dist/inspectors/dom.js.map +0 -1
- package/dist/inspectors/scene/pixi.d.ts +0 -3
- package/dist/inspectors/scene/pixi.d.ts.map +0 -1
- package/dist/inspectors/scene/pixi.js +0 -52
- 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)');
|
package/dist/cli/index.js.map
CHANGED
|
@@ -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":";AAEA,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAChE,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAA;IACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGhD,kGAAkG;AAClG,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA;QACnF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAiB,CAAA;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAA;IAChB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;AAE5B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AACxB,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,WAAW,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;AACzB,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,mEAAmE,CAAC;KACrF,MAAM,CAAC,WAAW,EAAE,+DAA+D,CAAC;KACpF,MAAM,CAAC,SAAS,EAAE,4EAA4E,CAAC;KAC/F,MAAM,CAAC,iBAAiB,EAAE,0GAA0G,EAAE,aAAa,CAAC;KACpJ,MAAM,CAAC,QAAQ,EAAE,sEAAsE,CAAC;KACxF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,UAAU,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yEAAyE,CAAC;KACtF,MAAM,CAAC,cAAc,EAAE,kCAAkC,CAAC;KAC1D,MAAM,CAAC,YAAY,EAAE,kCAAkC,CAAC;KACxD,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;KACrE,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;KAC9C,MAAM,CAAC,aAAa,EAAE,6CAA6C,CAAC;KACpE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,oDAAoD,CAAC;KAC7E,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,2BAA2B,CAAC;KACpC,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,cAAc,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACzD,MAAM,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;KAChE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,sBAAsB,EAAE,gFAAgF,EAAE,UAAU,CAAC;KAC5H,MAAM,CAAC,iBAAiB,EAAE,oEAAoE,CAAC;KAC/F,MAAM,CAAC,eAAe,EAAE,sFAAsF,EAAE,WAAW,CAAC;KAC5H,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KAC/C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;KACrD,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC;KACvD,MAAM,CAAC,kBAAkB,EAAE,+DAA+D,EAAE,UAAU,CAAC;KACvG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,oBAAoB,EAAE,+EAA+E,CAAC;KAC7G,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,mBAAmB,EAAE,oEAAoE,CAAC;KACjG,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;KACzD,MAAM,CAAC,QAAQ,EAAE,yDAAyD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAC5C,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;KACrD,MAAM,CAAC,cAAc,EAAE,6CAA6C,CAAC;KACrE,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,UAAU,CAAC;KAClF,MAAM,CAAC,mBAAmB,EAAE,6EAA6E,CAAC;KAC1G,MAAM,CAAC,sBAAsB,EAAE,0DAA0D,CAAC;KAC1F,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,WAAW,EAAE,6EAA6E,CAAC;KAClG,MAAM,CAAC,cAAc,EAAE,qDAAqD,CAAC;KAC7E,MAAM,CAAC,iBAAiB,EAAE,2DAA2D,CAAC;KACtF,MAAM,CAAC,iBAAiB,EAAE,sFAAsF,CAAC;KACjH,MAAM,CAAC,eAAe,EAAE,8DAA8D,CAAC;KACvF,MAAM,CAAC,eAAe,EAAE,+DAA+D,CAAC;KACxF,MAAM,CAAC,cAAc,EAAE,6CAA6C,CAAC;KACrE,MAAM,CAAC,mBAAmB,EAAE,6EAA6E,CAAC;KAC1G,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,4CAA4C,CAAC;KACvE,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACnD,MAAM,CAAC,mBAAmB,EAAE,2DAA2D,CAAC;KACxF,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAEJ,MAAM,IAAI,GAAG,OAAO;KACjB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8EAA8E,CAAC,CAAA;AAE9F,IAAI;KACD,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qFAAqF,CAAC;KAClG,MAAM,CAAC,eAAe,EAAE,mEAAmE,CAAC;KAC5F,MAAM,CAAC,mBAAmB,EAAE,qEAAqE,CAAC;KAClG,MAAM,CAAC,sBAAsB,EAAE,0DAA0D,CAAC;KAC1F,MAAM,CAAC,eAAe,EAAE,qDAAqD,EAAE,UAAU,CAAC;KAC1F,MAAM,CAAC,YAAY,EAAE,+CAA+C,CAAC;KACrE,MAAM,CAAC,yBAAyB,EAAE,0FAA0F,EAAE,OAAO,EAAE,EAAE,CAAC;KAC1I,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AACxC,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpC,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,EAAE,aAAa,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;KAC1E,MAAM,CAAC,gBAAgB,EAAE,uEAAuE,CAAC;KACjG,MAAM,CAAC,sBAAsB,EAAE,0DAA0D,CAAC;KAC1F,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AACxC,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,eAAe,EAAE,sDAAsD,EAAE,OAAO,EAAE,EAAE,CAAC;KAC5F,MAAM,CAAC,kBAAkB,EAAE,2EAA2E,CAAC;KACvG,MAAM,CAAC,WAAW,EAAE,iEAAiE,CAAC;KACtF,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAClC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,wEAAwE,CAAC;KACrF,MAAM,CAAC,SAAS,EAAE,+DAA+D,CAAC;KAClF,MAAM,CAAC,iBAAiB,EAAE,iEAAiE,CAAC;KAC5F,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;KAC/D,MAAM,CAAC,OAAO,EAAE,uEAAuE,CAAC;KACxF,MAAM,CAAC,SAAS,EAAE,4DAA4D,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,CAAC;KAC1D,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,wBAAwB,EAAE,uCAAuC,CAAC;KACzE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEJ,MAAM,IAAI,GAAG,OAAO;KACjB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4EAA4E,CAAC,CAAA;AAE5F,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qFAAqF,CAAC;KAClG,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;KACxE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,wBAAwB,EAAE,uCAAuC,CAAC;KACzE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AACxC,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC;KAC3C,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;KAC/C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,uEAAuE,CAAC;KACpF,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;KAC/C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,CAAqB,EAAE,CAAqB,EAAE,OAAO,EAAE,EAAE;IACtE,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAA;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;AACnF,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,iFAAiF,CAAC;KAC9F,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,OAAO,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAEJ,IAAI;KACD,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,0EAA0E,CAAC;KACvF,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,CAAC;KAC5E,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,kBAAkB,EAAE,4DAA4D,CAAC;KACxF,MAAM,CAAC,aAAa,EAAE,yDAAyD,EAAE,UAAU,CAAC;KAC5F,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC,CAAC,CAAA;AAEJ,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kEAAkE,CAAC,CAAA;AAElF,MAAM;KACH,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACtC,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC,CAAC,CAAA;AAEJ,MAAM;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sFAAsF,CAAC;KACnG,MAAM,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;KACrE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC,CAAC,CAAA;AAEJ,MAAM;KACH,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACxD,CAAC,CAAC,CAAA;AAEJ,MAAM;KACH,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,0EAA0E,CAAC;KACvF,MAAM,CAAC,eAAe,EAAE,iEAAiE,EAAE,OAAO,EAAE,EAAE,CAAC;KACvG,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;KAC1D,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AAEJ,MAAM;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC,CAAC,CAAA;AAEJ,MAAM;KACH,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,yGAAyG,CAAC;KACtH,MAAM,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;KACrE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,gFAAgF,CAAC;KAC7F,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;KAC9D,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAC7C,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA;AAEJ;;;;GAIG;AACH,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAA;QAC9G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzD,OAAO,KAAK,CAAC,MAAM,CAAA;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC7B,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,wEAAwE;AACxE,SAAS,OAAO,CAAC,KAAa,EAAE,QAAkB;IAChD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC7B,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,qCAAqC,CAAC,CAAA;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC7B,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,gCAAgC,CAAC,CAAA;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
@@ -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":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAkBvC;;;;GAIG;AACH,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC3B,OAAO,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;WAChC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;WACvB,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC;WACrC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;WAC7B,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,KAAK,CAAC,EAAoC;IACjD,OAAO,EAAE,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,EAAE,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAyB,EAAE,UAA2B,EAAE;IACrF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,CAAA;IAExC,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,IAAI,GAAqB,EAAE,CAAA;IACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC/D,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC9D,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACpF,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,IAAI,UAAU;YAClD,CAAC,CAAC,MAAM,CAAC,SAAS;YAClB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC9D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAA;QAC3C,OAAO;YACL,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,CAAC,kCAAkC;YAC9F,SAAS,EAAE,CAAC;SACb,CAAA;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS;aAC3B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;aACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACpE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxE,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,UAAU,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAA;IACnF,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACtE,CAAC"}
|
|
@@ -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
|