@limrun/api 0.16.1 → 0.17.0-rc.2
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 +0 -17
- package/client.d.mts +1 -1
- package/client.d.mts.map +1 -1
- package/client.d.ts +1 -1
- package/client.d.ts.map +1 -1
- package/index.d.mts +1 -0
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/index.mjs +1 -0
- package/index.mjs.map +1 -1
- package/instance-client.d.mts.map +1 -1
- package/instance-client.d.ts.map +1 -1
- package/instance-client.js +8 -24
- package/instance-client.js.map +1 -1
- package/instance-client.mjs +9 -25
- package/instance-client.mjs.map +1 -1
- package/internal/tslib.js +4 -0
- package/ios-client.d.mts +207 -0
- package/ios-client.d.mts.map +1 -0
- package/ios-client.d.ts +207 -0
- package/ios-client.d.ts.map +1 -0
- package/ios-client.js +521 -0
- package/ios-client.js.map +1 -0
- package/ios-client.mjs +515 -0
- package/ios-client.mjs.map +1 -0
- package/package.json +11 -1
- package/src/client.ts +1 -1
- package/src/index.ts +1 -0
- package/src/instance-client.ts +9 -30
- package/src/ios-client.ts +788 -0
- package/src/tunnel.ts +6 -48
- package/src/version.ts +1 -1
- package/tunnel.d.mts +0 -1
- package/tunnel.d.mts.map +1 -1
- package/tunnel.d.ts +0 -1
- package/tunnel.d.ts.map +1 -1
- package/tunnel.js +6 -44
- package/tunnel.js.map +1 -1
- package/tunnel.mjs +6 -42
- package/tunnel.mjs.map +1 -1
- package/version.d.mts +1 -1
- package/version.d.mts.map +1 -1
- package/version.d.ts +1 -1
- package/version.d.ts.map +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/version.mjs +1 -1
- package/version.mjs.map +1 -1
package/src/tunnel.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as crypto from 'crypto';
|
|
2
1
|
import * as net from 'net';
|
|
3
2
|
import { WebSocket } from 'ws';
|
|
4
3
|
|
|
@@ -85,6 +84,7 @@ export async function startTcpTunnel(
|
|
|
85
84
|
const maxReconnectDelay = options?.maxReconnectDelay ?? 30000;
|
|
86
85
|
const logLevel = options?.logLevel ?? 'info';
|
|
87
86
|
|
|
87
|
+
// Logger functions
|
|
88
88
|
const logger = {
|
|
89
89
|
debug: (...args: any[]) => {
|
|
90
90
|
if (logLevel === 'debug') console.log('[Tunnel]', ...args);
|
|
@@ -111,8 +111,6 @@ export async function startTcpTunnel(
|
|
|
111
111
|
let intentionalDisconnect = false;
|
|
112
112
|
let tcpSocket: net.Socket | undefined;
|
|
113
113
|
let connectionState: TunnelConnectionState = 'connecting';
|
|
114
|
-
let sessionId: string | undefined;
|
|
115
|
-
let lastError: string | undefined;
|
|
116
114
|
|
|
117
115
|
const stateChangeCallbacks: Set<TunnelConnectionStateCallback> = new Set();
|
|
118
116
|
|
|
@@ -166,21 +164,13 @@ export async function startTcpTunnel(
|
|
|
166
164
|
return;
|
|
167
165
|
}
|
|
168
166
|
|
|
169
|
-
if (isNonRetryableError(lastError ?? '')) {
|
|
170
|
-
logger.error(`Skipping reconnection (non-retryable error): ${lastError}`);
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
167
|
if (!tcpSocket || tcpSocket.destroyed) {
|
|
175
168
|
logger.debug('Skipping reconnection (TCP socket closed)');
|
|
176
169
|
return;
|
|
177
170
|
}
|
|
178
171
|
|
|
179
172
|
if (reconnectAttempts >= maxReconnectAttempts) {
|
|
180
|
-
logger.error(
|
|
181
|
-
`Max reconnection attempts (${maxReconnectAttempts}) reached. Closing tunnel.`,
|
|
182
|
-
lastError ? `Last error: ${lastError}` : '',
|
|
183
|
-
);
|
|
173
|
+
logger.error(`Max reconnection attempts (${maxReconnectAttempts}) reached. Closing tunnel.`);
|
|
184
174
|
close();
|
|
185
175
|
return;
|
|
186
176
|
}
|
|
@@ -206,21 +196,13 @@ export async function startTcpTunnel(
|
|
|
206
196
|
cleanup();
|
|
207
197
|
updateConnectionState('connecting');
|
|
208
198
|
|
|
209
|
-
|
|
210
|
-
const url = new URL(remoteURL);
|
|
211
|
-
if (sessionId) {
|
|
212
|
-
url.searchParams.set('sessionId', sessionId);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
ws = new WebSocket(url.toString(), {
|
|
199
|
+
ws = new WebSocket(remoteURL, {
|
|
216
200
|
headers: { Authorization: `Bearer ${token}` },
|
|
217
201
|
perMessageDeflate: false,
|
|
218
202
|
});
|
|
219
203
|
|
|
220
204
|
ws.on('error', (err: any) => {
|
|
221
|
-
|
|
222
|
-
lastError = errMessage;
|
|
223
|
-
logger.debug('WebSocket error:', errMessage);
|
|
205
|
+
logger.error('WebSocket error:', err.message || err);
|
|
224
206
|
});
|
|
225
207
|
|
|
226
208
|
ws.on('close', () => {
|
|
@@ -229,10 +211,7 @@ export async function startTcpTunnel(
|
|
|
229
211
|
pingInterval = undefined;
|
|
230
212
|
}
|
|
231
213
|
|
|
232
|
-
const shouldReconnect =
|
|
233
|
-
!intentionalDisconnect &&
|
|
234
|
-
!isNonRetryableError(lastError ?? '') &&
|
|
235
|
-
connectionState !== 'disconnected';
|
|
214
|
+
const shouldReconnect = !intentionalDisconnect && connectionState !== 'disconnected';
|
|
236
215
|
updateConnectionState('disconnected');
|
|
237
216
|
|
|
238
217
|
logger.debug('WebSocket disconnected');
|
|
@@ -245,11 +224,6 @@ export async function startTcpTunnel(
|
|
|
245
224
|
|
|
246
225
|
if (shouldReconnect && tcpSocket && !tcpSocket.destroyed) {
|
|
247
226
|
scheduleReconnect();
|
|
248
|
-
} else if (isNonRetryableError(lastError ?? '')) {
|
|
249
|
-
// Close entire tunnel on non-retryable errors (not just TCP socket)
|
|
250
|
-
// This prevents adb from reconnecting and triggering the same error
|
|
251
|
-
logger.error(`Closing tunnel due to non-retryable error: ${lastError}`);
|
|
252
|
-
close();
|
|
253
227
|
}
|
|
254
228
|
});
|
|
255
229
|
|
|
@@ -257,7 +231,6 @@ export async function startTcpTunnel(
|
|
|
257
231
|
const socket = ws as WebSocket;
|
|
258
232
|
logger.debug('WebSocket connected');
|
|
259
233
|
reconnectAttempts = 0;
|
|
260
|
-
lastError = undefined;
|
|
261
234
|
updateConnectionState('connected');
|
|
262
235
|
|
|
263
236
|
pingInterval = setInterval(() => {
|
|
@@ -336,8 +309,6 @@ export async function startTcpTunnel(
|
|
|
336
309
|
// Reset reconnection state for next connection
|
|
337
310
|
reconnectAttempts = 0;
|
|
338
311
|
intentionalDisconnect = false;
|
|
339
|
-
sessionId = undefined;
|
|
340
|
-
lastError = undefined;
|
|
341
312
|
logger.debug('Connection cleaned up, ready for new TCP connection');
|
|
342
313
|
};
|
|
343
314
|
|
|
@@ -350,11 +321,7 @@ export async function startTcpTunnel(
|
|
|
350
321
|
return;
|
|
351
322
|
}
|
|
352
323
|
|
|
353
|
-
|
|
354
|
-
// This ID persists across WebSocket reconnects, allowing the server
|
|
355
|
-
// to associate reconnecting clients with their existing ADB session.
|
|
356
|
-
sessionId = crypto.randomUUID();
|
|
357
|
-
logger.debug('TCP client connected', 'sessionId', sessionId);
|
|
324
|
+
logger.debug('TCP client connected');
|
|
358
325
|
tcpSocket = socket;
|
|
359
326
|
|
|
360
327
|
// TCP socket handlers
|
|
@@ -376,12 +343,3 @@ export async function startTcpTunnel(
|
|
|
376
343
|
server.listen(port, hostname);
|
|
377
344
|
});
|
|
378
345
|
}
|
|
379
|
-
|
|
380
|
-
export const isNonRetryableError = (errMessage: string): boolean => {
|
|
381
|
-
const match = errMessage.match(/Unexpected server response: (\d+)/);
|
|
382
|
-
if (match && match[1]) {
|
|
383
|
-
const statusCode = parseInt(match[1], 10);
|
|
384
|
-
return statusCode >= 400 && statusCode < 500;
|
|
385
|
-
}
|
|
386
|
-
return false;
|
|
387
|
-
};
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.
|
|
1
|
+
export const VERSION = '0.17.0-rc.2'; // x-release-please-version
|
package/tunnel.d.mts
CHANGED
|
@@ -65,5 +65,4 @@ export interface TcpTunnelOptions {
|
|
|
65
65
|
* @param options Optional reconnection configuration
|
|
66
66
|
*/
|
|
67
67
|
export declare function startTcpTunnel(remoteURL: string, token: string, hostname: string, port: number, options?: TcpTunnelOptions): Promise<Tunnel>;
|
|
68
|
-
export declare const isNonRetryableError: (errMessage: string) => boolean;
|
|
69
68
|
//# sourceMappingURL=tunnel.d.mts.map
|
package/tunnel.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.mts","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel.d.mts","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAEnF,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;OAEG;IACH,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;IAChD;;;OAGG;IACH,uBAAuB,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,MAAM,IAAI,CAAC;CAClF;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAwQjB"}
|
package/tunnel.d.ts
CHANGED
|
@@ -65,5 +65,4 @@ export interface TcpTunnelOptions {
|
|
|
65
65
|
* @param options Optional reconnection configuration
|
|
66
66
|
*/
|
|
67
67
|
export declare function startTcpTunnel(remoteURL: string, token: string, hostname: string, port: number, options?: TcpTunnelOptions): Promise<Tunnel>;
|
|
68
|
-
export declare const isNonRetryableError: (errMessage: string) => boolean;
|
|
69
68
|
//# sourceMappingURL=tunnel.d.ts.map
|
package/tunnel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAEnF,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;OAEG;IACH,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;IAChD;;;OAGG;IACH,uBAAuB,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,MAAM,IAAI,CAAC;CAClF;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAwQjB"}
|
package/tunnel.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isNonRetryableError = void 0;
|
|
4
3
|
exports.startTcpTunnel = startTcpTunnel;
|
|
5
4
|
const tslib_1 = require("./internal/tslib.js");
|
|
6
|
-
const crypto = tslib_1.__importStar(require("crypto"));
|
|
7
5
|
const net = tslib_1.__importStar(require("net"));
|
|
8
6
|
const ws_1 = require("ws");
|
|
9
7
|
/**
|
|
@@ -27,6 +25,7 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
27
25
|
const reconnectDelay = options?.reconnectDelay ?? 1000;
|
|
28
26
|
const maxReconnectDelay = options?.maxReconnectDelay ?? 30000;
|
|
29
27
|
const logLevel = options?.logLevel ?? 'info';
|
|
28
|
+
// Logger functions
|
|
30
29
|
const logger = {
|
|
31
30
|
debug: (...args) => {
|
|
32
31
|
if (logLevel === 'debug')
|
|
@@ -54,8 +53,6 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
54
53
|
let intentionalDisconnect = false;
|
|
55
54
|
let tcpSocket;
|
|
56
55
|
let connectionState = 'connecting';
|
|
57
|
-
let sessionId;
|
|
58
|
-
let lastError;
|
|
59
56
|
const stateChangeCallbacks = new Set();
|
|
60
57
|
const updateConnectionState = (newState) => {
|
|
61
58
|
if (connectionState !== newState) {
|
|
@@ -104,16 +101,12 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
104
101
|
logger.debug('Skipping reconnection (intentional disconnect)');
|
|
105
102
|
return;
|
|
106
103
|
}
|
|
107
|
-
if ((0, exports.isNonRetryableError)(lastError ?? '')) {
|
|
108
|
-
logger.error(`Skipping reconnection (non-retryable error): ${lastError}`);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
104
|
if (!tcpSocket || tcpSocket.destroyed) {
|
|
112
105
|
logger.debug('Skipping reconnection (TCP socket closed)');
|
|
113
106
|
return;
|
|
114
107
|
}
|
|
115
108
|
if (reconnectAttempts >= maxReconnectAttempts) {
|
|
116
|
-
logger.error(`Max reconnection attempts (${maxReconnectAttempts}) reached. Closing tunnel
|
|
109
|
+
logger.error(`Max reconnection attempts (${maxReconnectAttempts}) reached. Closing tunnel.`);
|
|
117
110
|
close();
|
|
118
111
|
return;
|
|
119
112
|
}
|
|
@@ -133,28 +126,19 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
133
126
|
}
|
|
134
127
|
cleanup();
|
|
135
128
|
updateConnectionState('connecting');
|
|
136
|
-
|
|
137
|
-
const url = new URL(remoteURL);
|
|
138
|
-
if (sessionId) {
|
|
139
|
-
url.searchParams.set('sessionId', sessionId);
|
|
140
|
-
}
|
|
141
|
-
ws = new ws_1.WebSocket(url.toString(), {
|
|
129
|
+
ws = new ws_1.WebSocket(remoteURL, {
|
|
142
130
|
headers: { Authorization: `Bearer ${token}` },
|
|
143
131
|
perMessageDeflate: false,
|
|
144
132
|
});
|
|
145
133
|
ws.on('error', (err) => {
|
|
146
|
-
|
|
147
|
-
lastError = errMessage;
|
|
148
|
-
logger.debug('WebSocket error:', errMessage);
|
|
134
|
+
logger.error('WebSocket error:', err.message || err);
|
|
149
135
|
});
|
|
150
136
|
ws.on('close', () => {
|
|
151
137
|
if (pingInterval) {
|
|
152
138
|
clearInterval(pingInterval);
|
|
153
139
|
pingInterval = undefined;
|
|
154
140
|
}
|
|
155
|
-
const shouldReconnect = !intentionalDisconnect &&
|
|
156
|
-
!(0, exports.isNonRetryableError)(lastError ?? '') &&
|
|
157
|
-
connectionState !== 'disconnected';
|
|
141
|
+
const shouldReconnect = !intentionalDisconnect && connectionState !== 'disconnected';
|
|
158
142
|
updateConnectionState('disconnected');
|
|
159
143
|
logger.debug('WebSocket disconnected');
|
|
160
144
|
// Pause TCP socket to apply backpressure - TCP will handle buffering
|
|
@@ -165,18 +149,11 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
165
149
|
if (shouldReconnect && tcpSocket && !tcpSocket.destroyed) {
|
|
166
150
|
scheduleReconnect();
|
|
167
151
|
}
|
|
168
|
-
else if ((0, exports.isNonRetryableError)(lastError ?? '')) {
|
|
169
|
-
// Close entire tunnel on non-retryable errors (not just TCP socket)
|
|
170
|
-
// This prevents adb from reconnecting and triggering the same error
|
|
171
|
-
logger.error(`Closing tunnel due to non-retryable error: ${lastError}`);
|
|
172
|
-
close();
|
|
173
|
-
}
|
|
174
152
|
});
|
|
175
153
|
ws.on('open', () => {
|
|
176
154
|
const socket = ws;
|
|
177
155
|
logger.debug('WebSocket connected');
|
|
178
156
|
reconnectAttempts = 0;
|
|
179
|
-
lastError = undefined;
|
|
180
157
|
updateConnectionState('connected');
|
|
181
158
|
pingInterval = setInterval(() => {
|
|
182
159
|
if (socket.readyState === ws_1.WebSocket.OPEN) {
|
|
@@ -245,8 +222,6 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
245
222
|
// Reset reconnection state for next connection
|
|
246
223
|
reconnectAttempts = 0;
|
|
247
224
|
intentionalDisconnect = false;
|
|
248
|
-
sessionId = undefined;
|
|
249
|
-
lastError = undefined;
|
|
250
225
|
logger.debug('Connection cleaned up, ready for new TCP connection');
|
|
251
226
|
};
|
|
252
227
|
// On TCP connection (can happen multiple times)
|
|
@@ -257,11 +232,7 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
257
232
|
socket.destroy();
|
|
258
233
|
return;
|
|
259
234
|
}
|
|
260
|
-
|
|
261
|
-
// This ID persists across WebSocket reconnects, allowing the server
|
|
262
|
-
// to associate reconnecting clients with their existing ADB session.
|
|
263
|
-
sessionId = crypto.randomUUID();
|
|
264
|
-
logger.debug('TCP client connected', 'sessionId', sessionId);
|
|
235
|
+
logger.debug('TCP client connected');
|
|
265
236
|
tcpSocket = socket;
|
|
266
237
|
// TCP socket handlers
|
|
267
238
|
tcpSocket.on('close', () => {
|
|
@@ -279,13 +250,4 @@ async function startTcpTunnel(remoteURL, token, hostname, port, options) {
|
|
|
279
250
|
server.listen(port, hostname);
|
|
280
251
|
});
|
|
281
252
|
}
|
|
282
|
-
const isNonRetryableError = (errMessage) => {
|
|
283
|
-
const match = errMessage.match(/Unexpected server response: (\d+)/);
|
|
284
|
-
if (match && match[1]) {
|
|
285
|
-
const statusCode = parseInt(match[1], 10);
|
|
286
|
-
return statusCode >= 400 && statusCode < 500;
|
|
287
|
-
}
|
|
288
|
-
return false;
|
|
289
|
-
};
|
|
290
|
-
exports.isNonRetryableError = isNonRetryableError;
|
|
291
253
|
//# sourceMappingURL=tunnel.js.map
|
package/tunnel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"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"}
|
package/tunnel.mjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as crypto from 'crypto';
|
|
2
1
|
import * as net from 'net';
|
|
3
2
|
import { WebSocket } from 'ws';
|
|
4
3
|
/**
|
|
@@ -22,6 +21,7 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
22
21
|
const reconnectDelay = options?.reconnectDelay ?? 1000;
|
|
23
22
|
const maxReconnectDelay = options?.maxReconnectDelay ?? 30000;
|
|
24
23
|
const logLevel = options?.logLevel ?? 'info';
|
|
24
|
+
// Logger functions
|
|
25
25
|
const logger = {
|
|
26
26
|
debug: (...args) => {
|
|
27
27
|
if (logLevel === 'debug')
|
|
@@ -49,8 +49,6 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
49
49
|
let intentionalDisconnect = false;
|
|
50
50
|
let tcpSocket;
|
|
51
51
|
let connectionState = 'connecting';
|
|
52
|
-
let sessionId;
|
|
53
|
-
let lastError;
|
|
54
52
|
const stateChangeCallbacks = new Set();
|
|
55
53
|
const updateConnectionState = (newState) => {
|
|
56
54
|
if (connectionState !== newState) {
|
|
@@ -99,16 +97,12 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
99
97
|
logger.debug('Skipping reconnection (intentional disconnect)');
|
|
100
98
|
return;
|
|
101
99
|
}
|
|
102
|
-
if (isNonRetryableError(lastError ?? '')) {
|
|
103
|
-
logger.error(`Skipping reconnection (non-retryable error): ${lastError}`);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
100
|
if (!tcpSocket || tcpSocket.destroyed) {
|
|
107
101
|
logger.debug('Skipping reconnection (TCP socket closed)');
|
|
108
102
|
return;
|
|
109
103
|
}
|
|
110
104
|
if (reconnectAttempts >= maxReconnectAttempts) {
|
|
111
|
-
logger.error(`Max reconnection attempts (${maxReconnectAttempts}) reached. Closing tunnel
|
|
105
|
+
logger.error(`Max reconnection attempts (${maxReconnectAttempts}) reached. Closing tunnel.`);
|
|
112
106
|
close();
|
|
113
107
|
return;
|
|
114
108
|
}
|
|
@@ -128,28 +122,19 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
128
122
|
}
|
|
129
123
|
cleanup();
|
|
130
124
|
updateConnectionState('connecting');
|
|
131
|
-
|
|
132
|
-
const url = new URL(remoteURL);
|
|
133
|
-
if (sessionId) {
|
|
134
|
-
url.searchParams.set('sessionId', sessionId);
|
|
135
|
-
}
|
|
136
|
-
ws = new WebSocket(url.toString(), {
|
|
125
|
+
ws = new WebSocket(remoteURL, {
|
|
137
126
|
headers: { Authorization: `Bearer ${token}` },
|
|
138
127
|
perMessageDeflate: false,
|
|
139
128
|
});
|
|
140
129
|
ws.on('error', (err) => {
|
|
141
|
-
|
|
142
|
-
lastError = errMessage;
|
|
143
|
-
logger.debug('WebSocket error:', errMessage);
|
|
130
|
+
logger.error('WebSocket error:', err.message || err);
|
|
144
131
|
});
|
|
145
132
|
ws.on('close', () => {
|
|
146
133
|
if (pingInterval) {
|
|
147
134
|
clearInterval(pingInterval);
|
|
148
135
|
pingInterval = undefined;
|
|
149
136
|
}
|
|
150
|
-
const shouldReconnect = !intentionalDisconnect &&
|
|
151
|
-
!isNonRetryableError(lastError ?? '') &&
|
|
152
|
-
connectionState !== 'disconnected';
|
|
137
|
+
const shouldReconnect = !intentionalDisconnect && connectionState !== 'disconnected';
|
|
153
138
|
updateConnectionState('disconnected');
|
|
154
139
|
logger.debug('WebSocket disconnected');
|
|
155
140
|
// Pause TCP socket to apply backpressure - TCP will handle buffering
|
|
@@ -160,18 +145,11 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
160
145
|
if (shouldReconnect && tcpSocket && !tcpSocket.destroyed) {
|
|
161
146
|
scheduleReconnect();
|
|
162
147
|
}
|
|
163
|
-
else if (isNonRetryableError(lastError ?? '')) {
|
|
164
|
-
// Close entire tunnel on non-retryable errors (not just TCP socket)
|
|
165
|
-
// This prevents adb from reconnecting and triggering the same error
|
|
166
|
-
logger.error(`Closing tunnel due to non-retryable error: ${lastError}`);
|
|
167
|
-
close();
|
|
168
|
-
}
|
|
169
148
|
});
|
|
170
149
|
ws.on('open', () => {
|
|
171
150
|
const socket = ws;
|
|
172
151
|
logger.debug('WebSocket connected');
|
|
173
152
|
reconnectAttempts = 0;
|
|
174
|
-
lastError = undefined;
|
|
175
153
|
updateConnectionState('connected');
|
|
176
154
|
pingInterval = setInterval(() => {
|
|
177
155
|
if (socket.readyState === WebSocket.OPEN) {
|
|
@@ -240,8 +218,6 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
240
218
|
// Reset reconnection state for next connection
|
|
241
219
|
reconnectAttempts = 0;
|
|
242
220
|
intentionalDisconnect = false;
|
|
243
|
-
sessionId = undefined;
|
|
244
|
-
lastError = undefined;
|
|
245
221
|
logger.debug('Connection cleaned up, ready for new TCP connection');
|
|
246
222
|
};
|
|
247
223
|
// On TCP connection (can happen multiple times)
|
|
@@ -252,11 +228,7 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
252
228
|
socket.destroy();
|
|
253
229
|
return;
|
|
254
230
|
}
|
|
255
|
-
|
|
256
|
-
// This ID persists across WebSocket reconnects, allowing the server
|
|
257
|
-
// to associate reconnecting clients with their existing ADB session.
|
|
258
|
-
sessionId = crypto.randomUUID();
|
|
259
|
-
logger.debug('TCP client connected', 'sessionId', sessionId);
|
|
231
|
+
logger.debug('TCP client connected');
|
|
260
232
|
tcpSocket = socket;
|
|
261
233
|
// TCP socket handlers
|
|
262
234
|
tcpSocket.on('close', () => {
|
|
@@ -274,12 +246,4 @@ export async function startTcpTunnel(remoteURL, token, hostname, port, options)
|
|
|
274
246
|
server.listen(port, hostname);
|
|
275
247
|
});
|
|
276
248
|
}
|
|
277
|
-
export const isNonRetryableError = (errMessage) => {
|
|
278
|
-
const match = errMessage.match(/Unexpected server response: (\d+)/);
|
|
279
|
-
if (match && match[1]) {
|
|
280
|
-
const statusCode = parseInt(match[1], 10);
|
|
281
|
-
return statusCode >= 400 && statusCode < 500;
|
|
282
|
-
}
|
|
283
|
-
return false;
|
|
284
|
-
};
|
|
285
249
|
//# sourceMappingURL=tunnel.mjs.map
|
package/tunnel.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.mjs","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tunnel.mjs","sourceRoot":"","sources":["src/tunnel.ts"],"names":[],"mappings":"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"}
|
package/version.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.17.0-rc.2";
|
|
2
2
|
//# sourceMappingURL=version.d.mts.map
|
package/version.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.mts","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.mts","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,gBAAgB,CAAC"}
|
package/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.17.0-rc.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,gBAAgB,CAAC"}
|
package/version.js
CHANGED
package/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,aAAa,CAAC,CAAC,2BAA2B"}
|
package/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.
|
|
1
|
+
export const VERSION = '0.17.0-rc.2'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.mjs.map
|
package/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.mjs","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,2BAA2B"}
|