execbro 2.9.3 → 2.9.4

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 (86) hide show
  1. package/README.md +12 -8
  2. package/build/__tests__/unit/passiveConnectionBanner.test.d.ts +2 -0
  3. package/build/__tests__/unit/passiveConnectionBanner.test.d.ts.map +1 -0
  4. package/build/__tests__/unit/passiveConnectionBanner.test.js +49 -0
  5. package/build/__tests__/unit/passiveConnectionBanner.test.js.map +1 -0
  6. package/build/__tests__/unit/pressablesSwitch.test.d.ts +2 -0
  7. package/build/__tests__/unit/pressablesSwitch.test.d.ts.map +1 -0
  8. package/build/__tests__/unit/pressablesSwitch.test.js +86 -0
  9. package/build/__tests__/unit/pressablesSwitch.test.js.map +1 -0
  10. package/build/__tests__/unit/reduxBatchDispatch.test.d.ts +2 -0
  11. package/build/__tests__/unit/reduxBatchDispatch.test.d.ts.map +1 -0
  12. package/build/__tests__/unit/reduxBatchDispatch.test.js +51 -0
  13. package/build/__tests__/unit/reduxBatchDispatch.test.js.map +1 -0
  14. package/build/__tests__/unit/requestDetailsInclude.test.d.ts +2 -0
  15. package/build/__tests__/unit/requestDetailsInclude.test.d.ts.map +1 -0
  16. package/build/__tests__/unit/requestDetailsInclude.test.js +46 -0
  17. package/build/__tests__/unit/requestDetailsInclude.test.js.map +1 -0
  18. package/build/__tests__/unit/screenStateSwitch.test.d.ts +2 -0
  19. package/build/__tests__/unit/screenStateSwitch.test.d.ts.map +1 -0
  20. package/build/__tests__/unit/screenStateSwitch.test.js +34 -0
  21. package/build/__tests__/unit/screenStateSwitch.test.js.map +1 -0
  22. package/build/__tests__/unit/sheetOffset.test.d.ts +2 -0
  23. package/build/__tests__/unit/sheetOffset.test.d.ts.map +1 -0
  24. package/build/__tests__/unit/sheetOffset.test.js +47 -0
  25. package/build/__tests__/unit/sheetOffset.test.js.map +1 -0
  26. package/build/core/connection.d.ts +1 -0
  27. package/build/core/connection.d.ts.map +1 -1
  28. package/build/core/connection.js +9 -0
  29. package/build/core/connection.js.map +1 -1
  30. package/build/core/guides.d.ts.map +1 -1
  31. package/build/core/guides.js +38 -3
  32. package/build/core/guides.js.map +1 -1
  33. package/build/core/index.d.ts +1 -1
  34. package/build/core/index.d.ts.map +1 -1
  35. package/build/core/index.js +1 -1
  36. package/build/core/index.js.map +1 -1
  37. package/build/core/injected/sheetOffset.d.ts +13 -0
  38. package/build/core/injected/sheetOffset.d.ts.map +1 -0
  39. package/build/core/injected/sheetOffset.js +37 -0
  40. package/build/core/injected/sheetOffset.js.map +1 -0
  41. package/build/core/inspector.d.ts.map +1 -1
  42. package/build/core/inspector.js +55 -3
  43. package/build/core/inspector.js.map +1 -1
  44. package/build/core/measureComponent.d.ts.map +1 -1
  45. package/build/core/measureComponent.js +49 -13
  46. package/build/core/measureComponent.js.map +1 -1
  47. package/build/core/network.d.ts +2 -0
  48. package/build/core/network.d.ts.map +1 -1
  49. package/build/core/network.js +23 -8
  50. package/build/core/network.js.map +1 -1
  51. package/build/core/pressables.d.ts.map +1 -1
  52. package/build/core/pressables.js +113 -10
  53. package/build/core/pressables.js.map +1 -1
  54. package/build/core/redux.d.ts +1 -1
  55. package/build/core/redux.d.ts.map +1 -1
  56. package/build/core/redux.js +4 -3
  57. package/build/core/redux.js.map +1 -1
  58. package/build/core/screenLayout.d.ts.map +1 -1
  59. package/build/core/screenLayout.js +50 -0
  60. package/build/core/screenLayout.js.map +1 -1
  61. package/build/core/screenState.d.ts +2 -0
  62. package/build/core/screenState.d.ts.map +1 -1
  63. package/build/core/screenState.js +111 -7
  64. package/build/core/screenState.js.map +1 -1
  65. package/build/core/swipeDiagnosis.d.ts.map +1 -1
  66. package/build/core/swipeDiagnosis.js +31 -2
  67. package/build/core/swipeDiagnosis.js.map +1 -1
  68. package/build/pro/tap.d.ts +14 -0
  69. package/build/pro/tap.d.ts.map +1 -1
  70. package/build/pro/tap.js +54 -1
  71. package/build/pro/tap.js.map +1 -1
  72. package/build/tools/componentTools.js +1 -1
  73. package/build/tools/componentTools.js.map +1 -1
  74. package/build/tools/interactionTools.js +1 -1
  75. package/build/tools/interactionTools.js.map +1 -1
  76. package/build/tools/logTools.d.ts.map +1 -1
  77. package/build/tools/logTools.js +3 -9
  78. package/build/tools/logTools.js.map +1 -1
  79. package/build/tools/networkTools.d.ts.map +1 -1
  80. package/build/tools/networkTools.js +11 -12
  81. package/build/tools/networkTools.js.map +1 -1
  82. package/build/tools/reduxTools.d.ts.map +1 -1
  83. package/build/tools/reduxTools.js +5 -3
  84. package/build/tools/reduxTools.js.map +1 -1
  85. package/package.json +14 -3
  86. package/tools.json +1 -0
