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 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
@@ -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":"AAeA,OAAO,EAAC,kBAAkB,EAAC,MAAM,0CAA0C,CAAC;AAM5E,OAAO,EAAC,kBAAkB,EAAC,CAAC"}
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":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,4CAA4C,CAAC;AAO5E,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEhD,MAAM,GAAG,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC;AAE/C,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,QAAQ,GAAG,KAAK,CAAC;AA0CvB,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAsB;IACpD,OAAO,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,sCAAsC,QAAQ,SAAS,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,MAAM,CAAU,gBAAgB,GAAG,uCAAuC,CAAC;IAC1D,OAAO,CAAS;IAChB,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE7D,YAAY,IAAY,EAAE,UAAkB,kBAAkB;QAC5D,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAC,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,kBAAkB,CAAC;QAClF,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,CAAC,MAAM,CACX,UAAkB,wBAAwB,EAC1C,MAAoB;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,0BAA0B,EAAC,CAAC,CAAC;YACtD,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC,CAAC;gBACzF,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,mBAAmB,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9F,CAAC;gBACD,MAAM,KAAK,CAAC;gBACZ,MAAM,EAAE,cAAc,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,aAAqB,EAAE,GAAW;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAChC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EACrE,sBAAsB,CACvB,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,mBAAmB,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,0BAA0B,CAAC,SAAiB,EAAE,OAAgC;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAChC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAC5E,4BAA4B,CAC7B,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,mBAAmB,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,yBAAyB,CAAC,SAAiB;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAChC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,EAClE,2BAA2B,CAC5B,CAAC;QACF,IAAI,QAAQ,CAAC,OAAO,KAAK,eAAe,IAAI,QAAQ,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;YAClF,MAAM,IAAI,mBAAmB,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,sBAAsB,CAAC,aAAqB;QAChD,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK;QACH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,8BAA8B;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;YACnF,uBAAuB,EAAE,IAAI,CAAC,OAAO;SACtC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;YACrF,IAAI,QAAQ,EAAE,OAAO,KAAK,cAAc,EAAE,CAAC;gBACzC,MAAM,IAAI,mBAAmB,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,OAAwB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,IAAuB;QACnD,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,IAAuB;QACrD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,YAAY,CAA4B,QAAW,EAAE,OAAe;QAC1E,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;YACrB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,mBAAmB,CAAC,GAAG,OAAO,YAAY,IAAI,GAAG,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAEO,oBAAoB,CAAC,aAAqB,EAAE,GAAW;QAC7D,OAAO;YACL,OAAO,EAAE,sBAAsB;YAC/B,oBAAoB,EAAE,aAAa;YACnC,cAAc,EAAE,GAAG;SACpB,CAAC;IACJ,CAAC;IAEO,2BAA2B,CACjC,SAAiB,EACjB,EAAC,WAAW,EAAE,oBAAoB,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,OAAO,KAA4B,EAAE;QAExG,OAAO;YACL,OAAO,EAAE,4BAA4B;YACrC,qBAAqB,EAAE,eAAe,CAAC,SAAS,CAAC;YACjD,oBAAoB,EAAE,oBAAoB;YAC1C,UAAU,EAAE,UAAU;YACtB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,oBAAoB,EAAE,WAAW,EAAC,CAAC;YACzE,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,SAAiB;QAClD,OAAO;YACL,OAAO,EAAE,2BAA2B;YACpC,qBAAqB,EAAE,eAAe,CAAC,SAAS,CAAC;SAClD,CAAC;IACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "5.18.9",
3
+ "version": "5.19.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "bugs": {
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
+ }