react-native-ai-devtools 2.21.1 → 2.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +2 -2
  2. package/build/__tests__/unit/captureOrientationCache.test.d.ts +2 -0
  3. package/build/__tests__/unit/captureOrientationCache.test.d.ts.map +1 -0
  4. package/build/__tests__/unit/captureOrientationCache.test.js +37 -0
  5. package/build/__tests__/unit/captureOrientationCache.test.js.map +1 -0
  6. package/build/__tests__/unit/decisionTree.test.d.ts +2 -0
  7. package/build/__tests__/unit/decisionTree.test.d.ts.map +1 -0
  8. package/build/__tests__/unit/decisionTree.test.js +22 -0
  9. package/build/__tests__/unit/decisionTree.test.js.map +1 -0
  10. package/build/__tests__/unit/deviceResolver.test.js +44 -0
  11. package/build/__tests__/unit/deviceResolver.test.js.map +1 -1
  12. package/build/__tests__/unit/inputTextTool.test.js +23 -1
  13. package/build/__tests__/unit/inputTextTool.test.js.map +1 -1
  14. package/build/__tests__/unit/jsExecuteSplit.test.d.ts +2 -0
  15. package/build/__tests__/unit/jsExecuteSplit.test.d.ts.map +1 -0
  16. package/build/__tests__/unit/jsExecuteSplit.test.js +26 -0
  17. package/build/__tests__/unit/jsExecuteSplit.test.js.map +1 -0
  18. package/build/__tests__/unit/metroGateReconnect.test.js +71 -2
  19. package/build/__tests__/unit/metroGateReconnect.test.js.map +1 -1
  20. package/build/__tests__/unit/moduleRegistry.test.js +33 -7
  21. package/build/__tests__/unit/moduleRegistry.test.js.map +1 -1
  22. package/build/__tests__/unit/navigateUnmounted.test.d.ts +2 -0
  23. package/build/__tests__/unit/navigateUnmounted.test.d.ts.map +1 -0
  24. package/build/__tests__/unit/navigateUnmounted.test.js +63 -0
  25. package/build/__tests__/unit/navigateUnmounted.test.js.map +1 -0
  26. package/build/__tests__/unit/pressablesPrunedRoute.test.d.ts +2 -0
  27. package/build/__tests__/unit/pressablesPrunedRoute.test.d.ts.map +1 -0
  28. package/build/__tests__/unit/pressablesPrunedRoute.test.js +68 -0
  29. package/build/__tests__/unit/pressablesPrunedRoute.test.js.map +1 -0
  30. package/build/__tests__/unit/reloadAppStateNote.test.d.ts +2 -0
  31. package/build/__tests__/unit/reloadAppStateNote.test.d.ts.map +1 -0
  32. package/build/__tests__/unit/reloadAppStateNote.test.js +65 -0
  33. package/build/__tests__/unit/reloadAppStateNote.test.js.map +1 -0
  34. package/build/__tests__/unit/screenStateMeasureWait.test.d.ts +2 -0
  35. package/build/__tests__/unit/screenStateMeasureWait.test.d.ts.map +1 -0
  36. package/build/__tests__/unit/screenStateMeasureWait.test.js +49 -0
  37. package/build/__tests__/unit/screenStateMeasureWait.test.js.map +1 -0
  38. package/build/__tests__/unit/tapTestIdSettle.test.d.ts +2 -0
  39. package/build/__tests__/unit/tapTestIdSettle.test.d.ts.map +1 -0
  40. package/build/__tests__/unit/tapTestIdSettle.test.js +136 -0
  41. package/build/__tests__/unit/tapTestIdSettle.test.js.map +1 -0
  42. package/build/__tests__/unit/waitForMeasurements.test.js +16 -1
  43. package/build/__tests__/unit/waitForMeasurements.test.js.map +1 -1
  44. package/build/core/connection.d.ts +6 -0
  45. package/build/core/connection.d.ts.map +1 -1
  46. package/build/core/connection.js +42 -1
  47. package/build/core/connection.js.map +1 -1
  48. package/build/core/debugGlobals.d.ts +1 -0
  49. package/build/core/debugGlobals.d.ts.map +1 -1
  50. package/build/core/debugGlobals.js +5 -31
  51. package/build/core/debugGlobals.js.map +1 -1
  52. package/build/core/deviceResolver.d.ts.map +1 -1
  53. package/build/core/deviceResolver.js +17 -1
  54. package/build/core/deviceResolver.js.map +1 -1
  55. package/build/core/guides.d.ts.map +1 -1
  56. package/build/core/guides.js +7 -1
  57. package/build/core/guides.js.map +1 -1
  58. package/build/core/ios.d.ts +1 -1
  59. package/build/core/ios.d.ts.map +1 -1
  60. package/build/core/ios.js +2 -2
  61. package/build/core/ios.js.map +1 -1
  62. package/build/core/jsExecute.d.ts.map +1 -1
  63. package/build/core/jsExecute.js +31 -1
  64. package/build/core/jsExecute.js.map +1 -1
  65. package/build/core/measureWait.d.ts +14 -0
  66. package/build/core/measureWait.d.ts.map +1 -0
  67. package/build/core/measureWait.js +35 -0
  68. package/build/core/measureWait.js.map +1 -0
  69. package/build/core/moduleRegistry.d.ts.map +1 -1
  70. package/build/core/moduleRegistry.js +19 -6
  71. package/build/core/moduleRegistry.js.map +1 -1
  72. package/build/core/nativeOnlyHints.d.ts +5 -1
  73. package/build/core/nativeOnlyHints.d.ts.map +1 -1
  74. package/build/core/nativeOnlyHints.js +22 -4
  75. package/build/core/nativeOnlyHints.js.map +1 -1
  76. package/build/core/navigate.d.ts +1 -0
  77. package/build/core/navigate.d.ts.map +1 -1
  78. package/build/core/navigate.js +44 -4
  79. package/build/core/navigate.js.map +1 -1
  80. package/build/core/navigation.d.ts.map +1 -1
  81. package/build/core/navigation.js +17 -2
  82. package/build/core/navigation.js.map +1 -1
  83. package/build/core/netInfoPatch.d.ts.map +1 -1
  84. package/build/core/netInfoPatch.js +2 -1
  85. package/build/core/netInfoPatch.js.map +1 -1
  86. package/build/core/pressables.d.ts +0 -12
  87. package/build/core/pressables.d.ts.map +1 -1
  88. package/build/core/pressables.js +28 -35
  89. package/build/core/pressables.js.map +1 -1
  90. package/build/core/screenLayout.d.ts.map +1 -1
  91. package/build/core/screenLayout.js +9 -1
  92. package/build/core/screenLayout.js.map +1 -1
  93. package/build/core/screenState.d.ts.map +1 -1
  94. package/build/core/screenState.js +18 -2
  95. package/build/core/screenState.js.map +1 -1
  96. package/build/pro/tap.d.ts +1 -0
  97. package/build/pro/tap.d.ts.map +1 -1
  98. package/build/pro/tap.js +56 -23
  99. package/build/pro/tap.js.map +1 -1
  100. package/build/pro/verifyAction.js +1 -1
  101. package/build/pro/verifyAction.js.map +1 -1
  102. package/build/tools/interactionTools.d.ts +10 -0
  103. package/build/tools/interactionTools.d.ts.map +1 -1
  104. package/build/tools/interactionTools.js +14 -2
  105. package/build/tools/interactionTools.js.map +1 -1
  106. package/build/tools/navigationTools.d.ts.map +1 -1
  107. package/build/tools/navigationTools.js +2 -0
  108. package/build/tools/navigationTools.js.map +1 -1
  109. package/package.json +1 -1
  110. package/tools.json +1 -0