@@ -2,6 +2,7 @@ import { executeInApp } from "./jsExecute.js";
2
2
  import { resolveStacksToSource, buildDebugStackHarvestExpression } from "./componentSource.js";
3
3
  import { RN_PRIMITIVES_SRC, GENERIC_COMPONENT_SRC } from "./injectedFilters.js";
4
4
  import { SCREEN_SPACE_HELPER_JS } from "./screenSpace.js";
5
+ import { SHEET_HELPERS_JS } from "./injected/sheetOffset.js";
5
6
  export async function isInspectorActive(device) {
6
7
  const expression = `
7
8
  (function() {
@@ -121,18 +122,50 @@ export async function inspectAtPoint(x, y, options = {}) {
121
122
  for (var hi = 0; hi < hostFibers.length; hi++) hostIndex.set(hostFibers[hi], hi);
122
123
 
123
124
  var measurements = new Array(hostFibers.length).fill(null);
124
- var pending = hostFibers.length;
125
125
  var settled = false;
126
126
  var timedOut = false;
127
127
 
128
+ ${SCREEN_SPACE_HELPER_JS}
129
+ ${SHEET_HELPERS_JS}
130
+ var SCREEN_SPACE = ${JSON.stringify(metrics)};
131
+
132
+ // Sheet boundaries — see injected/sheetOffset.ts. Without this the hit
133
+ // test runs against frames that are short by the sheet's inset, so a
134
+ // point on a modal resolves to the screen *underneath* it: the same
135
+ // symptom the host cap used to produce, from a different cause.
136
+ var sheetFibers = [];
137
+ var sheetIdxByHost = [];
138
+ for (var sf = 0; sf < hostFibers.length; sf++) {
139
+ var bnd = modalBoundaryOf(hostFibers[sf]);
140
+ var at = -1;
141
+ if (bnd) {
142
+ for (var sj = 0; sj < sheetFibers.length; sj++) {
143
+ if (sheetFibers[sj] === bnd) { at = sj; break; }
144
+ }
145
+ if (at < 0) { sheetFibers.push(bnd); at = sheetFibers.length - 1; }
146
+ }
147
+ sheetIdxByHost.push(at);
148
+ }
149
+ var sheetMeasurements = new Array(sheetFibers.length).fill(null);
150
+
151
+ var pending = hostFibers.length + sheetFibers.length;
152
+
128
153
  function done() {
129
154
  if (settled) return;
130
155
  settled = true;
131
156
  resolve(buildResult(hostFibers, measurements));
132
157
  }
133
158
 
134
- ${SCREEN_SPACE_HELPER_JS}
135
- var SCREEN_SPACE = ${JSON.stringify(metrics)};
159
+ sheetFibers.forEach(function(fiber, i) {
160
+ try {
161
+ getMeasurable(fiber).measureInWindow(function(fx, fy, fw, fh) {
162
+ sheetMeasurements[i] = { x: fx, y: fy, width: fw, height: fh };
163
+ if (--pending === 0) done();
164
+ });
165
+ } catch(e) {
166
+ if (--pending === 0) done();
167
+ }
168
+ });
136
169
 
137
170
  hostFibers.forEach(function(fiber, i) {
138
171
  try {
@@ -154,6 +187,13 @@ export async function inspectAtPoint(x, y, options = {}) {
154
187
  var measureBudgetMs = Math.min(3000, 400 + hostFibers.length * 2);
155
188
  setTimeout(function() { timedOut = true; done(); }, measureBudgetMs);
156
189
 
190
+ /** The window rect, from the app's own root host — the same node the band rule below assumes. */
191
+ function viewportForSheets(ms) {
192
+ var r = ms[0];
193
+ if (!r || !(r.width > 0) || !(r.height > 0)) return null;
194
+ return { width: r.width, height: r.height + (r.y > 0 ? r.y : 0) };
195
+ }
196
+
157
197
  function buildResult(fibers, measurements) {
158
198
  // The caller speaks canonical delivered pixels; measureInWindow speaks
159
199
  // points/dp. Hit-testing stays in point space (that is where the
@@ -165,6 +205,18 @@ export async function inspectAtPoint(x, y, options = {}) {
165
205
  var targetX = inputX / PX;
166
206
  var targetY = inputY / PX;
167
207
 
208
+ // Sheet correction first — derived from the sheet's own height, so
209
+ // where it applies the band rule below has nothing left to guess.
210
+ var sheetShifts = [];
211
+ for (var ssI = 0; ssI < sheetMeasurements.length; ssI++) {
212
+ sheetShifts.push(sheetShiftY(sheetMeasurements[ssI], viewportForSheets(measurements)));
213
+ }
214
+ for (var msI = 0; msI < measurements.length; msI++) {
215
+ var siI = sheetIdxByHost[msI] == null ? -1 : sheetIdxByHost[msI];
216
+ var dyI = siI >= 0 && sheetShifts[siI] ? sheetShifts[siI] : 0;
217
+ if (dyI && measurements[msI]) measurements[msI].y += dyI;
218
+ }
219
+
168
220
  // Lift measurements into screen space once, before anything reads them, so the
169
221
  // hit-test, the element frame, hitFrame and the hierarchy all share the caller's
170
222
  // coordinate space.
@@ -1 +1 @@
1
- {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAE/F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAA2B,MAAM,kBAAkB,CAAC;AASnF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAe;IACnD,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BlB,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7G,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAmBD,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,CAAS,EACT,CAAS,EACT,UASI,EAAE;IAEN,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAClF,MAAM,OAAO,GAAuB,WAAW,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAEpF,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyFT,sBAAsB;iCACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA4BzB,CAAC;+BACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAsDE,iBAAiB;sCACb,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwHzC,YAAY;;;;;;;;;;;;;;;;;;;;kBAoBZ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqEzB,CAAC;IAMF,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;AAChH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,CAAS,EACT,CAAS,EACT,MAAe;IAEf,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAC1B,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,EACtC,IAAI,EACJ,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,EAC5D,MAAM,CACT,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAqC,CAAC;QAC1E,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,OAAgC,EAChC,MAA2B;IAE3B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClF,CAAC;QACD,OAAO,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,IAAI,SAAS,EAAE,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;IAClE,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"measureComponent.d.ts","sourceRoot":"","sources":["../../src/core/measureComponent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACpB,UAAU,GACV,UAAU,GACV,oBAAoB,GACpB,SAAS,GACT,OAAO,CAAC;AAEd,MAAM,WAAW,aAAa;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GACvB,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAAG,aAAa,CAAC,GACxD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA8H5F"}
1
+ {"version":3,"file":"measureComponent.d.ts","sourceRoot":"","sources":["../../src/core/measureComponent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACpB,UAAU,GACV,UAAU,GACV,oBAAoB,GACpB,SAAS,GACT,OAAO,CAAC;AAEd,MAAM,WAAW,aAAa;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GACvB,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAAG,aAAa,CAAC,GACxD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAItF,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiK5F"}
@@ -1,8 +1,10 @@
1
+ import { SHEET_HELPERS_JS } from "./injected/sheetOffset.js";
1
2
  export function buildMeasureComponentExpression(componentName, index) {
2
3
  const escapedName = componentName.replace(/'/g, "\\'");
3
4
  const safeIndex = typeof index === "number" && Number.isFinite(index) ? index : 0;
4
5
  return `new Promise((resolve) => {
5
6
  try {
7
+ ${SHEET_HELPERS_JS}
6
8
  const hook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
7
9
  if (!hook) { resolve({ outcome: "error", error: "React DevTools hook not found." }); return; }
8
10
  let root = null;
@@ -101,20 +103,54 @@ export function buildMeasureComponentExpression(componentName, index) {
101
103
  // app's runtime after every successful measure — harmless, but it is a timer per call
102
104
  // that exists only to be ignored.
103
105
  let timeoutId = null;
104
- target.instance.measureInWindow((x, y, width, height) => {
105
- if (done) return;
106
- done = true;
107
- if (timeoutId !== null) { try { clearTimeout(timeoutId); } catch (e) {} }
108
- resolve({
109
- outcome: "measured",
110
- x: x,
111
- y: y,
112
- width: width,
113
- height: height,
114
- name: matchedName,
115
- nativeTag: typeof target.nativeTag === "number" ? target.nativeTag : undefined,
106
+ // Sheet correction — see injected/sheetOffset.ts. Without it this tool's promise
107
+ // of "the same space as get_screen_layout and inspect_at_point" breaks on a
108
+ // modally-presented screen, where those two now agree and this one would not.
109
+ //
110
+ // The probes are chained ahead of the target's rather than fired alongside it:
111
+ // measureInWindow answers on its own schedule, and reading a shift that has not
112
+ // landed yet would silently emit the uncorrected frame.
113
+ const measureTarget = (sheetDy) => {
114
+ target.instance.measureInWindow((x, y, width, height) => {
115
+ if (done) return;
116
+ done = true;
117
+ if (timeoutId !== null) { try { clearTimeout(timeoutId); } catch (e) {} }
118
+ resolve({
119
+ outcome: "measured",
120
+ x: x,
121
+ y: y + sheetDy,
122
+ width: width,
123
+ height: height,
124
+ name: matchedName,
125
+ nativeTag: typeof target.nativeTag === "number" ? target.nativeTag : undefined,
126
+ });
116
127
  });
117
- });
128
+ };
129
+
130
+ const firstHost = (f, d) => {
131
+ if (!f || d > 40) return null;
132
+ if (typeof f.type === "string" && getMeasurable(f)) return f;
133
+ let c = f.child;
134
+ while (c) { const h = firstHost(c, d + 1); if (h) return h; c = c.sibling; }
135
+ return null;
136
+ };
137
+ const sheetBoundary = modalBoundaryOf(matched);
138
+ const boundaryM = sheetBoundary ? getMeasurable(sheetBoundary) : null;
139
+ const rootM = sheetBoundary ? getMeasurable(firstHost(root.current, 0)) : null;
140
+ if (boundaryM && rootM) {
141
+ try {
142
+ rootM.instance.measureInWindow((rx, ry, rw, rh) => {
143
+ const viewport = { width: rw, height: rh + (ry > 0 ? ry : 0) };
144
+ try {
145
+ boundaryM.instance.measureInWindow((bx, by, bw, bh) => {
146
+ measureTarget(sheetShiftY({ x: bx, y: by, width: bw, height: bh }, viewport));
147
+ });
148
+ } catch (e) { measureTarget(0); }
149
+ });
150
+ } catch (e) { measureTarget(0); }
151
+ } else {
152
+ measureTarget(0);
153
+ }
118
154
  timeoutId = setTimeout(() => {
119
155
  if (done) return;
120
156
  done = true;
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6GhC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"measureComponent.js","sourceRoot":"","sources":["../../src/core/measureComponent.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,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;;MAEL,gBAAgB;;;;;;;;;;;0BAWI,WAAW;0BACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+IhC,CAAC;AACJ,CAAC"}
@@ -29,7 +29,9 @@ export interface FormatRequestDetailsOptions {
29
29
  maxBodyLength?: number;
30
30
  verbose?: boolean;
31
31
  query?: string;
32
+ include?: "request" | "response" | "both";
32
33
  }
34
+ export declare function redactHeaderValue(name: string, value: string): string;
33
35
  export declare function formatRequestDetails(request: NetworkRequest, options?: FormatRequestDetailsOptions): string;
34
36
  export declare function getNetworkRequests(networkBuffer: NetworkBuffer, options?: {
35
37
  maxRequests?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/core/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAU5C,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAK;gBAMR,OAAO,GAAE,MAAY,EAAE,UAAU,CAAC,EAAE,MAAM;IAKtD,OAAO,CAAC,GAAG;IAMX,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBrD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAWlE,MAAM,CAAC,OAAO,GAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,cAAc,EAAE;IAyCzB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,cAAc,EAAE;IAgBrE,KAAK,IAAI,MAAM;IAQf,IAAI,IAAI,IAAI,MAAM,CAEjB;IAGD,IAAI,YAAY,IAAI,MAAM,CAEzB;CACJ;AAGD,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAoB7D;AAGD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAMjE;AAWD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAGxC,MAAM,WAAW,2BAA2B;IAExC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAwBD,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,2BAAgC,GAC1C,MAAM,CAiFR;AAGD,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE;IACL,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAelE;AAGD,wBAAgB,qBAAqB,CACjC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAW,GACxB;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAOlE;AAGD,wBAAgB,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAoEpE"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/core/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAU5C,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAK;gBAMR,OAAO,GAAE,MAAY,EAAE,UAAU,CAAC,EAAE,MAAM;IAKtD,OAAO,CAAC,GAAG;IAMX,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBrD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAWlE,MAAM,CAAC,OAAO,GAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,cAAc,EAAE;IAyCzB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,cAAc,EAAE;IAgBrE,KAAK,IAAI,MAAM;IAQf,IAAI,IAAI,IAAI,MAAM,CAEjB;IAGD,IAAI,YAAY,IAAI,MAAM,CAEzB;CACJ;AAGD,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAoB7D;AAGD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAMjE;AAWD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAGxC,MAAM,WAAW,2BAA2B;IAExC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;CAC7C;AAcD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrE;AAwBD,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,2BAAgC,GAC1C,MAAM,CAiGR;AAGD,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE;IACL,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAelE;AAGD,wBAAgB,qBAAqB,CACjC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAW,GACxB;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAOlE;AAGD,wBAAgB,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAoEpE"}
@@ -110,6 +110,14 @@ export function formatRequests(requests) {
110
110
  return requests.map(formatRequest).join("\n");
111
111
  }
112
112
  export const DEFAULT_BODY_BUDGET = 2000;
113
+ const CREDENTIAL_HEADERS = /^(authorization|proxy-authorization|cookie|set-cookie|x-api-key|x-auth-token|x-csrf-token)$/i;
114
+ export function redactHeaderValue(name, value) {
115
+ if (!CREDENTIAL_HEADERS.test(name))
116
+ return value;
117
+ const scheme = /^(bearer|basic|digest)\s/i.exec(value);
118
+ const prefix = scheme ? `${scheme[1]} ` : "";
119
+ return `${prefix}[redacted, ${value.length} chars — verbose:true to see it]`;
120
+ }
113
121
  function renderBody(raw, opts) {
114
122
  if (opts.verbose && !opts.query)
115
123
  return raw;
@@ -119,7 +127,7 @@ function renderBody(raw, opts) {
119
127
  return note ? `${projected.text}\n\n${note}` : projected.text;
120
128
  }
121
129
  export function formatRequestDetails(request, options = {}) {
122
- const { maxBodyLength = DEFAULT_BODY_BUDGET, verbose = false, query } = options;
130
+ const { maxBodyLength = DEFAULT_BODY_BUDGET, verbose = false, query, include } = options;
123
131
  const lines = [];
124
132
  lines.push(`=== ${request.method} ${request.url} ===`);
125
133
  lines.push(`Request ID: ${request.requestId}`);
@@ -147,14 +155,18 @@ export function formatRequestDetails(request, options = {}) {
147
155
  if (request.mockWarning) {
148
156
  lines.push(`Mock warning: ${request.mockWarning}`);
149
157
  }
150
- if (Object.keys(request.headers).length > 0) {
158
+ const queryTarget = request.responseBody ? "response" : "request";
159
+ const side = include ?? (query ? queryTarget : "both");
160
+ const wantRequest = side !== "response";
161
+ const wantResponse = side !== "request";
162
+ const wantHeaders = !query || include !== undefined;
163
+ if (wantRequest && wantHeaders && Object.keys(request.headers).length > 0) {
151
164
  lines.push("\n--- Request Headers ---");
152
165
  for (const [key, value] of Object.entries(request.headers)) {
153
- lines.push(`${key}: ${value}`);
166
+ lines.push(`${key}: ${verbose ? value : redactHeaderValue(key, value)}`);
154
167
  }
155
168
  }
156
- const queryTarget = request.responseBody ? "response" : "request";
157
- if (request.postData) {
169
+ if (wantRequest && request.postData) {
158
170
  lines.push("\n--- Request Body ---");
159
171
  lines.push(renderBody(request.postData, {
160
172
  maxBodyLength,
@@ -163,13 +175,13 @@ export function formatRequestDetails(request, options = {}) {
163
175
  hint: "Raise maxBodyLength, pass verbose:true, or query a narrower path."
164
176
  }));
165
177
  }
166
- if (request.responseHeaders && Object.keys(request.responseHeaders).length > 0) {
178
+ if (wantResponse && wantHeaders && request.responseHeaders && Object.keys(request.responseHeaders).length > 0) {
167
179
  lines.push("\n--- Response Headers ---");
168
180
  for (const [key, value] of Object.entries(request.responseHeaders)) {
169
- lines.push(`${key}: ${value}`);
181
+ lines.push(`${key}: ${verbose ? value : redactHeaderValue(key, value)}`);
170
182
  }
171
183
  }
172
- if (request.responseBody) {
184
+ if (wantResponse && request.responseBody) {
173
185
  lines.push("\n--- Response Body ---");
174
186
  lines.push(renderBody(request.responseBody, {
175
187
  maxBodyLength,
@@ -178,6 +190,9 @@ export function formatRequestDetails(request, options = {}) {
178
190
  hint: "Raise maxBodyLength, pass verbose:true, or query a narrower path."
179
191
  }));
180
192
  }
193
+ if (!include && query) {
194
+ lines.push(`\n[showing the ${side} body only — query narrows to it. include:"${side}" adds that side's headers, include:"both" adds the other side.]`);
195
+ }
181
196
  return lines.join("\n");
182
197
  }
183
198
  export function getNetworkRequests(networkBuffer, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/core/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/core/network.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACH,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG5E,MAAM,OAAO,aAAa;IACd,QAAQ,GAAgC,IAAI,GAAG,EAAE,CAAC;IAClD,KAAK,GAAa,EAAE,CAAC;IACrB,OAAO,CAAS;IAChB,UAAU,CAAU;IACpB,OAAO,GAAG,CAAC,CAAC;IAMpB,YAAY,UAAkB,GAAG,EAAE,UAAmB;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEO,GAAG,CAAC,KAAa,EAAE,SAAiB;QACxC,OAAO,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC;IACnC,CAAC;IAID,GAAG,CAAC,SAAiB,EAAE,OAAuB;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrC,IAAI,SAAS,EAAE,CAAC;oBACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAID,GAAG,CAAC,SAAiB,EAAE,KAAc;QACjC,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACjE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC;QAChD,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,MAAM,CAAC,UAOH,EAAE;QACF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAE5E,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAGjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,GAAG,OAAO,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACrC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CACpE,CAAC;QACN,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,MAAM,CAAC,UAAkB,EAAE,aAAqB,EAAE;QAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aAC7C,MAAM,CACH,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YACrC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CACpE;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAEnE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;IAGD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAGD,MAAM,UAAU,aAAa,CAAC,OAAuB;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAIjF,IAAI,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEvI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,IAAI,YAAY,OAAO,CAAC,KAAK,GAAG,CAAC;IACzC,CAAC;IAID,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,IAAI,UAAU,OAAO,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,MAAM,UAAU,cAAc,CAAC,QAA0B;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,mCAAmC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAWD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAwBxC,MAAM,kBAAkB,GAAG,8FAA8F,CAAC;AAE1H,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACzD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,OAAO,GAAG,MAAM,cAAc,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACjF,CAAC;AAWD,SAAS,UAAU,CACf,GAAW,EACX,IAA+E;IAE/E,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACvF,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3H,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAClE,CAAC;AAGD,MAAM,UAAU,oBAAoB,CAChC,OAAuB,EACvB,UAAuC,EAAE;IAEzC,MAAM,EAAE,aAAa,GAAG,mBAAmB,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACzF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,IAAI,SAAS,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC;IAEjF,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,MAAM,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IAKD,MAAM,WAAW,GAA2B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAK1F,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,KAAK,UAAU,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC;IAGxC,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,SAAS,CAAC;IAGpD,IAAI,WAAW,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAED,IAAI,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE;YACpC,aAAa;YACb,OAAO;YACP,KAAK,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACpD,IAAI,EAAE,mEAAmE;SAC5E,CAAC,CAAC,CAAC;IACR,CAAC;IAGD,IAAI,YAAY,IAAI,WAAW,IAAI,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5G,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAGD,IAAI,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE;YACxC,aAAa;YACb,OAAO;YACP,KAAK,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACrD,IAAI,EAAE,mEAAmE;SAC5E,CAAC,CAAC,CAAC;IACR,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CACN,kBAAkB,IAAI,8CAA8C,IAAI,kEAAkE,CAC7I,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAGD,MAAM,UAAU,kBAAkB,CAC9B,aAA4B,EAC5B,UAKI,EAAE;IAEN,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACjE,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC;QAClC,KAAK,EAAE,WAAW;QAClB,MAAM;QACN,UAAU;QACV,MAAM;QACN,aAAa,EAAE,KAAK;KACvB,CAAC,CAAC;IAEH,OAAO;QACH,QAAQ;QACR,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC;KACtC,CAAC;AACN,CAAC;AAGD,MAAM,UAAU,qBAAqB,CACjC,aAA4B,EAC5B,UAAkB,EAClB,aAAqB,EAAE;IAEvB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9D,OAAO;QACH,QAAQ;QACR,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC;KACtC,CAAC;AACN,CAAC;AAGD,MAAM,UAAU,eAAe,CAAC,aAA4B;IACxD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,mCAAmC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEzB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAGvD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;YACxD,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QAGD,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAGD,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YACvB,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;YACrC,cAAc,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,cAAc,cAAc,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IAEpC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -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;AAuBlD,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,CAiqB3B"}
1
+ {"version":3,"file":"pressables.d.ts","sourceRoot":"","sources":["../../src/core/pressables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwBlD,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,CAuwB3B"}
@@ -1,6 +1,7 @@
1
1
  import { executeInApp, delay } from "./jsExecute.js";
2
2
  import { VISIBILITY_HELPERS_JS } from "./injected/visibility.js";
3
3
  import { RN_PRIMITIVES_SRC } from "./injectedFilters.js";
4
+ import { SHEET_HELPERS_JS } from "./injected/sheetOffset.js";
4
5
  export const MEASURE_POLL_SCHEDULE_MS = [20, 40, 60, 100, 140];
5
6
  export const MEASURE_POLL_DEADLINE_MS = 300;
6
7
  export async function waitForMeasurements(args) {
@@ -78,8 +79,30 @@ export async function pressElement(options) {
78
79
  function isPressableProps(p) {
79
80
  if (!p) return false;
80
81
  if (typeof p.onPress === 'function') return true;
82
+ // Switch/Checkbox: no onPress anywhere on the fiber, so these used to be
83
+ // untargetable — the only way to flip one was to guess an x from a
84
+ // screenshot and pair it with the row label's y, which silently flips the
85
+ // neighbouring row when the guess is off.
86
+ if (typeof p.onValueChange === 'function') return true;
81
87
  return wantLongPress && typeof p.onLongPress === 'function';
82
88
  }
89
+ /**
90
+ * A Switch is not identified by its handlers. Verified on device
91
+ * (RN 0.83, iPhone Air): the app renders <Switch value={x} /> with no
92
+ * onValueChange at all and drives it from a gesture-handler row, so the
93
+ * fiber carries value and nothing else. Keying off onValueChange alone
94
+ * would leave exactly the switch that prompted this untargetable.
95
+ */
96
+ function isSwitchFiber(fiber, p) {
97
+ if (p && typeof p.onValueChange === 'function') return true;
98
+ if (!fiber || typeof fiber.type === 'string') return false;
99
+ return getComponentName(fiber) === 'Switch';
100
+ }
101
+ /** Current value of a Switch-like element; null when this is not one. */
102
+ function switchValueOf(fiber, p) {
103
+ if (!isSwitchFiber(fiber, p)) return null;
104
+ return p && typeof p.value === 'boolean' ? p.value : null;
105
+ }
83
106
  function hasLongPressProps(p) {
84
107
  return !!(p && typeof p.onLongPress === 'function');
85
108
  }
@@ -97,6 +120,7 @@ export async function pressElement(options) {
97
120
  }
98
121
 
99
122
  ${VISIBILITY_HELPERS_JS}
123
+ ${SHEET_HELPERS_JS}
100
124
 
101
125
  // When a fiber holds a string/number child via memoizedProps.children, return it
102
126
  // without recursing — Text > RCTText > NativeText all carry the same string,
@@ -241,7 +265,7 @@ export async function pressElement(options) {
241
265
 
242
266
  if (isScreenHidden(name, props)) return;
243
267
 
244
- var isPressable = isPressableProps(props);
268
+ var isPressable = isPressableProps(props) || isSwitchFiber(fiber, props);
245
269
  var isInput = !isPressable && props && (typeof props.onChangeText === 'function' || typeof props.onFocus === 'function');
246
270
 
247
271
  if (isPressable || isInput) {
@@ -271,6 +295,7 @@ export async function pressElement(options) {
271
295
  isInput: isInput,
272
296
  isPressable: isPressable,
273
297
  hasLongPress: hasLongPressProps(props),
298
+ switchValue: switchValueOf(fiber, props),
274
299
  source: 'direct'
275
300
  });
276
301
  }
@@ -305,7 +330,7 @@ export async function pressElement(options) {
305
330
  function findDescendantPressable(fiber, d) {
306
331
  if (!fiber || d > 10) return null;
307
332
  var fp = fiber.memoizedProps;
308
- var dIsPressable = isPressableProps(fp);
333
+ var dIsPressable = isPressableProps(fp) || isSwitchFiber(fiber, fp);
309
334
  var dIsInput = !dIsPressable && fp && (typeof fp.onChangeText === 'function' || typeof fp.onFocus === 'function');
310
335
  if (dIsPressable || dIsInput) return { fiber: fiber, isPressable: dIsPressable, isInput: dIsInput };
311
336
  var c = fiber.child;
@@ -325,7 +350,7 @@ export async function pressElement(options) {
325
350
 
326
351
  var tid = props && (props.testID || props.nativeID || null);
327
352
  if (tid === searchTestID) {
328
- var nIsPressable = isPressableProps(props);
353
+ var nIsPressable = isPressableProps(props) || isSwitchFiber(fiber, props);
329
354
  var nIsInput = !nIsPressable && props && (typeof props.onChangeText === 'function' || typeof props.onFocus === 'function');
330
355
 
331
356
  if (nIsPressable || nIsInput) {
@@ -343,6 +368,7 @@ export async function pressElement(options) {
343
368
  isInput: nIsInput,
344
369
  isPressable: nIsPressable,
345
370
  hasLongPress: hasLongPressProps(props),
371
+ switchValue: switchValueOf(fiber, props),
346
372
  source: 'testID-direct'
347
373
  });
348
374
  }
@@ -352,7 +378,7 @@ export async function pressElement(options) {
352
378
  var d = 0;
353
379
  while (parent && d < maxTraversalUp) {
354
380
  var pp = parent.memoizedProps;
355
- var pIsPressable = isPressableProps(pp);
381
+ var pIsPressable = isPressableProps(pp) || isSwitchFiber(parent, pp);
356
382
  var pIsInput = !pIsPressable && pp && (typeof pp.onChangeText === 'function' || typeof pp.onFocus === 'function');
357
383
  if (pIsPressable || pIsInput) {
358
384
  var pText = pIsPressable ? extractText(parent, 0) : (extractText(parent, 0) || (typeof pp.value === 'string' ? pp.value : '') || (typeof pp.defaultValue === 'string' ? pp.defaultValue : '') || (typeof pp.placeholder === 'string' ? pp.placeholder : ''));
@@ -369,6 +395,7 @@ export async function pressElement(options) {
369
395
  isInput: pIsInput,
370
396
  isPressable: pIsPressable,
371
397
  hasLongPress: hasLongPressProps(pp),
398
+ switchValue: switchValueOf(parent, pp),
372
399
  source: 'testID-ancestor'
373
400
  });
374
401
  foundAncestor = true;
@@ -397,6 +424,7 @@ export async function pressElement(options) {
397
424
  isInput: desc.isInput,
398
425
  isPressable: desc.isPressable,
399
426
  hasLongPress: hasLongPressProps(dp),
427
+ switchValue: switchValueOf(desc.fiber, dp),
400
428
  source: 'testID-descendant'
401
429
  });
402
430
  }
@@ -434,7 +462,7 @@ export async function pressElement(options) {
434
462
  function findDescendantPressableOnly(fiber, d) {
435
463
  if (!fiber || d > 10) return null;
436
464
  var fp = fiber.memoizedProps;
437
- if (isPressableProps(fp)) return fiber;
465
+ if (isPressableProps(fp) || isSwitchFiber(fiber, fp)) return fiber;
438
466
  var c = fiber.child;
439
467
  while (c) {
440
468
  var r = findDescendantPressableOnly(c, d + 1);
@@ -456,7 +484,7 @@ export async function pressElement(options) {
456
484
  var d = 0;
457
485
  while (parent && d < maxTraversalUp) {
458
486
  var pp = parent.memoizedProps;
459
- if (isPressableProps(pp)) {
487
+ if (isPressableProps(pp) || isSwitchFiber(parent, pp)) {
460
488
  var text = extractText(parent, 0);
461
489
  var host = findFirstHost(parent, 0, false);
462
490
  if (host) {
@@ -471,6 +499,7 @@ export async function pressElement(options) {
471
499
  isInput: false,
472
500
  isPressable: true,
473
501
  hasLongPress: hasLongPressProps(pp),
502
+ switchValue: switchValueOf(parent, pp),
474
503
  source: 'component-ancestor'
475
504
  });
476
505
  foundAncestor = true;
@@ -499,6 +528,7 @@ export async function pressElement(options) {
499
528
  isInput: false,
500
529
  isPressable: true,
501
530
  hasLongPress: hasLongPressProps(dp),
531
+ switchValue: switchValueOf(descFiber, dp),
502
532
  source: 'component-descendant'
503
533
  });
504
534
  }
@@ -526,10 +556,58 @@ export async function pressElement(options) {
526
556
  return { error: 'No pressable or focusable elements found. Searched for: ' + criteria.join(', ') };
527
557
  }
528
558
 
559
+ // Sheet boundaries and the true viewport.
560
+ //
561
+ // A modally-presented screen is laid out by UIKit at an offset RN's
562
+ // measurements do not include (injected/sheetOffset.ts). Without this,
563
+ // fiber coordinates inside a sheet are short by that inset — and the
564
+ // viewport heuristic below, which picks whatever measured first at
565
+ // x=0, sized the sheet rather than the window and reported every
566
+ // element on it as "below-viewport". Both come from the same gap.
567
+ var sheetFibers = [];
568
+ var sheetIdxByHost = [];
569
+ for (var sfi2 = 0; sfi2 < hostFibers.length; sfi2++) {
570
+ var bnd = modalBoundaryOf(hostFibers[sfi2]);
571
+ var at = -1;
572
+ if (bnd) {
573
+ for (var sfj = 0; sfj < sheetFibers.length; sfj++) {
574
+ if (sheetFibers[sfj] === bnd) { at = sfj; break; }
575
+ }
576
+ if (at < 0) { sheetFibers.push(bnd); at = sheetFibers.length - 1; }
577
+ }
578
+ sheetIdxByHost.push(at);
579
+ }
580
+
529
581
  // Store host fibers and metadata globally for step 2, dispatch measureInWindow
530
582
  globalThis.__tapHostFibers = hostFibers;
531
583
  globalThis.__tapMeta = tapMeta;
532
584
  globalThis.__tapMeasurements = new Array(hostFibers.length).fill(null);
585
+ globalThis.__tapSheetIdx = sheetIdxByHost;
586
+ globalThis.__tapSheetMeasurements = new Array(sheetFibers.length).fill(null);
587
+ globalThis.__tapViewport = null;
588
+ for (var shi2 = 0; shi2 < sheetFibers.length; shi2++) {
589
+ try {
590
+ (function(idx) {
591
+ getMeasurable(sheetFibers[idx]).measureInWindow(function(fx, fy, fw, fh) {
592
+ globalThis.__tapSheetMeasurements[idx] = { x: fx, y: fy, width: fw, height: fh };
593
+ });
594
+ })(shi2);
595
+ } catch(e) {}
596
+ }
597
+ try {
598
+ var viewportHost = null;
599
+ (function findRootHost(f, d) {
600
+ if (viewportHost || !f || d > 40) return;
601
+ if (typeof f.type === 'string' && getMeasurable(f)) { viewportHost = f; return; }
602
+ var c = f.child;
603
+ while (c && !viewportHost) { findRootHost(c, d + 1); c = c.sibling; }
604
+ })(roots[0].current, 0);
605
+ if (viewportHost) {
606
+ getMeasurable(viewportHost).measureInWindow(function(fx, fy, fw, fh) {
607
+ globalThis.__tapViewport = { x: fx, y: fy, width: fw, height: fh };
608
+ });
609
+ }
610
+ } catch(e) {}
533
611
 
534
612
  for (var mi = 0; mi < hostFibers.length; mi++) {
535
613
  try {
@@ -557,12 +635,19 @@ export async function pressElement(options) {
557
635
  await awaitMeasurements(["__tapMeasurements"], "tap", options.device);
558
636
  const resolveExpression = `
559
637
  (function() {
638
+ ${SHEET_HELPERS_JS}
560
639
  var hostFibers = globalThis.__tapHostFibers;
561
640
  var meta = globalThis.__tapMeta;
562
641
  var measurements = globalThis.__tapMeasurements;
642
+ var sheetIdxByHost = globalThis.__tapSheetIdx || [];
643
+ var sheetMeasurements = globalThis.__tapSheetMeasurements || [];
644
+ var viewportM = globalThis.__tapViewport;
563
645
  globalThis.__tapHostFibers = null;
564
646
  globalThis.__tapMeta = null;
565
647
  globalThis.__tapMeasurements = null;
648
+ globalThis.__tapSheetIdx = null;
649
+ globalThis.__tapSheetMeasurements = null;
650
+ globalThis.__tapViewport = null;
566
651
 
567
652
  if (!hostFibers || !measurements || !meta) {
568
653
  return { error: 'No measurement data. Dispatch step may have failed.' };
@@ -573,9 +658,14 @@ export async function pressElement(options) {
573
658
  var searchComponent = ${componentParam};
574
659
  var targetIndex = ${index};
575
660
 
576
- // Determine viewport bounds
661
+ // Determine viewport bounds. The app's own root host is the honest
662
+ // answer; the scan below is the fallback for when it did not measure.
577
663
  var viewportW = 9999, viewportH = 9999;
578
- for (var v = 0; v < measurements.length; v++) {
664
+ if (viewportM && viewportM.width > 0 && viewportM.height > 0) {
665
+ viewportW = viewportM.width;
666
+ viewportH = viewportM.height + (viewportM.y > 0 ? viewportM.y : 0);
667
+ }
668
+ for (var v = 0; viewportW === 9999 && v < measurements.length; v++) {
579
669
  if (measurements[v] && measurements[v].x === 0 && measurements[v].y <= 0 &&
580
670
  measurements[v].width > 0 && measurements[v].height > 0) {
581
671
  viewportW = measurements[v].width;
@@ -589,8 +679,16 @@ export async function pressElement(options) {
589
679
  // not laid out" from "doesn't exist in the fiber tree at all".
590
680
  var matches = [];
591
681
  var invisibleMatches = [];
682
+ // Correct sheet-relative measurements before anything reads them: the
683
+ // visibility test and the tap target must share one space.
684
+ var sheetShifts = [];
685
+ for (var ssi = 0; ssi < sheetMeasurements.length; ssi++) {
686
+ sheetShifts.push(sheetShiftY(sheetMeasurements[ssi], { width: viewportW, height: viewportH }));
687
+ }
688
+
592
689
  for (var i = 0; i < measurements.length; i++) {
593
- var m = measurements[i];
690
+ var si = sheetIdxByHost[i] == null ? -1 : sheetIdxByHost[i];
691
+ var m = shiftRect(measurements[i], si >= 0 && sheetShifts[si] ? sheetShifts[si] : 0);
594
692
  if (!m) continue;
595
693
 
596
694
  var info = meta[i];
@@ -631,6 +729,7 @@ export async function pressElement(options) {
631
729
  path: info.path,
632
730
  isInput: info.isInput,
633
731
  hasLongPress: info.hasLongPress,
732
+ switchValue: info.switchValue,
634
733
  x: Math.round(m.x + m.width / 2),
635
734
  y: Math.round(m.y + m.height / 2)
636
735
  });
@@ -697,7 +796,11 @@ export async function pressElement(options) {
697
796
  isInput: target.isInput,
698
797
  // Only the fiber strategy can answer this; accessibility, OCR and
699
798
  // coordinate taps have no view of the handlers.
700
- hasLongPress: !!target.hasLongPress
799
+ hasLongPress: !!target.hasLongPress,
800
+ // null unless the resolved element is Switch-like — lets tap report
801
+ // the value it actually changed instead of a pixel diff that reads
802
+ // identically for a correct and an incorrect toggle.
803
+ switchValue: target.switchValue === undefined ? null : target.switchValue
701
804
  };
702
805
  if (matches.length > 1) {
703
806
  result.allMatches = matches.map(function(m, i) {