@memlab/mcp-server 2.52.0 → 2.86.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 +22 -2
- package/dist/anonymized-snapshot.d.ts +75 -0
- package/dist/anonymized-snapshot.d.ts.map +1 -0
- package/dist/anonymized-snapshot.js +101 -0
- package/dist/anonymized-snapshot.js.map +1 -0
- package/dist/eval-hints.d.ts +41 -0
- package/dist/eval-hints.d.ts.map +1 -0
- package/dist/eval-hints.js +115 -0
- package/dist/eval-hints.js.map +1 -0
- package/dist/heap-budget.d.ts +32 -0
- package/dist/heap-budget.d.ts.map +1 -0
- package/dist/heap-budget.js +90 -0
- package/dist/heap-budget.js.map +1 -0
- package/dist/heap-shapes.d.ts +148 -0
- package/dist/heap-shapes.d.ts.map +1 -0
- package/dist/heap-shapes.js +193 -0
- package/dist/heap-shapes.js.map +1 -0
- package/dist/heap-state.d.ts +20 -0
- package/dist/heap-state.d.ts.map +1 -1
- package/dist/heap-state.js +8 -1
- package/dist/heap-state.js.map +1 -1
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/dist/react-shapes.d.ts +42 -0
- package/dist/react-shapes.d.ts.map +1 -0
- package/dist/react-shapes.js +149 -0
- package/dist/react-shapes.js.map +1 -0
- package/dist/server-version.d.ts +19 -0
- package/dist/server-version.d.ts.map +1 -0
- package/dist/server-version.js +19 -0
- package/dist/server-version.js.map +1 -0
- package/dist/snapshot-borrow.d.ts +67 -0
- package/dist/snapshot-borrow.d.ts.map +1 -0
- package/dist/snapshot-borrow.js +113 -0
- package/dist/snapshot-borrow.js.map +1 -0
- package/dist/string-index.d.ts.map +1 -1
- package/dist/string-index.js +8 -0
- package/dist/string-index.js.map +1 -1
- package/dist/tools/analyze-run.d.ts.map +1 -1
- package/dist/tools/analyze-run.js +79 -18
- package/dist/tools/analyze-run.js.map +1 -1
- package/dist/tools/anonymize-snapshot.d.ts +12 -0
- package/dist/tools/anonymize-snapshot.d.ts.map +1 -0
- package/dist/tools/anonymize-snapshot.js +159 -0
- package/dist/tools/anonymize-snapshot.js.map +1 -0
- package/dist/tools/app-config.d.ts +12 -0
- package/dist/tools/app-config.d.ts.map +1 -0
- package/dist/tools/app-config.js +217 -0
- package/dist/tools/app-config.js.map +1 -0
- package/dist/tools/app-heap.d.ts +18 -0
- package/dist/tools/app-heap.d.ts.map +1 -1
- package/dist/tools/app-heap.js +12 -46
- package/dist/tools/app-heap.js.map +1 -1
- package/dist/tools/artifact-budget.d.ts +12 -0
- package/dist/tools/artifact-budget.d.ts.map +1 -0
- package/dist/tools/artifact-budget.js +219 -0
- package/dist/tools/artifact-budget.js.map +1 -0
- package/dist/tools/async-census.d.ts +12 -0
- package/dist/tools/async-census.d.ts.map +1 -0
- package/dist/tools/async-census.js +243 -0
- package/dist/tools/async-census.js.map +1 -0
- package/dist/tools/auto-investigate.d.ts.map +1 -1
- package/dist/tools/auto-investigate.js +54 -5
- package/dist/tools/auto-investigate.js.map +1 -1
- package/dist/tools/batch.d.ts.map +1 -1
- package/dist/tools/batch.js +33 -5
- package/dist/tools/batch.js.map +1 -1
- package/dist/tools/cache-analysis.d.ts +15 -0
- package/dist/tools/cache-analysis.d.ts.map +1 -1
- package/dist/tools/cache-analysis.js +85 -10
- package/dist/tools/cache-analysis.js.map +1 -1
- package/dist/tools/census-diff.d.ts +55 -0
- package/dist/tools/census-diff.d.ts.map +1 -0
- package/dist/tools/census-diff.js +228 -0
- package/dist/tools/census-diff.js.map +1 -0
- package/dist/tools/chain-walk.d.ts +12 -0
- package/dist/tools/chain-walk.d.ts.map +1 -0
- package/dist/tools/chain-walk.js +184 -0
- package/dist/tools/chain-walk.js.map +1 -0
- package/dist/tools/collection-diff.d.ts +44 -0
- package/dist/tools/collection-diff.d.ts.map +1 -0
- package/dist/tools/collection-diff.js +343 -0
- package/dist/tools/collection-diff.js.map +1 -0
- package/dist/tools/collection-trend.d.ts.map +1 -1
- package/dist/tools/collection-trend.js +2 -2
- package/dist/tools/collection-trend.js.map +1 -1
- package/dist/tools/detached-dom.d.ts +3 -0
- package/dist/tools/detached-dom.d.ts.map +1 -1
- package/dist/tools/detached-dom.js +78 -3
- package/dist/tools/detached-dom.js.map +1 -1
- package/dist/tools/dev-artifacts.d.ts.map +1 -1
- package/dist/tools/dev-artifacts.js +221 -3
- package/dist/tools/dev-artifacts.js.map +1 -1
- package/dist/tools/diff-snapshots.d.ts.map +1 -1
- package/dist/tools/diff-snapshots.js +18 -2
- package/dist/tools/diff-snapshots.js.map +1 -1
- package/dist/tools/dom-audit.d.ts +37 -0
- package/dist/tools/dom-audit.d.ts.map +1 -0
- package/dist/tools/dom-audit.js +247 -0
- package/dist/tools/dom-audit.js.map +1 -0
- package/dist/tools/duplicated-strings.d.ts.map +1 -1
- package/dist/tools/duplicated-strings.js +3 -2
- package/dist/tools/duplicated-strings.js.map +1 -1
- package/dist/tools/eval-across.d.ts +12 -0
- package/dist/tools/eval-across.d.ts.map +1 -0
- package/dist/tools/eval-across.js +135 -0
- package/dist/tools/eval-across.js.map +1 -0
- package/dist/tools/eval.d.ts +78 -0
- package/dist/tools/eval.d.ts.map +1 -1
- package/dist/tools/eval.js +2270 -701
- package/dist/tools/eval.js.map +1 -1
- package/dist/tools/event-listener-leaks.d.ts.map +1 -1
- package/dist/tools/event-listener-leaks.js +42 -17
- package/dist/tools/event-listener-leaks.js.map +1 -1
- package/dist/tools/event-registry.d.ts.map +1 -1
- package/dist/tools/event-registry.js +42 -8
- package/dist/tools/event-registry.js.map +1 -1
- package/dist/tools/explain-delta.d.ts.map +1 -1
- package/dist/tools/explain-delta.js +61 -10
- package/dist/tools/explain-delta.js.map +1 -1
- package/dist/tools/finding-index.d.ts +181 -0
- package/dist/tools/finding-index.d.ts.map +1 -1
- package/dist/tools/finding-index.js +343 -24
- package/dist/tools/finding-index.js.map +1 -1
- package/dist/tools/get-value.d.ts +16 -0
- package/dist/tools/get-value.d.ts.map +1 -1
- package/dist/tools/get-value.js +96 -2
- package/dist/tools/get-value.js.map +1 -1
- package/dist/tools/hypothesis.d.ts.map +1 -1
- package/dist/tools/hypothesis.js +117 -58
- package/dist/tools/hypothesis.js.map +1 -1
- package/dist/tools/id-space-audit.d.ts +12 -0
- package/dist/tools/id-space-audit.d.ts.map +1 -0
- package/dist/tools/id-space-audit.js +262 -0
- package/dist/tools/id-space-audit.js.map +1 -0
- package/dist/tools/identify.d.ts +12 -0
- package/dist/tools/identify.d.ts.map +1 -0
- package/dist/tools/identify.js +205 -0
- package/dist/tools/identify.js.map +1 -0
- package/dist/tools/identity-diff.d.ts +12 -0
- package/dist/tools/identity-diff.d.ts.map +1 -0
- package/dist/tools/identity-diff.js +188 -0
- package/dist/tools/identity-diff.js.map +1 -0
- package/dist/tools/intern-opportunities.d.ts.map +1 -1
- package/dist/tools/intern-opportunities.js +4 -3
- package/dist/tools/intern-opportunities.js.map +1 -1
- package/dist/tools/ladder-probe.d.ts +65 -0
- package/dist/tools/ladder-probe.d.ts.map +1 -0
- package/dist/tools/ladder-probe.js +445 -0
- package/dist/tools/ladder-probe.js.map +1 -0
- package/dist/tools/ladder.d.ts.map +1 -1
- package/dist/tools/ladder.js +5 -5
- package/dist/tools/ladder.js.map +1 -1
- package/dist/tools/leak-report.d.ts +23 -0
- package/dist/tools/leak-report.d.ts.map +1 -1
- package/dist/tools/leak-report.js +153 -11
- package/dist/tools/leak-report.js.map +1 -1
- package/dist/tools/load-snapshot.d.ts +11 -0
- package/dist/tools/load-snapshot.d.ts.map +1 -1
- package/dist/tools/load-snapshot.js +83 -10
- package/dist/tools/load-snapshot.js.map +1 -1
- package/dist/tools/metric.d.ts +13 -0
- package/dist/tools/metric.d.ts.map +1 -0
- package/dist/tools/metric.js +185 -0
- package/dist/tools/metric.js.map +1 -0
- package/dist/tools/module-attribution.d.ts +36 -0
- package/dist/tools/module-attribution.d.ts.map +1 -0
- package/dist/tools/module-attribution.js +235 -0
- package/dist/tools/module-attribution.js.map +1 -0
- package/dist/tools/next-measurement.d.ts +26 -0
- package/dist/tools/next-measurement.d.ts.map +1 -0
- package/dist/tools/next-measurement.js +149 -0
- package/dist/tools/next-measurement.js.map +1 -0
- package/dist/tools/object-cost-breakdown.d.ts.map +1 -1
- package/dist/tools/object-cost-breakdown.js +64 -0
- package/dist/tools/object-cost-breakdown.js.map +1 -1
- package/dist/tools/population-vs-owners.d.ts +12 -0
- package/dist/tools/population-vs-owners.d.ts.map +1 -0
- package/dist/tools/population-vs-owners.js +183 -0
- package/dist/tools/population-vs-owners.js.map +1 -0
- package/dist/tools/property-names.d.ts +29 -0
- package/dist/tools/property-names.d.ts.map +1 -0
- package/dist/tools/property-names.js +131 -0
- package/dist/tools/property-names.js.map +1 -0
- package/dist/tools/quick-diagnosis.d.ts.map +1 -1
- package/dist/tools/quick-diagnosis.js +7 -1
- package/dist/tools/quick-diagnosis.js.map +1 -1
- package/dist/tools/react-owners.d.ts +12 -0
- package/dist/tools/react-owners.d.ts.map +1 -0
- package/dist/tools/react-owners.js +167 -0
- package/dist/tools/react-owners.js.map +1 -0
- package/dist/tools/react-update-queues.d.ts +12 -0
- package/dist/tools/react-update-queues.d.ts.map +1 -0
- package/dist/tools/react-update-queues.js +173 -0
- package/dist/tools/react-update-queues.js.map +1 -0
- package/dist/tools/replicate.d.ts +49 -0
- package/dist/tools/replicate.d.ts.map +1 -0
- package/dist/tools/replicate.js +241 -0
- package/dist/tools/replicate.js.map +1 -0
- package/dist/tools/retainer-diff.d.ts +12 -0
- package/dist/tools/retainer-diff.d.ts.map +1 -0
- package/dist/tools/retainer-diff.js +168 -0
- package/dist/tools/retainer-diff.js.map +1 -0
- package/dist/tools/retainer-summary.d.ts +17 -0
- package/dist/tools/retainer-summary.d.ts.map +1 -1
- package/dist/tools/retainer-summary.js +85 -22
- package/dist/tools/retainer-summary.js.map +1 -1
- package/dist/tools/retainer-trace.d.ts.map +1 -1
- package/dist/tools/retainer-trace.js +11 -1
- package/dist/tools/retainer-trace.js.map +1 -1
- package/dist/tools/round-audit.d.ts +66 -0
- package/dist/tools/round-audit.d.ts.map +1 -0
- package/dist/tools/round-audit.js +258 -0
- package/dist/tools/round-audit.js.map +1 -0
- package/dist/tools/round-digest.d.ts +12 -0
- package/dist/tools/round-digest.d.ts.map +1 -0
- package/dist/tools/round-digest.js +190 -0
- package/dist/tools/round-digest.js.map +1 -0
- package/dist/tools/script-census.d.ts +12 -0
- package/dist/tools/script-census.d.ts.map +1 -0
- package/dist/tools/script-census.js +182 -0
- package/dist/tools/script-census.js.map +1 -0
- package/dist/tools/sequence-analysis.d.ts +4 -0
- package/dist/tools/sequence-analysis.d.ts.map +1 -1
- package/dist/tools/sequence-analysis.js +53 -9
- package/dist/tools/sequence-analysis.js.map +1 -1
- package/dist/tools/server-status.d.ts.map +1 -1
- package/dist/tools/server-status.js +4 -1
- package/dist/tools/server-status.js.map +1 -1
- package/dist/tools/settle-check.d.ts +12 -0
- package/dist/tools/settle-check.d.ts.map +1 -0
- package/dist/tools/settle-check.js +188 -0
- package/dist/tools/settle-check.js.map +1 -0
- package/dist/tools/sliced-strings.d.ts.map +1 -1
- package/dist/tools/sliced-strings.js +2 -1
- package/dist/tools/sliced-strings.js.map +1 -1
- package/dist/tools/snapshots.d.ts.map +1 -1
- package/dist/tools/snapshots.js +24 -6
- package/dist/tools/snapshots.js.map +1 -1
- package/dist/tools/sparse-elements.d.ts +12 -0
- package/dist/tools/sparse-elements.d.ts.map +1 -0
- package/dist/tools/sparse-elements.js +215 -0
- package/dist/tools/sparse-elements.js.map +1 -0
- package/dist/tools/stale-collections.d.ts +17 -0
- package/dist/tools/stale-collections.d.ts.map +1 -1
- package/dist/tools/stale-collections.js +28 -0
- package/dist/tools/stale-collections.js.map +1 -1
- package/dist/tools/string-patterns.d.ts.map +1 -1
- package/dist/tools/string-patterns.js +2 -1
- package/dist/tools/string-patterns.js.map +1 -1
- package/dist/tools/tools-index.d.ts.map +1 -1
- package/dist/tools/tools-index.js +155 -5
- package/dist/tools/tools-index.js.map +1 -1
- package/dist/tools/trace-all.d.ts +42 -0
- package/dist/tools/trace-all.d.ts.map +1 -0
- package/dist/tools/trace-all.js +263 -0
- package/dist/tools/trace-all.js.map +1 -0
- package/dist/tools/unit-cost.d.ts +12 -0
- package/dist/tools/unit-cost.d.ts.map +1 -0
- package/dist/tools/unit-cost.js +219 -0
- package/dist/tools/unit-cost.js.map +1 -0
- package/dist/tools/verify-fix.d.ts.map +1 -1
- package/dist/tools/verify-fix.js +11 -3
- package/dist/tools/verify-fix.js.map +1 -1
- package/dist/tools/weakref-census.d.ts +15 -0
- package/dist/tools/weakref-census.d.ts.map +1 -0
- package/dist/tools/weakref-census.js +147 -0
- package/dist/tools/weakref-census.js.map +1 -0
- package/dist/tools/what-if.d.ts +12 -0
- package/dist/tools/what-if.d.ts.map +1 -0
- package/dist/tools/what-if.js +285 -0
- package/dist/tools/what-if.js.map +1 -0
- package/dist/utils.d.ts +92 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +172 -5
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-trend.d.ts","sourceRoot":"","sources":["../../src/tools/collection-trend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"collection-trend.d.ts","sourceRoot":"","sources":["../../src/tools/collection-trend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAkBvE;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWlD;AAmBD,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EAAE,GACb,SAAS,GAAG,IAAI,CAOlB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAyC3D;AAED,MAAM,WAAW,kBAAkB;IAEjC,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAGhB,UAAU,EAAE,MAAM,CAAC;IAEnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,OAAO,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAsCjC;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,OAAO,EAAE,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAA;CAAC,CAAC,CA+BzE;AAeD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiK/D"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import fs from 'fs';
|
|
11
11
|
import memlabCore from '@memlab/core';
|
|
12
12
|
import { z } from 'zod';
|
|
13
|
-
import { enumerateMapEntries, enumerateSetElements, errorResult, formatNumber, markdownTable, toolResult, } from '../utils.js';
|
|
13
|
+
import { enumerateMapEntries, enumerateSetElements, errorResult, formatNumber, markdownTable, pathsHeader, toolResult, } from '../utils.js';
|
|
14
14
|
import { resolveLadderPaths } from './ladder.js';
|
|
15
15
|
import { resolveMaxFileSizeMB, resolveSnapshotPath } from './load-snapshot.js';
|
|
16
16
|
const { utils: memlabUtils } = memlabCore;
|
|
@@ -305,7 +305,7 @@ export function registerCollectionTrend(server) {
|
|
|
305
305
|
lines.push('', growers.length > 0
|
|
306
306
|
? `**${formatNumber(growers.length)} collection(s) grew at EVERY rung** (${growers.map(g => `\`${g.raw}\``).join(', ')}) — monotonic growth under a repeated interaction is the signature of an unbounded collection. Confirm the entries are distinct (not one object re-added) with \`memlab_map_entries\`, then \`memlab_retainer_trace\` the owner.`
|
|
307
307
|
: '**No collection grew at every rung.** Net growth without monotonicity is usually a cache filling toward its cap; re-run with more rungs, or check `memlab_cache_analysis` for the cap.');
|
|
308
|
-
return toolResult(lines.join('\n'));
|
|
308
|
+
return toolResult(lines.join('\n'), pathsHeader(labels));
|
|
309
309
|
}
|
|
310
310
|
catch (err) {
|
|
311
311
|
return errorResult(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-trend.js","sourceRoot":"","sources":["../../src/tools/collection-trend.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collection-trend.js","sourceRoot":"","sources":["../../src/tools/collection-trend.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
11
11
|
import type { IHeapNode } from '@memlab/core';
|
|
12
|
+
export declare function isDetachedDOMNode(node: IHeapNode): boolean;
|
|
13
|
+
export declare function isPinned(node: IHeapNode): boolean;
|
|
14
|
+
export declare function extractElementTag(name: string): string;
|
|
12
15
|
export declare function getFirstNonFrameworkRetainer(node: IHeapNode): string;
|
|
13
16
|
export declare function registerDetachedDom(server: McpServer): void;
|
|
14
17
|
//# sourceMappingURL=detached-dom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detached-dom.d.ts","sourceRoot":"","sources":["../../src/tools/detached-dom.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAC,SAAS,EAA2B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"detached-dom.d.ts","sourceRoot":"","sources":["../../src/tools/detached-dom.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAC,SAAS,EAA2B,MAAM,cAAc,CAAC;AAuBtE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAI1D;AASD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAEjD;AAoHD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAItD;AASD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAmCpE;AAuGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqY3D"}
|
|
@@ -13,7 +13,7 @@ import { queryNodes, formatQueryNodesResult, formatBytes, formatNumber, isNodeWo
|
|
|
13
13
|
import memlabCore from '@memlab/core';
|
|
14
14
|
const { NumericSet } = memlabCore;
|
|
15
15
|
import { collectDevRoots, classifyDevOnly, computeReachableWithoutDevRoots, summarizeDevRoots, } from './dev-artifacts.js';
|
|
16
|
-
function isDetachedDOMNode(node) {
|
|
16
|
+
export function isDetachedDOMNode(node) {
|
|
17
17
|
if (node.id <= 3)
|
|
18
18
|
return false;
|
|
19
19
|
if (node.is_detached)
|
|
@@ -27,9 +27,66 @@ function isDetachedDOMNode(node) {
|
|
|
27
27
|
// leak total. This distinguishes the "which half is real" problem where a
|
|
28
28
|
// snapshot's detached-node list mixes genuinely-pinned nodes with transient
|
|
29
29
|
// ones. `hasPathEdge` is the same reachability signal used to walk retainers.
|
|
30
|
-
function isPinned(node) {
|
|
30
|
+
export function isPinned(node) {
|
|
31
31
|
return Boolean(node.hasPathEdge);
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Detached browsing contexts (iframes) that no application object references.
|
|
35
|
+
*
|
|
36
|
+
* A detached `Window` / `HTMLDocument` / `NativeContext` whose only referrers
|
|
37
|
+
* are other detached natives is retained by Blink's own binding layer — on one
|
|
38
|
+
* measured capture the only path to a GC root ran
|
|
39
|
+
* `Window -> History -> History.prototype -> get state (FunctionTemplateInfo)
|
|
40
|
+
* -> WeakMap -> History -> .context -> Detached NativeContext -> Detached
|
|
41
|
+
* Window -> Detached HTMLDocument`, with zero application referrers anywhere.
|
|
42
|
+
*
|
|
43
|
+
* These satisfy `isPinned` and were therefore reported as "actionable leak",
|
|
44
|
+
* which on that capture was 274,935 of 330,334 detached nodes and roughly half
|
|
45
|
+
* the reclaimable bytes. No application change can free them, so counting them
|
|
46
|
+
* in a leak total overstates it by however many stale iframes the page has.
|
|
47
|
+
*/
|
|
48
|
+
const BROWSING_CONTEXT_NAMES = [
|
|
49
|
+
'Detached Window',
|
|
50
|
+
'Detached HTMLDocument',
|
|
51
|
+
'Detached system / NativeContext',
|
|
52
|
+
];
|
|
53
|
+
function findBrowserOwnedContexts(snapshot) {
|
|
54
|
+
const roots = new Set();
|
|
55
|
+
snapshot.nodes.forEach(node => {
|
|
56
|
+
if (!BROWSING_CONTEXT_NAMES.some(n => node.name.startsWith(n)))
|
|
57
|
+
return;
|
|
58
|
+
// "No application referrer" is the whole test: if app code holds it, the
|
|
59
|
+
// app can let go of it and it is a real leak.
|
|
60
|
+
let appReferrer = false;
|
|
61
|
+
for (const ref of node.referrers) {
|
|
62
|
+
const from = ref.fromNode;
|
|
63
|
+
// `system / …` nodes are V8/Blink bookkeeping, not application
|
|
64
|
+
// ownership; counting them as an app referrer would suppress the bucket
|
|
65
|
+
// for exactly the contexts it exists to find.
|
|
66
|
+
if (!from.name.startsWith('Detached ') &&
|
|
67
|
+
!from.name.startsWith('system /') &&
|
|
68
|
+
from.type !== 'synthetic') {
|
|
69
|
+
appReferrer = true;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!appReferrer)
|
|
74
|
+
roots.add(node.id);
|
|
75
|
+
});
|
|
76
|
+
return roots;
|
|
77
|
+
}
|
|
78
|
+
/** Is this node inside one of those contexts? Bounded dominator walk. */
|
|
79
|
+
function isBrowserOwned(node, roots) {
|
|
80
|
+
if (roots.size === 0)
|
|
81
|
+
return false;
|
|
82
|
+
let cur = node;
|
|
83
|
+
for (let i = 0; i < 30 && cur; i++) {
|
|
84
|
+
if (roots.has(cur.id))
|
|
85
|
+
return true;
|
|
86
|
+
cur = cur.dominatorNode ?? null;
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
33
90
|
function emptySplit() {
|
|
34
91
|
return {
|
|
35
92
|
pinnedCount: 0,
|
|
@@ -37,6 +94,8 @@ function emptySplit() {
|
|
|
37
94
|
noPathCount: 0,
|
|
38
95
|
noPathRetained: 0,
|
|
39
96
|
pinnedIds: [],
|
|
97
|
+
browserOwnedCount: 0,
|
|
98
|
+
browserOwnedIds: [],
|
|
40
99
|
};
|
|
41
100
|
}
|
|
42
101
|
/**
|
|
@@ -48,13 +107,19 @@ function emptySplit() {
|
|
|
48
107
|
function formatReachabilitySplit(split, snapshot) {
|
|
49
108
|
const deduped = boundedDominatorRetainedSize(new NumericSet(split.pinnedIds), snapshot);
|
|
50
109
|
const bound = deduped.exact ? '' : ' (upper bound; deep dominator chain)';
|
|
110
|
+
const browserOwnedDeduped = boundedDominatorRetainedSize(new NumericSet(split.browserOwnedIds), snapshot);
|
|
51
111
|
return [
|
|
52
112
|
`- Pinned (retainer path to a GC root — actionable leak): ${formatNumber(split.pinnedCount)} nodes, **${formatBytes(deduped.retained)} reclaimable**${bound} (dominator-deduped)`,
|
|
53
113
|
` - sum over nodes: ${formatBytes(split.pinnedRetained)} — double-counts nested detached subtrees; do NOT quote this as the size of the leak`,
|
|
54
114
|
`- No retainer path found (likely GC-eligible / weak-only — exclude from leak totals): ${formatNumber(split.noPathCount)} nodes, ${formatBytes(split.noPathRetained)}`,
|
|
115
|
+
...(split.browserOwnedCount > 0
|
|
116
|
+
? [
|
|
117
|
+
`- **Of the pinned nodes, ${formatNumber(split.browserOwnedCount)} (${formatBytes(browserOwnedDeduped.retained)} dominator-deduped) sit inside DETACHED BROWSING CONTEXTS with no application referrer** — stale iframes held by Blink's binding layer. No application change frees these; subtract them before quoting a leak total. The app-attributable figure is therefore **${formatBytes(Math.max(0, deduped.retained - browserOwnedDeduped.retained))}**.`,
|
|
118
|
+
]
|
|
119
|
+
: []),
|
|
55
120
|
];
|
|
56
121
|
}
|
|
57
|
-
function extractElementTag(name) {
|
|
122
|
+
export function extractElementTag(name) {
|
|
58
123
|
// V8 names detached DOM as "Detached <div>" or "Detached <div class="...">"
|
|
59
124
|
const match = name.match(/^(?:Detached\s+)?<(\w+)/);
|
|
60
125
|
return match ? match[1] : name;
|
|
@@ -235,6 +300,7 @@ export function registerDetachedDom(server) {
|
|
|
235
300
|
let totalRetainedAll = 0;
|
|
236
301
|
let devOnlyRetained = 0;
|
|
237
302
|
const split = emptySplit();
|
|
303
|
+
const browserContexts = findBrowserOwnedContexts(snapshot);
|
|
238
304
|
snapshot.nodes.forEach(node => {
|
|
239
305
|
if (!isDetachedDOMNode(node))
|
|
240
306
|
return;
|
|
@@ -245,6 +311,10 @@ export function registerDetachedDom(server) {
|
|
|
245
311
|
split.pinnedCount++;
|
|
246
312
|
split.pinnedRetained += node.retainedSize;
|
|
247
313
|
split.pinnedIds.push(node.id);
|
|
314
|
+
if (isBrowserOwned(node, browserContexts)) {
|
|
315
|
+
split.browserOwnedCount++;
|
|
316
|
+
split.browserOwnedIds.push(node.id);
|
|
317
|
+
}
|
|
248
318
|
}
|
|
249
319
|
else {
|
|
250
320
|
split.noPathCount++;
|
|
@@ -440,6 +510,7 @@ export function registerDetachedDom(server) {
|
|
|
440
510
|
return toolResult(lines.join('\n'));
|
|
441
511
|
}
|
|
442
512
|
const split = emptySplit();
|
|
513
|
+
const browserContexts2 = findBrowserOwnedContexts(snapshot);
|
|
443
514
|
snapshot.nodes.forEach(node => {
|
|
444
515
|
if (!isDetachedDOMNode(node))
|
|
445
516
|
return;
|
|
@@ -447,6 +518,10 @@ export function registerDetachedDom(server) {
|
|
|
447
518
|
split.pinnedCount++;
|
|
448
519
|
split.pinnedRetained += node.retainedSize;
|
|
449
520
|
split.pinnedIds.push(node.id);
|
|
521
|
+
if (isBrowserOwned(node, browserContexts2)) {
|
|
522
|
+
split.browserOwnedCount++;
|
|
523
|
+
split.browserOwnedIds.push(node.id);
|
|
524
|
+
}
|
|
450
525
|
}
|
|
451
526
|
else {
|
|
452
527
|
split.noPathCount++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detached-dom.js","sourceRoot":"","sources":["../../src/tools/detached-dom.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,MAAM,EAAC,UAAU,EAAC,GAAG,UAAU,CAAC;AAEhC,OAAO,EACL,eAAe,EACf,eAAe,EACf,+BAA+B,EAC/B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,SAAS,iBAAiB,CAAC,IAAe;IACxC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,8EAA8E;AAC9E,SAAS,QAAQ,CAAC,IAAe;IAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAaD,SAAS,UAAU;IACjB,OAAO;QACL,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,CAAC;QACjB,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,CAAC;QACjB,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAC9B,KAAwB,EACxB,QAAuB;IAEvB,MAAM,OAAO,GAAG,4BAA4B,CAC1C,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAC/B,QAAQ,CACT,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC;IAC1E,OAAO;QACL,4DAA4D,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,KAAK,sBAAsB;QACjL,uBAAuB,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,sFAAsF;QAC9I,yFAAyF,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;KACvK,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,4EAA4E;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,IAAe;IACpC,iEAAiE;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7D,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAe;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;QAC7B,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;QAChB,YAAY;QACZ,wBAAwB;KACzB,CAAC,CAAC;IACH,IAAI,GAAG,GAAqB,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3C,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAqB,GAAG,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,MAAM,IAAI,GAAc,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,MAAM;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErB,IACE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAClC,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,IAAI,KAAK,WAAW;YACzB,IAAI,CAAC,IAAI,KAAK,QAAQ,EACtB,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,oEAAoE;YACpE,sEAAsE;YACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YAClE,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,MAAM,QAAQ,EAAE,CAAC;QACnD,CAAC;QACD,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,4EAA4E;AAC5E,qEAAqE;AACrE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;;;;;;;;;;;;;;;GAeG;AACH,SAAS,qBAAqB;IAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,OAAO,SAAS,OAAO,CAAC,IAAe;QACrC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,GAAG,GAAqB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;QACvD,IAAI,KAAK,GAAqB,IAAI,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,uEAAuE;QACvE,4EAA4E;QAC5E,gEAAgE;QAChE,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,OAAO,GAAG,IAAI,IAAI,GAAG,kBAAkB,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,KAAK,GAAG,MAAM,CAAC;gBACf,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnB,IACE,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBACvB,GAAG,CAAC,IAAI,KAAK,YAAY;gBACzB,qBAAqB,CAAC,GAAG,CAAC,EAC1B,CAAC;gBACD,KAAK,GAAG,GAAG,CAAC;gBACZ,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAqB,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;YACzD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC;gBAChC,wEAAwE;gBACxE,2CAA2C;gBAC3C,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;YACD,GAAG,GAAG,IAAI,CAAC;YACX,IAAI,EAAE,CAAC;QACT,CAAC;QAED,0EAA0E;QAC1E,6EAA6E;QAC7E,0EAA0E;QAC1E,6EAA6E;QAC7E,0EAA0E;QAC1E,2CAA2C;QAC3C,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAuBD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,wVAAwV;QACtV,mZAAmZ;QACnZ,oTAAoT;QACpT,gIAAgI,EAClI;QACE,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;aAC9B,QAAQ,EAAE;aACV,OAAO,CAAC,MAAM,CAAC;aACf,QAAQ,CACP,8HAA8H,CAC/H;QACH,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;aACpD,QAAQ,EAAE;aACV,QAAQ,CACP,6ZAA6Z,CAC9Z;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,2CAA2C,CAAC;QACxD,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,kEAAkE,CACnE;QACH,iBAAiB,EAAE,CAAC;aACjB,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CACP,+WAA+W,CAChX;QACH,uBAAuB,EAAE,CAAC;aACvB,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,4RAA4R,CAC7R;KACJ,EACD,KAAK,EAAE,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,KAAK,EACL,iBAAiB,EACjB,uBAAuB,GACxB,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;YAC7B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,OAAO,UAAU,CACf,8EAA8E;oBAC5E,kDAAkD;oBAClD,oEAAoE;oBACpE,sEAAsE;oBACtE,uEAAuE;oBACvE,kEAAkE,CACrE,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,OAAO,GACX,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;gBAChC,CAAC,CAAC,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACrD,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;gBAC7C,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;gBAC7C,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,IAAI,gBAAgB,GAAG,CAAC,CAAC;gBACzB,IAAI,eAAe,GAAG,CAAC,CAAC;gBACxB,MAAM,KAAK,GAAsB,UAAU,EAAE,CAAC;gBAE9C,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;wBAAE,OAAO;oBACrC,aAAa,EAAE,CAAC;oBAChB,gBAAgB,IAAI,IAAI,CAAC,YAAY,CAAC;oBACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,MAAM,EAAE,CAAC;wBACX,KAAK,CAAC,WAAW,EAAE,CAAC;wBACpB,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC;wBAC1C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,WAAW,EAAE,CAAC;wBACpB,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC;oBAC5C,CAAC;oBACD,MAAM,aAAa,GAAG,QAAQ;wBAC5B,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO;wBAClD,CAAC,CAAC,KAAK,CAAC;oBACV,IAAI,aAAa,EAAE,CAAC;wBAClB,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC;oBACvC,CAAC;oBAED,oEAAoE;oBACpE,oEAAoE;oBACpE,IAAI,uBAAuB,IAAI,CAAC,MAAM;wBAAE,OAAO;oBAE/C,oEAAoE;oBACpE,wDAAwD;oBACxD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAEjC,IAAI,GAAW,CAAC;oBAChB,QAAQ,QAAQ,EAAE,CAAC;wBACjB,KAAK,SAAS;4BACZ,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACnC,MAAM;wBACR,KAAK,UAAU;4BACb,GAAG,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;4BACzC,MAAM;wBACR,KAAK,QAAQ;4BACX,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;4BAC1B,MAAM;wBACR,KAAK,WAAW;4BACd,gEAAgE;4BAChE,6DAA6D;4BAC7D,iEAAiE;4BACjE,0DAA0D;4BAC1D,GAAG,GAAG,KAAK;gCACT,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;gCACjF,CAAC,CAAC,uFAAuF,CAAC;4BAC5F,MAAM;oBACV,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjC,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,KAAK,EAAE,CAAC;wBACjB,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;wBAC5C,IAAI,aAAa;4BAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;wBAC3C,IAAI,KAAK,EAAE,CAAC;4BACV,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,kBAAkB,EAAE,CAAC;gCAChD,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAClC,CAAC;iCAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gCAC5C,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;4BAClC,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,cAAc,EAAE,CAAC;wBAC5B,CAAC;wBACD,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;4BACjD,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;4BAC7B,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;wBAC/C,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;4BACd,KAAK,EAAE,CAAC;4BACR,aAAa,EAAE,IAAI,CAAC,YAAY;4BAChC,SAAS,EAAE,IAAI,CAAC,EAAE;4BAClB,eAAe,EAAE,IAAI,CAAC,YAAY;4BAClC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACnC,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC1C,eAAe,EAAE,KAAK;4BACtB,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC7B,4DAA4D;4BAC5D,8DAA8D;4BAC9D,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;yBAC9C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;wBACtB,OAAO,UAAU,CACf;4BACE,2BAA2B,QAAQ,KAAK,YAAY,CAAC,aAAa,CAAC,iBAAiB,WAAW,CAAC,gBAAgB,CAAC,iBAAiB;4BAClI,GAAG,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC;4BAC3C,uBAAuB;gCACrB,CAAC,CAAC,uGAAuG;gCACzG,CAAC,CAAC,EAAE;yBACP,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;oBACJ,CAAC;oBACD,OAAO,UAAU,CAAC,8BAA8B,CAAC,CAAC;gBACpD,CAAC;gBAED,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;qBACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;qBACvD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAEnB,MAAM,UAAU,GACd,QAAQ,KAAK,SAAS;oBACpB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,QAAQ,KAAK,UAAU;wBACvB,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,QAAQ,KAAK,WAAW;4BACxB,CAAC,CAAC,+BAA+B;4BACjC,CAAC,CAAC,aAAa,CAAC;gBAExB,+DAA+D;gBAC/D,uEAAuE;gBACvE,qEAAqE;gBACrE,mBAAmB;gBACnB,MAAM,WAAW,GACf,QAAQ,IAAI,IAAI;oBAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACrD,iEAAiE;gBACjE,+DAA+D;gBAC/D,4DAA4D;gBAC5D,MAAM,eAAe,GAAG,QAAQ,KAAK,WAAW,CAAC;gBACjD,MAAM,eAAe,GAAG,CAAC,KAAiB,EAAU,EAAE;oBACpD,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC1D,IAAI,CAAC,KAAK,CAAC;wBAAE,OAAO,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC5D,OAAO,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;gBAClE,CAAC,CAAC;gBACF,MAAM,OAAO,GAAG;oBACd,UAAU;oBACV,OAAO;oBACP,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpC,gBAAgB;oBAChB,eAAe;oBACf,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACnD,YAAY;iBACb,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7C,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACvC,MAAM,GAAG,GACP,gBAAgB,GAAG,CAAC;wBAClB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;4BAC3D,GAAG;wBACL,CAAC,CAAC,GAAG,CAAC;oBACV,OAAO;wBACL,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG;wBAChD,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;wBACzB,GAAG,CAAC,WAAW;4BACb,CAAC,CAAC;gCACE,KAAK,CAAC,YAAY,KAAK,CAAC;oCACtB,CAAC,CAAC,GAAG;oCACL,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,KAAK;wCAClC,CAAC,CAAC,KAAK;wCACP,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;6BACzE;4BACH,CAAC,CAAC,EAAE,CAAC;wBACP,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;wBAChC,GAAG;wBACH,eAAe;4BACb,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC;gCACvB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;gCAClC,CAAC,CAAC,GAAG;4BACP,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;wBAC1B,IAAI,KAAK,CAAC,SAAS,EAAE;qBACtB,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,MAAM,KAAK,GAAG;oBACZ,2BAA2B,QAAQ,KAAK,YAAY,CAAC,aAAa,CAAC,iBAAiB,WAAW,CAAC,gBAAgB,CAAC,iBAAiB;oBAClI,GAAG,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC;iBAC5C,CAAC;gBACF,IAAI,uBAAuB,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBACxD,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBAExD,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,CACzD,CAAC;oBACF,KAAK,CAAC,IAAI,CACR,EAAE,EACF,gZAAgZ,CACjZ,CAAC;oBACF,IAAI,SAAS,EAAE,CAAC;wBACd,KAAK,CAAC,IAAI,CACR,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,sQAAsQ,CACjW,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CACR,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;wBACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CACvD,CAAC,MAAM,CAAC;oBACT,KAAK,CAAC,IAAI,CACR,EAAE,EACF,uKAAuK,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,sGAAsG,CAAC,CAAC,CAAC,cAAc,QAAQ,EAAE,uEAAuE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,wJAAwJ,CAAC,CAAC,CAAC,EAAE,GAAG,CACroB,CAAC;gBACJ,CAAC;gBAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;oBAC9D,MAAM,GAAG,GACP,gBAAgB,GAAG,CAAC;wBAClB,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;wBACzD,CAAC,CAAC,GAAG,CAAC;oBACV,KAAK,CAAC,IAAI,CACR,EAAE,EACF,OAAO,WAAW,CAAC,eAAe,CAAC,KAAK,GAAG,4EAA4E,iBAAiB,CAAC,QAAQ,CAAC,yOAAyO,CAC5X,CAAC;gBACJ,CAAC;gBAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,iEAAiE;oBACjE,mEAAmE;oBACnE,2DAA2D;oBAC3D,MAAM,QAAQ,GAAG,eAAe;wBAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;wBAC7C,CAAC,CAAC,SAAS,CAAC;oBACd,KAAK,CAAC,IAAI,CACR,EAAE,EACF,eAAe;wBACb,CAAC,CAAC,QAAQ;4BACR,CAAC,CAAC,2LAA2L,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,sCAAsC;4BACxP,CAAC,CAAC,qNAAqN;wBACzN,CAAC,CAAC,sRAAsR,CAC3R,CAAC;gBACJ,CAAC;gBAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,KAAK,GAAsB,UAAU,EAAE,CAAC;YAC9C,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBAAE,OAAO;gBACrC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnB,KAAK,CAAC,WAAW,EAAE,CAAC;oBACpB,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC;oBAC1C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,WAAW,EAAE,CAAC;oBACpB,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,uBAAuB;gBACvC,CAAC,CAAC,CAAC,CAAY,EAAW,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,iBAAiB,CAAC;YAEtB,MAAM,cAAc,GAClB,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAExE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE;gBAC7C,KAAK,EAAE,cAAc;gBACrB,MAAM;gBACN,UAAU,EAAE,WAAyB;aACtC,CAAC,CAAC;YAEH,MAAM,UAAU,GACd,WAAW,KAAK,KAAK;gBACnB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YACnE,MAAM,MAAM,GAAG,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBACrD,MAAM,OAAO,GACX,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;oBAChC,CAAC,CAAC,2BAA2B,iBAAiB,CAAC,QAAQ,CAAC,mGAAmG;oBAC3J,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,UAAU,GACd,KAAK,CAAC,WAAW,GAAG,CAAC;oBACnB,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,2HAA2H,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB;oBAChN,CAAC,CAAC,EAAE,CAAC;gBACT,OAAO,UAAU,CACf,MAAM;oBACJ,aAAa;oBACb,uEAAuE;oBACvE,iFAAiF;oBACjF,yEAAyE;oBACzE,yLAAyL;oBACzL,UAAU;oBACV,OAAO,CACV,CAAC;YACJ,CAAC;YACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"detached-dom.js","sourceRoot":"","sources":["../../src/tools/detached-dom.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-artifacts.d.ts","sourceRoot":"","sources":["../../src/tools/dev-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAY,SAAS,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-artifacts.d.ts","sourceRoot":"","sources":["../../src/tools/dev-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAY,SAAS,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAiMtE,MAAM,WAAW,QAAQ;IAEvB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG1B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,MAAM,GACN,WAAW,GACX,iBAAiB,GACjB,kBAAkB,GAClB,SAAS,CAAC;AAWd;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,UAAQ,GAAG,MAAM,CAoB7E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ,CAsHjE;AAyED;;;;;;;;;;;;GAYG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,GACjB,UAAU,CA0BZ;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,eAAe,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;CACtE;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,UAAU,GAClB,aAAa,CAgEf;AAyBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,UAAU,EACpB,OAAO,SAAO,GACb;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,CAmBxC;AAmED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgR5D"}
|
|
@@ -97,6 +97,44 @@ function isReactRefreshSignatureRecord(node) {
|
|
|
97
97
|
const HARNESS_EDGE_NAMES = new Set(['TOOL_DEFINITIONS']);
|
|
98
98
|
const HARNESS_NODE_NAME_RE = /getDevToolBridge|BrowserToolsSuspenseInterop|__BROWSER_TOOLS_|__PUPPETEER_/;
|
|
99
99
|
const DEV_NODE_NAME_RE = /__REACT_DEVTOOLS|DEVTOOLS_GLOBAL_HOOK|ReactDevTools/;
|
|
100
|
+
// Dev-tools BRIDGES are not reached through a window global, so none of the
|
|
101
|
+
// checks above see them: the bridge module sits in the app's own module
|
|
102
|
+
// registry and the objects it accumulates (stanza logs, route history, command
|
|
103
|
+
// registries) root at the real Window. A dev-build bridge that records one
|
|
104
|
+
// entry per network message accumulates for as long as the tab is open — on one
|
|
105
|
+
// measured session 15,582 records / 3.05 MB, still growing while idle — and was
|
|
106
|
+
// reported as production memory.
|
|
107
|
+
const DEV_BRIDGE_NODE_NAME_RE = /DevToolsBridge|DevToolBridge|__DEVTOOLS_BRIDGE__/i;
|
|
108
|
+
/**
|
|
109
|
+
* Deployment-specific artifact roots, so a repo can teach this tool about a
|
|
110
|
+
* dev-only global or module the OSS package cannot know about, instead of the
|
|
111
|
+
* family being silently counted as production memory.
|
|
112
|
+
*
|
|
113
|
+
* MEMLAB_DEV_ARTIFACT_GLOBALS=myDebugHook,__MY_DEVTOOLS__
|
|
114
|
+
* MEMLAB_DEV_ARTIFACT_NODE_PATTERN=MyAppDebugBridge|MyProfiler
|
|
115
|
+
*/
|
|
116
|
+
function extraDevGlobalNames() {
|
|
117
|
+
const raw = process.env.MEMLAB_DEV_ARTIFACT_GLOBALS;
|
|
118
|
+
if (raw == null || raw.trim() === '')
|
|
119
|
+
return new Set();
|
|
120
|
+
return new Set(raw
|
|
121
|
+
.split(',')
|
|
122
|
+
.map(n => n.trim())
|
|
123
|
+
.filter(n => n.length > 0));
|
|
124
|
+
}
|
|
125
|
+
function extraDevNodePattern() {
|
|
126
|
+
const raw = process.env.MEMLAB_DEV_ARTIFACT_NODE_PATTERN;
|
|
127
|
+
if (raw == null || raw.trim() === '')
|
|
128
|
+
return null;
|
|
129
|
+
try {
|
|
130
|
+
return new RegExp(raw, 'i');
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// A malformed pattern must not take the whole tool down; it is reported by
|
|
134
|
+
// the explain output instead.
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
100
138
|
// Blink accessibility caches. Under CDP-driven automation the a11y tree is
|
|
101
139
|
// materialized (and browser_take_snapshot inflates it further), so this native
|
|
102
140
|
// cache balloons and co-retains detached DOM — automation-inflated retention
|
|
@@ -186,16 +224,27 @@ export function summarizeDevRoots(devRoots, showAll = false) {
|
|
|
186
224
|
export function collectDevRoots(snapshot) {
|
|
187
225
|
const byId = new Map();
|
|
188
226
|
const categoryById = new Map();
|
|
227
|
+
const extraGlobals = extraDevGlobalNames();
|
|
228
|
+
const extraNodeRe = extraDevNodePattern();
|
|
189
229
|
snapshot.nodes.forEach(node => {
|
|
190
230
|
if (node.id <= 3)
|
|
191
231
|
return;
|
|
232
|
+
// Bridges and deployment-specific dev modules are matched by NODE name:
|
|
233
|
+
// they are not hung off a window global, so the edge-name checks below
|
|
234
|
+
// never see them.
|
|
235
|
+
if (DEV_BRIDGE_NODE_NAME_RE.test(node.name) ||
|
|
236
|
+
(extraNodeRe != null && extraNodeRe.test(node.name))) {
|
|
237
|
+
byId.set(node.id, `${node.name} (dev-tools bridge; absent in production)`);
|
|
238
|
+
categoryById.set(node.id, 'devGlobal');
|
|
239
|
+
}
|
|
192
240
|
const isGlobal = node.name.startsWith('Window ') ||
|
|
193
241
|
node.name === 'global' ||
|
|
194
242
|
node.name === 'globalThis';
|
|
195
243
|
if (isGlobal) {
|
|
196
244
|
for (const edge of node.references) {
|
|
197
245
|
const eName = String(edge.name_or_index);
|
|
198
|
-
if (DEV_GLOBAL_EDGE_NAMES.has(eName)
|
|
246
|
+
if ((DEV_GLOBAL_EDGE_NAMES.has(eName) || extraGlobals.has(eName)) &&
|
|
247
|
+
edge.toNode.id > 3) {
|
|
199
248
|
byId.set(edge.toNode.id, eName);
|
|
200
249
|
categoryById.set(edge.toNode.id, 'devGlobal');
|
|
201
250
|
}
|
|
@@ -262,6 +311,71 @@ export function collectDevRoots(snapshot) {
|
|
|
262
311
|
});
|
|
263
312
|
return { byId, categoryById };
|
|
264
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Size each Fast Refresh registry container together with its hash-table
|
|
316
|
+
* backing store, and report the table's OCCUPANCY.
|
|
317
|
+
*
|
|
318
|
+
* Occupancy is the part that is not obvious and not otherwise reported. V8 never
|
|
319
|
+
* shrinks an `EphemeronHashTable`, so a WeakMap that ever peaked large keeps
|
|
320
|
+
* that capacity for the lifetime of the isolate. Measured across one sweep, the
|
|
321
|
+
* same `allSignaturesByType` table read:
|
|
322
|
+
*
|
|
323
|
+
* 2,097,172 B / 262,144 slots / 2,989 live entries = 1.14% occupancy
|
|
324
|
+
* 8,388,628 B / 1,048,576 slots / 7,564 live entries = 0.72% occupancy
|
|
325
|
+
*
|
|
326
|
+
* i.e. it quadrupled while the live entry count only 2.5x'd. Printing bytes
|
|
327
|
+
* alone invites "the registry grew"; printing occupancy says "the table is
|
|
328
|
+
* stale capacity", which is the true statement and a different fix.
|
|
329
|
+
*
|
|
330
|
+
* A hash table's slot count is derived from the backing store's byte size
|
|
331
|
+
* (8 bytes per slot on 64-bit V8) rather than from `edge_count`, because
|
|
332
|
+
* `edge_count` counts only the non-hole entries — which is the numerator, not
|
|
333
|
+
* the denominator.
|
|
334
|
+
*/
|
|
335
|
+
function describeReactRefreshRegistries(snapshot, devRoots) {
|
|
336
|
+
const out = [];
|
|
337
|
+
const seen = new Set();
|
|
338
|
+
snapshot.nodes.forEach((node) => {
|
|
339
|
+
if (node.id <= 3)
|
|
340
|
+
return;
|
|
341
|
+
for (const edge of node.references) {
|
|
342
|
+
const eName = String(edge.name_or_index);
|
|
343
|
+
if (!REACT_REFRESH_REGISTRY_EDGE_NAMES.has(eName))
|
|
344
|
+
continue;
|
|
345
|
+
const container = edge.toNode;
|
|
346
|
+
if (container == null || container.id <= 3 || seen.has(container.id)) {
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
seen.add(container.id);
|
|
350
|
+
// The hash table hanging off the Map/Set/WeakMap.
|
|
351
|
+
let tableBytes = 0;
|
|
352
|
+
let liveSlots = 0;
|
|
353
|
+
for (const e2 of container.references) {
|
|
354
|
+
const t = e2.toNode;
|
|
355
|
+
if (t == null || t.type !== 'array')
|
|
356
|
+
continue;
|
|
357
|
+
if (t.self_size > tableBytes) {
|
|
358
|
+
tableBytes = t.self_size;
|
|
359
|
+
liveSlots = t.edge_count;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
const capacity = tableBytes > 0 ? Math.round(tableBytes / 8) : 0;
|
|
363
|
+
const occupancy = capacity > 0 ? ((liveSlots / capacity) * 100).toFixed(2) : null;
|
|
364
|
+
out.push(`\`${eName}\` (${container.name}) — table ${formatBytes(tableBytes)}` +
|
|
365
|
+
(capacity > 0
|
|
366
|
+
? `, ~${formatNumber(capacity)} slots, ${formatNumber(liveSlots)} live` +
|
|
367
|
+
(occupancy != null ? ` (**${occupancy}% occupancy**)` : '')
|
|
368
|
+
: '') +
|
|
369
|
+
(occupancy != null && Number(occupancy) < 25
|
|
370
|
+
? ' — mostly STALE CAPACITY: V8 never shrinks an EphemeronHashTable, so this is a high-water mark, not live data'
|
|
371
|
+
: ''));
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
if (out.length > 0 && devRoots.byId.size > 0) {
|
|
375
|
+
out.push('_These are dev-build only. If an `(unnamed array)` is one of the largest growers in a `memlab_leak_report` on this capture, check these byte figures before attributing it to the app._');
|
|
376
|
+
}
|
|
377
|
+
return out;
|
|
378
|
+
}
|
|
265
379
|
/**
|
|
266
380
|
* Reachability from GC roots with every dev/automation root treated as a sink
|
|
267
381
|
* (its outgoing edges are not followed). Returns a bitmap indexed by
|
|
@@ -448,6 +562,70 @@ export function classifyDevOnly(node, devRoots, reached, maxWalk = 1000) {
|
|
|
448
562
|
}
|
|
449
563
|
return { devOnly: false, via: null };
|
|
450
564
|
}
|
|
565
|
+
/**
|
|
566
|
+
* The families this tool knows how to look for, and whether any root for each
|
|
567
|
+
* was found. Printed on demand because the failure mode of a hardcoded family
|
|
568
|
+
* list is silence: a family nobody thought of contributes 0 bytes and reads
|
|
569
|
+
* exactly like "there are no artifacts in this snapshot".
|
|
570
|
+
*/
|
|
571
|
+
function explainCoverage(devRoots) {
|
|
572
|
+
const seen = new Map();
|
|
573
|
+
for (const cat of devRoots.categoryById.values()) {
|
|
574
|
+
seen.set(cat, (seen.get(cat) ?? 0) + 1);
|
|
575
|
+
}
|
|
576
|
+
const families = [
|
|
577
|
+
[
|
|
578
|
+
'devGlobal',
|
|
579
|
+
'Dev/extension globals + dev-tools bridges',
|
|
580
|
+
[...DEV_GLOBAL_EDGE_NAMES].join(', ') +
|
|
581
|
+
`; node names matching ${DEV_BRIDGE_NODE_NAME_RE}`,
|
|
582
|
+
],
|
|
583
|
+
[
|
|
584
|
+
'reactFastRefresh',
|
|
585
|
+
'React Fast Refresh registries',
|
|
586
|
+
[...REACT_REFRESH_GLOBAL_EDGE_NAMES].join(', '),
|
|
587
|
+
],
|
|
588
|
+
[
|
|
589
|
+
'a11y',
|
|
590
|
+
'Blink accessibility caches (CDP-inflated)',
|
|
591
|
+
String(AX_NODE_NAME_RE),
|
|
592
|
+
],
|
|
593
|
+
[
|
|
594
|
+
'console',
|
|
595
|
+
'Inspector console retention',
|
|
596
|
+
`${GLOBAL_HANDLES_NODE_NAME} edges matching ${CONSOLE_HANDLE_EDGE_RE}`,
|
|
597
|
+
],
|
|
598
|
+
[
|
|
599
|
+
'harness',
|
|
600
|
+
'Automation/test-harness bundle',
|
|
601
|
+
[...HARNESS_EDGE_NAMES].join(', ') + `; ${HARNESS_NODE_NAME_RE}`,
|
|
602
|
+
],
|
|
603
|
+
[
|
|
604
|
+
'reactDebugStack',
|
|
605
|
+
'React DEV owner stacks',
|
|
606
|
+
[...REACT_DEBUG_STACK_EDGE_NAMES].join(', '),
|
|
607
|
+
],
|
|
608
|
+
];
|
|
609
|
+
const rows = families.map(([cat, name, rule]) => [
|
|
610
|
+
name,
|
|
611
|
+
seen.has(cat) ? `${seen.get(cat)} root(s)` : 'none found',
|
|
612
|
+
rule.length > 90 ? rule.slice(0, 87) + '…' : rule,
|
|
613
|
+
]);
|
|
614
|
+
const extraGlobals = [...extraDevGlobalNames()];
|
|
615
|
+
const extraPattern = process.env.MEMLAB_DEV_ARTIFACT_NODE_PATTERN;
|
|
616
|
+
const lines = [
|
|
617
|
+
'### Families checked',
|
|
618
|
+
'',
|
|
619
|
+
markdownTable(['Family', 'Found here', 'Match rule'], rows),
|
|
620
|
+
'',
|
|
621
|
+
extraGlobals.length > 0 || extraPattern
|
|
622
|
+
? `Deployment additions in effect: ${extraGlobals.length > 0 ? `globals [${extraGlobals.join(', ')}]` : ''}${extraGlobals.length > 0 && extraPattern ? '; ' : ''}${extraPattern ? `node pattern /${extraPattern}/` : ''}.`
|
|
623
|
+
: '_No deployment additions configured. If a family below reads "none found" but you know the surface has one, teach it: `MEMLAB_DEV_ARTIFACT_GLOBALS=name1,name2` for a window global, `MEMLAB_DEV_ARTIFACT_NODE_PATTERN=regex` for a module/bridge reached through the app\'s own registry._',
|
|
624
|
+
'',
|
|
625
|
+
'_"none found" means no ROOT for that family exists in this capture — it does not mean the family was ruled out for the objects you are looking at._',
|
|
626
|
+
];
|
|
627
|
+
return lines.join('\n');
|
|
628
|
+
}
|
|
451
629
|
export function registerDevArtifacts(server) {
|
|
452
630
|
server.tool('memlab_dev_artifacts', 'Classify large retainers as production-relevant vs. dev/automation-only (browser snapshots). Flags any object retained ONLY through a dev/extension global (__REACT_DEVTOOLS_GLOBAL_HOOK__, __REDUX_DEVTOOLS_EXTENSION__, window.Debug, …), through a Blink accessibility cache (AXObjectCacheImpl/AXNodeObject/AXDirtyObject) inflated by CDP-driven automation building the a11y tree, OR through the attached inspector\'s console — objects passed to console.log / a dev-build devConsole are held by DevTools/CDP via "(Global handles) → … / DevTools console" edges (and can pin a whole detached DOM subtree, e.g. a logged {node} ref), which are GC\'d once DevTools/automation detaches. All three are measurement artifacts that should not be counted as production leaks. Reports total bytes attributable to them so "241 MB leak!" headlines that are really DevTools / a11y-cache / console retention get caught.', {
|
|
453
631
|
limit: z
|
|
@@ -455,6 +633,11 @@ export function registerDevArtifacts(server) {
|
|
|
455
633
|
.optional()
|
|
456
634
|
.default(25)
|
|
457
635
|
.describe('Maximum number of objects to classify (default 25).'),
|
|
636
|
+
explain: z
|
|
637
|
+
.boolean()
|
|
638
|
+
.optional()
|
|
639
|
+
.default(false)
|
|
640
|
+
.describe('List every artifact family this tool checks and whether roots for it were found in this snapshot (default false). A family that is missing from the built-in set produces a silent zero, which reads as "no artifacts here" — this makes the coverage visible so a miss can be recognised and, if needed, taught with MEMLAB_DEV_ARTIFACT_GLOBALS / MEMLAB_DEV_ARTIFACT_NODE_PATTERN.'),
|
|
458
641
|
min_retained_size: z
|
|
459
642
|
.number()
|
|
460
643
|
.optional()
|
|
@@ -470,7 +653,12 @@ export function registerDevArtifacts(server) {
|
|
|
470
653
|
.optional()
|
|
471
654
|
.default(false)
|
|
472
655
|
.describe('List every dev/automation root by name instead of summarizing them as counts per family (default false). The full list is unbounded — one root per a11y object and per bridge export — and cost ~1,500 tokens per call on a measured run. Use it only when chasing one specific root.'),
|
|
473
|
-
|
|
656
|
+
summary_only: z
|
|
657
|
+
.boolean()
|
|
658
|
+
.optional()
|
|
659
|
+
.default(true)
|
|
660
|
+
.describe('Headline totals and the per-source breakdown ONLY (DEFAULT TRUE). This is the largest single output of any tool here and the ranked table is re-read for a number that is already in the headline; pass false for the per-object classification table and the below-threshold aggregation'),
|
|
661
|
+
}, async ({ limit, min_retained_size, only_dev, show_roots, explain, summary_only, }) => {
|
|
474
662
|
try {
|
|
475
663
|
const snapshot = getSnapshot();
|
|
476
664
|
const meta = getSnapshotMetadata();
|
|
@@ -478,7 +666,8 @@ export function registerDevArtifacts(server) {
|
|
|
478
666
|
const devRoots = collectDevRoots(snapshot);
|
|
479
667
|
if (devRoots.byId.size === 0) {
|
|
480
668
|
return toolResult('No dev/extension globals (__REACT_DEVTOOLS_GLOBAL_HOOK__, __REDUX_DEVTOOLS_EXTENSION__, window.Debug, …) or accessibility caches (AXObjectCacheImpl, …) found in this snapshot. ' +
|
|
481
|
-
'Either this is a production/clean capture, or none were installed — large retainers here are NOT dev/automation artifacts.'
|
|
669
|
+
'Either this is a production/clean capture, or none were installed — large retainers here are NOT dev/automation artifacts.' +
|
|
670
|
+
(explain ? '\n\n' + explainCoverage(devRoots) : ''));
|
|
482
671
|
}
|
|
483
672
|
// One reachability pass (dev roots as sinks) drives every
|
|
484
673
|
// classification below — catches multi-dev-root co-retention that a
|
|
@@ -564,7 +753,33 @@ export function registerDevArtifacts(server) {
|
|
|
564
753
|
if (breakdown.length > 0) {
|
|
565
754
|
lines.push(`By source: ${breakdown.join(' · ')}`);
|
|
566
755
|
}
|
|
756
|
+
// Name the Fast Refresh registries and their BACKING STORES explicitly.
|
|
757
|
+
// The category rollup above already counts these bytes, but it counts
|
|
758
|
+
// them as a number, and the thing an operator actually needs is the
|
|
759
|
+
// sentence "the biggest `(unnamed array)` in your leak report is this".
|
|
760
|
+
// Without it the top grower gets hand-resolved every single round: it
|
|
761
|
+
// presents as an anonymous multi-MB array, `leak_report` can only say
|
|
762
|
+
// "50-70% dev-only" because the CLASS mixes Fast Refresh tables with
|
|
763
|
+
// real ones, and the operator ends up walking to the WeakMap by hand to
|
|
764
|
+
// find `{forceReset, ownKey, fullKey, getCustomHooks}` again.
|
|
765
|
+
const refreshTables = describeReactRefreshRegistries(snapshot, devRoots);
|
|
766
|
+
if (refreshTables.length > 0) {
|
|
767
|
+
lines.push('', '**React Fast Refresh registries (dev-only) — including backing stores:**', ...refreshTables.map(t => `- ${t}`));
|
|
768
|
+
}
|
|
567
769
|
lines.push('_This total covers the whole heap and is NOT limited by `min_retained_size` — high-count/low-size artifacts (per-event log strings, one logged object per interaction) are included._', '', "> ⚠️ **This is not the whole artifact bill.** This tool measures RETENTION-BY-A-DEV-ROOT (dev/extension globals, the inspector console, a11y caches, Fast Refresh, the automation bridge). It does NOT count **V8 JIT warmup** — `system/Code`, `InstructionStream`, `BytecodeArray`, `ProtectedFixedArray` — which is a separate and often larger bucket, and which grows simply because a hunt exercises new code paths. On one measured round this tool reported 4.8 MB / 1.5% dev-only while JIT warmup accounted for +5.7 MB of that round's 10.8 MB of growth. For the growth-side view of both, run `memlab_explain_delta` with `include_artifacts: true` against the baseline rung.", '');
|
|
770
|
+
if (summary_only) {
|
|
771
|
+
// Say what was withheld and how to get it. A tool that quietly prints
|
|
772
|
+
// less reads as a tool that found less.
|
|
773
|
+
lines.push(`_summary_only: the ${formatNumber(cands.length)}-row classification table` +
|
|
774
|
+
(belowDevOnlyCount > 0
|
|
775
|
+
? ` and the below-threshold aggregation (${formatNumber(belowDevOnlyCount)} objects)`
|
|
776
|
+
: '') +
|
|
777
|
+
' are withheld. Re-run with `summary_only: false` for them._');
|
|
778
|
+
if (explain) {
|
|
779
|
+
lines.push('', explainCoverage(devRoots));
|
|
780
|
+
}
|
|
781
|
+
return toolResult(lines.join('\n'));
|
|
782
|
+
}
|
|
568
783
|
if (cands.length > 0) {
|
|
569
784
|
const headers = ['ID', 'Name', 'Type', 'Retained', 'Classification'];
|
|
570
785
|
const rightCols = new Set([3]);
|
|
@@ -598,6 +813,9 @@ export function registerDevArtifacts(server) {
|
|
|
598
813
|
}
|
|
599
814
|
}
|
|
600
815
|
lines.push('', '_"dev-only" = the object\'s dominator chain passes through a dev/extension global, a Blink a11y cache, or an inspector "DevTools console" global handle, so every retainer path goes through it. Dev-global-retained objects would be GC\'d in production; a11y-cache and DevTools-console retention are automation/inspector-inflated (the a11y tree is materialized by CDP; console-logged objects are held by the attached inspector) and not present in a normal user session with DevTools closed. Either way, discount from production leak totals. Verify with `memlab_retainer_trace`._');
|
|
816
|
+
if (explain) {
|
|
817
|
+
lines.push('', explainCoverage(devRoots));
|
|
818
|
+
}
|
|
601
819
|
return toolResult(lines.join('\n'));
|
|
602
820
|
}
|
|
603
821
|
catch (err) {
|