appium-ios-remotexpc 5.18.9 → 5.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/src/lib/types.d.ts +54 -0
- package/build/src/lib/types.d.ts.map +1 -1
- package/build/src/lib/types.js.map +1 -1
- package/build/src/services/ios/companion-proxy/errors.d.ts +8 -0
- package/build/src/services/ios/companion-proxy/errors.d.ts.map +1 -0
- package/build/src/services/ios/companion-proxy/errors.js +12 -0
- package/build/src/services/ios/companion-proxy/errors.js.map +1 -0
- package/build/src/services/ios/companion-proxy/index.d.ts +107 -0
- package/build/src/services/ios/companion-proxy/index.d.ts.map +1 -0
- package/build/src/services/ios/companion-proxy/index.js +233 -0
- package/build/src/services/ios/companion-proxy/index.js.map +1 -0
- package/package.json +1 -1
- package/src/lib/types.ts +55 -0
- package/src/services/ios/companion-proxy/errors.ts +12 -0
- package/src/services/ios/companion-proxy/index.ts +313 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [5.19.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.9...v5.19.0) (2026-09-08)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **companion-proxy:** add CompanionProxyService for paired Apple Watch access ([#320](https://github.com/appium/appium-ios-remotexpc/issues/320)) ([453b35b](https://github.com/appium/appium-ios-remotexpc/commit/453b35b0fcb444818b1bcde28b680f06dab2a0d8))
|
|
6
|
+
|
|
1
7
|
## [5.18.9](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.8...v5.18.9) (2026-09-07)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
package/build/src/lib/types.d.ts
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* Common type definitions for the appium-ios-remotexpc library
|
|
3
3
|
*/
|
|
4
4
|
import { type EventEmitter } from 'node:events';
|
|
5
|
+
import type { Socket } from 'node:net';
|
|
5
6
|
import type { ServiceConnection } from '../service-connection.js';
|
|
6
7
|
import type AfcService from '../services/ios/afc/index.js';
|
|
7
8
|
import type { BaseService, Service } from '../services/ios/base-service.js';
|
|
9
|
+
import type { CompanionDeviceEvent, StartForwardingOptions } from '../services/ios/companion-proxy/index.js';
|
|
8
10
|
import type { iOSApplication } from '../services/ios/dvt/instruments/application-listing.js';
|
|
9
11
|
import type { LocationCoordinates } from '../services/ios/dvt/instruments/location-simulation.js';
|
|
10
12
|
import type { NotificationMessage } from '../services/ios/dvt/instruments/notifications.js';
|
|
@@ -344,6 +346,58 @@ export interface NotificationProxyService extends BaseService {
|
|
|
344
346
|
*/
|
|
345
347
|
close(): void;
|
|
346
348
|
}
|
|
349
|
+
/**
|
|
350
|
+
* Represents the instance side of CompanionProxyService (paired Apple Watch access via the phone)
|
|
351
|
+
*/
|
|
352
|
+
export interface CompanionProxyService extends BaseService {
|
|
353
|
+
/**
|
|
354
|
+
* List the UDIDs of the watches paired with this phone
|
|
355
|
+
* @returns Paired watch UDIDs; empty when none are paired
|
|
356
|
+
* @throws {CompanionProxyError} On any other daemon `Error` reply
|
|
357
|
+
*/
|
|
358
|
+
list(): Promise<string[]>;
|
|
359
|
+
/**
|
|
360
|
+
* Stream watch pair/unpair/attach/detach events on a dedicated connection that is
|
|
361
|
+
* closed when the consumer stops iterating, on error, on abort, or on `close()`
|
|
362
|
+
* @param timeout Milliseconds to wait for each event
|
|
363
|
+
* @param signal Aborting it stops this stream only, settling a pending iteration with the abort reason
|
|
364
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a frame that is not a companion event
|
|
365
|
+
* @throws {Error} When no event arrives within `timeout` or the connection is closed
|
|
366
|
+
* @throws {DOMException} The `AbortError` (or `signal.reason`) once `signal` aborts
|
|
367
|
+
*/
|
|
368
|
+
listen(timeout?: number, signal?: AbortSignal): AsyncGenerator<CompanionDeviceEvent>;
|
|
369
|
+
/**
|
|
370
|
+
* Read one registry value for a paired watch
|
|
371
|
+
* @param companionUdid Watch UDID
|
|
372
|
+
* @param key Registry key, e.g. `DeviceName`
|
|
373
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `RetrievedValueDictionary`
|
|
374
|
+
*/
|
|
375
|
+
getValue(companionUdid: string, key: string): Promise<PlistValue>;
|
|
376
|
+
/**
|
|
377
|
+
* Forward a watch TCP port through the phone
|
|
378
|
+
* @param watchPort TCP port on the watch
|
|
379
|
+
* @returns Ephemeral phone port proxying to the watch port
|
|
380
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
381
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `CompanionProxyServicePort`
|
|
382
|
+
*/
|
|
383
|
+
startForwardingServicePort(watchPort: number, options?: StartForwardingOptions): Promise<number>;
|
|
384
|
+
/**
|
|
385
|
+
* Stop forwarding a watch TCP port
|
|
386
|
+
* @param watchPort TCP port on the watch
|
|
387
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
388
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply that is not a success
|
|
389
|
+
*/
|
|
390
|
+
stopForwardingServicePort(watchPort: number): Promise<void>;
|
|
391
|
+
/**
|
|
392
|
+
* Open a raw TCP socket to a phone port returned by startForwardingServicePort
|
|
393
|
+
* @param companionPort Phone port
|
|
394
|
+
*/
|
|
395
|
+
connectToForwardedPort(companionPort: number): Promise<Socket>;
|
|
396
|
+
/**
|
|
397
|
+
* Close every open listen() stream
|
|
398
|
+
*/
|
|
399
|
+
close(): void;
|
|
400
|
+
}
|
|
347
401
|
/**
|
|
348
402
|
* Represents the PowerAssertionService for preventing system sleep
|
|
349
403
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,kBAAkB,EAAC,MAAM,0CAA0C,CAAC;AAM5E,OAAO,EAAC,kBAAkB,EAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raised when companion_proxy rejects a command; `code` carries the daemon's raw `Error` string.
|
|
3
|
+
*/
|
|
4
|
+
export declare class CompanionProxyError extends Error {
|
|
5
|
+
readonly code?: string;
|
|
6
|
+
constructor(message: string, code?: string);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/companion-proxy/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAK3C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raised when companion_proxy rejects a command; `code` carries the daemon's raw `Error` string.
|
|
3
|
+
*/
|
|
4
|
+
export class CompanionProxyError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(message, code) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'CompanionProxyError';
|
|
9
|
+
this.code = code;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/services/ios/companion-proxy/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,CAAU;IAEvB,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { Socket } from 'node:net';
|
|
2
|
+
import type { CompanionProxyService as CompanionProxyServiceInterface, PlistDictionary, PlistValue } from '../../../lib/types.js';
|
|
3
|
+
import { BaseService } from '../base-service.js';
|
|
4
|
+
export type CompanionDeviceEventCommand = 'GizmoPaired' | 'GizmoUnpaired' | 'GizmoAttach' | 'GizmoDetach';
|
|
5
|
+
/**
|
|
6
|
+
* Event frame streamed by `StartListeningForDevices`.
|
|
7
|
+
*/
|
|
8
|
+
export interface CompanionDeviceEvent extends PlistDictionary {
|
|
9
|
+
Command: CompanionDeviceEventCommand;
|
|
10
|
+
GizmoUDIDKey: string;
|
|
11
|
+
/** Present on `GizmoAttach` for watchOS >= 2 */
|
|
12
|
+
CompanionLockdownProxyPort?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Options for `StartForwardingServicePort`; any extra keys are merged verbatim into the request.
|
|
16
|
+
*/
|
|
17
|
+
export interface StartForwardingOptions extends PlistDictionary {
|
|
18
|
+
serviceName?: string;
|
|
19
|
+
isServiceLowPriority?: boolean;
|
|
20
|
+
preferWifi?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* CompanionProxyService provides an API to:
|
|
24
|
+
* - List paired Apple Watches and stream pair/attach events
|
|
25
|
+
* - Read per-watch registry values
|
|
26
|
+
* - Forward a watch TCP port through the phone and connect to it
|
|
27
|
+
*/
|
|
28
|
+
export declare class CompanionProxyService extends BaseService implements CompanionProxyServiceInterface {
|
|
29
|
+
static readonly RSD_SERVICE_NAME = "com.apple.companion_proxy.shim.remote";
|
|
30
|
+
private readonly timeout;
|
|
31
|
+
private readonly _listenConns;
|
|
32
|
+
constructor(udid: string, timeout?: number);
|
|
33
|
+
/**
|
|
34
|
+
* List the UDIDs of the watches paired with this phone
|
|
35
|
+
* @returns Paired watch UDIDs; empty when the daemon reports `NoPairedWatches`
|
|
36
|
+
* @throws {CompanionProxyError} On any other daemon `Error` reply
|
|
37
|
+
*/
|
|
38
|
+
list(): Promise<string[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Stream watch pair/unpair/attach/detach events on a dedicated connection that is closed
|
|
41
|
+
* when the consumer stops iterating, on error, on abort, on `close()`, or when the daemon hangs up.
|
|
42
|
+
* The daemon cancels the stream on any further input, so nothing else is ever sent on it.
|
|
43
|
+
* @param timeout Milliseconds to wait for each event
|
|
44
|
+
* @param signal Aborting it stops this stream only, settling a pending iteration with the abort reason
|
|
45
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a frame that is not a companion event
|
|
46
|
+
* @throws {Error} When no event arrives within `timeout` or the connection is closed by either side
|
|
47
|
+
* @throws {DOMException} The `AbortError` (or `signal.reason`) once `signal` aborts
|
|
48
|
+
*/
|
|
49
|
+
listen(timeout?: number, signal?: AbortSignal): AsyncGenerator<CompanionDeviceEvent>;
|
|
50
|
+
/**
|
|
51
|
+
* Read one registry value for a paired watch
|
|
52
|
+
* @param companionUdid Watch UDID from `list()`
|
|
53
|
+
* @param key Registry key, e.g. `DeviceName`, `ProductVersion`, `BatteryCurrentCapacity`
|
|
54
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `RetrievedValueDictionary`
|
|
55
|
+
*/
|
|
56
|
+
getValue(companionUdid: string, key: string): Promise<PlistValue>;
|
|
57
|
+
/**
|
|
58
|
+
* Ask the phone to forward a watch TCP port; the listener survives until
|
|
59
|
+
* `stopForwardingServicePort()`. Reach it with `connectToForwardedPort()`.
|
|
60
|
+
* @param watchPort TCP port on the watch
|
|
61
|
+
* @returns Ephemeral port on the phone proxying to `watchPort`
|
|
62
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
63
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `CompanionProxyServicePort`
|
|
64
|
+
*/
|
|
65
|
+
startForwardingServicePort(watchPort: number, options?: StartForwardingOptions): Promise<number>;
|
|
66
|
+
/**
|
|
67
|
+
* Stop forwarding a watch port started with `startForwardingServicePort()`.
|
|
68
|
+
* Accepts Apple's misspelled `ComandSuccess` reply as well as `CommandSuccess`.
|
|
69
|
+
* @param watchPort TCP port on the watch (not the phone port returned earlier)
|
|
70
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
71
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply that is not a success
|
|
72
|
+
*/
|
|
73
|
+
stopForwardingServicePort(watchPort: number): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Open a raw TCP socket to a phone port returned by `startForwardingServicePort()`.
|
|
76
|
+
* No RSD check-in happens on this socket.
|
|
77
|
+
* @param companionPort Phone port
|
|
78
|
+
*/
|
|
79
|
+
connectToForwardedPort(companionPort: number): Promise<Socket>;
|
|
80
|
+
/**
|
|
81
|
+
* Close every open `listen()` stream; their pending receives reject and the generators exit
|
|
82
|
+
*/
|
|
83
|
+
close(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Open a fresh checked-in connection and drain the shim's `StartService` greeting.
|
|
86
|
+
* A greeting carrying `Error` (e.g. `ServiceProhibited`) is surfaced instead of hanging later.
|
|
87
|
+
*/
|
|
88
|
+
private connectToCompanionProxyService;
|
|
89
|
+
/**
|
|
90
|
+
* Send one command on a fresh connection; the daemon closes after every reply
|
|
91
|
+
*/
|
|
92
|
+
private sendCommand;
|
|
93
|
+
private closeListenConnection;
|
|
94
|
+
/**
|
|
95
|
+
* Close a `listen()` connection exactly once; rejects its pending receive so the generator exits
|
|
96
|
+
*/
|
|
97
|
+
private releaseListenConnection;
|
|
98
|
+
/**
|
|
99
|
+
* Throw on a daemon `Error` reply, otherwise pass the response through
|
|
100
|
+
* @throws {CompanionProxyError} Carrying the daemon `Error` code
|
|
101
|
+
*/
|
|
102
|
+
private throwOnError;
|
|
103
|
+
private buildGetValueRequest;
|
|
104
|
+
private buildStartForwardingRequest;
|
|
105
|
+
private buildStopForwardingRequest;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/companion-proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAMrC,OAAO,KAAK,EACV,qBAAqB,IAAI,8BAA8B,EACvD,eAAe,EACf,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAS/C,MAAM,MAAM,2BAA2B,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;AAE1G;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,OAAO,EAAE,2BAA2B,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAwCD;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,WAAY,YAAW,8BAA8B;IAC9F,MAAM,CAAC,QAAQ,CAAC,gBAAgB,2CAA2C;IAC3E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;gBAEjD,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAA2B;IAK9D;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAS/B;;;;;;;;;OASG;IACI,MAAM,CACX,OAAO,GAAE,MAAiC,EAC1C,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,oBAAoB,CAAC;IAyBvC;;;;;OAKG;IACG,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAYvE;;;;;;;OAOG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtG;;;;;;OAMG;IACG,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjE;;;;OAIG;IACG,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;;OAGG;YACW,8BAA8B;IAgB5C;;OAEG;YACW,WAAW;IASzB,OAAO,CAAC,qBAAqB;IAQ7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;;OAGG;IACH,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,0BAA0B;CAMnC"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { util } from '@appium/support';
|
|
2
|
+
import { getLogger } from '../../../lib/logger.js';
|
|
3
|
+
import { connectViaTunnel } from '../../../lib/port-forwarding/connectors.js';
|
|
4
|
+
import { BaseService } from '../base-service.js';
|
|
5
|
+
import { CompanionProxyError } from './errors.js';
|
|
6
|
+
const log = getLogger('CompanionProxyService');
|
|
7
|
+
const DEFAULT_TIMEOUT_MS = 10000;
|
|
8
|
+
const DEFAULT_EVENT_TIMEOUT_MS = 120000;
|
|
9
|
+
const MAX_PORT = 65535;
|
|
10
|
+
function isPlistDictionary(value) {
|
|
11
|
+
return util.isPlainObject(value);
|
|
12
|
+
}
|
|
13
|
+
function isCompanionDeviceEvent(frame) {
|
|
14
|
+
return typeof frame?.Command === 'string' && typeof frame.GizmoUDIDKey === 'string';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Validate a watch TCP port and pass it through
|
|
18
|
+
* @throws {TypeError} When `port` is not an integer in 1..65535
|
|
19
|
+
*/
|
|
20
|
+
function assertWatchPort(port) {
|
|
21
|
+
if (!Number.isInteger(port) || port < 1 || port > MAX_PORT) {
|
|
22
|
+
throw new TypeError(`watchPort must be an integer in 1..${MAX_PORT}, got ${port}`);
|
|
23
|
+
}
|
|
24
|
+
return port;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* CompanionProxyService provides an API to:
|
|
28
|
+
* - List paired Apple Watches and stream pair/attach events
|
|
29
|
+
* - Read per-watch registry values
|
|
30
|
+
* - Forward a watch TCP port through the phone and connect to it
|
|
31
|
+
*/
|
|
32
|
+
export class CompanionProxyService extends BaseService {
|
|
33
|
+
static RSD_SERVICE_NAME = 'com.apple.companion_proxy.shim.remote';
|
|
34
|
+
timeout;
|
|
35
|
+
_listenConns = new Set();
|
|
36
|
+
constructor(udid, timeout = DEFAULT_TIMEOUT_MS) {
|
|
37
|
+
super(udid);
|
|
38
|
+
this.timeout = timeout;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* List the UDIDs of the watches paired with this phone
|
|
42
|
+
* @returns Paired watch UDIDs; empty when the daemon reports `NoPairedWatches`
|
|
43
|
+
* @throws {CompanionProxyError} On any other daemon `Error` reply
|
|
44
|
+
*/
|
|
45
|
+
async list() {
|
|
46
|
+
const response = await this.sendCommand({ Command: 'GetDeviceRegistry' });
|
|
47
|
+
if (response.Error === 'NoPairedWatches') {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
const udids = this.throwOnError(response, 'GetDeviceRegistry').PairedDevicesArray;
|
|
51
|
+
return Array.isArray(udids) ? udids.map(String) : [];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Stream watch pair/unpair/attach/detach events on a dedicated connection that is closed
|
|
55
|
+
* when the consumer stops iterating, on error, on abort, on `close()`, or when the daemon hangs up.
|
|
56
|
+
* The daemon cancels the stream on any further input, so nothing else is ever sent on it.
|
|
57
|
+
* @param timeout Milliseconds to wait for each event
|
|
58
|
+
* @param signal Aborting it stops this stream only, settling a pending iteration with the abort reason
|
|
59
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a frame that is not a companion event
|
|
60
|
+
* @throws {Error} When no event arrives within `timeout` or the connection is closed by either side
|
|
61
|
+
* @throws {DOMException} The `AbortError` (or `signal.reason`) once `signal` aborts
|
|
62
|
+
*/
|
|
63
|
+
async *listen(timeout = DEFAULT_EVENT_TIMEOUT_MS, signal) {
|
|
64
|
+
const conn = await this.connectToCompanionProxyService();
|
|
65
|
+
this._listenConns.add(conn);
|
|
66
|
+
const release = () => this.releaseListenConnection(conn);
|
|
67
|
+
conn.getSocket().once('close', release);
|
|
68
|
+
signal?.addEventListener('abort', release, { once: true });
|
|
69
|
+
try {
|
|
70
|
+
signal?.throwIfAborted();
|
|
71
|
+
conn.sendPlist({ Command: 'StartListeningForDevices' });
|
|
72
|
+
while (true) {
|
|
73
|
+
const frame = this.throwOnError(await conn.receive(timeout), 'StartListeningForDevices');
|
|
74
|
+
if (!isCompanionDeviceEvent(frame)) {
|
|
75
|
+
throw new CompanionProxyError(`Unexpected companion event frame: ${JSON.stringify(frame)}`);
|
|
76
|
+
}
|
|
77
|
+
yield frame;
|
|
78
|
+
signal?.throwIfAborted();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
throw signal?.aborted ? signal.reason : error;
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
signal?.removeEventListener('abort', release);
|
|
86
|
+
release();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Read one registry value for a paired watch
|
|
91
|
+
* @param companionUdid Watch UDID from `list()`
|
|
92
|
+
* @param key Registry key, e.g. `DeviceName`, `ProductVersion`, `BatteryCurrentCapacity`
|
|
93
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `RetrievedValueDictionary`
|
|
94
|
+
*/
|
|
95
|
+
async getValue(companionUdid, key) {
|
|
96
|
+
const response = this.throwOnError(await this.sendCommand(this.buildGetValueRequest(companionUdid, key)), 'GetValueFromRegistry');
|
|
97
|
+
const values = response.RetrievedValueDictionary;
|
|
98
|
+
if (!isPlistDictionary(values)) {
|
|
99
|
+
throw new CompanionProxyError(`Unexpected GetValueFromRegistry reply: ${JSON.stringify(response)}`);
|
|
100
|
+
}
|
|
101
|
+
return values[key];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Ask the phone to forward a watch TCP port; the listener survives until
|
|
105
|
+
* `stopForwardingServicePort()`. Reach it with `connectToForwardedPort()`.
|
|
106
|
+
* @param watchPort TCP port on the watch
|
|
107
|
+
* @returns Ephemeral port on the phone proxying to `watchPort`
|
|
108
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
109
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `CompanionProxyServicePort`
|
|
110
|
+
*/
|
|
111
|
+
async startForwardingServicePort(watchPort, options) {
|
|
112
|
+
const response = this.throwOnError(await this.sendCommand(this.buildStartForwardingRequest(watchPort, options)), 'StartForwardingServicePort');
|
|
113
|
+
const port = response.CompanionProxyServicePort;
|
|
114
|
+
if (typeof port !== 'number') {
|
|
115
|
+
throw new CompanionProxyError(`Unexpected StartForwardingServicePort reply: ${JSON.stringify(response)}`);
|
|
116
|
+
}
|
|
117
|
+
return port;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Stop forwarding a watch port started with `startForwardingServicePort()`.
|
|
121
|
+
* Accepts Apple's misspelled `ComandSuccess` reply as well as `CommandSuccess`.
|
|
122
|
+
* @param watchPort TCP port on the watch (not the phone port returned earlier)
|
|
123
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
124
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply that is not a success
|
|
125
|
+
*/
|
|
126
|
+
async stopForwardingServicePort(watchPort) {
|
|
127
|
+
const response = this.throwOnError(await this.sendCommand(this.buildStopForwardingRequest(watchPort)), 'StopForwardingServicePort');
|
|
128
|
+
if (response.Command !== 'ComandSuccess' && response.Command !== 'CommandSuccess') {
|
|
129
|
+
throw new CompanionProxyError(`Unexpected StopForwardingServicePort reply: ${JSON.stringify(response)}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Open a raw TCP socket to a phone port returned by `startForwardingServicePort()`.
|
|
134
|
+
* No RSD check-in happens on this socket.
|
|
135
|
+
* @param companionPort Phone port
|
|
136
|
+
*/
|
|
137
|
+
async connectToForwardedPort(companionPort) {
|
|
138
|
+
return await connectViaTunnel(this.udid, companionPort);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Close every open `listen()` stream; their pending receives reject and the generators exit
|
|
142
|
+
*/
|
|
143
|
+
close() {
|
|
144
|
+
for (const conn of this._listenConns) {
|
|
145
|
+
this.closeListenConnection(conn);
|
|
146
|
+
}
|
|
147
|
+
this._listenConns.clear();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Open a fresh checked-in connection and drain the shim's `StartService` greeting.
|
|
151
|
+
* A greeting carrying `Error` (e.g. `ServiceProhibited`) is surfaced instead of hanging later.
|
|
152
|
+
*/
|
|
153
|
+
async connectToCompanionProxyService() {
|
|
154
|
+
const conn = await this.startLockdownService(CompanionProxyService.RSD_SERVICE_NAME, {
|
|
155
|
+
createConnectionTimeout: this.timeout,
|
|
156
|
+
});
|
|
157
|
+
try {
|
|
158
|
+
const greeting = this.throwOnError(await conn.receive(this.timeout), 'StartService');
|
|
159
|
+
if (greeting?.Request !== 'StartService') {
|
|
160
|
+
throw new CompanionProxyError(`Expected StartService greeting, got: ${JSON.stringify(greeting)}`);
|
|
161
|
+
}
|
|
162
|
+
return conn;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
conn.close();
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Send one command on a fresh connection; the daemon closes after every reply
|
|
171
|
+
*/
|
|
172
|
+
async sendCommand(request) {
|
|
173
|
+
const conn = await this.connectToCompanionProxyService();
|
|
174
|
+
try {
|
|
175
|
+
return await conn.sendPlistRequest(request, this.timeout);
|
|
176
|
+
}
|
|
177
|
+
finally {
|
|
178
|
+
conn.close();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
closeListenConnection(conn) {
|
|
182
|
+
try {
|
|
183
|
+
conn.close();
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
log.error('Error closing companion proxy connection:', error);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Close a `listen()` connection exactly once; rejects its pending receive so the generator exits
|
|
191
|
+
*/
|
|
192
|
+
releaseListenConnection(conn) {
|
|
193
|
+
if (this._listenConns.delete(conn)) {
|
|
194
|
+
this.closeListenConnection(conn);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Throw on a daemon `Error` reply, otherwise pass the response through
|
|
199
|
+
* @throws {CompanionProxyError} Carrying the daemon `Error` code
|
|
200
|
+
*/
|
|
201
|
+
throwOnError(response, command) {
|
|
202
|
+
if (!response?.Error) {
|
|
203
|
+
return response;
|
|
204
|
+
}
|
|
205
|
+
const code = String(response.Error);
|
|
206
|
+
const description = response.ErrorDescription ? ` - ${String(response.ErrorDescription)}` : '';
|
|
207
|
+
throw new CompanionProxyError(`${command} failed: ${code}${description}`, code);
|
|
208
|
+
}
|
|
209
|
+
buildGetValueRequest(companionUdid, key) {
|
|
210
|
+
return {
|
|
211
|
+
Command: 'GetValueFromRegistry',
|
|
212
|
+
GetValueGizmoUDIDKey: companionUdid,
|
|
213
|
+
GetValueKeyKey: key,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
buildStartForwardingRequest(watchPort, { serviceName, isServiceLowPriority = false, preferWifi = false, ...options } = {}) {
|
|
217
|
+
return {
|
|
218
|
+
Command: 'StartForwardingServicePort',
|
|
219
|
+
GizmoRemotePortNumber: assertWatchPort(watchPort),
|
|
220
|
+
IsServiceLowPriority: isServiceLowPriority,
|
|
221
|
+
PreferWifi: preferWifi,
|
|
222
|
+
...(serviceName === undefined ? {} : { ForwardedServiceName: serviceName }),
|
|
223
|
+
...options,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
buildStopForwardingRequest(watchPort) {
|
|
227
|
+
return {
|
|
228
|
+
Command: 'StopForwardingServicePort',
|
|
229
|
+
GizmoRemotePortNumber: assertWatchPort(watchPort),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/companion-proxy/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/lib/types.ts
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Common type definitions for the appium-ios-remotexpc library
|
|
3
3
|
*/
|
|
4
4
|
import {type EventEmitter} from 'node:events';
|
|
5
|
+
import type {Socket} from 'node:net';
|
|
5
6
|
|
|
6
7
|
import type {ServiceConnection} from '../service-connection.js';
|
|
7
8
|
import type AfcService from '../services/ios/afc/index.js';
|
|
8
9
|
import type {BaseService, Service} from '../services/ios/base-service.js';
|
|
10
|
+
import type {CompanionDeviceEvent, StartForwardingOptions} from '../services/ios/companion-proxy/index.js';
|
|
9
11
|
import type {iOSApplication} from '../services/ios/dvt/instruments/application-listing.js';
|
|
10
12
|
import type {LocationCoordinates} from '../services/ios/dvt/instruments/location-simulation.js';
|
|
11
13
|
import type {NotificationMessage} from '../services/ios/dvt/instruments/notifications.js';
|
|
@@ -390,6 +392,59 @@ export interface NotificationProxyService extends BaseService {
|
|
|
390
392
|
close(): void;
|
|
391
393
|
}
|
|
392
394
|
|
|
395
|
+
/**
|
|
396
|
+
* Represents the instance side of CompanionProxyService (paired Apple Watch access via the phone)
|
|
397
|
+
*/
|
|
398
|
+
export interface CompanionProxyService extends BaseService {
|
|
399
|
+
/**
|
|
400
|
+
* List the UDIDs of the watches paired with this phone
|
|
401
|
+
* @returns Paired watch UDIDs; empty when none are paired
|
|
402
|
+
* @throws {CompanionProxyError} On any other daemon `Error` reply
|
|
403
|
+
*/
|
|
404
|
+
list(): Promise<string[]>;
|
|
405
|
+
/**
|
|
406
|
+
* Stream watch pair/unpair/attach/detach events on a dedicated connection that is
|
|
407
|
+
* closed when the consumer stops iterating, on error, on abort, or on `close()`
|
|
408
|
+
* @param timeout Milliseconds to wait for each event
|
|
409
|
+
* @param signal Aborting it stops this stream only, settling a pending iteration with the abort reason
|
|
410
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a frame that is not a companion event
|
|
411
|
+
* @throws {Error} When no event arrives within `timeout` or the connection is closed
|
|
412
|
+
* @throws {DOMException} The `AbortError` (or `signal.reason`) once `signal` aborts
|
|
413
|
+
*/
|
|
414
|
+
listen(timeout?: number, signal?: AbortSignal): AsyncGenerator<CompanionDeviceEvent>;
|
|
415
|
+
/**
|
|
416
|
+
* Read one registry value for a paired watch
|
|
417
|
+
* @param companionUdid Watch UDID
|
|
418
|
+
* @param key Registry key, e.g. `DeviceName`
|
|
419
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `RetrievedValueDictionary`
|
|
420
|
+
*/
|
|
421
|
+
getValue(companionUdid: string, key: string): Promise<PlistValue>;
|
|
422
|
+
/**
|
|
423
|
+
* Forward a watch TCP port through the phone
|
|
424
|
+
* @param watchPort TCP port on the watch
|
|
425
|
+
* @returns Ephemeral phone port proxying to the watch port
|
|
426
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
427
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `CompanionProxyServicePort`
|
|
428
|
+
*/
|
|
429
|
+
startForwardingServicePort(watchPort: number, options?: StartForwardingOptions): Promise<number>;
|
|
430
|
+
/**
|
|
431
|
+
* Stop forwarding a watch TCP port
|
|
432
|
+
* @param watchPort TCP port on the watch
|
|
433
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
434
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply that is not a success
|
|
435
|
+
*/
|
|
436
|
+
stopForwardingServicePort(watchPort: number): Promise<void>;
|
|
437
|
+
/**
|
|
438
|
+
* Open a raw TCP socket to a phone port returned by startForwardingServicePort
|
|
439
|
+
* @param companionPort Phone port
|
|
440
|
+
*/
|
|
441
|
+
connectToForwardedPort(companionPort: number): Promise<Socket>;
|
|
442
|
+
/**
|
|
443
|
+
* Close every open listen() stream
|
|
444
|
+
*/
|
|
445
|
+
close(): void;
|
|
446
|
+
}
|
|
447
|
+
|
|
393
448
|
/**
|
|
394
449
|
* Represents the PowerAssertionService for preventing system sleep
|
|
395
450
|
*/
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raised when companion_proxy rejects a command; `code` carries the daemon's raw `Error` string.
|
|
3
|
+
*/
|
|
4
|
+
export class CompanionProxyError extends Error {
|
|
5
|
+
readonly code?: string;
|
|
6
|
+
|
|
7
|
+
constructor(message: string, code?: string) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = 'CompanionProxyError';
|
|
10
|
+
this.code = code;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import type {Socket} from 'node:net';
|
|
2
|
+
|
|
3
|
+
import {util} from '@appium/support';
|
|
4
|
+
|
|
5
|
+
import {getLogger} from '../../../lib/logger.js';
|
|
6
|
+
import {connectViaTunnel} from '../../../lib/port-forwarding/connectors.js';
|
|
7
|
+
import type {
|
|
8
|
+
CompanionProxyService as CompanionProxyServiceInterface,
|
|
9
|
+
PlistDictionary,
|
|
10
|
+
PlistValue,
|
|
11
|
+
} from '../../../lib/types.js';
|
|
12
|
+
import type {ServiceConnection} from '../../../service-connection.js';
|
|
13
|
+
import {BaseService} from '../base-service.js';
|
|
14
|
+
import {CompanionProxyError} from './errors.js';
|
|
15
|
+
|
|
16
|
+
const log = getLogger('CompanionProxyService');
|
|
17
|
+
|
|
18
|
+
const DEFAULT_TIMEOUT_MS = 10000;
|
|
19
|
+
const DEFAULT_EVENT_TIMEOUT_MS = 120000;
|
|
20
|
+
const MAX_PORT = 65535;
|
|
21
|
+
|
|
22
|
+
export type CompanionDeviceEventCommand = 'GizmoPaired' | 'GizmoUnpaired' | 'GizmoAttach' | 'GizmoDetach';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Event frame streamed by `StartListeningForDevices`.
|
|
26
|
+
*/
|
|
27
|
+
export interface CompanionDeviceEvent extends PlistDictionary {
|
|
28
|
+
Command: CompanionDeviceEventCommand;
|
|
29
|
+
GizmoUDIDKey: string;
|
|
30
|
+
/** Present on `GizmoAttach` for watchOS >= 2 */
|
|
31
|
+
CompanionLockdownProxyPort?: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Options for `StartForwardingServicePort`; any extra keys are merged verbatim into the request.
|
|
36
|
+
*/
|
|
37
|
+
export interface StartForwardingOptions extends PlistDictionary {
|
|
38
|
+
serviceName?: string;
|
|
39
|
+
isServiceLowPriority?: boolean;
|
|
40
|
+
preferWifi?: boolean;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
interface GetValueFromRegistryRequest extends PlistDictionary {
|
|
44
|
+
Command: 'GetValueFromRegistry';
|
|
45
|
+
GetValueGizmoUDIDKey: string;
|
|
46
|
+
GetValueKeyKey: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface StartForwardingServicePortRequest extends PlistDictionary {
|
|
50
|
+
Command: 'StartForwardingServicePort';
|
|
51
|
+
GizmoRemotePortNumber: number;
|
|
52
|
+
IsServiceLowPriority: boolean;
|
|
53
|
+
PreferWifi: boolean;
|
|
54
|
+
ForwardedServiceName?: string;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
interface StopForwardingServicePortRequest extends PlistDictionary {
|
|
58
|
+
Command: 'StopForwardingServicePort';
|
|
59
|
+
GizmoRemotePortNumber: number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function isPlistDictionary(value: PlistValue): value is PlistDictionary {
|
|
63
|
+
return util.isPlainObject(value);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function isCompanionDeviceEvent(frame: PlistDictionary): frame is CompanionDeviceEvent {
|
|
67
|
+
return typeof frame?.Command === 'string' && typeof frame.GizmoUDIDKey === 'string';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Validate a watch TCP port and pass it through
|
|
72
|
+
* @throws {TypeError} When `port` is not an integer in 1..65535
|
|
73
|
+
*/
|
|
74
|
+
function assertWatchPort(port: number): number {
|
|
75
|
+
if (!Number.isInteger(port) || port < 1 || port > MAX_PORT) {
|
|
76
|
+
throw new TypeError(`watchPort must be an integer in 1..${MAX_PORT}, got ${port}`);
|
|
77
|
+
}
|
|
78
|
+
return port;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* CompanionProxyService provides an API to:
|
|
83
|
+
* - List paired Apple Watches and stream pair/attach events
|
|
84
|
+
* - Read per-watch registry values
|
|
85
|
+
* - Forward a watch TCP port through the phone and connect to it
|
|
86
|
+
*/
|
|
87
|
+
export class CompanionProxyService extends BaseService implements CompanionProxyServiceInterface {
|
|
88
|
+
static readonly RSD_SERVICE_NAME = 'com.apple.companion_proxy.shim.remote';
|
|
89
|
+
private readonly timeout: number;
|
|
90
|
+
private readonly _listenConns = new Set<ServiceConnection>();
|
|
91
|
+
|
|
92
|
+
constructor(udid: string, timeout: number = DEFAULT_TIMEOUT_MS) {
|
|
93
|
+
super(udid);
|
|
94
|
+
this.timeout = timeout;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* List the UDIDs of the watches paired with this phone
|
|
99
|
+
* @returns Paired watch UDIDs; empty when the daemon reports `NoPairedWatches`
|
|
100
|
+
* @throws {CompanionProxyError} On any other daemon `Error` reply
|
|
101
|
+
*/
|
|
102
|
+
async list(): Promise<string[]> {
|
|
103
|
+
const response = await this.sendCommand({Command: 'GetDeviceRegistry'});
|
|
104
|
+
if (response.Error === 'NoPairedWatches') {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
const udids = this.throwOnError(response, 'GetDeviceRegistry').PairedDevicesArray;
|
|
108
|
+
return Array.isArray(udids) ? udids.map(String) : [];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Stream watch pair/unpair/attach/detach events on a dedicated connection that is closed
|
|
113
|
+
* when the consumer stops iterating, on error, on abort, on `close()`, or when the daemon hangs up.
|
|
114
|
+
* The daemon cancels the stream on any further input, so nothing else is ever sent on it.
|
|
115
|
+
* @param timeout Milliseconds to wait for each event
|
|
116
|
+
* @param signal Aborting it stops this stream only, settling a pending iteration with the abort reason
|
|
117
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a frame that is not a companion event
|
|
118
|
+
* @throws {Error} When no event arrives within `timeout` or the connection is closed by either side
|
|
119
|
+
* @throws {DOMException} The `AbortError` (or `signal.reason`) once `signal` aborts
|
|
120
|
+
*/
|
|
121
|
+
async *listen(
|
|
122
|
+
timeout: number = DEFAULT_EVENT_TIMEOUT_MS,
|
|
123
|
+
signal?: AbortSignal,
|
|
124
|
+
): AsyncGenerator<CompanionDeviceEvent> {
|
|
125
|
+
const conn = await this.connectToCompanionProxyService();
|
|
126
|
+
this._listenConns.add(conn);
|
|
127
|
+
const release = (): void => this.releaseListenConnection(conn);
|
|
128
|
+
conn.getSocket().once('close', release);
|
|
129
|
+
signal?.addEventListener('abort', release, {once: true});
|
|
130
|
+
try {
|
|
131
|
+
signal?.throwIfAborted();
|
|
132
|
+
conn.sendPlist({Command: 'StartListeningForDevices'});
|
|
133
|
+
while (true) {
|
|
134
|
+
const frame = this.throwOnError(await conn.receive(timeout), 'StartListeningForDevices');
|
|
135
|
+
if (!isCompanionDeviceEvent(frame)) {
|
|
136
|
+
throw new CompanionProxyError(`Unexpected companion event frame: ${JSON.stringify(frame)}`);
|
|
137
|
+
}
|
|
138
|
+
yield frame;
|
|
139
|
+
signal?.throwIfAborted();
|
|
140
|
+
}
|
|
141
|
+
} catch (error) {
|
|
142
|
+
throw signal?.aborted ? signal.reason : error;
|
|
143
|
+
} finally {
|
|
144
|
+
signal?.removeEventListener('abort', release);
|
|
145
|
+
release();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Read one registry value for a paired watch
|
|
151
|
+
* @param companionUdid Watch UDID from `list()`
|
|
152
|
+
* @param key Registry key, e.g. `DeviceName`, `ProductVersion`, `BatteryCurrentCapacity`
|
|
153
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `RetrievedValueDictionary`
|
|
154
|
+
*/
|
|
155
|
+
async getValue(companionUdid: string, key: string): Promise<PlistValue> {
|
|
156
|
+
const response = this.throwOnError(
|
|
157
|
+
await this.sendCommand(this.buildGetValueRequest(companionUdid, key)),
|
|
158
|
+
'GetValueFromRegistry',
|
|
159
|
+
);
|
|
160
|
+
const values = response.RetrievedValueDictionary;
|
|
161
|
+
if (!isPlistDictionary(values)) {
|
|
162
|
+
throw new CompanionProxyError(`Unexpected GetValueFromRegistry reply: ${JSON.stringify(response)}`);
|
|
163
|
+
}
|
|
164
|
+
return values[key];
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Ask the phone to forward a watch TCP port; the listener survives until
|
|
169
|
+
* `stopForwardingServicePort()`. Reach it with `connectToForwardedPort()`.
|
|
170
|
+
* @param watchPort TCP port on the watch
|
|
171
|
+
* @returns Ephemeral port on the phone proxying to `watchPort`
|
|
172
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
173
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply without `CompanionProxyServicePort`
|
|
174
|
+
*/
|
|
175
|
+
async startForwardingServicePort(watchPort: number, options?: StartForwardingOptions): Promise<number> {
|
|
176
|
+
const response = this.throwOnError(
|
|
177
|
+
await this.sendCommand(this.buildStartForwardingRequest(watchPort, options)),
|
|
178
|
+
'StartForwardingServicePort',
|
|
179
|
+
);
|
|
180
|
+
const port = response.CompanionProxyServicePort;
|
|
181
|
+
if (typeof port !== 'number') {
|
|
182
|
+
throw new CompanionProxyError(`Unexpected StartForwardingServicePort reply: ${JSON.stringify(response)}`);
|
|
183
|
+
}
|
|
184
|
+
return port;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Stop forwarding a watch port started with `startForwardingServicePort()`.
|
|
189
|
+
* Accepts Apple's misspelled `ComandSuccess` reply as well as `CommandSuccess`.
|
|
190
|
+
* @param watchPort TCP port on the watch (not the phone port returned earlier)
|
|
191
|
+
* @throws {TypeError} When `watchPort` is not an integer in 1..65535
|
|
192
|
+
* @throws {CompanionProxyError} On a daemon `Error` reply or a reply that is not a success
|
|
193
|
+
*/
|
|
194
|
+
async stopForwardingServicePort(watchPort: number): Promise<void> {
|
|
195
|
+
const response = this.throwOnError(
|
|
196
|
+
await this.sendCommand(this.buildStopForwardingRequest(watchPort)),
|
|
197
|
+
'StopForwardingServicePort',
|
|
198
|
+
);
|
|
199
|
+
if (response.Command !== 'ComandSuccess' && response.Command !== 'CommandSuccess') {
|
|
200
|
+
throw new CompanionProxyError(`Unexpected StopForwardingServicePort reply: ${JSON.stringify(response)}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Open a raw TCP socket to a phone port returned by `startForwardingServicePort()`.
|
|
206
|
+
* No RSD check-in happens on this socket.
|
|
207
|
+
* @param companionPort Phone port
|
|
208
|
+
*/
|
|
209
|
+
async connectToForwardedPort(companionPort: number): Promise<Socket> {
|
|
210
|
+
return await connectViaTunnel(this.udid, companionPort);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Close every open `listen()` stream; their pending receives reject and the generators exit
|
|
215
|
+
*/
|
|
216
|
+
close(): void {
|
|
217
|
+
for (const conn of this._listenConns) {
|
|
218
|
+
this.closeListenConnection(conn);
|
|
219
|
+
}
|
|
220
|
+
this._listenConns.clear();
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Open a fresh checked-in connection and drain the shim's `StartService` greeting.
|
|
225
|
+
* A greeting carrying `Error` (e.g. `ServiceProhibited`) is surfaced instead of hanging later.
|
|
226
|
+
*/
|
|
227
|
+
private async connectToCompanionProxyService(): Promise<ServiceConnection> {
|
|
228
|
+
const conn = await this.startLockdownService(CompanionProxyService.RSD_SERVICE_NAME, {
|
|
229
|
+
createConnectionTimeout: this.timeout,
|
|
230
|
+
});
|
|
231
|
+
try {
|
|
232
|
+
const greeting = this.throwOnError(await conn.receive(this.timeout), 'StartService');
|
|
233
|
+
if (greeting?.Request !== 'StartService') {
|
|
234
|
+
throw new CompanionProxyError(`Expected StartService greeting, got: ${JSON.stringify(greeting)}`);
|
|
235
|
+
}
|
|
236
|
+
return conn;
|
|
237
|
+
} catch (error) {
|
|
238
|
+
conn.close();
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Send one command on a fresh connection; the daemon closes after every reply
|
|
245
|
+
*/
|
|
246
|
+
private async sendCommand(request: PlistDictionary): Promise<PlistDictionary> {
|
|
247
|
+
const conn = await this.connectToCompanionProxyService();
|
|
248
|
+
try {
|
|
249
|
+
return await conn.sendPlistRequest(request, this.timeout);
|
|
250
|
+
} finally {
|
|
251
|
+
conn.close();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
private closeListenConnection(conn: ServiceConnection): void {
|
|
256
|
+
try {
|
|
257
|
+
conn.close();
|
|
258
|
+
} catch (error) {
|
|
259
|
+
log.error('Error closing companion proxy connection:', error);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Close a `listen()` connection exactly once; rejects its pending receive so the generator exits
|
|
265
|
+
*/
|
|
266
|
+
private releaseListenConnection(conn: ServiceConnection): void {
|
|
267
|
+
if (this._listenConns.delete(conn)) {
|
|
268
|
+
this.closeListenConnection(conn);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Throw on a daemon `Error` reply, otherwise pass the response through
|
|
274
|
+
* @throws {CompanionProxyError} Carrying the daemon `Error` code
|
|
275
|
+
*/
|
|
276
|
+
private throwOnError<T extends PlistDictionary>(response: T, command: string): T {
|
|
277
|
+
if (!response?.Error) {
|
|
278
|
+
return response;
|
|
279
|
+
}
|
|
280
|
+
const code = String(response.Error);
|
|
281
|
+
const description = response.ErrorDescription ? ` - ${String(response.ErrorDescription)}` : '';
|
|
282
|
+
throw new CompanionProxyError(`${command} failed: ${code}${description}`, code);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
private buildGetValueRequest(companionUdid: string, key: string): GetValueFromRegistryRequest {
|
|
286
|
+
return {
|
|
287
|
+
Command: 'GetValueFromRegistry',
|
|
288
|
+
GetValueGizmoUDIDKey: companionUdid,
|
|
289
|
+
GetValueKeyKey: key,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
private buildStartForwardingRequest(
|
|
294
|
+
watchPort: number,
|
|
295
|
+
{serviceName, isServiceLowPriority = false, preferWifi = false, ...options}: StartForwardingOptions = {},
|
|
296
|
+
): StartForwardingServicePortRequest {
|
|
297
|
+
return {
|
|
298
|
+
Command: 'StartForwardingServicePort',
|
|
299
|
+
GizmoRemotePortNumber: assertWatchPort(watchPort),
|
|
300
|
+
IsServiceLowPriority: isServiceLowPriority,
|
|
301
|
+
PreferWifi: preferWifi,
|
|
302
|
+
...(serviceName === undefined ? {} : {ForwardedServiceName: serviceName}),
|
|
303
|
+
...options,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
private buildStopForwardingRequest(watchPort: number): StopForwardingServicePortRequest {
|
|
308
|
+
return {
|
|
309
|
+
Command: 'StopForwardingServicePort',
|
|
310
|
+
GizmoRemotePortNumber: assertWatchPort(watchPort),
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
}
|