execbro 2.7.0 → 2.7.1

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 (71) hide show
  1. package/build/__tests__/unit/deviceResolver.test.js +2 -0
  2. package/build/__tests__/unit/deviceResolver.test.js.map +1 -1
  3. package/build/__tests__/unit/deviceResolverStaleRetry.test.js +1 -0
  4. package/build/__tests__/unit/deviceResolverStaleRetry.test.js.map +1 -1
  5. package/build/__tests__/unit/measureComponentResolution.test.d.ts +2 -0
  6. package/build/__tests__/unit/measureComponentResolution.test.d.ts.map +1 -0
  7. package/build/__tests__/unit/measureComponentResolution.test.js +111 -0
  8. package/build/__tests__/unit/measureComponentResolution.test.js.map +1 -0
  9. package/build/__tests__/unit/metroIdentity.test.d.ts +2 -0
  10. package/build/__tests__/unit/metroIdentity.test.d.ts.map +1 -0
  11. package/build/__tests__/unit/metroIdentity.test.js +41 -0
  12. package/build/__tests__/unit/metroIdentity.test.js.map +1 -0
  13. package/build/__tests__/unit/screenState.test.js +63 -2
  14. package/build/__tests__/unit/screenState.test.js.map +1 -1
  15. package/build/__tests__/unit/swipeDiagnosis.test.d.ts +2 -0
  16. package/build/__tests__/unit/swipeDiagnosis.test.d.ts.map +1 -0
  17. package/build/__tests__/unit/swipeDiagnosis.test.js +47 -0
  18. package/build/__tests__/unit/swipeDiagnosis.test.js.map +1 -0
  19. package/build/__tests__/unit/swipeDirection.test.js +30 -0
  20. package/build/__tests__/unit/swipeDirection.test.js.map +1 -1
  21. package/build/core/androidForeground.d.ts +4 -0
  22. package/build/core/androidForeground.d.ts.map +1 -0
  23. package/build/core/androidForeground.js +34 -0
  24. package/build/core/androidForeground.js.map +1 -0
  25. package/build/core/androidSystemBars.d.ts +1 -1
  26. package/build/core/androidSystemBars.d.ts.map +1 -1
  27. package/build/core/androidSystemBars.js +2 -2
  28. package/build/core/androidSystemBars.js.map +1 -1
  29. package/build/core/connection.d.ts +6 -0
  30. package/build/core/connection.d.ts.map +1 -1
  31. package/build/core/connection.js +45 -0
  32. package/build/core/connection.js.map +1 -1
  33. package/build/core/deviceResolver.d.ts.map +1 -1
  34. package/build/core/deviceResolver.js +7 -1
  35. package/build/core/deviceResolver.js.map +1 -1
  36. package/build/core/measureComponent.d.ts.map +1 -1
  37. package/build/core/measureComponent.js +45 -11
  38. package/build/core/measureComponent.js.map +1 -1
  39. package/build/core/metroIdentity.d.ts +8 -0
  40. package/build/core/metroIdentity.d.ts.map +1 -0
  41. package/build/core/metroIdentity.js +65 -0
  42. package/build/core/metroIdentity.js.map +1 -0
  43. package/build/core/screenSpaceDevice.d.ts +5 -0
  44. package/build/core/screenSpaceDevice.d.ts.map +1 -1
  45. package/build/core/screenSpaceDevice.js +18 -0
  46. package/build/core/screenSpaceDevice.js.map +1 -1
  47. package/build/core/screenState.d.ts +8 -0
  48. package/build/core/screenState.d.ts.map +1 -1
  49. package/build/core/screenState.js +245 -32
  50. package/build/core/screenState.js.map +1 -1
  51. package/build/core/swipeDiagnosis.d.ts +17 -0
  52. package/build/core/swipeDiagnosis.d.ts.map +1 -0
  53. package/build/core/swipeDiagnosis.js +179 -0
  54. package/build/core/swipeDiagnosis.js.map +1 -0
  55. package/build/index.js +15 -0
  56. package/build/index.js.map +1 -1
  57. package/build/pro/tap.d.ts +6 -1
  58. package/build/pro/tap.d.ts.map +1 -1
  59. package/build/pro/tap.js +12 -3
  60. package/build/pro/tap.js.map +1 -1
  61. package/build/tools/componentTools.d.ts.map +1 -1
  62. package/build/tools/componentTools.js +12 -4
  63. package/build/tools/componentTools.js.map +1 -1
  64. package/build/tools/connectionTools.d.ts.map +1 -1
  65. package/build/tools/connectionTools.js +18 -0
  66. package/build/tools/connectionTools.js.map +1 -1
  67. package/build/tools/interactionTools.d.ts.map +1 -1
  68. package/build/tools/interactionTools.js +50 -11
  69. package/build/tools/interactionTools.js.map +1 -1
  70. package/package.json +1 -1
  71. package/tools.json +1 -0
