nport 2.1.1 → 2.1.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.
Files changed (62) hide show
  1. package/dist/bin-manager.js +1 -209
  2. package/dist/index.js +69 -91
  3. package/package.json +7 -7
  4. package/CHANGELOG.md +0 -449
  5. package/dist/analytics.d.ts +0 -59
  6. package/dist/analytics.js +0 -193
  7. package/dist/analytics.js.map +0 -1
  8. package/dist/api.d.ts +0 -20
  9. package/dist/api.js +0 -85
  10. package/dist/api.js.map +0 -1
  11. package/dist/args.d.ts +0 -44
  12. package/dist/args.js +0 -127
  13. package/dist/args.js.map +0 -1
  14. package/dist/bin-manager.d.ts +0 -1
  15. package/dist/bin-manager.js.map +0 -1
  16. package/dist/binary.d.ts +0 -42
  17. package/dist/binary.js +0 -119
  18. package/dist/binary.js.map +0 -1
  19. package/dist/config-manager.d.ts +0 -54
  20. package/dist/config-manager.js +0 -129
  21. package/dist/config-manager.js.map +0 -1
  22. package/dist/config.d.ts +0 -25
  23. package/dist/config.js +0 -59
  24. package/dist/config.js.map +0 -1
  25. package/dist/constants.d.ts +0 -61
  26. package/dist/constants.js +0 -86
  27. package/dist/constants.js.map +0 -1
  28. package/dist/index.d.ts +0 -7
  29. package/dist/index.js.map +0 -1
  30. package/dist/lang.d.ts +0 -38
  31. package/dist/lang.js +0 -217
  32. package/dist/lang.js.map +0 -1
  33. package/dist/state.d.ts +0 -82
  34. package/dist/state.js +0 -139
  35. package/dist/state.js.map +0 -1
  36. package/dist/tunnel.d.ts +0 -16
  37. package/dist/tunnel.js +0 -101
  38. package/dist/tunnel.js.map +0 -1
  39. package/dist/types/analytics.d.ts +0 -91
  40. package/dist/types/analytics.js +0 -8
  41. package/dist/types/analytics.js.map +0 -1
  42. package/dist/types/config.d.ts +0 -89
  43. package/dist/types/config.js +0 -8
  44. package/dist/types/config.js.map +0 -1
  45. package/dist/types/i18n.d.ts +0 -75
  46. package/dist/types/i18n.js +0 -5
  47. package/dist/types/i18n.js.map +0 -1
  48. package/dist/types/index.d.ts +0 -10
  49. package/dist/types/index.js +0 -7
  50. package/dist/types/index.js.map +0 -1
  51. package/dist/types/tunnel.d.ts +0 -74
  52. package/dist/types/tunnel.js +0 -8
  53. package/dist/types/tunnel.js.map +0 -1
  54. package/dist/types/version.d.ts +0 -25
  55. package/dist/types/version.js +0 -5
  56. package/dist/types/version.js.map +0 -1
  57. package/dist/ui.d.ts +0 -54
  58. package/dist/ui.js +0 -120
  59. package/dist/ui.js.map +0 -1
  60. package/dist/version.d.ts +0 -16
  61. package/dist/version.js +0 -49
  62. package/dist/version.js.map +0 -1
