appium-ios-remotexpc 5.1.6 → 5.2.1
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 +16 -0
- package/build/src/index.d.ts +8 -1
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +1 -0
- package/build/src/index.js.map +1 -1
- package/build/src/lib/remote-xpc/handshake.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/handshake.js +11 -7
- package/build/src/lib/remote-xpc/handshake.js.map +1 -1
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.d.ts +29 -0
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.d.ts.map +1 -0
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js +198 -0
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js.map +1 -0
- package/build/src/lib/remote-xpc/{remote-xpc-connection.d.ts → rsd-service-catalog-client.d.ts} +11 -23
- package/build/src/lib/remote-xpc/rsd-service-catalog-client.d.ts.map +1 -0
- package/build/src/lib/remote-xpc/{remote-xpc-connection.js → rsd-service-catalog-client.js} +36 -141
- package/build/src/lib/remote-xpc/rsd-service-catalog-client.js.map +1 -0
- package/build/src/lib/remote-xpc/xpc-protocol.js +7 -2
- package/build/src/lib/remote-xpc/xpc-protocol.js.map +1 -1
- package/build/src/lib/tunnel/tunnel-rsd-discovery.js +2 -2
- package/build/src/lib/tunnel/tunnel-rsd-discovery.js.map +1 -1
- package/build/src/services/index.d.ts +2 -1
- package/build/src/services/index.d.ts.map +1 -1
- package/build/src/services/index.js +2 -1
- package/build/src/services/index.js.map +1 -1
- package/build/src/services/ios/diagnostic-service/index.d.ts +1 -1
- package/build/src/services/ios/diagnostic-service/index.js +1 -1
- package/build/src/services/ios/dvt/instruments/screenshot.d.ts.map +1 -1
- package/build/src/services/ios/dvt/instruments/screenshot.js +0 -3
- package/build/src/services/ios/dvt/instruments/screenshot.js.map +1 -1
- package/build/src/services/ios/hid-indigo/index.d.ts +64 -0
- package/build/src/services/ios/hid-indigo/index.d.ts.map +1 -0
- package/build/src/services/ios/hid-indigo/index.js +111 -0
- package/build/src/services/ios/hid-indigo/index.js.map +1 -0
- package/build/src/services.d.ts +5 -0
- package/build/src/services.d.ts.map +1 -1
- package/build/src/services.js +8 -0
- package/build/src/services.js.map +1 -1
- package/package.json +2 -1
- package/scripts/lib/constants.mjs +4 -0
- package/scripts/lib/options.mjs +56 -0
- package/scripts/lib/progress.mjs +53 -0
- package/scripts/lib/root.mjs +36 -0
- package/scripts/lib/timers.mjs +7 -0
- package/scripts/lib/tunnel-registry.mjs +81 -0
- package/scripts/pair-appletv.mjs +50 -70
- package/scripts/start-appletv-tunnel.mjs +114 -106
- package/scripts/tunnel-creation.mjs +43 -99
- package/src/index.ts +18 -1
- package/src/lib/remote-xpc/handshake.ts +18 -12
- package/src/lib/remote-xpc/remote-xpc-framed-transport.ts +248 -0
- package/src/lib/remote-xpc/{remote-xpc-connection.ts → rsd-service-catalog-client.ts} +45 -177
- package/src/lib/remote-xpc/xpc-protocol.ts +7 -2
- package/src/lib/tunnel/tunnel-rsd-discovery.ts +2 -2
- package/src/services/index.ts +2 -0
- package/src/services/ios/diagnostic-service/index.ts +1 -1
- package/src/services/ios/dvt/instruments/screenshot.ts +0 -4
- package/src/services/ios/hid-indigo/index.ts +184 -0
- package/src/services.ts +11 -0
- package/build/src/lib/remote-xpc/remote-xpc-connection.d.ts.map +0 -1
- package/build/src/lib/remote-xpc/remote-xpc-connection.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## [5.2.1](https://github.com/appium/appium-ios-remotexpc/compare/v5.2.0...v5.2.1) (2026-06-24)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* refactor tunnels creation and pairing scripts ([#247](https://github.com/appium/appium-ios-remotexpc/issues/247)) ([c614312](https://github.com/appium/appium-ios-remotexpc/commit/c614312dde31ce4019707ff3f079b57362a761ee))
|
|
6
|
+
|
|
7
|
+
## [5.2.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.1.6...v5.2.0) (2026-06-22)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Add `com.apple.coredevice.hid.indigo` service ([#249](https://github.com/appium/appium-ios-remotexpc/issues/249)) ([dfc21f7](https://github.com/appium/appium-ios-remotexpc/commit/dfc21f7624ca4a20988c3abd6c20b2aa17d49158))
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* Remove extra logging from screenshotting service ([#250](https://github.com/appium/appium-ios-remotexpc/issues/250)) ([d7818eb](https://github.com/appium/appium-ios-remotexpc/commit/d7818eb49c9260f8cc3c51b980ed2520e5f81122))
|
|
16
|
+
|
|
1
17
|
## [5.1.6](https://github.com/appium/appium-ios-remotexpc/compare/v5.1.5...v5.1.6) (2026-06-20)
|
|
2
18
|
|
|
3
19
|
### Bug Fixes
|
package/build/src/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { STRONGBOX_CONTAINER_NAME, TUNNEL_CONTAINER_NAME } from './constants.js';
|
|
2
2
|
import { createLockdownServiceByUDID, createLockdownServiceForTunnel } from './lib/lockdown/index.js';
|
|
3
3
|
import { DevicePortForwarder } from './lib/port-forwarding/index.js';
|
|
4
|
+
import type { RsdServiceCatalogClient as RsdServiceCatalogClientType } from './lib/remote-xpc/rsd-service-catalog-client.js';
|
|
4
5
|
import { TunnelManager, TunnelReadinessCoordinator, discoverServices, servicesToCatalog, watchTunnelRegistryOnDead, watchTunnelRegistrySockets } from './lib/tunnel/index.js';
|
|
5
6
|
import { TunnelRegistryServer, startTunnelRegistryServer } from './lib/tunnel/tunnel-registry-server.js';
|
|
6
7
|
import { Usbmux, createUsbmux } from './lib/usbmux/index.js';
|
|
@@ -8,11 +9,17 @@ import * as Services from './services.js';
|
|
|
8
9
|
import { startCoreDeviceProxyTcp } from './services/ios/tunnel-service/index.js';
|
|
9
10
|
export type { Device as UsbmuxDevice } from './lib/usbmux/index.js';
|
|
10
11
|
export type { DevicePortForwarderEvents, DevicePortForwarderOptions, UpstreamSocketConnector, } from './lib/port-forwarding/index.js';
|
|
11
|
-
export type {
|
|
12
|
+
export type { RsdServiceCatalogClient } from './lib/remote-xpc/rsd-service-catalog-client.js';
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use RsdServiceCatalogClient instead.
|
|
15
|
+
*/
|
|
16
|
+
export type RemoteXpcConnection = RsdServiceCatalogClientType;
|
|
12
17
|
export type { AfcService } from './services/ios/afc/index.js';
|
|
13
18
|
export { AfcConnectionError } from './services/ios/afc/errors.js';
|
|
14
19
|
export type { ZipConduitService, ZipConduitProgressCallback, ZipConduitInstallOptions, ZipConduitStreamStats, } from './services/ios/zipconduit/index.js';
|
|
15
20
|
export type { InstallationProxyService } from './services/ios/installation-proxy/index.js';
|
|
21
|
+
export { HID_BUTTON_STATE_CANCELED, HID_BUTTON_STATE_DOWN, HID_BUTTON_STATE_UP, HidIndigoService, } from './services/ios/hid-indigo/index.js';
|
|
22
|
+
export type { HidButtonEventOptions, HidButtonName, HidButtonPressOptions, HidButtonState, } from './services/ios/hid-indigo/index.js';
|
|
16
23
|
export type { SyslogEntry, SyslogLabel, SyslogLogLevel, } from './services/ios/syslog-service/syslog-entry-parser.js';
|
|
17
24
|
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';
|
|
18
25
|
export { PowerAssertionType } from './lib/types.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,aAAa,EACb,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,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,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { Usbmux, createUsbmux } from './lib/usbmux/index.js';
|
|
|
7
7
|
import * as Services from './services.js';
|
|
8
8
|
import { startCoreDeviceProxyTcp } from './services/ios/tunnel-service/index.js';
|
|
9
9
|
export { AfcConnectionError } from './services/ios/afc/errors.js';
|
|
10
|
+
export { HID_BUTTON_STATE_CANCELED, HID_BUTTON_STATE_DOWN, HID_BUTTON_STATE_UP, HidIndigoService, } from './services/ios/hid-indigo/index.js';
|
|
10
11
|
export { PowerAssertionType } from './lib/types.js';
|
|
11
12
|
export { NetworkMessageType } from './services/ios/dvt/instruments/network-monitor.js';
|
|
12
13
|
export { TunnelAvailabilityError, getTunnelForDevice, } from './lib/tunnel/tunnel-availability.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;
|
|
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;AAErE,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;AAcjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAQlE,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAsD5C,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAUjD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,cAAM,SAAS;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;gBAElD,MAAM,EAAE,MAAM;IAQpB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvC,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAUjD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,cAAM,SAAS;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;gBAElD,MAAM,EAAE,MAAM;IAQpB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvC,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAoG/B;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -49,20 +49,27 @@ class Handshake {
|
|
|
49
49
|
});
|
|
50
50
|
// Step 2: Send SETTINGS frame on stream 0.
|
|
51
51
|
const settings = {
|
|
52
|
-
[SettingsFrame.MAX_CONCURRENT_STREAMS]:
|
|
53
|
-
[SettingsFrame.INITIAL_WINDOW_SIZE]:
|
|
52
|
+
[SettingsFrame.MAX_CONCURRENT_STREAMS]: Http2Constants.DEFAULT_SETTINGS_MAX_CONCURRENT_STREAMS,
|
|
53
|
+
[SettingsFrame.INITIAL_WINDOW_SIZE]: Http2Constants.DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE,
|
|
54
54
|
};
|
|
55
55
|
const settingsFrame = new SettingsFrame(0, settings, []);
|
|
56
56
|
await this.sendFrame(settingsFrame.serialize());
|
|
57
57
|
// Step 3: Send WINDOW_UPDATE frame on stream 0.
|
|
58
|
-
const windowUpdateFrame = new WindowUpdateFrame(0,
|
|
58
|
+
const windowUpdateFrame = new WindowUpdateFrame(0, Http2Constants.DEFAULT_WIN_SIZE_INCR);
|
|
59
59
|
await this.sendFrame(windowUpdateFrame.serialize());
|
|
60
60
|
// Step 4: Send a HEADERS frame on stream 1.
|
|
61
61
|
const headersFrameRoot = new HeadersFrame(Http2Constants.ROOT_CHANNEL, Buffer.from(''), ['END_HEADERS']);
|
|
62
62
|
await this.sendFrame(headersFrameRoot.serialize());
|
|
63
63
|
// Step 5: Send first DataFrame on stream 1 (empty payload).
|
|
64
64
|
await this.sendRequest({});
|
|
65
|
-
// Step 6: Send
|
|
65
|
+
// Step 6: Send a HEADERS frame on stream 3 before terminating stream 1.
|
|
66
|
+
// CoreDevice services validate this ordering and close the connection if
|
|
67
|
+
// the stream-1 terminator arrives before the reply channel exists.
|
|
68
|
+
const headersFrameReply = new HeadersFrame(Http2Constants.REPLY_CHANNEL, Buffer.from(''), ['END_HEADERS']);
|
|
69
|
+
await this.sendFrame(headersFrameReply.serialize());
|
|
70
|
+
// Step 7: Send second DataFrame on stream 1 with specific flags.
|
|
71
|
+
// The receiving daemon expects this frame order:
|
|
72
|
+
// Headers#1, Data#1(init), Headers#3, Data#1(term), Data#3(init).
|
|
66
73
|
const dataMessage = {
|
|
67
74
|
flags: 0x0201,
|
|
68
75
|
id: 0,
|
|
@@ -72,9 +79,6 @@ class Handshake {
|
|
|
72
79
|
const dataFrame = new DataFrame(Http2Constants.ROOT_CHANNEL, encodedDataMessage, []);
|
|
73
80
|
await this.sendFrame(dataFrame.serialize());
|
|
74
81
|
this._nextMessageId[Http2Constants.ROOT_CHANNEL]++;
|
|
75
|
-
// Step 7: Send a HEADERS frame on stream 3.
|
|
76
|
-
const headersFrameReply = new HeadersFrame(Http2Constants.REPLY_CHANNEL, Buffer.from(''), ['END_HEADERS']);
|
|
77
|
-
await this.sendFrame(headersFrameReply.serialize());
|
|
78
82
|
// Step 8: Open REPLY_CHANNEL with INIT_HANDSHAKE flags.
|
|
79
83
|
const replyMessage = {
|
|
80
84
|
flags: XpcConstants.XPC_FLAGS_ALWAYS_SET |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAmB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKnE,MAAM,SAAS;IACL,OAAO,CAAS;IACP,cAAc,CAA+B;IAE9D,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG;YACpB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE;gBAChC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAmB;QACnC,MAAM,KAAK,GAAW,YAAY,CAAC,oBAAoB,CAAC;QACxD,MAAM,cAAc,GAAe;YACjC,KAAK;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC5D,IAAI,EAAE,IAAI;SACX,CAAC;QAEF,MAAM,cAAc,GAAW,aAAa,CAAC,cAAc,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAc,IAAI,SAAS,CACxC,cAAc,CAAC,YAAY,EAC3B,cAAc,EACd,EAAE,CACH,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC3B,OAAO,MAAM,CACX,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAC9D,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CACrD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,QAAQ,GAA2B;gBACvC,CAAC,aAAa,CAAC,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
export interface RemoteXpcFramedTransportConnectOptions {
|
|
3
|
+
timeoutMs: number;
|
|
4
|
+
handshakeDelayMs?: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Shared RemoteXPC transport: owns TCP socket lifecycle, HTTP/2/XPC handshake,
|
|
8
|
+
* DATA frame parsing, window updates, and XPC message reassembly.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RemoteXpcFramedTransport extends EventEmitter {
|
|
11
|
+
private readonly address;
|
|
12
|
+
private socket;
|
|
13
|
+
private frameParser;
|
|
14
|
+
private pendingXpcData;
|
|
15
|
+
private connected;
|
|
16
|
+
private closing;
|
|
17
|
+
constructor(address: [string, number]);
|
|
18
|
+
get isConnected(): boolean;
|
|
19
|
+
connect(options: RemoteXpcFramedTransportConnectOptions): Promise<void>;
|
|
20
|
+
sendDataFrame(payload: Buffer, streamId?: number): void;
|
|
21
|
+
close(): Promise<void>;
|
|
22
|
+
private waitForSocketConnect;
|
|
23
|
+
private registerSocketHandlers;
|
|
24
|
+
private handleData;
|
|
25
|
+
private ingestXpcData;
|
|
26
|
+
private shutdownSocket;
|
|
27
|
+
private resetParsers;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=remote-xpc-framed-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-xpc-framed-transport.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/remote-xpc-framed-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAKrC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,OAAO,CACX,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAiChB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,IAAI;IAO5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,cAAc;IA+CtB,OAAO,CAAC,YAAY;CAIrB"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import net from 'node:net';
|
|
3
|
+
import { getLogger } from '../logger.js';
|
|
4
|
+
import { DataFrame } from './handshake-frames.js';
|
|
5
|
+
import Handshake from './handshake.js';
|
|
6
|
+
import { Http2FrameParser, buildWindowUpdateFrames, } from './http2-frame-parser.js';
|
|
7
|
+
import { decodeMessage } from './xpc-protocol.js';
|
|
8
|
+
const log = getLogger('RemoteXpcFramedTransport');
|
|
9
|
+
const DEFAULT_SOCKET_CLOSE_TIMEOUT_MS = 1000;
|
|
10
|
+
const DEFAULT_SOCKET_END_TIMEOUT_MS = 500;
|
|
11
|
+
/**
|
|
12
|
+
* Shared RemoteXPC transport: owns TCP socket lifecycle, HTTP/2/XPC handshake,
|
|
13
|
+
* DATA frame parsing, window updates, and XPC message reassembly.
|
|
14
|
+
*/
|
|
15
|
+
export class RemoteXpcFramedTransport extends EventEmitter {
|
|
16
|
+
address;
|
|
17
|
+
socket = null;
|
|
18
|
+
frameParser = new Http2FrameParser();
|
|
19
|
+
pendingXpcData = Buffer.alloc(0);
|
|
20
|
+
connected = false;
|
|
21
|
+
closing = false;
|
|
22
|
+
constructor(address) {
|
|
23
|
+
super();
|
|
24
|
+
this.address = address;
|
|
25
|
+
}
|
|
26
|
+
get isConnected() {
|
|
27
|
+
return this.connected;
|
|
28
|
+
}
|
|
29
|
+
async connect(options) {
|
|
30
|
+
if (this.connected) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.resetParsers();
|
|
34
|
+
const socket = net.createConnection({
|
|
35
|
+
host: this.address[0],
|
|
36
|
+
port: this.address[1],
|
|
37
|
+
family: 6,
|
|
38
|
+
noDelay: true,
|
|
39
|
+
keepAlive: true,
|
|
40
|
+
});
|
|
41
|
+
this.socket = socket;
|
|
42
|
+
this.registerSocketHandlers(socket);
|
|
43
|
+
await this.waitForSocketConnect(socket, options.timeoutMs);
|
|
44
|
+
if (options.handshakeDelayMs) {
|
|
45
|
+
await new Promise((resolve) => setTimeout(resolve, options.handshakeDelayMs));
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
await new Handshake(socket).perform();
|
|
49
|
+
this.connected = true;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
await this.close();
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
sendDataFrame(payload, streamId = 1) {
|
|
57
|
+
if (!this.socket?.writable) {
|
|
58
|
+
throw new Error('RemoteXPC socket is not writable');
|
|
59
|
+
}
|
|
60
|
+
this.socket.write(new DataFrame(streamId, payload, []).serialize());
|
|
61
|
+
}
|
|
62
|
+
async close() {
|
|
63
|
+
this.closing = true;
|
|
64
|
+
this.connected = false;
|
|
65
|
+
const socket = this.socket;
|
|
66
|
+
if (!socket) {
|
|
67
|
+
this.closing = false;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.socket = null;
|
|
71
|
+
await this.shutdownSocket(socket);
|
|
72
|
+
this.closing = false;
|
|
73
|
+
}
|
|
74
|
+
waitForSocketConnect(socket, timeoutMs) {
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
const timeout = setTimeout(() => {
|
|
77
|
+
socket.destroy();
|
|
78
|
+
reject(new Error(`RemoteXPC connection timed out after ${timeoutMs}ms`));
|
|
79
|
+
}, timeoutMs);
|
|
80
|
+
const cleanupConnectListeners = () => {
|
|
81
|
+
clearTimeout(timeout);
|
|
82
|
+
socket.off('error', onError);
|
|
83
|
+
};
|
|
84
|
+
const onError = (error) => {
|
|
85
|
+
cleanupConnectListeners();
|
|
86
|
+
reject(error);
|
|
87
|
+
};
|
|
88
|
+
socket.once('error', onError);
|
|
89
|
+
socket.once('connect', () => {
|
|
90
|
+
cleanupConnectListeners();
|
|
91
|
+
resolve();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
registerSocketHandlers(socket) {
|
|
96
|
+
socket.on('data', (data) => {
|
|
97
|
+
const chunk = Buffer.isBuffer(data) ? data : Buffer.from(data, 'hex');
|
|
98
|
+
this.handleData(chunk);
|
|
99
|
+
});
|
|
100
|
+
socket.on('error', (error) => {
|
|
101
|
+
if (this.closing) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
log.error(`RemoteXPC transport error: ${error.message}`);
|
|
105
|
+
this.connected = false;
|
|
106
|
+
this.emit('error', error);
|
|
107
|
+
});
|
|
108
|
+
socket.on('close', () => {
|
|
109
|
+
this.connected = false;
|
|
110
|
+
this.emit('close');
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
handleData(chunk) {
|
|
114
|
+
if (!this.socket) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
let frames;
|
|
118
|
+
try {
|
|
119
|
+
frames = this.frameParser.append(chunk);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.emit('error', error instanceof Error ? error : new Error(String(error)));
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
for (const frame of frames) {
|
|
126
|
+
if (frame.type !== 'data') {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
const { streamId, data, bodyLen } = frame.frame;
|
|
130
|
+
for (const windowUpdate of buildWindowUpdateFrames(streamId, bodyLen)) {
|
|
131
|
+
this.socket.write(windowUpdate);
|
|
132
|
+
}
|
|
133
|
+
this.ingestXpcData(data);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
ingestXpcData(chunk) {
|
|
137
|
+
let pending = Buffer.concat([this.pendingXpcData, chunk]);
|
|
138
|
+
this.pendingXpcData = Buffer.alloc(0);
|
|
139
|
+
while (pending.length > 0) {
|
|
140
|
+
try {
|
|
141
|
+
const { message, bytesConsumed } = decodeMessage(pending);
|
|
142
|
+
pending = pending.subarray(bytesConsumed);
|
|
143
|
+
if (message.body) {
|
|
144
|
+
this.emit('message', message.body);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
this.pendingXpcData = pending;
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
shutdownSocket(socket) {
|
|
154
|
+
return new Promise((resolve) => {
|
|
155
|
+
let finished = false;
|
|
156
|
+
const finish = () => {
|
|
157
|
+
if (finished) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
finished = true;
|
|
161
|
+
resolve();
|
|
162
|
+
};
|
|
163
|
+
const closeTimeout = setTimeout(() => {
|
|
164
|
+
log.warn('RemoteXPC socket close timed out, destroying socket');
|
|
165
|
+
socket.destroy();
|
|
166
|
+
finish();
|
|
167
|
+
}, DEFAULT_SOCKET_CLOSE_TIMEOUT_MS);
|
|
168
|
+
socket.once('close', () => {
|
|
169
|
+
clearTimeout(closeTimeout);
|
|
170
|
+
finish();
|
|
171
|
+
});
|
|
172
|
+
socket.on('error', () => { });
|
|
173
|
+
try {
|
|
174
|
+
socket.removeAllListeners('data');
|
|
175
|
+
socket.end(Buffer.alloc(0), () => {
|
|
176
|
+
setTimeout(() => {
|
|
177
|
+
if (!finished && !socket.destroyed) {
|
|
178
|
+
clearTimeout(closeTimeout);
|
|
179
|
+
socket.destroy();
|
|
180
|
+
finish();
|
|
181
|
+
}
|
|
182
|
+
}, DEFAULT_SOCKET_END_TIMEOUT_MS);
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
log.error(`Unexpected error during RemoteXPC socket close: ${error instanceof Error ? error.message : String(error)}`);
|
|
187
|
+
clearTimeout(closeTimeout);
|
|
188
|
+
socket.destroy();
|
|
189
|
+
finish();
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
resetParsers() {
|
|
194
|
+
this.frameParser = new Http2FrameParser();
|
|
195
|
+
this.pendingXpcData = Buffer.alloc(0);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=remote-xpc-framed-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-xpc-framed-transport.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/remote-xpc-framed-transport.ts"],"names":[],"mappings":"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"}
|
package/build/src/lib/remote-xpc/{remote-xpc-connection.d.ts → rsd-service-catalog-client.d.ts}
RENAMED
|
@@ -8,14 +8,13 @@ export declare const CONNECTION_CONNECT_TIMEOUT_MS = 3000;
|
|
|
8
8
|
export declare const CONNECTION_DEFAULT_OPERATION_TIMEOUT_MS: number;
|
|
9
9
|
/** TunnelManager retry budget; never shorter than a single connect attempt. */
|
|
10
10
|
export declare const CONNECTION_OVERALL_TIMEOUT_MS: number;
|
|
11
|
-
export interface
|
|
11
|
+
export interface RsdServiceCatalogClientConnectOptions {
|
|
12
12
|
/** Max time for this connect attempt (TCP + handshake + services). */
|
|
13
13
|
timeoutMs?: number;
|
|
14
14
|
}
|
|
15
|
-
declare class
|
|
15
|
+
declare class RsdServiceCatalogClient {
|
|
16
16
|
private readonly _address;
|
|
17
|
-
private
|
|
18
|
-
private _handshake;
|
|
17
|
+
private _transport;
|
|
19
18
|
private _isConnected;
|
|
20
19
|
private _services;
|
|
21
20
|
/** Timer set during connect() to detect missing services after handshake */
|
|
@@ -29,12 +28,11 @@ declare class RemoteXpcConnection {
|
|
|
29
28
|
*/
|
|
30
29
|
get address(): [string, number];
|
|
31
30
|
/**
|
|
32
|
-
* Connect to
|
|
33
|
-
* @returns Promise that resolves with the list of available services
|
|
31
|
+
* Connect to Remote Service Discovery and return the advertised services.
|
|
34
32
|
*/
|
|
35
|
-
connect(options?:
|
|
33
|
+
connect(options?: RsdServiceCatalogClientConnectOptions): Promise<ServicesResponse>;
|
|
36
34
|
/**
|
|
37
|
-
* Close the connection
|
|
35
|
+
* Close the RSD catalog connection.
|
|
38
36
|
*/
|
|
39
37
|
close(): Promise<void>;
|
|
40
38
|
/**
|
|
@@ -54,22 +52,12 @@ declare class RemoteXpcConnection {
|
|
|
54
52
|
*/
|
|
55
53
|
findService(serviceName: string): Service;
|
|
56
54
|
private createConnectSession;
|
|
57
|
-
private
|
|
58
|
-
private
|
|
59
|
-
private
|
|
60
|
-
private onConnectSocketReady;
|
|
61
|
-
private performHandshake;
|
|
55
|
+
private registerTransportHandlers;
|
|
56
|
+
private processIncomingMessage;
|
|
57
|
+
private connectTransport;
|
|
62
58
|
private schedulePostHandshakeServiceTimeout;
|
|
63
59
|
private handlePostHandshakeServiceTimeout;
|
|
64
60
|
private clearServiceExtractionTimer;
|
|
65
|
-
private shutdownSocket;
|
|
66
|
-
/**
|
|
67
|
-
* Remove data listeners used by the service-discovery phase.
|
|
68
|
-
*
|
|
69
|
-
* We intentionally keep close/error listeners registered by close() so that
|
|
70
|
-
* transport teardown events (for example ECONNRESET) are handled gracefully.
|
|
71
|
-
*/
|
|
72
|
-
private cleanupSocket;
|
|
73
61
|
/**
|
|
74
62
|
* Clean up all resources
|
|
75
63
|
*/
|
|
@@ -79,5 +67,5 @@ declare class RemoteXpcConnection {
|
|
|
79
67
|
*/
|
|
80
68
|
private forceCleanup;
|
|
81
69
|
}
|
|
82
|
-
export {
|
|
83
|
-
//# sourceMappingURL=
|
|
70
|
+
export { RsdServiceCatalogClient, type Service, type ServicesResponse };
|
|
71
|
+
//# sourceMappingURL=rsd-service-catalog-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsd-service-catalog-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/rsd-service-catalog-client.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAK9B,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AAInD;;;GAGG;AACH,eAAO,MAAM,uCAAuC,QAGrB,CAAC;AAChC,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,QACD,CAAC;AAE1C,MAAM,WAAW,qCAAqC;IACpD,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,cAAM,uBAAuB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,SAAS,CAAwB;IACzC,4EAA4E;IAC5E,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAU;gBAEhB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IASrC;;;OAGG;IACH,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9B;IAED;;OAEG;IACG,OAAO,CACX,OAAO,CAAC,EAAE,qCAAqC,GAC9C,OAAO,CAAC,gBAAgB,CAAC;IA2B5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;OAGG;IACH,WAAW,IAAI,OAAO,EAAE;IAOxB;;;OAGG;IACH,eAAe,IAAI,OAAO,EAAE;IAI5B;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAYzC,OAAO,CAAC,oBAAoB;IA4C5B,OAAO,CAAC,yBAAyB;IA2BjC,OAAO,CAAC,sBAAsB;YAchB,gBAAgB;IAmB9B,OAAO,CAAC,mCAAmC;YAQ7B,iCAAiC;IAkB/C,OAAO,CAAC,2BAA2B;IASnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAarB;AAED,OAAO,EAAE,uBAAuB,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
|