claude-in-mobile 3.13.0 → 4.0.0-dev
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 +61 -574
- package/dist/a11y/types.d.ts +1 -1
- package/dist/a11y/types.d.ts.map +1 -1
- package/dist/adapters/contracts.d.ts +66 -0
- package/dist/adapters/contracts.d.ts.map +1 -0
- package/dist/adapters/contracts.js +15 -0
- package/dist/adapters/contracts.js.map +1 -0
- package/dist/adapters/index.d.ts +0 -5
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +1 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/autopilot/explorer.js +1 -1
- package/dist/autopilot/explorer.js.map +1 -1
- package/dist/autopilot/healer.d.ts +1 -1
- package/dist/autopilot/healer.d.ts.map +1 -1
- package/dist/autopilot/screen-fingerprint.d.ts +1 -1
- package/dist/autopilot/screen-fingerprint.d.ts.map +1 -1
- package/dist/autopilot/types.d.ts +1 -1
- package/dist/autopilot/types.d.ts.map +1 -1
- package/dist/device/client-cache.d.ts +1 -1
- package/dist/device/client-cache.d.ts.map +1 -1
- package/dist/device/client-cache.js +4 -24
- package/dist/device/client-cache.js.map +1 -1
- package/dist/device/proxies/desktop-facade.d.ts +5 -8
- package/dist/device/proxies/desktop-facade.d.ts.map +1 -1
- package/dist/device/proxies/desktop-facade.js +12 -14
- package/dist/device/proxies/desktop-facade.js.map +1 -1
- package/dist/device-manager.d.ts +16 -16
- package/dist/device-manager.d.ts.map +1 -1
- package/dist/device-manager.js +23 -17
- package/dist/device-manager.js.map +1 -1
- package/dist/index.js +21 -6
- package/dist/index.js.map +1 -1
- package/dist/perf/collector.d.ts +5 -5
- package/dist/perf/collector.d.ts.map +1 -1
- package/dist/perf/collector.js.map +1 -1
- package/dist/plugins/repl/client.d.ts +15 -1
- package/dist/plugins/repl/client.d.ts.map +1 -1
- package/dist/plugins/repl/client.js +65 -8
- package/dist/plugins/repl/client.js.map +1 -1
- package/dist/plugins/repl/index.d.ts +2 -0
- package/dist/plugins/repl/index.d.ts.map +1 -1
- package/dist/plugins/repl/index.js +22 -3
- package/dist/plugins/repl/index.js.map +1 -1
- package/dist/plugins/repl/types.d.ts +6 -0
- package/dist/plugins/repl/types.d.ts.map +1 -1
- package/dist/runtime/bootstrap.d.ts +7 -0
- package/dist/runtime/bootstrap.d.ts.map +1 -1
- package/dist/runtime/bootstrap.js +87 -15
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/cli.d.ts.map +1 -1
- package/dist/runtime/cli.js +14 -0
- package/dist/runtime/cli.js.map +1 -1
- package/dist/runtime/platform-cli.d.ts +24 -0
- package/dist/runtime/platform-cli.d.ts.map +1 -0
- package/dist/runtime/platform-cli.js +116 -0
- package/dist/runtime/platform-cli.js.map +1 -0
- package/dist/runtime/platform-config.d.ts +21 -0
- package/dist/runtime/platform-config.d.ts.map +1 -0
- package/dist/runtime/platform-config.js +71 -0
- package/dist/runtime/platform-config.js.map +1 -0
- package/dist/tools/browser-tools.js.map +1 -1
- package/dist/tools/clipboard-tools.js +1 -1
- package/dist/tools/clipboard-tools.js.map +1 -1
- package/dist/tools/context/hints.d.ts +1 -1
- package/dist/tools/context/hints.d.ts.map +1 -1
- package/dist/tools/context/hints.js +1 -1
- package/dist/tools/context/hints.js.map +1 -1
- package/dist/tools/context/ios-helpers.d.ts +1 -1
- package/dist/tools/context/ios-helpers.d.ts.map +1 -1
- package/dist/tools/context/shared-state-class.d.ts +1 -1
- package/dist/tools/context/shared-state-class.d.ts.map +1 -1
- package/dist/tools/context/shared-state.d.ts +1 -1
- package/dist/tools/context/shared-state.d.ts.map +1 -1
- package/dist/tools/context.d.ts +2 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +17 -9
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/desktop-tools.d.ts.map +1 -1
- package/dist/tools/desktop-tools.js.map +1 -1
- package/dist/tools/flow/common.js +1 -1
- package/dist/tools/flow/common.js.map +1 -1
- package/dist/tools/flow/run.js +1 -1
- package/dist/tools/flow/run.js.map +1 -1
- package/dist/tools/helpers/get-elements.d.ts +1 -1
- package/dist/tools/helpers/get-elements.d.ts.map +1 -1
- package/dist/tools/helpers/get-elements.js +1 -1
- package/dist/tools/helpers/get-elements.js.map +1 -1
- package/dist/tools/helpers/resolve-element.js +1 -1
- package/dist/tools/helpers/resolve-element.js.map +1 -1
- package/dist/tools/screenshot-tools.js +1 -1
- package/dist/tools/screenshot-tools.js.map +1 -1
- package/dist/tools/ui/analyze.js +1 -1
- package/dist/tools/ui/analyze.js.map +1 -1
- package/dist/tools/ui/assert.js +1 -1
- package/dist/tools/ui/assert.js.map +1 -1
- package/dist/tools/ui/find.js +1 -1
- package/dist/tools/ui/find.js.map +1 -1
- package/dist/tools/ui/tree.js +1 -1
- package/dist/tools/ui/tree.js.map +1 -1
- package/dist/tools/ui/wait.js +1 -1
- package/dist/tools/ui/wait.js.map +1 -1
- package/dist/ui-tree/ui-parser/diff-engine.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/diff-engine.js.map +1 -0
- package/dist/ui-tree/ui-parser/element-builder.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/element-builder.js.map +1 -0
- package/dist/ui-tree/ui-parser/element-finders.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/element-finders.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/compact.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/compact.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/full.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/full.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/index.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/index.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/semantic.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/semantic.js.map +1 -0
- package/dist/ui-tree/ui-parser/node-parser.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/node-parser.js.map +1 -0
- package/dist/ui-tree/ui-parser/screen-analyzer.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/screen-analyzer.js.map +1 -0
- package/dist/ui-tree/ui-parser/types.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/types.js.map +1 -0
- package/dist/ui-tree/ui-parser.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser.js.map +1 -0
- package/dist/ui-tree/ui-scoring.d.ts.map +1 -0
- package/dist/ui-tree/ui-scoring.js.map +1 -0
- package/dist/ui-tree/ui-tree-cache.d.ts.map +1 -0
- package/dist/ui-tree/ui-tree-cache.js.map +1 -0
- package/dist/utils/image/annotate.d.ts +1 -1
- package/dist/utils/image/annotate.d.ts.map +1 -1
- package/package.json +11 -6
- package/dist/adapters/android-adapter.d.ts +0 -64
- package/dist/adapters/android-adapter.d.ts.map +0 -1
- package/dist/adapters/android-adapter.js +0 -164
- package/dist/adapters/android-adapter.js.map +0 -1
- package/dist/adapters/aurora-adapter.d.ts +0 -56
- package/dist/adapters/aurora-adapter.d.ts.map +0 -1
- package/dist/adapters/aurora-adapter.js +0 -118
- package/dist/adapters/aurora-adapter.js.map +0 -1
- package/dist/adapters/browser-adapter.d.ts +0 -51
- package/dist/adapters/browser-adapter.d.ts.map +0 -1
- package/dist/adapters/browser-adapter.js +0 -223
- package/dist/adapters/browser-adapter.js.map +0 -1
- package/dist/adapters/desktop-adapter.d.ts +0 -64
- package/dist/adapters/desktop-adapter.d.ts.map +0 -1
- package/dist/adapters/desktop-adapter.js +0 -202
- package/dist/adapters/desktop-adapter.js.map +0 -1
- package/dist/adapters/ios-adapter.d.ts +0 -60
- package/dist/adapters/ios-adapter.d.ts.map +0 -1
- package/dist/adapters/ios-adapter.js +0 -146
- package/dist/adapters/ios-adapter.js.map +0 -1
- package/dist/adb/client.d.ts +0 -238
- package/dist/adb/client.d.ts.map +0 -1
- package/dist/adb/client.js +0 -462
- package/dist/adb/client.js.map +0 -1
- package/dist/adb/exec.d.ts +0 -23
- package/dist/adb/exec.d.ts.map +0 -1
- package/dist/adb/exec.js +0 -98
- package/dist/adb/exec.js.map +0 -1
- package/dist/adb/index.d.ts +0 -5
- package/dist/adb/index.d.ts.map +0 -1
- package/dist/adb/index.js +0 -3
- package/dist/adb/index.js.map +0 -1
- package/dist/adb/keycodes.d.ts +0 -22
- package/dist/adb/keycodes.d.ts.map +0 -1
- package/dist/adb/keycodes.js +0 -69
- package/dist/adb/keycodes.js.map +0 -1
- package/dist/adb/logcat.d.ts +0 -23
- package/dist/adb/logcat.d.ts.map +0 -1
- package/dist/adb/logcat.js +0 -40
- package/dist/adb/logcat.js.map +0 -1
- package/dist/adb/parsers.d.ts +0 -60
- package/dist/adb/parsers.d.ts.map +0 -1
- package/dist/adb/parsers.js +0 -118
- package/dist/adb/parsers.js.map +0 -1
- package/dist/adb/resolver.d.ts +0 -24
- package/dist/adb/resolver.d.ts.map +0 -1
- package/dist/adb/resolver.js +0 -130
- package/dist/adb/resolver.js.map +0 -1
- package/dist/adb/text-escape.d.ts +0 -23
- package/dist/adb/text-escape.d.ts.map +0 -1
- package/dist/adb/text-escape.js +0 -41
- package/dist/adb/text-escape.js.map +0 -1
- package/dist/adb/ui-parser/diff-engine.d.ts.map +0 -1
- package/dist/adb/ui-parser/diff-engine.js.map +0 -1
- package/dist/adb/ui-parser/element-builder.d.ts.map +0 -1
- package/dist/adb/ui-parser/element-builder.js.map +0 -1
- package/dist/adb/ui-parser/element-finders.d.ts.map +0 -1
- package/dist/adb/ui-parser/element-finders.js.map +0 -1
- package/dist/adb/ui-parser/formatters/compact.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/compact.js.map +0 -1
- package/dist/adb/ui-parser/formatters/full.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/full.js.map +0 -1
- package/dist/adb/ui-parser/formatters/index.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/index.js.map +0 -1
- package/dist/adb/ui-parser/formatters/semantic.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/semantic.js.map +0 -1
- package/dist/adb/ui-parser/node-parser.d.ts.map +0 -1
- package/dist/adb/ui-parser/node-parser.js.map +0 -1
- package/dist/adb/ui-parser/screen-analyzer.d.ts.map +0 -1
- package/dist/adb/ui-parser/screen-analyzer.js.map +0 -1
- package/dist/adb/ui-parser/types.d.ts.map +0 -1
- package/dist/adb/ui-parser/types.js.map +0 -1
- package/dist/adb/ui-parser.d.ts.map +0 -1
- package/dist/adb/ui-parser.js.map +0 -1
- package/dist/adb/ui-scoring.d.ts.map +0 -1
- package/dist/adb/ui-scoring.js.map +0 -1
- package/dist/adb/ui-tree-cache.d.ts.map +0 -1
- package/dist/adb/ui-tree-cache.js.map +0 -1
- package/dist/adb/webview.d.ts +0 -59
- package/dist/adb/webview.d.ts.map +0 -1
- package/dist/adb/webview.js +0 -169
- package/dist/adb/webview.js.map +0 -1
- package/dist/aurora/client.d.ts +0 -180
- package/dist/aurora/client.d.ts.map +0 -1
- package/dist/aurora/client.js +0 -324
- package/dist/aurora/client.js.map +0 -1
- package/dist/aurora/index.d.ts +0 -2
- package/dist/aurora/index.d.ts.map +0 -1
- package/dist/aurora/index.js +0 -2
- package/dist/aurora/index.js.map +0 -1
- package/dist/browser/cdp-helpers.d.ts +0 -17
- package/dist/browser/cdp-helpers.d.ts.map +0 -1
- package/dist/browser/cdp-helpers.js +0 -79
- package/dist/browser/cdp-helpers.js.map +0 -1
- package/dist/browser/cdp-types.d.ts +0 -167
- package/dist/browser/cdp-types.d.ts.map +0 -1
- package/dist/browser/cdp-types.js +0 -9
- package/dist/browser/cdp-types.js.map +0 -1
- package/dist/browser/client.d.ts +0 -29
- package/dist/browser/client.d.ts.map +0 -1
- package/dist/browser/client.js +0 -391
- package/dist/browser/client.js.map +0 -1
- package/dist/browser/index.d.ts +0 -5
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -4
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/key-map.d.ts +0 -16
- package/dist/browser/key-map.d.ts.map +0 -1
- package/dist/browser/key-map.js +0 -35
- package/dist/browser/key-map.js.map +0 -1
- package/dist/browser/session-manager.d.ts +0 -21
- package/dist/browser/session-manager.d.ts.map +0 -1
- package/dist/browser/session-manager.js +0 -109
- package/dist/browser/session-manager.js.map +0 -1
- package/dist/browser/snapshot-builder.d.ts +0 -4
- package/dist/browser/snapshot-builder.d.ts.map +0 -1
- package/dist/browser/snapshot-builder.js +0 -76
- package/dist/browser/snapshot-builder.js.map +0 -1
- package/dist/browser/types.d.ts +0 -75
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -11
- package/dist/browser/types.js.map +0 -1
- package/dist/desktop/client.d.ts +0 -196
- package/dist/desktop/client.d.ts.map +0 -1
- package/dist/desktop/client.js +0 -540
- package/dist/desktop/client.js.map +0 -1
- package/dist/desktop/gradle.d.ts +0 -45
- package/dist/desktop/gradle.d.ts.map +0 -1
- package/dist/desktop/gradle.js +0 -234
- package/dist/desktop/gradle.js.map +0 -1
- package/dist/desktop/index.d.ts +0 -7
- package/dist/desktop/index.d.ts.map +0 -1
- package/dist/desktop/index.js +0 -7
- package/dist/desktop/index.js.map +0 -1
- package/dist/desktop/launch-options.d.ts +0 -13
- package/dist/desktop/launch-options.d.ts.map +0 -1
- package/dist/desktop/launch-options.js +0 -54
- package/dist/desktop/launch-options.js.map +0 -1
- package/dist/desktop/launchers.d.ts +0 -52
- package/dist/desktop/launchers.d.ts.map +0 -1
- package/dist/desktop/launchers.js +0 -125
- package/dist/desktop/launchers.js.map +0 -1
- package/dist/desktop/log-ring.d.ts +0 -21
- package/dist/desktop/log-ring.d.ts.map +0 -1
- package/dist/desktop/log-ring.js +0 -45
- package/dist/desktop/log-ring.js.map +0 -1
- package/dist/desktop/permission-allowlist.d.ts +0 -47
- package/dist/desktop/permission-allowlist.d.ts.map +0 -1
- package/dist/desktop/permission-allowlist.js +0 -148
- package/dist/desktop/permission-allowlist.js.map +0 -1
- package/dist/desktop/types.d.ts +0 -177
- package/dist/desktop/types.d.ts.map +0 -1
- package/dist/desktop/types.js +0 -5
- package/dist/desktop/types.js.map +0 -1
- package/dist/ios/client.d.ts +0 -194
- package/dist/ios/client.d.ts.map +0 -1
- package/dist/ios/client.js +0 -457
- package/dist/ios/client.js.map +0 -1
- package/dist/ios/index.d.ts +0 -2
- package/dist/ios/index.d.ts.map +0 -1
- package/dist/ios/index.js +0 -2
- package/dist/ios/index.js.map +0 -1
- package/dist/ios/keymap.d.ts +0 -20
- package/dist/ios/keymap.d.ts.map +0 -1
- package/dist/ios/keymap.js +0 -33
- package/dist/ios/keymap.js.map +0 -1
- package/dist/ios/simctl-commands.d.ts +0 -35
- package/dist/ios/simctl-commands.d.ts.map +0 -1
- package/dist/ios/simctl-commands.js +0 -60
- package/dist/ios/simctl-commands.js.map +0 -1
- package/dist/ios/simctl-exec.d.ts +0 -19
- package/dist/ios/simctl-exec.d.ts.map +0 -1
- package/dist/ios/simctl-exec.js +0 -55
- package/dist/ios/simctl-exec.js.map +0 -1
- package/dist/ios/simctl-parsers.d.ts +0 -10
- package/dist/ios/simctl-parsers.d.ts.map +0 -1
- package/dist/ios/simctl-parsers.js +0 -29
- package/dist/ios/simctl-parsers.js.map +0 -1
- package/dist/ios/types.d.ts +0 -8
- package/dist/ios/types.d.ts.map +0 -1
- package/dist/ios/types.js +0 -2
- package/dist/ios/types.js.map +0 -1
- package/dist/ios/wda/index.d.ts +0 -4
- package/dist/ios/wda/index.d.ts.map +0 -1
- package/dist/ios/wda/index.js +0 -4
- package/dist/ios/wda/index.js.map +0 -1
- package/dist/ios/wda/wda-client.d.ts +0 -27
- package/dist/ios/wda/wda-client.d.ts.map +0 -1
- package/dist/ios/wda/wda-client.js +0 -237
- package/dist/ios/wda/wda-client.js.map +0 -1
- package/dist/ios/wda/wda-manager.d.ts +0 -18
- package/dist/ios/wda/wda-manager.d.ts.map +0 -1
- package/dist/ios/wda/wda-manager.js +0 -238
- package/dist/ios/wda/wda-manager.js.map +0 -1
- package/dist/ios/wda/wda-types.d.ts +0 -39
- package/dist/ios/wda/wda-types.d.ts.map +0 -1
- package/dist/ios/wda/wda-types.js +0 -2
- package/dist/ios/wda/wda-types.js.map +0 -1
- package/dist/ios/wda-errors.d.ts +0 -8
- package/dist/ios/wda-errors.d.ts.map +0 -1
- package/dist/ios/wda-errors.js +0 -13
- package/dist/ios/wda-errors.js.map +0 -1
- package/dist/ios/wda-payloads.d.ts +0 -32
- package/dist/ios/wda-payloads.d.ts.map +0 -1
- package/dist/ios/wda-payloads.js +0 -31
- package/dist/ios/wda-payloads.js.map +0 -1
- package/dist/plugins/android/index.d.ts +0 -23
- package/dist/plugins/android/index.d.ts.map +0 -1
- package/dist/plugins/android/index.js +0 -45
- package/dist/plugins/android/index.js.map +0 -1
- package/dist/plugins/aurora/index.d.ts +0 -17
- package/dist/plugins/aurora/index.d.ts.map +0 -1
- package/dist/plugins/aurora/index.js +0 -27
- package/dist/plugins/aurora/index.js.map +0 -1
- package/dist/plugins/desktop/index.d.ts +0 -18
- package/dist/plugins/desktop/index.d.ts.map +0 -1
- package/dist/plugins/desktop/index.js +0 -28
- package/dist/plugins/desktop/index.js.map +0 -1
- package/dist/plugins/ios/index.d.ts +0 -17
- package/dist/plugins/ios/index.d.ts.map +0 -1
- package/dist/plugins/ios/index.js +0 -36
- package/dist/plugins/ios/index.js.map +0 -1
- package/dist/plugins/web/index.d.ts +0 -17
- package/dist/plugins/web/index.d.ts.map +0 -1
- package/dist/plugins/web/index.js +0 -27
- package/dist/plugins/web/index.js.map +0 -1
- /package/dist/{adb → ui-tree}/ui-parser/diff-engine.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/diff-engine.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-builder.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-builder.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-finders.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-finders.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/full.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/full.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/index.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/index.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/node-parser.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/node-parser.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/types.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/types.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser.js +0 -0
- /package/dist/{adb → ui-tree}/ui-scoring.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-scoring.js +0 -0
- /package/dist/{adb → ui-tree}/ui-tree-cache.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-tree-cache.js +0 -0
package/dist/adb/client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
|
package/dist/adb/client.js
DELETED
|
@@ -1,462 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "child_process";
|
|
2
|
-
import { resolveAdbPath } from "./resolver.js";
|
|
3
|
-
import { validatePackageName, validatePermission, validateDeviceId } from "../utils/sanitize.js";
|
|
4
|
-
import { EXEC_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
|
|
5
|
-
import { escapeAndroidInputText, splitArgs } from "./text-escape.js";
|
|
6
|
-
import { UiTreeCache } from "./ui-tree-cache.js";
|
|
7
|
-
import { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
|
|
8
|
-
import { parseDevicesOutput, parseScreenSize, parseCurrentActivityFromActivities, parseCurrentFocusFromWindows, parseFocusFromDumpsysWindow, parseClipboardBroadcast, parseLaunchActivity, stripDumpPrefix, splitActionAndUiXml, } from "./parsers.js";
|
|
9
|
-
import { buildLogcatArgs, filterLogsByPackage } from "./logcat.js";
|
|
10
|
-
// Re-export helpers so existing imports of `src/adb/client.js` keep working.
|
|
11
|
-
export { escapeAndroidInputText, splitArgs } from "./text-escape.js";
|
|
12
|
-
export { UiTreeCache } from "./ui-tree-cache.js";
|
|
13
|
-
export { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
|
|
14
|
-
export { EXEC_TIMEOUT_MS, EXEC_RAW_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
|
|
15
|
-
export class AdbClient {
|
|
16
|
-
deviceId;
|
|
17
|
-
// Turbo: UI tree TTL cache (active only when turbo=true is passed)
|
|
18
|
-
uiTreeCache = new UiTreeCache(500);
|
|
19
|
-
constructor(deviceId) {
|
|
20
|
-
if (deviceId) {
|
|
21
|
-
validateDeviceId(deviceId);
|
|
22
|
-
}
|
|
23
|
-
this.deviceId = deviceId;
|
|
24
|
-
}
|
|
25
|
-
get deviceFlag() {
|
|
26
|
-
return this.deviceId ? `-s ${this.deviceId}` : "";
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* SECURITY: All adb invocations route through this argv-form path (execFileSync — no /bin/sh -c).
|
|
30
|
-
* Shell metacharacters in `args` are passed as literal argv slots, not parsed by the host shell.
|
|
31
|
-
* This structurally prevents host-side OS Command Injection (CWE-78) — see issue #40.
|
|
32
|
-
*/
|
|
33
|
-
execArgs(args, deviceIdOverride) {
|
|
34
|
-
return execAdb(args, deviceIdOverride ?? this.deviceId);
|
|
35
|
-
}
|
|
36
|
-
execArgsRaw(args, deviceIdOverride) {
|
|
37
|
-
return execAdbRaw(args, deviceIdOverride ?? this.deviceId);
|
|
38
|
-
}
|
|
39
|
-
async execArgsAsync(args, deviceIdOverride) {
|
|
40
|
-
return execAdbAsync(args, deviceIdOverride ?? this.deviceId);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Execute ADB command and return stdout as string.
|
|
44
|
-
* SECURITY: Command is whitespace-split into argv tokens — shell metachars in the input
|
|
45
|
-
* are NOT interpreted (no /bin/sh -c). For commands needing spaces inside an argument
|
|
46
|
-
* (e.g. text input with spaces), use the new argv-form via internal helpers.
|
|
47
|
-
*/
|
|
48
|
-
exec(command, deviceIdOverride) {
|
|
49
|
-
return this.execArgs(splitArgs(command), deviceIdOverride);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Execute ADB command and return raw bytes (for screenshots)
|
|
53
|
-
*/
|
|
54
|
-
execRaw(command, deviceIdOverride) {
|
|
55
|
-
return this.execArgsRaw(splitArgs(command), deviceIdOverride);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Execute ADB command async (non-blocking)
|
|
59
|
-
*/
|
|
60
|
-
async execAsync(command, deviceIdOverride) {
|
|
61
|
-
return this.execArgsAsync(splitArgs(command), deviceIdOverride);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Execute ADB command async and return raw bytes (for screenshots)
|
|
65
|
-
*/
|
|
66
|
-
async execRawAsync(command, deviceIdOverride) {
|
|
67
|
-
return execAdbRawAsync(splitArgs(command), deviceIdOverride ?? this.deviceId);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get list of connected devices
|
|
71
|
-
*/
|
|
72
|
-
getDevices() {
|
|
73
|
-
const adbBin = resolveAdbPath();
|
|
74
|
-
const output = execFileSync(adbBin, ["devices", "-l"], { encoding: "utf-8", timeout: EXEC_TIMEOUT_MS });
|
|
75
|
-
return parseDevicesOutput(output);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Set active device
|
|
79
|
-
*/
|
|
80
|
-
setDevice(deviceId) {
|
|
81
|
-
validateDeviceId(deviceId);
|
|
82
|
-
this.deviceId = deviceId;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get currently configured device ID
|
|
86
|
-
*/
|
|
87
|
-
getDeviceId() {
|
|
88
|
-
return this.deviceId;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Take screenshot and return raw PNG buffer
|
|
92
|
-
*/
|
|
93
|
-
screenshotRaw() {
|
|
94
|
-
return this.execRaw("exec-out screencap -p");
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Take screenshot async (non-blocking)
|
|
98
|
-
*/
|
|
99
|
-
async screenshotRawAsync() {
|
|
100
|
-
return this.execRawAsync("exec-out screencap -p");
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Take screenshot and return as base64 PNG (legacy)
|
|
104
|
-
*/
|
|
105
|
-
screenshot() {
|
|
106
|
-
return this.screenshotRaw().toString("base64");
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Tap at coordinates
|
|
110
|
-
*/
|
|
111
|
-
tap(x, y) {
|
|
112
|
-
this.exec(`shell input tap ${x} ${y}`);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Double tap at coordinates.
|
|
116
|
-
* Device-side composition via single sh -c argv slot — host shell never parses the metachars.
|
|
117
|
-
* Inputs are validated numerics; user-controlled strings never reach this code path.
|
|
118
|
-
*/
|
|
119
|
-
doubleTap(x, y, intervalMs = 100) {
|
|
120
|
-
const xi = Math.trunc(x);
|
|
121
|
-
const yi = Math.trunc(y);
|
|
122
|
-
const seconds = (Math.max(0, intervalMs) / 1000).toFixed(2);
|
|
123
|
-
const deviceCmd = `input tap ${xi} ${yi} && sleep ${seconds} && input tap ${xi} ${yi}`;
|
|
124
|
-
this.execArgs(["shell", "sh", "-c", deviceCmd]);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Select all text in focused input
|
|
128
|
-
*/
|
|
129
|
-
selectAll() {
|
|
130
|
-
this.exec("shell input keyevent 256"); // MOVE_HOME
|
|
131
|
-
this.exec("shell input keyevent 268"); // SHIFT+MOVE_END
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Copy to clipboard
|
|
135
|
-
*/
|
|
136
|
-
copyToClipboard() {
|
|
137
|
-
this.exec("shell input keyevent 278"); // KEYCODE_COPY
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Paste from clipboard
|
|
141
|
-
*/
|
|
142
|
-
pasteFromClipboard() {
|
|
143
|
-
this.exec("shell input keyevent 279"); // KEYCODE_PASTE
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Get clipboard text
|
|
147
|
-
*/
|
|
148
|
-
getClipboardText() {
|
|
149
|
-
try {
|
|
150
|
-
return this.exec("shell cmd clipboard get-primary-clip");
|
|
151
|
-
}
|
|
152
|
-
catch {
|
|
153
|
-
try {
|
|
154
|
-
const result = this.exec("shell am broadcast -a clipper.get");
|
|
155
|
-
return parseClipboardBroadcast(result) ?? "(clipboard not available)";
|
|
156
|
-
}
|
|
157
|
-
catch {
|
|
158
|
-
return "(clipboard access not available — requires API 29+ or clipper app)";
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Long press at coordinates
|
|
164
|
-
*/
|
|
165
|
-
longPress(x, y, durationMs = 1000) {
|
|
166
|
-
this.exec(`shell input swipe ${x} ${y} ${x} ${y} ${durationMs}`);
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Swipe gesture
|
|
170
|
-
*/
|
|
171
|
-
swipe(x1, y1, x2, y2, durationMs = 300) {
|
|
172
|
-
this.exec(`shell input swipe ${x1} ${y1} ${x2} ${y2} ${durationMs}`);
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Swipe in direction (uses screen center)
|
|
176
|
-
*/
|
|
177
|
-
swipeDirection(direction, distance = 800) {
|
|
178
|
-
// Get screen size
|
|
179
|
-
const { width, height } = parseScreenSize(this.exec("shell wm size"));
|
|
180
|
-
const centerX = Math.floor(width / 2);
|
|
181
|
-
const centerY = Math.floor(height / 2);
|
|
182
|
-
const coords = {
|
|
183
|
-
up: [centerX, centerY + distance / 2, centerX, centerY - distance / 2],
|
|
184
|
-
down: [centerX, centerY - distance / 2, centerX, centerY + distance / 2],
|
|
185
|
-
left: [centerX + distance / 2, centerY, centerX - distance / 2, centerY],
|
|
186
|
-
right: [centerX - distance / 2, centerY, centerX + distance / 2, centerY],
|
|
187
|
-
};
|
|
188
|
-
const [x1, y1, x2, y2] = coords[direction];
|
|
189
|
-
this.swipe(x1, y1, x2, y2);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Input text.
|
|
193
|
-
* The full `shell input text "<escaped>"` string passes as a SINGLE argv slot to adb,
|
|
194
|
-
* so the host shell never parses it (host-side CWE-78 closed). adb ships the string
|
|
195
|
-
* verbatim to the device shell, which parses the double-quoted form safely thanks to
|
|
196
|
-
* the per-character escape below.
|
|
197
|
-
*/
|
|
198
|
-
inputText(text) {
|
|
199
|
-
const escaped = escapeAndroidInputText(text);
|
|
200
|
-
this.execArgs(["shell", `input text "${escaped}"`]);
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Press key by name or keycode
|
|
204
|
-
*/
|
|
205
|
-
pressKey(key) {
|
|
206
|
-
const keyCode = resolveKeyCode(key, ANDROID_KEYCODES);
|
|
207
|
-
this.exec(`shell input keyevent ${keyCode}`);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Invalidate the turbo UI tree cache.
|
|
211
|
-
* Call after actions that mutate the screen (tap, swipe, input, etc.)
|
|
212
|
-
* so the next getUiHierarchy call fetches fresh data.
|
|
213
|
-
*/
|
|
214
|
-
invalidateUiTreeCache() {
|
|
215
|
-
this.uiTreeCache.invalidate();
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Get UI hierarchy XML (sync — blocks event loop)
|
|
219
|
-
*/
|
|
220
|
-
getUiHierarchy(turbo) {
|
|
221
|
-
if (turbo) {
|
|
222
|
-
const cached = this.uiTreeCache.get();
|
|
223
|
-
if (cached !== null)
|
|
224
|
-
return cached;
|
|
225
|
-
}
|
|
226
|
-
let xml;
|
|
227
|
-
if (turbo) {
|
|
228
|
-
// Single ADB call: pipe XML directly to stdout
|
|
229
|
-
xml = stripDumpPrefix(this.exec("exec-out uiautomator dump /dev/tty"));
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
this.exec("shell uiautomator dump /sdcard/ui.xml");
|
|
233
|
-
xml = this.exec("shell cat /sdcard/ui.xml");
|
|
234
|
-
}
|
|
235
|
-
this.uiTreeCache.set(xml);
|
|
236
|
-
return xml;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Get UI hierarchy XML async (non-blocking)
|
|
240
|
-
*/
|
|
241
|
-
async getUiHierarchyAsync(turbo) {
|
|
242
|
-
if (turbo) {
|
|
243
|
-
const cached = this.uiTreeCache.get();
|
|
244
|
-
if (cached !== null)
|
|
245
|
-
return cached;
|
|
246
|
-
}
|
|
247
|
-
let xml;
|
|
248
|
-
if (turbo) {
|
|
249
|
-
// Single ADB call: pipe XML directly to stdout
|
|
250
|
-
xml = stripDumpPrefix(await this.execAsync("exec-out uiautomator dump /dev/tty"));
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
await this.execAsync("shell uiautomator dump /sdcard/ui.xml");
|
|
254
|
-
xml = await this.execAsync("shell cat /sdcard/ui.xml");
|
|
255
|
-
}
|
|
256
|
-
this.uiTreeCache.set(xml);
|
|
257
|
-
return xml;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Execute an action + uiautomator dump in a single adb shell invocation (turbo only).
|
|
261
|
-
* Reduces two process spawns to one, saving ~150-300ms per step.
|
|
262
|
-
* Returns { actionOutput: string; uiXml: string }.
|
|
263
|
-
*
|
|
264
|
-
* SECURITY: Device-side composition via single sh -c argv slot — host shell never parses
|
|
265
|
-
* the metachars. `actionCommand` originates from internal turbo helpers (tap/swipe/press),
|
|
266
|
-
* which validate numeric inputs; user-controlled strings do not reach this path.
|
|
267
|
-
*/
|
|
268
|
-
async execWithUiDump(actionCommand, deviceIdOverride) {
|
|
269
|
-
const combined = `${actionCommand} && uiautomator dump /dev/tty`;
|
|
270
|
-
const raw = await this.execArgsAsync(["shell", "sh", "-c", combined], deviceIdOverride);
|
|
271
|
-
return splitActionAndUiXml(raw);
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Tap at coordinates (async, non-blocking — for turbo mode).
|
|
275
|
-
*/
|
|
276
|
-
async tapAsync(x, y, deviceIdOverride) {
|
|
277
|
-
await this.execAsync(`shell input tap ${x} ${y}`, deviceIdOverride);
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Swipe gesture (async, non-blocking — for turbo mode).
|
|
281
|
-
*/
|
|
282
|
-
async swipeAsync(x1, y1, x2, y2, durationMs = 300, deviceIdOverride) {
|
|
283
|
-
await this.execAsync(`shell input swipe ${x1} ${y1} ${x2} ${y2} ${durationMs}`, deviceIdOverride);
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Press key (async, non-blocking — for turbo mode).
|
|
287
|
-
*/
|
|
288
|
-
async pressKeyAsync(key, deviceIdOverride) {
|
|
289
|
-
const keyCode = resolveKeyCode(key, ANDROID_KEYCODES_FAST);
|
|
290
|
-
await this.execAsync(`shell input keyevent ${keyCode}`, deviceIdOverride);
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* Input text (async, non-blocking — for turbo mode).
|
|
294
|
-
*/
|
|
295
|
-
async inputTextAsync(text, deviceIdOverride) {
|
|
296
|
-
const escaped = escapeAndroidInputText(text);
|
|
297
|
-
await this.execArgsAsync(["shell", `input text "${escaped}"`], deviceIdOverride);
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Launch app by package name
|
|
301
|
-
*/
|
|
302
|
-
launchApp(packageName) {
|
|
303
|
-
validatePackageName(packageName);
|
|
304
|
-
// Try to get launch activity
|
|
305
|
-
try {
|
|
306
|
-
const output = this.exec(`shell cmd package resolve-activity --brief ${packageName}`);
|
|
307
|
-
const activity = parseLaunchActivity(output);
|
|
308
|
-
if (activity) {
|
|
309
|
-
this.exec(`shell am start -n ${activity}`);
|
|
310
|
-
return `Launched ${activity}`;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
catch {
|
|
314
|
-
// Fallback: use monkey to launch
|
|
315
|
-
}
|
|
316
|
-
this.exec(`shell monkey -p ${packageName} -c android.intent.category.LAUNCHER 1`);
|
|
317
|
-
return `Launched ${packageName}`;
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Stop app
|
|
321
|
-
*/
|
|
322
|
-
stopApp(packageName) {
|
|
323
|
-
validatePackageName(packageName);
|
|
324
|
-
this.exec(`shell am force-stop ${packageName}`);
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Clear app data
|
|
328
|
-
*/
|
|
329
|
-
clearAppData(packageName) {
|
|
330
|
-
validatePackageName(packageName);
|
|
331
|
-
this.exec(`shell pm clear ${packageName}`);
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Grant runtime permission to app
|
|
335
|
-
*/
|
|
336
|
-
grantPermission(packageName, permission) {
|
|
337
|
-
validatePackageName(packageName);
|
|
338
|
-
validatePermission(permission);
|
|
339
|
-
this.exec(`shell pm grant ${packageName} ${permission}`);
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Revoke runtime permission from app
|
|
343
|
-
*/
|
|
344
|
-
revokePermission(packageName, permission) {
|
|
345
|
-
validatePackageName(packageName);
|
|
346
|
-
validatePermission(permission);
|
|
347
|
-
this.exec(`shell pm revoke ${packageName} ${permission}`);
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Reset all permissions for app (clears app data)
|
|
351
|
-
*/
|
|
352
|
-
resetPermissions(packageName) {
|
|
353
|
-
validatePackageName(packageName);
|
|
354
|
-
this.exec(`shell pm reset-permissions ${packageName}`);
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Install APK
|
|
358
|
-
*/
|
|
359
|
-
installApk(apkPath) {
|
|
360
|
-
return this.execArgs(["install", "-r", apkPath]);
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Uninstall app
|
|
364
|
-
*/
|
|
365
|
-
uninstallApp(packageName) {
|
|
366
|
-
validatePackageName(packageName);
|
|
367
|
-
return this.exec(`uninstall ${packageName}`);
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Get current activity
|
|
371
|
-
*/
|
|
372
|
-
getCurrentActivity() {
|
|
373
|
-
try {
|
|
374
|
-
const output = this.exec("shell dumpsys activity activities");
|
|
375
|
-
const resumed = parseCurrentActivityFromActivities(output);
|
|
376
|
-
if (resumed)
|
|
377
|
-
return resumed;
|
|
378
|
-
// Fallback: try getting current focus from window manager
|
|
379
|
-
const wmOutput = this.exec("shell dumpsys window windows");
|
|
380
|
-
const focused = parseCurrentFocusFromWindows(wmOutput);
|
|
381
|
-
if (focused)
|
|
382
|
-
return focused;
|
|
383
|
-
return "unknown";
|
|
384
|
-
}
|
|
385
|
-
catch {
|
|
386
|
-
// Try alternative method — Node-side filter replaces device-side `| grep`.
|
|
387
|
-
try {
|
|
388
|
-
const output = this.execArgs(["shell", "dumpsys", "window"]);
|
|
389
|
-
return parseFocusFromDumpsysWindow(output) ?? "unknown";
|
|
390
|
-
}
|
|
391
|
-
catch {
|
|
392
|
-
return "unknown (could not determine)";
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Get screen size
|
|
398
|
-
*/
|
|
399
|
-
getScreenSize() {
|
|
400
|
-
return parseScreenSize(this.exec("shell wm size"));
|
|
401
|
-
}
|
|
402
|
-
/**
|
|
403
|
-
* Wait for device
|
|
404
|
-
*/
|
|
405
|
-
waitForDevice() {
|
|
406
|
-
this.exec("wait-for-device");
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Execute shell command
|
|
410
|
-
*/
|
|
411
|
-
shell(command) {
|
|
412
|
-
return this.exec(`shell ${command}`);
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Get device logs (logcat)
|
|
416
|
-
* @param options - filter options
|
|
417
|
-
*/
|
|
418
|
-
getLogs(options = {}) {
|
|
419
|
-
const args = buildLogcatArgs(options);
|
|
420
|
-
const output = this.execArgs(args);
|
|
421
|
-
return options.package ? filterLogsByPackage(output, options.package) : output;
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Clear logcat buffer
|
|
425
|
-
*/
|
|
426
|
-
clearLogs() {
|
|
427
|
-
this.exec("logcat -c");
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Get network stats (first 100 lines).
|
|
431
|
-
* Node-side filter replaces device-side `| head -100` so we can use argv-form (no shell pipe).
|
|
432
|
-
*/
|
|
433
|
-
getNetworkStats() {
|
|
434
|
-
const output = this.execArgs(["shell", "dumpsys", "netstats"]);
|
|
435
|
-
return output.split("\n").slice(0, 100).join("\n");
|
|
436
|
-
}
|
|
437
|
-
/**
|
|
438
|
-
* Get battery info
|
|
439
|
-
*/
|
|
440
|
-
getBatteryInfo() {
|
|
441
|
-
return this.exec("shell dumpsys battery");
|
|
442
|
-
}
|
|
443
|
-
/**
|
|
444
|
-
* Get memory info
|
|
445
|
-
*/
|
|
446
|
-
getMemoryInfo(packageName) {
|
|
447
|
-
if (packageName) {
|
|
448
|
-
validatePackageName(packageName);
|
|
449
|
-
return this.execArgs(["shell", "dumpsys", "meminfo", packageName]);
|
|
450
|
-
}
|
|
451
|
-
const output = this.execArgs(["shell", "cat", "/proc/meminfo"]);
|
|
452
|
-
return output.split("\n").slice(0, 20).join("\n");
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* Get CPU info (first 20 lines).
|
|
456
|
-
*/
|
|
457
|
-
getCpuInfo() {
|
|
458
|
-
const output = this.execArgs(["shell", "top", "-n", "1"]);
|
|
459
|
-
return output.split("\n").slice(0, 20).join("\n");
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
//# sourceMappingURL=client.js.map
|
package/dist/adb/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
|
package/dist/adb/exec.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Low-level adb invocation helpers.
|
|
3
|
-
*
|
|
4
|
-
* All public surfaces here go through execFile / execFileSync — never `/bin/sh -c`.
|
|
5
|
-
* Shell metacharacters in `args` are passed as literal argv slots, not parsed by
|
|
6
|
-
* the host shell. This structurally prevents host-side OS Command Injection
|
|
7
|
-
* (CWE-78) — see issue #40.
|
|
8
|
-
*/
|
|
9
|
-
/** Default timeout for text adb commands (`shell ...`, `devices`, etc.). */
|
|
10
|
-
export declare const EXEC_TIMEOUT_MS = 15000;
|
|
11
|
-
/** Extended timeout for raw byte adb commands (screenshots, file pulls). */
|
|
12
|
-
export declare const EXEC_RAW_TIMEOUT_MS = 30000;
|
|
13
|
-
/** Build the `-s <id>` argv slice for an optional device override. */
|
|
14
|
-
export declare function deviceArgs(deviceId: string | undefined): string[];
|
|
15
|
-
/** Synchronous text invocation: returns trimmed stdout. */
|
|
16
|
-
export declare function execAdb(args: string[], deviceId: string | undefined): string;
|
|
17
|
-
/** Synchronous raw-bytes invocation (e.g. PNG screenshot). */
|
|
18
|
-
export declare function execAdbRaw(args: string[], deviceId: string | undefined): Buffer;
|
|
19
|
-
/** Asynchronous text invocation. */
|
|
20
|
-
export declare function execAdbAsync(args: string[], deviceId: string | undefined): Promise<string>;
|
|
21
|
-
/** Asynchronous raw-bytes invocation. */
|
|
22
|
-
export declare function execAdbRawAsync(args: string[], deviceId: string | undefined): Promise<Buffer>;
|
|
23
|
-
//# sourceMappingURL=exec.d.ts.map
|
package/dist/adb/exec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/adb/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,4EAA4E;AAC5E,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAK1C,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAEjE;AAED,2DAA2D;AAC3D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAY5E;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAW/E;AAED,oCAAoC;AACpC,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAED,yCAAyC;AACzC,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAanG"}
|
package/dist/adb/exec.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Low-level adb invocation helpers.
|
|
3
|
-
*
|
|
4
|
-
* All public surfaces here go through execFile / execFileSync — never `/bin/sh -c`.
|
|
5
|
-
* Shell metacharacters in `args` are passed as literal argv slots, not parsed by
|
|
6
|
-
* the host shell. This structurally prevents host-side OS Command Injection
|
|
7
|
-
* (CWE-78) — see issue #40.
|
|
8
|
-
*/
|
|
9
|
-
import { execFile, execFileSync } from "child_process";
|
|
10
|
-
import { promisify } from "util";
|
|
11
|
-
import { classifyAdbError } from "../errors.js";
|
|
12
|
-
import { resolveAdbPath } from "./resolver.js";
|
|
13
|
-
const execFileAsync = promisify(execFile);
|
|
14
|
-
/** Default timeout for text adb commands (`shell ...`, `devices`, etc.). */
|
|
15
|
-
export const EXEC_TIMEOUT_MS = 15_000;
|
|
16
|
-
/** Extended timeout for raw byte adb commands (screenshots, file pulls). */
|
|
17
|
-
export const EXEC_RAW_TIMEOUT_MS = 30_000;
|
|
18
|
-
/** Cap stdout buffers at 50 MiB — sufficient for a 4K PNG screenshot. */
|
|
19
|
-
const MAX_BUFFER = 50 * 1024 * 1024;
|
|
20
|
-
/** Build the `-s <id>` argv slice for an optional device override. */
|
|
21
|
-
export function deviceArgs(deviceId) {
|
|
22
|
-
return deviceId ? ["-s", deviceId] : [];
|
|
23
|
-
}
|
|
24
|
-
/** Synchronous text invocation: returns trimmed stdout. */
|
|
25
|
-
export function execAdb(args, deviceId) {
|
|
26
|
-
const adbBin = resolveAdbPath();
|
|
27
|
-
const fullArgs = [...deviceArgs(deviceId), ...args];
|
|
28
|
-
try {
|
|
29
|
-
return execFileSync(adbBin, fullArgs, {
|
|
30
|
-
encoding: "utf-8",
|
|
31
|
-
timeout: EXEC_TIMEOUT_MS,
|
|
32
|
-
maxBuffer: MAX_BUFFER,
|
|
33
|
-
}).trim();
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
throw translateExecError(error, fullArgs, EXEC_TIMEOUT_MS);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/** Synchronous raw-bytes invocation (e.g. PNG screenshot). */
|
|
40
|
-
export function execAdbRaw(args, deviceId) {
|
|
41
|
-
const adbBin = resolveAdbPath();
|
|
42
|
-
const fullArgs = [...deviceArgs(deviceId), ...args];
|
|
43
|
-
try {
|
|
44
|
-
return execFileSync(adbBin, fullArgs, {
|
|
45
|
-
timeout: EXEC_RAW_TIMEOUT_MS,
|
|
46
|
-
maxBuffer: MAX_BUFFER,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
throw translateExecError(error, fullArgs, EXEC_RAW_TIMEOUT_MS);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/** Asynchronous text invocation. */
|
|
54
|
-
export async function execAdbAsync(args, deviceId) {
|
|
55
|
-
const adbBin = resolveAdbPath();
|
|
56
|
-
const fullArgs = [...deviceArgs(deviceId), ...args];
|
|
57
|
-
try {
|
|
58
|
-
const { stdout } = await execFileAsync(adbBin, fullArgs, {
|
|
59
|
-
timeout: EXEC_TIMEOUT_MS,
|
|
60
|
-
maxBuffer: MAX_BUFFER,
|
|
61
|
-
encoding: "utf-8",
|
|
62
|
-
});
|
|
63
|
-
return stdout.trim();
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
throw translateExecError(error, fullArgs, EXEC_TIMEOUT_MS);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/** Asynchronous raw-bytes invocation. */
|
|
70
|
-
export async function execAdbRawAsync(args, deviceId) {
|
|
71
|
-
const adbBin = resolveAdbPath();
|
|
72
|
-
const fullArgs = [...deviceArgs(deviceId), ...args];
|
|
73
|
-
try {
|
|
74
|
-
const { stdout } = await execFileAsync(adbBin, fullArgs, {
|
|
75
|
-
timeout: EXEC_RAW_TIMEOUT_MS,
|
|
76
|
-
maxBuffer: MAX_BUFFER,
|
|
77
|
-
encoding: "buffer",
|
|
78
|
-
});
|
|
79
|
-
return stdout;
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
throw translateExecError(error, fullArgs, EXEC_RAW_TIMEOUT_MS);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Convert a child_process error into a typed MobileError (via classifyAdbError) or
|
|
87
|
-
* a clear timeout message. The display string mirrors what a developer would type
|
|
88
|
-
* at a terminal: `adb -s <id> <args>`.
|
|
89
|
-
*/
|
|
90
|
-
function translateExecError(error, fullArgs, timeoutMs) {
|
|
91
|
-
const e = error;
|
|
92
|
-
const display = `adb ${fullArgs.join(" ")}`;
|
|
93
|
-
if (e.killed === true || e.signal === "SIGTERM") {
|
|
94
|
-
return new Error(`ADB command timed out after ${timeoutMs}ms: ${display}. Device may be disconnected or screen locked.`);
|
|
95
|
-
}
|
|
96
|
-
return classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=exec.js.map
|
package/dist/adb/exec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/adb/exec.ts"],"names":[],"mappings":"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"}
|
package/dist/adb/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { AdbClient } from "./client.js";
|
|
2
|
-
export type { Device } from "./client.js";
|
|
3
|
-
export { parseUiHierarchy, findByText, findByResourceId, findByClassName, findClickable, findElements, formatElement, formatUiTree, } from "./ui-parser.js";
|
|
4
|
-
export type { Bounds, UiElement } from "./ui-parser.js";
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/adb/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/adb/index.js
DELETED
package/dist/adb/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,gBAAgB,CAAC"}
|
package/dist/adb/keycodes.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Android KeyEvent constants used by AdbClient.pressKey / pressKeyAsync.
|
|
3
|
-
*
|
|
4
|
-
* Values mirror `android.view.KeyEvent.KEYCODE_*` and are the integers consumed
|
|
5
|
-
* by `adb shell input keyevent <code>`. Two maps are kept on purpose:
|
|
6
|
-
*
|
|
7
|
-
* - `ANDROID_KEYCODES` — the full set used by the sync pressKey path.
|
|
8
|
-
* - `ANDROID_KEYCODES_FAST` — a smaller hot-path subset used by the async
|
|
9
|
-
* "turbo" pressKey to avoid building the larger map on every call.
|
|
10
|
-
*
|
|
11
|
-
* `resolveKeyCode` accepts a symbolic name (case-insensitive) or a raw numeric
|
|
12
|
-
* string, validating both into a finite integer.
|
|
13
|
-
*/
|
|
14
|
-
export declare const ANDROID_KEYCODES: Record<string, number>;
|
|
15
|
-
export declare const ANDROID_KEYCODES_FAST: Record<string, number>;
|
|
16
|
-
/**
|
|
17
|
-
* Translate a symbolic key name or numeric string into the corresponding
|
|
18
|
-
* Android keyevent integer. Throws if `key` is neither a known name nor a
|
|
19
|
-
* parsable integer.
|
|
20
|
-
*/
|
|
21
|
-
export declare function resolveKeyCode(key: string, table?: Record<string, number>): number;
|
|
22
|
-
//# sourceMappingURL=keycodes.d.ts.map
|