@@ -17,31 +17,44 @@ var __eb_require = (function () {
17
17
  cache = entries;
18
18
  return cache;
19
19
  }
20
+ var EXT = /\\.(jsx?|tsx?)$/;
20
21
  return function (name) {
21
22
  var entries = index();
22
23
  if (!entries) {
23
- return { __eb_error: 'Metro module registry is unavailable (globalThis.__r missing or has no getModules). Only pre-existing globals are reachable.' };
24
+ throw new Error('Metro module registry is unavailable (globalThis.__r missing or has no getModules). Only pre-existing globals are reachable.');
24
25
  }
25
26
  if (entries.length === 0) {
26
- return { __eb_error: 'Metro module registry exposed no module names (verboseName absent, likely a minified bundle). Only pre-existing globals are reachable.' };
27
+ throw new Error('Metro module registry exposed no module names (verboseName absent, likely a minified bundle). Only pre-existing globals are reachable.');
27
28
  }
28
- var needle = String(name);
29
+ // './src/a' and '../src/a' name the registry's 'src/a.ts' or 'src/a/index.ts'.
30
+ var needle = String(name).replace(/^(\\.\\.?\\/)+/, '');
31
+ var base = needle.replace(EXT, '');
32
+ var wanted = [needle];
33
+ var exts = ['.ts', '.tsx', '.js', '.jsx'];
34
+ for (var x = 0; x < exts.length; x++) wanted.push(base + exts[x], base + '/index' + exts[x]);
29
35
  var exact = [];
30
36
  var partial = [];
31
37
  for (var i = 0; i < entries.length; i++) {
32
38
  var n = entries[i].name;
33
- if (n === needle) exact.push(entries[i]);
39
+ if (wanted.indexOf(n) !== -1) exact.push(entries[i]);
34
40
  else if (n.indexOf(needle) !== -1) partial.push(entries[i]);
35
41
  }
36
42
  var hits = exact.length ? exact : partial;
37
43
  if (hits.length === 0) {
38
- return { __eb_error: 'require: no module matching "' + needle + '". Try a longer path fragment; ' + entries.length + ' modules are loaded.' };
44
+ var last = base.split('/').pop().toLowerCase();
45
+ var near = [];
46
+ for (var j = 0; j < entries.length && near.length < 5; j++) {
47
+ if (entries[j].name.replace(EXT, '').split('/').pop().toLowerCase() === last) near.push(entries[j].name);
48
+ }
49
+ throw new Error('require: no module matching "' + needle + '". ' +
50
+ (near.length ? 'Did you mean: ' + near.join(', ') + '? ' : 'Try a longer path fragment; ') +
51
+ entries.length + ' modules are loaded.');
39
52
  }
40
53
  hits.sort(function (a, b) { return a.name.length - b.name.length; });
41
54
  try {
42
55
  return globalThis.__r(hits[0].id);
43
56
  } catch (e) {
44
- return { __eb_error: 'require: module "' + hits[0].name + '" failed to evaluate: ' + String(e && e.message ? e.message : e) };
57
+ throw new Error('require: module "' + hits[0].name + '" failed to evaluate: ' + String(e && e.message ? e.message : e));
45
58
  }
46
59
  };
47
60
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"moduleRegistry.js","sourceRoot":"","sources":["../../src/core/moduleRegistry.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,kBAAkB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CV,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"moduleRegistry.js","sourceRoot":"","sources":["../../src/core/moduleRegistry.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,kBAAkB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DV,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -1,8 +1,11 @@
1
+ import type { AutoConnectOutcome } from "./connection.js";
1
2
  export declare function hasMetro(): boolean;
3
+ export declare function takeLastAutoConnect(): AutoConnectOutcome | null;
2
4
  export declare function reconnectingDeviceNames(): string[];
3
5
  export declare function awaitMetro(options?: {
4
6
  timeoutMs?: number;
5
7
  sleep?: (ms: number) => Promise<void>;
8
+ connect?: () => Promise<AutoConnectOutcome>;
6
9
  }): Promise<boolean>;
7
10
  export type NativeDeviceAvailability = {
8
11
  ios: boolean;
@@ -14,7 +17,8 @@ export type MetroMissingHintOptions = {
14
17
  toolName: string;
15
18
  devices?: NativeDeviceAvailability;
16
19
  reconnecting?: string[];
20
+ autoConnect?: AutoConnectOutcome;
17
21
  };
18
- export declare function buildMetroMissingHint({ toolName, devices, reconnecting }: MetroMissingHintOptions): string;
22
+ export declare function buildMetroMissingHint({ toolName, devices, reconnecting, autoConnect }: MetroMissingHintOptions): string;
19
23
  export declare function metroMissingHintIfAbsent(toolName: string): Promise<string>;
20
24
  //# sourceMappingURL=nativeOnlyHints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nativeOnlyHints.d.ts","sourceRoot":"","sources":["../../src/core/nativeOnlyHints.ts"],"names":[],"mappings":"AAKA,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAYD,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAKlD;AAWD,wBAAsB,UAAU,CAAC,OAAO,GAAE;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYxB;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAQ7E;AAcD,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAEnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,uBAAuB,GAAG,MAAM,CA+B1G;AAID,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhF"}
1
+ {"version":3,"file":"nativeOnlyHints.d.ts","sourceRoot":"","sources":["../../src/core/nativeOnlyHints.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAcD,wBAAgB,mBAAmB,IAAI,kBAAkB,GAAG,IAAI,CAI/D;AAGD,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAKlD;AAYD,wBAAsB,UAAU,CAAC,OAAO,GAAE;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC1C,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBxB;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAQ7E;AAcD,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAEnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAoCvH;AAID,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhF"}
@@ -7,6 +7,12 @@ export function hasMetro() {
7
7
  }
8
8
  const METRO_WAIT_POLL_MS = 100;
9
9
  const METRO_WAIT_BUDGET_MS = 2000;
10
+ let lastAutoConnect = null;
11
+ export function takeLastAutoConnect() {
12
+ const outcome = lastAutoConnect;
13
+ lastAutoConnect = null;
14
+ return outcome;
15
+ }
10
16
  export function reconnectingDeviceNames() {
11
17
  return pendingReconnectionKeys().map((key) => {
12
18
  const meta = getConnectionMetadata(key);
@@ -14,10 +20,14 @@ export function reconnectingDeviceNames() {
14
20
  });
15
21
  }
16
22
  export async function awaitMetro(options = {}) {
23
+ lastAutoConnect = null;
17
24
  if (hasMetro())
18
25
  return true;
19
- if (pendingReconnectionKeys().length === 0)
20
- return false;
26
+ if (pendingReconnectionKeys().length === 0) {
27
+ const connect = options.connect ?? (async () => (await import("./connection.js")).autoConnectAllMetro());
28
+ lastAutoConnect = await connect();
29
+ return hasMetro();
30
+ }
21
31
  const budget = options.timeoutMs ?? METRO_WAIT_BUDGET_MS;
22
32
  const sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
23
33
  for (let waited = 0; waited < budget; waited += METRO_WAIT_POLL_MS) {
@@ -45,7 +55,7 @@ const NATIVE_FALLBACKS = {
45
55
  get_request_details: [],
46
56
  get_screen_layout: [],
47
57
  };
48
- export function buildMetroMissingHint({ toolName, devices, reconnecting }) {
58
+ export function buildMetroMissingHint({ toolName, devices, reconnecting, autoConnect }) {
49
59
  const fallbacks = NATIVE_FALLBACKS[toolName] ?? [];
50
60
  const lines = [];
51
61
  lines.push("[NO METRO] This tool reads data from the JS runtime, which requires an attached debugger.");
@@ -53,6 +63,13 @@ export function buildMetroMissingHint({ toolName, devices, reconnecting }) {
53
63
  lines.push(`${reconnecting.join(", ")} dropped its debugger connection and is reconnecting — it did not come back within the wait budget. ` +
54
64
  `Retry this call in a moment; if it keeps failing, the app is crashing or reloading repeatedly (check get_connection_status).`);
55
65
  }
66
+ else if (autoConnect && autoConnect.ports.length === 0) {
67
+ lines.push("Scanned Metro ports 8081 to 8090: nothing is listening. If Metro runs on another port, call connect_metro({ port }). Otherwise start Metro and the app, then call scan_metro.");
68
+ }
69
+ else if (autoConnect) {
70
+ const { ports, failures } = autoConnect;
71
+ lines.push(`Found Metro on port ${ports.join(", ")}, but no app attached: ${failures.join("; ")}. Right after a launch the bundle may still be loading: ensure_connection({ waitMs: 60000 }) waits for the app. Otherwise call scan_metro.`);
72
+ }
56
73
  else if (devices?.any) {
57
74
  const platformsSeen = [];
58
75
  if (devices.ios)
@@ -71,10 +88,11 @@ export function buildMetroMissingHint({ toolName, devices, reconnecting }) {
71
88
  return lines.join("\n");
72
89
  }
73
90
  export async function metroMissingHintIfAbsent(toolName) {
91
+ const autoConnect = takeLastAutoConnect() ?? undefined;
74
92
  if (hasMetro())
75
93
  return "";
76
94
  const reconnecting = reconnectingDeviceNames();
77
95
  const devices = await detectNativeDevices();
78
- return "\n\n" + buildMetroMissingHint({ toolName, devices, reconnecting });
96
+ return "\n\n" + buildMetroMissingHint({ toolName, devices, reconnecting, autoConnect });
79
97
  }
80
98
  //# sourceMappingURL=nativeOnlyHints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nativeOnlyHints.js","sourceRoot":"","sources":["../../src/core/nativeOnlyHints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nativeOnlyHints.js","sourceRoot":"","sources":["../../src/core/nativeOnlyHints.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,7 @@ export interface NavigationResult {
26
26
  indeterminate: boolean;
27
27
  stack?: string[];
28
28
  routeTable?: string[];
29
+ via?: string;
29
30
  failureKind?: FailureKind;
30
31
  error?: string;
31
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/core/navigate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAKH,KAAK,SAAS,EACjB,MAAM,iBAAiB,CAAC;AAYzB,eAAO,MAAM,cAAc,UAAuB,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAOD,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,EAAE,OAAO,GACjB,iBAAiB,CAGnB;AAED,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,SAAS,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAiCD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4GjG"}
1
+ {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/core/navigate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAKH,KAAK,SAAS,EACjB,MAAM,iBAAiB,CAAC;AAYzB,eAAO,MAAM,cAAc,UAAuB,CAAC;AAKnD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAOD,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,EAAE,OAAO,GACjB,iBAAiB,CAGnB;AAED,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,SAAS,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAwED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoHjG"}
@@ -1,6 +1,7 @@
1
1
  import { executeInApp } from "./jsExecute.js";
2
2
  import { buildNavHandlesSource, buildRouteTableSource, buildNearestRoutesSource, buildNavigateSource } from "./navigation.js";
3
3
  export const POLL_DELAYS_MS = [150, 350, 600, 900];
4
+ const PARENT_POLL_DELAYS_MS = [150, 350, 600];
4
5
  export function classifyNavigationOutcome(before, after, settled) {
5
6
  if (!settled)
6
7
  return { changed: false, indeterminate: true };
@@ -31,6 +32,36 @@ function readStateExpression() {
31
32
  return JSON.stringify({ current: t.current, currentId: t.currentId, stack: stack, all: t.all });
32
33
  })()`;
33
34
  }
35
+ function performSource(action, to, params) {
36
+ return `(function(){ ${preamble()}
37
+ return JSON.stringify(${buildNavigateSource(action, to, params ?? null)});
38
+ })()`;
39
+ }
40
+ async function readCurrentRoute(device) {
41
+ const read = await executeInApp(readStateExpression(), false, { originatingToolName: "navigate" }, device);
42
+ if (!read.success)
43
+ return null;
44
+ try {
45
+ return JSON.parse(String(read.result)).current;
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ async function navigateThroughParent(to, params, parents, device) {
52
+ const nested = params ? { screen: to, params } : { screen: to };
53
+ for (const parent of parents) {
54
+ const performed = await executeInApp(performSource("navigate", parent, nested), false, { originatingToolName: "navigate" }, device);
55
+ if (!performed.success)
56
+ continue;
57
+ for (const delay of PARENT_POLL_DELAYS_MS) {
58
+ await new Promise((r) => setTimeout(r, delay));
59
+ if (await readCurrentRoute(device) === to)
60
+ return parent;
61
+ }
62
+ }
63
+ return null;
64
+ }
34
65
  export async function performNavigation(opts) {
35
66
  const { action, to = null, params, device, includeRouteTable } = opts;
36
67
  if (action !== "back" && action !== "reset" && !to && includeRouteTable === true) {
@@ -50,10 +81,7 @@ export async function performNavigation(opts) {
50
81
  }
51
82
  }
52
83
  }
53
- const perform = `(function(){ ${preamble()}
54
- return JSON.stringify(${buildNavigateSource(action, to, params ?? null)});
55
- })()`;
56
- const performed = await executeInApp(perform, false, { originatingToolName: "navigate" }, device);
84
+ const performed = await executeInApp(performSource(action, to, params), false, { originatingToolName: "navigate" }, device);
57
85
  if (!performed.success) {
58
86
  return {
59
87
  success: false, kind: null, action, to,
@@ -73,6 +101,18 @@ export async function performNavigation(opts) {
73
101
  };
74
102
  }
75
103
  const before = head.before ?? null;
104
+ if (!head.ok && action === "navigate" && to && head.parents && head.parents.length > 0) {
105
+ const via = await navigateThroughParent(to, params, head.parents, device);
106
+ if (via) {
107
+ return {
108
+ success: true, kind: head.kind, action, to,
109
+ route: { before, after: to }, changed: true, indeterminate: false, via
110
+ };
111
+ }
112
+ if (before)
113
+ await executeInApp(performSource("navigate", before, undefined), false, { originatingToolName: "navigate" }, device);
114
+ head.error = `${head.error ?? "Navigation failed"} Tried: ${head.parents.join(", ")}${before ? ` (navigated back to ${before})` : ""}.`;
115
+ }
76
116
  if (!head.ok) {
77
117
  const routes = head.routes ?? [];
78
118
  const shown = routes.slice(0, 12);
@@ -1 +1 @@
1
- {"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/core/navigate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/core/navigate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AA0BA,wBAAgB,qBAAqB,IAAI,MAAM,CAqH9C;AAeD,wBAAgB,qBAAqB,IAAI,MAAM,CAsC9C;AAeD,wBAAgB,wBAAwB,IAAI,MAAM,CAwCjD;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAa3E,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GAAG,IAAI,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACvC,MAAM,CAiFR"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AA0BA,wBAAgB,qBAAqB,IAAI,MAAM,CAqH9C;AAeD,wBAAgB,qBAAqB,IAAI,MAAM,CAyC9C;AAeD,wBAAgB,wBAAwB,IAAI,MAAM,CAwCjD;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAa3E,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GAAG,IAAI,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACvC,MAAM,CA6FR"}
@@ -121,7 +121,7 @@ var __eb_nav = (function () {
121
121
  export function buildRouteTableSource() {
122
122
  return `
123
123
  function __eb_routeTable() {
124
- var out = { levels: [], all: [], paths: {}, current: null, currentId: null };
124
+ var out = { levels: [], all: [], paths: {}, mounted: {}, current: null, currentId: null };
125
125
  var reader = __eb_nav && __eb_nav.stateReader;
126
126
  if (!reader || typeof reader.getRootState !== 'function') return out;
127
127
  var root;
@@ -140,7 +140,10 @@ function __eb_routeTable() {
140
140
  }
141
141
  if (st.routes) {
142
142
  for (var j = 0; j < st.routes.length; j++) {
143
- if (st.routes[j] && st.routes[j].state) collect(st.routes[j].state, d + 1, chain.concat([st.routes[j].name]));
143
+ if (st.routes[j] && st.routes[j].state) {
144
+ out.mounted[st.routes[j].name] = 1;
145
+ collect(st.routes[j].state, d + 1, chain.concat([st.routes[j].name]));
146
+ }
144
147
  }
145
148
  }
146
149
  }
@@ -233,10 +236,22 @@ export function buildNavigateSource(action, to, params) {
233
236
  ? 'Did you mean: ' + suggestions.join(', ') + (extra > 0 ? ' (' + extra + ' other routes registered)' : '')
234
237
  : 'Registered: ' + table.all.slice(0, 40).join(', ') + (table.all.length > 40 ? ' (+' + (table.all.length - 40) + ' more)' : '') + '.' +
235
238
  ' Screens of a navigator that has not mounted yet (a tab not visited since launch) are not listed: navigate to its parent route first.';
239
+ // A navigator that has not mounted carries no nested state, so its
240
+ // screens are missing from the table. These routes may hold the destination:
241
+ // nearest name first, then table order.
242
+ var parents = [];
243
+ for (var q = 0; q < table.all.length; q++) {
244
+ var pn = table.all[q];
245
+ if (pn !== before && !table.mounted[pn]) parents.push({ name: pn, d: __eb_editDistance(String(to).toLowerCase(), pn.toLowerCase()), i: q });
246
+ }
247
+ parents.sort(function (x, y) { return x.d - y.d || x.i - y.i; });
248
+ var parentNames = [];
249
+ for (var r = 0; r < parents.length && r < 8; r++) parentNames.push(parents[r].name);
236
250
  return {
237
251
  ok: false,
238
252
  kind: nav.kind,
239
253
  before: before,
254
+ parents: parentNames,
240
255
  error: 'No route named "' + to + '" is registered. ' + hint +
241
256
  ' (React Navigation takes route NAMES, not paths - a path here is silently ignored.)'
242
257
  };
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyB1D,MAAM,UAAU,qBAAqB;IACjC,OAAO;EACT,kBAAkB,EAAE;EACpB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiHf,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAeD,MAAM,UAAU,qBAAqB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCV,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAeD,MAAM,UAAU,wBAAwB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCV,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAeD,MAAM,UAAU,mBAAmB,CAC/B,MAAc,EACd,EAAiB,EACjB,MAAsC;IAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzC,OAAO;mBACQ,SAAS;eACb,KAAK;mBACD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwEvB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyB1D,MAAM,UAAU,qBAAqB;IACjC,OAAO;EACT,kBAAkB,EAAE;EACpB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiHf,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAeD,MAAM,UAAU,qBAAqB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCV,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAeD,MAAM,UAAU,wBAAwB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCV,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAeD,MAAM,UAAU,mBAAmB,CAC/B,MAAc,EACd,EAAiB,EACjB,MAAsC;IAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzC,OAAO;mBACQ,SAAS;eACb,KAAK;mBACD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoFvB,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"netInfoPatch.d.ts","sourceRoot":"","sources":["../../src/core/netInfoPatch.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,CAAC;AAoB5F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAmDhE;AASD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAqB/D;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAetE"}
1
+ {"version":3,"file":"netInfoPatch.d.ts","sourceRoot":"","sources":["../../src/core/netInfoPatch.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,CAAC;AAoB5F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAoDhE;AASD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAqB/D;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAetE"}
@@ -19,7 +19,8 @@ ${buildRequireSource()}
19
19
  if (s && s.isConnected === state.isConnected) probeFired = true;
20
20
  });
21
21
 
22
- var DEE = __eb_require('react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.js');
22
+ var DEE = null;
23
+ try { DEE = __eb_require('react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.js'); } catch (e) {}
23
24
  var emitter = DEE && (DEE.default || DEE);
24
25
  if (emitter && typeof emitter.emit === 'function') {
25
26
  try { emitter.emit('netInfo.networkStatusDidChange', state); } catch (e) {}
@@ -1 +1 @@
1
- {"version":3,"file":"netInfoPatch.js","sourceRoot":"","sources":["../../src/core/netInfoPatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAuBzD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO;QACjB,CAAC,CAAC,iFAAiF;QACnF,CAAC,CAAC,kFAAkF,CAAC;IAEzF,OAAO;EACT,kBAAkB,EAAE;;;;;;gBAMN,KAAK;;;;;;;;;;;;;;;;;;;QAmBb,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;;;;;;;;;;;;;;;;;;;0EAmBwC,CAAC;AAC3E,CAAC;AASD,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,MAAM,KAAK,GAAqB,CAAC,SAAS,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACnF,IAAI,KAAK,GAAY,GAAG,CAAC;IAGzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM;QACrC,IAAI,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAI,KAAiC,CAAC,OAAO,CAAC;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,KAAuB,CAAC;QACnC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC1D,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,SAAS;YACV,OAAO,sFAAsF,CAAC;QAClG,KAAK,oBAAoB;YACrB,OAAO,CACH,wFAAwF;gBACxF,kFAAkF;gBAClF,gCAAgC,CACnC,CAAC;QACN,KAAK,eAAe;YAChB,OAAO,+GAA+G,CAAC;QAC3H;YACI,OAAO,6HAA6H,CAAC;IAC7I,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"netInfoPatch.js","sourceRoot":"","sources":["../../src/core/netInfoPatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAuBzD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO;QACjB,CAAC,CAAC,iFAAiF;QACnF,CAAC,CAAC,kFAAkF,CAAC;IAEzF,OAAO;EACT,kBAAkB,EAAE;;;;;;gBAMN,KAAK;;;;;;;;;;;;;;;;;;;;QAoBb,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;;;;;;;;;;;;;;;;;;;0EAmBwC,CAAC;AAC3E,CAAC;AASD,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,MAAM,KAAK,GAAqB,CAAC,SAAS,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACnF,IAAI,KAAK,GAAY,GAAG,CAAC;IAGzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM;QACrC,IAAI,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAI,KAAiC,CAAC,OAAO,CAAC;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,KAAuB,CAAC;QACnC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC1D,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,SAAS;YACV,OAAO,sFAAsF,CAAC;QAClG,KAAK,oBAAoB;YACrB,OAAO,CACH,wFAAwF;gBACxF,kFAAkF;gBAClF,gCAAgC,CACnC,CAAC;QACN,KAAK,eAAe;YAChB,OAAO,+GAA+G,CAAC;QAC3H;YACI,OAAO,6HAA6H,CAAC;IAC7I,CAAC;AACL,CAAC"}
@@ -1,16 +1,4 @@
1
1
  import type { ExecutionResult } from "./types.js";
2
- export declare const MEASURE_POLL_SCHEDULE_MS: number[];
3
- export declare const MEASURE_POLL_DEADLINE_MS = 300;
4
- export declare function waitForMeasurements(args: {
5
- evaluatePending: () => Promise<number | null>;
6
- now?: () => number;
7
- sleep?: (ms: number) => Promise<void>;
8
- }): Promise<{
9
- pending: number | null;
10
- polls: number;
11
- waitedMs: number;
12
- }>;
13
- export declare function buildPendingMeasurementExpression(globalNames: string[]): string;
14
2
  export declare function pressElement(options: {
15
3
  text?: string;
16
4
  testID?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pressables.d.ts","sourceRoot":"","sources":["../../src/core/pressables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0BlD,eAAO,MAAM,wBAAwB,UAAyB,CAAC;AAC/D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAQ5C,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC5C,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBvE;AAKD,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAY/E;AA8BD,wBAAsB,YAAY,CAAC,OAAO,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgwB3B"}
1
+ {"version":3,"file":"pressables.d.ts","sourceRoot":"","sources":["../../src/core/pressables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0ClD,wBAAsB,YAAY,CAAC,OAAO,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwxB3B"}
@@ -1,41 +1,10 @@
1
- import { executeInApp, delay } from "./jsExecute.js";
1
+ import { executeInApp } from "./jsExecute.js";
2
+ import { waitForMeasurements, buildPendingMeasurementExpression } from "./measureWait.js";
2
3
  import { VISIBILITY_HELPERS_JS } from "./injected/visibility.js";
3
4
  import { RN_PRIMITIVES_SRC } from "./injectedFilters.js";
4
5
  import { SHEET_HELPERS_JS } from "./injected/sheetOffset.js";
5
6
  import { FIBER_ROOTS_JS } from "./injected/fiberRoots.js";
6
7
  import { SECURE_VALUE_JS } from "./injected/secureValue.js";
7
- export const MEASURE_POLL_SCHEDULE_MS = [20, 40, 60, 100, 140];
8
- export const MEASURE_POLL_DEADLINE_MS = 300;
9
- export async function waitForMeasurements(args) {
10
- const now = args.now ?? (() => Date.now());
11
- const sleep = args.sleep ?? delay;
12
- const start = now();
13
- let pending = null;
14
- let polls = 0;
15
- for (const step of MEASURE_POLL_SCHEDULE_MS) {
16
- await sleep(step);
17
- pending = await args.evaluatePending();
18
- polls++;
19
- if (pending === null || pending === 0)
20
- break;
21
- if (now() - start >= MEASURE_POLL_DEADLINE_MS)
22
- break;
23
- }
24
- return { pending, polls, waitedMs: now() - start };
25
- }
26
- export function buildPendingMeasurementExpression(globalNames) {
27
- const list = globalNames.map((n) => `globalThis.${n}`).join(", ");
28
- return `(function() {
29
- var arrays = [${list}];
30
- var pending = 0;
31
- for (var a = 0; a < arrays.length; a++) {
32
- var m = arrays[a];
33
- if (!m) continue;
34
- for (var i = 0; i < m.length; i++) { if (!m[i]) pending++; }
35
- }
36
- return pending;
37
- })()`;
38
- }
39
8
  async function awaitMeasurements(globalNames, toolName, device) {
40
9
  await waitForMeasurements({
41
10
  evaluatePending: async () => {
@@ -251,6 +220,22 @@ export async function pressElement(options) {
251
220
 
252
221
  var hostFibers = [];
253
222
  var tapMeta = [];
223
+ // A testID inside a hidden scene: the route that holds it, so a miss can
224
+ // say "navigate there first" instead of looking like a typo.
225
+ var prunedRoute = null;
226
+ function routeHolding(fiber, routeName, d) {
227
+ if (!fiber || d > 400) return null;
228
+ var rp = fiber.memoizedProps;
229
+ if (rp && rp.route && typeof rp.route.name === 'string') routeName = rp.route.name;
230
+ if (rp && (rp.testID === searchTestID || rp.nativeID === searchTestID)) return routeName;
231
+ var rc = fiber.child;
232
+ while (rc) {
233
+ var hit = routeHolding(rc, routeName, d + 1);
234
+ if (hit) return hit;
235
+ rc = rc.sibling;
236
+ }
237
+ return null;
238
+ }
254
239
 
255
240
  // Phase 1: Walk the entire tree, collect all pressable/input elements
256
241
  function walkFiber(fiber, depth, path) {
@@ -258,7 +243,10 @@ export async function pressElement(options) {
258
243
  var name = getComponentName(fiber);
259
244
  var props = fiber.memoizedProps;
260
245
 
261
- if (isScreenHidden(name, props)) return;
246
+ if (isScreenHidden(name, props)) {
247
+ if (searchTestID !== null && prunedRoute === null) prunedRoute = routeHolding(fiber, null, 0);
248
+ return;
249
+ }
262
250
 
263
251
  var isPressable = isPressableProps(props) || isSwitchFiber(fiber, props);
264
252
  var isInput = !isPressable && props && (typeof props.onChangeText === 'function' || typeof props.onFocus === 'function');
@@ -576,6 +564,7 @@ export async function pressElement(options) {
576
564
  // Store host fibers and metadata globally for step 2, dispatch measureInWindow
577
565
  globalThis.__tapHostFibers = hostFibers;
578
566
  globalThis.__tapMeta = tapMeta;
567
+ globalThis.__tapPrunedRoute = prunedRoute;
579
568
  globalThis.__tapMeasurements = new Array(hostFibers.length).fill(null);
580
569
  globalThis.__tapSheetIdx = sheetIdxByHost;
581
570
  globalThis.__tapSheetMeasurements = new Array(sheetFibers.length).fill(null);
@@ -638,6 +627,8 @@ export async function pressElement(options) {
638
627
  var sheetMeasurements = globalThis.__tapSheetMeasurements || [];
639
628
  var viewportM = globalThis.__tapViewport;
640
629
  globalThis.__tapHostFibers = null;
630
+ var prunedRoute = globalThis.__tapPrunedRoute || null;
631
+ globalThis.__tapPrunedRoute = null;
641
632
  globalThis.__tapMeta = null;
642
633
  globalThis.__tapMeasurements = null;
643
634
  globalThis.__tapSheetIdx = null;
@@ -763,10 +754,12 @@ export async function pressElement(options) {
763
754
  existsInTree: true
764
755
  };
765
756
  }
766
- return {
757
+ var notFound = {
767
758
  error: 'No pressable or focusable elements found matching: ' + criteria.join(', ') + '. The element is not present in the React tree on the current screen.',
768
759
  existsInTree: false
769
760
  };
761
+ if (prunedRoute) notFound.prunedRoute = prunedRoute;
762
+ return notFound;
770
763
  }
771
764
 
772
765
  if (targetIndex >= matches.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"pressables.js","sourceRoot":"","sources":["../../src/core/pressables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pressables.js","sourceRoot":"","sources":["../../src/core/pressables.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"screenLayout.d.ts","sourceRoot":"","sources":["../../src/core/screenLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAInF,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM1F;AAMD,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAyND,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,GAAE,OAAe,EACzB,SAAS,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACrE,MAAM,CAuCR;AAYD,wBAAsB,eAAe,CACjC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC/B,GACP,OAAO,CAAC,eAAe,GAAG;IACzB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC,CAunBD;AAoDD,wBAAsB,0BAA0B,CAC5C,UAAU,EAAE,MAAM,EAClB,qBAAqB,EAAE,MAAM,EAC7B,MAAM,CAAC,EAAE,MAAM,EACf,iBAAiB,GAAE,MAAU,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmDxB"}
1
+ {"version":3,"file":"screenLayout.d.ts","sourceRoot":"","sources":["../../src/core/screenLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAInF,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM1F;AAMD,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAyND,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,GAAE,OAAe,EACzB,SAAS,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACrE,MAAM,CAuCR;AAcD,wBAAsB,eAAe,CACjC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC/B,GACP,OAAO,CAAC,eAAe,GAAG;IACzB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC,CA6nBD;AAoDD,wBAAsB,0BAA0B,CAC5C,UAAU,EAAE,MAAM,EAClB,qBAAqB,EAAE,MAAM,EAC7B,MAAM,CAAC,EAAE,MAAM,EACf,iBAAiB,GAAE,MAAU,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmDxB"}
@@ -1,4 +1,5 @@
1
1
  import { executeInApp, delay } from "./jsExecute.js";
2
+ import { waitForMeasurements, buildPendingMeasurementExpression } from "./measureWait.js";
2
3
  import { VISIBILITY_HELPERS_JS } from "./injected/visibility.js";
3
4
  import { SCREEN_SPACE_HELPER_JS } from "./screenSpace.js";
4
5
  import { SHEET_HELPERS_JS } from "./injected/sheetOffset.js";
@@ -225,6 +226,7 @@ function formatOffScreenLine(names, position) {
225
226
  const shown = names.slice(0, CAP).join(", ");
226
227
  return `[... ${total} components ${position}: ${shown}, ... +${total - CAP} more]`;
227
228
  }
229
+ const LAYOUT_PENDING_EXPR = buildPendingMeasurementExpression(["__layoutMeasurements", "__layoutSheetMeasurements"]);
228
230
  export async function getScreenLayout(options = {}) {
229
231
  const { extended = false, summary = false, device, raw = false, timeoutMs } = options;
230
232
  const screenSpace = options.screenSpace ?? { platform: "ios", topInset: 0 };
@@ -507,7 +509,13 @@ export async function getScreenLayout(options = {}) {
507
509
  }
508
510
  if (dispatchError)
509
511
  return { success: false, error: dispatchError };
510
- await delay(300);
512
+ await waitForMeasurements({
513
+ evaluatePending: async () => {
514
+ const r = await executeInApp(LAYOUT_PENDING_EXPR, false, { timeoutMs: 2000, maxRetries: 0, originatingToolName: "get_screen_layout" }, device);
515
+ const n = r.success ? Number(r.result) : NaN;
516
+ return Number.isFinite(n) ? n : null;
517
+ },
518
+ });
511
519
  const resolveExpression = `
512
520
  (function() {
513
521
  var fibers = globalThis.__layoutFibers;