appium-ios-remotexpc 5.1.4 → 5.1.5

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.1.5](https://github.com/appium/appium-ios-remotexpc/compare/v5.1.4...v5.1.5) (2026-06-20)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * Improve progress logging for AppleTV pairing scenarios ([#245](https://github.com/appium/appium-ios-remotexpc/issues/245)) ([cc3eabe](https://github.com/appium/appium-ios-remotexpc/commit/cc3eabeaee49d53ad6cf1d546ab1c38ac5d2adac))
6
+
1
7
  ## [5.1.4](https://github.com/appium/appium-ios-remotexpc/compare/v5.1.3...v5.1.4) (2026-06-20)
2
8
 
3
9
  ### Bug Fixes
@@ -30,8 +30,9 @@ export type { XCUITestOptions, XCUITestServiceEvents, XCTestRunnerEvents, XCTest
30
30
  export { createBinaryPlist } from './lib/plist/index.js';
31
31
  export { AppleTVPairingService, UserInputService, } from './lib/apple-tv/pairing/index.js';
32
32
  export { AppleTVTunnelService } from './lib/apple-tv/tunnel/index.js';
33
+ export type { AppleTVPairingDiscoveryOptions, AppleTVPairingOptions, } from './lib/apple-tv/pairing/index.js';
33
34
  export type { AppleTVDiscoveryOptions, AppleTVTunnelOptions, } from './lib/apple-tv/tunnel/index.js';
34
- export type { AppleTVPairingResult } from './lib/apple-tv/types.js';
35
+ export type { AppleTVDevice, AppleTVPairingResult, } from './lib/apple-tv/types.js';
35
36
  export type { LockdownService } from './lib/lockdown/index.js';
36
37
  export { connectViaTunnel, connectViaUsbmux, } from './lib/port-forwarding/index.js';
37
38
  export { STRONGBOX_CONTAINER_NAME, TUNNEL_CONTAINER_NAME, createUsbmux, Services, Usbmux, DevicePortForwarder, TunnelManager, discoverServices, servicesToCatalog, TunnelReadinessCoordinator, createLockdownServiceForTunnel, createLockdownServiceByUDID, startCoreDeviceProxyTcp, TunnelRegistryServer, startTunnelRegistryServer, watchTunnelRegistrySockets, watchTunnelRegistryOnDead, };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAUjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAuDlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAEhG,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,SAAS,GACV,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,aAAa,GACd,MAAM,8CAA8C,CAAC;AAWtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAQtE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAUjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAuDlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAEhG,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,SAAS,GACV,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,aAAa,GACd,MAAM,8CAA8C,CAAC;AAWtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAetE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { UserInputService } from './user-input-service.js';
2
2
  export { AppleTVPairingService } from './pairing-service.js';
3
+ export type { AppleTVPairingDiscoveryOptions, AppleTVPairingOptions, } from './pairing-service.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EACV,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC"}
@@ -1,5 +1,12 @@
1
1
  import type { UserInputInterface } from '../pairing-protocol/types.js';
2
2
  import type { AppleTVDevice, AppleTVPairingResult, PairingConfig } from '../types.js';
3
+ export interface AppleTVPairingDiscoveryOptions {
4
+ timeoutMs?: number;
5
+ }
6
+ export interface AppleTVPairingOptions {
7
+ discoveryTimeoutMs?: number;
8
+ devices?: AppleTVDevice[];
9
+ }
3
10
  /** Main service orchestrating Apple TV device discovery and pairing */
4
11
  export declare class AppleTVPairingService {
5
12
  private readonly networkClient;
@@ -7,9 +14,9 @@ export declare class AppleTVPairingService {
7
14
  private readonly userInput;
8
15
  private readonly pairingProtocol;
9
16
  constructor(userInput: UserInputInterface, config?: PairingConfig);
10
- discoverAndPair(deviceSelector?: string): Promise<AppleTVPairingResult>;
17
+ discoverAndPair(deviceSelector?: string, options?: AppleTVPairingOptions): Promise<AppleTVPairingResult>;
11
18
  pairWithDevice(device: AppleTVDevice): Promise<string>;
12
- private discoverDevices;
19
+ discoverDevices(options?: AppleTVPairingDiscoveryOptions): Promise<AppleTVDevice[]>;
13
20
  private selectDevice;
14
21
  }
15
22
  //# sourceMappingURL=pairing-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/pairing-service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,uEAAuE;AACvE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAGhD,SAAS,EAAE,kBAAkB,EAC7B,MAAM,GAAE,aAAsC;IAW1C,eAAe,CACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;IA6B1B,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YAyB9C,eAAe;YAyBf,YAAY;CAwF3B"}
1
+ {"version":3,"file":"pairing-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/pairing-service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,uEAAuE;AACvE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAGhD,SAAS,EAAE,kBAAkB,EAC7B,MAAM,GAAE,aAAsC;IAW1C,eAAe,CACnB,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC;IA+B1B,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBtD,eAAe,CACnB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,aAAa,EAAE,CAAC;YAoBb,YAAY;CAwF3B"}
@@ -19,12 +19,14 @@ export class AppleTVPairingService {
19
19
  this.userInput = userInput;
20
20
  this.pairingProtocol = new PairingProtocol(this.networkClient, this.userInput);
21
21
  }
22
- async discoverAndPair(deviceSelector) {
22
+ async discoverAndPair(deviceSelector, options = {}) {
23
23
  try {
24
- const devices = await this.discoverDevices();
24
+ const devices = options.devices ??
25
+ (await this.discoverDevices({
26
+ timeoutMs: options.discoveryTimeoutMs,
27
+ }));
25
28
  if (devices.length === 0) {
26
29
  const errorMessage = 'No Apple TV pairing devices found. Please ensure your Apple TV is on the same network and in pairing mode.';
27
- log.error(errorMessage);
28
30
  throw new PairingError(errorMessage, 'NO_DEVICES');
29
31
  }
30
32
  const device = await this.selectDevice(devices, deviceSelector);
@@ -36,7 +38,6 @@ export class AppleTVPairingService {
36
38
  };
37
39
  }
38
40
  catch (error) {
39
- log.error('Pairing failed:', error);
40
41
  return {
41
42
  success: false,
42
43
  deviceId: 'unknown',
@@ -63,19 +64,18 @@ export class AppleTVPairingService {
63
64
  this.networkClient.disconnect();
64
65
  }
65
66
  }
66
- async discoverDevices() {
67
+ async discoverDevices(options = {}) {
67
68
  try {
69
+ const timeoutMs = options.timeoutMs ?? this.config.discoveryTimeout;
68
70
  const backend = createDiscoveryBackend(process.platform, {
69
71
  serviceType: REMOTE_PAIRING_MANUAL_DISCOVERY_SERVICE_TYPE,
70
72
  domain: REMOTE_PAIRING_DISCOVERY_DOMAIN,
71
73
  });
72
- log.info(`Discovering Apple TV devices (waiting ${this.config.discoveryTimeout / 1000} seconds)...`);
73
- const discoveredDevices = await backend.discoverDevices(this.config.discoveryTimeout);
74
+ const discoveredDevices = await backend.discoverDevices(timeoutMs);
74
75
  const enrichedDevices = await enrichDiscoveredDevicesWithDevicectl(discoveredDevices);
75
76
  return toAppleTVDevices(enrichedDevices);
76
77
  }
77
78
  catch (error) {
78
- log.error('Device discovery failed:', error);
79
79
  throw new PairingError('Device discovery failed', 'DISCOVERY_ERROR', error);
80
80
  }
81
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-service.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/pairing-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pairing-service.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/pairing-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,4CAA4C,GAC7C,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAQ/D,MAAM,GAAG,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC;AAW/C,uEAAuE;AACvE,MAAM,OAAO,qBAAqB;IACf,aAAa,CAAgB;IAC7B,MAAM,CAAgB;IACtB,SAAS,CAAqB;IAC9B,eAAe,CAAkB;IAElD,YACE,SAA6B,EAC7B,SAAwB,sBAAsB;QAE9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CACxC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,cAAuB,EACvB,UAAiC,EAAE;QAEnC,IAAI,CAAC;YACH,MAAM,OAAO,GACX,OAAO,CAAC,OAAO;gBACf,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC;oBAC1B,SAAS,EAAE,OAAO,CAAC,kBAAkB;iBACtC,CAAC,CAAC,CAAC;YAEN,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,YAAY,GAChB,4GAA4G,CAAC;gBAC/G,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAEtD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM,CAAC,UAAU;gBAC3B,WAAW;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAqB;QACxC,IAAI,CAAC;YACH,uDAAuD;YACvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC;YAEtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,YAAY,CACpB,sDAAsD,EACtD,sBAAsB,CACvB,CAAC;YACJ,CAAC;YAED,GAAG,CAAC,IAAI,CACN,wBAAwB,MAAM,CAAC,IAAI,OAAO,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,CAC5E,CAAC;YACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChE,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,UAAU,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,UAA0C,EAAE;QAE5C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACpE,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACvD,WAAW,EAAE,4CAA4C;gBACzD,MAAM,EAAE,+BAA+B;aACxC,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACnE,MAAM,eAAe,GACnB,MAAM,oCAAoC,CAAC,iBAAiB,CAAC,CAAC;YAChE,OAAO,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CACpB,yBAAyB,EACzB,iBAAiB,EACjB,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,OAAwB,EACxB,cAAuB;QAEvB,iFAAiF;QACjF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;YAC/C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChC,GAAG,CAAC,IAAI,CACN,MAAM,KAAK,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,OAAO,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,EAAE,CAC1F,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,KAAK,CAAC;gBAClB,CAAC,CAAC,oDAAoD;gBACtD,CAAC,CAAC,6BAA6B,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YAE3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEhC,oEAAoE;YACpE,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CACN,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CACjE,CAAC;gBACF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAEpC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzD,MAAM,IAAI,YAAY,CACpB,yBAAyB,OAAO,2BAA2B,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,EAC/E,0BAA0B,CAC3B,CAAC;YACJ,CAAC;YAED,GAAG,CAAC,IAAI,CACN,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CACzE,CAAC;YACF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACzE,GAAG,CAAC,IAAI,CACN,4BAA4B,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CACtE,CAAC;YACF,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,0CAA0C;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC5B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CACvE,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CACN,4BAA4B,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,GAAG,CACvE,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,gDAAgD;QAChD,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAClC,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CACnE,CAAC;QACF,IAAI,eAAe,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CACN,kCAAkC,eAAe,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU,GAAG,CACzF,CAAC;YACF,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,iBAAiB;QACjB,MAAM,gBAAgB,GAAG,OAAO;aAC7B,GAAG,CACF,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,GAAG,CACxE;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,IAAI,YAAY,CACpB,WAAW,cAAc,oCAAoC,gBAAgB,EAAE,EAC/E,kBAAkB,CACnB,CAAC;IACJ,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "5.1.4",
3
+ "version": "5.1.5",
4
4
  "main": "build/src/index.js",
5
5
  "types": "build/src/index.d.ts",
6
6
  "type": "module",
@@ -8,9 +8,98 @@
8
8
 
9
9
  import { logger } from '@appium/support';
10
10
  import { Command } from 'commander';
11
- import { AppleTVPairingService, UserInputService } from 'appium-ios-remotexpc';
11
+ import {
12
+ AppleTVPairingService,
13
+ UserInputService,
14
+ } from 'appium-ios-remotexpc';
15
+ import { DEFAULT_PAIRING_CONFIG } from '../build/src/lib/apple-tv/constants.js';
12
16
 
13
17
  const log = logger.getLogger('AppleTVPairing');
18
+ const APPLETV_PAIRING_DISCOVERY_PROGRESS_INTERVAL_MS = 1000;
19
+ const APPLETV_PAIRING_DISCOVERY_PROGRESS_BAR_WIDTH = 24;
20
+
21
+ function parsePositiveInteger(value) {
22
+ const count = Number.parseInt(value, 10);
23
+ if (!Number.isFinite(count) || count <= 0) {
24
+ throw new Error(
25
+ `Invalid timeout: ${value}. Expected a positive integer in milliseconds.`,
26
+ );
27
+ }
28
+ return count;
29
+ }
30
+
31
+ function startTimeoutProgressLogger({
32
+ label,
33
+ startedAt,
34
+ timeoutMs,
35
+ barWidth,
36
+ intervalMs,
37
+ }) {
38
+ let timer = null;
39
+ let isStopped = false;
40
+
41
+ const logProgress = (status, isComplete = false) => {
42
+ const elapsedMs = performance.now() - startedAt;
43
+ const boundedElapsedMs = Math.min(elapsedMs, timeoutMs);
44
+ const progress = isComplete ? 1 : boundedElapsedMs / timeoutMs;
45
+ const filledWidth = Math.round(progress * barWidth);
46
+ const emptyWidth = barWidth - filledWidth;
47
+ const bar = `${'#'.repeat(filledWidth)}${'-'.repeat(emptyWidth)}`;
48
+ log.info(
49
+ `${label}: [${bar}]${status && status !== 'waiting' ? ` - ${status}` : ''}`,
50
+ );
51
+ };
52
+
53
+ const stop = (status, isComplete = false) => {
54
+ if (isStopped) {
55
+ return;
56
+ }
57
+ isStopped = true;
58
+ if (timer) {
59
+ clearInterval(timer);
60
+ timer = null;
61
+ }
62
+ logProgress(status, isComplete);
63
+ };
64
+
65
+ logProgress('waiting');
66
+ timer = setInterval(() => {
67
+ logProgress('waiting');
68
+ }, intervalMs);
69
+ timer.unref?.();
70
+
71
+ return {
72
+ succeed: (message = 'done') => stop(message, true),
73
+ fail: (message = 'failed') => stop(message),
74
+ };
75
+ }
76
+
77
+ function discoverAppleTVPairingDevices(pairingService, timeoutMs) {
78
+ const startedAt = performance.now();
79
+ const promise = pairingService.discoverDevices({ timeoutMs });
80
+ return { startedAt, promise };
81
+ }
82
+
83
+ async function waitForAppleTVPairingDiscovery(discovery, timeoutMs) {
84
+ const progress = startTimeoutProgressLogger({
85
+ label: 'Waiting for Apple TV pairing discovery',
86
+ startedAt: discovery.startedAt,
87
+ timeoutMs,
88
+ barWidth: APPLETV_PAIRING_DISCOVERY_PROGRESS_BAR_WIDTH,
89
+ intervalMs: APPLETV_PAIRING_DISCOVERY_PROGRESS_INTERVAL_MS,
90
+ });
91
+
92
+ try {
93
+ const devices = await discovery.promise;
94
+ progress.succeed(
95
+ `Apple TV pairing discovery completed: ${devices.length} device(s) found`,
96
+ );
97
+ return devices;
98
+ } catch (err) {
99
+ progress.fail('Apple TV pairing discovery failed');
100
+ throw err;
101
+ }
102
+ }
14
103
 
15
104
  async function main() {
16
105
  const program = new Command();
@@ -20,14 +109,32 @@ async function main() {
20
109
  .option(
21
110
  '-d, --device <selector>',
22
111
  'Device selector: name, identifier (e.g. AA:BB:CC:DD:EE:FF), or index (0, 1, …)',
112
+ )
113
+ .option(
114
+ '--discovery-timeout <ms>',
115
+ 'Apple TV pairing discovery timeout in milliseconds',
116
+ parsePositiveInteger,
23
117
  );
24
118
 
25
119
  program.parse(process.argv);
26
120
  const options = program.opts();
121
+ const discoveryTimeoutMs =
122
+ options.discoveryTimeout ?? DEFAULT_PAIRING_CONFIG.discoveryTimeout;
27
123
 
28
124
  const userInput = new UserInputService();
29
125
  const pairingService = new AppleTVPairingService(userInput);
30
- const result = await pairingService.discoverAndPair(options.device);
126
+ const discovery = discoverAppleTVPairingDevices(
127
+ pairingService,
128
+ discoveryTimeoutMs,
129
+ );
130
+ const devices = await waitForAppleTVPairingDiscovery(
131
+ discovery,
132
+ discoveryTimeoutMs,
133
+ );
134
+ const result = await pairingService.discoverAndPair(options.device, {
135
+ devices,
136
+ discoveryTimeoutMs,
137
+ });
31
138
 
32
139
  if (result.success) {
33
140
  log.info(`Pairing successful! Record saved to: ${result.pairingFile}`);
package/src/index.ts CHANGED
@@ -131,11 +131,18 @@ export {
131
131
  UserInputService,
132
132
  } from './lib/apple-tv/pairing/index.js';
133
133
  export { AppleTVTunnelService } from './lib/apple-tv/tunnel/index.js';
134
+ export type {
135
+ AppleTVPairingDiscoveryOptions,
136
+ AppleTVPairingOptions,
137
+ } from './lib/apple-tv/pairing/index.js';
134
138
  export type {
135
139
  AppleTVDiscoveryOptions,
136
140
  AppleTVTunnelOptions,
137
141
  } from './lib/apple-tv/tunnel/index.js';
138
- export type { AppleTVPairingResult } from './lib/apple-tv/types.js';
142
+ export type {
143
+ AppleTVDevice,
144
+ AppleTVPairingResult,
145
+ } from './lib/apple-tv/types.js';
139
146
  export type { LockdownService } from './lib/lockdown/index.js';
140
147
 
141
148
  export {
@@ -1,2 +1,6 @@
1
1
  export { UserInputService } from './user-input-service.js';
2
2
  export { AppleTVPairingService } from './pairing-service.js';
3
+ export type {
4
+ AppleTVPairingDiscoveryOptions,
5
+ AppleTVPairingOptions,
6
+ } from './pairing-service.js';
@@ -19,6 +19,15 @@ import type {
19
19
 
20
20
  const log = getLogger('AppleTVPairingService');
21
21
 
22
+ export interface AppleTVPairingDiscoveryOptions {
23
+ timeoutMs?: number;
24
+ }
25
+
26
+ export interface AppleTVPairingOptions {
27
+ discoveryTimeoutMs?: number;
28
+ devices?: AppleTVDevice[];
29
+ }
30
+
22
31
  /** Main service orchestrating Apple TV device discovery and pairing */
23
32
  export class AppleTVPairingService {
24
33
  private readonly networkClient: NetworkClient;
@@ -41,14 +50,18 @@ export class AppleTVPairingService {
41
50
 
42
51
  async discoverAndPair(
43
52
  deviceSelector?: string,
53
+ options: AppleTVPairingOptions = {},
44
54
  ): Promise<AppleTVPairingResult> {
45
55
  try {
46
- const devices = await this.discoverDevices();
56
+ const devices =
57
+ options.devices ??
58
+ (await this.discoverDevices({
59
+ timeoutMs: options.discoveryTimeoutMs,
60
+ }));
47
61
 
48
62
  if (devices.length === 0) {
49
63
  const errorMessage =
50
64
  'No Apple TV pairing devices found. Please ensure your Apple TV is on the same network and in pairing mode.';
51
- log.error(errorMessage);
52
65
  throw new PairingError(errorMessage, 'NO_DEVICES');
53
66
  }
54
67
 
@@ -61,7 +74,6 @@ export class AppleTVPairingService {
61
74
  pairingFile,
62
75
  };
63
76
  } catch (error) {
64
- log.error('Pairing failed:', error);
65
77
  return {
66
78
  success: false,
67
79
  deviceId: 'unknown',
@@ -95,23 +107,20 @@ export class AppleTVPairingService {
95
107
  }
96
108
  }
97
109
 
98
- private async discoverDevices(): Promise<AppleTVDevice[]> {
110
+ async discoverDevices(
111
+ options: AppleTVPairingDiscoveryOptions = {},
112
+ ): Promise<AppleTVDevice[]> {
99
113
  try {
114
+ const timeoutMs = options.timeoutMs ?? this.config.discoveryTimeout;
100
115
  const backend = createDiscoveryBackend(process.platform, {
101
116
  serviceType: REMOTE_PAIRING_MANUAL_DISCOVERY_SERVICE_TYPE,
102
117
  domain: REMOTE_PAIRING_DISCOVERY_DOMAIN,
103
118
  });
104
- log.info(
105
- `Discovering Apple TV devices (waiting ${this.config.discoveryTimeout / 1000} seconds)...`,
106
- );
107
- const discoveredDevices = await backend.discoverDevices(
108
- this.config.discoveryTimeout,
109
- );
119
+ const discoveredDevices = await backend.discoverDevices(timeoutMs);
110
120
  const enrichedDevices =
111
121
  await enrichDiscoveredDevicesWithDevicectl(discoveredDevices);
112
122
  return toAppleTVDevices(enrichedDevices);
113
123
  } catch (error) {
114
- log.error('Device discovery failed:', error);
115
124
  throw new PairingError(
116
125
  'Device discovery failed',
117
126
  'DISCOVERY_ERROR',