execbro 1.11.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/build/__tests__/unit/appContext.test.d.ts +2 -0
- package/build/__tests__/unit/appContext.test.d.ts.map +1 -0
- package/build/__tests__/unit/appContext.test.js +70 -0
- package/build/__tests__/unit/appContext.test.js.map +1 -0
- package/build/__tests__/unit/appRequest.test.d.ts +2 -0
- package/build/__tests__/unit/appRequest.test.d.ts.map +1 -0
- package/build/__tests__/unit/appRequest.test.js +179 -0
- package/build/__tests__/unit/appRequest.test.js.map +1 -0
- package/build/__tests__/unit/contextWiring.test.d.ts +2 -0
- package/build/__tests__/unit/contextWiring.test.d.ts.map +1 -0
- package/build/__tests__/unit/contextWiring.test.js +28 -0
- package/build/__tests__/unit/contextWiring.test.js.map +1 -0
- package/build/__tests__/unit/coordinateMiss.test.d.ts +2 -0
- package/build/__tests__/unit/coordinateMiss.test.d.ts.map +1 -0
- package/build/__tests__/unit/coordinateMiss.test.js +111 -0
- package/build/__tests__/unit/coordinateMiss.test.js.map +1 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.d.ts +2 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.d.ts.map +1 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js +69 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js.map +1 -0
- package/build/__tests__/unit/epochRender.test.d.ts +2 -0
- package/build/__tests__/unit/epochRender.test.d.ts.map +1 -0
- package/build/__tests__/unit/epochRender.test.js +60 -0
- package/build/__tests__/unit/epochRender.test.js.map +1 -0
- package/build/__tests__/unit/executeBudget.test.d.ts +2 -0
- package/build/__tests__/unit/executeBudget.test.d.ts.map +1 -0
- package/build/__tests__/unit/executeBudget.test.js +27 -0
- package/build/__tests__/unit/executeBudget.test.js.map +1 -0
- package/build/__tests__/unit/executor.test.js +48 -6
- package/build/__tests__/unit/executor.test.js.map +1 -1
- package/build/__tests__/unit/findElementTreeReuse.test.d.ts +2 -0
- package/build/__tests__/unit/findElementTreeReuse.test.d.ts.map +1 -0
- package/build/__tests__/unit/findElementTreeReuse.test.js +77 -0
- package/build/__tests__/unit/findElementTreeReuse.test.js.map +1 -0
- package/build/__tests__/unit/getLogsEmptyContract.test.js +4 -3
- package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -1
- package/build/__tests__/unit/getLogsNativeSource.test.js +7 -8
- package/build/__tests__/unit/getLogsNativeSource.test.js.map +1 -1
- package/build/__tests__/unit/inspectorHarvest.test.js +1 -21
- package/build/__tests__/unit/inspectorHarvest.test.js.map +1 -1
- package/build/__tests__/unit/inspectorSource.test.js +1 -38
- package/build/__tests__/unit/inspectorSource.test.js.map +1 -1
- package/build/__tests__/unit/jsLogEvents.test.js +1 -0
- package/build/__tests__/unit/jsLogEvents.test.js.map +1 -1
- package/build/__tests__/unit/logBufferEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/logBufferEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/logBufferEpoch.test.js +63 -0
- package/build/__tests__/unit/logBufferEpoch.test.js.map +1 -0
- package/build/__tests__/unit/metro.test.js +18 -1
- package/build/__tests__/unit/metro.test.js.map +1 -1
- package/build/__tests__/unit/moduleRegistry.test.d.ts +2 -0
- package/build/__tests__/unit/moduleRegistry.test.d.ts.map +1 -0
- package/build/__tests__/unit/moduleRegistry.test.js +62 -0
- package/build/__tests__/unit/moduleRegistry.test.js.map +1 -0
- package/build/__tests__/unit/navigateVerify.test.d.ts +2 -0
- package/build/__tests__/unit/navigateVerify.test.d.ts.map +1 -0
- package/build/__tests__/unit/navigateVerify.test.js +30 -0
- package/build/__tests__/unit/navigateVerify.test.js.map +1 -0
- package/build/__tests__/unit/navigation.test.d.ts +2 -0
- package/build/__tests__/unit/navigation.test.d.ts.map +1 -0
- package/build/__tests__/unit/navigation.test.js +254 -0
- package/build/__tests__/unit/navigation.test.js.map +1 -0
- package/build/__tests__/unit/network.test.js +1 -0
- package/build/__tests__/unit/network.test.js.map +1 -1
- package/build/__tests__/unit/networkBufferEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/networkBufferEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkBufferEpoch.test.js +52 -0
- package/build/__tests__/unit/networkBufferEpoch.test.js.map +1 -0
- package/build/__tests__/unit/networkInterceptor.test.js +7 -7
- package/build/__tests__/unit/networkInterceptor.test.js.map +1 -1
- package/build/__tests__/unit/promiseHandles.test.d.ts +2 -0
- package/build/__tests__/unit/promiseHandles.test.d.ts.map +1 -0
- package/build/__tests__/unit/promiseHandles.test.js +61 -0
- package/build/__tests__/unit/promiseHandles.test.js.map +1 -0
- package/build/__tests__/unit/resolveBufferOffline.test.d.ts +2 -0
- package/build/__tests__/unit/resolveBufferOffline.test.d.ts.map +1 -0
- package/build/__tests__/unit/resolveBufferOffline.test.js +25 -0
- package/build/__tests__/unit/resolveBufferOffline.test.js.map +1 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.d.ts +2 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.d.ts.map +1 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.js +118 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.js.map +1 -0
- package/build/__tests__/unit/sessionEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/sessionEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/sessionEpoch.test.js +41 -0
- package/build/__tests__/unit/sessionEpoch.test.js.map +1 -0
- package/build/__tests__/unit/settleAndDiff.test.d.ts +2 -0
- package/build/__tests__/unit/settleAndDiff.test.d.ts.map +1 -0
- package/build/__tests__/unit/settleAndDiff.test.js +110 -0
- package/build/__tests__/unit/settleAndDiff.test.js.map +1 -0
- package/build/__tests__/unit/truncate.test.d.ts +2 -0
- package/build/__tests__/unit/truncate.test.d.ts.map +1 -0
- package/build/__tests__/unit/truncate.test.js +58 -0
- package/build/__tests__/unit/truncate.test.js.map +1 -0
- package/build/__tests__/unit/verifyAction.test.js +2 -1
- package/build/__tests__/unit/verifyAction.test.js.map +1 -1
- package/build/__tests__/unit/waitForMeasurements.test.d.ts +2 -0
- package/build/__tests__/unit/waitForMeasurements.test.d.ts.map +1 -0
- package/build/__tests__/unit/waitForMeasurements.test.js +69 -0
- package/build/__tests__/unit/waitForMeasurements.test.js.map +1 -0
- package/build/core/android.d.ts +3 -1
- package/build/core/android.d.ts.map +1 -1
- package/build/core/android.js +5 -5
- package/build/core/android.js.map +1 -1
- package/build/core/appContext.d.ts +53 -0
- package/build/core/appContext.d.ts.map +1 -0
- package/build/core/appContext.js +172 -0
- package/build/core/appContext.js.map +1 -0
- package/build/core/appRequest.d.ts +21 -0
- package/build/core/appRequest.d.ts.map +1 -0
- package/build/core/appRequest.js +95 -0
- package/build/core/appRequest.js.map +1 -0
- package/build/core/bufferConfig.d.ts +5 -0
- package/build/core/bufferConfig.d.ts.map +1 -0
- package/build/core/bufferConfig.js +20 -0
- package/build/core/bufferConfig.js.map +1 -0
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +29 -9
- package/build/core/connection.js.map +1 -1
- package/build/core/debugGlobals.d.ts.map +1 -1
- package/build/core/debugGlobals.js +13 -0
- package/build/core/debugGlobals.js.map +1 -1
- package/build/core/deviceDiscovery.d.ts +5 -1
- package/build/core/deviceDiscovery.d.ts.map +1 -1
- package/build/core/deviceDiscovery.js +13 -2
- package/build/core/deviceDiscovery.js.map +1 -1
- package/build/core/deviceResolver.d.ts.map +1 -1
- package/build/core/deviceResolver.js +17 -2
- package/build/core/deviceResolver.js.map +1 -1
- package/build/core/epochRender.d.ts +19 -0
- package/build/core/epochRender.d.ts.map +1 -0
- package/build/core/epochRender.js +38 -0
- package/build/core/epochRender.js.map +1 -0
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +36 -91
- package/build/core/guides.js.map +1 -1
- package/build/core/index.d.ts +2 -3
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +4 -4
- package/build/core/index.js.map +1 -1
- package/build/core/inspector.d.ts +0 -39
- package/build/core/inspector.d.ts.map +1 -1
- package/build/core/inspector.js +1 -358
- package/build/core/inspector.js.map +1 -1
- package/build/core/ios.d.ts +14 -3
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +41 -17
- package/build/core/ios.js.map +1 -1
- package/build/core/jsExecute.d.ts +15 -0
- package/build/core/jsExecute.d.ts.map +1 -1
- package/build/core/jsExecute.js +136 -29
- package/build/core/jsExecute.js.map +1 -1
- package/build/core/logs.d.ts +12 -3
- package/build/core/logs.d.ts.map +1 -1
- package/build/core/logs.js +28 -5
- package/build/core/logs.js.map +1 -1
- package/build/core/metro.d.ts +2 -0
- package/build/core/metro.d.ts.map +1 -1
- package/build/core/metro.js +16 -8
- package/build/core/metro.js.map +1 -1
- package/build/core/moduleRegistry.d.ts +19 -0
- package/build/core/moduleRegistry.d.ts.map +1 -0
- package/build/core/moduleRegistry.js +67 -0
- package/build/core/moduleRegistry.js.map +1 -0
- package/build/core/nativeOnlyHints.d.ts.map +1 -1
- package/build/core/nativeOnlyHints.js +0 -2
- package/build/core/nativeOnlyHints.js.map +1 -1
- package/build/core/navigate.d.ts +46 -0
- package/build/core/navigate.d.ts.map +1 -0
- package/build/core/navigate.js +119 -0
- package/build/core/navigate.js.map +1 -0
- package/build/core/navigation.d.ts +66 -0
- package/build/core/navigation.d.ts.map +1 -0
- package/build/core/navigation.js +269 -0
- package/build/core/navigation.js.map +1 -0
- package/build/core/network.d.ts +12 -2
- package/build/core/network.d.ts.map +1 -1
- package/build/core/network.js +52 -12
- package/build/core/network.js.map +1 -1
- package/build/core/networkInterceptor.d.ts +1 -1
- package/build/core/networkInterceptor.d.ts.map +1 -1
- package/build/core/networkInterceptor.js +3 -2
- package/build/core/networkInterceptor.js.map +1 -1
- package/build/core/pressables.d.ts +33 -0
- package/build/core/pressables.d.ts.map +1 -1
- package/build/core/pressables.js +73 -4
- package/build/core/pressables.js.map +1 -1
- package/build/core/promiseHandles.d.ts +19 -0
- package/build/core/promiseHandles.d.ts.map +1 -0
- package/build/core/promiseHandles.js +58 -0
- package/build/core/promiseHandles.js.map +1 -0
- package/build/core/register.d.ts.map +1 -1
- package/build/core/register.js +1 -4
- package/build/core/register.js.map +1 -1
- package/build/core/sdkMirrorPoller.d.ts +31 -0
- package/build/core/sdkMirrorPoller.d.ts.map +1 -0
- package/build/core/sdkMirrorPoller.js +210 -0
- package/build/core/sdkMirrorPoller.js.map +1 -0
- package/build/core/state.d.ts +14 -0
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +48 -2
- package/build/core/state.js.map +1 -1
- package/build/core/toolHelpers.d.ts.map +1 -1
- package/build/core/toolHelpers.js +42 -10
- package/build/core/toolHelpers.js.map +1 -1
- package/build/core/truncate.d.ts +42 -0
- package/build/core/truncate.d.ts.map +1 -0
- package/build/core/truncate.js +169 -0
- package/build/core/truncate.js.map +1 -0
- package/build/core/types.d.ts +3 -0
- package/build/core/types.d.ts.map +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -2
- package/build/index.js.map +1 -1
- package/build/pro/coordinateMiss.d.ts +55 -0
- package/build/pro/coordinateMiss.d.ts.map +1 -0
- package/build/pro/coordinateMiss.js +122 -0
- package/build/pro/coordinateMiss.js.map +1 -0
- package/build/pro/tap.d.ts +8 -0
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +99 -11
- package/build/pro/tap.js.map +1 -1
- package/build/pro/verifyAction.d.ts +43 -2
- package/build/pro/verifyAction.d.ts.map +1 -1
- package/build/pro/verifyAction.js +95 -36
- package/build/pro/verifyAction.js.map +1 -1
- package/build/tools/_deviceArg.d.ts +17 -1
- package/build/tools/_deviceArg.d.ts.map +1 -1
- package/build/tools/_deviceArg.js +17 -1
- package/build/tools/_deviceArg.js.map +1 -1
- package/build/tools/bundleTools.d.ts.map +1 -1
- package/build/tools/bundleTools.js +20 -33
- package/build/tools/bundleTools.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +41 -219
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.d.ts.map +1 -1
- package/build/tools/connectionTools.js +17 -22
- package/build/tools/connectionTools.js.map +1 -1
- package/build/tools/deviceTools.d.ts.map +1 -1
- package/build/tools/deviceTools.js +13 -167
- package/build/tools/deviceTools.js.map +1 -1
- package/build/tools/executionTools.d.ts.map +1 -1
- package/build/tools/executionTools.js +63 -18
- package/build/tools/executionTools.js.map +1 -1
- package/build/tools/interactionTools.d.ts +6 -0
- package/build/tools/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +41 -56
- package/build/tools/interactionTools.js.map +1 -1
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +61 -80
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/metaTools.js +1 -1
- package/build/tools/metaTools.js.map +1 -1
- package/build/tools/navigationTools.d.ts +3 -0
- package/build/tools/navigationTools.d.ts.map +1 -0
- package/build/tools/navigationTools.js +60 -0
- package/build/tools/navigationTools.js.map +1 -0
- package/build/tools/networkTools.d.ts.map +1 -1
- package/build/tools/networkTools.js +44 -202
- package/build/tools/networkTools.js.map +1 -1
- package/build/tools/reduxTools.d.ts.map +1 -1
- package/build/tools/reduxTools.js +3 -2
- package/build/tools/reduxTools.js.map +1 -1
- package/build/tools/requestTools.d.ts +3 -0
- package/build/tools/requestTools.d.ts.map +1 -0
- package/build/tools/requestTools.js +79 -0
- package/build/tools/requestTools.js.map +1 -0
- package/build/tools/screenshotTools.d.ts.map +1 -1
- package/build/tools/screenshotTools.js +42 -25
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +1 -1
- package/tools.json +22 -78
- package/build/__tests__/unit/flowpoints.test.d.ts +0 -2
- package/build/__tests__/unit/flowpoints.test.d.ts.map +0 -1
- package/build/__tests__/unit/flowpoints.test.js +0 -126
- package/build/__tests__/unit/flowpoints.test.js.map +0 -1
- package/build/__tests__/unit/flowpointsQuery.test.d.ts +0 -2
- package/build/__tests__/unit/flowpointsQuery.test.d.ts.map +0 -1
- package/build/__tests__/unit/flowpointsQuery.test.js +0 -91
- package/build/__tests__/unit/flowpointsQuery.test.js.map +0 -1
- package/build/__tests__/unit/selectionPoller.test.d.ts +0 -2
- package/build/__tests__/unit/selectionPoller.test.d.ts.map +0 -1
- package/build/__tests__/unit/selectionPoller.test.js +0 -109
- package/build/__tests__/unit/selectionPoller.test.js.map +0 -1
- package/build/__tests__/unit/verifyFlow.test.d.ts +0 -2
- package/build/__tests__/unit/verifyFlow.test.d.ts.map +0 -1
- package/build/__tests__/unit/verifyFlow.test.js +0 -45
- package/build/__tests__/unit/verifyFlow.test.js.map +0 -1
- package/build/core/selectionPoller.d.ts +0 -13
- package/build/core/selectionPoller.d.ts.map +0 -1
- package/build/core/selectionPoller.js +0 -102
- package/build/core/selectionPoller.js.map +0 -1
- package/build/pro/flowpointTools.d.ts +0 -4
- package/build/pro/flowpointTools.d.ts.map +0 -1
- package/build/pro/flowpointTools.js +0 -266
- package/build/pro/flowpointTools.js.map +0 -1
- package/build/pro/flowpoints.d.ts +0 -86
- package/build/pro/flowpoints.d.ts.map +0 -1
- package/build/pro/flowpoints.js +0 -283
- package/build/pro/flowpoints.js.map +0 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
// Ordered loosest-to-tightest. The middle three are the budgets measured
|
|
2
|
+
// against astro-app's live 1,625,530-byte contentApi slice, which they reduced
|
|
3
|
+
// to 28,806 / 10,486 / 7,746 bytes respectively.
|
|
4
|
+
const BUDGET_LADDER = [
|
|
5
|
+
{ maxDepth: 8, maxArrayItems: 50, maxStringLength: 1000 },
|
|
6
|
+
{ maxDepth: 6, maxArrayItems: 20, maxStringLength: 400 },
|
|
7
|
+
{ maxDepth: 6, maxArrayItems: 2, maxStringLength: 60 },
|
|
8
|
+
{ maxDepth: 4, maxArrayItems: 3, maxStringLength: 80 },
|
|
9
|
+
{ maxDepth: 3, maxArrayItems: 5, maxStringLength: 100 },
|
|
10
|
+
{ maxDepth: 2, maxArrayItems: 2, maxStringLength: 40 },
|
|
11
|
+
{ maxDepth: 1, maxArrayItems: 1, maxStringLength: 20 }
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* Size of `value` as it will actually be rendered.
|
|
15
|
+
*
|
|
16
|
+
* `indent` must match the indentation the caller will serialise with —
|
|
17
|
+
* pretty-printing inflates output substantially, so measuring compact JSON and
|
|
18
|
+
* emitting indented JSON lets results exceed the budget they were bounded to.
|
|
19
|
+
*/
|
|
20
|
+
function byteLength(value, indent) {
|
|
21
|
+
try {
|
|
22
|
+
const json = JSON.stringify(value, null, indent);
|
|
23
|
+
return json === undefined ? 0 : json.length;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Circular or otherwise unserialisable — treat as over any budget so
|
|
27
|
+
// the caller falls through to a bounded walk that handles cycles.
|
|
28
|
+
return Number.MAX_SAFE_INTEGER;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function bound(value, budget, depth, seen) {
|
|
32
|
+
if (value === null || value === undefined)
|
|
33
|
+
return value;
|
|
34
|
+
const type = typeof value;
|
|
35
|
+
if (type === "string") {
|
|
36
|
+
const s = value;
|
|
37
|
+
if (s.length <= budget.maxStringLength)
|
|
38
|
+
return s;
|
|
39
|
+
return s.slice(0, budget.maxStringLength) + "…+" + (s.length - budget.maxStringLength);
|
|
40
|
+
}
|
|
41
|
+
if (type !== "object") {
|
|
42
|
+
// Functions and symbols are not JSON values; name them rather than dropping.
|
|
43
|
+
if (type === "function")
|
|
44
|
+
return "[Function]";
|
|
45
|
+
if (type === "symbol")
|
|
46
|
+
return String(value);
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
const obj = value;
|
|
50
|
+
if (seen.has(obj))
|
|
51
|
+
return "[Circular]";
|
|
52
|
+
if (Array.isArray(value)) {
|
|
53
|
+
if (depth >= budget.maxDepth)
|
|
54
|
+
return "[Array(" + value.length + ")]";
|
|
55
|
+
seen.add(obj);
|
|
56
|
+
const kept = value
|
|
57
|
+
.slice(0, budget.maxArrayItems)
|
|
58
|
+
.map((item) => bound(item, budget, depth + 1, seen));
|
|
59
|
+
if (value.length > budget.maxArrayItems) {
|
|
60
|
+
kept.push("…+" + (value.length - budget.maxArrayItems) + " more");
|
|
61
|
+
}
|
|
62
|
+
seen.delete(obj);
|
|
63
|
+
return kept;
|
|
64
|
+
}
|
|
65
|
+
const keys = Object.keys(obj);
|
|
66
|
+
if (depth >= budget.maxDepth)
|
|
67
|
+
return "{Object(" + keys.length + " keys)}";
|
|
68
|
+
seen.add(obj);
|
|
69
|
+
const out = {};
|
|
70
|
+
for (const key of keys) {
|
|
71
|
+
out[key] = bound(obj[key], budget, depth + 1, seen);
|
|
72
|
+
}
|
|
73
|
+
seen.delete(obj);
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Bound `value` so its serialised form fits within `maxBytes`.
|
|
78
|
+
*
|
|
79
|
+
* A value that already fits is returned untouched — identity matters because
|
|
80
|
+
* most reads are tiny (Boardwise's median redux read is 70 characters) and must
|
|
81
|
+
* not be reshaped. Otherwise budgets are tried loosest-first so the caller
|
|
82
|
+
* keeps as much structure as the target allows.
|
|
83
|
+
*/
|
|
84
|
+
export function truncateToBudget(value, maxBytes, explicit, indent = 0) {
|
|
85
|
+
const originalBytes = byteLength(value, indent);
|
|
86
|
+
const hasExplicit = explicit !== undefined && Object.keys(explicit).length > 0;
|
|
87
|
+
if (!hasExplicit && originalBytes <= maxBytes) {
|
|
88
|
+
return { value, truncated: false, appliedBudget: null, originalBytes, returnedBytes: originalBytes };
|
|
89
|
+
}
|
|
90
|
+
if (hasExplicit) {
|
|
91
|
+
const budget = { ...BUDGET_LADDER[0], ...explicit };
|
|
92
|
+
const boundedValue = bound(value, budget, 0, new Set());
|
|
93
|
+
const returnedBytes = byteLength(boundedValue, indent);
|
|
94
|
+
return {
|
|
95
|
+
value: boundedValue,
|
|
96
|
+
truncated: returnedBytes !== originalBytes,
|
|
97
|
+
appliedBudget: budget,
|
|
98
|
+
originalBytes,
|
|
99
|
+
returnedBytes
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
let last = null;
|
|
103
|
+
for (const budget of BUDGET_LADDER) {
|
|
104
|
+
const boundedValue = bound(value, budget, 0, new Set());
|
|
105
|
+
const bytes = byteLength(boundedValue, indent);
|
|
106
|
+
last = { value: boundedValue, budget, bytes };
|
|
107
|
+
if (bytes <= maxBytes)
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
const chosen = last;
|
|
111
|
+
return {
|
|
112
|
+
value: chosen.value,
|
|
113
|
+
truncated: true,
|
|
114
|
+
appliedBudget: chosen.budget,
|
|
115
|
+
originalBytes,
|
|
116
|
+
returnedBytes: chosen.bytes
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export const DEFAULT_MAX_BYTES = 25000;
|
|
120
|
+
/**
|
|
121
|
+
* Bound an already-serialised tool result.
|
|
122
|
+
*
|
|
123
|
+
* Results reach us as strings: JSON for objects, a plain scalar rendering
|
|
124
|
+
* otherwise. Re-parse JSON so bounding is structural — markers then carry real
|
|
125
|
+
* array lengths and key counts, which is what lets a caller decide the next,
|
|
126
|
+
* narrower read. Non-JSON text has no structure to exploit, so it is clipped.
|
|
127
|
+
*/
|
|
128
|
+
export function applyResultBudget(text, maxBytes = DEFAULT_MAX_BYTES, explicit) {
|
|
129
|
+
const originalBytes = text.length;
|
|
130
|
+
const hasExplicit = explicit !== undefined && Object.keys(explicit).length > 0;
|
|
131
|
+
if (!hasExplicit && originalBytes <= maxBytes) {
|
|
132
|
+
return {
|
|
133
|
+
text,
|
|
134
|
+
budget: { truncated: false, originalBytes, returnedBytes: originalBytes, appliedBudget: null }
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
let parsed;
|
|
138
|
+
let isJson = true;
|
|
139
|
+
try {
|
|
140
|
+
parsed = JSON.parse(text);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
isJson = false;
|
|
144
|
+
}
|
|
145
|
+
if (!isJson) {
|
|
146
|
+
// Reserve room for the marker so the result still honours maxBytes.
|
|
147
|
+
const keep = Math.max(0, maxBytes - 40);
|
|
148
|
+
const clipped = text.slice(0, keep) + "…+" + (originalBytes - keep);
|
|
149
|
+
return {
|
|
150
|
+
text: clipped,
|
|
151
|
+
budget: { truncated: true, originalBytes, returnedBytes: clipped.length, appliedBudget: null }
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// Measure at the same indentation we render with, or the ladder converges
|
|
155
|
+
// on a size we never emit.
|
|
156
|
+
const RENDER_INDENT = 2;
|
|
157
|
+
const result = truncateToBudget(parsed, maxBytes, explicit, RENDER_INDENT);
|
|
158
|
+
const rendered = JSON.stringify(result.value, null, RENDER_INDENT) ?? "";
|
|
159
|
+
return {
|
|
160
|
+
text: rendered,
|
|
161
|
+
budget: {
|
|
162
|
+
truncated: result.truncated,
|
|
163
|
+
originalBytes,
|
|
164
|
+
returnedBytes: rendered.length,
|
|
165
|
+
appliedBudget: result.appliedBudget
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=truncate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/core/truncate.ts"],"names":[],"mappings":"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"}
|
package/build/core/types.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface LogEntry {
|
|
|
5
5
|
message: string;
|
|
6
6
|
args?: unknown[];
|
|
7
7
|
seq: number;
|
|
8
|
+
epoch: number;
|
|
8
9
|
}
|
|
9
10
|
export interface DeviceInfo {
|
|
10
11
|
id: string;
|
|
@@ -101,6 +102,8 @@ export interface NetworkRequest {
|
|
|
101
102
|
};
|
|
102
103
|
error?: string;
|
|
103
104
|
completed: boolean;
|
|
105
|
+
epoch: number;
|
|
106
|
+
responseBody?: string;
|
|
104
107
|
}
|
|
105
108
|
export interface ConnectionState {
|
|
106
109
|
status: "connected" | "disconnected" | "reconnecting";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAG3B,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IAIjB,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAG3B,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IAIjB,GAAG,EAAE,MAAM,CAAC;IAIZ,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,SAAS,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAM9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAK/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAIlC,mBAAmB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5B,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC3B,WAAW,EAAE,KAAK,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IAIxB,eAAe,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CAC7C;AAGD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClG,OAAO,CAAC,EACF,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,MAAM,GACN,KAAK,GACL,KAAK,GACL,SAAS,GACT,SAAS,GACT,UAAU,GACV,WAAW,GACX,OAAO,GACP,OAAO,GACP,SAAS,GACT,YAAY,GACZ,aAAa,GACb,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,gBAAgB;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,YAAY,CAAC;CAC5B;AAGD,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,EAAE,CAAC,EAAE,OAAO,CAAC;CAChB;AAGD,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACJ,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACL;AAMD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAGrF,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IAEnB,KAAK,EAAE,MAAM,CAAC;IAGd,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;IACtD,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,aAAa,EAAE,CAAC;CACnC;AAGD,MAAM,WAAW,aAAa;IAC1B,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAGD,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAGD,MAAM,WAAW,cAAc;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CAC3C;AAGD,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;CACnC;AAGD,MAAM,WAAW,cAAc;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAI7B,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAMD,MAAM,WAAW,0BAA0B;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;CAC9B;AAID,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,0BAA0B,EAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAkC,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAkC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmBlF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -14,13 +14,14 @@ import { registerReduxTools } from "./tools/reduxTools.js";
|
|
|
14
14
|
import { registerExecutionTools } from "./tools/executionTools.js";
|
|
15
15
|
import { registerLogTools } from "./tools/logTools.js";
|
|
16
16
|
import { registerNetworkTools } from "./tools/networkTools.js";
|
|
17
|
+
import { registerRequestTools } from "./tools/requestTools.js";
|
|
18
|
+
import { registerNavigationTools } from "./tools/navigationTools.js";
|
|
17
19
|
import { registerBundleTools } from "./tools/bundleTools.js";
|
|
18
20
|
import { registerDeviceTools } from "./tools/deviceTools.js";
|
|
19
21
|
import { registerConnectionTools } from "./tools/connectionTools.js";
|
|
20
22
|
import { registerScreenshotTools } from "./tools/screenshotTools.js";
|
|
21
23
|
import { registerInteractionTools } from "./tools/interactionTools.js";
|
|
22
24
|
import { registerComponentTools } from "./tools/componentTools.js";
|
|
23
|
-
import { registerFlowpointTools } from "./pro/flowpointTools.js";
|
|
24
25
|
// Re-export so tests (src/__tests__/unit/toolDescriptions.test.ts) can enumerate
|
|
25
26
|
// registered tools without booting the server.
|
|
26
27
|
export { toolRegistry };
|
|
@@ -46,7 +47,8 @@ registerReduxTools(server);
|
|
|
46
47
|
registerExecutionTools(server);
|
|
47
48
|
registerLogTools(server);
|
|
48
49
|
registerNetworkTools(server);
|
|
49
|
-
|
|
50
|
+
registerRequestTools(server);
|
|
51
|
+
registerNavigationTools(server);
|
|
50
52
|
registerBundleTools(server);
|
|
51
53
|
registerDeviceTools(server);
|
|
52
54
|
registerConnectionTools(server);
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EACH,aAAa,EACb,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,8BAA8B,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EACH,aAAa,EACb,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,8BAA8B,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,iFAAiF;AACjF,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,MAAM,MAAM,GAAG,IAAI,SAAS,CACxB;IACI,IAAI,EAAE,2BAA2B;IACjC,OAAO,EAAE,OAAO;CACnB,EACD;IACI,YAAY,EAAE;QACV,oCAAoC;QACpC,EAAE;QACF,aAAa;QACb,EAAE;QACF,kGAAkG;KACrG,CAAC,IAAI,CAAC,IAAI,CAAC;CACf,CACJ,CAAC;AACF,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAEvC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,iBAAiB,CAAC,MAAM,EAAE;IACtB,OAAO,EAAE,SAAS,EAAE;IACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;CAC5C,CAAC,CAAC;AACH,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAE/B,KAAK,UAAU,IAAI;IACf,aAAa,EAAE,CAAC;IAChB,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEvC,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,mEAAmE;IACnE,0EAA0E;IAC1E,8EAA8E;IAC9E,sEAAsE;IAEtE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAEnE,IAAI,OAAO,EAAE,CAAC;QACV,qDAAqD;QACrD,sFAAsF;QACtF,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAChD,kBAAkB,EAAE,SAAS;SAChC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,oBAAoB,QAAQ,EAAE,CAAC,CAAC;YAEnE,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxC,OAAO;YACX,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,2DAA2D,QAAQ,MAAM,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,gDAAgD;QAChD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,2EAA2E;AAC3E,wEAAwE;AACxE,iEAAiE;AACjE,iDAAiD;AACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IACzG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,mFAAmF;AACnF,SAAS,gBAAgB;IACrB,oBAAoB,EAAE,CAAC;IACvB,2BAA2B,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACL,sCAAsC;QAC1C,CAAC;QACD,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,0BAA0B,EAAE,CAAC;IAC7B,uBAAuB,EAAE,CAAC;IAC1B,uBAAuB,EAAE,CAAC;IAC1B,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ScreenState, ScreenStatePressable } from "../core/screenState.js";
|
|
2
|
+
/**
|
|
3
|
+
* Explain why a coordinate tap produced no visual change.
|
|
4
|
+
*
|
|
5
|
+
* Coordinate taps are the second-highest-volume strategy and win 99.6% of the
|
|
6
|
+
* time — "win" only meaning the touch dispatched. ~15% of them change nothing,
|
|
7
|
+
* because the coordinates were estimated from a screenshot and landed in
|
|
8
|
+
* padding, on a label, or on an element sitting behind an open sheet. Until now
|
|
9
|
+
* the agent got "no visual change detected" and nothing else, so its only move
|
|
10
|
+
* was to screenshot and guess again.
|
|
11
|
+
*
|
|
12
|
+
* The screen-state engine already knows what occupies every point and which
|
|
13
|
+
* elements an overlay blocks. This turns that into one actionable sentence.
|
|
14
|
+
*/
|
|
15
|
+
export interface CoordinateMissTarget {
|
|
16
|
+
label: string | null;
|
|
17
|
+
component?: string | null;
|
|
18
|
+
testID: string | null;
|
|
19
|
+
/** Center in the SAME coordinate space the diagnosis was asked for. */
|
|
20
|
+
center: {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
};
|
|
24
|
+
/** Edge distance from the tapped point, in that same space. */
|
|
25
|
+
distance: number;
|
|
26
|
+
/** Where the target sits relative to the tapped point, e.g. "below". */
|
|
27
|
+
direction: string;
|
|
28
|
+
blockedByOverlay?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface CoordinateMissDiagnosis {
|
|
31
|
+
/** What occupied the tapped point, in plain words. */
|
|
32
|
+
hit: string;
|
|
33
|
+
/** Closest element the caller could tap instead. */
|
|
34
|
+
nearest?: CoordinateMissTarget;
|
|
35
|
+
/** True when the point landed on something an overlay covers. */
|
|
36
|
+
blockedByOverlay: boolean;
|
|
37
|
+
/** One-line, agent-facing next step. */
|
|
38
|
+
suggestion: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Flatten root pressables and every overlay's pressables into one list.
|
|
42
|
+
* Overlay members are reachable; root members an overlay covers are not.
|
|
43
|
+
*/
|
|
44
|
+
export declare function collectPressables(state: ScreenState): ScreenStatePressable[];
|
|
45
|
+
/**
|
|
46
|
+
* @param point the tapped point, in the same space as the screen state's bounds
|
|
47
|
+
* @param toReportSpace maps a screen-state coordinate into the space the caller
|
|
48
|
+
* used for its x/y (screenshot pixels), so suggested coordinates are directly
|
|
49
|
+
* re-tappable without the agent doing any conversion.
|
|
50
|
+
*/
|
|
51
|
+
export declare function explainCoordinateMiss(point: {
|
|
52
|
+
x: number;
|
|
53
|
+
y: number;
|
|
54
|
+
}, state: ScreenState, toReportSpace?: (v: number) => number): CoordinateMissDiagnosis | null;
|
|
55
|
+
//# sourceMappingURL=coordinateMiss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinateMiss.d.ts","sourceRoot":"","sources":["../../src/pro/coordinateMiss.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EACX,oBAAoB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uEAAuE;IACvE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACpC,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,iEAAiE;IACjE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACtB;AA0CD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,oBAAoB,EAAE,CAM5E;AAUD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,KAAK,EAAE,WAAW,EAClB,aAAa,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAiB,GAChD,uBAAuB,GAAG,IAAI,CA+DhC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
function rectDistance(point, b) {
|
|
2
|
+
const dx = Math.max(b.x - point.x, 0, point.x - (b.x + b.width));
|
|
3
|
+
const dy = Math.max(b.y - point.y, 0, point.y - (b.y + b.height));
|
|
4
|
+
return Math.round(Math.sqrt(dx * dx + dy * dy));
|
|
5
|
+
}
|
|
6
|
+
function contains(point, b) {
|
|
7
|
+
return (point.x >= b.x &&
|
|
8
|
+
point.x <= b.x + b.width &&
|
|
9
|
+
point.y >= b.y &&
|
|
10
|
+
point.y <= b.y + b.height);
|
|
11
|
+
}
|
|
12
|
+
function describeDirection(point, center) {
|
|
13
|
+
const dx = center.x - point.x;
|
|
14
|
+
const dy = center.y - point.y;
|
|
15
|
+
if (Math.abs(dy) >= Math.abs(dx))
|
|
16
|
+
return dy >= 0 ? "below" : "above";
|
|
17
|
+
return dx >= 0 ? "to the right" : "to the left";
|
|
18
|
+
}
|
|
19
|
+
function nameOf(p) {
|
|
20
|
+
const parts = [];
|
|
21
|
+
if (p.component)
|
|
22
|
+
parts.push(`<${p.component} />`);
|
|
23
|
+
const text = p.label || p.nearbyText || p.icon;
|
|
24
|
+
if (text)
|
|
25
|
+
parts.push(`"${text}"`);
|
|
26
|
+
if (p.testID)
|
|
27
|
+
parts.push(`testID="${p.testID}"`);
|
|
28
|
+
return parts.length > 0 ? parts.join(" ") : "an unlabelled pressable";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Flatten root pressables and every overlay's pressables into one list.
|
|
32
|
+
* Overlay members are reachable; root members an overlay covers are not.
|
|
33
|
+
*/
|
|
34
|
+
export function collectPressables(state) {
|
|
35
|
+
const all = [...(state.pressables ?? [])];
|
|
36
|
+
for (const overlay of state.overlays ?? []) {
|
|
37
|
+
all.push(...(overlay.pressables ?? []));
|
|
38
|
+
}
|
|
39
|
+
return all;
|
|
40
|
+
}
|
|
41
|
+
function collectTexts(state) {
|
|
42
|
+
const all = [...(state.texts ?? [])];
|
|
43
|
+
for (const overlay of state.overlays ?? []) {
|
|
44
|
+
all.push(...(overlay.texts ?? []));
|
|
45
|
+
}
|
|
46
|
+
return all;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @param point the tapped point, in the same space as the screen state's bounds
|
|
50
|
+
* @param toReportSpace maps a screen-state coordinate into the space the caller
|
|
51
|
+
* used for its x/y (screenshot pixels), so suggested coordinates are directly
|
|
52
|
+
* re-tappable without the agent doing any conversion.
|
|
53
|
+
*/
|
|
54
|
+
export function explainCoordinateMiss(point, state, toReportSpace = (v) => v) {
|
|
55
|
+
const pressables = collectPressables(state);
|
|
56
|
+
const texts = collectTexts(state);
|
|
57
|
+
if (pressables.length === 0 && texts.length === 0)
|
|
58
|
+
return null;
|
|
59
|
+
const reachable = pressables.filter((p) => !p.blockedByOverlay);
|
|
60
|
+
const toTarget = (p) => ({
|
|
61
|
+
label: p.label,
|
|
62
|
+
component: p.component,
|
|
63
|
+
testID: p.testID,
|
|
64
|
+
center: { x: toReportSpace(p.center.x), y: toReportSpace(p.center.y) },
|
|
65
|
+
distance: toReportSpace(rectDistance(point, p.bounds)),
|
|
66
|
+
direction: describeDirection(point, p.center),
|
|
67
|
+
blockedByOverlay: p.blockedByOverlay,
|
|
68
|
+
});
|
|
69
|
+
const nearestReachable = reachable
|
|
70
|
+
.map(toTarget)
|
|
71
|
+
.sort((a, b) => a.distance - b.distance)[0];
|
|
72
|
+
// 1. The point is inside a REACHABLE pressable — the coordinates were right,
|
|
73
|
+
// so the handler is the suspect, not the aim. Checked before the blocked
|
|
74
|
+
// case because an overlay button and the element it covers can share a
|
|
75
|
+
// point; the touch goes to the overlay, so that is what we must report.
|
|
76
|
+
const pressableHit = reachable.find((p) => contains(point, p.bounds));
|
|
77
|
+
if (pressableHit) {
|
|
78
|
+
return {
|
|
79
|
+
hit: nameOf(pressableHit),
|
|
80
|
+
blockedByOverlay: false,
|
|
81
|
+
suggestion: `The tap landed inside ${nameOf(pressableHit)}, so the coordinates were correct — the press produced no visual change. Check the element's onPress handler, or use burst=true if the feedback is transient.`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// 2. The point is inside a pressable that an overlay covers — the single
|
|
85
|
+
// most misleading case, because the pixels are visible on screen.
|
|
86
|
+
const blockedHit = pressables.find((p) => p.blockedByOverlay && contains(point, p.bounds));
|
|
87
|
+
if (blockedHit) {
|
|
88
|
+
const overlayType = state.overlays?.[0]?.type ?? "overlay";
|
|
89
|
+
return {
|
|
90
|
+
hit: `${nameOf(blockedHit)} — covered by an open ${overlayType}`,
|
|
91
|
+
nearest: nearestReachable,
|
|
92
|
+
blockedByOverlay: true,
|
|
93
|
+
suggestion: nearestReachable
|
|
94
|
+
? `That element is behind an open ${overlayType} and cannot receive taps. Dismiss the ${overlayType} first, or tap ${nameOf2(nearestReachable)} at (${nearestReachable.center.x}, ${nearestReachable.center.y}).`
|
|
95
|
+
: `That element is behind an open ${overlayType} and cannot receive taps. Dismiss the ${overlayType} first.`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// 3. The point is on text or empty space — the aim missed.
|
|
99
|
+
const textHit = texts.find((t) => contains(point, t.bounds));
|
|
100
|
+
const hit = textHit
|
|
101
|
+
? `text "${textHit.text.slice(0, 60)}"`
|
|
102
|
+
: "no element (empty space)";
|
|
103
|
+
return {
|
|
104
|
+
hit,
|
|
105
|
+
nearest: nearestReachable,
|
|
106
|
+
blockedByOverlay: false,
|
|
107
|
+
suggestion: nearestReachable
|
|
108
|
+
? `Nothing pressable at that point — it hit ${hit}. Nearest tappable element is ${nameOf2(nearestReachable)} at (${nearestReachable.center.x}, ${nearestReachable.center.y}), ${nearestReachable.distance}px ${nearestReachable.direction}. Prefer tap(testID=) / tap(text=) over estimating coordinates from a screenshot.`
|
|
109
|
+
: `Nothing pressable at that point — it hit ${hit}, and no reachable pressable was found on screen.`,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function nameOf2(t) {
|
|
113
|
+
const parts = [];
|
|
114
|
+
if (t.component)
|
|
115
|
+
parts.push(`<${t.component} />`);
|
|
116
|
+
if (t.label)
|
|
117
|
+
parts.push(`"${t.label}"`);
|
|
118
|
+
if (t.testID)
|
|
119
|
+
parts.push(`testID="${t.testID}"`);
|
|
120
|
+
return parts.length > 0 ? parts.join(" ") : "an unlabelled pressable";
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=coordinateMiss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinateMiss.js","sourceRoot":"","sources":["../../src/pro/coordinateMiss.ts"],"names":[],"mappings":"AA4CA,SAAS,YAAY,CACjB,KAA+B,EAC/B,CAA0D;IAE1D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CACb,KAA+B,EAC/B,CAA0D;IAE1D,OAAO,CACH,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;QACxB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAC5B,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CACtB,KAA+B,EAC/B,MAAgC;IAEhC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;AACpD,CAAC;AAED,SAAS,MAAM,CAAC,CAAuB;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC;IAC/C,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAChD,MAAM,GAAG,GAA2B,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAkB;IACpC,MAAM,GAAG,GAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACjC,KAA+B,EAC/B,KAAkB,EAClB,gBAAuC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,CAAC,CAAuB,EAAwB,EAAE,CAAC,CAAC;QACjE,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACtE,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,SAAS,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7C,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;KACvC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,SAAS;SAC7B,GAAG,CAAC,QAAQ,CAAC;SACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,6EAA6E;IAC7E,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,IAAI,YAAY,EAAE,CAAC;QACf,OAAO;YACH,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC;YACzB,gBAAgB,EAAE,KAAK;YACvB,UAAU,EAAE,yBAAyB,MAAM,CAAC,YAAY,CAAC,+JAA+J;SAC3N,CAAC;IACN,CAAC;IAED,yEAAyE;IACzE,qEAAqE;IACrE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;QAC3D,OAAO;YACH,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,yBAAyB,WAAW,EAAE;YAChE,OAAO,EAAE,gBAAgB;YACzB,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,gBAAgB;gBACxB,CAAC,CAAC,kCAAkC,WAAW,yCAAyC,WAAW,kBAAkB,OAAO,CAAC,gBAAgB,CAAC,QAAQ,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI;gBACjN,CAAC,CAAC,kCAAkC,WAAW,yCAAyC,WAAW,SAAS;SACnH,CAAC;IACN,CAAC;IAED,2DAA2D;IAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,OAAO;QACf,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;QACvC,CAAC,CAAC,0BAA0B,CAAC;IAEjC,OAAO;QACH,GAAG;QACH,OAAO,EAAE,gBAAgB;QACzB,gBAAgB,EAAE,KAAK;QACvB,UAAU,EAAE,gBAAgB;YACxB,CAAC,CAAC,4CAA4C,GAAG,iCAAiC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,MAAM,gBAAgB,CAAC,SAAS,mFAAmF;YAC5T,CAAC,CAAC,4CAA4C,GAAG,mDAAmD;KAC3G,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAC,CAAuB;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC;AAC1E,CAAC"}
|
package/build/pro/tap.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CoordinateMissDiagnosis } from "./coordinateMiss.js";
|
|
1
2
|
import type { OCRResult, OCRWord } from "../core/ocr.js";
|
|
2
3
|
export type TapStrategy = "auto" | "fiber" | "accessibility" | "ocr" | "coordinate";
|
|
3
4
|
export interface TapQuery {
|
|
@@ -117,6 +118,13 @@ export interface TapResult {
|
|
|
117
118
|
fiberPressableCount?: string;
|
|
118
119
|
accessibilityMatchCount?: string;
|
|
119
120
|
appRoute?: string;
|
|
121
|
+
/**
|
|
122
|
+
* Why a coordinate tap changed nothing: what occupied the point, whether an
|
|
123
|
+
* overlay covers it, and the nearest reachable pressable with re-tappable
|
|
124
|
+
* coordinates. Populated only on unmeaningful coordinate taps with a live
|
|
125
|
+
* Metro connection.
|
|
126
|
+
*/
|
|
127
|
+
missDiagnosis?: CoordinateMissDiagnosis;
|
|
120
128
|
}
|
|
121
129
|
export declare function buildQuery(options: TapOptions): TapQuery;
|
|
122
130
|
/**
|
package/build/pro/tap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/pro/tap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/pro/tap.ts"],"names":[],"mappings":"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"}
|