react-native-mcp-kit 4.0.0 → 4.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/README.md +8 -8
- package/dist/babel/testIdPlugin.d.ts.map +1 -1
- package/dist/babel/testIdPlugin.js +82 -25
- package/dist/babel/testIdPlugin.js.map +1 -1
- package/dist/bin/ios-hid +0 -0
- package/dist/client/core/McpClient.d.ts.map +1 -1
- package/dist/client/core/McpClient.js +16 -2
- package/dist/client/core/McpClient.js.map +1 -1
- package/dist/modules/alert/alert.d.ts.map +1 -1
- package/dist/modules/alert/alert.js +18 -3
- package/dist/modules/alert/alert.js.map +1 -1
- package/dist/modules/console/console.d.ts.map +1 -1
- package/dist/modules/console/console.js +38 -12
- package/dist/modules/console/console.js.map +1 -1
- package/dist/modules/console/types.d.ts +1 -1
- package/dist/modules/console/types.d.ts.map +1 -1
- package/dist/modules/device/device.d.ts.map +1 -1
- package/dist/modules/device/device.js +17 -4
- package/dist/modules/device/device.js.map +1 -1
- package/dist/modules/errors/errors.d.ts.map +1 -1
- package/dist/modules/errors/errors.js +3 -1
- package/dist/modules/errors/errors.js.map +1 -1
- package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
- package/dist/modules/fiberTree/fiberTree.js +44 -7
- package/dist/modules/fiberTree/fiberTree.js.map +1 -1
- package/dist/modules/fiberTree/finder.d.ts +2 -0
- package/dist/modules/fiberTree/finder.d.ts.map +1 -1
- package/dist/modules/fiberTree/finder.js +3 -1
- package/dist/modules/fiberTree/finder.js.map +1 -1
- package/dist/modules/fiberTree/hooks.d.ts +17 -0
- package/dist/modules/fiberTree/hooks.d.ts.map +1 -1
- package/dist/modules/fiberTree/hooks.js +22 -4
- package/dist/modules/fiberTree/hooks.js.map +1 -1
- package/dist/modules/fiberTree/utils.d.ts.map +1 -1
- package/dist/modules/fiberTree/utils.js +29 -4
- package/dist/modules/fiberTree/utils.js.map +1 -1
- package/dist/modules/i18next/i18next.d.ts.map +1 -1
- package/dist/modules/i18next/i18next.js +27 -6
- package/dist/modules/i18next/i18next.js.map +1 -1
- package/dist/modules/logBox/logBox.d.ts.map +1 -1
- package/dist/modules/logBox/logBox.js +8 -4
- package/dist/modules/logBox/logBox.js.map +1 -1
- package/dist/modules/navigation/navigation.d.ts.map +1 -1
- package/dist/modules/navigation/navigation.js +19 -4
- package/dist/modules/navigation/navigation.js.map +1 -1
- package/dist/modules/network/network.js +1 -1
- package/dist/modules/network/network.js.map +1 -1
- package/dist/modules/reactQuery/reactQuery.d.ts.map +1 -1
- package/dist/modules/reactQuery/reactQuery.js +2 -1
- package/dist/modules/reactQuery/reactQuery.js.map +1 -1
- package/dist/modules/storage/storage.d.ts.map +1 -1
- package/dist/modules/storage/storage.js +23 -8
- package/dist/modules/storage/storage.js.map +1 -1
- package/dist/server/bridge.d.ts +3 -0
- package/dist/server/bridge.d.ts.map +1 -1
- package/dist/server/bridge.js +62 -5
- package/dist/server/bridge.js.map +1 -1
- package/dist/server/host/coredevice/dtx.d.ts +79 -0
- package/dist/server/host/coredevice/dtx.d.ts.map +1 -0
- package/dist/server/host/coredevice/dtx.js +453 -0
- package/dist/server/host/coredevice/dtx.js.map +1 -0
- package/dist/server/host/coredevice/nska.d.ts +6 -0
- package/dist/server/host/coredevice/nska.d.ts.map +1 -0
- package/dist/server/host/coredevice/nska.js +277 -0
- package/dist/server/host/coredevice/nska.js.map +1 -0
- package/dist/server/host/coredevice/rsd.d.ts +20 -0
- package/dist/server/host/coredevice/rsd.d.ts.map +1 -0
- package/dist/server/host/coredevice/rsd.js +244 -0
- package/dist/server/host/coredevice/rsd.js.map +1 -0
- package/dist/server/host/coredevice/screenshot.d.ts +11 -0
- package/dist/server/host/coredevice/screenshot.d.ts.map +1 -0
- package/dist/server/host/coredevice/screenshot.js +84 -0
- package/dist/server/host/coredevice/screenshot.js.map +1 -0
- package/dist/server/host/coredevice/tunnel.d.ts +29 -0
- package/dist/server/host/coredevice/tunnel.d.ts.map +1 -0
- package/dist/server/host/coredevice/tunnel.js +222 -0
- package/dist/server/host/coredevice/tunnel.js.map +1 -0
- package/dist/server/host/coredevice/xpc.d.ts +21 -0
- package/dist/server/host/coredevice/xpc.d.ts.map +1 -0
- package/dist/server/host/coredevice/xpc.js +318 -0
- package/dist/server/host/coredevice/xpc.js.map +1 -0
- package/dist/server/host/deviceResolver.d.ts +8 -0
- package/dist/server/host/deviceResolver.d.ts.map +1 -1
- package/dist/server/host/deviceResolver.js +128 -62
- package/dist/server/host/deviceResolver.js.map +1 -1
- package/dist/server/host/tools/capture.d.ts.map +1 -1
- package/dist/server/host/tools/capture.js +74 -18
- package/dist/server/host/tools/capture.js.map +1 -1
- package/dist/server/host/tools/devices.d.ts.map +1 -1
- package/dist/server/host/tools/devices.js +25 -4
- package/dist/server/host/tools/devices.js.map +1 -1
- package/dist/server/host/tools/input.d.ts.map +1 -1
- package/dist/server/host/tools/input.js +45 -20
- package/dist/server/host/tools/input.js.map +1 -1
- package/dist/server/host/tools/tapFiber.d.ts.map +1 -1
- package/dist/server/host/tools/tapFiber.js +2 -0
- package/dist/server/host/tools/tapFiber.js.map +1 -1
- package/dist/server/mcpServer.d.ts.map +1 -1
- package/dist/server/mcpServer.js +5 -4
- package/dist/server/mcpServer.js.map +1 -1
- package/dist/server/metro/tools/events.d.ts.map +1 -1
- package/dist/server/metro/tools/events.js +1 -0
- package/dist/server/metro/tools/events.js.map +1 -1
- package/dist/server/metro/tools/openInEditor.d.ts.map +1 -1
- package/dist/server/metro/tools/openInEditor.js +4 -1
- package/dist/server/metro/tools/openInEditor.js.map +1 -1
- package/dist/server/metro/tools/symbolicate.d.ts.map +1 -1
- package/dist/server/metro/tools/symbolicate.js +41 -11
- package/dist/server/metro/tools/symbolicate.js.map +1 -1
- package/dist/shared/projection/projectValue.d.ts +12 -1
- package/dist/shared/projection/projectValue.d.ts.map +1 -1
- package/dist/shared/projection/projectValue.js +42 -12
- package/dist/shared/projection/projectValue.js.map +1 -1
- package/dist/shared/projection/resolvePath.d.ts +14 -2
- package/dist/shared/projection/resolvePath.d.ts.map +1 -1
- package/dist/shared/projection/resolvePath.js +25 -3
- package/dist/shared/projection/resolvePath.js.map +1 -1
- package/dist/shared/protocol.d.ts +2 -1
- package/dist/shared/protocol.d.ts.map +1 -1
- package/dist/shared/protocol.js +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Encoder/decoder for Apple's binary XPC object format. RemoteXPC sends
|
|
3
|
+
// these as the payload of an `XpcWrapper` inside HTTP/2 DATA frames.
|
|
4
|
+
//
|
|
5
|
+
// Wire layout reference: PROTOCOL.md. Integers are little-endian and
|
|
6
|
+
// every variable-width field is zero-padded to a 4-byte boundary.
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.parseXpcWrapper = exports.buildXpcWrapper = exports.XpcFlags = void 0;
|
|
9
|
+
const TYPE_NULL = 0x00001000;
|
|
10
|
+
const TYPE_BOOL = 0x00002000;
|
|
11
|
+
const TYPE_INT64 = 0x00003000;
|
|
12
|
+
const TYPE_UINT64 = 0x00004000;
|
|
13
|
+
const TYPE_DOUBLE = 0x00005000;
|
|
14
|
+
const TYPE_DATA = 0x00008000;
|
|
15
|
+
const TYPE_STRING = 0x00009000;
|
|
16
|
+
const TYPE_UUID = 0x0000a000;
|
|
17
|
+
const TYPE_ARRAY = 0x0000e000;
|
|
18
|
+
const TYPE_DICTIONARY = 0x0000f000;
|
|
19
|
+
const XPC_WRAPPER_MAGIC = 0x29b00b92;
|
|
20
|
+
const XPC_PAYLOAD_MAGIC = 0x42133742;
|
|
21
|
+
const XPC_PAYLOAD_VERSION = 5;
|
|
22
|
+
const pad4 = (n) => {
|
|
23
|
+
return (4 - (n % 4)) % 4;
|
|
24
|
+
};
|
|
25
|
+
class Reader {
|
|
26
|
+
buf;
|
|
27
|
+
offset = 0;
|
|
28
|
+
constructor(buf) {
|
|
29
|
+
this.buf = buf;
|
|
30
|
+
}
|
|
31
|
+
u32() {
|
|
32
|
+
const value = this.buf.readUInt32LE(this.offset);
|
|
33
|
+
this.offset += 4;
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
u64() {
|
|
37
|
+
const value = this.buf.readBigUInt64LE(this.offset);
|
|
38
|
+
this.offset += 8;
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
i64() {
|
|
42
|
+
const value = this.buf.readBigInt64LE(this.offset);
|
|
43
|
+
this.offset += 8;
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
f64() {
|
|
47
|
+
const value = this.buf.readDoubleLE(this.offset);
|
|
48
|
+
this.offset += 8;
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
bytes(n) {
|
|
52
|
+
const slice = this.buf.subarray(this.offset, this.offset + n);
|
|
53
|
+
this.offset += n;
|
|
54
|
+
return slice;
|
|
55
|
+
}
|
|
56
|
+
skipPadding(unpaddedSize) {
|
|
57
|
+
this.offset += pad4(unpaddedSize);
|
|
58
|
+
}
|
|
59
|
+
position() {
|
|
60
|
+
return this.offset;
|
|
61
|
+
}
|
|
62
|
+
readCString() {
|
|
63
|
+
let end = this.offset;
|
|
64
|
+
while (end < this.buf.length && this.buf[end] !== 0)
|
|
65
|
+
end++;
|
|
66
|
+
if (end >= this.buf.length) {
|
|
67
|
+
throw new Error(`Unterminated CString at offset ${this.offset}`);
|
|
68
|
+
}
|
|
69
|
+
const text = this.buf.subarray(this.offset, end).toString('utf8');
|
|
70
|
+
this.offset = end + 1;
|
|
71
|
+
return text;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
class Writer {
|
|
75
|
+
chunks = [];
|
|
76
|
+
length = 0;
|
|
77
|
+
push(buf) {
|
|
78
|
+
this.chunks.push(buf);
|
|
79
|
+
this.length += buf.length;
|
|
80
|
+
}
|
|
81
|
+
u32(value) {
|
|
82
|
+
const b = Buffer.alloc(4);
|
|
83
|
+
b.writeUInt32LE(value, 0);
|
|
84
|
+
this.push(b);
|
|
85
|
+
}
|
|
86
|
+
u64(value) {
|
|
87
|
+
const b = Buffer.alloc(8);
|
|
88
|
+
b.writeBigUInt64LE(value, 0);
|
|
89
|
+
this.push(b);
|
|
90
|
+
}
|
|
91
|
+
i64(value) {
|
|
92
|
+
const b = Buffer.alloc(8);
|
|
93
|
+
b.writeBigInt64LE(value, 0);
|
|
94
|
+
this.push(b);
|
|
95
|
+
}
|
|
96
|
+
f64(value) {
|
|
97
|
+
const b = Buffer.alloc(8);
|
|
98
|
+
b.writeDoubleLE(value, 0);
|
|
99
|
+
this.push(b);
|
|
100
|
+
}
|
|
101
|
+
bytes(buf) {
|
|
102
|
+
this.push(buf);
|
|
103
|
+
}
|
|
104
|
+
pad() {
|
|
105
|
+
const padding = pad4(this.length);
|
|
106
|
+
if (padding)
|
|
107
|
+
this.push(Buffer.alloc(padding));
|
|
108
|
+
}
|
|
109
|
+
size() {
|
|
110
|
+
return this.length;
|
|
111
|
+
}
|
|
112
|
+
build() {
|
|
113
|
+
return Buffer.concat(this.chunks, this.length);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const decodeObject = (reader) => {
|
|
117
|
+
const type = reader.u32();
|
|
118
|
+
switch (type) {
|
|
119
|
+
case TYPE_NULL:
|
|
120
|
+
return null;
|
|
121
|
+
case TYPE_BOOL:
|
|
122
|
+
return reader.u32() !== 0;
|
|
123
|
+
case TYPE_INT64:
|
|
124
|
+
return reader.i64();
|
|
125
|
+
case TYPE_UINT64:
|
|
126
|
+
return reader.u64();
|
|
127
|
+
case TYPE_DOUBLE:
|
|
128
|
+
return reader.f64();
|
|
129
|
+
case TYPE_DATA: {
|
|
130
|
+
const len = reader.u32();
|
|
131
|
+
const data = Buffer.from(reader.bytes(len));
|
|
132
|
+
reader.skipPadding(len);
|
|
133
|
+
return data;
|
|
134
|
+
}
|
|
135
|
+
case TYPE_STRING: {
|
|
136
|
+
const lenIncludingNul = reader.u32();
|
|
137
|
+
const raw = reader.bytes(lenIncludingNul);
|
|
138
|
+
reader.skipPadding(lenIncludingNul);
|
|
139
|
+
let end = raw.length;
|
|
140
|
+
while (end > 0 && raw[end - 1] === 0)
|
|
141
|
+
end--;
|
|
142
|
+
return raw.subarray(0, end).toString('utf8');
|
|
143
|
+
}
|
|
144
|
+
case TYPE_UUID: {
|
|
145
|
+
const data = reader.bytes(16);
|
|
146
|
+
const hex = data.toString('hex');
|
|
147
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
148
|
+
}
|
|
149
|
+
case TYPE_ARRAY: {
|
|
150
|
+
reader.u32(); // body length
|
|
151
|
+
const count = reader.u32();
|
|
152
|
+
const items = [];
|
|
153
|
+
for (let i = 0; i < count; i++)
|
|
154
|
+
items.push(decodeObject(reader));
|
|
155
|
+
return items;
|
|
156
|
+
}
|
|
157
|
+
case TYPE_DICTIONARY: {
|
|
158
|
+
// Entry keys are AlignedString (NUL-terminated UTF-8 padded to 4),
|
|
159
|
+
// values are XpcObjects. Don't confuse the key encoding with
|
|
160
|
+
// XpcString (length-prefixed) — they look similar but are not.
|
|
161
|
+
reader.u32(); // body length
|
|
162
|
+
const count = reader.u32();
|
|
163
|
+
const out = {};
|
|
164
|
+
for (let i = 0; i < count; i++) {
|
|
165
|
+
const start = reader.position();
|
|
166
|
+
const key = reader.readCString();
|
|
167
|
+
reader.skipPadding(reader.position() - start);
|
|
168
|
+
out[key] = decodeObject(reader);
|
|
169
|
+
}
|
|
170
|
+
return out;
|
|
171
|
+
}
|
|
172
|
+
default:
|
|
173
|
+
throw new Error(`Unknown XPC type tag 0x${type.toString(16)}`);
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const encodeObject = (writer, value) => {
|
|
177
|
+
if (value === null) {
|
|
178
|
+
writer.u32(TYPE_NULL);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (typeof value === 'boolean') {
|
|
182
|
+
writer.u32(TYPE_BOOL);
|
|
183
|
+
writer.u32(value ? 1 : 0);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (typeof value === 'bigint') {
|
|
187
|
+
writer.u32(value < 0n ? TYPE_INT64 : TYPE_UINT64);
|
|
188
|
+
if (value < 0n)
|
|
189
|
+
writer.i64(value);
|
|
190
|
+
else
|
|
191
|
+
writer.u64(value);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (typeof value === 'number') {
|
|
195
|
+
writer.u32(TYPE_DOUBLE);
|
|
196
|
+
writer.f64(value);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (typeof value === 'string') {
|
|
200
|
+
writer.u32(TYPE_STRING);
|
|
201
|
+
const utf8 = Buffer.from(value, 'utf8');
|
|
202
|
+
writer.u32(utf8.length + 1);
|
|
203
|
+
writer.bytes(utf8);
|
|
204
|
+
writer.bytes(Buffer.from([0]));
|
|
205
|
+
writer.pad();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (Buffer.isBuffer(value)) {
|
|
209
|
+
writer.u32(TYPE_DATA);
|
|
210
|
+
writer.u32(value.length);
|
|
211
|
+
writer.bytes(value);
|
|
212
|
+
writer.pad();
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (Array.isArray(value)) {
|
|
216
|
+
writer.u32(TYPE_ARRAY);
|
|
217
|
+
const body = new Writer();
|
|
218
|
+
body.u32(value.length);
|
|
219
|
+
for (const item of value)
|
|
220
|
+
encodeObject(body, item);
|
|
221
|
+
const bodyBuf = body.build();
|
|
222
|
+
writer.u32(bodyBuf.length);
|
|
223
|
+
writer.bytes(bodyBuf);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (typeof value === 'object') {
|
|
227
|
+
writer.u32(TYPE_DICTIONARY);
|
|
228
|
+
const entries = Object.entries(value);
|
|
229
|
+
const body = new Writer();
|
|
230
|
+
body.u32(entries.length);
|
|
231
|
+
for (const [key, val] of entries) {
|
|
232
|
+
const keyUtf8 = Buffer.from(key, 'utf8');
|
|
233
|
+
body.bytes(keyUtf8);
|
|
234
|
+
body.bytes(Buffer.from([0]));
|
|
235
|
+
const padding = pad4(keyUtf8.length + 1);
|
|
236
|
+
if (padding)
|
|
237
|
+
body.bytes(Buffer.alloc(padding));
|
|
238
|
+
encodeObject(body, val);
|
|
239
|
+
}
|
|
240
|
+
const bodyBuf = body.build();
|
|
241
|
+
writer.u32(bodyBuf.length);
|
|
242
|
+
writer.bytes(bodyBuf);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
throw new Error(`Cannot encode XPC value of type ${typeof value}`);
|
|
246
|
+
};
|
|
247
|
+
const encodeXpcObject = (value) => {
|
|
248
|
+
const writer = new Writer();
|
|
249
|
+
encodeObject(writer, value);
|
|
250
|
+
return writer.build();
|
|
251
|
+
};
|
|
252
|
+
const decodeXpcObject = (buf) => {
|
|
253
|
+
return decodeObject(new Reader(buf));
|
|
254
|
+
};
|
|
255
|
+
// XpcWrapper frames an XpcObject on the RemoteXPC wire. Layout
|
|
256
|
+
// (little-endian throughout):
|
|
257
|
+
//
|
|
258
|
+
// uint32 magic = 0x29B00B92
|
|
259
|
+
// uint32 flags
|
|
260
|
+
// uint64 messageLen on-wire value = inner_size - 8
|
|
261
|
+
// uint64 messageId
|
|
262
|
+
// if payload present:
|
|
263
|
+
// uint32 payloadMagic = 0x42133742
|
|
264
|
+
// uint32 protocolVersion = 5
|
|
265
|
+
// XpcObject
|
|
266
|
+
exports.XpcFlags = {
|
|
267
|
+
ALWAYS_SET: 0x00000001,
|
|
268
|
+
DATA_PRESENT: 0x00000100,
|
|
269
|
+
INIT_HANDSHAKE: 0x00400000,
|
|
270
|
+
PING: 0x00000002,
|
|
271
|
+
REPLY: 0x00020000,
|
|
272
|
+
WANTING_REPLY: 0x00010000,
|
|
273
|
+
};
|
|
274
|
+
const buildXpcWrapper = (flags, messageId, payload) => {
|
|
275
|
+
const writer = new Writer();
|
|
276
|
+
writer.u32(XPC_WRAPPER_MAGIC);
|
|
277
|
+
writer.u32(flags);
|
|
278
|
+
writer.bytes(Buffer.alloc(8)); // messageLen placeholder, patched below
|
|
279
|
+
const innerStart = writer.size();
|
|
280
|
+
writer.u64(messageId);
|
|
281
|
+
if (payload !== null) {
|
|
282
|
+
writer.u32(XPC_PAYLOAD_MAGIC);
|
|
283
|
+
writer.u32(XPC_PAYLOAD_VERSION);
|
|
284
|
+
writer.bytes(encodeXpcObject(payload));
|
|
285
|
+
}
|
|
286
|
+
const built = writer.build();
|
|
287
|
+
built.writeBigUInt64LE(BigInt(built.length - innerStart - 8), 8);
|
|
288
|
+
return built;
|
|
289
|
+
};
|
|
290
|
+
exports.buildXpcWrapper = buildXpcWrapper;
|
|
291
|
+
const parseXpcWrapper = (buf, offset = 0) => {
|
|
292
|
+
const reader = new Reader(buf.subarray(offset));
|
|
293
|
+
const magic = reader.u32();
|
|
294
|
+
if (magic !== XPC_WRAPPER_MAGIC) {
|
|
295
|
+
throw new Error(`Bad XpcWrapper magic 0x${magic.toString(16)} at offset ${offset}`);
|
|
296
|
+
}
|
|
297
|
+
const flags = reader.u32();
|
|
298
|
+
const innerLen = Number(reader.u64()) + 8;
|
|
299
|
+
const messageId = reader.u64();
|
|
300
|
+
const remaining = innerLen - 8;
|
|
301
|
+
let payload = null;
|
|
302
|
+
if (remaining >= 8) {
|
|
303
|
+
const payloadMagic = reader.u32();
|
|
304
|
+
if (payloadMagic !== XPC_PAYLOAD_MAGIC) {
|
|
305
|
+
throw new Error(`Bad payload magic 0x${payloadMagic.toString(16)}`);
|
|
306
|
+
}
|
|
307
|
+
reader.u32(); // protocolVersion
|
|
308
|
+
if (remaining > 8) {
|
|
309
|
+
payload = decodeXpcObject(Buffer.from(reader.bytes(remaining - 8)));
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
else if (remaining > 0) {
|
|
313
|
+
reader.bytes(remaining);
|
|
314
|
+
}
|
|
315
|
+
return { flags, messageId, payload, totalSize: 16 + innerLen };
|
|
316
|
+
};
|
|
317
|
+
exports.parseXpcWrapper = parseXpcWrapper;
|
|
318
|
+
//# sourceMappingURL=xpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xpc.js","sourceRoot":"","sources":["../../../../src/server/host/coredevice/xpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,19 @@ export interface IosSimulator {
|
|
|
6
6
|
state: string;
|
|
7
7
|
udid: string;
|
|
8
8
|
}
|
|
9
|
+
export interface IosRealDevice {
|
|
10
|
+
coreDeviceIdentifier: string;
|
|
11
|
+
name: string;
|
|
12
|
+
pairingState: string;
|
|
13
|
+
}
|
|
9
14
|
export interface AndroidDevice {
|
|
10
15
|
serial: string;
|
|
11
16
|
state: string;
|
|
12
17
|
}
|
|
18
|
+
export type DeviceKind = 'real-device' | 'simulator';
|
|
13
19
|
export interface ResolvedDevice {
|
|
14
20
|
displayName: string;
|
|
21
|
+
kind: DeviceKind;
|
|
15
22
|
nativeId: string;
|
|
16
23
|
platform: 'android' | 'ios';
|
|
17
24
|
bundleId?: string;
|
|
@@ -46,6 +53,7 @@ interface ResolveOptions {
|
|
|
46
53
|
}
|
|
47
54
|
export declare const clearDeviceCache: () => void;
|
|
48
55
|
export declare const listIosSimulators: (runner: ProcessRunner) => Promise<IosSimulator[]>;
|
|
56
|
+
export declare const listIosRealDevices: (runner: ProcessRunner) => Promise<IosRealDevice[]>;
|
|
49
57
|
export declare const listAndroidDevices: (runner: ProcessRunner) => Promise<AndroidDevice[]>;
|
|
50
58
|
export declare const resolveDevice: (ctx: HostContext, options: ResolveOptions, runner: ProcessRunner) => Promise<DeviceResolution>;
|
|
51
59
|
export declare const enrichDevicesWithClientStatus: (bridge: Bridge, runner: ProcessRunner) => Promise<EnrichedDeviceList>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviceResolver.d.ts","sourceRoot":"","sources":["../../../src/server/host/deviceResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deviceResolver.d.ts","sourceRoot":"","sources":["../../../src/server/host/deviceResolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,MAAM,EAAoB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAK3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,qBAAqB,EAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,GAAG,EAAE,cAAc,EAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAOnG,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,eAAO,MAAM,gBAAgB,QAAO,IAInC,CAAC;AAiBF,eAAO,MAAM,iBAAiB,WAAkB,aAAa,KAAG,OAAO,CAAC,YAAY,EAAE,CAyBrF,CAAC;AAKF,eAAO,MAAM,kBAAkB,WAAkB,aAAa,KAAG,OAAO,CAAC,aAAa,EAAE,CA2CvF,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAAkB,aAAa,KAAG,OAAO,CAAC,aAAa,EAAE,CAwBvF,CAAC;AA4WF,eAAO,MAAM,aAAa,QACnB,WAAW,WACP,cAAc,UACf,aAAa,KACpB,OAAO,CAAC,gBAAgB,CAuD1B,CAAC;AAEF,eAAO,MAAM,6BAA6B,WAChC,MAAM,UACN,aAAa,KACpB,OAAO,CAAC,kBAAkB,CAuH5B,CAAC"}
|
|
@@ -1,16 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.enrichDevicesWithClientStatus = exports.resolveDevice = exports.listAndroidDevices = exports.listIosSimulators = exports.clearDeviceCache = void 0;
|
|
3
|
+
exports.enrichDevicesWithClientStatus = exports.resolveDevice = exports.listAndroidDevices = exports.listIosRealDevices = exports.listIosSimulators = exports.clearDeviceCache = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const promises_1 = require("node:fs/promises");
|
|
7
|
+
const node_os_1 = require("node:os");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
4
9
|
const processRunner_1 = require("./processRunner");
|
|
5
10
|
const CACHE_TTL_MS = 5_000;
|
|
6
11
|
const LIST_TIMEOUT_MS = 5_000;
|
|
7
12
|
let iosCache = null;
|
|
13
|
+
let iosRealCache = null;
|
|
8
14
|
let androidCache = null;
|
|
9
15
|
const clearDeviceCache = () => {
|
|
10
16
|
iosCache = null;
|
|
17
|
+
iosRealCache = null;
|
|
11
18
|
androidCache = null;
|
|
12
19
|
};
|
|
13
20
|
exports.clearDeviceCache = clearDeviceCache;
|
|
21
|
+
const XCRUN_MISSING_ERROR = 'xcrun not found. iOS host tools require Xcode command line tools (macOS only).';
|
|
22
|
+
const ADB_MISSING_ERROR = 'adb not found. Android host tools require Android platform-tools on PATH.';
|
|
23
|
+
// Map a thrown error to a user-facing DeviceResolution error. Handles the
|
|
24
|
+
// common ProcessNotFoundError → "install the toolchain" message; everything
|
|
25
|
+
// else gets wrapped as a context-prefixed message.
|
|
26
|
+
const toDeviceError = (err, context, toolMissing) => {
|
|
27
|
+
if (err instanceof processRunner_1.ProcessNotFoundError) {
|
|
28
|
+
return { error: toolMissing, ok: false };
|
|
29
|
+
}
|
|
30
|
+
return { error: `${context}: ${err.message}`, ok: false };
|
|
31
|
+
};
|
|
14
32
|
const listIosSimulators = async (runner) => {
|
|
15
33
|
if (iosCache && Date.now() - iosCache.timestamp < CACHE_TTL_MS) {
|
|
16
34
|
return iosCache.result;
|
|
@@ -34,6 +52,45 @@ const listIosSimulators = async (runner) => {
|
|
|
34
52
|
return out;
|
|
35
53
|
};
|
|
36
54
|
exports.listIosSimulators = listIosSimulators;
|
|
55
|
+
// Paired physical iOS devices come from `xcrun devicectl` — simctl knows
|
|
56
|
+
// nothing about them. The JSON output of `list devices` is the only stable
|
|
57
|
+
// integration surface (its stdout has a human-readable header first).
|
|
58
|
+
const listIosRealDevices = async (runner) => {
|
|
59
|
+
if (iosRealCache && Date.now() - iosRealCache.timestamp < CACHE_TTL_MS) {
|
|
60
|
+
return iosRealCache.result;
|
|
61
|
+
}
|
|
62
|
+
const tmpPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `rnmcp-devicectl-${(0, node_crypto_1.randomUUID)()}.json`);
|
|
63
|
+
try {
|
|
64
|
+
const proc = await runner('xcrun', ['devicectl', 'list', 'devices', '--json-output', tmpPath], {
|
|
65
|
+
timeoutMs: LIST_TIMEOUT_MS,
|
|
66
|
+
});
|
|
67
|
+
if (proc.exitCode !== 0) {
|
|
68
|
+
throw new Error(`xcrun devicectl list failed (exit ${proc.exitCode}): ${proc.stderr.toString('utf8').trim().slice(0, 500)}`);
|
|
69
|
+
}
|
|
70
|
+
const raw = (0, node_fs_1.readFileSync)(tmpPath, 'utf8');
|
|
71
|
+
const parsed = JSON.parse(raw);
|
|
72
|
+
const devices = parsed.result?.devices ?? [];
|
|
73
|
+
const out = [];
|
|
74
|
+
for (const d of devices) {
|
|
75
|
+
if (d.hardwareProperties?.platform !== 'iOS')
|
|
76
|
+
continue;
|
|
77
|
+
const id = d.identifier;
|
|
78
|
+
const name = d.deviceProperties?.name;
|
|
79
|
+
const pairingState = d.connectionProperties?.pairingState;
|
|
80
|
+
if (typeof id === 'string' && typeof name === 'string' && typeof pairingState === 'string') {
|
|
81
|
+
out.push({ coreDeviceIdentifier: id, name, pairingState });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
iosRealCache = { result: out, timestamp: Date.now() };
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
(0, promises_1.rm)(tmpPath, { force: true }).catch(() => {
|
|
89
|
+
// best-effort
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.listIosRealDevices = listIosRealDevices;
|
|
37
94
|
const listAndroidDevices = async (runner) => {
|
|
38
95
|
if (androidCache && Date.now() - androidCache.timestamp < CACHE_TTL_MS) {
|
|
39
96
|
return androidCache.result;
|
|
@@ -92,7 +149,60 @@ const matchAndroidDeviceByClient = (devices) => {
|
|
|
92
149
|
});
|
|
93
150
|
return online.length === 1 ? online[0] : null;
|
|
94
151
|
};
|
|
152
|
+
const matchIosRealDeviceByClient = (devices, client) => {
|
|
153
|
+
const paired = devices.filter((d) => {
|
|
154
|
+
return d.pairingState === 'paired';
|
|
155
|
+
});
|
|
156
|
+
if (paired.length === 0)
|
|
157
|
+
return null;
|
|
158
|
+
if (!client.label) {
|
|
159
|
+
return paired.length === 1 ? paired[0] : null;
|
|
160
|
+
}
|
|
161
|
+
const label = client.label;
|
|
162
|
+
const substring = paired.filter((d) => {
|
|
163
|
+
return d.name.includes(label) || label.includes(d.name);
|
|
164
|
+
});
|
|
165
|
+
if (substring.length === 1)
|
|
166
|
+
return substring[0];
|
|
167
|
+
return paired.length === 1 ? paired[0] : null;
|
|
168
|
+
};
|
|
169
|
+
const resolveIosRealClient = async (client, runner) => {
|
|
170
|
+
try {
|
|
171
|
+
const devices = await (0, exports.listIosRealDevices)(runner);
|
|
172
|
+
const matched = matchIosRealDeviceByClient(devices, client);
|
|
173
|
+
if (matched) {
|
|
174
|
+
return {
|
|
175
|
+
device: {
|
|
176
|
+
bundleId: client.bundleId,
|
|
177
|
+
displayName: matched.name,
|
|
178
|
+
kind: 'real-device',
|
|
179
|
+
nativeId: matched.coreDeviceIdentifier,
|
|
180
|
+
platform: 'ios',
|
|
181
|
+
},
|
|
182
|
+
ok: true,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const pairedList = devices
|
|
186
|
+
.filter((d) => {
|
|
187
|
+
return d.pairingState === 'paired';
|
|
188
|
+
})
|
|
189
|
+
.map((d) => {
|
|
190
|
+
return `${d.name} (${d.coreDeviceIdentifier})`;
|
|
191
|
+
})
|
|
192
|
+
.join(', ');
|
|
193
|
+
return {
|
|
194
|
+
error: `Cannot resolve iOS client '${client.id}' to a paired real device. Label hint: "${client.label ?? '(none)'}". Paired devices: ${pairedList || '(none)'}.`,
|
|
195
|
+
ok: false,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
return toDeviceError(err, 'Failed to list iOS real devices', XCRUN_MISSING_ERROR);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
95
202
|
const resolveIosClient = async (client, runner) => {
|
|
203
|
+
if (client.isSimulator === false) {
|
|
204
|
+
return resolveIosRealClient(client, runner);
|
|
205
|
+
}
|
|
96
206
|
try {
|
|
97
207
|
const sims = await (0, exports.listIosSimulators)(runner);
|
|
98
208
|
const matched = matchIosSimByClient(sims, client);
|
|
@@ -101,6 +211,7 @@ const resolveIosClient = async (client, runner) => {
|
|
|
101
211
|
device: {
|
|
102
212
|
bundleId: client.bundleId,
|
|
103
213
|
displayName: matched.name,
|
|
214
|
+
kind: 'simulator',
|
|
104
215
|
nativeId: matched.udid,
|
|
105
216
|
platform: 'ios',
|
|
106
217
|
},
|
|
@@ -121,16 +232,7 @@ const resolveIosClient = async (client, runner) => {
|
|
|
121
232
|
};
|
|
122
233
|
}
|
|
123
234
|
catch (err) {
|
|
124
|
-
|
|
125
|
-
return {
|
|
126
|
-
error: 'xcrun not found. iOS host tools require Xcode command line tools (macOS only).',
|
|
127
|
-
ok: false,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
return {
|
|
131
|
-
error: `Failed to list iOS simulators: ${err.message}`,
|
|
132
|
-
ok: false,
|
|
133
|
-
};
|
|
235
|
+
return toDeviceError(err, 'Failed to list iOS simulators', XCRUN_MISSING_ERROR);
|
|
134
236
|
}
|
|
135
237
|
};
|
|
136
238
|
const resolveAndroidClient = async (client, runner) => {
|
|
@@ -142,6 +244,7 @@ const resolveAndroidClient = async (client, runner) => {
|
|
|
142
244
|
device: {
|
|
143
245
|
bundleId: client.bundleId,
|
|
144
246
|
displayName: matched.serial,
|
|
247
|
+
kind: 'real-device',
|
|
145
248
|
nativeId: matched.serial,
|
|
146
249
|
platform: 'android',
|
|
147
250
|
},
|
|
@@ -162,16 +265,7 @@ const resolveAndroidClient = async (client, runner) => {
|
|
|
162
265
|
};
|
|
163
266
|
}
|
|
164
267
|
catch (err) {
|
|
165
|
-
|
|
166
|
-
return {
|
|
167
|
-
error: 'adb not found. Android host tools require Android platform-tools on PATH.',
|
|
168
|
-
ok: false,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
return {
|
|
172
|
-
error: `Failed to list Android devices: ${err.message}`,
|
|
173
|
-
ok: false,
|
|
174
|
-
};
|
|
268
|
+
return toDeviceError(err, 'Failed to list Android devices', ADB_MISSING_ERROR);
|
|
175
269
|
}
|
|
176
270
|
};
|
|
177
271
|
const resolveClientToDevice = async (client, runner) => {
|
|
@@ -201,7 +295,12 @@ const scanIosDevices = async (runner) => {
|
|
|
201
295
|
if (booted.length === 1) {
|
|
202
296
|
const only = booted[0];
|
|
203
297
|
return {
|
|
204
|
-
device: {
|
|
298
|
+
device: {
|
|
299
|
+
displayName: only.name,
|
|
300
|
+
kind: 'simulator',
|
|
301
|
+
nativeId: only.udid,
|
|
302
|
+
platform: 'ios',
|
|
303
|
+
},
|
|
205
304
|
ok: true,
|
|
206
305
|
};
|
|
207
306
|
}
|
|
@@ -216,16 +315,7 @@ const scanIosDevices = async (runner) => {
|
|
|
216
315
|
};
|
|
217
316
|
}
|
|
218
317
|
catch (err) {
|
|
219
|
-
|
|
220
|
-
return {
|
|
221
|
-
error: 'xcrun not found. iOS host tools require Xcode command line tools (macOS only).',
|
|
222
|
-
ok: false,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
return {
|
|
226
|
-
error: `Failed to list iOS simulators: ${err.message}`,
|
|
227
|
-
ok: false,
|
|
228
|
-
};
|
|
318
|
+
return toDeviceError(err, 'Failed to list iOS simulators', XCRUN_MISSING_ERROR);
|
|
229
319
|
}
|
|
230
320
|
};
|
|
231
321
|
const scanAndroidDevices = async (runner) => {
|
|
@@ -245,6 +335,7 @@ const scanAndroidDevices = async (runner) => {
|
|
|
245
335
|
return {
|
|
246
336
|
device: {
|
|
247
337
|
displayName: only.serial,
|
|
338
|
+
kind: 'real-device',
|
|
248
339
|
nativeId: only.serial,
|
|
249
340
|
platform: 'android',
|
|
250
341
|
},
|
|
@@ -262,16 +353,7 @@ const scanAndroidDevices = async (runner) => {
|
|
|
262
353
|
};
|
|
263
354
|
}
|
|
264
355
|
catch (err) {
|
|
265
|
-
|
|
266
|
-
return {
|
|
267
|
-
error: 'adb not found. Android host tools require Android platform-tools on PATH.',
|
|
268
|
-
ok: false,
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
return {
|
|
272
|
-
error: `Failed to list Android devices: ${err.message}`,
|
|
273
|
-
ok: false,
|
|
274
|
-
};
|
|
356
|
+
return toDeviceError(err, 'Failed to list Android devices', ADB_MISSING_ERROR);
|
|
275
357
|
}
|
|
276
358
|
};
|
|
277
359
|
const resolveIosByUdid = async (udid, runner) => {
|
|
@@ -300,6 +382,7 @@ const resolveIosByUdid = async (udid, runner) => {
|
|
|
300
382
|
return {
|
|
301
383
|
device: {
|
|
302
384
|
displayName: match.name,
|
|
385
|
+
kind: 'simulator',
|
|
303
386
|
nativeId: match.udid,
|
|
304
387
|
platform: 'ios',
|
|
305
388
|
},
|
|
@@ -307,16 +390,7 @@ const resolveIosByUdid = async (udid, runner) => {
|
|
|
307
390
|
};
|
|
308
391
|
}
|
|
309
392
|
catch (err) {
|
|
310
|
-
|
|
311
|
-
return {
|
|
312
|
-
error: 'xcrun not found. iOS host tools require Xcode command line tools (macOS only).',
|
|
313
|
-
ok: false,
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
return {
|
|
317
|
-
error: `Failed to list iOS simulators: ${err.message}`,
|
|
318
|
-
ok: false,
|
|
319
|
-
};
|
|
393
|
+
return toDeviceError(err, 'Failed to list iOS simulators', XCRUN_MISSING_ERROR);
|
|
320
394
|
}
|
|
321
395
|
};
|
|
322
396
|
const resolveAndroidBySerial = async (serial, runner) => {
|
|
@@ -345,6 +419,7 @@ const resolveAndroidBySerial = async (serial, runner) => {
|
|
|
345
419
|
return {
|
|
346
420
|
device: {
|
|
347
421
|
displayName: match.serial,
|
|
422
|
+
kind: 'real-device',
|
|
348
423
|
nativeId: match.serial,
|
|
349
424
|
platform: 'android',
|
|
350
425
|
},
|
|
@@ -352,16 +427,7 @@ const resolveAndroidBySerial = async (serial, runner) => {
|
|
|
352
427
|
};
|
|
353
428
|
}
|
|
354
429
|
catch (err) {
|
|
355
|
-
|
|
356
|
-
return {
|
|
357
|
-
error: 'adb not found. Android host tools require Android platform-tools on PATH.',
|
|
358
|
-
ok: false,
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
return {
|
|
362
|
-
error: `Failed to list Android devices: ${err.message}`,
|
|
363
|
-
ok: false,
|
|
364
|
-
};
|
|
430
|
+
return toDeviceError(err, 'Failed to list Android devices', ADB_MISSING_ERROR);
|
|
365
431
|
}
|
|
366
432
|
};
|
|
367
433
|
const scanForDevice = async (platform, runner) => {
|