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.
@@ -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 'events';
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 reconnectDelay;
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;IACpC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,EAAE,YAAY;IAK1B,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;YA8DtB,aAAa;YA+Bb,qBAAqB;IAgDnC,OAAO,CAAC,gBAAgB;IAwExB,OAAO,CAAC,IAAI;IAMZ,IAAI,IAAI,IAAI;IAOZ,aAAa,IAAI,UAAU,GAAG,IAAI;CAGnC"}
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"}