@@ -45,21 +45,50 @@ export function buildMeasureComponentExpression(componentName, index) {
45
45
  const pub = sn.canonical.publicInstance;
46
46
  return { instance: pub, nativeTag: pub.__nativeTag };
47
47
  }
48
+ // Fabric shadow-node handle: no public instance on the fiber, but the UIManager can
49
+ // measure the node directly. Without this branch a plain RCTView is invisible to the
50
+ // search, so it walked past every one of them and picked whatever deep descendant
51
+ // happened to expose a public instance — on RN 0.83 that was an RNGestureHandlerButton
52
+ // inside the first tab, which made measure("ShopHeader") and measure("SubTabBar")
53
+ // return byte-identical frames and the same nativeTag. Same branch screenState and
54
+ // componentSource already carry; measure was the one that never got it.
55
+ const node = sn.node || (sn.canonical && sn.canonical.node);
56
+ if (node && globalThis.nativeFabricUIManager && typeof globalThis.nativeFabricUIManager.measureInWindow === "function") {
57
+ // The tag lives on the canonical record here, not on a public instance.
58
+ const canonicalTag = sn.canonical && typeof sn.canonical.nativeTag === "number"
59
+ ? sn.canonical.nativeTag
60
+ : undefined;
61
+ return {
62
+ instance: {
63
+ measureInWindow: (cb) => {
64
+ try { globalThis.nativeFabricUIManager.measureInWindow(node, cb); } catch (e) {}
65
+ }
66
+ },
67
+ nativeTag: canonicalTag
68
+ };
69
+ }
48
70
  return null;
49
71
  };
50
72
 
51
73
  let target = getMeasurable(matched);
52
74
  if (!target) {
53
- // Descend to nearest host descendant with measureInWindow.
54
- (function findHost(f) {
55
- if (!f || target) return;
56
- if (f !== matched) {
57
- const m = getMeasurable(f);
58
- if (m) { target = m; return; }
59
- }
60
- if (f.child) findHost(f.child);
61
- if (f.sibling && f !== matched) findHost(f.sibling);
62
- })(matched.child);
75
+ // Breadth-first, so the SHALLOWEST measurable host wins.
76
+ //
77
+ // The previous descent was pre-order depth-first, which follows one spine to the leaf
78
+ // before trying the next branch. With a getMeasurable that can miss, that turns a near
79
+ // miss into a wildly wrong answer: the component's own container is skipped and some
80
+ // small leaf several levels down is measured and reported under the component's name.
81
+ // Breadth-first cannot do that — it exhausts a whole depth before descending.
82
+ const enqueueChain = (start, q) => { let n = start; while (n) { q.push(n); n = n.sibling; } };
83
+ const queue = [];
84
+ enqueueChain(matched.child, queue);
85
+ let guard = 0;
86
+ while (queue.length > 0 && !target && guard++ < 20000) {
87
+ const f = queue.shift();
88
+ const m = getMeasurable(f);
89
+ if (m) { target = m; break; }
90
+ enqueueChain(f.child, queue);
91
+ }
63
92
  }
