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.
Files changed (121) hide show
  1. package/README.md +8 -8
  2. package/dist/babel/testIdPlugin.d.ts.map +1 -1
  3. package/dist/babel/testIdPlugin.js +82 -25
  4. package/dist/babel/testIdPlugin.js.map +1 -1
  5. package/dist/bin/ios-hid +0 -0
  6. package/dist/client/core/McpClient.d.ts.map +1 -1
  7. package/dist/client/core/McpClient.js +16 -2
  8. package/dist/client/core/McpClient.js.map +1 -1
  9. package/dist/modules/alert/alert.d.ts.map +1 -1
  10. package/dist/modules/alert/alert.js +18 -3
  11. package/dist/modules/alert/alert.js.map +1 -1
  12. package/dist/modules/console/console.d.ts.map +1 -1
  13. package/dist/modules/console/console.js +38 -12
  14. package/dist/modules/console/console.js.map +1 -1
  15. package/dist/modules/console/types.d.ts +1 -1
  16. package/dist/modules/console/types.d.ts.map +1 -1
  17. package/dist/modules/device/device.d.ts.map +1 -1
  18. package/dist/modules/device/device.js +17 -4
  19. package/dist/modules/device/device.js.map +1 -1
  20. package/dist/modules/errors/errors.d.ts.map +1 -1
  21. package/dist/modules/errors/errors.js +3 -1
  22. package/dist/modules/errors/errors.js.map +1 -1
  23. package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
  24. package/dist/modules/fiberTree/fiberTree.js +44 -7
  25. package/dist/modules/fiberTree/fiberTree.js.map +1 -1
  26. package/dist/modules/fiberTree/finder.d.ts +2 -0
  27. package/dist/modules/fiberTree/finder.d.ts.map +1 -1
  28. package/dist/modules/fiberTree/finder.js +3 -1
  29. package/dist/modules/fiberTree/finder.js.map +1 -1
  30. package/dist/modules/fiberTree/hooks.d.ts +17 -0
  31. package/dist/modules/fiberTree/hooks.d.ts.map +1 -1
  32. package/dist/modules/fiberTree/hooks.js +22 -4
  33. package/dist/modules/fiberTree/hooks.js.map +1 -1
  34. package/dist/modules/fiberTree/utils.d.ts.map +1 -1
  35. package/dist/modules/fiberTree/utils.js +29 -4
  36. package/dist/modules/fiberTree/utils.js.map +1 -1
  37. package/dist/modules/i18next/i18next.d.ts.map +1 -1
  38. package/dist/modules/i18next/i18next.js +27 -6
  39. package/dist/modules/i18next/i18next.js.map +1 -1
  40. package/dist/modules/logBox/logBox.d.ts.map +1 -1
  41. package/dist/modules/logBox/logBox.js +8 -4
  42. package/dist/modules/logBox/logBox.js.map +1 -1
  43. package/dist/modules/navigation/navigation.d.ts.map +1 -1
  44. package/dist/modules/navigation/navigation.js +19 -4
  45. package/dist/modules/navigation/navigation.js.map +1 -1
  46. package/dist/modules/network/network.js +1 -1
  47. package/dist/modules/network/network.js.map +1 -1
  48. package/dist/modules/reactQuery/reactQuery.d.ts.map +1 -1
  49. package/dist/modules/reactQuery/reactQuery.js +2 -1
  50. package/dist/modules/reactQuery/reactQuery.js.map +1 -1
  51. package/dist/modules/storage/storage.d.ts.map +1 -1
  52. package/dist/modules/storage/storage.js +23 -8
  53. package/dist/modules/storage/storage.js.map +1 -1
  54. package/dist/server/bridge.d.ts +3 -0
  55. package/dist/server/bridge.d.ts.map +1 -1
  56. package/dist/server/bridge.js +62 -5
  57. package/dist/server/bridge.js.map +1 -1
  58. package/dist/server/host/coredevice/dtx.d.ts +79 -0
  59. package/dist/server/host/coredevice/dtx.d.ts.map +1 -0
  60. package/dist/server/host/coredevice/dtx.js +453 -0
  61. package/dist/server/host/coredevice/dtx.js.map +1 -0
  62. package/dist/server/host/coredevice/nska.d.ts +6 -0
  63. package/dist/server/host/coredevice/nska.d.ts.map +1 -0
  64. package/dist/server/host/coredevice/nska.js +277 -0
  65. package/dist/server/host/coredevice/nska.js.map +1 -0
  66. package/dist/server/host/coredevice/rsd.d.ts +20 -0
  67. package/dist/server/host/coredevice/rsd.d.ts.map +1 -0
  68. package/dist/server/host/coredevice/rsd.js +244 -0
  69. package/dist/server/host/coredevice/rsd.js.map +1 -0
  70. package/dist/server/host/coredevice/screenshot.d.ts +11 -0
  71. package/dist/server/host/coredevice/screenshot.d.ts.map +1 -0
  72. package/dist/server/host/coredevice/screenshot.js +84 -0
  73. package/dist/server/host/coredevice/screenshot.js.map +1 -0
  74. package/dist/server/host/coredevice/tunnel.d.ts +29 -0
  75. package/dist/server/host/coredevice/tunnel.d.ts.map +1 -0
  76. package/dist/server/host/coredevice/tunnel.js +222 -0
  77. package/dist/server/host/coredevice/tunnel.js.map +1 -0
  78. package/dist/server/host/coredevice/xpc.d.ts +21 -0
  79. package/dist/server/host/coredevice/xpc.d.ts.map +1 -0
  80. package/dist/server/host/coredevice/xpc.js +318 -0
  81. package/dist/server/host/coredevice/xpc.js.map +1 -0
  82. package/dist/server/host/deviceResolver.d.ts +8 -0
  83. package/dist/server/host/deviceResolver.d.ts.map +1 -1
  84. package/dist/server/host/deviceResolver.js +128 -62
  85. package/dist/server/host/deviceResolver.js.map +1 -1
  86. package/dist/server/host/tools/capture.d.ts.map +1 -1
  87. package/dist/server/host/tools/capture.js +74 -18
  88. package/dist/server/host/tools/capture.js.map +1 -1
  89. package/dist/server/host/tools/devices.d.ts.map +1 -1
  90. package/dist/server/host/tools/devices.js +25 -4
  91. package/dist/server/host/tools/devices.js.map +1 -1
  92. package/dist/server/host/tools/input.d.ts.map +1 -1
  93. package/dist/server/host/tools/input.js +45 -20
  94. package/dist/server/host/tools/input.js.map +1 -1
  95. package/dist/server/host/tools/tapFiber.d.ts.map +1 -1
  96. package/dist/server/host/tools/tapFiber.js +2 -0
  97. package/dist/server/host/tools/tapFiber.js.map +1 -1
  98. package/dist/server/mcpServer.d.ts.map +1 -1
  99. package/dist/server/mcpServer.js +5 -4
  100. package/dist/server/mcpServer.js.map +1 -1
  101. package/dist/server/metro/tools/events.d.ts.map +1 -1
  102. package/dist/server/metro/tools/events.js +1 -0
  103. package/dist/server/metro/tools/events.js.map +1 -1
  104. package/dist/server/metro/tools/openInEditor.d.ts.map +1 -1
  105. package/dist/server/metro/tools/openInEditor.js +4 -1
  106. package/dist/server/metro/tools/openInEditor.js.map +1 -1
  107. package/dist/server/metro/tools/symbolicate.d.ts.map +1 -1
  108. package/dist/server/metro/tools/symbolicate.js +41 -11
  109. package/dist/server/metro/tools/symbolicate.js.map +1 -1
  110. package/dist/shared/projection/projectValue.d.ts +12 -1
  111. package/dist/shared/projection/projectValue.d.ts.map +1 -1
  112. package/dist/shared/projection/projectValue.js +42 -12
  113. package/dist/shared/projection/projectValue.js.map +1 -1
  114. package/dist/shared/projection/resolvePath.d.ts +14 -2
  115. package/dist/shared/projection/resolvePath.d.ts.map +1 -1
  116. package/dist/shared/projection/resolvePath.js +25 -3
  117. package/dist/shared/projection/resolvePath.js.map +1 -1
  118. package/dist/shared/protocol.d.ts +2 -1
  119. package/dist/shared/protocol.d.ts.map +1 -1
  120. package/dist/shared/protocol.js +1 -1
  121. package/package.json +3 -1
