claude-in-mobile 3.14.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/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 -204
- package/dist/ios/client.d.ts.map +0 -1
- package/dist/ios/client.js +0 -483
- package/dist/ios/client.js.map +0 -1
- package/dist/ios/go-ios/client.d.ts +0 -23
- package/dist/ios/go-ios/client.d.ts.map +0 -1
- package/dist/ios/go-ios/client.js +0 -51
- package/dist/ios/go-ios/client.js.map +0 -1
- package/dist/ios/go-ios/index.d.ts +0 -4
- package/dist/ios/go-ios/index.d.ts.map +0 -1
- package/dist/ios/go-ios/index.js +0 -3
- package/dist/ios/go-ios/index.js.map +0 -1
- package/dist/ios/go-ios/parsers.d.ts +0 -28
- package/dist/ios/go-ios/parsers.d.ts.map +0 -1
- package/dist/ios/go-ios/parsers.js +0 -71
- package/dist/ios/go-ios/parsers.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 -33
- package/dist/ios/wda/wda-client.d.ts.map +0 -1
- package/dist/ios/wda/wda-client.js +0 -250
- package/dist/ios/wda/wda-client.js.map +0 -1
- package/dist/ios/wda/wda-manager.d.ts +0 -34
- package/dist/ios/wda/wda-manager.d.ts.map +0 -1
- package/dist/ios/wda/wda-manager.js +0 -392
- 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/ios/client.js
DELETED
|
@@ -1,483 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "child_process";
|
|
2
|
-
import { tmpdir } from "os";
|
|
3
|
-
import { join } from "path";
|
|
4
|
-
import { readFileSync, unlinkSync } from "fs";
|
|
5
|
-
import { WDAManager } from "./wda/index.js";
|
|
6
|
-
import { classifySimctlError } from "../errors.js";
|
|
7
|
-
import { validateDeviceId, validateBundleId } from "../utils/sanitize.js";
|
|
8
|
-
import { execSimctl, execSimctlQuiet, SIMCTL_EXEC_TIMEOUT_MS } from "./simctl-exec.js";
|
|
9
|
-
import { buildAppLogArgs, buildLogShowArgs, formatLatLon, sliceLastLines, splitArgs, } from "./simctl-commands.js";
|
|
10
|
-
import { parseDevicesJson } from "./simctl-parsers.js";
|
|
11
|
-
import { listPhysicalDevices } from "./go-ios/index.js";
|
|
12
|
-
import { wdaRequiredError } from "./wda-errors.js";
|
|
13
|
-
import { ACTIVATE_SIMULATOR_OSASCRIPT_ARGS, HOME_KEY_OSASCRIPT_ARGS, mapKey, } from "./keymap.js";
|
|
14
|
-
import { buildFindElementsSelectors, buildSwipeCoords, } from "./wda-payloads.js";
|
|
15
|
-
export class IosClient {
|
|
16
|
-
deviceId;
|
|
17
|
-
wdaManager = new WDAManager();
|
|
18
|
-
wdaClient;
|
|
19
|
-
constructor(deviceId) {
|
|
20
|
-
if (deviceId) {
|
|
21
|
-
validateDeviceId(deviceId);
|
|
22
|
-
}
|
|
23
|
-
this.deviceId = deviceId;
|
|
24
|
-
}
|
|
25
|
-
cleanup() {
|
|
26
|
-
this.wdaManager.cleanup();
|
|
27
|
-
this.wdaClient = undefined;
|
|
28
|
-
}
|
|
29
|
-
/** True unless the device id belongs to a connected physical device. */
|
|
30
|
-
isSimulatorDevice(deviceId) {
|
|
31
|
-
try {
|
|
32
|
-
return !listPhysicalDevices().some((d) => d.id === deviceId);
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
async ensureWDA(deviceIdOverride) {
|
|
39
|
-
const effectiveId = deviceIdOverride ?? this.deviceId;
|
|
40
|
-
if (!effectiveId) {
|
|
41
|
-
const booted = this.getBootedDevices();
|
|
42
|
-
if (booted.length === 0) {
|
|
43
|
-
throw new Error("No booted iOS simulator found. Boot a simulator first.");
|
|
44
|
-
}
|
|
45
|
-
this.deviceId = booted[0].id;
|
|
46
|
-
this.wdaClient = await this.wdaManager.ensureWDAReady(this.deviceId, true);
|
|
47
|
-
return this.wdaClient;
|
|
48
|
-
}
|
|
49
|
-
// Per-call override: don't cache on instance if different from default
|
|
50
|
-
if (deviceIdOverride && deviceIdOverride !== this.deviceId) {
|
|
51
|
-
return this.wdaManager.ensureWDAReady(deviceIdOverride, this.isSimulatorDevice(deviceIdOverride));
|
|
52
|
-
}
|
|
53
|
-
if (!this.wdaClient) {
|
|
54
|
-
this.wdaClient = await this.wdaManager.ensureWDAReady(effectiveId, this.isSimulatorDevice(effectiveId));
|
|
55
|
-
}
|
|
56
|
-
return this.wdaClient;
|
|
57
|
-
}
|
|
58
|
-
/** Thin instance wrapper around `execSimctl` (argv-form, no shell). */
|
|
59
|
-
execArgs(args) {
|
|
60
|
-
return execSimctl(args);
|
|
61
|
-
}
|
|
62
|
-
/** Thin instance wrapper around `execSimctlQuiet` (stderr suppressed). */
|
|
63
|
-
execArgsQuiet(args) {
|
|
64
|
-
return execSimctlQuiet(args);
|
|
65
|
-
}
|
|
66
|
-
/** Legacy string form: whitespace-split into argv tokens, then `execSimctl`. */
|
|
67
|
-
exec(command) {
|
|
68
|
-
return execSimctl(splitArgs(command));
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Get the active device ID or 'booted'
|
|
72
|
-
*/
|
|
73
|
-
get targetDevice() {
|
|
74
|
-
return this.deviceId ?? "booted";
|
|
75
|
-
}
|
|
76
|
-
/** Resolve target device for a per-call override or fall back to instance default. */
|
|
77
|
-
targetDeviceFor(deviceIdOverride) {
|
|
78
|
-
return deviceIdOverride ?? this.deviceId ?? "booted";
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get list of iOS devices: simulators (simctl) plus connected physical
|
|
82
|
-
* devices (go-ios). Physical discovery is best-effort — if go-ios is not
|
|
83
|
-
* installed it contributes nothing and simulator behaviour is unchanged.
|
|
84
|
-
*/
|
|
85
|
-
getDevices() {
|
|
86
|
-
const simulators = parseDevicesJson(this.exec("list devices -j"));
|
|
87
|
-
return [...simulators, ...listPhysicalDevices()];
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Get booted simulators
|
|
91
|
-
*/
|
|
92
|
-
getBootedDevices() {
|
|
93
|
-
return this.getDevices().filter(d => d.state === "booted");
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Set active device
|
|
97
|
-
*/
|
|
98
|
-
setDevice(deviceId) {
|
|
99
|
-
validateDeviceId(deviceId);
|
|
100
|
-
if (this.deviceId !== deviceId) {
|
|
101
|
-
this.wdaClient = undefined;
|
|
102
|
-
}
|
|
103
|
-
this.deviceId = deviceId;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Get currently configured device ID
|
|
107
|
-
*/
|
|
108
|
-
getDeviceId() {
|
|
109
|
-
return this.deviceId;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Boot simulator
|
|
113
|
-
*/
|
|
114
|
-
boot(deviceId) {
|
|
115
|
-
const target = deviceId ?? this.deviceId;
|
|
116
|
-
if (!target)
|
|
117
|
-
throw new Error("No device specified");
|
|
118
|
-
validateDeviceId(target);
|
|
119
|
-
this.execArgs(["boot", target]);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Shutdown simulator
|
|
123
|
-
*/
|
|
124
|
-
shutdown(deviceId) {
|
|
125
|
-
const target = deviceId ?? this.deviceId ?? "booted";
|
|
126
|
-
if (target !== "booted")
|
|
127
|
-
validateDeviceId(target);
|
|
128
|
-
this.execArgs(["shutdown", target]);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Take screenshot and return raw PNG buffer
|
|
132
|
-
*/
|
|
133
|
-
screenshotRaw(deviceIdOverride) {
|
|
134
|
-
const target = this.targetDeviceFor(deviceIdOverride);
|
|
135
|
-
const tmpFile = join(tmpdir(), `ios-screenshot-${Date.now()}.png`);
|
|
136
|
-
try {
|
|
137
|
-
// Path passed as distinct argv slot — spaces in tmpdir are safe.
|
|
138
|
-
this.execArgs(["io", target, "screenshot", tmpFile]);
|
|
139
|
-
return readFileSync(tmpFile);
|
|
140
|
-
}
|
|
141
|
-
finally {
|
|
142
|
-
try {
|
|
143
|
-
unlinkSync(tmpFile);
|
|
144
|
-
}
|
|
145
|
-
catch { }
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Take screenshot and return as base64 (legacy)
|
|
150
|
-
*/
|
|
151
|
-
screenshot(deviceIdOverride) {
|
|
152
|
-
return this.screenshotRaw(deviceIdOverride).toString("base64");
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Async screenshot that works for physical devices too: routes physical
|
|
156
|
-
* devices through WDA `/screenshot` (simctl io only addresses simulators),
|
|
157
|
-
* and simulators through the fast sync simctl path.
|
|
158
|
-
*/
|
|
159
|
-
async screenshotRawAsync(deviceIdOverride) {
|
|
160
|
-
const target = deviceIdOverride ?? this.deviceId;
|
|
161
|
-
if (target && !this.isSimulatorDevice(target)) {
|
|
162
|
-
const wdaClient = await this.ensureWDA(deviceIdOverride);
|
|
163
|
-
return wdaClient.screenshot();
|
|
164
|
-
}
|
|
165
|
-
return this.screenshotRaw(deviceIdOverride);
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Tap at coordinates
|
|
169
|
-
*/
|
|
170
|
-
async tap(x, y, deviceIdOverride) {
|
|
171
|
-
try {
|
|
172
|
-
const wdaClient = await this.ensureWDA(deviceIdOverride);
|
|
173
|
-
await wdaClient.tapByCoordinates(x, y);
|
|
174
|
-
}
|
|
175
|
-
catch (error) {
|
|
176
|
-
throw wdaRequiredError("Tap", error);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Swipe gesture
|
|
181
|
-
*/
|
|
182
|
-
async swipe(x1, y1, x2, y2, durationMs = 300, deviceIdOverride) {
|
|
183
|
-
try {
|
|
184
|
-
const wdaClient = await this.ensureWDA(deviceIdOverride);
|
|
185
|
-
await wdaClient.swipe(x1, y1, x2, y2, durationMs);
|
|
186
|
-
}
|
|
187
|
-
catch (error) {
|
|
188
|
-
throw wdaRequiredError("Swipe", error);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Long press at coordinates via WDA Actions API
|
|
193
|
-
*/
|
|
194
|
-
async longPress(x, y, durationMs = 1000, deviceIdOverride) {
|
|
195
|
-
try {
|
|
196
|
-
const wdaClient = await this.ensureWDA(deviceIdOverride);
|
|
197
|
-
await wdaClient.longPress(x, y, durationMs);
|
|
198
|
-
}
|
|
199
|
-
catch (error) {
|
|
200
|
-
throw wdaRequiredError("Long press", error);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Swipe in direction (uses actual screen center from WDA, not hardcoded)
|
|
205
|
-
*/
|
|
206
|
-
async swipeDirection(direction, distance = 400) {
|
|
207
|
-
// Get actual screen size from WDA instead of using hardcoded values
|
|
208
|
-
let centerX = 200;
|
|
209
|
-
let centerY = 400;
|
|
210
|
-
try {
|
|
211
|
-
const wdaClient = await this.ensureWDA();
|
|
212
|
-
const size = await wdaClient.getWindowSize();
|
|
213
|
-
centerX = Math.floor(size.width / 2);
|
|
214
|
-
centerY = Math.floor(size.height / 2);
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
// Fallback to defaults if WDA not available
|
|
218
|
-
}
|
|
219
|
-
const { x1, y1, x2, y2 } = buildSwipeCoords(direction, centerX, centerY, distance);
|
|
220
|
-
await this.swipe(x1, y1, x2, y2);
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Input text via WDA (types into the currently focused element)
|
|
224
|
-
*/
|
|
225
|
-
async inputText(text, deviceIdOverride) {
|
|
226
|
-
try {
|
|
227
|
-
const wdaClient = await this.ensureWDA(deviceIdOverride);
|
|
228
|
-
await wdaClient.typeText(text);
|
|
229
|
-
}
|
|
230
|
-
catch (error) {
|
|
231
|
-
throw wdaRequiredError("Text input", error);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Press key
|
|
236
|
-
*
|
|
237
|
-
* SECURITY: AppleScript invocations use execFileSync("osascript", ["-e", literal])
|
|
238
|
-
* — the script literal is a single argv slot, so /bin/sh never parses its contents.
|
|
239
|
-
* The `key` argument is whitelisted via keyMap; only fixed AppleScript literals reach
|
|
240
|
-
* osascript.
|
|
241
|
-
*/
|
|
242
|
-
pressKey(key) {
|
|
243
|
-
const mappedKey = mapKey(key);
|
|
244
|
-
// Use simctl io for button presses
|
|
245
|
-
if (mappedKey === "home") {
|
|
246
|
-
this.execArgs(["io", this.targetDevice, "enumerate"]);
|
|
247
|
-
// Trigger home button via keyboard shortcut
|
|
248
|
-
execFileSync("osascript", [...HOME_KEY_OSASCRIPT_ARGS], { encoding: "utf-8", timeout: SIMCTL_EXEC_TIMEOUT_MS });
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
// Try generic approach
|
|
252
|
-
execFileSync("osascript", [...ACTIVATE_SIMULATOR_OSASCRIPT_ARGS], { encoding: "utf-8", timeout: SIMCTL_EXEC_TIMEOUT_MS });
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Launch app by bundle ID
|
|
257
|
-
*/
|
|
258
|
-
launchApp(bundleId, deviceIdOverride) {
|
|
259
|
-
validateBundleId(bundleId);
|
|
260
|
-
this.execArgs(["launch", this.targetDeviceFor(deviceIdOverride), bundleId]);
|
|
261
|
-
return `Launched ${bundleId}`;
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Terminate app
|
|
265
|
-
*/
|
|
266
|
-
stopApp(bundleId, deviceIdOverride) {
|
|
267
|
-
validateBundleId(bundleId);
|
|
268
|
-
try {
|
|
269
|
-
this.execArgs(["terminate", this.targetDeviceFor(deviceIdOverride), bundleId]);
|
|
270
|
-
}
|
|
271
|
-
catch {
|
|
272
|
-
// App might not be running
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Install app (.app bundle or .ipa)
|
|
277
|
-
*/
|
|
278
|
-
installApp(path) {
|
|
279
|
-
// Path passed as distinct argv slot — spaces in path are safe; no shell parsing.
|
|
280
|
-
this.execArgs(["install", this.targetDevice, path]);
|
|
281
|
-
return `Installed ${path}`;
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Uninstall app
|
|
285
|
-
*/
|
|
286
|
-
uninstallApp(bundleId) {
|
|
287
|
-
validateBundleId(bundleId);
|
|
288
|
-
this.execArgs(["uninstall", this.targetDevice, bundleId]);
|
|
289
|
-
return `Uninstalled ${bundleId}`;
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Get UI hierarchy (limited on iOS simulator)
|
|
293
|
-
* Returns accessibility info if available
|
|
294
|
-
*/
|
|
295
|
-
async getUiHierarchy(deviceIdOverride) {
|
|
296
|
-
try {
|
|
297
|
-
const wdaClient = await this.ensureWDA(deviceIdOverride);
|
|
298
|
-
const tree = await wdaClient.getAccessibleSource();
|
|
299
|
-
return JSON.stringify(tree, null, 2);
|
|
300
|
-
}
|
|
301
|
-
catch (error) {
|
|
302
|
-
throw wdaRequiredError("WebDriverAgent", error);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Find element by text or label
|
|
307
|
-
*/
|
|
308
|
-
async findElement(criteria) {
|
|
309
|
-
const wdaClient = await this.ensureWDA();
|
|
310
|
-
if (criteria.label) {
|
|
311
|
-
return await wdaClient.findElement("accessibility id", criteria.label);
|
|
312
|
-
}
|
|
313
|
-
if (criteria.text) {
|
|
314
|
-
return await wdaClient.findElement("name", criteria.text);
|
|
315
|
-
}
|
|
316
|
-
throw new Error("Provide text or label to find element");
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Find multiple elements by criteria
|
|
320
|
-
*/
|
|
321
|
-
async findElements(criteria) {
|
|
322
|
-
const wdaClient = await this.ensureWDA();
|
|
323
|
-
const elements = [];
|
|
324
|
-
for (const sel of buildFindElementsSelectors(criteria)) {
|
|
325
|
-
const found = await wdaClient.findElements(sel.using, sel.value);
|
|
326
|
-
elements.push(...found);
|
|
327
|
-
}
|
|
328
|
-
const results = await Promise.all(elements.map(async (el) => {
|
|
329
|
-
try {
|
|
330
|
-
const rect = await wdaClient.getElementRect(el.ELEMENT);
|
|
331
|
-
const text = await wdaClient.getElementText(el.ELEMENT).catch(() => "");
|
|
332
|
-
const displayed = criteria.visible !== undefined
|
|
333
|
-
? await wdaClient.isElementDisplayed(el.ELEMENT)
|
|
334
|
-
: true;
|
|
335
|
-
if (criteria.visible !== undefined && displayed !== criteria.visible) {
|
|
336
|
-
return null;
|
|
337
|
-
}
|
|
338
|
-
return {
|
|
339
|
-
id: el.ELEMENT,
|
|
340
|
-
type: criteria.type || "Unknown",
|
|
341
|
-
label: text,
|
|
342
|
-
rect,
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
catch {
|
|
346
|
-
return null;
|
|
347
|
-
}
|
|
348
|
-
}));
|
|
349
|
-
return results.filter((r) => r !== null);
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Get element rect (position + size) by element ID
|
|
353
|
-
*/
|
|
354
|
-
async getElementRect(elementId) {
|
|
355
|
-
try {
|
|
356
|
-
const wdaClient = await this.ensureWDA();
|
|
357
|
-
return await wdaClient.getElementRect(elementId);
|
|
358
|
-
}
|
|
359
|
-
catch {
|
|
360
|
-
return null;
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Tap element by element ID
|
|
365
|
-
*/
|
|
366
|
-
async tapElement(elementId) {
|
|
367
|
-
const wdaClient = await this.ensureWDA();
|
|
368
|
-
await wdaClient.clickElement(elementId);
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Open URL in simulator
|
|
372
|
-
*
|
|
373
|
-
* SECURITY: URL passes as a single argv slot to xcrun (no /bin/sh -c).
|
|
374
|
-
* Any shell metacharacters in `url` are not parsed by the host shell.
|
|
375
|
-
* Scheme validation happens at the tool layer (validateUrl).
|
|
376
|
-
*/
|
|
377
|
-
openUrl(url) {
|
|
378
|
-
try {
|
|
379
|
-
this.execArgs(["openurl", this.targetDevice, url]);
|
|
380
|
-
}
|
|
381
|
-
catch (error) {
|
|
382
|
-
const e = error;
|
|
383
|
-
throw classifySimctlError(e.stderr?.toString() ?? e.message ?? String(error), `simctl openurl ${url}`);
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
/**
|
|
387
|
-
* Add photo to simulator
|
|
388
|
-
*/
|
|
389
|
-
addPhoto(imagePath) {
|
|
390
|
-
// Path passed as distinct argv slot — spaces in path are safe.
|
|
391
|
-
this.execArgs(["addmedia", this.targetDevice, imagePath]);
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Set location
|
|
395
|
-
*/
|
|
396
|
-
setLocation(lat, lon) {
|
|
397
|
-
this.execArgs(["location", this.targetDevice, "set", formatLatLon(lat, lon)]);
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Get device info
|
|
401
|
-
*/
|
|
402
|
-
getDeviceInfo() {
|
|
403
|
-
const output = this.execArgs(["getenv", this.targetDevice, "SIMULATOR_DEVICE_NAME"]);
|
|
404
|
-
return { name: output };
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* Execute arbitrary simctl command
|
|
408
|
-
*
|
|
409
|
-
* SECURITY: `command` is whitespace-split into argv tokens before reaching
|
|
410
|
-
* execFileSync. Shell metacharacters (;, &, |, $(), backticks, etc.) cannot
|
|
411
|
-
* spawn a host shell from this path. The MCP tool layer additionally validates
|
|
412
|
-
* via validateShellCommand as defense in depth.
|
|
413
|
-
*/
|
|
414
|
-
shell(command) {
|
|
415
|
-
return this.exec(command);
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* Get device logs
|
|
419
|
-
*/
|
|
420
|
-
getLogs(options = {}) {
|
|
421
|
-
try {
|
|
422
|
-
const output = this.execArgs(buildLogShowArgs(this.targetDevice, "5m", options));
|
|
423
|
-
return options.lines ? sliceLastLines(output, options.lines) : output;
|
|
424
|
-
}
|
|
425
|
-
catch {
|
|
426
|
-
// Fallback: try system log (last 1m, swallow stderr — replaces prior `2>/dev/null`).
|
|
427
|
-
try {
|
|
428
|
-
const fallback = this.execArgsQuiet(buildLogShowArgs(this.targetDevice, "1m"));
|
|
429
|
-
return sliceLastLines(fallback, 100);
|
|
430
|
-
}
|
|
431
|
-
catch {
|
|
432
|
-
return "Unable to retrieve logs. Make sure the simulator is running.";
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Get app-specific logs
|
|
438
|
-
*
|
|
439
|
-
* SECURITY: bundleId is validated against the reverse-DNS whitelist before
|
|
440
|
-
* embedding into the simctl predicate string. The predicate itself is passed
|
|
441
|
-
* as ONE argv slot — the host shell never parses it; simctl parses it
|
|
442
|
-
* internally as its own DSL.
|
|
443
|
-
*/
|
|
444
|
-
getAppLogs(bundleId, lines = 100) {
|
|
445
|
-
validateBundleId(bundleId);
|
|
446
|
-
try {
|
|
447
|
-
const output = this.execArgs(buildAppLogArgs(this.targetDevice, bundleId));
|
|
448
|
-
return sliceLastLines(output, lines);
|
|
449
|
-
}
|
|
450
|
-
catch {
|
|
451
|
-
return `Unable to retrieve logs for ${bundleId}`;
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* Clear logs (not fully supported on iOS, but we can note the timestamp)
|
|
456
|
-
*/
|
|
457
|
-
clearLogs() {
|
|
458
|
-
return "iOS simulator logs cannot be cleared. Use --last parameter to filter recent logs.";
|
|
459
|
-
}
|
|
460
|
-
/**
|
|
461
|
-
* Grant privacy permission on iOS simulator
|
|
462
|
-
* Services: camera, microphone, photos, location, contacts, calendar, reminders, motion, health, speech-recognition
|
|
463
|
-
*/
|
|
464
|
-
grantPermission(bundleId, service) {
|
|
465
|
-
validateBundleId(bundleId);
|
|
466
|
-
return this.execArgs(["privacy", this.targetDevice, "grant", service, bundleId]);
|
|
467
|
-
}
|
|
468
|
-
/**
|
|
469
|
-
* Revoke privacy permission on iOS simulator
|
|
470
|
-
*/
|
|
471
|
-
revokePermission(bundleId, service) {
|
|
472
|
-
validateBundleId(bundleId);
|
|
473
|
-
return this.execArgs(["privacy", this.targetDevice, "revoke", service, bundleId]);
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Reset all privacy permissions for an app on iOS simulator
|
|
477
|
-
*/
|
|
478
|
-
resetPermissions(bundleId) {
|
|
479
|
-
validateBundleId(bundleId);
|
|
480
|
-
return this.execArgs(["privacy", this.targetDevice, "reset", "all", bundleId]);
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
//# sourceMappingURL=client.js.map
|
package/dist/ios/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ios/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* go-ios (`ios`) invocation for physical iOS device discovery.
|
|
3
|
-
*
|
|
4
|
-
* Mirrors the simctl-exec pattern: argv-form execFileSync, never /bin/sh.
|
|
5
|
-
* Discovery (`ios list` / `ios info`) works over usbmux WITHOUT the iOS 17+
|
|
6
|
-
* RemoteXPC tunnel — the tunnel is only needed later for WDA port forwarding.
|
|
7
|
-
*
|
|
8
|
-
* Every call is best-effort: if the `ios` binary is absent (go-ios not
|
|
9
|
-
* installed) or errors, discovery returns an empty list so simulator-only
|
|
10
|
-
* setups are unaffected.
|
|
11
|
-
*/
|
|
12
|
-
import type { IosDevice } from "../types.js";
|
|
13
|
-
export declare const GO_IOS_BIN: string;
|
|
14
|
-
export declare const GO_IOS_TIMEOUT_MS = 10000;
|
|
15
|
-
/** True if the go-ios binary is invokable. */
|
|
16
|
-
export declare function isGoIosAvailable(): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Enumerate connected physical iOS devices via go-ios. Returns [] when go-ios
|
|
19
|
-
* is unavailable or no device is attached. Per-device `ios info` failures are
|
|
20
|
-
* tolerated — the device is still returned with its udid and sensible defaults.
|
|
21
|
-
*/
|
|
22
|
-
export declare function listPhysicalDevices(): IosDevice[];
|
|
23
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ios/go-ios/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,eAAO,MAAM,UAAU,QAAkC,CAAC;AAC1D,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAiBxC,8CAA8C;AAC9C,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,EAAE,CAUjD"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* go-ios (`ios`) invocation for physical iOS device discovery.
|
|
3
|
-
*
|
|
4
|
-
* Mirrors the simctl-exec pattern: argv-form execFileSync, never /bin/sh.
|
|
5
|
-
* Discovery (`ios list` / `ios info`) works over usbmux WITHOUT the iOS 17+
|
|
6
|
-
* RemoteXPC tunnel — the tunnel is only needed later for WDA port forwarding.
|
|
7
|
-
*
|
|
8
|
-
* Every call is best-effort: if the `ios` binary is absent (go-ios not
|
|
9
|
-
* installed) or errors, discovery returns an empty list so simulator-only
|
|
10
|
-
* setups are unaffected.
|
|
11
|
-
*/
|
|
12
|
-
import { execFileSync } from "child_process";
|
|
13
|
-
import { parseDeviceList, parseInfo, toIosDevice } from "./parsers.js";
|
|
14
|
-
export const GO_IOS_BIN = process.env.GO_IOS_BIN ?? "ios";
|
|
15
|
-
export const GO_IOS_TIMEOUT_MS = 10_000;
|
|
16
|
-
/** Run `ios <args>`, returning stdout, or null if the binary is missing/fails. */
|
|
17
|
-
function runIos(args) {
|
|
18
|
-
try {
|
|
19
|
-
return execFileSync(GO_IOS_BIN, args, {
|
|
20
|
-
encoding: "utf-8",
|
|
21
|
-
timeout: GO_IOS_TIMEOUT_MS,
|
|
22
|
-
maxBuffer: 16 * 1024 * 1024,
|
|
23
|
-
// go-ios writes structured logs to stderr; keep stdout clean for parsing.
|
|
24
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/** True if the go-ios binary is invokable. */
|
|
32
|
-
export function isGoIosAvailable() {
|
|
33
|
-
return runIos(["version"]) !== null;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Enumerate connected physical iOS devices via go-ios. Returns [] when go-ios
|
|
37
|
-
* is unavailable or no device is attached. Per-device `ios info` failures are
|
|
38
|
-
* tolerated — the device is still returned with its udid and sensible defaults.
|
|
39
|
-
*/
|
|
40
|
-
export function listPhysicalDevices() {
|
|
41
|
-
const listOut = runIos(["list"]);
|
|
42
|
-
if (listOut === null)
|
|
43
|
-
return [];
|
|
44
|
-
const udids = parseDeviceList(listOut);
|
|
45
|
-
return udids.map((udid) => {
|
|
46
|
-
const infoOut = runIos(["info", "--udid", udid]);
|
|
47
|
-
const info = infoOut ? parseInfo(infoOut) : {};
|
|
48
|
-
return toIosDevice(udid, info);
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/ios/go-ios/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,kFAAkF;AAClF,SAAS,MAAM,CAAC,IAAc;IAC5B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE;YACpC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,iBAAiB;YAC1B,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;YAC3B,0EAA0E;YAC1E,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ios/go-ios/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
package/dist/ios/go-ios/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ios/go-ios/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure parsers for go-ios (`ios`) JSON output. No I/O.
|
|
3
|
-
*
|
|
4
|
-
* go-ios emits newline-delimited JSON: structured log lines (level/msg/time)
|
|
5
|
-
* interleaved with the actual result object. These parsers scan every line and
|
|
6
|
-
* pick the one carrying the expected result key, so log noise (e.g. the
|
|
7
|
-
* "agent is not running" WARN on iOS 17+) never corrupts the result.
|
|
8
|
-
*/
|
|
9
|
-
import type { IosDevice } from "../types.js";
|
|
10
|
-
/**
|
|
11
|
-
* Parse `ios list` output into a list of physical-device UDIDs. The result line
|
|
12
|
-
* looks like `{"deviceList":["00008130-..."]}`; log lines are skipped.
|
|
13
|
-
*/
|
|
14
|
-
export declare function parseDeviceList(output: string): string[];
|
|
15
|
-
export interface GoIosInfo {
|
|
16
|
-
name?: string;
|
|
17
|
-
productVersion?: string;
|
|
18
|
-
productType?: string;
|
|
19
|
-
deviceClass?: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Parse `ios info` output. The result object is the one carrying device
|
|
23
|
-
* identity keys (UniqueDeviceID / ProductVersion); log lines are skipped.
|
|
24
|
-
*/
|
|
25
|
-
export declare function parseInfo(output: string): GoIosInfo;
|
|
26
|
-
/** Build an `IosDevice` for a physical device from its udid + (optional) info. */
|
|
27
|
-
export declare function toIosDevice(udid: string, info: GoIosInfo): IosDevice;
|
|
28
|
-
//# sourceMappingURL=parsers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../src/ios/go-ios/parsers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkB7C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxD;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAYnD;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,CASpE"}
|