execbro 2.3.0 → 2.6.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 +2 -0
- package/build/__tests__/helpers/fake-cdp-server.d.ts +0 -12
- package/build/__tests__/helpers/fake-cdp-server.d.ts.map +1 -1
- package/build/__tests__/helpers/fake-cdp-server.js +0 -22
- package/build/__tests__/helpers/fake-cdp-server.js.map +1 -1
- package/build/__tests__/helpers/tap-test-helpers.d.ts +0 -23
- package/build/__tests__/helpers/tap-test-helpers.d.ts.map +1 -1
- package/build/__tests__/helpers/tap-test-helpers.js +2 -29
- package/build/__tests__/helpers/tap-test-helpers.js.map +1 -1
- package/build/__tests__/integration/auto-reconnect.test.js +4 -14
- package/build/__tests__/integration/auto-reconnect.test.js.map +1 -1
- package/build/__tests__/integration/connection-health.test.js +1 -10
- package/build/__tests__/integration/connection-health.test.js.map +1 -1
- package/build/__tests__/integration/execute-in-app.test.js +1 -11
- package/build/__tests__/integration/execute-in-app.test.js.map +1 -1
- package/build/__tests__/integration/native-logs.test.js +0 -5
- package/build/__tests__/integration/native-logs.test.js.map +1 -1
- package/build/__tests__/integration/per-call-timeout.test.js +1 -5
- package/build/__tests__/integration/per-call-timeout.test.js.map +1 -1
- package/build/__tests__/integration/socket-close-midflight.test.js +2 -12
- package/build/__tests__/integration/socket-close-midflight.test.js.map +1 -1
- package/build/__tests__/integration/stale-target-probe.test.js +2 -17
- package/build/__tests__/integration/stale-target-probe.test.js.map +1 -1
- package/build/__tests__/integration/tap-strategies.test.js +2 -36
- package/build/__tests__/integration/tap-strategies.test.js.map +1 -1
- package/build/__tests__/integration/text-input.test.js +0 -39
- package/build/__tests__/integration/text-input.test.js.map +1 -1
- package/build/__tests__/integration/tools.test.js +1 -7
- package/build/__tests__/integration/tools.test.js.map +1 -1
- package/build/__tests__/setup.js +0 -2
- package/build/__tests__/setup.js.map +1 -1
- package/build/__tests__/unit/androidEmulatorAvds.test.js +0 -10
- package/build/__tests__/unit/androidEmulatorAvds.test.js.map +1 -1
- package/build/__tests__/unit/androidPinch.test.d.ts +2 -0
- package/build/__tests__/unit/androidPinch.test.d.ts.map +1 -0
- package/build/__tests__/unit/androidPinch.test.js +119 -0
- package/build/__tests__/unit/androidPinch.test.js.map +1 -0
- package/build/__tests__/unit/appContext.test.js +0 -2
- package/build/__tests__/unit/appContext.test.js.map +1 -1
- package/build/__tests__/unit/appRequest.test.js +0 -3
- package/build/__tests__/unit/appRequest.test.js.map +1 -1
- package/build/__tests__/unit/buildToken.test.js +0 -6
- package/build/__tests__/unit/buildToken.test.js.map +1 -1
- package/build/__tests__/unit/burst.test.js +0 -1
- package/build/__tests__/unit/burst.test.js.map +1 -1
- package/build/__tests__/unit/clearLogsNative.test.js +0 -8
- package/build/__tests__/unit/clearLogsNative.test.js.map +1 -1
- package/build/__tests__/unit/componentFormatNaming.test.js +0 -13
- package/build/__tests__/unit/componentFormatNaming.test.js.map +1 -1
- package/build/__tests__/unit/componentSource.test.js +0 -4
- package/build/__tests__/unit/componentSource.test.js.map +1 -1
- package/build/__tests__/unit/componentSourceResolve.test.js +0 -1
- package/build/__tests__/unit/componentSourceResolve.test.js.map +1 -1
- package/build/__tests__/unit/contextWiring.test.js +0 -3
- package/build/__tests__/unit/contextWiring.test.js.map +1 -1
- package/build/__tests__/unit/coordinateMiss.test.js +0 -16
- package/build/__tests__/unit/coordinateMiss.test.js.map +1 -1
- package/build/__tests__/unit/deviceDiscovery.test.js +0 -4
- package/build/__tests__/unit/deviceDiscovery.test.js.map +1 -1
- package/build/__tests__/unit/deviceResolution.test.js +0 -2
- package/build/__tests__/unit/deviceResolution.test.js.map +1 -1
- package/build/__tests__/unit/deviceResolver.test.js +0 -1
- package/build/__tests__/unit/deviceResolver.test.js.map +1 -1
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js +0 -8
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js.map +1 -1
- package/build/__tests__/unit/emulatorBridge.test.d.ts +2 -0
- package/build/__tests__/unit/emulatorBridge.test.d.ts.map +1 -0
- package/build/__tests__/unit/emulatorBridge.test.js +76 -0
- package/build/__tests__/unit/emulatorBridge.test.js.map +1 -0
- package/build/__tests__/unit/emulatorGrpc.test.d.ts +2 -0
- package/build/__tests__/unit/emulatorGrpc.test.d.ts.map +1 -0
- package/build/__tests__/unit/emulatorGrpc.test.js +33 -0
- package/build/__tests__/unit/emulatorGrpc.test.js.map +1 -0
- package/build/__tests__/unit/epochRender.test.js +0 -3
- package/build/__tests__/unit/epochRender.test.js.map +1 -1
- package/build/__tests__/unit/errorCategorization.test.js +0 -18
- package/build/__tests__/unit/errorCategorization.test.js.map +1 -1
- package/build/__tests__/unit/exec.test.js +0 -1
- package/build/__tests__/unit/exec.test.js.map +1 -1
- package/build/__tests__/unit/executor.test.js +0 -15
- package/build/__tests__/unit/executor.test.js.map +1 -1
- package/build/__tests__/unit/findElementTreeReuse.test.js +0 -12
- package/build/__tests__/unit/findElementTreeReuse.test.js.map +1 -1
- package/build/__tests__/unit/fingerprint.test.js +0 -4
- package/build/__tests__/unit/fingerprint.test.js.map +1 -1
- package/build/__tests__/unit/focusedInputTools.test.js +0 -4
- package/build/__tests__/unit/focusedInputTools.test.js.map +1 -1
- package/build/__tests__/unit/getLogsEmptyContract.test.js +0 -30
- package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -1
- package/build/__tests__/unit/getLogsNativeSource.test.js +0 -22
- package/build/__tests__/unit/getLogsNativeSource.test.js.map +1 -1
- package/build/__tests__/unit/graphqlOperation.test.d.ts +2 -0
- package/build/__tests__/unit/graphqlOperation.test.d.ts.map +1 -0
- package/build/__tests__/unit/graphqlOperation.test.js +107 -0
- package/build/__tests__/unit/graphqlOperation.test.js.map +1 -0
- package/build/__tests__/unit/inputTarget.test.js +0 -16
- package/build/__tests__/unit/inputTarget.test.js.map +1 -1
- package/build/__tests__/unit/inputTextTool.test.js +0 -3
- package/build/__tests__/unit/inputTextTool.test.js.map +1 -1
- package/build/__tests__/unit/jsLogEvents.test.js +0 -3
- package/build/__tests__/unit/jsLogEvents.test.js.map +1 -1
- package/build/__tests__/unit/keyboardMetrics.test.js +0 -2
- package/build/__tests__/unit/keyboardMetrics.test.js.map +1 -1
- package/build/__tests__/unit/keyboardRaise.test.js +0 -2
- package/build/__tests__/unit/keyboardRaise.test.js.map +1 -1
- package/build/__tests__/unit/licenseGrace.test.js +1 -4
- package/build/__tests__/unit/licenseGrace.test.js.map +1 -1
- package/build/__tests__/unit/logEventFormat.test.js +0 -27
- package/build/__tests__/unit/logEventFormat.test.js.map +1 -1
- package/build/__tests__/unit/logEvents.test.js +1 -5
- package/build/__tests__/unit/logEvents.test.js.map +1 -1
- package/build/__tests__/unit/logGrouping.test.js +0 -2
- package/build/__tests__/unit/logGrouping.test.js.map +1 -1
- package/build/__tests__/unit/logOwnership.test.js +0 -11
- package/build/__tests__/unit/logOwnership.test.js.map +1 -1
- package/build/__tests__/unit/logRelevance.test.js +0 -6
- package/build/__tests__/unit/logRelevance.test.js.map +1 -1
- package/build/__tests__/unit/logSourceAndroid.test.js +0 -4
- package/build/__tests__/unit/logSourceAndroid.test.js.map +1 -1
- package/build/__tests__/unit/logSourceIos.test.js +0 -5
- package/build/__tests__/unit/logSourceIos.test.js.map +1 -1
- package/build/__tests__/unit/logs.test.js +0 -1
- package/build/__tests__/unit/logs.test.js.map +1 -1
- package/build/__tests__/unit/measureComponentTools.test.js +0 -1
- package/build/__tests__/unit/measureComponentTools.test.js.map +1 -1
- package/build/__tests__/unit/metro.test.js +0 -2
- package/build/__tests__/unit/metro.test.js.map +1 -1
- package/build/__tests__/unit/nativeInputValue.test.js +0 -4
- package/build/__tests__/unit/nativeInputValue.test.js.map +1 -1
- package/build/__tests__/unit/nativeLogs.test.js +1 -23
- package/build/__tests__/unit/nativeLogs.test.js.map +1 -1
- package/build/__tests__/unit/navigateVerify.test.js +0 -6
- package/build/__tests__/unit/navigateVerify.test.js.map +1 -1
- package/build/__tests__/unit/navigation.test.js +0 -5
- package/build/__tests__/unit/navigation.test.js.map +1 -1
- package/build/__tests__/unit/networkInterceptor.test.js +0 -2
- package/build/__tests__/unit/networkInterceptor.test.js.map +1 -1
- package/build/__tests__/unit/overlayGuard.test.d.ts +2 -0
- package/build/__tests__/unit/overlayGuard.test.d.ts.map +1 -0
- package/build/__tests__/unit/overlayGuard.test.js +123 -0
- package/build/__tests__/unit/overlayGuard.test.js.map +1 -0
- package/build/__tests__/unit/pendingExecutions.test.js +0 -6
- package/build/__tests__/unit/pendingExecutions.test.js.map +1 -1
- package/build/__tests__/unit/pinchGeometry.test.d.ts +2 -0
- package/build/__tests__/unit/pinchGeometry.test.d.ts.map +1 -0
- package/build/__tests__/unit/pinchGeometry.test.js +139 -0
- package/build/__tests__/unit/pinchGeometry.test.js.map +1 -0
- package/build/__tests__/unit/pinchTool.test.d.ts +2 -0
- package/build/__tests__/unit/pinchTool.test.d.ts.map +1 -0
- package/build/__tests__/unit/pinchTool.test.js +39 -0
- package/build/__tests__/unit/pinchTool.test.js.map +1 -0
- package/build/__tests__/unit/probe.test.js +0 -1
- package/build/__tests__/unit/probe.test.js.map +1 -1
- package/build/__tests__/unit/projectMemory.test.js +6 -7
- package/build/__tests__/unit/projectMemory.test.js.map +1 -1
- package/build/__tests__/unit/projectStore.test.js +2 -2
- package/build/__tests__/unit/projectStore.test.js.map +1 -1
- package/build/__tests__/unit/reloadAppAutoConnect.test.js +0 -9
- package/build/__tests__/unit/reloadAppAutoConnect.test.js.map +1 -1
- package/build/__tests__/unit/rnGlobalsBootstrap.test.js +3 -3
- package/build/__tests__/unit/rnGlobalsBootstrap.test.js.map +1 -1
- package/build/__tests__/unit/routeHistory.test.d.ts +2 -0
- package/build/__tests__/unit/routeHistory.test.d.ts.map +1 -0
- package/build/__tests__/unit/routeHistory.test.js +136 -0
- package/build/__tests__/unit/routeHistory.test.js.map +1 -0
- package/build/__tests__/unit/screenSpace.test.js +30 -13
- package/build/__tests__/unit/screenSpace.test.js.map +1 -1
- package/build/__tests__/unit/screenState.test.js +3 -6
- package/build/__tests__/unit/screenState.test.js.map +1 -1
- package/build/__tests__/unit/screenStateInputValue.test.js +0 -7
- package/build/__tests__/unit/screenStateInputValue.test.js.map +1 -1
- package/build/__tests__/unit/screenStateKeyboard.test.js +0 -1
- package/build/__tests__/unit/screenStateKeyboard.test.js.map +1 -1
- package/build/__tests__/unit/screenshot-diff.test.js +0 -6
- package/build/__tests__/unit/screenshot-diff.test.js.map +1 -1
- package/build/__tests__/unit/sdkMirrorPoller.test.js +0 -8
- package/build/__tests__/unit/sdkMirrorPoller.test.js.map +1 -1
- package/build/__tests__/unit/settleAndDiff.test.js +0 -11
- package/build/__tests__/unit/settleAndDiff.test.js.map +1 -1
- package/build/__tests__/unit/signedVerdict.test.js +0 -5
- package/build/__tests__/unit/signedVerdict.test.js.map +1 -1
- package/build/__tests__/unit/swipeDirection.test.js +6 -9
- package/build/__tests__/unit/swipeDirection.test.js.map +1 -1
- package/build/__tests__/unit/symbolicate.test.js +0 -1
- package/build/__tests__/unit/symbolicate.test.js.map +1 -1
- package/build/__tests__/unit/tap.test.js +2 -40
- package/build/__tests__/unit/tap.test.js.map +1 -1
- package/build/__tests__/unit/textEntry.test.js +0 -27
- package/build/__tests__/unit/textEntry.test.js.map +1 -1
- package/build/__tests__/unit/toolDescriptions.test.js +0 -40
- package/build/__tests__/unit/toolDescriptions.test.js.map +1 -1
- package/build/__tests__/unit/toolsJson.test.js +0 -10
- package/build/__tests__/unit/toolsJson.test.js.map +1 -1
- package/build/__tests__/unit/transportClassify.test.js +0 -20
- package/build/__tests__/unit/transportClassify.test.js.map +1 -1
- package/build/__tests__/unit/truncate.test.js +0 -5
- package/build/__tests__/unit/truncate.test.js.map +1 -1
- package/build/__tests__/unit/usageCache.test.js +0 -3
- package/build/__tests__/unit/usageCache.test.js.map +1 -1
- package/build/__tests__/unit/usageGate.test.js +1 -1
- package/build/__tests__/unit/usageGate.test.js.map +1 -1
- package/build/__tests__/unit/visibility.test.js +0 -8
- package/build/__tests__/unit/visibility.test.js.map +1 -1
- package/build/__tests__/unit/waitForMeasurements.test.js +2 -7
- package/build/__tests__/unit/waitForMeasurements.test.js.map +1 -1
- package/build/bin.js +0 -18
- package/build/bin.js.map +1 -1
- package/build/core/android.d.ts +0 -120
- package/build/core/android.d.ts.map +1 -1
- package/build/core/android.js +4 -259
- package/build/core/android.js.map +1 -1
- package/build/core/androidPinch.d.ts +21 -0
- package/build/core/androidPinch.d.ts.map +1 -0
- package/build/core/androidPinch.js +72 -0
- package/build/core/androidPinch.js.map +1 -0
- package/build/core/androidSystemBars.d.ts +7 -0
- package/build/core/androidSystemBars.d.ts.map +1 -0
- package/build/core/androidSystemBars.js +21 -0
- package/build/core/androidSystemBars.js.map +1 -0
- package/build/core/appContext.d.ts +0 -50
- package/build/core/appContext.d.ts.map +1 -1
- package/build/core/appContext.js +0 -50
- package/build/core/appContext.js.map +1 -1
- package/build/core/appDetection.d.ts +0 -16
- package/build/core/appDetection.d.ts.map +1 -1
- package/build/core/appDetection.js +0 -36
- package/build/core/appDetection.js.map +1 -1
- package/build/core/appRequest.d.ts +0 -12
- package/build/core/appRequest.d.ts.map +1 -1
- package/build/core/appRequest.js +0 -15
- package/build/core/appRequest.js.map +1 -1
- package/build/core/bufferConfig.d.ts +0 -2
- package/build/core/bufferConfig.d.ts.map +1 -1
- package/build/core/bufferConfig.js +0 -2
- package/build/core/bufferConfig.js.map +1 -1
- package/build/core/bundle.js +0 -40
- package/build/core/bundle.js.map +1 -1
- package/build/core/componentSearch.d.ts +0 -19
- package/build/core/componentSearch.d.ts.map +1 -1
- package/build/core/componentSearch.js +1 -22
- package/build/core/componentSearch.js.map +1 -1
- package/build/core/componentSource.d.ts +0 -21
- package/build/core/componentSource.d.ts.map +1 -1
- package/build/core/componentSource.js +0 -27
- package/build/core/componentSource.js.map +1 -1
- package/build/core/componentTree.js +0 -12
- package/build/core/componentTree.js.map +1 -1
- package/build/core/config.d.ts +0 -8
- package/build/core/config.d.ts.map +1 -1
- package/build/core/config.js +0 -10
- package/build/core/config.js.map +1 -1
- package/build/core/connection.d.ts +0 -76
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +15 -340
- package/build/core/connection.js.map +1 -1
- package/build/core/connectionState.d.ts +0 -78
- package/build/core/connectionState.d.ts.map +1 -1
- package/build/core/connectionState.js +4 -92
- package/build/core/connectionState.js.map +1 -1
- package/build/core/debugGlobals.js +0 -68
- package/build/core/debugGlobals.js.map +1 -1
- package/build/core/deviceDiscovery.d.ts +0 -5
- package/build/core/deviceDiscovery.d.ts.map +1 -1
- package/build/core/deviceDiscovery.js +0 -12
- package/build/core/deviceDiscovery.js.map +1 -1
- package/build/core/deviceResolver.d.ts +0 -10
- package/build/core/deviceResolver.d.ts.map +1 -1
- package/build/core/deviceResolver.js +0 -54
- package/build/core/deviceResolver.js.map +1 -1
- package/build/core/emulatorBridge.d.ts +17 -0
- package/build/core/emulatorBridge.d.ts.map +1 -0
- package/build/core/emulatorBridge.js +78 -0
- package/build/core/emulatorBridge.js.map +1 -0
- package/build/core/emulatorGrpc.d.ts +14 -0
- package/build/core/emulatorGrpc.d.ts.map +1 -0
- package/build/core/emulatorGrpc.js +93 -0
- package/build/core/emulatorGrpc.js.map +1 -0
- package/build/core/epochRender.d.ts +0 -12
- package/build/core/epochRender.d.ts.map +1 -1
- package/build/core/epochRender.js +0 -12
- package/build/core/epochRender.js.map +1 -1
- package/build/core/errorScreenParser.d.ts +0 -21
- package/build/core/errorScreenParser.d.ts.map +1 -1
- package/build/core/errorScreenParser.js +0 -50
- package/build/core/errorScreenParser.js.map +1 -1
- package/build/core/errors.d.ts +0 -15
- package/build/core/errors.d.ts.map +1 -1
- package/build/core/errors.js +0 -15
- package/build/core/errors.js.map +1 -1
- package/build/core/escapeNonAscii.d.ts +0 -9
- package/build/core/escapeNonAscii.d.ts.map +1 -1
- package/build/core/escapeNonAscii.js +1 -43
- package/build/core/escapeNonAscii.js.map +1 -1
- package/build/core/exec.d.ts +0 -12
- package/build/core/exec.d.ts.map +1 -1
- package/build/core/exec.js +2 -14
- package/build/core/exec.js.map +1 -1
- package/build/core/executor.js +0 -3
- package/build/core/executor.js.map +1 -1
- package/build/core/fastRefreshRecorder.js +0 -4
- package/build/core/fastRefreshRecorder.js.map +1 -1
- package/build/core/fastRefreshTools.js +0 -3
- package/build/core/fastRefreshTools.js.map +1 -1
- package/build/core/feedback.js +0 -4
- package/build/core/feedback.js.map +1 -1
- package/build/core/graphqlOperation.d.ts +13 -0
- package/build/core/graphqlOperation.d.ts.map +1 -0
- package/build/core/graphqlOperation.js +80 -0
- package/build/core/graphqlOperation.js.map +1 -0
- package/build/core/guides.d.ts +0 -10
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +18 -12
- package/build/core/guides.js.map +1 -1
- package/build/core/iconSemantics.d.ts +0 -15
- package/build/core/iconSemantics.d.ts.map +1 -1
- package/build/core/iconSemantics.js +0 -31
- package/build/core/iconSemantics.js.map +1 -1
- package/build/core/index.d.ts +2 -0
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +5 -47
- package/build/core/index.js.map +1 -1
- package/build/core/injected/visibility.d.ts +0 -30
- package/build/core/injected/visibility.d.ts.map +1 -1
- package/build/core/injected/visibility.js +0 -33
- package/build/core/injected/visibility.js.map +1 -1
- package/build/core/injectedFilters.d.ts +0 -28
- package/build/core/injectedFilters.d.ts.map +1 -1
- package/build/core/injectedFilters.js +0 -28
- package/build/core/injectedFilters.js.map +1 -1
- package/build/core/inputTarget.d.ts +1 -34
- package/build/core/inputTarget.d.ts.map +1 -1
- package/build/core/inputTarget.js +0 -26
- package/build/core/inputTarget.js.map +1 -1
- package/build/core/inputTargetTools.d.ts +0 -7
- package/build/core/inputTargetTools.d.ts.map +1 -1
- package/build/core/inputTargetTools.js +0 -7
- package/build/core/inputTargetTools.js.map +1 -1
- package/build/core/inspector.d.ts +0 -33
- package/build/core/inspector.d.ts.map +1 -1
- package/build/core/inspector.js +27 -40
- package/build/core/inspector.js.map +1 -1
- package/build/core/ios.d.ts +11 -122
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +32 -299
- package/build/core/ios.js.map +1 -1
- package/build/core/jsExecute.d.ts +0 -100
- package/build/core/jsExecute.d.ts.map +1 -1
- package/build/core/jsExecute.js +0 -261
- package/build/core/jsExecute.js.map +1 -1
- package/build/core/jsLogEvents.d.ts +0 -8
- package/build/core/jsLogEvents.d.ts.map +1 -1
- package/build/core/jsLogEvents.js +0 -8
- package/build/core/jsLogEvents.js.map +1 -1
- package/build/core/keyboardMetrics.js +0 -8
- package/build/core/keyboardMetrics.js.map +1 -1
- package/build/core/keyboardRaise.d.ts +0 -8
- package/build/core/keyboardRaise.d.ts.map +1 -1
- package/build/core/keyboardRaise.js +0 -23
- package/build/core/keyboardRaise.js.map +1 -1
- package/build/core/license.d.ts +0 -4
- package/build/core/license.d.ts.map +1 -1
- package/build/core/license.js +2 -55
- package/build/core/license.js.map +1 -1
- package/build/core/logDiagnosis.d.ts +0 -34
- package/build/core/logDiagnosis.d.ts.map +1 -1
- package/build/core/logDiagnosis.js +0 -15
- package/build/core/logDiagnosis.js.map +1 -1
- package/build/core/logEventFormat.d.ts +0 -1
- package/build/core/logEventFormat.d.ts.map +1 -1
- package/build/core/logEventFormat.js +0 -30
- package/build/core/logEventFormat.js.map +1 -1
- package/build/core/logEvents.d.ts +0 -54
- package/build/core/logEvents.d.ts.map +1 -1
- package/build/core/logEvents.js +0 -37
- package/build/core/logEvents.js.map +1 -1
- package/build/core/logGrouping.d.ts +0 -9
- package/build/core/logGrouping.d.ts.map +1 -1
- package/build/core/logGrouping.js +0 -17
- package/build/core/logGrouping.js.map +1 -1
- package/build/core/logOwnership.d.ts +0 -17
- package/build/core/logOwnership.d.ts.map +1 -1
- package/build/core/logOwnership.js +0 -34
- package/build/core/logOwnership.js.map +1 -1
- package/build/core/logRelevance.d.ts +0 -8
- package/build/core/logRelevance.d.ts.map +1 -1
- package/build/core/logRelevance.js +0 -15
- package/build/core/logRelevance.js.map +1 -1
- package/build/core/logSourceAndroid.d.ts +0 -8
- package/build/core/logSourceAndroid.d.ts.map +1 -1
- package/build/core/logSourceAndroid.js +0 -11
- package/build/core/logSourceAndroid.js.map +1 -1
- package/build/core/logSourceIos.d.ts +0 -8
- package/build/core/logSourceIos.d.ts.map +1 -1
- package/build/core/logSourceIos.js +1 -24
- package/build/core/logSourceIos.js.map +1 -1
- package/build/core/logbox.d.ts +0 -30
- package/build/core/logbox.d.ts.map +1 -1
- package/build/core/logbox.js +0 -43
- package/build/core/logbox.js.map +1 -1
- package/build/core/logs.d.ts +0 -6
- package/build/core/logs.d.ts.map +1 -1
- package/build/core/logs.js +0 -19
- package/build/core/logs.js.map +1 -1
- package/build/core/metro.d.ts +0 -14
- package/build/core/metro.d.ts.map +1 -1
- package/build/core/metro.js +1 -32
- package/build/core/metro.js.map +1 -1
- package/build/core/moduleRegistry.d.ts +0 -17
- package/build/core/moduleRegistry.d.ts.map +1 -1
- package/build/core/moduleRegistry.js +0 -17
- package/build/core/moduleRegistry.js.map +1 -1
- package/build/core/nativeInputValue.d.ts +0 -29
- package/build/core/nativeInputValue.d.ts.map +1 -1
- package/build/core/nativeInputValue.js +0 -18
- package/build/core/nativeInputValue.js.map +1 -1
- package/build/core/nativeLogs.d.ts +0 -47
- package/build/core/nativeLogs.d.ts.map +1 -1
- package/build/core/nativeLogs.js +0 -82
- package/build/core/nativeLogs.js.map +1 -1
- package/build/core/nativeOnlyHints.js +0 -4
- package/build/core/nativeOnlyHints.js.map +1 -1
- package/build/core/navigate.d.ts +0 -15
- package/build/core/navigate.d.ts.map +1 -1
- package/build/core/navigate.js +0 -22
- package/build/core/navigate.js.map +1 -1
- package/build/core/navigation.d.ts +0 -60
- package/build/core/navigation.d.ts.map +1 -1
- package/build/core/navigation.js +0 -60
- package/build/core/navigation.js.map +1 -1
- package/build/core/network.d.ts +0 -5
- package/build/core/network.d.ts.map +1 -1
- package/build/core/network.js +10 -31
- package/build/core/network.js.map +1 -1
- package/build/core/networkInterceptor.d.ts +0 -19
- package/build/core/networkInterceptor.d.ts.map +1 -1
- package/build/core/networkInterceptor.js +3 -27
- package/build/core/networkInterceptor.js.map +1 -1
- package/build/core/ocr.d.ts +0 -31
- package/build/core/ocr.d.ts.map +1 -1
- package/build/core/ocr.js +1 -71
- package/build/core/ocr.js.map +1 -1
- package/build/core/paths.js +0 -1
- package/build/core/paths.js.map +1 -1
- package/build/core/pinchGeometry.d.ts +28 -0
- package/build/core/pinchGeometry.d.ts.map +1 -0
- package/build/core/pinchGeometry.js +97 -0
- package/build/core/pinchGeometry.js.map +1 -0
- package/build/core/pinchThresholds.d.ts +14 -0
- package/build/core/pinchThresholds.d.ts.map +1 -0
- package/build/core/pinchThresholds.js +9 -0
- package/build/core/pinchThresholds.js.map +1 -0
- package/build/core/posthog.js +0 -7
- package/build/core/posthog.js.map +1 -1
- package/build/core/pressables.d.ts +0 -25
- package/build/core/pressables.d.ts.map +1 -1
- package/build/core/pressables.js +0 -37
- package/build/core/pressables.js.map +1 -1
- package/build/core/probe.d.ts +0 -9
- package/build/core/probe.d.ts.map +1 -1
- package/build/core/probe.js +0 -9
- package/build/core/probe.js.map +1 -1
- package/build/core/projectMemory.d.ts +0 -2
- package/build/core/projectMemory.d.ts.map +1 -1
- package/build/core/projectMemory.js +2 -7
- package/build/core/projectMemory.js.map +1 -1
- package/build/core/projectStore.d.ts +0 -18
- package/build/core/projectStore.d.ts.map +1 -1
- package/build/core/projectStore.js +0 -19
- package/build/core/projectStore.js.map +1 -1
- package/build/core/promiseHandles.d.ts +0 -13
- package/build/core/promiseHandles.d.ts.map +1 -1
- package/build/core/promiseHandles.js +0 -25
- package/build/core/promiseHandles.js.map +1 -1
- package/build/core/register.js +0 -44
- package/build/core/register.js.map +1 -1
- package/build/core/rnGlobalsBootstrap.d.ts +0 -13
- package/build/core/rnGlobalsBootstrap.d.ts.map +1 -1
- package/build/core/rnGlobalsBootstrap.js +0 -22
- package/build/core/rnGlobalsBootstrap.js.map +1 -1
- package/build/core/routeHistory.d.ts +24 -0
- package/build/core/routeHistory.d.ts.map +1 -0
- package/build/core/routeHistory.js +186 -0
- package/build/core/routeHistory.js.map +1 -0
- package/build/core/screenLayout.d.ts +0 -11
- package/build/core/screenLayout.d.ts.map +1 -1
- package/build/core/screenLayout.js +24 -61
- package/build/core/screenLayout.js.map +1 -1
- package/build/core/screenSpace.d.ts +32 -44
- package/build/core/screenSpace.d.ts.map +1 -1
- package/build/core/screenSpace.js +80 -46
- package/build/core/screenSpace.js.map +1 -1
- package/build/core/screenSpaceDevice.d.ts +0 -8
- package/build/core/screenSpaceDevice.d.ts.map +1 -1
- package/build/core/screenSpaceDevice.js +31 -14
- package/build/core/screenSpaceDevice.js.map +1 -1
- package/build/core/screenState.d.ts +2 -74
- package/build/core/screenState.d.ts.map +1 -1
- package/build/core/screenState.js +204 -145
- package/build/core/screenState.js.map +1 -1
- package/build/core/sdkBridge.js +0 -8
- package/build/core/sdkBridge.js.map +1 -1
- package/build/core/sdkMirrorPoller.d.ts +0 -18
- package/build/core/sdkMirrorPoller.d.ts.map +1 -1
- package/build/core/sdkMirrorPoller.js +0 -47
- package/build/core/sdkMirrorPoller.js.map +1 -1
- package/build/core/selectionBuffer.d.ts +0 -6
- package/build/core/selectionBuffer.d.ts.map +1 -1
- package/build/core/selectionBuffer.js +0 -5
- package/build/core/selectionBuffer.js.map +1 -1
- package/build/core/signedVerdict.js +0 -6
- package/build/core/signedVerdict.js.map +1 -1
- package/build/core/state.d.ts +0 -31
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +0 -57
- package/build/core/state.js.map +1 -1
- package/build/core/symbolicate.js +0 -11
- package/build/core/symbolicate.js.map +1 -1
- package/build/core/telemetry.d.ts +0 -47
- package/build/core/telemetry.d.ts.map +1 -1
- package/build/core/telemetry.js +1 -173
- package/build/core/telemetry.js.map +1 -1
- package/build/core/textEntry.d.ts +0 -34
- package/build/core/textEntry.d.ts.map +1 -1
- package/build/core/textEntry.js +0 -73
- package/build/core/textEntry.js.map +1 -1
- package/build/core/toolHelpers.d.ts +0 -12
- package/build/core/toolHelpers.d.ts.map +1 -1
- package/build/core/toolHelpers.js +2 -47
- package/build/core/toolHelpers.js.map +1 -1
- package/build/core/truncate.d.ts +0 -17
- package/build/core/truncate.d.ts.map +1 -1
- package/build/core/truncate.js +0 -32
- package/build/core/truncate.js.map +1 -1
- package/build/core/types.d.ts +0 -6
- package/build/core/types.d.ts.map +1 -1
- package/build/core/usageCache.js +0 -12
- package/build/core/usageCache.js.map +1 -1
- package/build/index.js +0 -18
- package/build/index.js.map +1 -1
- package/build/pro/coordinateMiss.d.ts +0 -30
- package/build/pro/coordinateMiss.d.ts.map +1 -1
- package/build/pro/coordinateMiss.js +0 -17
- package/build/pro/coordinateMiss.js.map +1 -1
- package/build/pro/overlayGuard.d.ts +27 -0
- package/build/pro/overlayGuard.d.ts.map +1 -0
- package/build/pro/overlayGuard.js +103 -0
- package/build/pro/overlayGuard.js.map +1 -0
- package/build/pro/screenshot-diff.js +4 -6
- package/build/pro/screenshot-diff.js.map +1 -1
- package/build/pro/tap.d.ts +0 -55
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +72 -316
- package/build/pro/tap.js.map +1 -1
- package/build/pro/usageGate.js +0 -9
- package/build/pro/usageGate.js.map +1 -1
- package/build/pro/usageNotifications.js +1 -13
- package/build/pro/usageNotifications.js.map +1 -1
- package/build/pro/verifyAction.d.ts +0 -13
- package/build/pro/verifyAction.d.ts.map +1 -1
- package/build/pro/verifyAction.js +0 -45
- package/build/pro/verifyAction.js.map +1 -1
- package/build/tools/_deviceArg.d.ts +0 -35
- package/build/tools/_deviceArg.d.ts.map +1 -1
- package/build/tools/_deviceArg.js +0 -35
- package/build/tools/_deviceArg.js.map +1 -1
- package/build/tools/accountTools.js +2 -2
- package/build/tools/accountTools.js.map +1 -1
- package/build/tools/bundleTools.js +0 -16
- package/build/tools/bundleTools.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +47 -53
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.js +1 -59
- package/build/tools/connectionTools.js.map +1 -1
- package/build/tools/deviceTools.js +0 -11
- package/build/tools/deviceTools.js.map +1 -1
- package/build/tools/executionTools.js +1 -18
- package/build/tools/executionTools.js.map +1 -1
- package/build/tools/interactionTools.d.ts +0 -10
- package/build/tools/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +190 -59
- package/build/tools/interactionTools.js.map +1 -1
- package/build/tools/logTools.d.ts +0 -13
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +2 -126
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/metaTools.js +0 -10
- package/build/tools/metaTools.js.map +1 -1
- package/build/tools/networkTools.js +4 -43
- package/build/tools/networkTools.js.map +1 -1
- package/build/tools/requestTools.js +0 -5
- package/build/tools/requestTools.js.map +1 -1
- package/build/tools/screenshotTools.js +5 -111
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +2 -2
- package/tools.json +16 -1
package/build/core/metro.js
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
import * as net from "net";
|
|
2
|
-
// Default Metro scan range: ten contiguous ports from 8081.
|
|
3
|
-
//
|
|
4
|
-
// The previous list was [8081, 8082, 19000, 19001, 19002] — a gap that made a
|
|
5
|
-
// third Metro instance on 8083 invisible to a default scan while the scan still
|
|
6
|
-
// reported success. Running three or more apps side by side is ordinary now, and
|
|
7
|
-
// Metro allocates upward from 8081, so contiguity matters more than the Expo
|
|
8
|
-
// 19xxx ports, which modern Expo no longer uses for the bundler.
|
|
9
2
|
export const DEFAULT_START_PORT = 8081;
|
|
10
3
|
export const DEFAULT_END_PORT = 8090;
|
|
11
4
|
export const COMMON_PORTS = Array.from({ length: DEFAULT_END_PORT - DEFAULT_START_PORT + 1 }, (_, i) => DEFAULT_START_PORT + i);
|
|
12
|
-
// Check if a port is open
|
|
13
5
|
export async function isPortOpen(port, host = "localhost") {
|
|
14
6
|
return new Promise((resolve) => {
|
|
15
7
|
const socket = new net.Socket();
|
|
@@ -29,10 +21,7 @@ export async function isPortOpen(port, host = "localhost") {
|
|
|
29
21
|
socket.connect(port, host);
|
|
30
22
|
});
|
|
31
23
|
}
|
|
32
|
-
// Scan for running Metro servers
|
|
33
24
|
export async function scanMetroPorts(startPort = DEFAULT_START_PORT, endPort = DEFAULT_END_PORT) {
|
|
34
|
-
// The default range is contiguous, so there is no longer a special case —
|
|
35
|
-
// generating the range always yields the same ports the default would.
|
|
36
25
|
const portsToCheck = Array.from({ length: endPort - startPort + 1 }, (_, i) => startPort + i);
|
|
37
26
|
const openPorts = [];
|
|
38
27
|
for (const port of portsToCheck) {
|
|
@@ -42,7 +31,6 @@ export async function scanMetroPorts(startPort = DEFAULT_START_PORT, endPort = D
|
|
|
42
31
|
}
|
|
43
32
|
return openPorts;
|
|
44
33
|
}
|
|
45
|
-
// Fetch connected devices from Metro /json endpoint
|
|
46
34
|
export async function fetchDevices(port) {
|
|
47
35
|
try {
|
|
48
36
|
const response = await fetch(`http://localhost:${port}/json`);
|
|
@@ -56,17 +44,12 @@ export async function fetchDevices(port) {
|
|
|
56
44
|
return [];
|
|
57
45
|
}
|
|
58
46
|
}
|
|
59
|
-
// Select the main JS runtime device from a list of devices (priority order)
|
|
60
47
|
export function selectMainDevice(devices) {
|
|
61
48
|
if (devices.length === 0) {
|
|
62
49
|
return null;
|
|
63
50
|
}
|
|
64
|
-
return (
|
|
65
|
-
// SDK 54+ uses "React Native Bridgeless" in description
|
|
66
|
-
devices.find((d) => d.description.includes("React Native Bridgeless")) ||
|
|
67
|
-
// Hermes runtime (RN 0.70+)
|
|
51
|
+
return (devices.find((d) => d.description.includes("React Native Bridgeless")) ||
|
|
68
52
|
devices.find((d) => d.title === "Hermes React Native" || d.title.includes("Hermes")) ||
|
|
69
|
-
// Fallback: any React Native in title, excluding Reanimated/Experimental
|
|
70
53
|
devices.find((d) => d.title.includes("React Native") &&
|
|
71
54
|
!d.title.includes("Reanimated") &&
|
|
72
55
|
!d.title.includes("Experimental")) ||
|
|
@@ -75,14 +58,7 @@ export function selectMainDevice(devices) {
|
|
|
75
58
|
export function filterBridgelessDevices(devices) {
|
|
76
59
|
return devices.filter(d => d.description.includes("React Native Bridgeless"));
|
|
77
60
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Select the best debuggable target per physical device.
|
|
80
|
-
* Uses the same priority as selectMainDevice but groups by deviceName
|
|
81
|
-
* so multi-device setups get one target each.
|
|
82
|
-
* Excludes Reanimated/Experimental targets.
|
|
83
|
-
*/
|
|
84
61
|
export function filterDebuggableDevices(devices) {
|
|
85
|
-
// Group by physical device
|
|
86
62
|
const byDevice = new Map();
|
|
87
63
|
for (const d of devices) {
|
|
88
64
|
const name = d.deviceName || d.title;
|
|
@@ -90,7 +66,6 @@ export function filterDebuggableDevices(devices) {
|
|
|
90
66
|
group.push(d);
|
|
91
67
|
byDevice.set(name, group);
|
|
92
68
|
}
|
|
93
|
-
// Pick the best target for each physical device (same priority as selectMainDevice)
|
|
94
69
|
const result = [];
|
|
95
70
|
for (const group of byDevice.values()) {
|
|
96
71
|
const best = selectMainDevice(group);
|
|
@@ -100,7 +75,6 @@ export function filterDebuggableDevices(devices) {
|
|
|
100
75
|
}
|
|
101
76
|
return result;
|
|
102
77
|
}
|
|
103
|
-
// Scan for Metro and return all devices grouped by port
|
|
104
78
|
export async function discoverMetroDevices(startPort = DEFAULT_START_PORT, endPort = DEFAULT_END_PORT) {
|
|
105
79
|
const openPorts = await scanMetroPorts(startPort, endPort);
|
|
106
80
|
const result = new Map();
|
|
@@ -112,15 +86,10 @@ export async function discoverMetroDevices(startPort = DEFAULT_START_PORT, endPo
|
|
|
112
86
|
}
|
|
113
87
|
return result;
|
|
114
88
|
}
|
|
115
|
-
/**
|
|
116
|
-
* Check if Metro is running but no devices/apps are connected
|
|
117
|
-
* This state indicates a possible bundle error preventing the app from loading
|
|
118
|
-
*/
|
|
119
89
|
export async function checkMetroState(connectedAppsCount, startPort = DEFAULT_START_PORT, endPort = DEFAULT_END_PORT) {
|
|
120
90
|
const openPorts = await scanMetroPorts(startPort, endPort);
|
|
121
91
|
const metroRunning = openPorts.length > 0;
|
|
122
92
|
const hasConnectedApps = connectedAppsCount > 0;
|
|
123
|
-
// Metro is running but we have no connected apps - possible bundle error
|
|
124
93
|
const needsFallback = metroRunning && !hasConnectedApps;
|
|
125
94
|
return {
|
|
126
95
|
metroRunning,
|
package/build/core/metro.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metro.js","sourceRoot":"","sources":["../../src/core/metro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"metro.js","sourceRoot":"","sources":["../../src/core/metro.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Injected source for a working `require` inside Runtime.evaluate.
|
|
3
|
-
*
|
|
4
|
-
* Hermes has no `require` in the evaluate context, which is the second-largest
|
|
5
|
-
* production failure class (236 events: 218 "require() is not available" plus
|
|
6
|
-
* 18 "Property 'require' doesn't exist"). Agents reach for it to get `gql`,
|
|
7
|
-
* `AsyncStorage`, `NativeModules`, app modules and library internals — none of
|
|
8
|
-
* which are reachable any other way.
|
|
9
|
-
*
|
|
10
|
-
* Metro's dev registry does expose every loaded module keyed by numeric id,
|
|
11
|
-
* with a `verboseName` path when the bundle is unminified. Verified live:
|
|
12
|
-
* 4,398 named modules on astro-app and 4,116 on Boardwise, where
|
|
13
|
-
* `node_modules/expo-router/build/imperative-api.js` resolved to id 1017 and
|
|
14
|
-
* `__r(1017)` returned working exports.
|
|
15
|
-
*
|
|
16
|
-
* ES5 only — this string is compiled by Hermes, not by tsc.
|
|
17
|
-
*/
|
|
18
1
|
export declare function buildRequireSource(): string;
|
|
19
2
|
//# sourceMappingURL=moduleRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleRegistry.d.ts","sourceRoot":"","sources":["../../src/core/moduleRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"moduleRegistry.d.ts","sourceRoot":"","sources":["../../src/core/moduleRegistry.ts"],"names":[],"mappings":"AAiBA,wBAAgB,kBAAkB,IAAI,MAAM,CAgD3C"}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Injected source for a working `require` inside Runtime.evaluate.
|
|
3
|
-
*
|
|
4
|
-
* Hermes has no `require` in the evaluate context, which is the second-largest
|
|
5
|
-
* production failure class (236 events: 218 "require() is not available" plus
|
|
6
|
-
* 18 "Property 'require' doesn't exist"). Agents reach for it to get `gql`,
|
|
7
|
-
* `AsyncStorage`, `NativeModules`, app modules and library internals — none of
|
|
8
|
-
* which are reachable any other way.
|
|
9
|
-
*
|
|
10
|
-
* Metro's dev registry does expose every loaded module keyed by numeric id,
|
|
11
|
-
* with a `verboseName` path when the bundle is unminified. Verified live:
|
|
12
|
-
* 4,398 named modules on astro-app and 4,116 on Boardwise, where
|
|
13
|
-
* `node_modules/expo-router/build/imperative-api.js` resolved to id 1017 and
|
|
14
|
-
* `__r(1017)` returned working exports.
|
|
15
|
-
*
|
|
16
|
-
* ES5 only — this string is compiled by Hermes, not by tsc.
|
|
17
|
-
*/
|
|
18
1
|
export function buildRequireSource() {
|
|
19
2
|
return `
|
|
20
3
|
var __eb_require = (function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleRegistry.js","sourceRoot":"","sources":["../../src/core/moduleRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"moduleRegistry.js","sourceRoot":"","sources":["../../src/core/moduleRegistry.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,kBAAkB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CV,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reading a field's text through the platform accessibility tree.
|
|
3
|
-
*
|
|
4
|
-
* React Native does NOT mirror an uncontrolled field's text back into fiber
|
|
5
|
-
* props — verified on device, where the host's `text` prop stays undefined
|
|
6
|
-
* after typing while mostRecentEventCount increments. So for uncontrolled
|
|
7
|
-
* inputs the accessibility tree is the only read-back available, and without
|
|
8
|
-
* it every such write is unverifiable and a corrupted one lands silently.
|
|
9
|
-
*
|
|
10
|
-
* Identity differs by platform:
|
|
11
|
-
* iOS AXUniqueId carries the testID; there is NO focus attribute.
|
|
12
|
-
* Android resource-id carries the testID, and focused="true" is exposed.
|
|
13
|
-
*
|
|
14
|
-
* Hence the fallback for a field with no testID: snapshot every field before
|
|
15
|
-
* and after the write and require exactly one to have become the requested
|
|
16
|
-
* text. That needs no identity at all.
|
|
17
|
-
*/
|
|
18
1
|
export type NativeField = {
|
|
19
2
|
id: string | null;
|
|
20
3
|
text: string | null;
|
|
@@ -24,22 +7,10 @@ export type NativeFieldsResult = {
|
|
|
24
7
|
fields: NativeField[];
|
|
25
8
|
error?: string;
|
|
26
9
|
};
|
|
27
|
-
/** iOS: `type: "TextField"` nodes carry AXUniqueId (testID) and AXValue. */
|
|
28
10
|
declare function parseIosFields(json: string): NativeField[];
|
|
29
|
-
/**
|
|
30
|
-
* Android: an empty EditText reports its hint in `text`, so a value equal to
|
|
31
|
-
* the hint is reported as empty rather than as content that happens to match.
|
|
32
|
-
*/
|
|
33
11
|
declare function parseAndroidFields(xml: string): NativeField[];
|
|
34
12
|
export type NativeFieldsReader = (platform: "ios" | "android", deviceId?: string) => Promise<NativeFieldsResult>;
|
|
35
13
|
export declare const readNativeFields: NativeFieldsReader;
|
|
36
|
-
/**
|
|
37
|
-
* Pick the field a write landed in.
|
|
38
|
-
*
|
|
39
|
-
* By testID when there is one; else the focused field (Android only); else the
|
|
40
|
-
* single field whose text changed. `null` means "could not determine", which
|
|
41
|
-
* must surface as unverified rather than as a mismatch.
|
|
42
|
-
*/
|
|
43
14
|
export declare function resolveWrittenField(before: NativeField[], after: NativeField[], testID: string | null): {
|
|
44
15
|
text: string | null;
|
|
45
16
|
via: "testID" | "focused" | "changed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeInputValue.d.ts","sourceRoot":"","sources":["../../src/core/nativeInputValue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nativeInputValue.d.ts","sourceRoot":"","sources":["../../src/core/nativeInputValue.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,WAAW,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAG3E,iBAAS,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CA4BnD;AAMD,iBAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAmBtD;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC7B,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,QAAQ,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,eAAO,MAAM,gBAAgB,EAAE,kBAwB9B,CAAC;AASF,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,EAAE,MAAM,GAAG,IAAI,GACtB;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;CAAE,GAAG,IAAI,CAiBvE;AAED,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { execAsync } from "./exec.js";
|
|
2
|
-
/** iOS: `type: "TextField"` nodes carry AXUniqueId (testID) and AXValue. */
|
|
3
2
|
function parseIosFields(json) {
|
|
4
3
|
const out = [];
|
|
5
4
|
let tree;
|
|
@@ -23,7 +22,6 @@ function parseIosFields(json) {
|
|
|
23
22
|
out.push({
|
|
24
23
|
id: typeof node.AXUniqueId === "string" ? node.AXUniqueId : null,
|
|
25
24
|
text: typeof node.AXValue === "string" ? node.AXValue : null,
|
|
26
|
-
// iOS exposes no focus flag; callers must not rely on it here.
|
|
27
25
|
focused: false
|
|
28
26
|
});
|
|
29
27
|
}
|
|
@@ -33,10 +31,6 @@ function parseIosFields(json) {
|
|
|
33
31
|
walk(tree);
|
|
34
32
|
return out;
|
|
35
33
|
}
|
|
36
|
-
/**
|
|
37
|
-
* Android: an empty EditText reports its hint in `text`, so a value equal to
|
|
38
|
-
* the hint is reported as empty rather than as content that happens to match.
|
|
39
|
-
*/
|
|
40
34
|
function parseAndroidFields(xml) {
|
|
41
35
|
const out = [];
|
|
42
36
|
const nodeRe = /<node[^>]*class="android\.widget\.EditText"[^>]*\/?>/g;
|
|
@@ -67,10 +61,6 @@ export const readNativeFields = async (platform, deviceId) => {
|
|
|
67
61
|
}
|
|
68
62
|
const target = deviceId ? `-s ${deviceId}` : "";
|
|
69
63
|
const path = "/sdcard/execbro-ui.xml";
|
|
70
|
-
// Delete before dumping. `uiautomator dump` fails outright when the UI
|
|
71
|
-
// never reaches idle — a blinking caret in a focused field is enough —
|
|
72
|
-
// and `cat` would then return the PREVIOUS dump. Reading stale text as
|
|
73
|
-
// if it were current is worse than reporting nothing.
|
|
74
64
|
await execAsync(`adb ${target} shell rm -f ${path}`, { timeout: 10_000 }).catch(() => undefined);
|
|
75
65
|
const dump = await execAsync(`adb ${target} shell uiautomator dump ${path}`, { timeout: 20_000 });
|
|
76
66
|
const { stdout } = await execAsync(`adb ${target} shell cat ${path}`, { timeout: 20_000 });
|
|
@@ -84,13 +74,6 @@ export const readNativeFields = async (platform, deviceId) => {
|
|
|
84
74
|
return { fields: [], error: e instanceof Error ? e.message : String(e) };
|
|
85
75
|
}
|
|
86
76
|
};
|
|
87
|
-
/**
|
|
88
|
-
* Pick the field a write landed in.
|
|
89
|
-
*
|
|
90
|
-
* By testID when there is one; else the focused field (Android only); else the
|
|
91
|
-
* single field whose text changed. `null` means "could not determine", which
|
|
92
|
-
* must surface as unverified rather than as a mismatch.
|
|
93
|
-
*/
|
|
94
77
|
export function resolveWrittenField(before, after, testID) {
|
|
95
78
|
if (testID) {
|
|
96
79
|
const hit = after.find((f) => f.id === testID);
|
|
@@ -100,7 +83,6 @@ export function resolveWrittenField(before, after, testID) {
|
|
|
100
83
|
const focused = after.filter((f) => f.focused);
|
|
101
84
|
if (focused.length === 1)
|
|
102
85
|
return { text: focused[0].text, via: "focused" };
|
|
103
|
-
// No identity available: exactly one field must have changed.
|
|
104
86
|
const changed = after.filter((f, i) => {
|
|
105
87
|
const b = before[i];
|
|
106
88
|
return b === undefined || b.text !== f.text;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeInputValue.js","sourceRoot":"","sources":["../../src/core/nativeInputValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"nativeInputValue.js","sourceRoot":"","sources":["../../src/core/nativeInputValue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +1,22 @@
|
|
|
1
1
|
import { type AppIdentity, type LogEvent, type EventLevel, type RawLogLine } from "./logEvents.js";
|
|
2
2
|
import type { ConnectedApp } from "./types.js";
|
|
3
|
-
/** simulatorUdid ?? adbSerial. Never deviceName — two sims can share a name. */
|
|
4
3
|
export declare function deviceKeyOf(app: ConnectedApp): string | undefined;
|
|
5
|
-
/**
|
|
6
|
-
* Build identity for a connected app. iOS bundle ids and Android package names
|
|
7
|
-
* differ for the same product, so this is always per-device and never global.
|
|
8
|
-
*
|
|
9
|
-
* `deviceKeyOverride` covers apps found via `matchAndroidAppBySerial`: their
|
|
10
|
-
* OWN `adbSerial` is exactly the null value that made the direct lookup miss
|
|
11
|
-
* in the first place, so `deviceKeyOf(app)` would still fail here — the
|
|
12
|
-
* caller passes the discovered device's serial instead, which is what the
|
|
13
|
-
* native buffer is actually keyed by.
|
|
14
|
-
*/
|
|
15
4
|
export declare function identityFromApp(app: ConnectedApp, deviceKeyOverride?: string): AppIdentity | undefined;
|
|
16
|
-
/**
|
|
17
|
-
* Last-known identity for a device that is no longer connected — the crash
|
|
18
|
-
* case, where there is no ConnectedApp to read appId from.
|
|
19
|
-
*
|
|
20
|
-
* Residual limitation: this can only find an appId that was previously
|
|
21
|
-
* recorded under `deviceKey` or `deviceName`. `resolveLogTargets` writes the
|
|
22
|
-
* live identity under `deviceKey` (the udid / adb serial) via `recordDevice`
|
|
23
|
-
* while the app is connected, which is what makes this succeed after a
|
|
24
|
-
* crash — but if the app has never been connected on this device in this
|
|
25
|
-
* project, there is nothing to find. That is a designed degradation, not a
|
|
26
|
-
* bug: the device still runs in crash-buffer-only mode, and crashes still
|
|
27
|
-
* surface with their declared owner.
|
|
28
|
-
*/
|
|
29
5
|
export declare function identityFromMemory(deviceKey: string, platform: "ios" | "android", deviceName?: string): AppIdentity | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* ownership -> grouping -> relevance -> ingest.
|
|
32
|
-
*
|
|
33
|
-
* Relevance runs after grouping because it tests `kind`, which the grouper
|
|
34
|
-
* assigns; a floor applied to raw lines would shred backtrace continuations.
|
|
35
|
-
*/
|
|
36
6
|
export declare function runNativePipeline(lines: RawLogLine[], identity: AppIdentity, deviceName: string, opts: {
|
|
37
7
|
minLevel: EventLevel;
|
|
38
8
|
}): {
|
|
39
9
|
events: LogEvent[];
|
|
40
10
|
};
|
|
41
11
|
export interface LogTarget {
|
|
42
|
-
/** simulatorUdid (iOS) | adb serial (Android). The buffer key. */
|
|
43
12
|
deviceKey: string;
|
|
44
13
|
deviceName: string;
|
|
45
14
|
platform: "ios" | "android";
|
|
46
|
-
/** Android only — what `adb -s` accepts. */
|
|
47
15
|
adbSerial?: string;
|
|
48
|
-
/** Absent when the app has never connected on this device. */
|
|
49
16
|
identity?: AppIdentity;
|
|
50
|
-
/** Where `identity` came from — memory-sourced ids can be stale. */
|
|
51
17
|
identitySource?: "live" | "memory";
|
|
52
18
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Every device we could read logs from — NOT just connected ones.
|
|
55
|
-
*
|
|
56
|
-
* A crashed app has no CDP connection, so connectedApps is empty exactly when
|
|
57
|
-
* this feature is most needed. Discovery is the source of truth for "which
|
|
58
|
-
* devices exist"; connectedApps and projectMemory only enrich them with
|
|
59
|
-
* identity. Shutdown simulators and stopped emulators are excluded — there is
|
|
60
|
-
* no log stream to read.
|
|
61
|
-
*/
|
|
62
19
|
export declare function resolveLogTargets(device?: string): Promise<LogTarget[]>;
|
|
63
|
-
/**
|
|
64
|
-
* Fan out across every device in parallel. A device that fails degrades to a
|
|
65
|
-
* note; the others still answer.
|
|
66
|
-
*/
|
|
67
20
|
export declare function collectNativeEvents(opts: {
|
|
68
21
|
device?: string;
|
|
69
22
|
minLevel: EventLevel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeLogs.d.ts","sourceRoot":"","sources":["../../src/core/nativeLogs.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"nativeLogs.d.ts","sourceRoot":"","sources":["../../src/core/nativeLogs.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAEjE;AAYD,wBAAgB,eAAe,CAC3B,GAAG,EAAE,YAAY,EACjB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,WAAW,GAAG,SAAS,CAIzB;AAeD,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,UAAU,CAAC,EAAE,MAAM,GACpB,WAAW,GAAG,SAAS,CAYzB;AAQD,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,UAAU,EAAE,EACnB,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAE,GAC/B;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,CASxB;AAED,MAAM,WAAW,SAAS;IAEtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAE5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,WAAW,CAAC;IAEvB,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CACtC;AA0CD,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA2E7E;AAwDD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,IAAI,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsBnD"}
|
package/build/core/nativeLogs.js
CHANGED
|
@@ -8,58 +8,23 @@ import { groupIntoEvents } from "./logGrouping.js";
|
|
|
8
8
|
import { isRelevant } from "./logRelevance.js";
|
|
9
9
|
import { fetchAndroidLines, resolveAndroidPid } from "./logSourceAndroid.js";
|
|
10
10
|
import { fetchIosLines, resolveIosProcessName } from "./logSourceIos.js";
|
|
11
|
-
/** simulatorUdid ?? adbSerial. Never deviceName — two sims can share a name. */
|
|
12
11
|
export function deviceKeyOf(app) {
|
|
13
12
|
return app.simulatorUdid ?? app.adbSerial;
|
|
14
13
|
}
|
|
15
|
-
/**
|
|
16
|
-
* Build identity for a connected app. iOS bundle ids and Android package names
|
|
17
|
-
* differ for the same product, so this is always per-device and never global.
|
|
18
|
-
*
|
|
19
|
-
* `deviceKeyOverride` covers apps found via `matchAndroidAppBySerial`: their
|
|
20
|
-
* OWN `adbSerial` is exactly the null value that made the direct lookup miss
|
|
21
|
-
* in the first place, so `deviceKeyOf(app)` would still fail here — the
|
|
22
|
-
* caller passes the discovered device's serial instead, which is what the
|
|
23
|
-
* native buffer is actually keyed by.
|
|
24
|
-
*/
|
|
25
14
|
export function identityFromApp(app, deviceKeyOverride) {
|
|
26
15
|
const deviceKey = deviceKeyOverride ?? deviceKeyOf(app);
|
|
27
16
|
if (!deviceKey || !app.deviceInfo.appId)
|
|
28
17
|
return undefined;
|
|
29
18
|
return { deviceKey, platform: app.platform, appId: app.deviceInfo.appId };
|
|
30
19
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Last-known identity for a device that is no longer connected — the crash
|
|
33
|
-
* case, where there is no ConnectedApp to read appId from.
|
|
34
|
-
*
|
|
35
|
-
* Residual limitation: this can only find an appId that was previously
|
|
36
|
-
* recorded under `deviceKey` or `deviceName`. `resolveLogTargets` writes the
|
|
37
|
-
* live identity under `deviceKey` (the udid / adb serial) via `recordDevice`
|
|
38
|
-
* while the app is connected, which is what makes this succeed after a
|
|
39
|
-
* crash — but if the app has never been connected on this device in this
|
|
40
|
-
* project, there is nothing to find. That is a designed degradation, not a
|
|
41
|
-
* bug: the device still runs in crash-buffer-only mode, and crashes still
|
|
42
|
-
* surface with their declared owner.
|
|
43
|
-
*/
|
|
44
20
|
export function identityFromMemory(deviceKey, platform, deviceName) {
|
|
45
21
|
const devices = listDevices();
|
|
46
|
-
// projectMemory records a device under whichever identifier the resolving
|
|
47
|
-
// caller used — the adb serial on some paths, the RN deviceName on others —
|
|
48
|
-
// so one physical device can hold two entries with only one carrying the
|
|
49
|
-
// appId. Both keys must be tried, and a matching row with no appId must not
|
|
50
|
-
// shadow one that has it, or this fallback never fires on Android.
|
|
51
22
|
const remembered = devices.find((d) => d.identifier === deviceKey && d.appId) ??
|
|
52
23
|
(deviceName ? devices.find((d) => d.identifier === deviceName && d.appId) : undefined);
|
|
53
24
|
if (!remembered?.appId)
|
|
54
25
|
return undefined;
|
|
55
26
|
return { deviceKey, platform, appId: remembered.appId };
|
|
56
27
|
}
|
|
57
|
-
/**
|
|
58
|
-
* ownership -> grouping -> relevance -> ingest.
|
|
59
|
-
*
|
|
60
|
-
* Relevance runs after grouping because it tests `kind`, which the grouper
|
|
61
|
-
* assigns; a floor applied to raw lines would shred backtrace continuations.
|
|
62
|
-
*/
|
|
63
28
|
export function runNativePipeline(lines, identity, deviceName, opts) {
|
|
64
29
|
const owned = lines.filter((l) => isOwned(l, identity).owned);
|
|
65
30
|
const drafts = groupIntoEvents(owned, {
|
|
@@ -70,20 +35,6 @@ export function runNativePipeline(lines, identity, deviceName, opts) {
|
|
|
70
35
|
const relevant = drafts.filter((d) => isRelevant(d, { minLevel: opts.minLevel }));
|
|
71
36
|
return { events: getNativeLogBuffer(identity.deviceKey).ingest(relevant) };
|
|
72
37
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Find the ConnectedApp for a discovered Android device.
|
|
75
|
-
*
|
|
76
|
-
* ConnectedApp.adbSerial is frequently null — types.ts documents it as only
|
|
77
|
-
* populated when getAdbIdForAvd happens to match at connect time — so keying
|
|
78
|
-
* on it alone means Android never gets live identity, and every Android read
|
|
79
|
-
* silently degrades to crash-buffer-only. The three Android names (adb serial,
|
|
80
|
-
* AVD name, RN/Metro deviceName) do not join, and resolveDeviceTarget cannot
|
|
81
|
-
* bridge them either.
|
|
82
|
-
*
|
|
83
|
-
* Metro labels Android targets `${MODEL} - ${RELEASE} - API ${SDK}`, so
|
|
84
|
-
* ro.product.model is a deterministic prefix of the RN deviceName. Verified
|
|
85
|
-
* live: model "sdk_gphone16k_arm64" vs "sdk_gphone16k_arm64 - 16 - API 36".
|
|
86
|
-
*/
|
|
87
38
|
async function matchAndroidAppBySerial(serial, apps) {
|
|
88
39
|
const candidates = apps.filter((a) => a.platform === "android");
|
|
89
40
|
if (candidates.length === 0)
|
|
@@ -96,19 +47,9 @@ async function matchAndroidAppBySerial(serial, apps) {
|
|
|
96
47
|
return candidates.find((a) => (a.deviceInfo.deviceName ?? "").startsWith(model));
|
|
97
48
|
}
|
|
98
49
|
catch {
|
|
99
|
-
// Best-effort: fall through to memory / crash-only as before.
|
|
100
50
|
return undefined;
|
|
101
51
|
}
|
|
102
52
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Every device we could read logs from — NOT just connected ones.
|
|
105
|
-
*
|
|
106
|
-
* A crashed app has no CDP connection, so connectedApps is empty exactly when
|
|
107
|
-
* this feature is most needed. Discovery is the source of truth for "which
|
|
108
|
-
* devices exist"; connectedApps and projectMemory only enrich them with
|
|
109
|
-
* identity. Shutdown simulators and stopped emulators are excluded — there is
|
|
110
|
-
* no log stream to read.
|
|
111
|
-
*/
|
|
112
53
|
export async function resolveLogTargets(device) {
|
|
113
54
|
const connected = new Map();
|
|
114
55
|
for (const app of connectedApps.values()) {
|
|
@@ -136,11 +77,6 @@ export async function resolveLogTargets(device) {
|
|
|
136
77
|
const targets = [];
|
|
137
78
|
for (const row of rows) {
|
|
138
79
|
let app = connected.get(row.deviceKey);
|
|
139
|
-
// adbSerial is frequently null (see matchAndroidAppBySerial), so the
|
|
140
|
-
// serial-keyed lookup above routinely misses even a live app. Fall
|
|
141
|
-
// back to the deterministic model-prefix match before giving up —
|
|
142
|
-
// note the matched app's OWN adbSerial is still null, so its identity
|
|
143
|
-
// must be keyed by row.deviceKey, not recomputed from the app itself.
|
|
144
80
|
let matchedByModel = false;
|
|
145
81
|
if (!app && row.platform === "android") {
|
|
146
82
|
app = await matchAndroidAppBySerial(row.deviceKey, [...connectedApps.values()]);
|
|
@@ -152,17 +88,10 @@ export async function resolveLogTargets(device) {
|
|
|
152
88
|
if (!hay.includes(device.toLowerCase()))
|
|
153
89
|
continue;
|
|
154
90
|
}
|
|
155
|
-
// Chain: live connection -> remembered -> none (crash-buffer-only).
|
|
156
91
|
const live = app
|
|
157
92
|
? identityFromApp(app, matchedByModel ? row.deviceKey : undefined)
|
|
158
93
|
: undefined;
|
|
159
94
|
if (live) {
|
|
160
|
-
// Persist identity under the SAME key the native buffer uses (udid /
|
|
161
|
-
// adb serial). projectMemory is otherwise keyed by whatever
|
|
162
|
-
// identifier the resolving caller happened to use — on Android the
|
|
163
|
-
// appId-bearing row is keyed by the RN deviceName, which nothing
|
|
164
|
-
// links back to the serial. Recording it here while the app is alive
|
|
165
|
-
// is what lets identity survive the crash we later want to explain.
|
|
166
95
|
recordDevice({
|
|
167
96
|
identifier: row.deviceKey,
|
|
168
97
|
name: deviceName,
|
|
@@ -189,9 +118,6 @@ async function fetchForTarget(target, opts) {
|
|
|
189
118
|
const sinceTs = opts.since ?? buffer.watermark;
|
|
190
119
|
try {
|
|
191
120
|
if (!target.identity) {
|
|
192
|
-
// Crash-buffer-only: no identity, so no ownership filtering is
|
|
193
|
-
// possible. That buffer is tiny and near-100% signal, and each
|
|
194
|
-
// event names its own owner, so this stays useful.
|
|
195
121
|
const lines = target.platform === "android"
|
|
196
122
|
? await fetchAndroidLines({ serial: target.adbSerial, sinceTs, crashOnly: true })
|
|
197
123
|
: await fetchIosLines({ udid: target.deviceKey, sinceTs, minMessageType: "fault" });
|
|
@@ -208,8 +134,6 @@ async function fetchForTarget(target, opts) {
|
|
|
208
134
|
const identity = { ...target.identity };
|
|
209
135
|
let lines;
|
|
210
136
|
if (target.platform === "android") {
|
|
211
|
-
// Re-resolved every call: the pid changes on every app restart,
|
|
212
|
-
// and is absent entirely after a crash.
|
|
213
137
|
identity.pid = await resolveAndroidPid(identity.appId, target.adbSerial);
|
|
214
138
|
lines = await fetchAndroidLines({ serial: target.adbSerial, sinceTs });
|
|
215
139
|
}
|
|
@@ -230,10 +154,6 @@ async function fetchForTarget(target, opts) {
|
|
|
230
154
|
return { events: [], note: `${target.deviceName}: unavailable (${reason})` };
|
|
231
155
|
}
|
|
232
156
|
}
|
|
233
|
-
/**
|
|
234
|
-
* Fan out across every device in parallel. A device that fails degrades to a
|
|
235
|
-
* note; the others still answer.
|
|
236
|
-
*/
|
|
237
157
|
export async function collectNativeEvents(opts) {
|
|
238
158
|
const targets = await resolveLogTargets(opts.device);
|
|
239
159
|
if (targets.length === 0) {
|
|
@@ -252,8 +172,6 @@ export async function collectNativeEvents(opts) {
|
|
|
252
172
|
notes.push(`device unavailable: ${String(result.reason)}`);
|
|
253
173
|
}
|
|
254
174
|
}
|
|
255
|
-
// Exact within a device, approximate across devices — emulator clocks
|
|
256
|
-
// measured 4s of skew from the host, which we cannot correct for.
|
|
257
175
|
events.sort((a, b) => a.ts.getTime() - b.ts.getTime());
|
|
258
176
|
return { events, notes };
|
|
259
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeLogs.js","sourceRoot":"","sources":["../../src/core/nativeLogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACH,kBAAkB,GAKrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"nativeLogs.js","sourceRoot":"","sources":["../../src/core/nativeLogs.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,6 @@ export async function detectNativeDevices() {
|
|
|
13
13
|
const android = !!androidSerial;
|
|
14
14
|
return { ios, android, any: ios || android };
|
|
15
15
|
}
|
|
16
|
-
// Per-tool native fallback suggestions, keyed by tool name.
|
|
17
|
-
// Lists the native-only tools the user can reach for instead.
|
|
18
16
|
const NATIVE_FALLBACKS = {
|
|
19
17
|
get_logs: [],
|
|
20
18
|
search_logs: [],
|
|
@@ -45,8 +43,6 @@ export function buildMetroMissingHint({ toolName, devices }) {
|
|
|
45
43
|
lines.push("For in-app console/network capture without Metro, install the SDK: npm install execbro-sdk");
|
|
46
44
|
return lines.join("\n");
|
|
47
45
|
}
|
|
48
|
-
// Convenience: return the hint only when Metro is truly absent. Returns "" otherwise
|
|
49
|
-
// so callers can concatenate unconditionally.
|
|
50
46
|
export async function metroMissingHintIfAbsent(toolName) {
|
|
51
47
|
if (hasMetro())
|
|
52
48
|
return "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeOnlyHints.js","sourceRoot":"","sources":["../../src/core/nativeOnlyHints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,UAAU,QAAQ;IACpB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;AAClC,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/C,8BAA8B,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClD,uBAAuB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KAC9C,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;IACtB,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC;IAChC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;AACjD,CAAC;
|
|
1
|
+
{"version":3,"file":"nativeOnlyHints.js","sourceRoot":"","sources":["../../src/core/nativeOnlyHints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,UAAU,QAAQ;IACpB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;AAClC,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/C,8BAA8B,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClD,uBAAuB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KAC9C,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;IACtB,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC;IAChC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;AACjD,CAAC;AAID,MAAM,gBAAgB,GAA6B;IAC/C,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IACd,oBAAoB,EAAE,EAAE;IACxB,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE,EAAE;IACvB,iBAAiB,EAAE,EAAE;CACxB,CAAC;AAOF,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAA2B;IAChF,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IAExG,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,GAAG;YAAE,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,uGAAuG,CAAC,CAAC;IAC7J,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IAC5G,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,6CAA6C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;IACzG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,QAAgB;IAC3D,IAAI,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC5C,OAAO,MAAM,GAAG,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC"}
|