appium-ios-remotexpc 2.3.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/build/src/base-plist-service.d.ts +1 -1
- package/build/src/base-plist-service.d.ts.map +1 -1
- package/build/src/base-socket-service.d.ts +1 -1
- package/build/src/base-socket-service.d.ts.map +1 -1
- package/build/src/index.d.ts +3 -3
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +3 -3
- package/build/src/index.js.map +1 -1
- package/build/src/lib/lockdown/index.d.ts.map +1 -1
- package/build/src/lib/lockdown/index.js +3 -13
- package/build/src/lib/lockdown/index.js.map +1 -1
- package/build/src/lib/plist/plist-parser.js.map +1 -1
- package/build/src/lib/plist/plist-service.d.ts +2 -2
- package/build/src/lib/plist/plist-service.d.ts.map +1 -1
- package/build/src/lib/port-forwarding/connectors.d.ts +3 -4
- package/build/src/lib/port-forwarding/connectors.d.ts.map +1 -1
- package/build/src/lib/port-forwarding/connectors.js +13 -5
- package/build/src/lib/port-forwarding/connectors.js.map +1 -1
- package/build/src/lib/remote-xpc/handshake.d.ts +1 -1
- package/build/src/lib/remote-xpc/handshake.d.ts.map +1 -1
- package/build/src/lib/tunnel/constants.d.ts +2 -0
- package/build/src/lib/tunnel/constants.d.ts.map +1 -1
- package/build/src/lib/tunnel/constants.js +2 -0
- package/build/src/lib/tunnel/constants.js.map +1 -1
- package/build/src/lib/tunnel/index.d.ts +2 -10
- package/build/src/lib/tunnel/index.d.ts.map +1 -1
- package/build/src/lib/tunnel/index.js +2 -55
- package/build/src/lib/tunnel/index.js.map +1 -1
- package/build/src/lib/tunnel/packet-stream-server.d.ts +15 -0
- package/build/src/lib/tunnel/packet-stream-server.d.ts.map +1 -1
- package/build/src/lib/tunnel/packet-stream-server.js +46 -3
- package/build/src/lib/tunnel/packet-stream-server.js.map +1 -1
- package/build/src/lib/tunnel/tunnel-api-client.d.ts +11 -3
- package/build/src/lib/tunnel/tunnel-api-client.d.ts.map +1 -1
- package/build/src/lib/tunnel/tunnel-api-client.js +40 -19
- package/build/src/lib/tunnel/tunnel-api-client.js.map +1 -1
- package/build/src/lib/tunnel/tunnel-availability.d.ts +15 -7
- package/build/src/lib/tunnel/tunnel-availability.d.ts.map +1 -1
- package/build/src/lib/tunnel/tunnel-availability.js +27 -34
- package/build/src/lib/tunnel/tunnel-availability.js.map +1 -1
- package/build/src/lib/tunnel/tunnel-readiness.d.ts +18 -0
- package/build/src/lib/tunnel/tunnel-readiness.d.ts.map +1 -0
- package/build/src/lib/tunnel/tunnel-readiness.js +70 -0
- package/build/src/lib/tunnel/tunnel-readiness.js.map +1 -0
- package/build/src/lib/tunnel/tunnel-registry-server.d.ts +23 -4
- package/build/src/lib/tunnel/tunnel-registry-server.d.ts.map +1 -1
- package/build/src/lib/tunnel/tunnel-registry-server.js +100 -10
- package/build/src/lib/tunnel/tunnel-registry-server.js.map +1 -1
- package/build/src/lib/tunnel/tunnel-rsd-discovery.d.ts +10 -0
- package/build/src/lib/tunnel/tunnel-rsd-discovery.d.ts.map +1 -0
- package/build/src/lib/tunnel/tunnel-rsd-discovery.js +44 -0
- package/build/src/lib/tunnel/tunnel-rsd-discovery.js.map +1 -0
- package/build/src/lib/tunnel/tunnel-service-resolver.d.ts +24 -0
- package/build/src/lib/tunnel/tunnel-service-resolver.d.ts.map +1 -0
- package/build/src/lib/tunnel/tunnel-service-resolver.js +65 -0
- package/build/src/lib/tunnel/tunnel-service-resolver.js.map +1 -0
- package/build/src/lib/types.d.ts +19 -11
- package/build/src/lib/types.d.ts.map +1 -1
- package/build/src/lib/usbmux/index.d.ts +1 -1
- package/build/src/lib/usbmux/index.d.ts.map +1 -1
- package/build/src/lib/usbmux/index.js +1 -1
- package/build/src/lib/usbmux/index.js.map +1 -1
- package/build/src/services/ios/afc/codec.d.ts +1 -1
- package/build/src/services/ios/afc/codec.d.ts.map +1 -1
- package/build/src/services/ios/afc/codec.js.map +1 -1
- package/build/src/services/ios/afc/constants.d.ts.map +1 -1
- package/build/src/services/ios/afc/constants.js +2 -3
- package/build/src/services/ios/afc/constants.js.map +1 -1
- package/build/src/services/ios/afc/demux.d.ts.map +1 -1
- package/build/src/services/ios/afc/demux.js +1 -0
- package/build/src/services/ios/afc/demux.js.map +1 -1
- package/build/src/services/ios/afc/enums.d.ts +16 -1
- package/build/src/services/ios/afc/enums.d.ts.map +1 -1
- package/build/src/services/ios/afc/enums.js +15 -0
- package/build/src/services/ios/afc/enums.js.map +1 -1
- package/build/src/services/ios/afc/index.d.ts +6 -8
- package/build/src/services/ios/afc/index.d.ts.map +1 -1
- package/build/src/services/ios/afc/index.js +19 -15
- package/build/src/services/ios/afc/index.js.map +1 -1
- package/build/src/services/ios/afc/stream-utils.d.ts.map +1 -1
- package/build/src/services/ios/afc/stream-utils.js +34 -20
- package/build/src/services/ios/afc/stream-utils.js.map +1 -1
- package/build/src/services/ios/base-service.d.ts +6 -11
- package/build/src/services/ios/base-service.d.ts.map +1 -1
- package/build/src/services/ios/base-service.js +16 -16
- package/build/src/services/ios/base-service.js.map +1 -1
- package/build/src/services/ios/crash-reports/index.d.ts +3 -9
- package/build/src/services/ios/crash-reports/index.d.ts.map +1 -1
- package/build/src/services/ios/crash-reports/index.js +8 -13
- package/build/src/services/ios/crash-reports/index.js.map +1 -1
- package/build/src/services/ios/diagnostic-service/index.d.ts +0 -2
- package/build/src/services/ios/diagnostic-service/index.d.ts.map +1 -1
- package/build/src/services/ios/diagnostic-service/index.js +1 -10
- package/build/src/services/ios/diagnostic-service/index.js.map +1 -1
- package/build/src/services/ios/dvt/index.d.ts +1 -1
- package/build/src/services/ios/dvt/index.d.ts.map +1 -1
- package/build/src/services/ios/dvt/index.js +3 -7
- package/build/src/services/ios/dvt/index.js.map +1 -1
- package/build/src/services/ios/dvt/instruments/device-info.d.ts +2 -0
- package/build/src/services/ios/dvt/instruments/device-info.d.ts.map +1 -1
- package/build/src/services/ios/dvt/instruments/device-info.js +15 -2
- package/build/src/services/ios/dvt/instruments/device-info.js.map +1 -1
- package/build/src/services/ios/house-arrest/index.d.ts +0 -1
- package/build/src/services/ios/house-arrest/index.d.ts.map +1 -1
- package/build/src/services/ios/house-arrest/index.js +1 -8
- package/build/src/services/ios/house-arrest/index.js.map +1 -1
- package/build/src/services/ios/installation-proxy/index.d.ts +1 -1
- package/build/src/services/ios/installation-proxy/index.d.ts.map +1 -1
- package/build/src/services/ios/installation-proxy/index.js +3 -7
- package/build/src/services/ios/installation-proxy/index.js.map +1 -1
- package/build/src/services/ios/misagent/index.d.ts +1 -2
- package/build/src/services/ios/misagent/index.d.ts.map +1 -1
- package/build/src/services/ios/misagent/index.js +1 -8
- package/build/src/services/ios/misagent/index.js.map +1 -1
- package/build/src/services/ios/mobile-config/index.d.ts +1 -3
- package/build/src/services/ios/mobile-config/index.d.ts.map +1 -1
- package/build/src/services/ios/mobile-config/index.js +1 -11
- package/build/src/services/ios/mobile-config/index.js.map +1 -1
- package/build/src/services/ios/mobile-image-mounter/index.d.ts +0 -1
- package/build/src/services/ios/mobile-image-mounter/index.d.ts.map +1 -1
- package/build/src/services/ios/mobile-image-mounter/index.js +1 -7
- package/build/src/services/ios/mobile-image-mounter/index.js.map +1 -1
- package/build/src/services/ios/notification-proxy/index.d.ts +2 -3
- package/build/src/services/ios/notification-proxy/index.d.ts.map +1 -1
- package/build/src/services/ios/notification-proxy/index.js +3 -11
- package/build/src/services/ios/notification-proxy/index.js.map +1 -1
- package/build/src/services/ios/power-assertion/index.d.ts.map +1 -1
- package/build/src/services/ios/power-assertion/index.js +2 -6
- package/build/src/services/ios/power-assertion/index.js.map +1 -1
- package/build/src/services/ios/springboard-service/index.d.ts +1 -3
- package/build/src/services/ios/springboard-service/index.d.ts.map +1 -1
- package/build/src/services/ios/springboard-service/index.js +1 -11
- package/build/src/services/ios/springboard-service/index.js.map +1 -1
- package/build/src/services/ios/syslog-service/index.d.ts +3 -2
- package/build/src/services/ios/syslog-service/index.d.ts.map +1 -1
- package/build/src/services/ios/syslog-service/index.js +7 -5
- package/build/src/services/ios/syslog-service/index.js.map +1 -1
- package/build/src/services/ios/testmanagerd/index.d.ts +1 -1
- package/build/src/services/ios/testmanagerd/index.d.ts.map +1 -1
- package/build/src/services/ios/testmanagerd/index.js +3 -7
- package/build/src/services/ios/testmanagerd/index.js.map +1 -1
- package/build/src/services/ios/webinspector/index.d.ts +1 -1
- package/build/src/services/ios/webinspector/index.d.ts.map +1 -1
- package/build/src/services/ios/webinspector/index.js +3 -7
- package/build/src/services/ios/webinspector/index.js.map +1 -1
- package/build/src/services/ios/zipconduit/index.d.ts +2 -2
- package/build/src/services/ios/zipconduit/index.d.ts.map +1 -1
- package/build/src/services/ios/zipconduit/index.js +6 -4
- package/build/src/services/ios/zipconduit/index.js.map +1 -1
- package/build/src/services.d.ts +6 -27
- package/build/src/services.d.ts.map +1 -1
- package/build/src/services.js +67 -199
- package/build/src/services.js.map +1 -1
- package/package.json +2 -1
- package/scripts/start-appletv-tunnel.mjs +103 -53
- package/scripts/tunnel-creation.mjs +122 -106
- package/src/base-plist-service.ts +1 -1
- package/src/base-socket-service.ts +1 -1
- package/src/index.ts +11 -3
- package/src/lib/lockdown/index.ts +7 -15
- package/src/lib/plist/plist-parser.ts +1 -1
- package/src/lib/plist/plist-service.ts +2 -2
- package/src/lib/port-forwarding/connectors.ts +22 -7
- package/src/lib/remote-xpc/handshake.ts +1 -1
- package/src/lib/tunnel/constants.ts +3 -0
- package/src/lib/tunnel/index.ts +2 -84
- package/src/lib/tunnel/packet-stream-server.ts +61 -4
- package/src/lib/tunnel/tunnel-api-client.ts +62 -24
- package/src/lib/tunnel/tunnel-availability.ts +37 -35
- package/src/lib/tunnel/tunnel-readiness.ts +82 -0
- package/src/lib/tunnel/tunnel-registry-server.ts +132 -9
- package/src/lib/tunnel/tunnel-rsd-discovery.ts +59 -0
- package/src/lib/tunnel/tunnel-service-resolver.ts +112 -0
- package/src/lib/types.ts +18 -11
- package/src/lib/usbmux/index.ts +6 -1
- package/src/services/ios/afc/codec.ts +1 -1
- package/src/services/ios/afc/constants.ts +2 -3
- package/src/services/ios/afc/demux.ts +1 -0
- package/src/services/ios/afc/enums.ts +15 -0
- package/src/services/ios/afc/index.ts +32 -14
- package/src/services/ios/afc/stream-utils.ts +40 -24
- package/src/services/ios/base-service.ts +23 -16
- package/src/services/ios/crash-reports/index.ts +17 -18
- package/src/services/ios/diagnostic-service/index.ts +3 -12
- package/src/services/ios/dvt/index.ts +7 -10
- package/src/services/ios/dvt/instruments/device-info.ts +27 -2
- package/src/services/ios/house-arrest/index.ts +3 -9
- package/src/services/ios/installation-proxy/index.ts +9 -11
- package/src/services/ios/misagent/index.ts +4 -10
- package/src/services/ios/mobile-config/index.ts +4 -16
- package/src/services/ios/mobile-image-mounter/index.ts +5 -10
- package/src/services/ios/notification-proxy/index.ts +7 -16
- package/src/services/ios/power-assertion/index.ts +4 -8
- package/src/services/ios/springboard-service/index.ts +4 -17
- package/src/services/ios/syslog-service/index.ts +10 -6
- package/src/services/ios/testmanagerd/index.ts +7 -10
- package/src/services/ios/testmanagerd/xcuitest.ts +1 -1
- package/src/services/ios/webinspector/index.ts +6 -9
- package/src/services/ios/zipconduit/index.ts +10 -4
- package/src/services.ts +86 -269
- package/build/src/lib/tunnel/rsd-session-lock.d.ts +0 -9
- package/build/src/lib/tunnel/rsd-session-lock.d.ts.map +0 -1
- package/build/src/lib/tunnel/rsd-session-lock.js +0 -17
- package/build/src/lib/tunnel/rsd-session-lock.js.map +0 -1
- package/src/lib/tunnel/rsd-session-lock.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-stream-server.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/packet-stream-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"packet-stream-server.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/packet-stream-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,KAAK,mBAAmB,GAAG,IAAI,CAC7B,YAAY,EACZ,mBAAmB,GAAG,sBAAsB,CAC7C,CAAC;AAEF;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAOtC,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,gBAAgB,CAAS;gBAEJ,IAAI,EAAE,MAAM;IAIzC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAO7C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B;;;OAGG;IACH,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;YACW,eAAe;IAwB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,aAAa;CAItB"}
|
|
@@ -11,10 +11,21 @@ export class PacketStreamServer extends EventEmitter {
|
|
|
11
11
|
server = null;
|
|
12
12
|
clients = new Set();
|
|
13
13
|
packetConsumer = null;
|
|
14
|
+
tunnel = null;
|
|
15
|
+
attachedToTunnel = false;
|
|
14
16
|
constructor(port) {
|
|
15
17
|
super();
|
|
16
18
|
this.port = port;
|
|
17
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Bind the tunnel whose packet consumer is attached only while TCP clients are connected.
|
|
22
|
+
*/
|
|
23
|
+
bindTunnel(tunnel) {
|
|
24
|
+
this.tunnel = tunnel;
|
|
25
|
+
if (this.clients.size > 0) {
|
|
26
|
+
this.attachToTunnel();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
18
29
|
/**
|
|
19
30
|
* Start the packet stream server
|
|
20
31
|
* @throws {Error} If server is already started
|
|
@@ -27,7 +38,6 @@ export class PacketStreamServer extends EventEmitter {
|
|
|
27
38
|
this.handleClientConnection(client);
|
|
28
39
|
});
|
|
29
40
|
const server = this.server;
|
|
30
|
-
this.packetConsumer = this.createPacketConsumer();
|
|
31
41
|
await new Promise((resolve, reject) => {
|
|
32
42
|
server.once('error', reject);
|
|
33
43
|
server.listen(this.port, resolve);
|
|
@@ -35,6 +45,7 @@ export class PacketStreamServer extends EventEmitter {
|
|
|
35
45
|
log.info(`Packet stream server listening on port ${this.port}`);
|
|
36
46
|
}
|
|
37
47
|
async stop() {
|
|
48
|
+
this.detachFromTunnel();
|
|
38
49
|
for (const client of this.clients) {
|
|
39
50
|
client.destroy();
|
|
40
51
|
}
|
|
@@ -48,6 +59,10 @@ export class PacketStreamServer extends EventEmitter {
|
|
|
48
59
|
this.server = null;
|
|
49
60
|
}
|
|
50
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Returns the packet consumer used when attached to a tunnel.
|
|
64
|
+
* Prefer {@link bindTunnel} for lifecycle management.
|
|
65
|
+
*/
|
|
51
66
|
getPacketConsumer() {
|
|
52
67
|
return this.packetConsumer;
|
|
53
68
|
}
|
|
@@ -57,15 +72,43 @@ export class PacketStreamServer extends EventEmitter {
|
|
|
57
72
|
handleClientConnection(client) {
|
|
58
73
|
log.info(`Client connected from ${client.remoteAddress}`);
|
|
59
74
|
this.clients.add(client);
|
|
75
|
+
if (this.clients.size === 1) {
|
|
76
|
+
this.attachToTunnel();
|
|
77
|
+
}
|
|
78
|
+
const onClientGone = () => {
|
|
79
|
+
this.clients.delete(client);
|
|
80
|
+
if (this.clients.size === 0) {
|
|
81
|
+
this.detachFromTunnel();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
60
84
|
client.on('close', () => {
|
|
61
85
|
log.info(`Client disconnected from ${client.remoteAddress}`);
|
|
62
|
-
|
|
86
|
+
onClientGone();
|
|
63
87
|
});
|
|
64
88
|
client.on('error', (err) => {
|
|
65
89
|
log.error(`Client error: ${err}`);
|
|
66
|
-
|
|
90
|
+
onClientGone();
|
|
67
91
|
});
|
|
68
92
|
}
|
|
93
|
+
attachToTunnel() {
|
|
94
|
+
if (this.attachedToTunnel || !this.tunnel) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (!this.packetConsumer) {
|
|
98
|
+
this.packetConsumer = this.createPacketConsumer();
|
|
99
|
+
}
|
|
100
|
+
this.tunnel.addPacketConsumer(this.packetConsumer);
|
|
101
|
+
this.attachedToTunnel = true;
|
|
102
|
+
log.debug('Attached packet consumer to tunnel');
|
|
103
|
+
}
|
|
104
|
+
detachFromTunnel() {
|
|
105
|
+
if (!this.attachedToTunnel || !this.tunnel || !this.packetConsumer) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
this.tunnel.removePacketConsumer(this.packetConsumer);
|
|
109
|
+
this.attachedToTunnel = false;
|
|
110
|
+
log.debug('Detached packet consumer from tunnel');
|
|
111
|
+
}
|
|
69
112
|
/**
|
|
70
113
|
* Create packet consumer that broadcasts packets to all connected clients
|
|
71
114
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-stream-server.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/packet-stream-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAA4B,YAAY,EAAE,MAAM,UAAU,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"packet-stream-server.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/packet-stream-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { TunnelRegistry, TunnelRegistryEntry } from '../types.js';
|
|
2
|
+
export interface GetTunnelByUdidOptions {
|
|
3
|
+
/** Long-poll budget for GET /tunnels/:udid?waitMs= (0 or omitted = immediate). */
|
|
4
|
+
waitMs?: number;
|
|
5
|
+
}
|
|
2
6
|
export interface TunnelApiClientOptions {
|
|
3
7
|
/** When true, methods throw on fetch/API errors instead of returning fallback values. Default false. */
|
|
4
8
|
strict?: boolean;
|
|
@@ -42,11 +46,15 @@ export declare class TunnelApiClient {
|
|
|
42
46
|
*/
|
|
43
47
|
fetchRegistry(): Promise<TunnelRegistry>;
|
|
44
48
|
/**
|
|
45
|
-
* Get a specific tunnel by UDID
|
|
49
|
+
* Get a specific tunnel by UDID.
|
|
46
50
|
* @param udid - Device UDID
|
|
47
|
-
* @
|
|
51
|
+
* @param options.waitMs - When > 0, long-poll until the tunnel is ready or timeout (408).
|
|
52
|
+
*/
|
|
53
|
+
getTunnelByUdid(udid: string, options?: GetTunnelByUdidOptions): Promise<TunnelRegistryEntry | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Ask tunnel-creation to re-run RSD discover-and-close and return the updated entry.
|
|
48
56
|
*/
|
|
49
|
-
|
|
57
|
+
refreshServiceCatalog(udid: string): Promise<TunnelRegistryEntry | null>;
|
|
50
58
|
/**
|
|
51
59
|
* Get tunnel by device ID
|
|
52
60
|
* @param deviceId - Device ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-api-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-api-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAgBvE,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,wGAAwG;IACxG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACS,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAMpE;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAe9C;;;;OAIG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA2BtC;;OAEG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA0BtC;;;;OAIG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAwBtC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAUrD;;;;OAIG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/C;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAUxD;;;;OAIG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAcvE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAU9C;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBhE;;;;OAIG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBlD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,eAAe;YAQT,gBAAgB;CA+B/B"}
|
|
@@ -10,6 +10,7 @@ const EMPTY_REGISTRY = {
|
|
|
10
10
|
},
|
|
11
11
|
};
|
|
12
12
|
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
13
|
+
const WAIT_REQUEST_BUFFER_MS = 1_000;
|
|
13
14
|
/**
|
|
14
15
|
* API client for tunnel registry operations
|
|
15
16
|
* This client handles communication with the API server for tunnel data
|
|
@@ -43,7 +44,7 @@ export class TunnelApiClient {
|
|
|
43
44
|
try {
|
|
44
45
|
const response = await this.fetchWithTimeout(this.apiBaseUrl);
|
|
45
46
|
if (!response.ok) {
|
|
46
|
-
throw new TunnelAvailabilityError(`
|
|
47
|
+
throw new TunnelAvailabilityError(`HTTP ${response.status}`);
|
|
47
48
|
}
|
|
48
49
|
return (await response.json());
|
|
49
50
|
}
|
|
@@ -53,18 +54,23 @@ export class TunnelApiClient {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
|
-
* Get a specific tunnel by UDID
|
|
57
|
+
* Get a specific tunnel by UDID.
|
|
57
58
|
* @param udid - Device UDID
|
|
58
|
-
* @
|
|
59
|
+
* @param options.waitMs - When > 0, long-poll until the tunnel is ready or timeout (408).
|
|
59
60
|
*/
|
|
60
|
-
async getTunnelByUdid(udid) {
|
|
61
|
+
async getTunnelByUdid(udid, options = {}) {
|
|
62
|
+
const waitMs = options.waitMs ?? 0;
|
|
63
|
+
const url = waitMs > 0
|
|
64
|
+
? `${this.apiBaseUrl}/${udid}?waitMs=${waitMs}`
|
|
65
|
+
: `${this.apiBaseUrl}/${udid}`;
|
|
66
|
+
const timeoutMs = waitMs > 0 ? waitMs + WAIT_REQUEST_BUFFER_MS : this.timeoutMs;
|
|
61
67
|
try {
|
|
62
|
-
const response = await this.fetchWithTimeout(
|
|
63
|
-
if (response.status === 404) {
|
|
68
|
+
const response = await this.fetchWithTimeout(url, undefined, timeoutMs);
|
|
69
|
+
if (response.status === 404 || response.status === 408) {
|
|
64
70
|
return null;
|
|
65
71
|
}
|
|
66
72
|
if (!response.ok) {
|
|
67
|
-
throw new TunnelAvailabilityError(`
|
|
73
|
+
throw new TunnelAvailabilityError(`HTTP ${response.status}`);
|
|
68
74
|
}
|
|
69
75
|
return (await response.json());
|
|
70
76
|
}
|
|
@@ -73,6 +79,25 @@ export class TunnelApiClient {
|
|
|
73
79
|
return null;
|
|
74
80
|
}
|
|
75
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Ask tunnel-creation to re-run RSD discover-and-close and return the updated entry.
|
|
84
|
+
*/
|
|
85
|
+
async refreshServiceCatalog(udid) {
|
|
86
|
+
try {
|
|
87
|
+
const response = await this.fetchWithTimeout(`${this.apiBaseUrl}/${udid}/refresh-services`, { method: 'POST' }, this.timeoutMs + DEFAULT_TIMEOUT_MS);
|
|
88
|
+
if (response.status === 404) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
throw new TunnelAvailabilityError(`HTTP ${response.status}`);
|
|
93
|
+
}
|
|
94
|
+
return (await response.json());
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
this.handleFetchError(`Failed to refresh service catalog for UDID ${udid}`, error);
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
76
101
|
/**
|
|
77
102
|
* Get tunnel by device ID
|
|
78
103
|
* @param deviceId - Device ID
|
|
@@ -85,7 +110,7 @@ export class TunnelApiClient {
|
|
|
85
110
|
return null;
|
|
86
111
|
}
|
|
87
112
|
if (!response.ok) {
|
|
88
|
-
throw new TunnelAvailabilityError(`
|
|
113
|
+
throw new TunnelAvailabilityError(`HTTP ${response.status}`);
|
|
89
114
|
}
|
|
90
115
|
return (await response.json());
|
|
91
116
|
}
|
|
@@ -203,15 +228,11 @@ export class TunnelApiClient {
|
|
|
203
228
|
* Otherwise logs and returns.
|
|
204
229
|
*/
|
|
205
230
|
handleFetchError(messagePrefix, error, logLevel = 'warn') {
|
|
206
|
-
if (error instanceof TunnelAvailabilityError) {
|
|
207
|
-
if (this.strict) {
|
|
208
|
-
throw error;
|
|
209
|
-
}
|
|
210
|
-
this.logFetchFailure(error.message, logLevel);
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
231
|
const detail = error instanceof Error ? error.message : String(error);
|
|
214
|
-
const
|
|
232
|
+
const prefixed = `${messagePrefix}: ${detail}`;
|
|
233
|
+
const message = detail === messagePrefix || detail.startsWith(`${messagePrefix}:`)
|
|
234
|
+
? detail
|
|
235
|
+
: prefixed;
|
|
215
236
|
if (this.strict) {
|
|
216
237
|
throw new TunnelAvailabilityError(message, { cause: error });
|
|
217
238
|
}
|
|
@@ -225,9 +246,9 @@ export class TunnelApiClient {
|
|
|
225
246
|
log.warn(message);
|
|
226
247
|
}
|
|
227
248
|
}
|
|
228
|
-
async fetchWithTimeout(url, init) {
|
|
249
|
+
async fetchWithTimeout(url, init, timeoutMs = this.timeoutMs) {
|
|
229
250
|
const controller = new AbortController();
|
|
230
|
-
const timeoutId = setTimeout(() => controller.abort(),
|
|
251
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
231
252
|
try {
|
|
232
253
|
const response = await fetch(url, {
|
|
233
254
|
...init,
|
|
@@ -240,7 +261,7 @@ export class TunnelApiClient {
|
|
|
240
261
|
throw error;
|
|
241
262
|
}
|
|
242
263
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
243
|
-
throw new TunnelAvailabilityError(`Tunnel registry request timed out after ${
|
|
264
|
+
throw new TunnelAvailabilityError(`Tunnel registry request timed out after ${timeoutMs}ms`, { cause: error });
|
|
244
265
|
}
|
|
245
266
|
throw new TunnelAvailabilityError(`Tunnel registry request failed for ${url}`, { cause: error });
|
|
246
267
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-api-client.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,GAAG,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;AAEzC,MAAM,cAAc,GAAmB;IACrC,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE;QACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;KACjB;CACF,CAAC;AACF,MAAM,kBAAkB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-api-client.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,27 @@
|
|
|
1
|
+
import type { TunnelRegistryEntry } from '../types.js';
|
|
1
2
|
import { TunnelAvailabilityError } from './errors.js';
|
|
2
|
-
import { type TunnelEndpoint } from './tunnel-api-client.js';
|
|
3
|
+
import { TunnelApiClient, type TunnelEndpoint } from './tunnel-api-client.js';
|
|
3
4
|
export { TunnelAvailabilityError };
|
|
5
|
+
export interface GetTunnelForDeviceOptions {
|
|
6
|
+
/** Long-poll budget passed to GET /tunnels/:udid?waitMs= (0 = immediate). */
|
|
7
|
+
waitMs?: number;
|
|
8
|
+
}
|
|
4
9
|
/**
|
|
5
10
|
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
6
|
-
* Strongbox port, TCP probe, then a single `GET /remotexpc/tunnels/{udid}`.
|
|
7
11
|
* @throws {TunnelAvailabilityError} When registry or tunnel for the UDID is unavailable.
|
|
8
12
|
*/
|
|
9
|
-
export declare function getTunnelForDevice(udid: string): Promise<TunnelEndpoint>;
|
|
13
|
+
export declare function getTunnelForDevice(udid: string, options?: GetTunnelForDeviceOptions): Promise<TunnelEndpoint>;
|
|
10
14
|
/**
|
|
11
15
|
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
12
|
-
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
13
|
-
* in the "connected devices" list for session validation.
|
|
14
|
-
*
|
|
15
|
-
* @returns UDIDs when the registry is reachable (possibly empty).
|
|
16
16
|
* @throws {TunnelAvailabilityError} When the registry port is missing or unreachable.
|
|
17
17
|
*/
|
|
18
18
|
export declare function getAvailableDevices(): Promise<string[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Strict registry client for internal catalog resolution (service resolver).
|
|
21
|
+
*/
|
|
22
|
+
export declare function createValidatedStrictRegistryClient(): Promise<TunnelApiClient>;
|
|
23
|
+
/** Map a registry entry to a flat tunnel endpoint. */
|
|
24
|
+
export declare function mapEntryToEndpoint(entry: TunnelRegistryEntry): TunnelEndpoint;
|
|
25
|
+
/** Whether a registry entry has a non-empty discovered RSD service catalog. */
|
|
26
|
+
export declare function isTunnelEntryReady(entry: TunnelRegistryEntry): boolean;
|
|
19
27
|
//# sourceMappingURL=tunnel-availability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-availability.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-availability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel-availability.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-availability.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,eAAe,EAEf,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAInC,MAAM,WAAW,yBAAyB;IACxC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,cAAc,CAAC,CAYzB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG7D;AAED;;GAEG;AACH,wBAAsB,mCAAmC,IAAI,OAAO,CAAC,eAAe,CAAC,CAOpF;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAO7E;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAMtE"}
|
|
@@ -8,12 +8,12 @@ export { TunnelAvailabilityError };
|
|
|
8
8
|
const TUNNEL_REGISTRY_PORT = 'tunnelRegistryPort';
|
|
9
9
|
/**
|
|
10
10
|
* Resolve tunnel registry metadata for a device (host, RSD port, packet stream).
|
|
11
|
-
* Strongbox port, TCP probe, then a single `GET /remotexpc/tunnels/{udid}`.
|
|
12
11
|
* @throws {TunnelAvailabilityError} When registry or tunnel for the UDID is unavailable.
|
|
13
12
|
*/
|
|
14
|
-
export async function getTunnelForDevice(udid) {
|
|
13
|
+
export async function getTunnelForDevice(udid, options = {}) {
|
|
15
14
|
const client = await createValidatedStrictRegistryClient();
|
|
16
|
-
const
|
|
15
|
+
const waitMs = options.waitMs ?? 0;
|
|
16
|
+
const entry = await client.getTunnelByUdid(udid, { waitMs });
|
|
17
17
|
if (!entry) {
|
|
18
18
|
throw new TunnelAvailabilityError(`No tunnel found for device ${udid}. Please run the tunnel creation script first`);
|
|
19
19
|
}
|
|
@@ -21,10 +21,6 @@ export async function getTunnelForDevice(udid) {
|
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Returns the list of device UDIDs currently in the tunnel registry.
|
|
24
|
-
* Used to include tunnel-only devices (e.g. Apple TV over WiFi)
|
|
25
|
-
* in the "connected devices" list for session validation.
|
|
26
|
-
*
|
|
27
|
-
* @returns UDIDs when the registry is reachable (possibly empty).
|
|
28
24
|
* @throws {TunnelAvailabilityError} When the registry port is missing or unreachable.
|
|
29
25
|
*/
|
|
30
26
|
export async function getAvailableDevices() {
|
|
@@ -32,9 +28,31 @@ export async function getAvailableDevices() {
|
|
|
32
28
|
return await client.getAvailableDevices();
|
|
33
29
|
}
|
|
34
30
|
/**
|
|
35
|
-
*
|
|
36
|
-
* @throws {TunnelAvailabilityError} When the port was never stored or is not a valid TCP port.
|
|
31
|
+
* Strict registry client for internal catalog resolution (service resolver).
|
|
37
32
|
*/
|
|
33
|
+
export async function createValidatedStrictRegistryClient() {
|
|
34
|
+
const port = await readTunnelRegistryPort();
|
|
35
|
+
await assertRegistryPortAcceptingConnections(port);
|
|
36
|
+
return createTunnelRegistryClient(port, {
|
|
37
|
+
strict: true,
|
|
38
|
+
timeoutMs: TUNNEL_REGISTRY_HTTP_TIMEOUT_MS,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** Map a registry entry to a flat tunnel endpoint. */
|
|
42
|
+
export function mapEntryToEndpoint(entry) {
|
|
43
|
+
return {
|
|
44
|
+
host: entry.address,
|
|
45
|
+
port: entry.rsdPort,
|
|
46
|
+
udid: entry.udid,
|
|
47
|
+
packetStreamPort: entry.packetStreamPort,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Whether a registry entry has a non-empty discovered RSD service catalog. */
|
|
51
|
+
export function isTunnelEntryReady(entry) {
|
|
52
|
+
return (entry.services !== undefined &&
|
|
53
|
+
typeof entry.services === 'object' &&
|
|
54
|
+
Object.keys(entry.services).length > 0);
|
|
55
|
+
}
|
|
38
56
|
async function readTunnelRegistryPort() {
|
|
39
57
|
const box = strongbox(TUNNEL_CONTAINER_NAME);
|
|
40
58
|
const item = new BaseItem(TUNNEL_REGISTRY_PORT, box);
|
|
@@ -50,10 +68,6 @@ async function readTunnelRegistryPort() {
|
|
|
50
68
|
}
|
|
51
69
|
return port;
|
|
52
70
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Verify the registry HTTP server is accepting TCP connections on localhost.
|
|
55
|
-
* @throws {TunnelAvailabilityError} When the port is closed or the probe times out.
|
|
56
|
-
*/
|
|
57
71
|
async function assertRegistryPortAcceptingConnections(port) {
|
|
58
72
|
const registryAddress = `${TUNNEL_REGISTRY_HOST}:${port}`;
|
|
59
73
|
const unreachableMessage = `Tunnel registry at ${registryAddress} is not reachable. Please run the tunnel creation script first`;
|
|
@@ -86,28 +100,7 @@ async function assertRegistryPortAcceptingConnections(port) {
|
|
|
86
100
|
});
|
|
87
101
|
});
|
|
88
102
|
}
|
|
89
|
-
/** Map a registry entry to a flat tunnel endpoint for RSD connect. */
|
|
90
|
-
function mapEntryToEndpoint(entry) {
|
|
91
|
-
return {
|
|
92
|
-
host: entry.address,
|
|
93
|
-
port: entry.rsdPort,
|
|
94
|
-
udid: entry.udid,
|
|
95
|
-
packetStreamPort: entry.packetStreamPort,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Build a strict tunnel registry API client (caller supplies port via base URL).
|
|
100
|
-
*/
|
|
101
103
|
function createTunnelRegistryClient(port, options = {}) {
|
|
102
104
|
return new TunnelApiClient(`http://${TUNNEL_REGISTRY_HOST}:${port}${TUNNEL_REGISTRY_API_BASE_PATH}`, options);
|
|
103
105
|
}
|
|
104
|
-
/** Strongbox port, TCP probe, then a strict registry client with the lookup timeout. */
|
|
105
|
-
async function createValidatedStrictRegistryClient() {
|
|
106
|
-
const port = await readTunnelRegistryPort();
|
|
107
|
-
await assertRegistryPortAcceptingConnections(port);
|
|
108
|
-
return createTunnelRegistryClient(port, {
|
|
109
|
-
strict: true,
|
|
110
|
-
timeoutMs: TUNNEL_REGISTRY_HTTP_TIMEOUT_MS,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
106
|
//# sourceMappingURL=tunnel-availability.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-availability.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-availability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,+BAA+B,EAC/B,qCAAqC,GACtC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-availability.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-availability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TunnelRegistryEntry } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-process readiness coordination for long-poll GET /tunnels/:udid?waitMs=.
|
|
4
|
+
* Lives in the tunnel-creation / registry server process only.
|
|
5
|
+
*/
|
|
6
|
+
export declare class TunnelReadinessCoordinator {
|
|
7
|
+
private waitersByUdid;
|
|
8
|
+
/** Clear readiness; new waiters block until the next {@link resolveReady}. */
|
|
9
|
+
markPending(udid: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Wait until {@link resolveReady} for `udid`, or reject after `waitMs`.
|
|
12
|
+
*/
|
|
13
|
+
waitForReady(udid: string, waitMs: number): Promise<TunnelRegistryEntry>;
|
|
14
|
+
/** Unblock all waiters for `udid` with the published registry entry. */
|
|
15
|
+
resolveReady(udid: string, entry: TunnelRegistryEntry): void;
|
|
16
|
+
private removeWaiter;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=tunnel-readiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel-readiness.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQvD;;;GAGG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,aAAa,CAA+B;IAEpD,8EAA8E;IAC9E,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY/B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyBxE,wEAAwE;IACxE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAY5D,OAAO,CAAC,YAAY;CAYrB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process readiness coordination for long-poll GET /tunnels/:udid?waitMs=.
|
|
3
|
+
* Lives in the tunnel-creation / registry server process only.
|
|
4
|
+
*/
|
|
5
|
+
export class TunnelReadinessCoordinator {
|
|
6
|
+
waitersByUdid = new Map();
|
|
7
|
+
/** Clear readiness; new waiters block until the next {@link resolveReady}. */
|
|
8
|
+
markPending(udid) {
|
|
9
|
+
const waiters = this.waitersByUdid.get(udid);
|
|
10
|
+
if (!waiters?.length) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
for (const waiter of waiters) {
|
|
14
|
+
clearTimeout(waiter.timer);
|
|
15
|
+
waiter.reject(new Error(`Tunnel ${udid} is not ready`));
|
|
16
|
+
}
|
|
17
|
+
this.waitersByUdid.delete(udid);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Wait until {@link resolveReady} for `udid`, or reject after `waitMs`.
|
|
21
|
+
*/
|
|
22
|
+
waitForReady(udid, waitMs) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
const timer = setTimeout(() => {
|
|
25
|
+
this.removeWaiter(udid, waiter);
|
|
26
|
+
reject(new Error('NOT_READY'));
|
|
27
|
+
}, waitMs);
|
|
28
|
+
const waiter = {
|
|
29
|
+
resolve: (entry) => {
|
|
30
|
+
clearTimeout(timer);
|
|
31
|
+
resolve(entry);
|
|
32
|
+
},
|
|
33
|
+
reject: (error) => {
|
|
34
|
+
clearTimeout(timer);
|
|
35
|
+
reject(error);
|
|
36
|
+
},
|
|
37
|
+
timer,
|
|
38
|
+
};
|
|
39
|
+
const list = this.waitersByUdid.get(udid) ?? [];
|
|
40
|
+
list.push(waiter);
|
|
41
|
+
this.waitersByUdid.set(udid, list);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** Unblock all waiters for `udid` with the published registry entry. */
|
|
45
|
+
resolveReady(udid, entry) {
|
|
46
|
+
const waiters = this.waitersByUdid.get(udid);
|
|
47
|
+
if (!waiters?.length) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.waitersByUdid.delete(udid);
|
|
51
|
+
for (const waiter of waiters) {
|
|
52
|
+
clearTimeout(waiter.timer);
|
|
53
|
+
waiter.resolve(entry);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
removeWaiter(udid, target) {
|
|
57
|
+
const waiters = this.waitersByUdid.get(udid);
|
|
58
|
+
if (!waiters) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const next = waiters.filter((w) => w !== target);
|
|
62
|
+
if (next.length) {
|
|
63
|
+
this.waitersByUdid.set(udid, next);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.waitersByUdid.delete(udid);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=tunnel-readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel-readiness.js","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import type { TunnelRegistry } from '../types.js';
|
|
1
|
+
import type { TunnelRegistry, TunnelRegistryEntry } from '../types.js';
|
|
2
|
+
import { TunnelReadinessCoordinator } from './tunnel-readiness.js';
|
|
2
3
|
export declare const DEFAULT_TUNNEL_REGISTRY_PORT = 42314;
|
|
4
|
+
export interface TunnelRegistryServerOptions {
|
|
5
|
+
readiness?: TunnelReadinessCoordinator;
|
|
6
|
+
/**
|
|
7
|
+
* Re-run RSD discover-and-close for `udid` and return the updated registry entry.
|
|
8
|
+
* Wired by tunnel-creation; required for POST refresh-services.
|
|
9
|
+
*/
|
|
10
|
+
refreshServices?: (udid: string, entry: TunnelRegistryEntry) => Promise<TunnelRegistryEntry>;
|
|
11
|
+
}
|
|
3
12
|
/**
|
|
4
13
|
* Tunnel Registry Server - provides API endpoints for tunnel registry operations
|
|
5
14
|
*/
|
|
@@ -14,7 +23,16 @@ export declare class TunnelRegistryServer {
|
|
|
14
23
|
* @param port - Port to listen on
|
|
15
24
|
*/
|
|
16
25
|
private readonly dispatchRoute;
|
|
17
|
-
|
|
26
|
+
private readonly readiness;
|
|
27
|
+
private readonly refreshServices?;
|
|
28
|
+
constructor(tunnelsInfo: TunnelRegistry | undefined, port: number, options?: TunnelRegistryServerOptions);
|
|
29
|
+
/** Live registry object (mutated in place by tunnel-creation). */
|
|
30
|
+
getRegistry(): TunnelRegistry;
|
|
31
|
+
/** Publish a fully discovered tunnel entry and unblock long-poll waiters. */
|
|
32
|
+
upsertReadyEntry(udid: string, entry: TunnelRegistryEntry): void;
|
|
33
|
+
/** Remove a tunnel and mark readiness pending (e.g. upstream TLS death). */
|
|
34
|
+
removeTunnelEntry(udid: string): void;
|
|
35
|
+
markTunnelPending(udid: string): void;
|
|
18
36
|
/**
|
|
19
37
|
* Get tunnels from registry
|
|
20
38
|
*/
|
|
@@ -48,9 +66,10 @@ export declare class TunnelRegistryServer {
|
|
|
48
66
|
*/
|
|
49
67
|
private getRegistryMetadata;
|
|
50
68
|
/**
|
|
51
|
-
* Handler for getting a tunnel by UDID
|
|
69
|
+
* Handler for getting a tunnel by UDID (optional ?waitMs= long-poll).
|
|
52
70
|
*/
|
|
53
71
|
private getTunnelByUdid;
|
|
72
|
+
private refreshTunnelServices;
|
|
54
73
|
/**
|
|
55
74
|
* Handler for getting a tunnel by device ID
|
|
56
75
|
*/
|
|
@@ -74,5 +93,5 @@ export declare class TunnelRegistryServer {
|
|
|
74
93
|
* @param port - Port to listen on
|
|
75
94
|
* @returns The started TunnelRegistryServer instance
|
|
76
95
|
*/
|
|
77
|
-
export declare function startTunnelRegistryServer(tunnelInfos: TunnelRegistry | undefined, port?: number): Promise<TunnelRegistryServer>;
|
|
96
|
+
export declare function startTunnelRegistryServer(tunnelInfos: TunnelRegistry | undefined, port?: number, options?: TunnelRegistryServerOptions): Promise<TunnelRegistryServer>;
|
|
78
97
|
//# sourceMappingURL=tunnel-registry-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-registry-server.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"tunnel-registry-server.d.ts","sourceRoot":"","sources":["../../../../src/lib/tunnel/tunnel-registry-server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAQnE,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAKlD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC;;;OAGG;IACH,eAAe,CAAC,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,mBAAmB,KACvB,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnC;AAKD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,cAAc,CAAC;IACpC,OAAO,CAAC,QAAQ,CAOd;IAEF;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAiD;gBAGhF,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,2BAAgC;IAQ3C,kEAAkE;IAClE,WAAW,IAAI,cAAc;IAI7B,6EAA6E;IAC7E,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAQhE,4EAA4E;IAC5E,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,OAAO,KAAK,OAAO,GAElB;IAED;;OAEG;IACH,OAAO,KAAK,QAAQ,GAOnB;IAED;;OAEG;IACH,OAAO,KAAK,YAAY,GAKvB;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B;;OAEG;YACW,aAAa;IAsB3B;;OAEG;YACW,aAAa;IAY3B;;OAEG;YACW,mBAAmB;IAYjC;;OAEG;YACW,eAAe;YAwCf,qBAAqB;IAgCnC;;OAEG;YACW,mBAAmB;IAgCjC;;OAEG;YACW,YAAY;IAqD1B;;OAEG;YACW,YAAY;IAoB1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAgDjC;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,IAAI,GAAE,MAAqC,EAC3C,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAY/B"}
|