appium-ios-remotexpc 5.17.2 → 5.18.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 +12 -0
- package/build/src/index.d.ts +1 -0
- 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/remote-xpc-framed-transport.d.ts +22 -0
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js +77 -16
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js.map +1 -1
- package/build/src/lib/remote-xpc/rsd-service-catalog-client.d.ts +6 -0
- package/build/src/lib/remote-xpc/rsd-service-catalog-client.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/rsd-service-catalog-client.js +10 -1
- package/build/src/lib/remote-xpc/rsd-service-catalog-client.js.map +1 -1
- package/build/src/lib/remote-xpc/service-catalog.d.ts +4 -2
- package/build/src/lib/remote-xpc/service-catalog.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/service-catalog.js +30 -16
- package/build/src/lib/remote-xpc/service-catalog.js.map +1 -1
- package/build/src/lib/remote-xpc/xpc-protocol.d.ts +22 -0
- package/build/src/lib/remote-xpc/xpc-protocol.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/xpc-protocol.js +30 -0
- package/build/src/lib/remote-xpc/xpc-protocol.js.map +1 -1
- package/build/src/services/ios/accessibility-audit/ax-element.d.ts +7 -0
- package/build/src/services/ios/accessibility-audit/ax-element.d.ts.map +1 -1
- package/build/src/services/ios/accessibility-audit/ax-element.js +1 -0
- package/build/src/services/ios/accessibility-audit/ax-element.js.map +1 -1
- package/build/src/services/ios/accessibility-audit/index.d.ts +96 -0
- package/build/src/services/ios/accessibility-audit/index.d.ts.map +1 -1
- package/build/src/services/ios/accessibility-audit/index.js +259 -0
- package/build/src/services/ios/accessibility-audit/index.js.map +1 -1
- package/build/src/services/ios/core-device/core-device-service.d.ts +5 -5
- package/build/src/services/ios/core-device/core-device-service.d.ts.map +1 -1
- package/build/src/services/ios/core-device/core-device-service.js +34 -9
- package/build/src/services/ios/core-device/core-device-service.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/lib/remote-xpc/remote-xpc-framed-transport.ts +84 -16
- package/src/lib/remote-xpc/rsd-service-catalog-client.ts +11 -1
- package/src/lib/remote-xpc/service-catalog.ts +32 -16
- package/src/lib/remote-xpc/xpc-protocol.ts +37 -0
- package/src/services/ios/accessibility-audit/ax-element.ts +8 -0
- package/src/services/ios/accessibility-audit/index.ts +270 -0
- package/src/services/ios/core-device/core-device-service.ts +38 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [5.18.1](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.0...v5.18.1) (2026-09-01)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **remote-xpc:** propagate XPC decode errors instead of stalling ([#312](https://github.com/appium/appium-ios-remotexpc/issues/312)) ([cc009ef](https://github.com/appium/appium-ios-remotexpc/commit/cc009efead694f57fc6aca5a321f2bac49a909f4))
|
|
6
|
+
|
|
7
|
+
## [5.18.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.17.2...v5.18.0) (2026-09-01)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **accessibility-audit:** add focus traversal via `moveFocus` and `walkElements` ([#310](https://github.com/appium/appium-ios-remotexpc/issues/310)) ([df982a5](https://github.com/appium/appium-ios-remotexpc/commit/df982a52bbe2f136520569fab4f858942f465d6c))
|
|
12
|
+
|
|
1
13
|
## [5.17.2](https://github.com/appium/appium-ios-remotexpc/compare/v5.17.1...v5.17.2) (2026-08-31)
|
|
2
14
|
|
|
3
15
|
### Performance Improvements
|
package/build/src/index.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export type { AxRect } from './services/ios/accessibility-audit/ax-values.js';
|
|
|
36
36
|
export { serializeAxAttribute, serializeAxElement, toAxElement, toInspectedElement, } from './services/ios/accessibility-audit/ax-element.js';
|
|
37
37
|
export type { AxElement, AxElementAttribute, AxInspectedElement, AxInspectorSection, } from './services/ios/accessibility-audit/ax-element.js';
|
|
38
38
|
export { serializeAxSetting } from './services/ios/accessibility-audit/index.js';
|
|
39
|
+
export { AxFocusDirection } from './services/ios/accessibility-audit/index.js';
|
|
39
40
|
export type { InspectOptions, RunAuditOptions, AxAuditIssue } from './services/ios/accessibility-audit/index.js';
|
|
40
41
|
export { CoreDeviceInfoService } from './services/ios/device-info/index.js';
|
|
41
42
|
export type { CoreDeviceAttributes, CoreDeviceDisplayInfo, CoreDeviceLockState, } from './services/ios/device-info/index.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":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export { AX_OBJECT_TYPE, deserializeAxObject } from './services/ios/accessibilit
|
|
|
18
18
|
export { AxPoint, toAxRect } from './services/ios/accessibility-audit/ax-values.js';
|
|
19
19
|
export { serializeAxAttribute, serializeAxElement, toAxElement, toInspectedElement, } from './services/ios/accessibility-audit/ax-element.js';
|
|
20
20
|
export { serializeAxSetting } from './services/ios/accessibility-audit/index.js';
|
|
21
|
+
export { AxFocusDirection } from './services/ios/accessibility-audit/index.js';
|
|
21
22
|
export { CoreDeviceInfoService } from './services/ios/device-info/index.js';
|
|
22
23
|
export { DeviceControlService } from './services/ios/device-control/index.js';
|
|
23
24
|
export { ConfigurationService } from './services/ios/configuration/index.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,EAAC,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAE,8BAA8B,EAAC,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,oBAAoB,EAAE,yBAAyB,EAAC,MAAM,wCAAwC,CAAC;AACvG,OAAO,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,uBAAuB,EAAC,MAAM,wCAAwC,CAAC;AAS/E,OAAO,EAAC,OAAO,EAAC,MAAM,8BAA8B,CAAC;AAMrD,OAAO,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAQhE,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAO5C,OAAO,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,mDAAmD,CAAC;AAErG,OAAO,EAAC,UAAU,EAAC,MAAM,qCAAqC,CAAC;AAQ/D,OAAO,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,yBAAyB,EAAC,MAAM,6CAA6C,CAAC;AAEtF,OAAO,EAAC,mBAAmB,EAAC,MAAM,qDAAqD,CAAC;AAExF,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,sDAAsD,CAAC;AACzG,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,iDAAiD,CAAC;AAElF,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,GACnB,MAAM,kDAAkD,CAAC;AAO1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
14
14
|
private pendingXpcData;
|
|
15
15
|
private connected;
|
|
16
16
|
private closing;
|
|
17
|
+
private desynced;
|
|
17
18
|
constructor(address: [string, number]);
|
|
18
19
|
get isConnected(): boolean;
|
|
19
20
|
/**
|
|
@@ -30,9 +31,30 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
30
31
|
sendDataFrame(payload: Buffer, streamId?: number): void;
|
|
31
32
|
close(): Promise<void>;
|
|
32
33
|
private waitForSocketConnect;
|
|
34
|
+
/**
|
|
35
|
+
* Handlers ignore a socket that has since been replaced by a reconnect; a closing
|
|
36
|
+
* socket outlives `close()`, and its late events would otherwise hit the new one.
|
|
37
|
+
*/
|
|
33
38
|
private registerSocketHandlers;
|
|
34
39
|
private handleData;
|
|
40
|
+
/**
|
|
41
|
+
* Reassembles XPC messages for one HTTP/2 stream; streams buffer separately so
|
|
42
|
+
* interleaving cannot fabricate a desync. Framed-but-undecodable messages are
|
|
43
|
+
* skipped, and a retained tail is copied so it cannot pin the parser's buffer.
|
|
44
|
+
*/
|
|
35
45
|
private ingestXpcData;
|
|
46
|
+
/**
|
|
47
|
+
* Latches the whole connection closed: framing alignment is lost and the peer's
|
|
48
|
+
* remaining bytes cannot be trusted on any stream. Teardown starts before the
|
|
49
|
+
* emit so a listener that reconnects synchronously keeps its new socket.
|
|
50
|
+
*/
|
|
51
|
+
private handleDesync;
|
|
52
|
+
/**
|
|
53
|
+
* A message that will not decode is reported on `'decodeError'`, never `'error'`:
|
|
54
|
+
* it is not fatal, the messages behind it still arrive, and an unheard `'error'`
|
|
55
|
+
* would be thrown by Node.
|
|
56
|
+
*/
|
|
57
|
+
private decodeAndEmit;
|
|
36
58
|
private shutdownSocket;
|
|
37
59
|
private resetParsers;
|
|
38
60
|
}
|
|
@@ -1 +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,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;
|
|
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,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAezC,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,CAA6B;IACnD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAKrC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;;;;OAQG;IACH,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IAEK,OAAO,CAAC,OAAO,EAAE,sCAAsC,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B7E,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,IAAI;IAO5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,OAAO,CAAC,oBAAoB;IAyB5B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,UAAU;IA+BlB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA0BrB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IASpB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,YAAY;CAKrB"}
|
|
@@ -4,7 +4,7 @@ import { getLogger } from '../logger.js';
|
|
|
4
4
|
import { DataFrame } from './handshake-frames.js';
|
|
5
5
|
import Handshake from './handshake.js';
|
|
6
6
|
import { Http2FrameParser, buildWindowUpdateFrames } from './http2-frame-parser.js';
|
|
7
|
-
import { decodeMessage } from './xpc-protocol.js';
|
|
7
|
+
import { decodeMessage, probeXpcFraming } from './xpc-protocol.js';
|
|
8
8
|
const log = getLogger('RemoteXpcFramedTransport');
|
|
9
9
|
const DEFAULT_SOCKET_CLOSE_TIMEOUT_MS = 1000;
|
|
10
10
|
const DEFAULT_SOCKET_END_TIMEOUT_MS = 500;
|
|
@@ -16,9 +16,10 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
16
16
|
address;
|
|
17
17
|
socket = null;
|
|
18
18
|
frameParser = new Http2FrameParser();
|
|
19
|
-
pendingXpcData =
|
|
19
|
+
pendingXpcData = new Map();
|
|
20
20
|
connected = false;
|
|
21
21
|
closing = false;
|
|
22
|
+
desynced = false;
|
|
22
23
|
constructor(address) {
|
|
23
24
|
super();
|
|
24
25
|
this.address = address;
|
|
@@ -104,12 +105,23 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
104
105
|
});
|
|
105
106
|
});
|
|
106
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Handlers ignore a socket that has since been replaced by a reconnect; a closing
|
|
110
|
+
* socket outlives `close()`, and its late events would otherwise hit the new one.
|
|
111
|
+
*/
|
|
107
112
|
registerSocketHandlers(socket) {
|
|
113
|
+
const superseded = () => this.socket !== null && this.socket !== socket;
|
|
108
114
|
socket.on('data', (data) => {
|
|
115
|
+
if (superseded()) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
109
118
|
const chunk = Buffer.isBuffer(data) ? data : Buffer.from(data, 'hex');
|
|
110
119
|
this.handleData(chunk);
|
|
111
120
|
});
|
|
112
121
|
socket.on('error', (error) => {
|
|
122
|
+
if (superseded()) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
113
125
|
const wasConnected = this.connected;
|
|
114
126
|
this.connected = false;
|
|
115
127
|
if (this.closing || !wasConnected) {
|
|
@@ -120,6 +132,9 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
120
132
|
this.emit('error', error);
|
|
121
133
|
});
|
|
122
134
|
socket.on('close', () => {
|
|
135
|
+
if (superseded()) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
123
138
|
this.connected = false;
|
|
124
139
|
this.emit('close');
|
|
125
140
|
});
|
|
@@ -140,28 +155,73 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
140
155
|
if (frame.type !== 'data') {
|
|
141
156
|
continue;
|
|
142
157
|
}
|
|
158
|
+
const socket = this.socket;
|
|
159
|
+
if (this.desynced || !socket) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
143
162
|
const { streamId, data, bodyLen } = frame.frame;
|
|
144
163
|
for (const windowUpdate of buildWindowUpdateFrames(streamId, bodyLen)) {
|
|
145
|
-
|
|
164
|
+
socket.write(windowUpdate);
|
|
146
165
|
}
|
|
147
|
-
this.ingestXpcData(data);
|
|
166
|
+
this.ingestXpcData(streamId, data);
|
|
148
167
|
}
|
|
149
168
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Reassembles XPC messages for one HTTP/2 stream; streams buffer separately so
|
|
171
|
+
* interleaving cannot fabricate a desync. Framed-but-undecodable messages are
|
|
172
|
+
* skipped, and a retained tail is copied so it cannot pin the parser's buffer.
|
|
173
|
+
*/
|
|
174
|
+
ingestXpcData(streamId, chunk) {
|
|
175
|
+
if (this.desynced) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const buffered = this.pendingXpcData.get(streamId);
|
|
179
|
+
let pending = buffered ? Buffer.concat([buffered, chunk]) : chunk;
|
|
180
|
+
this.pendingXpcData.delete(streamId);
|
|
153
181
|
while (pending.length > 0) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
this.emit('message', message.body);
|
|
159
|
-
}
|
|
182
|
+
const framing = probeXpcFraming(pending);
|
|
183
|
+
if (framing.status === 'incomplete') {
|
|
184
|
+
this.pendingXpcData.set(streamId, Buffer.from(pending));
|
|
185
|
+
return;
|
|
160
186
|
}
|
|
161
|
-
|
|
162
|
-
this.
|
|
187
|
+
if (framing.status === 'desynced') {
|
|
188
|
+
this.handleDesync(framing.reason);
|
|
163
189
|
return;
|
|
164
190
|
}
|
|
191
|
+
const message = pending.subarray(0, framing.byteLength);
|
|
192
|
+
pending = pending.subarray(framing.byteLength);
|
|
193
|
+
this.decodeAndEmit(message);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Latches the whole connection closed: framing alignment is lost and the peer's
|
|
198
|
+
* remaining bytes cannot be trusted on any stream. Teardown starts before the
|
|
199
|
+
* emit so a listener that reconnects synchronously keeps its new socket.
|
|
200
|
+
*/
|
|
201
|
+
handleDesync(reason) {
|
|
202
|
+
this.desynced = true;
|
|
203
|
+
this.connected = false;
|
|
204
|
+
this.close().catch((error) => {
|
|
205
|
+
log.debug(`Failed to close a desynced RemoteXPC transport: ${error}`);
|
|
206
|
+
});
|
|
207
|
+
this.emit('error', new Error(reason));
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* A message that will not decode is reported on `'decodeError'`, never `'error'`:
|
|
211
|
+
* it is not fatal, the messages behind it still arrive, and an unheard `'error'`
|
|
212
|
+
* would be thrown by Node.
|
|
213
|
+
*/
|
|
214
|
+
decodeAndEmit(message) {
|
|
215
|
+
let body;
|
|
216
|
+
try {
|
|
217
|
+
body = decodeMessage(message).message.body;
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
this.emit('decodeError', error instanceof Error ? error : new Error(String(error)));
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (body) {
|
|
224
|
+
this.emit('message', body);
|
|
165
225
|
}
|
|
166
226
|
}
|
|
167
227
|
shutdownSocket(socket) {
|
|
@@ -206,7 +266,8 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
206
266
|
}
|
|
207
267
|
resetParsers() {
|
|
208
268
|
this.frameParser = new Http2FrameParser();
|
|
209
|
-
this.pendingXpcData
|
|
269
|
+
this.pendingXpcData.clear();
|
|
270
|
+
this.desynced = false;
|
|
210
271
|
}
|
|
211
272
|
}
|
|
212
273
|
//# sourceMappingURL=remote-xpc-framed-transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-xpc-framed-transport.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/remote-xpc-framed-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
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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"}
|
|
@@ -52,6 +52,12 @@ declare class RsdServiceCatalogClient {
|
|
|
52
52
|
*/
|
|
53
53
|
findService(serviceName: string): Service;
|
|
54
54
|
private createConnectSession;
|
|
55
|
+
/**
|
|
56
|
+
* The `'error'` listener is permanent: Node throws an `'error'` that has no
|
|
57
|
+
* listener, and one can still arrive after connect() has settled. `'decodeError'`
|
|
58
|
+
* is a single unreadable message, not a dead connection, so it must not fail the
|
|
59
|
+
* attempt; it logs only the first to stay off the hot path.
|
|
60
|
+
*/
|
|
55
61
|
private registerTransportHandlers;
|
|
56
62
|
private processIncomingMessage;
|
|
57
63
|
private connectTransport;
|
|
@@ -1 +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,EAAC,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAK9F,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AAInD;;;GAGG;AACH,eAAO,MAAM,uCAAuC,QACqC,CAAC;AAC1F,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,QAA0C,CAAC;AAErF,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,CAAC,OAAO,CAAC,EAAE,qCAAqC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBzF;;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;IAUzC,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,yBAAyB;
|
|
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,EAAC,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAK9F,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AAInD;;;GAGG;AACH,eAAO,MAAM,uCAAuC,QACqC,CAAC;AAC1F,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,QAA0C,CAAC;AAErF,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,CAAC,OAAO,CAAC,EAAE,qCAAqC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBzF;;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;IAUzC,OAAO,CAAC,oBAAoB;IA0C5B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,sBAAsB;YAWhB,gBAAgB;IAmB9B,OAAO,CAAC,mCAAmC;YAQ7B,iCAAiC;IAgB/C,OAAO,CAAC,2BAA2B;IASnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAWrB;AAED,OAAO,EAAC,uBAAuB,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAC,CAAC"}
|
|
@@ -138,14 +138,23 @@ class RsdServiceCatalogClient {
|
|
|
138
138
|
isSettled: () => settled,
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* The `'error'` listener is permanent: Node throws an `'error'` that has no
|
|
143
|
+
* listener, and one can still arrive after connect() has settled. `'decodeError'`
|
|
144
|
+
* is a single unreadable message, not a dead connection, so it must not fail the
|
|
145
|
+
* attempt; it logs only the first to stay off the hot path.
|
|
146
|
+
*/
|
|
141
147
|
registerTransportHandlers(session, transport) {
|
|
142
|
-
transport.
|
|
148
|
+
transport.on('error', (error) => {
|
|
143
149
|
if (!this._isClosing) {
|
|
144
150
|
log.error(`Connection error: ${error}`);
|
|
145
151
|
}
|
|
146
152
|
this._isConnected = false;
|
|
147
153
|
session.settleFailure(error);
|
|
148
154
|
});
|
|
155
|
+
transport.once('decodeError', (error) => {
|
|
156
|
+
log.debug(`Skipped an undecodable RSD message: ${error.message}`);
|
|
157
|
+
});
|
|
149
158
|
transport.on('message', (body) => this.processIncomingMessage(session, body));
|
|
150
159
|
transport.once('close', () => {
|
|
151
160
|
this._isConnected = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsd-service-catalog-client.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/rsd-service-catalog-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rsd-service-catalog-client.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/rsd-service-catalog-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,11 @@ export interface ServicesResponse {
|
|
|
12
12
|
*/
|
|
13
13
|
export declare class ServiceCatalogCollector {
|
|
14
14
|
private previousFrameData;
|
|
15
|
+
private desynced;
|
|
15
16
|
/**
|
|
16
|
-
* Feed one DATA frame payload. Returns the catalog
|
|
17
|
-
*
|
|
17
|
+
* Feed one DATA frame payload. Returns the catalog once a complete XPC message
|
|
18
|
+
* carrying `Services` decodes. Framed-but-undecodable messages are skipped.
|
|
19
|
+
* @throws once the stream desyncs, and on every later call — no payload can resynchronise it
|
|
18
20
|
*/
|
|
19
21
|
ingestDataPayload(chunk: Buffer): ServicesResponse | null;
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,iBAAiB,CAA2B;
|
|
1
|
+
{"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;CA+B1D;AAWD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAuBnG"}
|
|
@@ -1,38 +1,52 @@
|
|
|
1
|
-
import { decodeMessage } from './xpc-protocol.js';
|
|
1
|
+
import { decodeMessage, probeXpcFraming } from './xpc-protocol.js';
|
|
2
2
|
/**
|
|
3
3
|
* Reassemble length-prefixed XPC payloads from HTTP/2 DATA frames and extract
|
|
4
4
|
* the service catalog once the full handshake message is available.
|
|
5
5
|
*/
|
|
6
6
|
export class ServiceCatalogCollector {
|
|
7
7
|
previousFrameData = Buffer.alloc(0);
|
|
8
|
+
desynced = false;
|
|
8
9
|
/**
|
|
9
|
-
* Feed one DATA frame payload. Returns the catalog
|
|
10
|
-
*
|
|
10
|
+
* Feed one DATA frame payload. Returns the catalog once a complete XPC message
|
|
11
|
+
* carrying `Services` decodes. Framed-but-undecodable messages are skipped.
|
|
12
|
+
* @throws once the stream desyncs, and on every later call — no payload can resynchronise it
|
|
11
13
|
*/
|
|
12
14
|
ingestDataPayload(chunk) {
|
|
15
|
+
if (this.desynced) {
|
|
16
|
+
throw new Error('XPC stream is desynced');
|
|
17
|
+
}
|
|
13
18
|
let pending = Buffer.concat([this.previousFrameData, chunk]);
|
|
14
19
|
this.previousFrameData = Buffer.alloc(0);
|
|
15
20
|
while (pending.length > 0) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
pending = pending.subarray(bytesConsumed);
|
|
19
|
-
if (message.body === null || message.body === undefined) {
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
const catalog = servicesFromXpcBody(message.body);
|
|
23
|
-
if (catalog) {
|
|
24
|
-
this.previousFrameData = pending;
|
|
25
|
-
return catalog;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
21
|
+
const framing = probeXpcFraming(pending);
|
|
22
|
+
if (framing.status === 'incomplete') {
|
|
29
23
|
this.previousFrameData = pending;
|
|
30
24
|
return null;
|
|
31
25
|
}
|
|
26
|
+
if (framing.status === 'desynced') {
|
|
27
|
+
this.desynced = true;
|
|
28
|
+
throw new Error(framing.reason);
|
|
29
|
+
}
|
|
30
|
+
const message = pending.subarray(0, framing.byteLength);
|
|
31
|
+
pending = pending.subarray(framing.byteLength);
|
|
32
|
+
const catalog = extractCatalog(message);
|
|
33
|
+
if (catalog) {
|
|
34
|
+
this.previousFrameData = pending;
|
|
35
|
+
return catalog;
|
|
36
|
+
}
|
|
32
37
|
}
|
|
33
38
|
return null;
|
|
34
39
|
}
|
|
35
40
|
}
|
|
41
|
+
/** Catalog carried by one complete XPC message; null if it carries none or will not decode. */
|
|
42
|
+
function extractCatalog(message) {
|
|
43
|
+
try {
|
|
44
|
+
return servicesFromXpcBody(decodeMessage(message).message.body);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
36
50
|
/**
|
|
37
51
|
* Build the service list from a decoded RSD handshake body (`peer_info`).
|
|
38
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-catalog.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"service-catalog.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,17 +13,39 @@ export interface DecodedXpcMessage {
|
|
|
13
13
|
/** Bytes consumed from `buffer` (may be less than `buffer.length`). */
|
|
14
14
|
bytesConsumed: number;
|
|
15
15
|
}
|
|
16
|
+
/** Framing state of the wrapper at the front of a buffer. `desynced` is unrecoverable. */
|
|
17
|
+
export type XpcFramingProbe = {
|
|
18
|
+
status: 'incomplete';
|
|
19
|
+
} | {
|
|
20
|
+
status: 'desynced';
|
|
21
|
+
reason: string;
|
|
22
|
+
} | {
|
|
23
|
+
status: 'ok';
|
|
24
|
+
byteLength: number;
|
|
25
|
+
};
|
|
16
26
|
/**
|
|
17
27
|
* Encodes a message object into an XPC Buffer.
|
|
18
28
|
* A message is an object like:
|
|
19
29
|
* { flags: Number, id: bigint, body: Object|null }
|
|
20
30
|
*/
|
|
21
31
|
export declare function encodeMessage(message: XPCMessage): Buffer;
|
|
32
|
+
/**
|
|
33
|
+
* Upper bound on a declared body length: the initial receive window, which the peer
|
|
34
|
+
* cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
|
|
35
|
+
* RemoteXPC uses odd ones. Anything larger is corrupt framing, not a partial read.
|
|
36
|
+
*/
|
|
37
|
+
export declare const MAX_XPC_BODY_SIZE: bigint;
|
|
22
38
|
/**
|
|
23
39
|
* Returns the total byte length of one length-prefixed XPC wrapper in `buffer`.
|
|
24
40
|
* @throws if the header is missing, invalid, or the buffer is shorter than the message
|
|
25
41
|
*/
|
|
26
42
|
export declare function getXpcMessageByteLength(buffer: Buffer): number;
|
|
43
|
+
/**
|
|
44
|
+
* Non-throwing framing check: separates "wait for more bytes" from "stream unusable".
|
|
45
|
+
* An oversized declared length is desync, not a partial read — treating it as
|
|
46
|
+
* incomplete would buffer the rest of the stream forever.
|
|
47
|
+
*/
|
|
48
|
+
export declare function probeXpcFraming(buffer: Buffer): XpcFramingProbe;
|
|
27
49
|
/**
|
|
28
50
|
* Decodes an XPC Buffer into a message object.
|
|
29
51
|
* (Keep this function if you plan to handle incoming messages.)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xpc-protocol.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,aAAa,EAAW,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"xpc-protocol.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,aAAa,EAAW,MAAM,aAAa,CAAC;AASnE,eAAO,MAAM,SAAS,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAa7C,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GACvB;IAAC,MAAM,EAAE,YAAY,CAAA;CAAC,GACtB;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,GACpC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAAC;AA0GvC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAkCzD;AAGD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAA8D,CAAC;AAE7F;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAiB/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAuC/D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Http2Constants } from './constants.js';
|
|
1
2
|
import { XPCUUID } from './xpc-uuid.js';
|
|
2
3
|
// Constants for XPC protocol.
|
|
3
4
|
const BODY_VERSION = 0x00000005;
|
|
@@ -140,6 +141,12 @@ export function encodeMessage(message) {
|
|
|
140
141
|
return writer.concat();
|
|
141
142
|
}
|
|
142
143
|
const XPC_WRAPPER_HEADER_SIZE = 24;
|
|
144
|
+
/**
|
|
145
|
+
* Upper bound on a declared body length: the initial receive window, which the peer
|
|
146
|
+
* cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
|
|
147
|
+
* RemoteXPC uses odd ones. Anything larger is corrupt framing, not a partial read.
|
|
148
|
+
*/
|
|
149
|
+
export const MAX_XPC_BODY_SIZE = BigInt(Http2Constants.DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE);
|
|
143
150
|
/**
|
|
144
151
|
* Returns the total byte length of one length-prefixed XPC wrapper in `buffer`.
|
|
145
152
|
* @throws if the header is missing, invalid, or the buffer is shorter than the message
|
|
@@ -159,6 +166,29 @@ export function getXpcMessageByteLength(buffer) {
|
|
|
159
166
|
}
|
|
160
167
|
return total;
|
|
161
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Non-throwing framing check: separates "wait for more bytes" from "stream unusable".
|
|
171
|
+
* An oversized declared length is desync, not a partial read — treating it as
|
|
172
|
+
* incomplete would buffer the rest of the stream forever.
|
|
173
|
+
*/
|
|
174
|
+
export function probeXpcFraming(buffer) {
|
|
175
|
+
if (buffer.length < XPC_WRAPPER_HEADER_SIZE) {
|
|
176
|
+
return { status: 'incomplete' };
|
|
177
|
+
}
|
|
178
|
+
const magic = buffer.readUInt32LE(0);
|
|
179
|
+
if (magic !== WRAPPER_MAGIC) {
|
|
180
|
+
return { status: 'desynced', reason: `Invalid XPC wrapper magic: 0x${magic.toString(16)}` };
|
|
181
|
+
}
|
|
182
|
+
const bodyLength = buffer.readBigUInt64LE(8);
|
|
183
|
+
if (bodyLength > MAX_XPC_BODY_SIZE) {
|
|
184
|
+
return { status: 'desynced', reason: `XPC body length ${bodyLength} exceeds ${MAX_XPC_BODY_SIZE}` };
|
|
185
|
+
}
|
|
186
|
+
const byteLength = XPC_WRAPPER_HEADER_SIZE + Number(bodyLength);
|
|
187
|
+
if (buffer.length < byteLength) {
|
|
188
|
+
return { status: 'incomplete' };
|
|
189
|
+
}
|
|
190
|
+
return { status: 'ok', byteLength };
|
|
191
|
+
}
|
|
162
192
|
/**
|
|
163
193
|
* Decodes an XPC Buffer into a message object.
|
|
164
194
|
* (Keep this function if you plan to handle incoming messages.)
|