@@ -0,0 +1,453 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DtxConnection = exports.buildDtxAux = exports.dtxInt32 = void 0;
4
+ const node_net_1 = require("node:net");
5
+ const nska_1 = require("./nska");
6
+ // DTX is Apple's binary RPC over TCP, used by the Instruments stack on the
7
+ // device. We speak it on top of a connection opened to the
8
+ // `com.apple.instruments.dtservicehub` port returned by RSD.
9
+ //
10
+ // Wire format is documented in PROTOCOL.md. In short: each message is one
11
+ // or more fragments. A fragment is a 32-byte header followed by an
12
+ // optional body. The first fragment of a multi-fragment message carries
13
+ // the TOTAL assembled body size in its `bodySize` header field and no
14
+ // body bytes; subsequent fragments carry their own chunk of the body.
15
+ // The first body chunk begins with a 16-byte per-message header whose
16
+ // `aux_size` and `total_size` describe the NSKeyedArchiver-encoded
17
+ // argument and payload sections.
18
+ const DTX_FRAGMENT_MAGIC = 0x1f3d5b79;
19
+ const DTX_FRAGMENT_HEADER_SIZE = 32;
20
+ const DTX_MESSAGE_HEADER_SIZE = 16;
21
+ const DTX_MAX_FRAGMENT_BODY = 64 * 1024;
22
+ const DTX_FLAG_EXPECTS_REPLY = 1 << 0;
23
+ var DtxMessageType;
24
+ (function (DtxMessageType) {
25
+ DtxMessageType[DtxMessageType["Ok"] = 0] = "Ok";
26
+ DtxMessageType[DtxMessageType["Data"] = 1] = "Data";
27
+ DtxMessageType[DtxMessageType["Dispatch"] = 2] = "Dispatch";
28
+ DtxMessageType[DtxMessageType["Object"] = 3] = "Object";
29
+ DtxMessageType[DtxMessageType["Error"] = 4] = "Error";
30
+ })(DtxMessageType || (DtxMessageType = {}));
31
+ const DTX_MESSAGE_TYPE_MAX = DtxMessageType.Error;
32
+ const writeFragmentHeader = (h) => {
33
+ const buf = Buffer.alloc(DTX_FRAGMENT_HEADER_SIZE);
34
+ buf.writeUInt32LE(DTX_FRAGMENT_MAGIC, 0);
35
+ buf.writeUInt32LE(DTX_FRAGMENT_HEADER_SIZE, 4);
36
+ buf.writeUInt16LE(h.fragmentIndex, 8);
37
+ buf.writeUInt16LE(h.fragmentCount, 10);
38
+ buf.writeUInt32LE(h.bodySize, 12);
39
+ buf.writeUInt32LE(h.identifier, 16);
40
+ buf.writeUInt32LE(h.conversationIndex, 20);
41
+ buf.writeInt32LE(h.channelCode, 24);
42
+ buf.writeUInt32LE(h.flags, 28);
43
+ return buf;
44
+ };
45
+ const parseFragmentHeader = (buf, offset = 0) => {
46
+ const magic = buf.readUInt32LE(offset);
47
+ if (magic !== DTX_FRAGMENT_MAGIC) {
48
+ throw new Error(`Bad DTX fragment magic 0x${magic.toString(16)} at offset ${offset}`);
49
+ }
50
+ const headerSize = buf.readUInt32LE(offset + 4);
51
+ if (headerSize !== DTX_FRAGMENT_HEADER_SIZE) {
52
+ throw new Error(`Unexpected DTX fragment header size ${headerSize}`);
53
+ }
54
+ return {
55
+ bodySize: buf.readUInt32LE(offset + 12),
56
+ channelCode: buf.readInt32LE(offset + 24),
57
+ conversationIndex: buf.readUInt32LE(offset + 20),
58
+ flags: buf.readUInt32LE(offset + 28),
59
+ fragmentCount: buf.readUInt16LE(offset + 10),
60
+ fragmentIndex: buf.readUInt16LE(offset + 8),
61
+ identifier: buf.readUInt32LE(offset + 16),
62
+ };
63
+ };
64
+ const writeMessageHeader = (h) => {
65
+ const buf = Buffer.alloc(DTX_MESSAGE_HEADER_SIZE);
66
+ buf.writeUInt8(h.msgType, 0);
67
+ // bytes 1..3 reserved
68
+ buf.writeUInt32LE(h.auxSize, 4);
69
+ buf.writeUInt32LE(h.totalSize, 8);
70
+ buf.writeUInt32LE(h.flags, 12);
71
+ return buf;
72
+ };
73
+ const parseMessageHeader = (buf) => {
74
+ const rawMsgType = buf.readUInt8(0);
75
+ if (rawMsgType > DTX_MESSAGE_TYPE_MAX) {
76
+ throw new Error(`Unknown DTX msgType ${rawMsgType}`);
77
+ }
78
+ return {
79
+ auxSize: buf.readUInt32LE(4),
80
+ flags: buf.readUInt32LE(12),
81
+ msgType: rawMsgType,
82
+ totalSize: buf.readUInt32LE(8),
83
+ };
84
+ };
85
+ const buildDtxMessage = (msg) => {
86
+ const messageHeader = writeMessageHeader({
87
+ auxSize: msg.aux.length,
88
+ flags: 0,
89
+ msgType: msg.msgType,
90
+ totalSize: msg.aux.length + msg.payload.length,
91
+ });
92
+ const body = Buffer.concat([messageHeader, msg.aux, msg.payload]);
93
+ if (body.length <= DTX_MAX_FRAGMENT_BODY) {
94
+ return Buffer.concat([
95
+ writeFragmentHeader({
96
+ bodySize: body.length,
97
+ channelCode: msg.channelCode,
98
+ conversationIndex: msg.conversationIndex,
99
+ flags: msg.flags,
100
+ fragmentCount: 1,
101
+ fragmentIndex: 0,
102
+ identifier: msg.identifier,
103
+ }),
104
+ body,
105
+ ]);
106
+ }
107
+ const bodyChunks = [];
108
+ for (let off = 0; off < body.length; off += DTX_MAX_FRAGMENT_BODY) {
109
+ bodyChunks.push(body.subarray(off, Math.min(off + DTX_MAX_FRAGMENT_BODY, body.length)));
110
+ }
111
+ const fragmentCount = bodyChunks.length + 1;
112
+ const fragments = [
113
+ // Announce fragment: bodySize = TOTAL message size, no body bytes on the wire.
114
+ writeFragmentHeader({
115
+ bodySize: body.length,
116
+ channelCode: msg.channelCode,
117
+ conversationIndex: msg.conversationIndex,
118
+ flags: msg.flags,
119
+ fragmentCount,
120
+ fragmentIndex: 0,
121
+ identifier: msg.identifier,
122
+ }),
123
+ ];
124
+ for (let i = 0; i < bodyChunks.length; i++) {
125
+ fragments.push(writeFragmentHeader({
126
+ bodySize: bodyChunks[i].length,
127
+ channelCode: msg.channelCode,
128
+ conversationIndex: msg.conversationIndex,
129
+ flags: msg.flags,
130
+ fragmentCount,
131
+ fragmentIndex: i + 1,
132
+ identifier: msg.identifier,
133
+ }), bodyChunks[i]);
134
+ }
135
+ return Buffer.concat(fragments);
136
+ };
137
+ // Stream parser: push raw socket bytes in, pull reassembled `DtxMessage`s
138
+ // out. Multi-fragment messages are buffered per-identifier until the
139
+ // last body fragment lands.
140
+ class DtxReader {
141
+ buffer = Buffer.alloc(0);
142
+ pending = new Map();
143
+ push(chunk) {
144
+ this.buffer = this.buffer.length === 0 ? chunk : Buffer.concat([this.buffer, chunk]);
145
+ }
146
+ next() {
147
+ while (this.buffer.length >= DTX_FRAGMENT_HEADER_SIZE) {
148
+ const header = parseFragmentHeader(this.buffer);
149
+ const isAnnounce = header.fragmentCount > 1 && header.fragmentIndex === 0;
150
+ const onWireBodySize = isAnnounce ? 0 : header.bodySize;
151
+ const totalLength = DTX_FRAGMENT_HEADER_SIZE + onWireBodySize;
152
+ if (this.buffer.length < totalLength)
153
+ return null;
154
+ const body = isAnnounce
155
+ ? Buffer.alloc(0)
156
+ : this.buffer.subarray(DTX_FRAGMENT_HEADER_SIZE, totalLength);
157
+ this.buffer = this.buffer.subarray(totalLength);
158
+ if (header.fragmentCount === 1) {
159
+ return this.assemble([body], header);
160
+ }
161
+ if (isAnnounce) {
162
+ this.pending.set(header.identifier, { fragments: [], header });
163
+ continue;
164
+ }
165
+ const slot = this.pending.get(header.identifier);
166
+ if (!slot) {
167
+ // No announce was registered — treat as a one-off so a single
168
+ // decode hiccup doesn't bring the connection down.
169
+ return this.assemble([body], header);
170
+ }
171
+ slot.fragments.push(body);
172
+ if (slot.fragments.length === slot.header.fragmentCount - 1) {
173
+ this.pending.delete(header.identifier);
174
+ return this.assemble(slot.fragments, slot.header);
175
+ }
176
+ }
177
+ return null;
178
+ }
179
+ assemble(bodyChunks, header) {
180
+ const body = bodyChunks.length === 1 ? bodyChunks[0] : Buffer.concat(bodyChunks);
181
+ if (body.length < DTX_MESSAGE_HEADER_SIZE) {
182
+ throw new Error(`DTX message body shorter than header (${body.length} bytes)`);
183
+ }
184
+ const msgHeader = parseMessageHeader(body);
185
+ if (msgHeader.totalSize > body.length - DTX_MESSAGE_HEADER_SIZE) {
186
+ throw new Error(`DTX message totalSize ${msgHeader.totalSize} exceeds body length ${body.length - DTX_MESSAGE_HEADER_SIZE}`);
187
+ }
188
+ const aux = body.subarray(DTX_MESSAGE_HEADER_SIZE, DTX_MESSAGE_HEADER_SIZE + msgHeader.auxSize);
189
+ const payload = body.subarray(DTX_MESSAGE_HEADER_SIZE + msgHeader.auxSize, DTX_MESSAGE_HEADER_SIZE + msgHeader.totalSize);
190
+ return {
191
+ aux,
192
+ channelCode: header.channelCode,
193
+ conversationIndex: header.conversationIndex,
194
+ flags: header.flags,
195
+ identifier: header.identifier,
196
+ msgType: msgHeader.msgType,
197
+ payload,
198
+ };
199
+ }
200
+ }
201
+ // DTX aux dictionary — a typed-primitive list that carries a method's
202
+ // positional arguments. Wire layout:
203
+ //
204
+ // uint32 type_and_flags = 0x1F0
205
+ // uint32 reserved = 0
206
+ // uint64 body_length bytes following this header
207
+ // <body>
208
+ // For each positional arg:
209
+ // <Null primitive> (key — positional convention)
210
+ // <value primitive> (one of the tagged primitives below)
211
+ //
212
+ // Primitive tags (uint32):
213
+ // 0x0A Null (tag only)
214
+ // 0x01 String (uint32 length + utf-8 bytes)
215
+ // 0x02 Buffer (uint32 length + raw bytes; usually an NSKA blob)
216
+ // 0x03 Int32 (uint32 value)
217
+ // 0x06 Int64 (uint64 value)
218
+ // 0x09 Double (float64 LE)
219
+ //
220
+ // A plain JS value handed to `buildDtxAux` defaults to an NSKA-encoded
221
+ // Buffer primitive — that matches Apple's "every object goes through
222
+ // NSKeyedArchiver" convention. Use `dtxInt32` (or future helpers) when
223
+ // the wire type matters; channel codes for instance must be Int32, not
224
+ // NSKA buffers.
225
+ const DTX_AUX_DICT_MAGIC = 0x000001f0;
226
+ const writePrimitive = (chunks, p) => {
227
+ switch (p.kind) {
228
+ case 'null': {
229
+ const h = Buffer.alloc(4);
230
+ h.writeUInt32LE(0x0a, 0);
231
+ chunks.push(h);
232
+ return;
233
+ }
234
+ case 'string': {
235
+ const utf8 = Buffer.from(p.value, 'utf8');
236
+ const h = Buffer.alloc(8);
237
+ h.writeUInt32LE(0x01, 0);
238
+ h.writeUInt32LE(utf8.length, 4);
239
+ chunks.push(h, utf8);
240
+ return;
241
+ }
242
+ case 'buffer': {
243
+ const h = Buffer.alloc(8);
244
+ h.writeUInt32LE(0x02, 0);
245
+ h.writeUInt32LE(p.value.length, 4);
246
+ chunks.push(h, p.value);
247
+ return;
248
+ }
249
+ case 'int32': {
250
+ const buf = Buffer.alloc(8);
251
+ buf.writeUInt32LE(0x03, 0);
252
+ buf.writeInt32LE(p.value, 4);
253
+ chunks.push(buf);
254
+ return;
255
+ }
256
+ case 'int64': {
257
+ const buf = Buffer.alloc(12);
258
+ buf.writeUInt32LE(0x06, 0);
259
+ buf.writeBigInt64LE(p.value, 4);
260
+ chunks.push(buf);
261
+ return;
262
+ }
263
+ case 'double': {
264
+ const buf = Buffer.alloc(12);
265
+ buf.writeUInt32LE(0x09, 0);
266
+ buf.writeDoubleLE(p.value, 4);
267
+ chunks.push(buf);
268
+ return;
269
+ }
270
+ }
271
+ };
272
+ const dtxInt32 = (value) => {
273
+ return { kind: 'int32', value };
274
+ };
275
+ exports.dtxInt32 = dtxInt32;
276
+ const argToPrimitive = (arg) => {
277
+ if (arg &&
278
+ typeof arg === 'object' &&
279
+ !Buffer.isBuffer(arg) &&
280
+ !Array.isArray(arg) &&
281
+ 'kind' in arg &&
282
+ typeof arg.kind === 'string') {
283
+ return arg;
284
+ }
285
+ return { kind: 'buffer', value: (0, nska_1.encodeNska)(arg) };
286
+ };
287
+ const buildDtxAux = (args) => {
288
+ if (args.length === 0)
289
+ return Buffer.alloc(0);
290
+ const bodyChunks = [];
291
+ for (const arg of args) {
292
+ writePrimitive(bodyChunks, { kind: 'null' });
293
+ writePrimitive(bodyChunks, argToPrimitive(arg));
294
+ }
295
+ const body = Buffer.concat(bodyChunks);
296
+ const header = Buffer.alloc(16);
297
+ header.writeUInt32LE(DTX_AUX_DICT_MAGIC, 0);
298
+ header.writeUInt32LE(0, 4);
299
+ header.writeBigUInt64LE(BigInt(body.length), 8);
300
+ return Buffer.concat([header, body]);
301
+ };
302
+ exports.buildDtxAux = buildDtxAux;
303
+ const DEFAULT_INVOKE_TIMEOUT_MS = 15_000;
304
+ class DtxConnectionError extends Error {
305
+ constructor(message) {
306
+ super(message);
307
+ this.name = 'DtxConnectionError';
308
+ }
309
+ }
310
+ class DtxConnection {
311
+ socket;
312
+ reader = new DtxReader();
313
+ pendingReplies = new Map();
314
+ closed = false;
315
+ socketError = null;
316
+ constructor(socket) {
317
+ this.socket = socket;
318
+ this.socket.on('data', (chunk) => {
319
+ this.handleChunk(chunk);
320
+ });
321
+ this.socket.on('error', (err) => {
322
+ this.socketError = err;
323
+ this.failAllPending(err);
324
+ });
325
+ this.socket.on('close', () => {
326
+ this.closed = true;
327
+ if (!this.socketError) {
328
+ this.failAllPending(new DtxConnectionError('DTX socket closed'));
329
+ }
330
+ });
331
+ }
332
+ static async open(deviceAddress, hostAddress, port, options = {}) {
333
+ const timeoutMs = options.timeoutMs ?? 10_000;
334
+ const socket = (0, node_net_1.createConnection)({
335
+ host: deviceAddress,
336
+ localAddress: hostAddress,
337
+ port,
338
+ });
339
+ await new Promise((resolve, reject) => {
340
+ const onConnect = () => {
341
+ cleanup();
342
+ resolve();
343
+ };
344
+ const onError = (err) => {
345
+ cleanup();
346
+ reject(err);
347
+ };
348
+ const timer = setTimeout(() => {
349
+ cleanup();
350
+ socket.destroy();
351
+ reject(new DtxConnectionError(`DTX connect to [${deviceAddress}]:${port} timed out after ${timeoutMs}ms`));
352
+ }, timeoutMs);
353
+ const cleanup = () => {
354
+ clearTimeout(timer);
355
+ socket.off('connect', onConnect);
356
+ socket.off('error', onError);
357
+ };
358
+ socket.once('connect', onConnect);
359
+ socket.once('error', onError);
360
+ });
361
+ return new DtxConnection(socket);
362
+ }
363
+ invoke(channelCode, payload, aux, options) {
364
+ if (this.closed) {
365
+ return Promise.reject(new DtxConnectionError('DTX connection is closed'));
366
+ }
367
+ const wantsReply = options.wantsReply ?? true;
368
+ const flags = wantsReply ? DTX_FLAG_EXPECTS_REPLY : 0;
369
+ let replyPromise = null;
370
+ if (wantsReply) {
371
+ if (this.pendingReplies.has(options.identifier)) {
372
+ return Promise.reject(new DtxConnectionError(`Duplicate DTX identifier ${options.identifier} — caller must keep ids unique on a connection`));
373
+ }
374
+ const id = options.identifier;
375
+ const timeoutMs = options.timeoutMs ?? DEFAULT_INVOKE_TIMEOUT_MS;
376
+ replyPromise = new Promise((resolve, reject) => {
377
+ const timer = setTimeout(() => {
378
+ const slot = this.pendingReplies.get(id);
379
+ if (!slot)
380
+ return;
381
+ this.pendingReplies.delete(id);
382
+ reject(new DtxConnectionError(`DTX reply for id=${id} timed out after ${timeoutMs}ms`));
383
+ }, timeoutMs);
384
+ this.pendingReplies.set(id, { reject, resolve, timer });
385
+ });
386
+ }
387
+ this.socket.write(buildDtxMessage({
388
+ aux,
389
+ channelCode,
390
+ conversationIndex: 0,
391
+ flags,
392
+ identifier: options.identifier,
393
+ msgType: DtxMessageType.Dispatch,
394
+ payload,
395
+ }));
396
+ return wantsReply ? replyPromise : Promise.resolve();
397
+ }
398
+ close() {
399
+ if (this.closed)
400
+ return;
401
+ this.closed = true;
402
+ try {
403
+ this.socket.destroy();
404
+ }
405
+ catch {
406
+ // best-effort
407
+ }
408
+ this.failAllPending(new DtxConnectionError('DTX connection closed by caller'));
409
+ }
410
+ handleChunk(chunk) {
411
+ this.reader.push(chunk);
412
+ for (;;) {
413
+ let msg;
414
+ try {
415
+ msg = this.reader.next();
416
+ }
417
+ catch (err) {
418
+ this.failAllPending(err);
419
+ this.close();
420
+ return;
421
+ }
422
+ if (!msg)
423
+ return;
424
+ this.dispatch(msg);
425
+ }
426
+ }
427
+ dispatch(msg) {
428
+ if (msg.conversationIndex === 0)
429
+ return; // peer-initiated, no waiter
430
+ const slot = this.pendingReplies.get(msg.identifier);
431
+ if (!slot)
432
+ return;
433
+ this.pendingReplies.delete(msg.identifier);
434
+ if (slot.timer)
435
+ clearTimeout(slot.timer);
436
+ if (msg.msgType === DtxMessageType.Error) {
437
+ slot.reject(new DtxConnectionError(`DTX peer returned error message (id=${msg.identifier})`));
438
+ }
439
+ else {
440
+ slot.resolve(msg);
441
+ }
442
+ }
443
+ failAllPending(err) {
444
+ for (const slot of this.pendingReplies.values()) {
445
+ if (slot.timer)
446
+ clearTimeout(slot.timer);
447
+ slot.reject(err);
448
+ }
449
+ this.pendingReplies.clear();
450
+ }
451
+ }
452
+ exports.DtxConnection = DtxConnection;
453
+ //# sourceMappingURL=dtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dtx.js","sourceRoot":"","sources":["../../../../src/server/host/coredevice/dtx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type NskaValue = null | boolean | bigint | number | string | Buffer | NskaValue[] | {
2
+ [key: string]: NskaValue;
3
+ };
4
+ export declare const encodeNska: (value: NskaValue) => Buffer;
5
+ export declare const decodeNska: (buf: Buffer) => NskaValue;
6
+ //# sourceMappingURL=nska.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nska.d.ts","sourceRoot":"","sources":["../../../../src/server/host/coredevice/nska.ts"],"names":[],"mappings":"AA8BA,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAqIjC,eAAO,MAAM,UAAU,UAAW,SAAS,KAAG,MAU7C,CAAC;AA8HF,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,SASxC,CAAC"}