@testdroid-ai/cli 0.1.3 → 0.1.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAeA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgDD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAeA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgDD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA2N3E"}
|
package/dist/commands/connect.js
CHANGED
|
@@ -203,6 +203,12 @@ async function connectCommand(options) {
|
|
|
203
203
|
const message = err instanceof Error ? err.message : String(err);
|
|
204
204
|
spinner.fail(chalk_1.default.red(`Connection error: ${message}`));
|
|
205
205
|
wsClient.disconnect();
|
|
206
|
+
// Stale credentials — server rejected the WebSocket handshake. Clear
|
|
207
|
+
// the saved token so the next `testdroid connect` falls back to pairing.
|
|
208
|
+
if (err instanceof socket_1.AuthRejectedError) {
|
|
209
|
+
tokenManager.clear();
|
|
210
|
+
console.log(chalk_1.default.yellow(' Saved credentials cleared. Run `testdroid connect` again to re-pair.'));
|
|
211
|
+
}
|
|
206
212
|
return;
|
|
207
213
|
}
|
|
208
214
|
// ─── Device Tracking ────────────────────────────────────────────
|
|
@@ -215,7 +221,9 @@ async function connectCommand(options) {
|
|
|
215
221
|
try {
|
|
216
222
|
wsClient.registerDevice(device);
|
|
217
223
|
}
|
|
218
|
-
catch {
|
|
224
|
+
catch (err) {
|
|
225
|
+
console.log(chalk_1.default.yellow(` (server registration skipped: ${err.message})`));
|
|
226
|
+
}
|
|
219
227
|
});
|
|
220
228
|
tracker.on('remove', (serial) => {
|
|
221
229
|
const idx = devices.findIndex((d) => d.serial === serial);
|
|
@@ -226,7 +234,9 @@ async function connectCommand(options) {
|
|
|
226
234
|
try {
|
|
227
235
|
wsClient.unregisterDevice(serial);
|
|
228
236
|
}
|
|
229
|
-
catch {
|
|
237
|
+
catch (err) {
|
|
238
|
+
console.log(chalk_1.default.dim(` (unregister skipped: ${err.message})`));
|
|
239
|
+
}
|
|
230
240
|
});
|
|
231
241
|
tracker.on('error', (err) => {
|
|
232
242
|
console.log(chalk_1.default.dim(` ADB tracker error: ${err.message}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
package/dist/ws/socket.d.ts
CHANGED
|
@@ -1,38 +1,18 @@
|
|
|
1
1
|
import { Socket } from 'socket.io-client';
|
|
2
2
|
import { Device } from '@testdroid-ai/shared';
|
|
3
|
+
export declare class AuthRejectedError extends Error {
|
|
4
|
+
readonly reason: string;
|
|
5
|
+
constructor(reason: string);
|
|
6
|
+
}
|
|
3
7
|
export declare class WebSocketClient {
|
|
4
8
|
private socket;
|
|
5
|
-
/**
|
|
6
|
-
* Conecta ao servidor backend via WebSocket.
|
|
7
|
-
*/
|
|
8
9
|
connect(url: string, token: string): Promise<void>;
|
|
9
|
-
/**
|
|
10
|
-
* Registra um dispositivo no backend.
|
|
11
|
-
*/
|
|
12
10
|
registerDevice(device: Device): void;
|
|
13
|
-
/**
|
|
14
|
-
* Remove o registro de um dispositivo do backend.
|
|
15
|
-
*/
|
|
16
11
|
unregisterDevice(serial: string): void;
|
|
17
|
-
/**
|
|
18
|
-
* Escuta um evento do servidor.
|
|
19
|
-
*/
|
|
20
12
|
on(event: string, callback: (...args: any[]) => void): void;
|
|
21
|
-
/**
|
|
22
|
-
* Emite um evento para o servidor.
|
|
23
|
-
*/
|
|
24
13
|
emit(event: string, data?: any): void;
|
|
25
|
-
/**
|
|
26
|
-
* Retorna o socket para uso direto (ex: listening de eventos).
|
|
27
|
-
*/
|
|
28
14
|
getSocket(): Socket | null;
|
|
29
|
-
/**
|
|
30
|
-
* Verifica se esta conectado.
|
|
31
|
-
*/
|
|
32
15
|
isConnected(): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Desconecta do servidor.
|
|
35
|
-
*/
|
|
36
16
|
disconnect(): void;
|
|
37
17
|
}
|
|
38
18
|
//# sourceMappingURL=socket.d.ts.map
|
package/dist/ws/socket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/ws/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAa,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/ws/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAa,MAAM,sBAAsB,CAAC;AAUzD,qBAAa,iBAAkB,SAAQ,KAAK;aACd,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAQ3C;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAuB;IAE/B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDxD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOtC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI3D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAOrC,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,IAAI;CAMnB"}
|
package/dist/ws/socket.js
CHANGED
|
@@ -1,85 +1,102 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebSocketClient = void 0;
|
|
3
|
+
exports.WebSocketClient = exports.AuthRejectedError = void 0;
|
|
4
4
|
const socket_io_client_1 = require("socket.io-client");
|
|
5
5
|
const shared_1 = require("@testdroid-ai/shared");
|
|
6
|
+
/**
|
|
7
|
+
* Window after `connect` in which an immediate `disconnect` is treated as an
|
|
8
|
+
* authentication rejection from the server. The backend's WsJwtGuard runs
|
|
9
|
+
* asynchronously after the transport is established, so a revoked or invalid
|
|
10
|
+
* token causes the server to disconnect the socket shortly after `connect` fires.
|
|
11
|
+
*/
|
|
12
|
+
const AUTH_CONFIRM_WINDOW_MS = 1500;
|
|
13
|
+
class AuthRejectedError extends Error {
|
|
14
|
+
reason;
|
|
15
|
+
constructor(reason) {
|
|
16
|
+
super(`Servidor rejeitou a conexao (${reason}). ` +
|
|
17
|
+
`Sua sessao pode ter sido revogada. ` +
|
|
18
|
+
`Rode 'testdroid connect' novamente para parear.`);
|
|
19
|
+
this.reason = reason;
|
|
20
|
+
this.name = 'AuthRejectedError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.AuthRejectedError = AuthRejectedError;
|
|
6
24
|
class WebSocketClient {
|
|
7
25
|
socket = null;
|
|
8
|
-
/**
|
|
9
|
-
* Conecta ao servidor backend via WebSocket.
|
|
10
|
-
*/
|
|
11
26
|
async connect(url, token) {
|
|
12
27
|
return new Promise((resolve, reject) => {
|
|
28
|
+
let settled = false;
|
|
29
|
+
const settle = (fn) => {
|
|
30
|
+
if (settled)
|
|
31
|
+
return;
|
|
32
|
+
settled = true;
|
|
33
|
+
fn();
|
|
34
|
+
};
|
|
35
|
+
// Reconnection is disabled during handshake so that a server-side
|
|
36
|
+
// disconnect surfaces as an error instead of triggering a silent retry
|
|
37
|
+
// loop. It gets enabled after the auth-confirm window passes.
|
|
13
38
|
this.socket = (0, socket_io_client_1.io)(url, {
|
|
14
39
|
auth: { token },
|
|
15
40
|
transports: ['websocket'],
|
|
16
|
-
reconnection:
|
|
17
|
-
|
|
18
|
-
|
|
41
|
+
reconnection: false,
|
|
42
|
+
});
|
|
43
|
+
this.socket.on('connect_error', (err) => {
|
|
44
|
+
settle(() => reject(new Error(`Falha na conexao: ${err.message}`)));
|
|
19
45
|
});
|
|
20
46
|
this.socket.on('connect', () => {
|
|
21
|
-
|
|
47
|
+
// Wait AUTH_CONFIRM_WINDOW_MS. If the server disconnects us in that
|
|
48
|
+
// window, the `disconnect` handler below rejects. Otherwise we
|
|
49
|
+
// consider the handshake accepted and enable reconnection.
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
if (!this.socket?.connected)
|
|
52
|
+
return; // disconnect handler fires
|
|
53
|
+
const manager = this.socket.io;
|
|
54
|
+
if (manager?.opts) {
|
|
55
|
+
manager.opts.reconnection = true;
|
|
56
|
+
manager.opts.reconnectionAttempts = 5;
|
|
57
|
+
manager.opts.reconnectionDelay = 2000;
|
|
58
|
+
}
|
|
59
|
+
settle(() => resolve());
|
|
60
|
+
}, AUTH_CONFIRM_WINDOW_MS);
|
|
22
61
|
});
|
|
23
|
-
this.socket.on('
|
|
24
|
-
reject(new
|
|
62
|
+
this.socket.on('disconnect', (reason) => {
|
|
63
|
+
settle(() => reject(new AuthRejectedError(reason)));
|
|
25
64
|
});
|
|
26
|
-
// Timeout de conexão
|
|
27
65
|
setTimeout(() => {
|
|
28
66
|
if (!this.socket?.connected) {
|
|
29
67
|
this.socket?.disconnect();
|
|
30
|
-
reject(new Error('Timeout: nao foi possivel conectar ao servidor'));
|
|
68
|
+
settle(() => reject(new Error('Timeout: nao foi possivel conectar ao servidor')));
|
|
31
69
|
}
|
|
32
70
|
}, 10000);
|
|
33
71
|
});
|
|
34
72
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Registra um dispositivo no backend.
|
|
37
|
-
*/
|
|
38
73
|
registerDevice(device) {
|
|
39
74
|
if (!this.socket?.connected) {
|
|
40
75
|
throw new Error('WebSocket nao conectado');
|
|
41
76
|
}
|
|
42
77
|
this.socket.emit(shared_1.WS_EVENTS.DEVICE_CONNECTED, device);
|
|
43
78
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Remove o registro de um dispositivo do backend.
|
|
46
|
-
*/
|
|
47
79
|
unregisterDevice(serial) {
|
|
48
80
|
if (!this.socket?.connected) {
|
|
49
81
|
throw new Error('WebSocket nao conectado');
|
|
50
82
|
}
|
|
51
83
|
this.socket.emit(shared_1.WS_EVENTS.DEVICE_DISCONNECTED, { serial });
|
|
52
84
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Escuta um evento do servidor.
|
|
55
|
-
*/
|
|
56
85
|
on(event, callback) {
|
|
57
86
|
this.socket?.on(event, callback);
|
|
58
87
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Emite um evento para o servidor.
|
|
61
|
-
*/
|
|
62
88
|
emit(event, data) {
|
|
63
89
|
if (!this.socket?.connected) {
|
|
64
90
|
throw new Error('WebSocket nao conectado');
|
|
65
91
|
}
|
|
66
92
|
this.socket.emit(event, data);
|
|
67
93
|
}
|
|
68
|
-
/**
|
|
69
|
-
* Retorna o socket para uso direto (ex: listening de eventos).
|
|
70
|
-
*/
|
|
71
94
|
getSocket() {
|
|
72
95
|
return this.socket;
|
|
73
96
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Verifica se esta conectado.
|
|
76
|
-
*/
|
|
77
97
|
isConnected() {
|
|
78
98
|
return this.socket?.connected ?? false;
|
|
79
99
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Desconecta do servidor.
|
|
82
|
-
*/
|
|
83
100
|
disconnect() {
|
|
84
101
|
if (this.socket) {
|
|
85
102
|
this.socket.disconnect();
|
package/dist/ws/socket.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/ws/socket.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAC9C,iDAAyD;AAEzD,MAAa,eAAe;IAClB,MAAM,GAAkB,IAAI,CAAC;IAErC
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/ws/socket.ts"],"names":[],"mappings":"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"}
|