nport 2.1.1 → 2.1.2

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 +68 -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
@@ -1,129 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import os from 'os';
4
- /**
5
- * Configuration Manager
6
- *
7
- * Handles persistent storage of user preferences in ~/.nport/config.json.
8
- */
9
- class ConfigManager {
10
- configDir;
11
- configFile;
12
- oldLangFile;
13
- config;
14
- constructor() {
15
- this.configDir = path.join(os.homedir(), '.nport');
16
- this.configFile = path.join(this.configDir, 'config.json');
17
- this.oldLangFile = path.join(this.configDir, 'lang');
18
- this.config = this.loadConfig();
19
- this.migrateOldConfig();
20
- }
21
- /**
22
- * Loads configuration from the JSON file.
23
- */
24
- loadConfig() {
25
- try {
26
- if (fs.existsSync(this.configFile)) {
27
- const data = fs.readFileSync(this.configFile, 'utf8');
28
- return JSON.parse(data);
29
- }
30
- }
31
- catch {
32
- console.warn('Warning: Could not load config file, using defaults');
33
- }
34
- return {};
35
- }
36
- /**
37
- * Migrates old configuration files to the new unified format.
38
- */
39
- migrateOldConfig() {
40
- try {
41
- if (!this.config.language && fs.existsSync(this.oldLangFile)) {
42
- const oldLang = fs.readFileSync(this.oldLangFile, 'utf8').trim();
43
- if (oldLang && ['en', 'vi'].includes(oldLang)) {
44
- this.config.language = oldLang;
45
- this.saveConfig();
46
- try {
47
- fs.unlinkSync(this.oldLangFile);
48
- }
49
- catch {
50
- // Ignore if can't delete
51
- }
52
- }
53
- }
54
- }
55
- catch {
56
- // Ignore migration errors
57
- }
58
- }
59
- /**
60
- * Saves the current configuration to disk.
61
- */
62
- saveConfig() {
63
- try {
64
- if (!fs.existsSync(this.configDir)) {
65
- fs.mkdirSync(this.configDir, { recursive: true });
66
- }
67
- fs.writeFileSync(this.configFile, JSON.stringify(this.config, null, 2), 'utf8');
68
- return true;
69
- }
70
- catch {
71
- console.warn('Warning: Could not save configuration');
72
- return false;
73
- }
74
- }
75
- /**
76
- * Gets the saved backend URL.
77
- */
78
- getBackendUrl() {
79
- return this.config.backendUrl ?? null;
80
- }
81
- /**
82
- * Sets or clears the backend URL.
83
- */
84
- setBackendUrl(url) {
85
- if (!url) {
86
- delete this.config.backendUrl;
87
- }
88
- else {
89
- this.config.backendUrl = url;
90
- }
91
- return this.saveConfig();
92
- }
93
- /**
94
- * Gets the saved language preference.
95
- */
96
- getLanguage() {
97
- return this.config.language ?? null;
98
- }
99
- /**
100
- * Sets or clears the language preference.
101
- */
102
- setLanguage(lang) {
103
- if (!lang) {
104
- delete this.config.language;
105
- }
106
- else {
107
- this.config.language = lang;
108
- }
109
- return this.saveConfig();
110
- }
111
- /**
112
- * Gets a copy of all configuration.
113
- */
114
- getAll() {
115
- return { ...this.config };
116
- }
117
- /**
118
- * Clears all configuration.
119
- */
120
- clear() {
121
- this.config = {};
122
- return this.saveConfig();
123
- }
124
- }
125
- /**
126
- * Singleton instance
127
- */
128
- export const configManager = new ConfigManager();
129
- //# sourceMappingURL=config-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,25 +0,0 @@
1
- import type { AppConfig, PlatformConfig, PathsConfig, LogPatterns, NetworkConfig } from './types/index.js';
2
- /**
3
- * Application configuration constants
4
- */
5
- export declare const CONFIG: AppConfig;
6
- /**
7
- * Platform-specific configuration
8
- */
9
- export declare const PLATFORM: PlatformConfig;
10
- /**
11
- * File system paths
12
- */
13
- export declare const PATHS: PathsConfig;
14
- /**
15
- * Log patterns for filtering cloudflared output
16
- */
17
- export declare const LOG_PATTERNS: LogPatterns;
18
- /**
19
- * Network warning configuration
20
- */
21
- export declare const NETWORK_CONFIG: NetworkConfig;
22
- /**
23
- * Tunnel timeout in milliseconds
24
- */
25
- export declare const TUNNEL_TIMEOUT_MS: number;
package/dist/config.js DELETED
@@ -1,59 +0,0 @@
1
- import path from 'path';
2
- import { fileURLToPath } from 'url';
3
- import { createRequire } from 'module';
4
- import { DEFAULT_BACKEND_URL, DEFAULT_PORT, SUBDOMAIN_PREFIX, TUNNEL_TIMEOUT_HOURS, UPDATE_CHECK_TIMEOUT, LOG_PATTERNS as SHARED_LOG_PATTERNS, NETWORK_WARNING, } from './constants.js';
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(path.dirname(__filename));
7
- const require = createRequire(import.meta.url);
8
- const packageJson = require('../package.json');
9
- /**
10
- * Gets the backend URL based on priority order.
11
- */
12
- function getBackendUrl() {
13
- if (process.env.NPORT_BACKEND_URL) {
14
- return process.env.NPORT_BACKEND_URL;
15
- }
16
- return DEFAULT_BACKEND_URL;
17
- }
18
- /**
19
- * Application configuration constants
20
- */
21
- export const CONFIG = {
22
- PACKAGE_NAME: packageJson.name,
23
- CURRENT_VERSION: packageJson.version,
24
- BACKEND_URL: getBackendUrl(),
25
- DEFAULT_PORT,
26
- SUBDOMAIN_PREFIX,
27
- TUNNEL_TIMEOUT_HOURS,
28
- UPDATE_CHECK_TIMEOUT,
29
- };
30
- /**
31
- * Platform-specific configuration
32
- */
33
- export const PLATFORM = {
34
- IS_WINDOWS: process.platform === 'win32',
35
- BIN_NAME: process.platform === 'win32' ? 'cloudflared.exe' : 'cloudflared',
36
- };
37
- /**
38
- * File system paths
39
- */
40
- export const PATHS = {
41
- BIN_DIR: path.join(__dirname, 'bin'),
42
- BIN_PATH: path.join(__dirname, 'bin', PLATFORM.BIN_NAME),
43
- };
44
- /**
45
- * Log patterns for filtering cloudflared output
46
- */
47
- export const LOG_PATTERNS = SHARED_LOG_PATTERNS;
48
- /**
49
- * Network warning configuration
50
- */
51
- export const NETWORK_CONFIG = {
52
- WARNING_THRESHOLD: NETWORK_WARNING.THRESHOLD,
53
- WARNING_COOLDOWN: NETWORK_WARNING.COOLDOWN,
54
- };
55
- /**
56
- * Tunnel timeout in milliseconds
57
- */
58
- export const TUNNEL_TIMEOUT_MS = CONFIG.TUNNEL_TIMEOUT_HOURS * 60 * 60 * 1000;
59
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,IAAI,mBAAmB,EACnC,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAO/C,MAAM,WAAW,GAAgB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACvC,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAc;IAC/B,YAAY,EAAE,WAAW,CAAC,IAAI;IAC9B,eAAe,EAAE,WAAW,CAAC,OAAO;IACpC,WAAW,EAAE,aAAa,EAAE;IAC5B,YAAY;IACZ,gBAAgB;IAChB,oBAAoB;IACpB,oBAAoB;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;IACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa;CAC3E,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAgB;IAChC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;IACpC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;CACzD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAgB,mBAAmB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,iBAAiB,EAAE,eAAe,CAAC,SAAS;IAC5C,gBAAgB,EAAE,eAAe,CAAC,QAAQ;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -1,61 +0,0 @@
1
- /**
2
- * Shared constants used across the application
3
- */
4
- /**
5
- * Default backend API URL
6
- */
7
- export declare const DEFAULT_BACKEND_URL = "https://api.nport.link";
8
- /**
9
- * Default port if not specified
10
- */
11
- export declare const DEFAULT_PORT = 8080;
12
- /**
13
- * Prefix for random subdomains
14
- */
15
- export declare const SUBDOMAIN_PREFIX = "user-";
16
- /**
17
- * Auto-cleanup timeout in hours
18
- */
19
- export declare const TUNNEL_TIMEOUT_HOURS = 4;
20
- /**
21
- * Timeout for npm version check in milliseconds
22
- */
23
- export declare const UPDATE_CHECK_TIMEOUT = 3000;
24
- /**
25
- * Analytics request timeout in milliseconds
26
- */
27
- export declare const ANALYTICS_TIMEOUT = 2000;
28
- /**
29
- * Network warning configuration
30
- */
31
- export declare const NETWORK_WARNING: {
32
- /** Number of errors before showing warning */
33
- readonly THRESHOLD: 5;
34
- /** Minimum ms between warnings */
35
- readonly COOLDOWN: 30000;
36
- };
37
- /**
38
- * Log patterns for filtering cloudflared output
39
- */
40
- export declare const LOG_PATTERNS: {
41
- readonly SUCCESS: readonly ["Registered tunnel connection"];
42
- readonly ERROR: readonly ["ERR", "error"];
43
- readonly NETWORK_WARNING: readonly ["failed to accept QUIC stream", "failed to dial to edge with quic", "failed to accept incoming stream requests", "Failed to dial a quic connection", "timeout: no recent network activity", "failed to dial to edge", "quic:"];
44
- readonly IGNORE: readonly ["Cannot determine default origin certificate path", "No file cert.pem", "origincert option", "TUNNEL_ORIGIN_CERT", "context canceled", "failed to run the datagram handler", "failed to serve tunnel connection", "Connection terminated", "no more connections active and exiting", "Serve tunnel error", "accept stream listener encountered a failure", "Retrying connection", "icmp router terminated", "use of closed network connection", "Application error 0x0"];
45
- };
46
- /**
47
- * Available language codes
48
- */
49
- export declare const AVAILABLE_LANGUAGES: readonly ["en", "vi"];
50
- /**
51
- * GitHub repository URL
52
- */
53
- export declare const GITHUB_URL = "https://github.com/tuanngocptn/nport";
54
- /**
55
- * Website URL
56
- */
57
- export declare const WEBSITE_URL = "https://nport.link";
58
- /**
59
- * Buy Me a Coffee URL
60
- */
61
- export declare const COFFEE_URL = "https://buymeacoffee.com/tuanngocptn";
package/dist/constants.js DELETED
@@ -1,86 +0,0 @@
1
- /**
2
- * Shared constants used across the application
3
- */
4
- /**
5
- * Default backend API URL
6
- */
7
- export const DEFAULT_BACKEND_URL = 'https://api.nport.link';
8
- /**
9
- * Default port if not specified
10
- */
11
- export const DEFAULT_PORT = 8080;
12
- /**
13
- * Prefix for random subdomains
14
- */
15
- export const SUBDOMAIN_PREFIX = 'user-';
16
- /**
17
- * Auto-cleanup timeout in hours
18
- */
19
- export const TUNNEL_TIMEOUT_HOURS = 4;
20
- /**
21
- * Timeout for npm version check in milliseconds
22
- */
23
- export const UPDATE_CHECK_TIMEOUT = 3000;
24
- /**
25
- * Analytics request timeout in milliseconds
26
- */
27
- export const ANALYTICS_TIMEOUT = 2000;
28
- /**
29
- * Network warning configuration
30
- */
31
- export const NETWORK_WARNING = {
32
- /** Number of errors before showing warning */
33
- THRESHOLD: 5,
34
- /** Minimum ms between warnings */
35
- COOLDOWN: 30000,
36
- };
37
- /**
38
- * Log patterns for filtering cloudflared output
39
- */
40
- export const LOG_PATTERNS = {
41
- SUCCESS: ['Registered tunnel connection'],
42
- ERROR: ['ERR', 'error'],
43
- NETWORK_WARNING: [
44
- 'failed to accept QUIC stream',
45
- 'failed to dial to edge with quic',
46
- 'failed to accept incoming stream requests',
47
- 'Failed to dial a quic connection',
48
- 'timeout: no recent network activity',
49
- 'failed to dial to edge',
50
- 'quic:',
51
- ],
52
- IGNORE: [
53
- 'Cannot determine default origin certificate path',
54
- 'No file cert.pem',
55
- 'origincert option',
56
- 'TUNNEL_ORIGIN_CERT',
57
- 'context canceled',
58
- 'failed to run the datagram handler',
59
- 'failed to serve tunnel connection',
60
- 'Connection terminated',
61
- 'no more connections active and exiting',
62
- 'Serve tunnel error',
63
- 'accept stream listener encountered a failure',
64
- 'Retrying connection',
65
- 'icmp router terminated',
66
- 'use of closed network connection',
67
- 'Application error 0x0',
68
- ],
69
- };
70
- /**
71
- * Available language codes
72
- */
73
- export const AVAILABLE_LANGUAGES = ['en', 'vi'];
74
- /**
75
- * GitHub repository URL
76
- */
77
- export const GITHUB_URL = 'https://github.com/tuanngocptn/nport';
78
- /**
79
- * Website URL
80
- */
81
- export const WEBSITE_URL = 'https://nport.link';
82
- /**
83
- * Buy Me a Coffee URL
84
- */
85
- export const COFFEE_URL = 'https://buymeacoffee.com/tuanngocptn';
86
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,8CAA8C;IAC9C,SAAS,EAAE,CAAC;IACZ,kCAAkC;IAClC,QAAQ,EAAE,KAAK;CACP,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,CAAC,8BAA8B,CAAC;IACzC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE;QACf,8BAA8B;QAC9B,kCAAkC;QAClC,2CAA2C;QAC3C,kCAAkC;QAClC,qCAAqC;QACrC,wBAAwB;QACxB,OAAO;KACR;IACD,MAAM,EAAE;QACN,kDAAkD;QAClD,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;QAClB,oCAAoC;QACpC,mCAAmC;QACnC,uBAAuB;QACvB,wCAAwC;QACxC,oBAAoB;QACpB,8CAA8C;QAC9C,qBAAqB;QACrB,wBAAwB;QACxB,kCAAkC;QAClC,uBAAuB;KACxB;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,sCAAsC,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,sCAAsC,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * NPort - Free & Open Source ngrok Alternative
4
- *
5
- * Main entry point for the NPort CLI application.
6
- */
7
- export {};
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lang.d.ts DELETED
@@ -1,38 +0,0 @@
1
- import type { LanguageCode, TranslationKeys, TranslationVariables } from './types/index.js';
2
- /**
3
- * Language Manager
4
- */
5
- declare class LanguageManager {
6
- private currentLanguage;
7
- private readonly availableLanguages;
8
- /**
9
- * Gets a translated string with variable substitution.
10
- */
11
- t(key: keyof TranslationKeys, vars?: TranslationVariables): string;
12
- /**
13
- * Loads saved language preference.
14
- */
15
- private loadLanguagePreference;
16
- /**
17
- * Saves language preference.
18
- */
19
- private saveLanguagePreference;
20
- /**
21
- * Sets the current language.
22
- */
23
- setLanguage(lang: string): boolean;
24
- /**
25
- * Gets the current language code.
26
- */
27
- getLanguage(): LanguageCode;
28
- /**
29
- * Prompts user to select a language.
30
- */
31
- promptLanguageSelection(): Promise<LanguageCode>;
32
- /**
33
- * Initializes the language system.
34
- */
35
- initialize(cliLanguage?: string | null): Promise<LanguageCode>;
36
- }
37
- export declare const lang: LanguageManager;
38
- export {};
package/dist/lang.js DELETED
@@ -1,217 +0,0 @@
1
- import readline from 'readline';
2
- import { AVAILABLE_LANGUAGES } from './constants.js';
3
- import { configManager } from './config-manager.js';
4
- /**
5
- * Translation strings for all supported languages
6
- */
7
- const TRANSLATIONS = {
8
- en: {
9
- header: 'N P O R T ⚡️ Free & Open Source from Vietnam ❤️',
10
- creatingTunnel: 'Creating tunnel for port {port}...',
11
- checkingUpdates: 'Checking for updates...',
12
- tunnelLive: '🚀 WE LIVE BABY!',
13
- connection1: ' ✔ [1/2] Connection established...',
14
- connection2: ' ✔ [2/2] Compression enabled...',
15
- timeRemaining: '⏱️ Time: {hours}h remaining',
16
- footerTitle: '🔥 KEEP THE VIBE ALIVE?',
17
- footerSubtitle: '(Made with ❤️ in Vietnam)',
18
- dropStar: '⭐️ Drop a Star: ',
19
- sendCoffee: '☕️ Buy Coffee: ',
20
- newVersion: '🚨 NEW VERSION (v{version}) detected!',
21
- updateCommand: '> npm install -g nport@latest',
22
- tunnelShutdown: '🛑 TUNNEL SHUTDOWN.',
23
- cleaningUp: 'Cleaning up... ',
24
- cleanupDone: 'Done.',
25
- cleanupFailed: 'Failed.',
26
- subdomainReleased: 'Subdomain... Released. 🗑️',
27
- serverBusy: '(Server might be down or busy)',
28
- goodbyeTitle: '👋 BEFORE YOU GO...',
29
- goodbyeMessage: 'Thanks for using NPort!',
30
- website: '🌐 Website: ',
31
- author: '👤 Author: ',
32
- changeLanguage: '🌍 Language: ',
33
- changeLanguageHint: 'nport --language',
34
- versionTitle: 'NPort v{version}',
35
- versionSubtitle: 'Free & open source ngrok alternative',
36
- versionLatest: '✔ You\'re running the latest version!',
37
- versionAvailable: '🚨 New version available: v{version}',
38
- versionUpdate: 'Update now: ',
39
- learnMore: 'Learn more: ',
40
- languagePrompt: '\n🌍 Language Selection / Chọn ngôn ngữ\n',
41
- languageQuestion: 'Choose your language (1-2): ',
42
- languageEnglish: '1. English',
43
- languageVietnamese: '2. Tiếng Việt (Vietnamese)',
44
- languageInvalid: 'Invalid choice. Using English by default.',
45
- languageSaved: '✔ Language preference saved!',
46
- networkIssueTitle: '\n⚠️ NETWORK CONNECTIVITY ISSUE DETECTED',
47
- networkIssueDesc: ' Cloudflared is having trouble maintaining a stable connection to Cloudflare\'s edge servers.',
48
- networkIssueTunnel: ' 📡 Your tunnel is still working, but connection quality may be affected.',
49
- networkIssueReasons: '\n 💡 Possible reasons:',
50
- networkIssueReason1: ' • Unstable internet connection or high packet loss',
51
- networkIssueReason2: ' • Firewall/Router blocking UDP traffic (QUIC protocol)',
52
- networkIssueReason3: ' • ISP throttling or network congestion',
53
- networkIssueFix: '\n 🔧 What to try:',
54
- networkIssueFix1: ' • Check your internet connection stability',
55
- networkIssueFix2: ' • Try connecting from a different network',
56
- networkIssueFix3: ' • Disable VPN/Proxy if you\'re using one',
57
- networkIssueFix4: ' • The tunnel will automatically fallback to HTTP/2 if QUIC fails',
58
- networkIssueIgnore: '\n ℹ️ This is usually not critical - your tunnel should continue working normally.\n',
59
- },
60
- vi: {
61
- header: 'N P O R T ⚡️ Việt Nam Mãi Đỉnh ❤️',
62
- creatingTunnel: '🛠️ Đang khởi động cổng {port}... Chuẩn bị bay nào!',
63
- checkingUpdates: '🔍 Đang dò la bản cập nhật mới... Đợi tí sắp có quà!',
64
- tunnelLive: '🚀 BẬT MODE TỐC HÀNH! ĐANG BAY RỒI NÈ!',
65
- connection1: ' ✔ [1/2] Đang cắm dây mạng vũ trụ...',
66
- connection2: ' ✔ [2/2] Đang bơm siêu nén khí tốc độ ánh sáng...',
67
- timeRemaining: '⏱️ Tăng tốc thần sầu: Còn {hours}h để quẩy!',
68
- footerTitle: '🔥 LƯU DANH SỬ SÁCH! ĐỪNG QUÊN STAR ⭐️',
69
- footerSubtitle: '(Made in Việt Nam, chuẩn không cần chỉnh! ❤️)',
70
- dropStar: '⭐️ Thả Star: ',
71
- sendCoffee: '☕️ Tặng Coffee: ',
72
- newVersion: '🚀 BẢN MỚI (v{version}) vừa hạ cánh!',
73
- updateCommand: '💡 Gõ liền: npm install -g nport@latest',
74
- tunnelShutdown: '🛑 Đã tới giờ \'chốt\' deal rồi cả nhà ơi...',
75
- cleaningUp: 'Đang dọn dẹp chiến trường... 🧹',
76
- cleanupDone: 'Xịn xò! Đã dọn xong rồi nè.',
77
- cleanupFailed: 'Oằn trời, dọn không nổi!',
78
- subdomainReleased: 'Subdomain... Xí xoá! Tạm biệt nhé 🗑️✨',
79
- serverBusy: '(Có thể server đang bận order trà sữa)',
80
- goodbyeTitle: '👋 GẶP LẠI BẠN Ở ĐƯỜNG BĂNG KHÁC...',
81
- goodbyeMessage: 'Cảm ơn đã quẩy NPort! Lần sau chơi tiếp nha 😘',
82
- website: '🌐 Sân chơi chính: ',
83
- author: '👤 Nhà tài trợ: ',
84
- changeLanguage: '🌍 Đổi ngôn ngữ: ',
85
- changeLanguageHint: 'nport --language',
86
- versionTitle: 'NPort v{version}',
87
- versionSubtitle: 'Hơn cả Ngrok - Ma-de in Việt Nam',
88
- versionLatest: '🎉 Chúc mừng! Đang cùng server với bản mới nhất!',
89
- versionAvailable: '🌟 Vèo vèo: Có bản mới v{version} vừa cập bến!',
90
- versionUpdate: 'Update khẩn trương lẹ làng: ',
91
- learnMore: 'Khám phá thêm cho nóng: ',
92
- languagePrompt: '\n🌍 Chọn lựa ngôn ngữ ngay bên dưới nào!\n',
93
- languageQuestion: 'Chớp lấy một lựa chọn nha (1-2): ',
94
- languageEnglish: '1. English (Chuẩn quốc tế!)',
95
- languageVietnamese: '2. Tiếng Việt (Đỉnh của chóp)',
96
- languageInvalid: 'Ơ hơ, chọn sai rồi! Mặc định Tiếng Việt luôn cho nóng.',
97
- languageSaved: '🎯 Xong rồi! Lưu ngôn ngữ thành công!',
98
- networkIssueTitle: '\n⚠️ PHÁT HIỆN VẤN ĐỀ MẠNG',
99
- networkIssueDesc: ' Cloudflared đang gặp khó khăn khi giữ kết nối ổn định tới Cloudflare edge servers.',
100
- networkIssueTunnel: ' 📡 Tunnel của bạn vẫn hoạt động, nhưng chất lượng kết nối có thể bị ảnh hưởng.',
101
- networkIssueReasons: '\n 💡 Có thể do:',
102
- networkIssueReason1: ' • Mạng internet không ổn định hoặc mất gói tin',
103
- networkIssueReason2: ' • Firewall/Router chặn UDP traffic (giao thức QUIC)',
104
- networkIssueReason3: ' • Nhà mạng throttle hoặc tắc nghẽn mạng',
105
- networkIssueFix: '\n 🔧 Thử các cách sau:',
106
- networkIssueFix1: ' • Kiểm tra kết nối internet của bạn',
107
- networkIssueFix2: ' • Thử đổi sang mạng khác (ví dụ: 4G/5G)',
108
- networkIssueFix3: ' • Tắt VPN/Proxy nếu đang bật',
109
- networkIssueFix4: ' • Tunnel sẽ tự động chuyển sang HTTP/2 nếu QUIC fail',
110
- networkIssueIgnore: '\n ℹ️ Lỗi này thường không nghiêm trọng - tunnel vẫn hoạt động bình thường.\n',
111
- }
112
- };
113
- /**
114
- * Language Manager
115
- */
116
- class LanguageManager {
117
- currentLanguage = 'en';
118
- availableLanguages = AVAILABLE_LANGUAGES;
119
- /**
120
- * Gets a translated string with variable substitution.
121
- */
122
- t(key, vars = {}) {
123
- const translations = TRANSLATIONS[this.currentLanguage] || TRANSLATIONS.en;
124
- let text = translations[key] || TRANSLATIONS.en[key] || key;
125
- Object.keys(vars).forEach(varKey => {
126
- const value = vars[varKey];
127
- if (value !== undefined) {
128
- text = text.replace(`{${varKey}}`, String(value));
129
- }
130
- });
131
- return text;
132
- }
133
- /**
134
- * Loads saved language preference.
135
- */
136
- loadLanguagePreference() {
137
- const lang = configManager.getLanguage();
138
- if (lang && this.availableLanguages.includes(lang)) {
139
- return lang;
140
- }
141
- return null;
142
- }
143
- /**
144
- * Saves language preference.
145
- */
146
- saveLanguagePreference(lang) {
147
- configManager.setLanguage(lang);
148
- }
149
- /**
150
- * Sets the current language.
151
- */
152
- setLanguage(lang) {
153
- if (this.availableLanguages.includes(lang)) {
154
- this.currentLanguage = lang;
155
- return true;
156
- }
157
- return false;
158
- }
159
- /**
160
- * Gets the current language code.
161
- */
162
- getLanguage() {
163
- return this.currentLanguage;
164
- }
165
- /**
166
- * Prompts user to select a language.
167
- */
168
- async promptLanguageSelection() {
169
- return new Promise((resolve) => {
170
- const rl = readline.createInterface({
171
- input: process.stdin,
172
- output: process.stdout
173
- });
174
- console.log(this.t('languagePrompt'));
175
- console.log(` ${this.t('languageEnglish')}`);
176
- console.log(` ${this.t('languageVietnamese')}\n`);
177
- rl.question(`${this.t('languageQuestion')}`, (answer) => {
178
- rl.close();
179
- const choice = answer.trim();
180
- let selectedLang = 'en';
181
- if (choice === '1') {
182
- selectedLang = 'en';
183
- }
184
- else if (choice === '2') {
185
- selectedLang = 'vi';
186
- }
187
- else {
188
- console.log(`\n${this.t('languageInvalid')}\n`);
189
- }
190
- this.setLanguage(selectedLang);
191
- this.saveLanguagePreference(selectedLang);
192
- console.log(`${this.t('languageSaved')}\n`);
193
- resolve(selectedLang);
194
- });
195
- });
196
- }
197
- /**
198
- * Initializes the language system.
199
- */
200
- async initialize(cliLanguage = null) {
201
- if (cliLanguage && cliLanguage !== 'prompt' && this.setLanguage(cliLanguage)) {
202
- this.saveLanguagePreference(cliLanguage);
203
- return cliLanguage;
204
- }
205
- if (cliLanguage === 'prompt') {
206
- return await this.promptLanguageSelection();
207
- }
208
- const savedLang = this.loadLanguagePreference();
209
- if (savedLang) {
210
- this.setLanguage(savedLang);
211
- return savedLang;
212
- }
213
- return await this.promptLanguageSelection();
214
- }
215
- }
216
- export const lang = new LanguageManager();
217
- //# sourceMappingURL=lang.js.map
package/dist/lang.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"lang.js","sourceRoot":"","sources":["../src/lang.ts"],"names":[],"mappings":"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"}