nport 2.1.0 → 2.1.1
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 +17 -0
- package/dist/analytics.d.ts +59 -0
- package/dist/analytics.js +193 -0
- package/dist/analytics.js.map +1 -0
- package/dist/api.d.ts +20 -0
- package/dist/api.js +85 -0
- package/dist/api.js.map +1 -0
- package/dist/args.d.ts +44 -0
- package/dist/args.js +127 -0
- package/dist/args.js.map +1 -0
- package/dist/bin-manager.d.ts +1 -0
- package/dist/bin-manager.js +209 -0
- package/dist/bin-manager.js.map +1 -0
- package/dist/binary.d.ts +42 -0
- package/dist/binary.js +119 -0
- package/dist/binary.js.map +1 -0
- package/dist/config-manager.d.ts +54 -0
- package/dist/config-manager.js +129 -0
- package/dist/config-manager.js.map +1 -0
- package/dist/config.d.ts +25 -0
- package/dist/config.js +59 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +61 -0
- package/dist/constants.js +86 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/lang.d.ts +38 -0
- package/dist/lang.js +217 -0
- package/dist/lang.js.map +1 -0
- package/dist/state.d.ts +82 -0
- package/dist/state.js +139 -0
- package/dist/state.js.map +1 -0
- package/dist/tunnel.d.ts +16 -0
- package/dist/tunnel.js +101 -0
- package/dist/tunnel.js.map +1 -0
- package/dist/types/analytics.d.ts +91 -0
- package/dist/types/analytics.js +8 -0
- package/dist/types/analytics.js.map +1 -0
- package/dist/types/config.d.ts +89 -0
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/i18n.d.ts +75 -0
- package/dist/types/i18n.js +5 -0
- package/dist/types/i18n.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/tunnel.d.ts +74 -0
- package/dist/types/tunnel.js +8 -0
- package/dist/types/tunnel.js.map +1 -0
- package/dist/types/version.d.ts +25 -0
- package/dist/types/version.js +5 -0
- package/dist/types/version.js.map +1 -0
- package/dist/ui.d.ts +54 -0
- package/dist/ui.js +120 -0
- package/dist/ui.js.map +1 -0
- package/dist/version.d.ts +16 -0
- package/dist/version.js +49 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version-related type definitions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Result of checking for updates
|
|
6
|
+
*/
|
|
7
|
+
export interface UpdateCheckResult {
|
|
8
|
+
/** Currently installed version */
|
|
9
|
+
current: string;
|
|
10
|
+
/** Latest version available on npm */
|
|
11
|
+
latest: string;
|
|
12
|
+
/** True if latest > current */
|
|
13
|
+
shouldUpdate: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* npm registry package response (partial)
|
|
17
|
+
*/
|
|
18
|
+
export interface NpmPackageInfo {
|
|
19
|
+
/** Package name */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Latest version */
|
|
22
|
+
version: string;
|
|
23
|
+
/** Package description */
|
|
24
|
+
description?: string;
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/types/version.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/ui.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { UpdateCheckResult } from './types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* UI Display Manager
|
|
4
|
+
*
|
|
5
|
+
* Handles all console output and user interface formatting.
|
|
6
|
+
*/
|
|
7
|
+
export declare class UI {
|
|
8
|
+
/**
|
|
9
|
+
* Displays the project info header box.
|
|
10
|
+
*/
|
|
11
|
+
static displayProjectInfo(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Displays the startup banner.
|
|
14
|
+
*/
|
|
15
|
+
static displayStartupBanner(_port: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Displays the tunnel success message.
|
|
18
|
+
*/
|
|
19
|
+
static displayTunnelSuccess(url: string, _port: number, _updateInfo: UpdateCheckResult | null): void;
|
|
20
|
+
/**
|
|
21
|
+
* Displays the footer with call-to-action links.
|
|
22
|
+
*/
|
|
23
|
+
static displayFooter(updateInfo: UpdateCheckResult | null): void;
|
|
24
|
+
/**
|
|
25
|
+
* Displays timeout warning.
|
|
26
|
+
*/
|
|
27
|
+
static displayTimeoutWarning(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Displays an error message.
|
|
30
|
+
*/
|
|
31
|
+
static displayError(error: Error, spinner?: {
|
|
32
|
+
fail: (msg: string) => void;
|
|
33
|
+
} | null): void;
|
|
34
|
+
/**
|
|
35
|
+
* Displays cleanup start.
|
|
36
|
+
*/
|
|
37
|
+
static displayCleanupStart(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Displays cleanup success.
|
|
40
|
+
*/
|
|
41
|
+
static displayCleanupSuccess(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Displays cleanup error.
|
|
44
|
+
*/
|
|
45
|
+
static displayCleanupError(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Displays goodbye message.
|
|
48
|
+
*/
|
|
49
|
+
static displayGoodbye(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Displays version information.
|
|
52
|
+
*/
|
|
53
|
+
static displayVersion(current: string, updateInfo: UpdateCheckResult | null): void;
|
|
54
|
+
}
|
package/dist/ui.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { GITHUB_URL, COFFEE_URL, WEBSITE_URL } from './constants.js';
|
|
3
|
+
import { CONFIG } from './config.js';
|
|
4
|
+
import { lang } from './lang.js';
|
|
5
|
+
/**
|
|
6
|
+
* UI Display Manager
|
|
7
|
+
*
|
|
8
|
+
* Handles all console output and user interface formatting.
|
|
9
|
+
*/
|
|
10
|
+
export class UI {
|
|
11
|
+
/**
|
|
12
|
+
* Displays the project info header box.
|
|
13
|
+
*/
|
|
14
|
+
static displayProjectInfo() {
|
|
15
|
+
const line = '─'.repeat(56);
|
|
16
|
+
const headerText = lang.t('header');
|
|
17
|
+
const visualLength = 59;
|
|
18
|
+
const padding = ' '.repeat(Math.max(0, visualLength - headerText.length - 4));
|
|
19
|
+
console.log(chalk.gray(`\n ╭${line}╮`));
|
|
20
|
+
console.log(chalk.cyan.bold(` │ ${headerText}`) + padding + chalk.gray('│'));
|
|
21
|
+
console.log(chalk.gray(` ╰${line}╯\n`));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Displays the startup banner.
|
|
25
|
+
*/
|
|
26
|
+
static displayStartupBanner(_port) {
|
|
27
|
+
this.displayProjectInfo();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Displays the tunnel success message.
|
|
31
|
+
*/
|
|
32
|
+
static displayTunnelSuccess(url, _port, _updateInfo) {
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(chalk.cyan.bold(` 👉 ${url} 👈\n`));
|
|
35
|
+
console.log(chalk.gray(' ' + '─'.repeat(54) + '\n'));
|
|
36
|
+
console.log(chalk.gray(` ${lang.t('timeRemaining', { hours: CONFIG.TUNNEL_TIMEOUT_HOURS })}\n`));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Displays the footer with call-to-action links.
|
|
40
|
+
*/
|
|
41
|
+
static displayFooter(updateInfo) {
|
|
42
|
+
console.log(chalk.gray(' ' + '─'.repeat(54) + '\n'));
|
|
43
|
+
console.log(chalk.yellow.bold(` ${lang.t('footerTitle')}\n`));
|
|
44
|
+
console.log(chalk.gray(` ${lang.t('footerSubtitle')}\n`));
|
|
45
|
+
console.log(chalk.cyan(` ${lang.t('dropStar')}`) + chalk.white(GITHUB_URL));
|
|
46
|
+
console.log(chalk.yellow(` ${lang.t('sendCoffee')}`) + chalk.white(COFFEE_URL));
|
|
47
|
+
if (updateInfo?.shouldUpdate) {
|
|
48
|
+
console.log(chalk.red.bold(`\n ${lang.t('newVersion', { version: updateInfo.latest })}`));
|
|
49
|
+
console.log(chalk.gray(' ') + chalk.cyan(lang.t('updateCommand')));
|
|
50
|
+
}
|
|
51
|
+
console.log();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Displays timeout warning.
|
|
55
|
+
*/
|
|
56
|
+
static displayTimeoutWarning() {
|
|
57
|
+
console.log(chalk.yellow(`\n⏰ Tunnel has been running for ${CONFIG.TUNNEL_TIMEOUT_HOURS} hours.`));
|
|
58
|
+
console.log(chalk.yellow(' Automatically shutting down...'));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Displays an error message.
|
|
62
|
+
*/
|
|
63
|
+
static displayError(error, spinner = null) {
|
|
64
|
+
if (spinner) {
|
|
65
|
+
spinner.fail('Failed to connect to server.');
|
|
66
|
+
}
|
|
67
|
+
console.error(chalk.red(error.message));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Displays cleanup start.
|
|
71
|
+
*/
|
|
72
|
+
static displayCleanupStart() {
|
|
73
|
+
console.log(chalk.red.bold(`\n\n ${lang.t('tunnelShutdown')}\n`));
|
|
74
|
+
process.stdout.write(chalk.gray(` ${lang.t('cleaningUp')}`));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Displays cleanup success.
|
|
78
|
+
*/
|
|
79
|
+
static displayCleanupSuccess() {
|
|
80
|
+
console.log(chalk.green(lang.t('cleanupDone')));
|
|
81
|
+
console.log(chalk.gray(` ${lang.t('subdomainReleased')}\n`));
|
|
82
|
+
this.displayGoodbye();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Displays cleanup error.
|
|
86
|
+
*/
|
|
87
|
+
static displayCleanupError() {
|
|
88
|
+
console.log(chalk.red(lang.t('cleanupFailed')));
|
|
89
|
+
console.log(chalk.gray(` ${lang.t('serverBusy')}\n`));
|
|
90
|
+
this.displayGoodbye();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Displays goodbye message.
|
|
94
|
+
*/
|
|
95
|
+
static displayGoodbye() {
|
|
96
|
+
console.log(chalk.gray(' ' + '─'.repeat(54) + '\n'));
|
|
97
|
+
console.log(chalk.cyan.bold(` ${lang.t('goodbyeTitle')}\n`));
|
|
98
|
+
console.log(chalk.gray(` ${lang.t('goodbyeMessage')}\n`));
|
|
99
|
+
console.log(chalk.cyan(` ${lang.t('website')}`) + chalk.white(WEBSITE_URL));
|
|
100
|
+
console.log(chalk.cyan(` ${lang.t('author')}`) + chalk.white('Nick Pham (https://github.com/tuanngocptn)'));
|
|
101
|
+
console.log(chalk.cyan(` ${lang.t('changeLanguage')}`) + chalk.yellow(lang.t('changeLanguageHint')));
|
|
102
|
+
console.log();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Displays version information.
|
|
106
|
+
*/
|
|
107
|
+
static displayVersion(current, updateInfo) {
|
|
108
|
+
console.log(chalk.cyan.bold(`\n${lang.t('versionTitle', { version: current })}`));
|
|
109
|
+
console.log(chalk.gray(`${lang.t('versionSubtitle')}\n`));
|
|
110
|
+
if (updateInfo?.shouldUpdate) {
|
|
111
|
+
console.log(chalk.yellow(lang.t('versionAvailable', { version: updateInfo.latest })));
|
|
112
|
+
console.log(chalk.cyan(lang.t('versionUpdate')) + chalk.white('npm install -g nport@latest\n'));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
console.log(chalk.green(`${lang.t('versionLatest')}\n`));
|
|
116
|
+
}
|
|
117
|
+
console.log(chalk.gray(lang.t('learnMore')) + chalk.cyan(`${WEBSITE_URL}\n`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { UpdateCheckResult } from './types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Version Manager
|
|
4
|
+
*
|
|
5
|
+
* Handles version checking and update notifications.
|
|
6
|
+
*/
|
|
7
|
+
export declare class VersionManager {
|
|
8
|
+
/**
|
|
9
|
+
* Checks the npm registry for available updates.
|
|
10
|
+
*/
|
|
11
|
+
static checkForUpdates(): Promise<UpdateCheckResult | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Compares two semantic version strings.
|
|
14
|
+
*/
|
|
15
|
+
static compareVersions(v1: string, v2: string): number;
|
|
16
|
+
}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { CONFIG } from './config.js';
|
|
3
|
+
import { analytics } from './analytics.js';
|
|
4
|
+
/**
|
|
5
|
+
* Version Manager
|
|
6
|
+
*
|
|
7
|
+
* Handles version checking and update notifications.
|
|
8
|
+
*/
|
|
9
|
+
export class VersionManager {
|
|
10
|
+
/**
|
|
11
|
+
* Checks the npm registry for available updates.
|
|
12
|
+
*/
|
|
13
|
+
static async checkForUpdates() {
|
|
14
|
+
try {
|
|
15
|
+
const response = await axios.get(`https://registry.npmjs.org/${CONFIG.PACKAGE_NAME}/latest`, { timeout: CONFIG.UPDATE_CHECK_TIMEOUT });
|
|
16
|
+
const latestVersion = response.data.version;
|
|
17
|
+
const shouldUpdate = this.compareVersions(latestVersion, CONFIG.CURRENT_VERSION) > 0;
|
|
18
|
+
if (shouldUpdate) {
|
|
19
|
+
analytics.trackUpdateAvailable(CONFIG.CURRENT_VERSION, latestVersion);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
current: CONFIG.CURRENT_VERSION,
|
|
23
|
+
latest: latestVersion,
|
|
24
|
+
shouldUpdate,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Compares two semantic version strings.
|
|
33
|
+
*/
|
|
34
|
+
static compareVersions(v1, v2) {
|
|
35
|
+
const parts1 = v1.split('.').map(Number);
|
|
36
|
+
const parts2 = v2.split('.').map(Number);
|
|
37
|
+
const maxLength = Math.max(parts1.length, parts2.length);
|
|
38
|
+
for (let i = 0; i < maxLength; i++) {
|
|
39
|
+
const part1 = parts1[i] || 0;
|
|
40
|
+
const part2 = parts2[i] || 0;
|
|
41
|
+
if (part1 > part2)
|
|
42
|
+
return 1;
|
|
43
|
+
if (part1 < part2)
|
|
44
|
+
return -1;
|
|
45
|
+
}
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,8BAA8B,MAAM,CAAC,YAAY,SAAS,EAC1D,EAAE,OAAO,EAAE,MAAM,CAAC,oBAAoB,EAAE,CACzC,CAAC;YAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAErF,IAAI,YAAY,EAAE,CAAC;gBACjB,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;YACxE,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,eAAe;gBAC/B,MAAM,EAAE,aAAa;gBACrB,YAAY;aACb,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,EAAU,EAAE,EAAU;QAC3C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE7B,IAAI,KAAK,GAAG,KAAK;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,KAAK,GAAG,KAAK;gBAAE,OAAO,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
|
package/package.json
CHANGED