package/dist/state.d.ts DELETED
@@ -1,82 +0,0 @@
1
- import type { ChildProcess } from 'child_process';
2
- import type { UpdateCheckResult } from './types/index.js';
3
- /**
4
- * Application State Manager
5
- *
6
- * Singleton class that manages all runtime state for the tunnel.
7
- */
8
- declare class TunnelState {
9
- tunnelId: string | null;
10
- subdomain: string | null;
11
- port: number | null;
12
- backendUrl: string | null;
13
- tunnelProcess: ChildProcess | null;
14
- private timeoutId;
15
- connectionCount: number;
16
- startTime: number | null;
17
- updateInfo: UpdateCheckResult | null;
18
- private networkIssueCount;
19
- private lastNetworkWarningTime;
20
- networkWarningShown: boolean;
21
- /**
22
- * Sets the tunnel connection information.
23
- */
24
- setTunnel(tunnelId: string | null, subdomain: string, port: number, backendUrl?: string | null): void;
25
- /**
26
- * Stores version update information.
27
- */
28
- setUpdateInfo(updateInfo: UpdateCheckResult | null): void;
29
- /**
30
- * Stores reference to the cloudflared child process.
31
- */
32
- setProcess(process: ChildProcess): void;
33
- /**
34
- * Stores the auto-cleanup timeout ID.
35
- */
36
- setTimeout(timeoutId: ReturnType<typeof setTimeout>): void;
37
- /**
38
- * Clears the auto-cleanup timeout if set.
39
- */
40
- clearTimeout(): void;
41
- /**
42
- * Increments the connection count and returns the new value.
43
- */
44
- incrementConnection(): number;
45
- /**
46
- * Checks if a tunnel is currently active.
47
- */
48
- hasTunnel(): boolean;
49
- /**
50
- * Checks if the cloudflared process is running.
51
- */
52
- hasProcess(): boolean;
53
- /**
54
- * Gets the tunnel duration in seconds.
55
- */
56
- getDurationSeconds(): number;
57
- /**
58
- * Increments the network issue counter.
59
- */
60
- incrementNetworkIssue(): number;
61
- /**
62
- * Resets the network issue counter.
63
- */
64
- resetNetworkIssues(): void;
65
- /**
66
- * Determines if a network warning should be shown.
67
- */
68
- shouldShowNetworkWarning(threshold: number, cooldown: number): boolean;
69
- /**
70
- * Sets whether a network warning has been shown.
71
- */
72
- setNetworkWarningShown(value: boolean): void;
73
- /**
74
- * Resets all state to initial values.
75
- */
76
- reset(): void;
77
- }
78
- /**
79
- * Singleton instance
80
- */
81
- export declare const state: TunnelState;
82
- export {};
package/dist/state.js DELETED
@@ -1,139 +0,0 @@
1
- /**
2
- * Application State Manager
3
- *
4
- * Singleton class that manages all runtime state for the tunnel.
5
- */
6
- class TunnelState {
7
- tunnelId = null;
8
- subdomain = null;
9
- port = null;
10
- backendUrl = null;
11
- tunnelProcess = null;
12
- timeoutId = null;
13
- connectionCount = 0;
14
- startTime = null;
15
- updateInfo = null;
16
- // Network issue tracking
17
- networkIssueCount = 0;
18
- lastNetworkWarningTime = 0;
19
- networkWarningShown = false;
20
- /**
21
- * Sets the tunnel connection information.
22
- */
23
- setTunnel(tunnelId, subdomain, port, backendUrl = null) {
24
- this.tunnelId = tunnelId;
25
- this.subdomain = subdomain;
26
- this.port = port;
27
- this.backendUrl = backendUrl;
28
- if (!this.startTime) {
29
- this.startTime = Date.now();
30
- }
31
- }
32
- /**
33
- * Stores version update information.
34
- */
35
- setUpdateInfo(updateInfo) {
36
- this.updateInfo = updateInfo;
37
- }
38
- /**
39
- * Stores reference to the cloudflared child process.
40
- */
41
- setProcess(process) {
42
- this.tunnelProcess = process;
43
- }
44
- /**
45
- * Stores the auto-cleanup timeout ID.
46
- */
47
- setTimeout(timeoutId) {
48
- this.timeoutId = timeoutId;
49
- }
50
- /**
51
- * Clears the auto-cleanup timeout if set.
52
- */
53
- clearTimeout() {
54
- if (this.timeoutId) {
55
- clearTimeout(this.timeoutId);
56
- this.timeoutId = null;
57
- }
58
- }
59
- /**
60
- * Increments the connection count and returns the new value.
61
- */
62
- incrementConnection() {
63
- this.connectionCount++;
64
- return this.connectionCount;
65
- }
66
- /**
67
- * Checks if a tunnel is currently active.
68
- */
69
- hasTunnel() {
70
- return this.tunnelId !== null;
71
- }
72
- /**
73
- * Checks if the cloudflared process is running.
74
- */
75
- hasProcess() {
76
- return this.tunnelProcess !== null && !this.tunnelProcess.killed;
77
- }
78
- /**
79
- * Gets the tunnel duration in seconds.
80
- */
81
- getDurationSeconds() {
82
- if (!this.startTime)
83
- return 0;
84
- return (Date.now() - this.startTime) / 1000;
85
- }
86
- /**
87
- * Increments the network issue counter.
88
- */
89
- incrementNetworkIssue() {
90
- this.networkIssueCount++;
91
- return this.networkIssueCount;
92
- }
93
- /**
94
- * Resets the network issue counter.
95
- */
96
- resetNetworkIssues() {
97
- this.networkIssueCount = 0;
98
- }
99
- /**
100
- * Determines if a network warning should be shown.
101
- */
102
- shouldShowNetworkWarning(threshold, cooldown) {
103
- const now = Date.now();
104
- if (this.networkIssueCount >= threshold &&
105
- now - this.lastNetworkWarningTime > cooldown) {
106
- this.lastNetworkWarningTime = now;
107
- return true;
108
- }
109
- return false;
110
- }
111
- /**
112
- * Sets whether a network warning has been shown.
113
- */
114
- setNetworkWarningShown(value) {
115
- this.networkWarningShown = value;
116
- }
117
- /**
118
- * Resets all state to initial values.
119
- */
120
- reset() {
121
- this.clearTimeout();
122
- this.tunnelId = null;
123
- this.subdomain = null;
124
- this.port = null;
125
- this.backendUrl = null;
126
- this.tunnelProcess = null;
127
- this.connectionCount = 0;
128
- this.startTime = null;
129
- this.updateInfo = null;
130
- this.networkIssueCount = 0;
131
- this.lastNetworkWarningTime = 0;
132
- this.networkWarningShown = false;
133
- }
134
- }
135
- /**
136
- * Singleton instance
137
- */
138
- export const state = new TunnelState();
139
- //# sourceMappingURL=state.js.map
package/dist/state.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,WAAW;IACf,QAAQ,GAAkB,IAAI,CAAC;IAC/B,SAAS,GAAkB,IAAI,CAAC;IAChC,IAAI,GAAkB,IAAI,CAAC;IAC3B,UAAU,GAAkB,IAAI,CAAC;IACjC,aAAa,GAAwB,IAAI,CAAC;IAClC,SAAS,GAAyC,IAAI,CAAC;IAC/D,eAAe,GAAG,CAAC,CAAC;IACpB,SAAS,GAAkB,IAAI,CAAC;IAChC,UAAU,GAA6B,IAAI,CAAC;IAE5C,yBAAyB;IACjB,iBAAiB,GAAG,CAAC,CAAC;IACtB,sBAAsB,GAAG,CAAC,CAAC;IACnC,mBAAmB,GAAG,KAAK,CAAC;IAE5B;;OAEG;IACH,SAAS,CACP,QAAuB,EACvB,SAAiB,EACjB,IAAY,EACZ,aAA4B,IAAI;QAEhC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAoC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAqB;QAC9B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAwC;QACjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,SAAiB,EAAE,QAAgB;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IACE,IAAI,CAAC,iBAAiB,IAAI,SAAS;YACnC,GAAG,GAAG,IAAI,CAAC,sBAAsB,GAAG,QAAQ,EAC5C,CAAC;YACD,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAc;QACnC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC"}
package/dist/tunnel.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import type { TunnelConfig, ShutdownReason } from './types/index.js';
2
- /**
3
- * Tunnel Orchestrator
4
- *
5
- * Main controller for the entire tunnel lifecycle.
6
- */
7
- export declare class TunnelOrchestrator {
8
- /**
9
- * Starts the tunnel creation process.
10
- */
11
- static start(config: TunnelConfig): Promise<void>;
12
- /**
13
- * Gracefully shuts down the tunnel.
14
- */
15
- static cleanup(reason?: ShutdownReason): Promise<void>;
16
- }
package/dist/tunnel.js DELETED
@@ -1,101 +0,0 @@
1
- import ora from 'ora';
2
- import chalk from 'chalk';
3
- import fs from 'fs';
4
- import { CONFIG, PATHS, TUNNEL_TIMEOUT_MS } from './config.js';
5
- import { state } from './state.js';
6
- import { BinaryManager } from './binary.js';
7
- import { ensureCloudflared } from './bin-manager.js';
8
- import { APIClient } from './api.js';
9
- import { VersionManager } from './version.js';
10
- import { UI } from './ui.js';
11
- import { analytics } from './analytics.js';
12
- import { lang } from './lang.js';
13
- /**
14
- * Tunnel Orchestrator
15
- *
16
- * Main controller for the entire tunnel lifecycle.
17
- */
18
- export class TunnelOrchestrator {
19
- /**
20
- * Starts the tunnel creation process.
21
- */
22
- static async start(config) {
23
- state.setTunnel(null, config.subdomain, config.port, config.backendUrl);
24
- await analytics.initialize();
25
- analytics.trackCliStart(config.port, config.subdomain, CONFIG.CURRENT_VERSION);
26
- UI.displayStartupBanner(config.port);
27
- const updateInfo = await VersionManager.checkForUpdates();
28
- state.setUpdateInfo(updateInfo);
29
- // Check if binary exists, download if missing
30
- if (!fs.existsSync(PATHS.BIN_PATH)) {
31
- console.log(chalk.yellow('\n📦 Cloudflared binary not found. Downloading...\n'));
32
- try {
33
- await ensureCloudflared();
34
- }
35
- catch (error) {
36
- analytics.trackTunnelError('binary_download_failed', error.message);
37
- console.error(chalk.red(`\n❌ Failed to download cloudflared: ${error.message}`));
38
- process.exit(1);
39
- }
40
- }
41
- if (!BinaryManager.validate(PATHS.BIN_PATH)) {
42
- analytics.trackTunnelError('binary_missing', 'Cloudflared binary not found');
43
- await new Promise(resolve => setTimeout(resolve, 100));
44
- process.exit(1);
45
- }
46
- const spinner = ora(lang.t('creatingTunnel', { port: config.port })).start();
47
- try {
48
- const tunnel = await APIClient.createTunnel(config.subdomain, config.backendUrl);
49
- state.setTunnel(tunnel.tunnelId, config.subdomain, config.port, config.backendUrl);
50
- analytics.trackTunnelCreated(config.subdomain, config.port);
51
- spinner.stop();
52
- console.log(chalk.green(` ${lang.t('tunnelLive')}`));
53
- UI.displayTunnelSuccess(tunnel.url, config.port, updateInfo);
54
- const childProcess = BinaryManager.spawn(PATHS.BIN_PATH, tunnel.tunnelToken, config.port);
55
- state.setProcess(childProcess);
56
- BinaryManager.attachHandlers(childProcess, spinner);
57
- const timeoutId = setTimeout(() => {
58
- UI.displayTimeoutWarning();
59
- this.cleanup('timeout');
60
- }, TUNNEL_TIMEOUT_MS);
61
- state.setTimeout(timeoutId);
62
- }
63
- catch (error) {
64
- const err = error;
65
- const errorType = err.message.includes('already taken')
66
- ? 'subdomain_taken'
67
- : 'tunnel_creation_failed';
68
- analytics.trackTunnelError(errorType, err.message);
69
- UI.displayError(err, spinner);
70
- await new Promise(resolve => setTimeout(resolve, 100));
71
- process.exit(1);
72
- }
73
- }
74
- /**
75
- * Gracefully shuts down the tunnel.
76
- */
77
- static async cleanup(reason = 'manual') {
78
- state.clearTimeout();
79
- if (!state.hasTunnel()) {
80
- process.exit(0);
81
- }
82
- UI.displayCleanupStart();
83
- const duration = state.getDurationSeconds();
84
- analytics.trackTunnelShutdown(reason, duration);
85
- try {
86
- if (state.hasProcess() && state.tunnelProcess) {
87
- state.tunnelProcess.kill();
88
- }
89
- if (state.subdomain && state.tunnelId) {
90
- await APIClient.deleteTunnel(state.subdomain, state.tunnelId, state.backendUrl);
91
- }
92
- UI.displayCleanupSuccess();
93
- }
94
- catch {
95
- UI.displayCleanupError();
96
- }
97
- await new Promise(resolve => setTimeout(resolve, 100));
98
- process.exit(0);
99
- }
100
- }
101
- //# sourceMappingURL=tunnel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAC7B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAoB;QACrC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAExE,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC7B,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAE/E,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;QAC1D,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEhC,8CAA8C;QAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC;gBACH,MAAM,iBAAiB,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,CAAC,gBAAgB,CAAC,wBAAwB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBAC/E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAwC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC;YAC7E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACjF,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAEnF,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAE5D,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE7D,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CACtC,KAAK,CAAC,QAAQ,EACd,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,IAAI,CACZ,CAAC;YACF,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC/B,aAAa,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAEpD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,EAAE,CAAC,qBAAqB,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC,EAAE,iBAAiB,CAAC,CAAC;YACtB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACrD,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,wBAAwB,CAAC;YAC7B,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAEnD,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAyB,QAAQ;QACpD,KAAK,CAAC,YAAY,EAAE,CAAC;QAErB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,EAAE,CAAC,mBAAmB,EAAE,CAAC;QAEzB,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC5C,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC9C,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;YAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAClF,CAAC;YACD,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,EAAE,CAAC,mBAAmB,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF"}
@@ -1,91 +0,0 @@
1
- /**
2
- * Analytics type definitions
3
- *
4
- * These types define the structure of analytics events
5
- * and tracking data.
6
- */
7
- /**
8
- * Base analytics event
9
- */
10
- export interface AnalyticsEvent {
11
- /** Event name */
12
- name: string;
13
- /** Event parameters */
14
- params: Record<string, string | number | boolean>;
15
- /** Timestamp when event occurred */
16
- timestamp?: number;
17
- }
18
- /**
19
- * CLI start event parameters
20
- */
21
- export interface CliStartEventParams {
22
- /** Port being tunneled */
23
- port: string;
24
- /** Whether a custom subdomain was provided */
25
- has_custom_subdomain: boolean;
26
- /** CLI version */
27
- cli_version: string;
28
- }
29
- /**
30
- * Tunnel created event parameters
31
- */
32
- export interface TunnelCreatedEventParams {
33
- /** Type of subdomain (random or custom) */
34
- subdomain_type: 'random' | 'custom';
35
- /** Port being tunneled */
36
- port: string;
37
- }
38
- /**
39
- * Tunnel error event parameters
40
- */
41
- export interface TunnelErrorEventParams {
42
- /** Type of error */
43
- error_type: string;
44
- /** Error message (truncated) */
45
- error_message: string;
46
- }
47
- /**
48
- * Tunnel shutdown event parameters
49
- */
50
- export interface TunnelShutdownEventParams {
51
- /** Reason for shutdown */
52
- shutdown_reason: 'manual' | 'timeout' | 'error';
53
- /** Duration in seconds */
54
- duration_seconds: string;
55
- }
56
- /**
57
- * Update available event parameters
58
- */
59
- export interface UpdateAvailableEventParams {
60
- /** Current version */
61
- current_version: string;
62
- /** Latest version */
63
- latest_version: string;
64
- }
65
- /**
66
- * System information for analytics context
67
- */
68
- export interface SystemInfo {
69
- /** Operating system platform */
70
- os_platform: string;
71
- /** OS version */
72
- os_version: string;
73
- /** CPU architecture */
74
- os_arch: string;
75
- /** Node.js version */
76
- node_version: string;
77
- }
78
- /**
79
- * GA4 Measurement Protocol payload
80
- */
81
- export interface GA4Payload {
82
- /** Client ID (user identifier) */
83
- client_id: string;
84
- /** Array of events */
85
- events: Array<{
86
- /** Event name */
87
- name: string;
88
- /** Event parameters */
89
- params: Record<string, string | number | boolean>;
90
- }>;
91
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Analytics type definitions
3
- *
4
- * These types define the structure of analytics events
5
- * and tracking data.
6
- */
7
- export {};
8
- //# sourceMappingURL=analytics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,89 +0,0 @@
1
- /**
2
- * Configuration type definitions
3
- *
4
- * These types define the structure of application configuration,
5
- * user preferences, and runtime settings.
6
- */
7
- /**
8
- * Parsed command-line arguments
9
- */
10
- export interface ParsedArguments {
11
- /** Local port to tunnel (default: 8080) */
12
- port: number;
13
- /** Subdomain to use (generated if not provided) */
14
- subdomain: string;
15
- /** Language code, 'prompt', or null */
16
- language: string | null;
17
- /** Custom backend URL or null */
18
- backendUrl: string | null;
19
- /** Backend URL to save, 'clear', or null */
20
- setBackend: string | null;
21
- }
22
- /**
23
- * User configuration stored in ~/.nport/config.json
24
- */
25
- export interface UserConfig {
26
- /** Preferred language code (e.g., "en", "vi") */
27
- language?: string;
28
- /** Custom backend URL */
29
- backendUrl?: string;
30
- }
31
- /**
32
- * Application constants configuration
33
- */
34
- export interface AppConfig {
35
- /** npm package name */
36
- PACKAGE_NAME: string;
37
- /** Current package version */
38
- CURRENT_VERSION: string;
39
- /** Backend API URL */
40
- BACKEND_URL: string;
41
- /** Default port if not specified */
42
- DEFAULT_PORT: number;
43
- /** Prefix for random subdomains */
44
- SUBDOMAIN_PREFIX: string;
45
- /** Auto-cleanup timeout in hours */
46
- TUNNEL_TIMEOUT_HOURS: number;
47
- /** Timeout for npm version check in ms */
48
- UPDATE_CHECK_TIMEOUT: number;
49
- }
50
- /**
51
- * Platform-specific configuration
52
- */
53
- export interface PlatformConfig {
54
- /** True if running on Windows */
55
- IS_WINDOWS: boolean;
56
- /** Binary filename ("cloudflared" or "cloudflared.exe") */
57
- BIN_NAME: string;
58
- }
59
- /**
60
- * File system paths configuration
61
- */
62
- export interface PathsConfig {
63
- /** Directory containing the cloudflared binary */
64
- BIN_DIR: string;
65
- /** Full path to the cloudflared binary */
66
- BIN_PATH: string;
67
- }
68
- /**
69
- * Log pattern categories for filtering cloudflared output
70
- */
71
- export interface LogPatterns {
72
- /** Patterns indicating successful connection */
73
- readonly SUCCESS: readonly string[];
74
- /** Patterns indicating critical errors */
75
- readonly ERROR: readonly string[];
76
- /** Patterns for network connectivity issues */
77
- readonly NETWORK_WARNING: readonly string[];
78
- /** Patterns for harmless messages to suppress */
79
- readonly IGNORE: readonly string[];
80
- }
81
- /**
82
- * Network warning display configuration
83
- */
84
- export interface NetworkConfig {
85
- /** Number of errors before showing warning */
86
- WARNING_THRESHOLD: number;
87
- /** Minimum ms between warnings */
88
- WARNING_COOLDOWN: number;
89
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Configuration type definitions
3
- *
4
- * These types define the structure of application configuration,
5
- * user preferences, and runtime settings.
6
- */
7
- export {};
8
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Internationalization type definitions
3
- */
4
- /**
5
- * Supported language codes
6
- */
7
- export type LanguageCode = 'en' | 'vi';
8
- /**
9
- * Translation keys used in the application
10
- */
11
- export interface TranslationKeys {
12
- header: string;
13
- creatingTunnel: string;
14
- checkingUpdates: string;
15
- tunnelLive: string;
16
- connection1: string;
17
- connection2: string;
18
- timeRemaining: string;
19
- footerTitle: string;
20
- footerSubtitle: string;
21
- dropStar: string;
22
- sendCoffee: string;
23
- newVersion: string;
24
- updateCommand: string;
25
- tunnelShutdown: string;
26
- cleaningUp: string;
27
- cleanupDone: string;
28
- cleanupFailed: string;
29
- subdomainReleased: string;
30
- serverBusy: string;
31
- goodbyeTitle: string;
32
- goodbyeMessage: string;
33
- website: string;
34
- author: string;
35
- changeLanguage: string;
36
- changeLanguageHint: string;
37
- versionTitle: string;
38
- versionSubtitle: string;
39
- versionLatest: string;
40
- versionAvailable: string;
41
- versionUpdate: string;
42
- learnMore: string;
43
- languagePrompt: string;
44
- languageQuestion: string;
45
- languageEnglish: string;
46
- languageVietnamese: string;
47
- languageInvalid: string;
48
- languageSaved: string;
49
- networkIssueTitle: string;
50
- networkIssueDesc: string;
51
- networkIssueTunnel: string;
52
- networkIssueReasons: string;
53
- networkIssueReason1: string;
54
- networkIssueReason2: string;
55
- networkIssueReason3: string;
56
- networkIssueFix: string;
57
- networkIssueFix1: string;
58
- networkIssueFix2: string;
59
- networkIssueFix3: string;
60
- networkIssueFix4: string;
61
- networkIssueIgnore: string;
62
- }
63
- /**
64
- * Translation dictionary for all languages
65
- */
66
- export type Translations = Record<LanguageCode, TranslationKeys>;
67
- /**
68
- * Variables that can be substituted in translation strings
69
- */
70
- export interface TranslationVariables {
71
- port?: number;
72
- hours?: number;
73
- version?: string;
74
- [key: string]: string | number | undefined;
75
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * Internationalization type definitions
3
- */
4
- export {};
5
- //# sourceMappingURL=i18n.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/types/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,10 +0,0 @@
1
- /**
2
- * NPort - Shared Types
3
- *
4
- * Central export for all type definitions used across the application.
5
- */
6
- export type { TunnelConfig, TunnelResponse, ApiResponse, CreateTunnelApiResponse, TunnelState, ShutdownReason, TunnelEvent, } from './tunnel.js';
7
- export type { ParsedArguments, UserConfig, AppConfig, PlatformConfig, PathsConfig, LogPatterns, NetworkConfig, } from './config.js';
8
- export type { AnalyticsEvent, CliStartEventParams, TunnelCreatedEventParams, TunnelErrorEventParams, TunnelShutdownEventParams, UpdateAvailableEventParams, SystemInfo, GA4Payload, } from './analytics.js';
9
- export type { UpdateCheckResult, NpmPackageInfo, } from './version.js';
10
- export type { LanguageCode, TranslationKeys, Translations, TranslationVariables, } from './i18n.js';
@@ -1,7 +0,0 @@
1
- /**
2
- * NPort - Shared Types
3
- *
4
- * Central export for all type definitions used across the application.
5
- */
6
- export {};
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}