appium-ios-remotexpc 2.1.2 → 2.2.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/index.d.ts +2 -1
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +2 -1
- package/build/src/index.js.map +1 -1
- package/build/src/lib/tunnel/constants.d.ts +9 -0
- package/build/src/lib/tunnel/constants.d.ts.map +1 -0
- package/build/src/lib/tunnel/constants.js +9 -0
- package/build/src/lib/tunnel/constants.js.map +1 -0
- package/build/src/lib/tunnel/errors.d.ts +7 -0
- package/build/src/lib/tunnel/errors.d.ts.map +1 -0
- package/build/src/lib/tunnel/errors.js +9 -0
- package/build/src/lib/tunnel/errors.js.map +1 -0
- package/build/src/lib/tunnel/tunnel-api-client.d.ts +3 -1
- package/build/src/lib/tunnel/tunnel-api-client.d.ts.map +1 -1
- package/build/src/lib/tunnel/tunnel-api-client.js +22 -7
- package/build/src/lib/tunnel/tunnel-api-client.js.map +1 -1
- package/build/src/lib/tunnel/tunnel-availability.d.ts +19 -0
- package/build/src/lib/tunnel/tunnel-availability.d.ts.map +1 -0
- package/build/src/lib/tunnel/tunnel-availability.js +113 -0
- package/build/src/lib/tunnel/tunnel-availability.js.map +1 -0
- package/build/src/lib/tunnel/tunnel-registry-routes.d.ts +0 -4
- package/build/src/lib/tunnel/tunnel-registry-routes.d.ts.map +1 -1
- package/build/src/lib/tunnel/tunnel-registry-routes.js +0 -4
- package/build/src/lib/tunnel/tunnel-registry-routes.js.map +1 -1
- package/build/src/lib/tunnel/tunnel-registry-server.js +2 -1
- package/build/src/lib/tunnel/tunnel-registry-server.js.map +1 -1
- package/build/src/services.d.ts +2 -22
- package/build/src/services.d.ts.map +1 -1
- package/build/src/services.js +2 -58
- package/build/src/services.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -2
- package/src/lib/tunnel/constants.ts +11 -0
- package/src/lib/tunnel/errors.ts +9 -0
- package/src/lib/tunnel/tunnel-api-client.ts +33 -7
- package/src/lib/tunnel/tunnel-availability.ts +159 -0
- package/src/lib/tunnel/tunnel-registry-routes.ts +0 -5
- package/src/lib/tunnel/tunnel-registry-server.ts +1 -1
- package/src/services.ts +6 -84
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [2.2.0](https://github.com/appium/appium-ios-remotexpc/compare/v2.1.2...v2.2.0) (2026-05-25)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* Fail fast if a tunnel registry is not running ([#224](https://github.com/appium/appium-ios-remotexpc/issues/224)) ([9c5907b](https://github.com/appium/appium-ios-remotexpc/commit/9c5907be76acfe7ef74dcab799ec0b89bc95f1ff))
|
|
6
|
+
|
|
1
7
|
## [2.1.2](https://github.com/appium/appium-ios-remotexpc/compare/v2.1.1...v2.1.2) (2026-05-23)
|
|
2
8
|
|
|
3
9
|
### Code Refactoring
|
package/build/src/index.d.ts
CHANGED
|
@@ -16,7 +16,8 @@ export type { SyslogEntry, SyslogLabel, SyslogLogLevel, } from './services/ios/s
|
|
|
16
16
|
export type { CrashReportsService, CrashReportsPullOptions, DiagnosticsService, MobileImageMounterService, NotificationProxyService, MobileConfigService, PowerAssertionService, PowerAssertionOptions, SpringboardService, WebInspectorService, MisagentService, SyslogService, HouseArrestService, DVTSecureSocketProxyService, LocationSimulationService, ConditionInducerService, ScreenshotService, GraphicsService, DeviceInfoService, NetworkMonitorService, ProcessInfo, ConditionProfile, ConditionGroup, SocketInfo, TunnelResult, TunnelRegistry, TunnelRegistryEntry, DVTInstruments, NetworkAddress, InterfaceDetectionEvent, ConnectionDetectionEvent, ConnectionUpdateEvent, NetworkEvent, ProcessControlService, ProcessLaunchOptions, OutputReceivedEvent, SendMessageOptions, TestmanagerdService, XCTestServices, } from './lib/types.js';
|
|
17
17
|
export { PowerAssertionType } from './lib/types.js';
|
|
18
18
|
export { NetworkMessageType } from './services/ios/dvt/instruments/network-monitor.js';
|
|
19
|
-
export { TunnelAvailabilityError, getTunnelForDevice,
|
|
19
|
+
export { TunnelAvailabilityError, getTunnelForDevice, } from './lib/tunnel/tunnel-availability.js';
|
|
20
|
+
export { withRemoteXpcConnection } from './services.js';
|
|
20
21
|
export type { TunnelEndpoint } from './lib/tunnel/tunnel-api-client.js';
|
|
21
22
|
export { XCTestConfigurationEncoder } from './services/ios/testmanagerd/xctestconfiguration.js';
|
|
22
23
|
export type { XCTestConfigurationParams } from './services/ios/testmanagerd/xctestconfiguration.js';
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAC3F,YAAY,EACV,WAAW,EACX,WAAW,EACX,cAAc,GACf,MAAM,sDAAsD,CAAC;AAE9D,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EACL,uBAAuB,EACvB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.js
CHANGED
|
@@ -9,7 +9,8 @@ import { startCoreDeviceProxy } from './services/ios/tunnel-service/index.js';
|
|
|
9
9
|
export { AfcConnectionError } from './services/ios/afc/errors.js';
|
|
10
10
|
export { PowerAssertionType } from './lib/types.js';
|
|
11
11
|
export { NetworkMessageType } from './services/ios/dvt/instruments/network-monitor.js';
|
|
12
|
-
export { TunnelAvailabilityError, getTunnelForDevice,
|
|
12
|
+
export { TunnelAvailabilityError, getTunnelForDevice, } from './lib/tunnel/tunnel-availability.js';
|
|
13
|
+
export { withRemoteXpcConnection } from './services.js';
|
|
13
14
|
export { XCTestConfigurationEncoder } from './services/ios/testmanagerd/xctestconfiguration.js';
|
|
14
15
|
export { ProcessControl } from './services/ios/dvt/instruments/process-control.js';
|
|
15
16
|
export { XCUITestService, XCTestRunner, createXCTestRunner, runXCTest, } from './services/ios/testmanagerd/xcuitest.js';
|
package/build/src/index.js.map
CHANGED
|
@@ -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,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,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,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAU9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAiDlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EACL,uBAAuB,EACvB,kBAAkB,
|
|
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,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,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,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAU9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAiDlE,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,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,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;AAItE,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,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,GAC3B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Host for the local tunnel registry HTTP API and TCP health probe. */
|
|
2
|
+
export declare const TUNNEL_REGISTRY_HOST = "127.0.0.1";
|
|
3
|
+
/** Base URL path for the tunnel registry HTTP API. */
|
|
4
|
+
export declare const TUNNEL_REGISTRY_API_BASE_PATH = "/remotexpc/tunnels";
|
|
5
|
+
/** Timeout for tunnel registry HTTP lookups (single GET per device). */
|
|
6
|
+
export declare const TUNNEL_REGISTRY_HTTP_TIMEOUT_MS = 500;
|
|
7
|
+
/** Timeout for TCP probe that the registry HTTP server is listening. */
|
|
8
|
+
export declare const TUNNEL_REGISTRY_PORT_PROBE_TIMEOUT_MS = 300;
|
|
9
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/constants.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAEhD,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,uBAAuB,CAAC;AAElE,wEAAwE;AACxE,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,wEAAwE;AACxE,eAAO,MAAM,qCAAqC,MAAM,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Host for the local tunnel registry HTTP API and TCP health probe. */
|
|
2
|
+
export const TUNNEL_REGISTRY_HOST = '127.0.0.1';
|
|
3
|
+
/** Base URL path for the tunnel registry HTTP API. */
|
|
4
|
+
export const TUNNEL_REGISTRY_API_BASE_PATH = '/remotexpc/tunnels';
|
|
5
|
+
/** Timeout for tunnel registry HTTP lookups (single GET per device). */
|
|
6
|
+
export const TUNNEL_REGISTRY_HTTP_TIMEOUT_MS = 500;
|
|
7
|
+
/** Timeout for TCP probe that the registry HTTP server is listening. */
|
|
8
|
+
export const TUNNEL_REGISTRY_PORT_PROBE_TIMEOUT_MS = 300;
|
|
9
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/constants.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEhD,sDAAsD;AACtD,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAElE,wEAAwE;AACxE,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,wEAAwE;AACxE,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,6BAA6B;gBAE9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAK3D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class TunnelAvailabilityError extends Error {
|
|
2
|
+
code = 'ERR_TUNNEL_AVAILABILITY';
|
|
3
|
+
constructor(message, options) {
|
|
4
|
+
super(message, options);
|
|
5
|
+
this.name = new.target.name;
|
|
6
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,GAAG,yBAAyB,CAAC;IAE1C,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -93,9 +93,11 @@ export declare class TunnelApiClient {
|
|
|
93
93
|
*/
|
|
94
94
|
deleteTunnel(udid: string): Promise<boolean>;
|
|
95
95
|
/**
|
|
96
|
-
* On strict: throws
|
|
96
|
+
* On strict: throws {@link TunnelAvailabilityError} with message and cause.
|
|
97
|
+
* Otherwise logs and returns.
|
|
97
98
|
*/
|
|
98
99
|
private handleFetchError;
|
|
100
|
+
private logFetchFailure;
|
|
99
101
|
private fetchWithTimeout;
|
|
100
102
|
}
|
|
101
103
|
//# sourceMappingURL=tunnel-api-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-api-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-api-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAevE,MAAM,WAAW,sBAAsB;IACrC,wGAAwG;IACxG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACS,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAMpE;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAiB9C;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAuBxE;;;;OAIG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA0BtC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAUrD;;;;OAIG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/C;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAUxD;;;;OAIG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAcvE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAU9C;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBhE;;;;OAIG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBlD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,eAAe;YAQT,gBAAgB;CA8B/B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getLogger } from '../logger.js';
|
|
2
|
+
import { TunnelAvailabilityError } from './errors.js';
|
|
2
3
|
const log = getLogger('TunnelApiClient');
|
|
3
4
|
const EMPTY_REGISTRY = {
|
|
4
5
|
tunnels: {},
|
|
@@ -42,7 +43,7 @@ export class TunnelApiClient {
|
|
|
42
43
|
try {
|
|
43
44
|
const response = await this.fetchWithTimeout(this.apiBaseUrl);
|
|
44
45
|
if (!response.ok) {
|
|
45
|
-
throw new
|
|
46
|
+
throw new TunnelAvailabilityError(`Failed to fetch tunnel registry from API: HTTP ${response.status}`);
|
|
46
47
|
}
|
|
47
48
|
return (await response.json());
|
|
48
49
|
}
|
|
@@ -63,7 +64,7 @@ export class TunnelApiClient {
|
|
|
63
64
|
return null;
|
|
64
65
|
}
|
|
65
66
|
if (!response.ok) {
|
|
66
|
-
throw new
|
|
67
|
+
throw new TunnelAvailabilityError(`Failed to fetch tunnel for UDID ${udid}: HTTP ${response.status}`);
|
|
67
68
|
}
|
|
68
69
|
return (await response.json());
|
|
69
70
|
}
|
|
@@ -84,7 +85,7 @@ export class TunnelApiClient {
|
|
|
84
85
|
return null;
|
|
85
86
|
}
|
|
86
87
|
if (!response.ok) {
|
|
87
|
-
throw new
|
|
88
|
+
throw new TunnelAvailabilityError(`Failed to fetch tunnel for device ID ${deviceId}: HTTP ${response.status}`);
|
|
88
89
|
}
|
|
89
90
|
return (await response.json());
|
|
90
91
|
}
|
|
@@ -198,14 +199,25 @@ export class TunnelApiClient {
|
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
/**
|
|
201
|
-
* On strict: throws
|
|
202
|
+
* On strict: throws {@link TunnelAvailabilityError} with message and cause.
|
|
203
|
+
* Otherwise logs and returns.
|
|
202
204
|
*/
|
|
203
205
|
handleFetchError(messagePrefix, error, logLevel = 'warn') {
|
|
206
|
+
if (error instanceof TunnelAvailabilityError) {
|
|
207
|
+
if (this.strict) {
|
|
208
|
+
throw error;
|
|
209
|
+
}
|
|
210
|
+
this.logFetchFailure(error.message, logLevel);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
204
213
|
const detail = error instanceof Error ? error.message : String(error);
|
|
205
214
|
const message = `${messagePrefix}: ${detail}`;
|
|
206
215
|
if (this.strict) {
|
|
207
|
-
throw new
|
|
216
|
+
throw new TunnelAvailabilityError(message, { cause: error });
|
|
208
217
|
}
|
|
218
|
+
this.logFetchFailure(message, logLevel);
|
|
219
|
+
}
|
|
220
|
+
logFetchFailure(message, logLevel) {
|
|
209
221
|
if (logLevel === 'error') {
|
|
210
222
|
log.error(message);
|
|
211
223
|
}
|
|
@@ -224,10 +236,13 @@ export class TunnelApiClient {
|
|
|
224
236
|
return response;
|
|
225
237
|
}
|
|
226
238
|
catch (error) {
|
|
239
|
+
if (error instanceof TunnelAvailabilityError) {
|
|
240
|
+
throw error;
|
|
241
|
+
}
|
|
227
242
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
228
|
-
throw new
|
|
243
|
+
throw new TunnelAvailabilityError(`Tunnel registry request timed out after ${this.timeoutMs}ms`, { cause: error });
|
|
229
244
|
}
|
|
230
|
-
throw error;
|
|
245
|
+
throw new TunnelAvailabilityError(`Tunnel registry request failed for ${url}`, { cause: error });
|
|
231
246
|
}
|
|
232
247
|
finally {
|
|
233
248
|
clearTimeout(timeoutId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-api-client.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-api-client.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TunnelAvailabilityError } from './errors.js';
|
|
2
|
+
import { type TunnelEndpoint } from './tunnel-api-client.js';
|
|
3
|
+
export { TunnelAvailabilityError };
|
|
4
|
+
/**
|
|
5
|
+
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
6
|
+
* Strongbox port, TCP probe, then a single `GET /remotexpc/tunnels/{udid}`.
|
|
7
|
+
* @throws {TunnelAvailabilityError} When registry or tunnel for the UDID is unavailable.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getTunnelForDevice(udid: string): Promise<TunnelEndpoint>;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
12
|
+
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
13
|
+
* in the "connected devices" list for session validation.
|
|
14
|
+
*
|
|
15
|
+
* @returns UDIDs when the registry is reachable (possibly empty).
|
|
16
|
+
* @throws {TunnelAvailabilityError} When the registry port is missing or unreachable.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getAvailableDevices(): Promise<string[]>;
|
|
19
|
+
//# sourceMappingURL=tunnel-availability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel-availability.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-availability.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAInC;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG7D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { BaseItem, strongbox } from '@appium/strongbox';
|
|
2
|
+
import * as net from 'node:net';
|
|
3
|
+
import { TUNNEL_CONTAINER_NAME } from '../../constants.js';
|
|
4
|
+
import { TUNNEL_REGISTRY_API_BASE_PATH, TUNNEL_REGISTRY_HOST, TUNNEL_REGISTRY_HTTP_TIMEOUT_MS, TUNNEL_REGISTRY_PORT_PROBE_TIMEOUT_MS, } from './constants.js';
|
|
5
|
+
import { TunnelAvailabilityError } from './errors.js';
|
|
6
|
+
import { TunnelApiClient, } from './tunnel-api-client.js';
|
|
7
|
+
export { TunnelAvailabilityError };
|
|
8
|
+
const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
|
|
9
|
+
/**
|
|
10
|
+
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
11
|
+
* Strongbox port, TCP probe, then a single `GET /remotexpc/tunnels/{udid}`.
|
|
12
|
+
* @throws {TunnelAvailabilityError} When registry or tunnel for the UDID is unavailable.
|
|
13
|
+
*/
|
|
14
|
+
export async function getTunnelForDevice(udid) {
|
|
15
|
+
const client = await createValidatedStrictRegistryClient();
|
|
16
|
+
const entry = await client.getTunnelByUdid(udid);
|
|
17
|
+
if (!entry) {
|
|
18
|
+
throw new TunnelAvailabilityError(`No tunnel found for device ${udid}. Please run the tunnel creation script first`);
|
|
19
|
+
}
|
|
20
|
+
return mapEntryToEndpoint(entry);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
24
|
+
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
25
|
+
* in the "connected devices" list for session validation.
|
|
26
|
+
*
|
|
27
|
+
* @returns UDIDs when the registry is reachable (possibly empty).
|
|
28
|
+
* @throws {TunnelAvailabilityError} When the registry port is missing or unreachable.
|
|
29
|
+
*/
|
|
30
|
+
export async function getAvailableDevices() {
|
|
31
|
+
const client = await createValidatedStrictRegistryClient();
|
|
32
|
+
return await client.getAvailableDevices();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read the tunnel registry HTTP port from strongbox.
|
|
36
|
+
* @throws {TunnelAvailabilityError} When the port was never stored or is not a valid TCP port.
|
|
37
|
+
*/
|
|
38
|
+
async function readTunnelRegistryPort() {
|
|
39
|
+
const box = strongbox(TUNNEL_CONTAINER_NAME);
|
|
40
|
+
const item = new BaseItem(TUNNEL_REGISTRY_PORT, box);
|
|
41
|
+
const tunnelRegistryPort = await item.read();
|
|
42
|
+
if (tunnelRegistryPort === undefined ||
|
|
43
|
+
String(tunnelRegistryPort).trim() === '') {
|
|
44
|
+
throw new TunnelAvailabilityError('Tunnel registry port not found. Please run the tunnel creation script first');
|
|
45
|
+
}
|
|
46
|
+
const stored = String(tunnelRegistryPort).trim();
|
|
47
|
+
const port = Number.parseInt(stored, 10);
|
|
48
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
49
|
+
throw new TunnelAvailabilityError(`Tunnel registry port "${stored}" is invalid; expected an integer between 1 and 65535`);
|
|
50
|
+
}
|
|
51
|
+
return port;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Verify the registry HTTP server is accepting TCP connections on localhost.
|
|
55
|
+
* @throws {TunnelAvailabilityError} When the port is closed or the probe times out.
|
|
56
|
+
*/
|
|
57
|
+
async function assertRegistryPortAcceptingConnections(port) {
|
|
58
|
+
const registryAddress = `${TUNNEL_REGISTRY_HOST}:${port}`;
|
|
59
|
+
const unreachableMessage = `Tunnel registry at ${registryAddress} is not reachable. Please run the tunnel creation script first`;
|
|
60
|
+
await new Promise((resolve, reject) => {
|
|
61
|
+
const socket = net.connect({ host: TUNNEL_REGISTRY_HOST, port });
|
|
62
|
+
const timer = setTimeout(() => {
|
|
63
|
+
socket.destroy();
|
|
64
|
+
reject(new TunnelAvailabilityError(unreachableMessage));
|
|
65
|
+
}, TUNNEL_REGISTRY_PORT_PROBE_TIMEOUT_MS);
|
|
66
|
+
const finish = (err) => {
|
|
67
|
+
clearTimeout(timer);
|
|
68
|
+
socket.removeAllListeners();
|
|
69
|
+
if (!socket.destroyed) {
|
|
70
|
+
socket.destroy();
|
|
71
|
+
}
|
|
72
|
+
if (err) {
|
|
73
|
+
reject(err);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
resolve();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
socket.once('connect', () => finish());
|
|
80
|
+
socket.once('error', (err) => {
|
|
81
|
+
if (err.code === 'ECONNREFUSED' || err.code === 'ENOTFOUND') {
|
|
82
|
+
finish(new TunnelAvailabilityError(unreachableMessage, { cause: err }));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
finish(new TunnelAvailabilityError(`Tunnel registry port probe failed for ${registryAddress}: ${err.message}`, { cause: err }));
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/** Map a registry entry to a flat tunnel endpoint for RSD connect. */
|
|
90
|
+
function mapEntryToEndpoint(entry) {
|
|
91
|
+
return {
|
|
92
|
+
host: entry.address,
|
|
93
|
+
port: entry.rsdPort,
|
|
94
|
+
udid: entry.udid,
|
|
95
|
+
packetStreamPort: entry.packetStreamPort,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Build a strict tunnel registry API client (caller supplies port via base URL).
|
|
100
|
+
*/
|
|
101
|
+
function createTunnelRegistryClient(port, options = {}) {
|
|
102
|
+
return new TunnelApiClient(`http://${TUNNEL_REGISTRY_HOST}:${port}${TUNNEL_REGISTRY_API_BASE_PATH}`, options);
|
|
103
|
+
}
|
|
104
|
+
/** Strongbox port, TCP probe, then a strict registry client with the lookup timeout. */
|
|
105
|
+
async function createValidatedStrictRegistryClient() {
|
|
106
|
+
const port = await readTunnelRegistryPort();
|
|
107
|
+
await assertRegistryPortAcceptingConnections(port);
|
|
108
|
+
return createTunnelRegistryClient(port, {
|
|
109
|
+
strict: true,
|
|
110
|
+
timeoutMs: TUNNEL_REGISTRY_HTTP_TIMEOUT_MS,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=tunnel-availability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel-availability.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-availability.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
/**
|
|
3
|
-
* Base URL path for the tunnel registry HTTP API.
|
|
4
|
-
*/
|
|
5
|
-
export declare const TUNNEL_REGISTRY_API_BASE_PATH = "/remotexpc/tunnels";
|
|
6
2
|
export type RouteHandler = (req: IncomingMessage, res: ServerResponse, params: Record<string, string>) => Promise<void>;
|
|
7
3
|
/**
|
|
8
4
|
* Declarative route: method + path template + optional guard + handler.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-registry-routes.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE
|
|
1
|
+
{"version":3,"file":"tunnel-registry-routes.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;CAC9D;AAOD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,WAAW,EAAE,GAC7B,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAuBjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-registry-routes.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-registry-routes.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AA2BvC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAoB;IACrD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA8B;IAE9B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEvC,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAA8B;IACnD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,MAAkD;IAElD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as http from 'node:http';
|
|
2
2
|
import { getLogger } from '../logger.js';
|
|
3
|
-
import { TUNNEL_REGISTRY_API_BASE_PATH
|
|
3
|
+
import { TUNNEL_REGISTRY_API_BASE_PATH } from './constants.js';
|
|
4
|
+
import { createRouteDispatcher, getRequestPathname, } from './tunnel-registry-routes.js';
|
|
4
5
|
// Constants
|
|
5
6
|
export const DEFAULT_TUNNEL_REGISTRY_PORT = 42314;
|
|
6
7
|
/** Path segments that must not bind to `:udid` (reserved static routes). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-registry-server.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,
|
|
1
|
+
{"version":3,"file":"tunnel-registry-server.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-server.ts"],"names":[],"mappings":"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"}
|
package/build/src/services.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RemoteXpcConnection } from './lib/remote-xpc/remote-xpc-connection.js';
|
|
2
|
-
import {
|
|
2
|
+
import type { TunnelEndpoint } from './lib/tunnel/tunnel-api-client.js';
|
|
3
3
|
import type { DVTInstruments, SyslogService as SyslogServiceType, XCTestServices } from './lib/types.js';
|
|
4
4
|
import AfcService from './services/ios/afc/index.js';
|
|
5
5
|
import { type Service } from './services/ios/base-service.js';
|
|
@@ -15,10 +15,7 @@ import { PowerAssertionService } from './services/ios/power-assertion/index.js';
|
|
|
15
15
|
import { SpringBoardService } from './services/ios/springboard-service/index.js';
|
|
16
16
|
import { DvtTestmanagedProxyService } from './services/ios/testmanagerd/index.js';
|
|
17
17
|
import { WebInspectorService } from './services/ios/webinspector/index.js';
|
|
18
|
-
export
|
|
19
|
-
readonly code = "ERR_TUNNEL_AVAILABILITY";
|
|
20
|
-
constructor(message: string);
|
|
21
|
-
}
|
|
18
|
+
export { getAvailableDevices, getTunnelForDevice, } from './lib/tunnel/tunnel-availability.js';
|
|
22
19
|
/**
|
|
23
20
|
* Start the diagnostics service for the given device UDID.
|
|
24
21
|
*/
|
|
@@ -114,23 +111,6 @@ export declare function startTestmanagerdService(udid: string): Promise<DvtTestm
|
|
|
114
111
|
* and dvtService when done.
|
|
115
112
|
*/
|
|
116
113
|
export declare function startXCTestServices(udid: string, options?: StartXCTestServicesOptions): Promise<XCTestServices>;
|
|
117
|
-
/**
|
|
118
|
-
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
119
|
-
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
120
|
-
* in the "connected devices" list for session validation.
|
|
121
|
-
*
|
|
122
|
-
* @returns Promise resolving to an array of UDIDs. Returns [] only when the
|
|
123
|
-
* registry is reachable and reports no tunnels.
|
|
124
|
-
* @throws When tunnel registry port is missing or empty in strongbox.
|
|
125
|
-
* @throws When registry is unreachable or response is invalid.
|
|
126
|
-
*/
|
|
127
|
-
export declare function getAvailableDevices(): Promise<string[]>;
|
|
128
|
-
/**
|
|
129
|
-
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
130
|
-
* Does not open a discovery `RemoteXpcConnection`; use {@link withRemoteXpcConnection}
|
|
131
|
-
* when service ports must be looked up via RSD.
|
|
132
|
-
*/
|
|
133
|
-
export declare function getTunnelForDevice(udid: string): Promise<TunnelEndpoint>;
|
|
134
114
|
/**
|
|
135
115
|
* Run `fn` with a freshly opened discovery `RemoteXpcConnection` and close
|
|
136
116
|
* that connection unconditionally when `fn` settles. Use this whenever a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"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"}
|
package/build/src/services.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { BaseItem, strongbox } from '@appium/strongbox';
|
|
2
|
-
import { TUNNEL_CONTAINER_NAME } from './constants.js';
|
|
3
1
|
import { getLogger } from './lib/logger.js';
|
|
4
2
|
import { TunnelManager, rsdSessionLockKey } from './lib/tunnel/index.js';
|
|
5
|
-
import {
|
|
3
|
+
import { getTunnelForDevice } from './lib/tunnel/tunnel-availability.js';
|
|
6
4
|
import AfcService from './services/ios/afc/index.js';
|
|
7
5
|
import { CrashReportsService } from './services/ios/crash-reports/index.js';
|
|
8
6
|
import DiagnosticsService from './services/ios/diagnostic-service/index.js';
|
|
@@ -27,18 +25,10 @@ import { SpringBoardService } from './services/ios/springboard-service/index.js'
|
|
|
27
25
|
import SyslogService from './services/ios/syslog-service/index.js';
|
|
28
26
|
import { DvtTestmanagedProxyService } from './services/ios/testmanagerd/index.js';
|
|
29
27
|
import { WebInspectorService } from './services/ios/webinspector/index.js';
|
|
30
|
-
const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
|
|
31
28
|
const log = getLogger('Services');
|
|
32
29
|
/** Pause after closing discovery RSD so device `remoted` can accept the next session. */
|
|
33
30
|
const RSD_RELEASE_DELAY_MS = 300;
|
|
34
|
-
export
|
|
35
|
-
code = 'ERR_TUNNEL_AVAILABILITY';
|
|
36
|
-
constructor(message) {
|
|
37
|
-
super(message);
|
|
38
|
-
this.name = new.target.name;
|
|
39
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
31
|
+
export { getAvailableDevices, getTunnelForDevice, } from './lib/tunnel/tunnel-availability.js';
|
|
42
32
|
/**
|
|
43
33
|
* Start the diagnostics service for the given device UDID.
|
|
44
34
|
*/
|
|
@@ -311,37 +301,6 @@ export async function startXCTestServices(udid, options) {
|
|
|
311
301
|
installationProxy,
|
|
312
302
|
};
|
|
313
303
|
}
|
|
314
|
-
/**
|
|
315
|
-
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
316
|
-
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
317
|
-
* in the "connected devices" list for session validation.
|
|
318
|
-
*
|
|
319
|
-
* @returns Promise resolving to an array of UDIDs. Returns [] only when the
|
|
320
|
-
* registry is reachable and reports no tunnels.
|
|
321
|
-
* @throws When tunnel registry port is missing or empty in strongbox.
|
|
322
|
-
* @throws When registry is unreachable or response is invalid.
|
|
323
|
-
*/
|
|
324
|
-
export async function getAvailableDevices() {
|
|
325
|
-
const client = await getTunnelRegistryClient({ strict: true });
|
|
326
|
-
return await client.getAvailableDevices();
|
|
327
|
-
}
|
|
328
|
-
/**
|
|
329
|
-
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
330
|
-
* Does not open a discovery `RemoteXpcConnection`; use {@link withRemoteXpcConnection}
|
|
331
|
-
* when service ports must be looked up via RSD.
|
|
332
|
-
*/
|
|
333
|
-
export async function getTunnelForDevice(udid) {
|
|
334
|
-
const tunnelApiClient = await getTunnelRegistryClient();
|
|
335
|
-
const tunnelExists = await tunnelApiClient.hasTunnel(udid);
|
|
336
|
-
if (!tunnelExists) {
|
|
337
|
-
throw new TunnelAvailabilityError(`No tunnel found for device ${udid}. Please run the tunnel creation script first`);
|
|
338
|
-
}
|
|
339
|
-
const tunnelConnection = await tunnelApiClient.getTunnelConnection(udid);
|
|
340
|
-
if (!tunnelConnection) {
|
|
341
|
-
throw new TunnelAvailabilityError(`Failed to get tunnel connection details for device ${udid}`);
|
|
342
|
-
}
|
|
343
|
-
return tunnelConnection;
|
|
344
|
-
}
|
|
345
304
|
/**
|
|
346
305
|
* Run `fn` with a freshly opened discovery `RemoteXpcConnection` and close
|
|
347
306
|
* that connection unconditionally when `fn` settles. Use this whenever a
|
|
@@ -390,19 +349,4 @@ async function startSyslogWithServiceName(udid, serviceName) {
|
|
|
390
349
|
serviceDescriptor: remoteXPC.findService(serviceName),
|
|
391
350
|
}));
|
|
392
351
|
}
|
|
393
|
-
// #region Private Functions
|
|
394
|
-
/**
|
|
395
|
-
* Build a tunnel registry API client from the stored registry port.
|
|
396
|
-
*/
|
|
397
|
-
async function getTunnelRegistryClient(options = {}) {
|
|
398
|
-
const box = strongbox(TUNNEL_CONTAINER_NAME);
|
|
399
|
-
const item = new BaseItem(TUNNEL_REGISTRY_PORT, box);
|
|
400
|
-
const tunnelRegistryPort = await item.read();
|
|
401
|
-
if (tunnelRegistryPort === undefined ||
|
|
402
|
-
String(tunnelRegistryPort).trim() === '') {
|
|
403
|
-
throw new TunnelAvailabilityError('Tunnel registry port not found. Please run the tunnel creation script first');
|
|
404
|
-
}
|
|
405
|
-
return new TunnelApiClient(`http://127.0.0.1:${tunnelRegistryPort}/remotexpc/tunnels`, options);
|
|
406
|
-
}
|
|
407
|
-
// #endregion
|
|
408
352
|
//# sourceMappingURL=services.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -84,8 +84,8 @@ export { NetworkMessageType } from './services/ios/dvt/instruments/network-monit
|
|
|
84
84
|
export {
|
|
85
85
|
TunnelAvailabilityError,
|
|
86
86
|
getTunnelForDevice,
|
|
87
|
-
|
|
88
|
-
} from './services.js';
|
|
87
|
+
} from './lib/tunnel/tunnel-availability.js';
|
|
88
|
+
export { withRemoteXpcConnection } from './services.js';
|
|
89
89
|
export type { TunnelEndpoint } from './lib/tunnel/tunnel-api-client.js';
|
|
90
90
|
export { XCTestConfigurationEncoder } from './services/ios/testmanagerd/xctestconfiguration.js';
|
|
91
91
|
export type { XCTestConfigurationParams } from './services/ios/testmanagerd/xctestconfiguration.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Host for the local tunnel registry HTTP API and TCP health probe. */
|
|
2
|
+
export const TUNNEL_REGISTRY_HOST = '127.0.0.1';
|
|
3
|
+
|
|
4
|
+
/** Base URL path for the tunnel registry HTTP API. */
|
|
5
|
+
export const TUNNEL_REGISTRY_API_BASE_PATH = '/remotexpc/tunnels';
|
|
6
|
+
|
|
7
|
+
/** Timeout for tunnel registry HTTP lookups (single GET per device). */
|
|
8
|
+
export const TUNNEL_REGISTRY_HTTP_TIMEOUT_MS = 500;
|
|
9
|
+
|
|
10
|
+
/** Timeout for TCP probe that the registry HTTP server is listening. */
|
|
11
|
+
export const TUNNEL_REGISTRY_PORT_PROBE_TIMEOUT_MS = 300;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class TunnelAvailabilityError extends Error {
|
|
2
|
+
readonly code = 'ERR_TUNNEL_AVAILABILITY';
|
|
3
|
+
|
|
4
|
+
constructor(message: string, options?: { cause?: unknown }) {
|
|
5
|
+
super(message, options);
|
|
6
|
+
this.name = new.target.name;
|
|
7
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getLogger } from '../logger.js';
|
|
2
2
|
import type { TunnelRegistry, TunnelRegistryEntry } from '../types.js';
|
|
3
|
+
import { TunnelAvailabilityError } from './errors.js';
|
|
3
4
|
|
|
4
5
|
const log = getLogger('TunnelApiClient');
|
|
5
6
|
|
|
@@ -70,7 +71,9 @@ export class TunnelApiClient {
|
|
|
70
71
|
const response = await this.fetchWithTimeout(this.apiBaseUrl);
|
|
71
72
|
|
|
72
73
|
if (!response.ok) {
|
|
73
|
-
throw new
|
|
74
|
+
throw new TunnelAvailabilityError(
|
|
75
|
+
`Failed to fetch tunnel registry from API: HTTP ${response.status}`,
|
|
76
|
+
);
|
|
74
77
|
}
|
|
75
78
|
|
|
76
79
|
return (await response.json()) as TunnelRegistry;
|
|
@@ -96,7 +99,9 @@ export class TunnelApiClient {
|
|
|
96
99
|
}
|
|
97
100
|
|
|
98
101
|
if (!response.ok) {
|
|
99
|
-
throw new
|
|
102
|
+
throw new TunnelAvailabilityError(
|
|
103
|
+
`Failed to fetch tunnel for UDID ${udid}: HTTP ${response.status}`,
|
|
104
|
+
);
|
|
100
105
|
}
|
|
101
106
|
|
|
102
107
|
return (await response.json()) as TunnelRegistryEntry;
|
|
@@ -124,7 +129,9 @@ export class TunnelApiClient {
|
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
if (!response.ok) {
|
|
127
|
-
throw new
|
|
132
|
+
throw new TunnelAvailabilityError(
|
|
133
|
+
`Failed to fetch tunnel for device ID ${deviceId}: HTTP ${response.status}`,
|
|
134
|
+
);
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
return (await response.json()) as TunnelRegistryEntry;
|
|
@@ -261,18 +268,30 @@ export class TunnelApiClient {
|
|
|
261
268
|
}
|
|
262
269
|
|
|
263
270
|
/**
|
|
264
|
-
* On strict: throws
|
|
271
|
+
* On strict: throws {@link TunnelAvailabilityError} with message and cause.
|
|
272
|
+
* Otherwise logs and returns.
|
|
265
273
|
*/
|
|
266
274
|
private handleFetchError(
|
|
267
275
|
messagePrefix: string,
|
|
268
276
|
error: unknown,
|
|
269
277
|
logLevel: 'warn' | 'error' = 'warn',
|
|
270
278
|
): void {
|
|
279
|
+
if (error instanceof TunnelAvailabilityError) {
|
|
280
|
+
if (this.strict) {
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
this.logFetchFailure(error.message, logLevel);
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
271
286
|
const detail = error instanceof Error ? error.message : String(error);
|
|
272
287
|
const message = `${messagePrefix}: ${detail}`;
|
|
273
288
|
if (this.strict) {
|
|
274
|
-
throw new
|
|
289
|
+
throw new TunnelAvailabilityError(message, { cause: error });
|
|
275
290
|
}
|
|
291
|
+
this.logFetchFailure(message, logLevel);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
private logFetchFailure(message: string, logLevel: 'warn' | 'error'): void {
|
|
276
295
|
if (logLevel === 'error') {
|
|
277
296
|
log.error(message);
|
|
278
297
|
} else {
|
|
@@ -293,12 +312,19 @@ export class TunnelApiClient {
|
|
|
293
312
|
});
|
|
294
313
|
return response;
|
|
295
314
|
} catch (error) {
|
|
315
|
+
if (error instanceof TunnelAvailabilityError) {
|
|
316
|
+
throw error;
|
|
317
|
+
}
|
|
296
318
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
297
|
-
throw new
|
|
319
|
+
throw new TunnelAvailabilityError(
|
|
298
320
|
`Tunnel registry request timed out after ${this.timeoutMs}ms`,
|
|
321
|
+
{ cause: error },
|
|
299
322
|
);
|
|
300
323
|
}
|
|
301
|
-
throw
|
|
324
|
+
throw new TunnelAvailabilityError(
|
|
325
|
+
`Tunnel registry request failed for ${url}`,
|
|
326
|
+
{ cause: error },
|
|
327
|
+
);
|
|
302
328
|
} finally {
|
|
303
329
|
clearTimeout(timeoutId);
|
|
304
330
|
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { BaseItem, strongbox } from '@appium/strongbox';
|
|
2
|
+
import * as net from 'node:net';
|
|
3
|
+
|
|
4
|
+
import { TUNNEL_CONTAINER_NAME } from '../../constants.js';
|
|
5
|
+
import type { TunnelRegistryEntry } from '../types.js';
|
|
6
|
+
import {
|
|
7
|
+
TUNNEL_REGISTRY_API_BASE_PATH,
|
|
8
|
+
TUNNEL_REGISTRY_HOST,
|
|
9
|
+
TUNNEL_REGISTRY_HTTP_TIMEOUT_MS,
|
|
10
|
+
TUNNEL_REGISTRY_PORT_PROBE_TIMEOUT_MS,
|
|
11
|
+
} from './constants.js';
|
|
12
|
+
import { TunnelAvailabilityError } from './errors.js';
|
|
13
|
+
import {
|
|
14
|
+
TunnelApiClient,
|
|
15
|
+
type TunnelApiClientOptions,
|
|
16
|
+
type TunnelEndpoint,
|
|
17
|
+
} from './tunnel-api-client.js';
|
|
18
|
+
|
|
19
|
+
export { TunnelAvailabilityError };
|
|
20
|
+
|
|
21
|
+
const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
25
|
+
* Strongbox port, TCP probe, then a single `GET /remotexpc/tunnels/{udid}`.
|
|
26
|
+
* @throws {TunnelAvailabilityError} When registry or tunnel for the UDID is unavailable.
|
|
27
|
+
*/
|
|
28
|
+
export async function getTunnelForDevice(
|
|
29
|
+
udid: string,
|
|
30
|
+
): Promise<TunnelEndpoint> {
|
|
31
|
+
const client = await createValidatedStrictRegistryClient();
|
|
32
|
+
const entry = await client.getTunnelByUdid(udid);
|
|
33
|
+
|
|
34
|
+
if (!entry) {
|
|
35
|
+
throw new TunnelAvailabilityError(
|
|
36
|
+
`No tunnel found for device ${udid}. Please run the tunnel creation script first`,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return mapEntryToEndpoint(entry);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
45
|
+
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
46
|
+
* in the "connected devices" list for session validation.
|
|
47
|
+
*
|
|
48
|
+
* @returns UDIDs when the registry is reachable (possibly empty).
|
|
49
|
+
* @throws {TunnelAvailabilityError} When the registry port is missing or unreachable.
|
|
50
|
+
*/
|
|
51
|
+
export async function getAvailableDevices(): Promise<string[]> {
|
|
52
|
+
const client = await createValidatedStrictRegistryClient();
|
|
53
|
+
return await client.getAvailableDevices();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Read the tunnel registry HTTP port from strongbox.
|
|
58
|
+
* @throws {TunnelAvailabilityError} When the port was never stored or is not a valid TCP port.
|
|
59
|
+
*/
|
|
60
|
+
async function readTunnelRegistryPort(): Promise<number> {
|
|
61
|
+
const box = strongbox(TUNNEL_CONTAINER_NAME);
|
|
62
|
+
const item = new BaseItem(TUNNEL_REGISTRY_PORT, box);
|
|
63
|
+
const tunnelRegistryPort = await item.read();
|
|
64
|
+
if (
|
|
65
|
+
tunnelRegistryPort === undefined ||
|
|
66
|
+
String(tunnelRegistryPort).trim() === ''
|
|
67
|
+
) {
|
|
68
|
+
throw new TunnelAvailabilityError(
|
|
69
|
+
'Tunnel registry port not found. Please run the tunnel creation script first',
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
const stored = String(tunnelRegistryPort).trim();
|
|
73
|
+
const port = Number.parseInt(stored, 10);
|
|
74
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
75
|
+
throw new TunnelAvailabilityError(
|
|
76
|
+
`Tunnel registry port "${stored}" is invalid; expected an integer between 1 and 65535`,
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
return port;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Verify the registry HTTP server is accepting TCP connections on localhost.
|
|
84
|
+
* @throws {TunnelAvailabilityError} When the port is closed or the probe times out.
|
|
85
|
+
*/
|
|
86
|
+
async function assertRegistryPortAcceptingConnections(
|
|
87
|
+
port: number,
|
|
88
|
+
): Promise<void> {
|
|
89
|
+
const registryAddress = `${TUNNEL_REGISTRY_HOST}:${port}`;
|
|
90
|
+
const unreachableMessage = `Tunnel registry at ${registryAddress} is not reachable. Please run the tunnel creation script first`;
|
|
91
|
+
|
|
92
|
+
await new Promise<void>((resolve, reject) => {
|
|
93
|
+
const socket = net.connect({ host: TUNNEL_REGISTRY_HOST, port });
|
|
94
|
+
const timer = setTimeout(() => {
|
|
95
|
+
socket.destroy();
|
|
96
|
+
reject(new TunnelAvailabilityError(unreachableMessage));
|
|
97
|
+
}, TUNNEL_REGISTRY_PORT_PROBE_TIMEOUT_MS);
|
|
98
|
+
|
|
99
|
+
const finish = (err?: Error) => {
|
|
100
|
+
clearTimeout(timer);
|
|
101
|
+
socket.removeAllListeners();
|
|
102
|
+
if (!socket.destroyed) {
|
|
103
|
+
socket.destroy();
|
|
104
|
+
}
|
|
105
|
+
if (err) {
|
|
106
|
+
reject(err);
|
|
107
|
+
} else {
|
|
108
|
+
resolve();
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
socket.once('connect', () => finish());
|
|
113
|
+
socket.once('error', (err: NodeJS.ErrnoException) => {
|
|
114
|
+
if (err.code === 'ECONNREFUSED' || err.code === 'ENOTFOUND') {
|
|
115
|
+
finish(new TunnelAvailabilityError(unreachableMessage, { cause: err }));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
finish(
|
|
119
|
+
new TunnelAvailabilityError(
|
|
120
|
+
`Tunnel registry port probe failed for ${registryAddress}: ${err.message}`,
|
|
121
|
+
{ cause: err },
|
|
122
|
+
),
|
|
123
|
+
);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** Map a registry entry to a flat tunnel endpoint for RSD connect. */
|
|
129
|
+
function mapEntryToEndpoint(entry: TunnelRegistryEntry): TunnelEndpoint {
|
|
130
|
+
return {
|
|
131
|
+
host: entry.address,
|
|
132
|
+
port: entry.rsdPort,
|
|
133
|
+
udid: entry.udid,
|
|
134
|
+
packetStreamPort: entry.packetStreamPort,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Build a strict tunnel registry API client (caller supplies port via base URL).
|
|
140
|
+
*/
|
|
141
|
+
function createTunnelRegistryClient(
|
|
142
|
+
port: number,
|
|
143
|
+
options: TunnelApiClientOptions = {},
|
|
144
|
+
): TunnelApiClient {
|
|
145
|
+
return new TunnelApiClient(
|
|
146
|
+
`http://${TUNNEL_REGISTRY_HOST}:${port}${TUNNEL_REGISTRY_API_BASE_PATH}`,
|
|
147
|
+
options,
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** Strongbox port, TCP probe, then a strict registry client with the lookup timeout. */
|
|
152
|
+
async function createValidatedStrictRegistryClient(): Promise<TunnelApiClient> {
|
|
153
|
+
const port = await readTunnelRegistryPort();
|
|
154
|
+
await assertRegistryPortAcceptingConnections(port);
|
|
155
|
+
return createTunnelRegistryClient(port, {
|
|
156
|
+
strict: true,
|
|
157
|
+
timeoutMs: TUNNEL_REGISTRY_HTTP_TIMEOUT_MS,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { match } from 'path-to-regexp';
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* Base URL path for the tunnel registry HTTP API.
|
|
6
|
-
*/
|
|
7
|
-
export const TUNNEL_REGISTRY_API_BASE_PATH = '/remotexpc/tunnels';
|
|
8
|
-
|
|
9
4
|
export type RouteHandler = (
|
|
10
5
|
req: IncomingMessage,
|
|
11
6
|
res: ServerResponse,
|
|
@@ -2,9 +2,9 @@ import * as http from 'node:http';
|
|
|
2
2
|
|
|
3
3
|
import { getLogger } from '../logger.js';
|
|
4
4
|
import type { TunnelRegistry, TunnelRegistryEntry } from '../types.js';
|
|
5
|
+
import { TUNNEL_REGISTRY_API_BASE_PATH } from './constants.js';
|
|
5
6
|
import {
|
|
6
7
|
type RouteRecord,
|
|
7
|
-
TUNNEL_REGISTRY_API_BASE_PATH,
|
|
8
8
|
createRouteDispatcher,
|
|
9
9
|
getRequestPathname,
|
|
10
10
|
} from './tunnel-registry-routes.js';
|
package/src/services.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { BaseItem, strongbox } from '@appium/strongbox';
|
|
2
|
-
|
|
3
|
-
import { TUNNEL_CONTAINER_NAME } from './constants.js';
|
|
4
1
|
import { getLogger } from './lib/logger.js';
|
|
5
2
|
import type { RemoteXpcConnection } from './lib/remote-xpc/remote-xpc-connection.js';
|
|
6
3
|
import { TunnelManager, rsdSessionLockKey } from './lib/tunnel/index.js';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
type TunnelApiClientOptions,
|
|
10
|
-
type TunnelEndpoint,
|
|
11
|
-
} from './lib/tunnel/tunnel-api-client.js';
|
|
4
|
+
import type { TunnelEndpoint } from './lib/tunnel/tunnel-api-client.js';
|
|
5
|
+
import { getTunnelForDevice } from './lib/tunnel/tunnel-availability.js';
|
|
12
6
|
import type {
|
|
13
7
|
DVTInstruments,
|
|
14
8
|
SyslogService as SyslogServiceType,
|
|
@@ -40,21 +34,15 @@ import SyslogService from './services/ios/syslog-service/index.js';
|
|
|
40
34
|
import { DvtTestmanagedProxyService } from './services/ios/testmanagerd/index.js';
|
|
41
35
|
import { WebInspectorService } from './services/ios/webinspector/index.js';
|
|
42
36
|
|
|
43
|
-
const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
|
|
44
37
|
const log = getLogger('Services');
|
|
45
38
|
|
|
46
39
|
/** Pause after closing discovery RSD so device `remoted` can accept the next session. */
|
|
47
40
|
const RSD_RELEASE_DELAY_MS = 300;
|
|
48
41
|
|
|
49
|
-
export
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
super(message);
|
|
54
|
-
this.name = new.target.name;
|
|
55
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
42
|
+
export {
|
|
43
|
+
getAvailableDevices,
|
|
44
|
+
getTunnelForDevice,
|
|
45
|
+
} from './lib/tunnel/tunnel-availability.js';
|
|
58
46
|
|
|
59
47
|
/**
|
|
60
48
|
* Start the diagnostics service for the given device UDID.
|
|
@@ -443,45 +431,6 @@ export async function startXCTestServices(
|
|
|
443
431
|
};
|
|
444
432
|
}
|
|
445
433
|
|
|
446
|
-
/**
|
|
447
|
-
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
448
|
-
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
449
|
-
* in the "connected devices" list for session validation.
|
|
450
|
-
*
|
|
451
|
-
* @returns Promise resolving to an array of UDIDs. Returns [] only when the
|
|
452
|
-
* registry is reachable and reports no tunnels.
|
|
453
|
-
* @throws When tunnel registry port is missing or empty in strongbox.
|
|
454
|
-
* @throws When registry is unreachable or response is invalid.
|
|
455
|
-
*/
|
|
456
|
-
export async function getAvailableDevices(): Promise<string[]> {
|
|
457
|
-
const client = await getTunnelRegistryClient({ strict: true });
|
|
458
|
-
return await client.getAvailableDevices();
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/**
|
|
462
|
-
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
463
|
-
* Does not open a discovery `RemoteXpcConnection`; use {@link withRemoteXpcConnection}
|
|
464
|
-
* when service ports must be looked up via RSD.
|
|
465
|
-
*/
|
|
466
|
-
export async function getTunnelForDevice(
|
|
467
|
-
udid: string,
|
|
468
|
-
): Promise<TunnelEndpoint> {
|
|
469
|
-
const tunnelApiClient = await getTunnelRegistryClient();
|
|
470
|
-
const tunnelExists = await tunnelApiClient.hasTunnel(udid);
|
|
471
|
-
if (!tunnelExists) {
|
|
472
|
-
throw new TunnelAvailabilityError(
|
|
473
|
-
`No tunnel found for device ${udid}. Please run the tunnel creation script first`,
|
|
474
|
-
);
|
|
475
|
-
}
|
|
476
|
-
const tunnelConnection = await tunnelApiClient.getTunnelConnection(udid);
|
|
477
|
-
if (!tunnelConnection) {
|
|
478
|
-
throw new TunnelAvailabilityError(
|
|
479
|
-
`Failed to get tunnel connection details for device ${udid}`,
|
|
480
|
-
);
|
|
481
|
-
}
|
|
482
|
-
return tunnelConnection;
|
|
483
|
-
}
|
|
484
|
-
|
|
485
434
|
/**
|
|
486
435
|
* Run `fn` with a freshly opened discovery `RemoteXpcConnection` and close
|
|
487
436
|
* that connection unconditionally when `fn` settles. Use this whenever a
|
|
@@ -548,30 +497,3 @@ async function startSyslogWithServiceName(
|
|
|
548
497
|
serviceDescriptor: remoteXPC.findService(serviceName),
|
|
549
498
|
}));
|
|
550
499
|
}
|
|
551
|
-
|
|
552
|
-
// #region Private Functions
|
|
553
|
-
|
|
554
|
-
/**
|
|
555
|
-
* Build a tunnel registry API client from the stored registry port.
|
|
556
|
-
*/
|
|
557
|
-
async function getTunnelRegistryClient(
|
|
558
|
-
options: TunnelApiClientOptions = {},
|
|
559
|
-
): Promise<TunnelApiClient> {
|
|
560
|
-
const box = strongbox(TUNNEL_CONTAINER_NAME);
|
|
561
|
-
const item = new BaseItem(TUNNEL_REGISTRY_PORT, box);
|
|
562
|
-
const tunnelRegistryPort = await item.read();
|
|
563
|
-
if (
|
|
564
|
-
tunnelRegistryPort === undefined ||
|
|
565
|
-
String(tunnelRegistryPort).trim() === ''
|
|
566
|
-
) {
|
|
567
|
-
throw new TunnelAvailabilityError(
|
|
568
|
-
'Tunnel registry port not found. Please run the tunnel creation script first',
|
|
569
|
-
);
|
|
570
|
-
}
|
|
571
|
-
return new TunnelApiClient(
|
|
572
|
-
`http://127.0.0.1:${tunnelRegistryPort}/remotexpc/tunnels`,
|
|
573
|
-
options,
|
|
574
|
-
);
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
// #endregion
|