MCPcopy Index your code
hub / github.com/callstack/agent-device / resolveSelectorChain

Function resolveSelectorChain

src/daemon/selectors-resolve.ts:19–55  ·  view source on GitHub ↗
(
  nodes: SnapshotState['nodes'],
  chain: SelectorChain,
  options: {
    platform: Platform | PublicPlatform;
    requireRect?: boolean;
    requireUnique?: boolean;
    disambiguateAmbiguous?: boolean;
  },
)

Source from the content-addressed store, hash-verified

17};
18
19export function resolveSelectorChain(
20 nodes: SnapshotState['nodes'],
21 chain: SelectorChain,
22 options: {
23 platform: Platform | PublicPlatform;
24 requireRect?: boolean;
25 requireUnique?: boolean;
26 disambiguateAmbiguous?: boolean;
27 },
28): SelectorResolution | null {
29 const requireRect = options.requireRect ?? false;
30 const requireUnique = options.requireUnique ?? true;
31 const diagnostics: SelectorDiagnostics[] = [];
32 for (const [i, selector] of chain.selectors.entries()) {
33 const summary = analyzeSelectorMatches(nodes, selector, options.platform, requireRect);
34 diagnostics.push({ selector: selector.raw, matches: summary.count });
35 if (summary.count === 0 || !summary.firstNode) continue;
36 if (requireUnique && summary.count !== 1) {
37 if (!options.disambiguateAmbiguous || !summary.disambiguated) continue;
38 return {
39 node: summary.disambiguated,
40 selector,
41 selectorIndex: i,
42 matches: summary.count,
43 diagnostics,
44 };
45 }
46 return {
47 node: summary.firstNode,
48 selector,
49 selectorIndex: i,
50 matches: summary.count,
51 diagnostics,
52 };
53 }
54 return null;
55}
56
57export function findSelectorChainMatch(
58 nodes: SnapshotState['nodes'],

Callers 9

isCommandFunction · 0.90
findFirstLocatorMatchFunction · 0.90
resolveSelectorNodeFunction · 0.90
healReplayActionFunction · 0.90
resolveFindMatchFunction · 0.90
selectors.test.tsFile · 0.90

Calls 2

analyzeSelectorMatchesFunction · 0.85
pushMethod · 0.80

Tested by 1