64
93
 
65
94
  if (!target) {
@@ -68,9 +97,14 @@ export function buildMeasureComponentExpression(componentName, index) {
68
97
  }
69
98
 
70
99
  let done = false;
100
+ // Held so the loser can be cancelled. Without this the 1.5s timer stays armed in the
101
+ // app's runtime after every successful measure — harmless, but it is a timer per call
102
+ // that exists only to be ignored.
103
+ let timeoutId = null;
71
104
  target.instance.measureInWindow((x, y, width, height) => {
72
105
  if (done) return;
73
106
  done = true;
107
+ if (timeoutId !== null) { try { clearTimeout(timeoutId); } catch (e) {} }
74
108
  resolve({
75
109
  outcome: "measured",
76
110
  x: x,
@@ -81,7 +115,7 @@ export function buildMeasureComponentExpression(componentName, index) {
81
115
  nativeTag: typeof target.nativeTag === "number" ? target.nativeTag : undefined,
82
116
  });
83
117
  });
84
- setTimeout(() => {
118
+ timeoutId = setTimeout(() => {
85
119
  if (done) return;
86
120
  done = true;
87
121
  resolve({ outcome: "timeout", error: "measureInWindow timed out (1500ms)" });
@@ -1 +1 @@
1
- {"version":3,"file":"measureComponent.js","sourceRoot":"","sources":["../../src/core/measureComponent.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,+BAA+B,CAAC,aAAqB,EAAE,KAAa;IAChF,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO;;;;;;;;;;;;0BAYe,WAAW;0BACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EhC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"measureComponent.js","sourceRoot":"","sources":["../../src/core/measureComponent.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,+BAA+B,CAAC,aAAqB,EAAE,KAAa;IAChF,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO;;;;;;;;;;;;0BAYe,WAAW;0BACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6GhC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function readListenerPid(port: number): Promise<string | null>;
2
+ export declare function metroProcessChanged(port: number): Promise<boolean>;
3
+ export declare function markBundlePossiblyStale(deviceName: string, reason: string): void;
4
+ export declare function clearBundleStale(deviceName?: string): void;
5
+ export declare function bundleStaleWarning(deviceName?: string): string | null;
6
+ export declare function staleBundleMessage(deviceName: string): string;
7
+ export declare function resetMetroIdentity(): void;
8
+ //# sourceMappingURL=metroIdentity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metroIdentity.d.ts","sourceRoot":"","sources":["../../src/core/metroIdentity.ts"],"names":[],"mappings":"AAiCA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY1E;AAQD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMxE;AAGD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGhF;AAMD,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAc1D;AASD,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYrE;AAGD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO7D;AAGD,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
@@ -0,0 +1,65 @@
1
+ import { execFileAsync } from "./exec.js";
2
+ const metroPidByPort = new Map();
3
+ const staleBundleDevices = new Map();
4
+ export async function readListenerPid(port) {
5
+ try {
6
+ const { stdout } = await execFileAsync("lsof", ["-nP", `-iTCP:${port}`, "-sTCP:LISTEN", "-t"], { timeout: 3000 });
7
+ const pid = stdout.split("\n").map((l) => l.trim()).filter(Boolean)[0];
8
+ return pid || null;
9
+ }
10
+ catch {
11
+ return null;
12
+ }
13
+ }
14
+ export async function metroProcessChanged(port) {
15
+ const pid = await readListenerPid(port);
16
+ if (!pid)
17
+ return false;
18
+ const previous = metroPidByPort.get(port);
19
+ metroPidByPort.set(port, pid);
20
+ return previous !== undefined && previous !== pid;
21
+ }
22
+ export function markBundlePossiblyStale(deviceName, reason) {
23
+ const key = (deviceName || "").trim();
24
+ if (key)
25
+ staleBundleDevices.set(key, reason);
26
+ }
27
+ export function clearBundleStale(deviceName) {
28
+ if (!deviceName) {
29
+ staleBundleDevices.clear();
30
+ return;
31
+ }
32
+ const key = deviceName.trim();
33
+ staleBundleDevices.delete(key);
34
+ for (const known of [...staleBundleDevices.keys()]) {
35
+ if (known.toLowerCase().includes(key.toLowerCase()) || key.toLowerCase().includes(known.toLowerCase())) {
36
+ staleBundleDevices.delete(known);
37
+ }
38
+ }
39
+ }
40
+ export function bundleStaleWarning(deviceName) {
41
+ if (staleBundleDevices.size === 0)
42
+ return null;
43
+ if (!deviceName) {
44
+ const [first] = staleBundleDevices.values();
45
+ return first ?? null;
46
+ }
47
+ const needle = deviceName.trim().toLowerCase();
48
+ for (const [known, reason] of staleBundleDevices.entries()) {
49
+ const k = known.toLowerCase();
50
+ if (k.includes(needle) || needle.includes(k))
51
+ return reason;
52
+ }
53
+ return null;
54
+ }
55
+ export function staleBundleMessage(deviceName) {
56
+ return (`⚠️ STALE BUNDLE RISK on "${deviceName}": Metro was restarted (different process) since this device last attached. ` +
57
+ `Fast Refresh history is discontinuous — any edit made while Metro was down was never sent to the app, and reconnecting ` +
58
+ `does not reconcile it. The app may still be running the OLD code, so behaviour that contradicts your edit is not evidence ` +
59
+ `the edit is wrong. Run reload_app to be certain, or get_refresh_status to see when the app last accepted an update.`);
60
+ }
61
+ export function resetMetroIdentity() {
62
+ metroPidByPort.clear();
63
+ staleBundleDevices.clear();
64
+ }
65
+ //# sourceMappingURL=metroIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metroIdentity.js","sourceRoot":"","sources":["../../src/core/metroIdentity.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import type { ScreenSpaceMetrics } from "./screenSpace.js";
2
+ export declare function resolveDeliveredScaleFactor(opts: {
3
+ platform: "ios" | "android";
4
+ udid?: string;
5
+ deviceId?: string;
6
+ }): Promise<number | undefined>;
2
7
  export declare function resolveScreenSpaceMetrics(opts: {
3
8
  platform: "ios" | "android";
4
9
  udid?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceDevice.d.ts","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAiC3D,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IAClD,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAE5B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiC9B"}
1
+ {"version":3,"file":"screenSpaceDevice.d.ts","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AA6C3D,wBAAsB,2BAA2B,CAAC,IAAI,EAAE;IACpD,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkB9B;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IAClD,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAE5B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiC9B"}
@@ -8,6 +8,24 @@ function pixelScaleFrom(deviceScale, pixelSize) {
8
8
  return undefined;
9
9
  return deviceScale / computeDeliveredDownscale(pixelSize.width, pixelSize.height);
10
10
  }
11
+ export async function resolveDeliveredScaleFactor(opts) {
12
+ try {
13
+ const pixelSize = opts.platform === "ios"
14
+ ? await getIOSScreenPixelSize(opts.udid).catch(() => null)
15
+ : await androidGetScreenSize(opts.deviceId)
16
+ .then((s) => (s && s.success && s.width && s.height ? { width: s.width, height: s.height } : null))
17
+ .catch(() => null);
18
+ if (!pixelSize)
19
+ return undefined;
20
+ const downscale = computeDeliveredDownscale(pixelSize.width, pixelSize.height);
21
+ if (!downscale || downscale <= 0)
22
+ return undefined;
23
+ return downscale;
24
+ }
25
+ catch {
26
+ return undefined;
27
+ }
28
+ }
11
29
  export async function resolveScreenSpaceMetrics(opts) {
12
30
  if (opts.platform === "ios") {
13
31
  const [inset, dpr, pixelSize] = await Promise.all([
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceDevice.js","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EACH,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACvB,MAAM,cAAc,CAAC;AAGtB,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAazC,SAAS,cAAc,CACnB,WAA0B,EAC1B,SAAmD;IAEnD,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACrE,OAAO,WAAW,GAAG,yBAAyB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAM/C;IACG,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAG1B,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3C,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YAChD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SACrD,CAAC,CAAC;QACH,OAAO;YACH,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK,IAAI,yBAAyB;YAC5C,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC;SAC7C,CAAC;IACN,CAAC;IACD,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAC1D,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClD,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACxD,CAAC,CAAC;IAGH,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QAC9D,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG;QACvB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM;QAC/D,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QAC5C,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACH,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,6BAA6B;QAC5E,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;KACtD,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"screenSpaceDevice.js","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export interface ScreenStatePressable {
21
21
  nearbyText?: string | null;
22
22
  blockedByOverlay?: boolean;
23
23
  onPressHint?: string | null;
24
+ transformNote?: string | null;
24
25
  }
25
26
  export interface ScreenStateText {
26
27
  text: string;
@@ -35,6 +36,7 @@ export interface ScreenStateText {
35
36
  height: number;
36
37
  };
37
38
  blockedByOverlay?: boolean;
39
+ transformNote?: string | null;
38
40
  }
39
41
  export interface ScreenStateImage {
40
42
  src?: string | null;
@@ -50,6 +52,7 @@ export interface ScreenStateImage {
50
52
  height: number;
51
53
  };
52
54
  blockedByOverlay?: boolean;
55
+ transformNote?: string | null;
53
56
  }
54
57
  export interface ScreenStateOverlay {
55
58
  type: "BottomSheet" | "Modal" | "Alert" | "ActionSheet" | "Unknown";
@@ -123,9 +126,14 @@ export declare function partitionByKeyboard<T extends {
123
126
  blocked: T[];
124
127
  };
125
128
  export declare function formatInputState(p: ScreenStatePressable): string;
129
+ export declare function formatRouteParams(params: Record<string, unknown> | null | undefined, fullParams: boolean): string | null;
130
+ export declare function formatTransformTag(el: {
131
+ transformNote?: string | null;
132
+ }): string;
126
133
  export declare function formatScreenStateSummary(ss: ScreenState, convert?: ItemCoordConverter, opts?: {
127
134
  pressablesOnly?: boolean;
128
135
  fullText?: boolean;
136
+ fullParams?: boolean;
129
137
  keyboard?: KeyboardState;
130
138
  pixelScale?: number;
131
139
  }): string;
@@ -1 +1 @@
1
- {"version":3,"file":"screenState.d.ts","sourceRoot":"","sources":["../../src/core/screenState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAM1D,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,MAAM,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,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,OAAO,CAAC,EAAE,OAAO,CAAC;IAMlB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;IACpE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,wBAAgB,8BAA8B,CAC1C,UAAU,EAAE,oBAAoB,EAAE,EAClC,aAAa,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvE,oBAAoB,EAAE,CAWxB;AAeD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAYlF;AAQD,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE,KAAK;IACF,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAezD,wBAAgB,eAAe,CAC3B,CAAC,EAAE,eAAe,EAClB,OAAO,GAAE,kBAAmC,EAC5C,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,CAIR;AAGD,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,kBAAmC,GAC7C,MAAM,CAKR;AAyBD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,GAAE,MAAU,GAAG,MAAM,CAcnF;AASD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC9E,KAAK,EAAE,CAAC,EAAE,EACV,CAAC,EAAE,aAAa,GACjB;IAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,CAAA;CAAE,CAQlC;AAMD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAUhE;AAED,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,WAAW,EACf,OAAO,GAAE,kBAAmC,EAC5C,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3G,MAAM,CAkHR;AAoBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQhE;AAaD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWhE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAazE;AAMD,wBAAsB,cAAc,CAChC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,eAAe,GAAG;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAo7C1D"}
1
+ {"version":3,"file":"screenState.d.ts","sourceRoot":"","sources":["../../src/core/screenState.ts"],"names":[],"mappings":"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"}