devportal-tunnel 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -4
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +13 -13
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/list.js +3 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/port.d.ts +2 -0
- package/dist/commands/port.d.ts.map +1 -0
- package/dist/commands/port.js +192 -0
- package/dist/commands/port.js.map +1 -0
- package/dist/commands/start.d.ts +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +138 -67
- package/dist/commands/start.js.map +1 -1
- package/dist/index.js +56 -44
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -10
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +56 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/tunnelClient.d.ts +34 -3
- package/dist/utils/tunnelClient.d.ts.map +1 -1
- package/dist/utils/tunnelClient.js +378 -104
- package/dist/utils/tunnelClient.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface LogEntry {
|
|
2
|
+
time: string;
|
|
3
|
+
method: string;
|
|
4
|
+
path: string;
|
|
5
|
+
status: number;
|
|
6
|
+
duration: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function formatLog(entry: LogEntry): string;
|
|
9
|
+
/**
|
|
10
|
+
* Log a request to the terminal and optionally to a file.
|
|
11
|
+
* @param method HTTP method
|
|
12
|
+
* @param path Request path
|
|
13
|
+
* @param status HTTP status code
|
|
14
|
+
* @param duration Duration in ms
|
|
15
|
+
* @param logFile Optional log file path
|
|
16
|
+
*/
|
|
17
|
+
export declare function logRequest(method: string, path: string, status: number, duration: number, logFile?: string): void;
|
|
18
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAqBjD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,QAkBjB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.formatLog = formatLog;
|
|
7
|
+
exports.logRequest = logRequest;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
function formatLog(entry) {
|
|
11
|
+
const methodColor = entry.method === "GET"
|
|
12
|
+
? chalk_1.default.green
|
|
13
|
+
: entry.method === "POST"
|
|
14
|
+
? chalk_1.default.blue
|
|
15
|
+
: chalk_1.default.yellow;
|
|
16
|
+
const statusColor = entry.status >= 500
|
|
17
|
+
? chalk_1.default.red
|
|
18
|
+
: entry.status >= 400
|
|
19
|
+
? chalk_1.default.yellow
|
|
20
|
+
: chalk_1.default.green;
|
|
21
|
+
return [
|
|
22
|
+
chalk_1.default.gray(`[${entry.time}]`),
|
|
23
|
+
methodColor(entry.method.padEnd(6)),
|
|
24
|
+
chalk_1.default.white(entry.path.padEnd(20)),
|
|
25
|
+
statusColor(entry.status.toString().padEnd(4)),
|
|
26
|
+
chalk_1.default.gray(`${entry.duration}ms`),
|
|
27
|
+
].join(" ");
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Log a request to the terminal and optionally to a file.
|
|
31
|
+
* @param method HTTP method
|
|
32
|
+
* @param path Request path
|
|
33
|
+
* @param status HTTP status code
|
|
34
|
+
* @param duration Duration in ms
|
|
35
|
+
* @param logFile Optional log file path
|
|
36
|
+
*/
|
|
37
|
+
function logRequest(method, path, status, duration, logFile) {
|
|
38
|
+
const entry = {
|
|
39
|
+
time: new Date().toLocaleTimeString(),
|
|
40
|
+
method,
|
|
41
|
+
path,
|
|
42
|
+
status,
|
|
43
|
+
duration,
|
|
44
|
+
};
|
|
45
|
+
const line = formatLog(entry);
|
|
46
|
+
console.log(line);
|
|
47
|
+
if (logFile) {
|
|
48
|
+
try {
|
|
49
|
+
fs_1.default.appendFileSync(logFile, line + "\n");
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
// Ignore file errors for now
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;AAWA,8BAqBC;AAUD,gCAuBC;AAjED,kDAA0B;AAC1B,4CAAoB;AAUpB,SAAgB,SAAS,CAAC,KAAe;IACvC,MAAM,WAAW,GACf,KAAK,CAAC,MAAM,KAAK,KAAK;QACpB,CAAC,CAAC,eAAK,CAAC,KAAK;QACb,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;YACvB,CAAC,CAAC,eAAK,CAAC,IAAI;YACZ,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC;IACrB,MAAM,WAAW,GACf,KAAK,CAAC,MAAM,IAAI,GAAG;QACjB,CAAC,CAAC,eAAK,CAAC,GAAG;QACX,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG;YACnB,CAAC,CAAC,eAAK,CAAC,MAAM;YACd,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC;IAEpB,OAAO;QACL,eAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;QAC7B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9C,eAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC;KAClC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CACxB,MAAc,EACd,IAAY,EACZ,MAAc,EACd,QAAgB,EAChB,OAAgB;IAEhB,MAAM,KAAK,GAAa;QACtB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE;QACrC,MAAM;QACN,IAAI;QACJ,MAAM;QACN,QAAQ;KACT,CAAC;IACF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,YAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,6BAA6B;QAC/B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { EventEmitter } from
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
2
|
export interface TunnelConfig {
|
|
3
3
|
serverUrl: string;
|
|
4
4
|
wsUrl: string;
|
|
5
5
|
deviceId: string;
|
|
6
6
|
localPort: number;
|
|
7
|
+
remotePort?: number;
|
|
7
8
|
subdomain?: string;
|
|
8
9
|
password?: string;
|
|
9
10
|
demo?: boolean;
|
|
@@ -17,19 +18,49 @@ export interface TunnelInfo {
|
|
|
17
18
|
}
|
|
18
19
|
export declare class TunnelClient extends EventEmitter {
|
|
19
20
|
private ws;
|
|
21
|
+
/**
|
|
22
|
+
* Local application WebSocket connections.
|
|
23
|
+
*
|
|
24
|
+
* wsId = browser WebSocket ID generated by the server.
|
|
25
|
+
*/
|
|
26
|
+
private localWebSockets;
|
|
20
27
|
private config;
|
|
21
28
|
private reconnectAttempts;
|
|
22
29
|
private maxReconnectAttempts;
|
|
23
|
-
private
|
|
30
|
+
private baseReconnectDelay;
|
|
24
31
|
private isConnected;
|
|
25
32
|
private tunnelInfo;
|
|
33
|
+
private pingInterval;
|
|
34
|
+
private isReconnecting;
|
|
35
|
+
private shouldReconnect;
|
|
26
36
|
constructor(config: TunnelConfig);
|
|
27
37
|
connect(): Promise<TunnelInfo>;
|
|
38
|
+
private setupWebSocket;
|
|
39
|
+
private scheduleReconnect;
|
|
40
|
+
private startPingInterval;
|
|
41
|
+
private stopPingInterval;
|
|
28
42
|
private handleMessage;
|
|
43
|
+
/**
|
|
44
|
+
* Browser -> Server -> CLI
|
|
45
|
+
*
|
|
46
|
+
* Server tells CLI to create a local WebSocket.
|
|
47
|
+
*/
|
|
48
|
+
private handleWebSocketOpen;
|
|
49
|
+
/**
|
|
50
|
+
* Browser -> Server -> CLI -> Local app
|
|
51
|
+
*/
|
|
52
|
+
private handleWebSocketMessage;
|
|
53
|
+
/**
|
|
54
|
+
* Browser -> Server -> CLI
|
|
55
|
+
*
|
|
56
|
+
* Close local WebSocket.
|
|
57
|
+
*/
|
|
58
|
+
private handleWebSocketClose;
|
|
59
|
+
private closeAllLocalWebSockets;
|
|
29
60
|
private handleIncomingRequest;
|
|
30
61
|
private makeLocalRequest;
|
|
31
62
|
private send;
|
|
32
|
-
stop(): void
|
|
63
|
+
stop(): Promise<void>;
|
|
33
64
|
getTunnelInfo(): TunnelInfo | null;
|
|
34
65
|
}
|
|
35
66
|
//# sourceMappingURL=tunnelClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnelClient.d.ts","sourceRoot":"","sources":["../../src/utils/tunnelClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,EAAE,CAA0B;
|
|
1
|
+
{"version":3,"file":"tunnelClient.d.ts","sourceRoot":"","sources":["../../src/utils/tunnelClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,EAAE,CAA0B;IAEpC;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAgC;IAEvD,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAQ;IAElC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,YAAY,CAA+B;IAEnD,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,eAAe,CAAQ;gBAEnB,MAAM,EAAE,YAAY;IAM1B,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAMpC,OAAO,CAAC,cAAc;IA4FtB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,gBAAgB;YAQV,aAAa;IA8E3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA0H3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,uBAAuB;YAajB,qBAAqB;IA+EnC,OAAO,CAAC,gBAAgB;IAiGxB,OAAO,CAAC,IAAI;IAMN,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B,aAAa,IAAI,UAAU,GAAG,IAAI;CAGnC"}
|