xray-manager 1.8.5 → 2.0.0

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 (324) hide show
  1. package/README.md +102 -42
  2. package/dist/cli.mjs +8587 -0
  3. package/dist/cli.mjs.map +7 -0
  4. package/package.json +13 -5
  5. package/dist/cli.d.ts +0 -11
  6. package/dist/cli.d.ts.map +0 -1
  7. package/dist/cli.js +0 -134
  8. package/dist/cli.js.map +0 -1
  9. package/dist/commands/clash.d.ts +0 -20
  10. package/dist/commands/clash.d.ts.map +0 -1
  11. package/dist/commands/clash.js +0 -156
  12. package/dist/commands/clash.js.map +0 -1
  13. package/dist/commands/config.d.ts +0 -56
  14. package/dist/commands/config.d.ts.map +0 -1
  15. package/dist/commands/config.js +0 -461
  16. package/dist/commands/config.js.map +0 -1
  17. package/dist/commands/interactive.d.ts +0 -55
  18. package/dist/commands/interactive.d.ts.map +0 -1
  19. package/dist/commands/interactive.js +0 -418
  20. package/dist/commands/interactive.js.map +0 -1
  21. package/dist/commands/logs.d.ts +0 -62
  22. package/dist/commands/logs.d.ts.map +0 -1
  23. package/dist/commands/logs.js +0 -389
  24. package/dist/commands/logs.js.map +0 -1
  25. package/dist/commands/quota.d.ts +0 -54
  26. package/dist/commands/quota.d.ts.map +0 -1
  27. package/dist/commands/quota.js +0 -661
  28. package/dist/commands/quota.js.map +0 -1
  29. package/dist/commands/review.d.ts +0 -8
  30. package/dist/commands/review.d.ts.map +0 -1
  31. package/dist/commands/review.js +0 -79
  32. package/dist/commands/review.js.map +0 -1
  33. package/dist/commands/service.d.ts +0 -43
  34. package/dist/commands/service.d.ts.map +0 -1
  35. package/dist/commands/service.js +0 -202
  36. package/dist/commands/service.js.map +0 -1
  37. package/dist/commands/user.d.ts +0 -49
  38. package/dist/commands/user.d.ts.map +0 -1
  39. package/dist/commands/user.js +0 -371
  40. package/dist/commands/user.js.map +0 -1
  41. package/dist/components/dashboard-widget.d.ts +0 -21
  42. package/dist/components/dashboard-widget.d.ts.map +0 -1
  43. package/dist/components/dashboard-widget.js +0 -234
  44. package/dist/components/dashboard-widget.js.map +0 -1
  45. package/dist/components/progress-bar.d.ts +0 -67
  46. package/dist/components/progress-bar.d.ts.map +0 -1
  47. package/dist/components/progress-bar.js +0 -138
  48. package/dist/components/progress-bar.js.map +0 -1
  49. package/dist/components/user-table.d.ts +0 -8
  50. package/dist/components/user-table.d.ts.map +0 -1
  51. package/dist/components/user-table.js +0 -91
  52. package/dist/components/user-table.js.map +0 -1
  53. package/dist/config/i18n.d.ts +0 -136
  54. package/dist/config/i18n.d.ts.map +0 -1
  55. package/dist/config/i18n.js +0 -323
  56. package/dist/config/i18n.js.map +0 -1
  57. package/dist/constants/error-codes.d.ts +0 -344
  58. package/dist/constants/error-codes.d.ts.map +0 -1
  59. package/dist/constants/error-codes.js +0 -462
  60. package/dist/constants/error-codes.js.map +0 -1
  61. package/dist/constants/exit-codes.d.ts +0 -49
  62. package/dist/constants/exit-codes.d.ts.map +0 -1
  63. package/dist/constants/exit-codes.js +0 -100
  64. package/dist/constants/exit-codes.js.map +0 -1
  65. package/dist/constants/paths.d.ts +0 -63
  66. package/dist/constants/paths.d.ts.map +0 -1
  67. package/dist/constants/paths.js +0 -78
  68. package/dist/constants/paths.js.map +0 -1
  69. package/dist/constants/quota.d.ts +0 -126
  70. package/dist/constants/quota.d.ts.map +0 -1
  71. package/dist/constants/quota.js +0 -135
  72. package/dist/constants/quota.js.map +0 -1
  73. package/dist/constants/review.d.ts +0 -14
  74. package/dist/constants/review.d.ts.map +0 -1
  75. package/dist/constants/review.js +0 -33
  76. package/dist/constants/review.js.map +0 -1
  77. package/dist/constants/supported-distros.d.ts +0 -17
  78. package/dist/constants/supported-distros.d.ts.map +0 -1
  79. package/dist/constants/supported-distros.js +0 -68
  80. package/dist/constants/supported-distros.js.map +0 -1
  81. package/dist/constants/theme.d.ts +0 -34
  82. package/dist/constants/theme.d.ts.map +0 -1
  83. package/dist/constants/theme.js +0 -52
  84. package/dist/constants/theme.js.map +0 -1
  85. package/dist/constants/timeouts.d.ts +0 -84
  86. package/dist/constants/timeouts.d.ts.map +0 -1
  87. package/dist/constants/timeouts.js +0 -111
  88. package/dist/constants/timeouts.js.map +0 -1
  89. package/dist/constants/ui-symbols.d.ts +0 -47
  90. package/dist/constants/ui-symbols.d.ts.map +0 -1
  91. package/dist/constants/ui-symbols.js +0 -48
  92. package/dist/constants/ui-symbols.js.map +0 -1
  93. package/dist/services/clash-config.d.ts +0 -16
  94. package/dist/services/clash-config.d.ts.map +0 -1
  95. package/dist/services/clash-config.js +0 -107
  96. package/dist/services/clash-config.js.map +0 -1
  97. package/dist/services/config-manager.d.ts +0 -90
  98. package/dist/services/config-manager.d.ts.map +0 -1
  99. package/dist/services/config-manager.js +0 -307
  100. package/dist/services/config-manager.js.map +0 -1
  101. package/dist/services/layout-manager.d.ts +0 -94
  102. package/dist/services/layout-manager.d.ts.map +0 -1
  103. package/dist/services/layout-manager.js +0 -192
  104. package/dist/services/layout-manager.js.map +0 -1
  105. package/dist/services/log-manager.d.ts +0 -157
  106. package/dist/services/log-manager.d.ts.map +0 -1
  107. package/dist/services/log-manager.js +0 -397
  108. package/dist/services/log-manager.js.map +0 -1
  109. package/dist/services/navigation-manager.d.ts +0 -23
  110. package/dist/services/navigation-manager.d.ts.map +0 -1
  111. package/dist/services/navigation-manager.js +0 -39
  112. package/dist/services/navigation-manager.js.map +0 -1
  113. package/dist/services/platform-detector.d.ts +0 -10
  114. package/dist/services/platform-detector.d.ts.map +0 -1
  115. package/dist/services/platform-detector.js +0 -106
  116. package/dist/services/platform-detector.js.map +0 -1
  117. package/dist/services/public-ip-manager.d.ts +0 -78
  118. package/dist/services/public-ip-manager.d.ts.map +0 -1
  119. package/dist/services/public-ip-manager.js +0 -296
  120. package/dist/services/public-ip-manager.js.map +0 -1
  121. package/dist/services/quota-enforcer.d.ts +0 -86
  122. package/dist/services/quota-enforcer.d.ts.map +0 -1
  123. package/dist/services/quota-enforcer.js +0 -151
  124. package/dist/services/quota-enforcer.js.map +0 -1
  125. package/dist/services/quota-manager.d.ts +0 -101
  126. package/dist/services/quota-manager.d.ts.map +0 -1
  127. package/dist/services/quota-manager.js +0 -257
  128. package/dist/services/quota-manager.js.map +0 -1
  129. package/dist/services/review/areas/community.d.ts +0 -9
  130. package/dist/services/review/areas/community.d.ts.map +0 -1
  131. package/dist/services/review/areas/community.js +0 -59
  132. package/dist/services/review/areas/community.js.map +0 -1
  133. package/dist/services/review/areas/contribution.d.ts +0 -9
  134. package/dist/services/review/areas/contribution.d.ts.map +0 -1
  135. package/dist/services/review/areas/contribution.js +0 -107
  136. package/dist/services/review/areas/contribution.js.map +0 -1
  137. package/dist/services/review/areas/documentation.d.ts +0 -9
  138. package/dist/services/review/areas/documentation.d.ts.map +0 -1
  139. package/dist/services/review/areas/documentation.js +0 -110
  140. package/dist/services/review/areas/documentation.js.map +0 -1
  141. package/dist/services/review/areas/license.d.ts +0 -9
  142. package/dist/services/review/areas/license.d.ts.map +0 -1
  143. package/dist/services/review/areas/license.js +0 -86
  144. package/dist/services/review/areas/license.js.map +0 -1
  145. package/dist/services/review/areas/quality.d.ts +0 -9
  146. package/dist/services/review/areas/quality.d.ts.map +0 -1
  147. package/dist/services/review/areas/quality.js +0 -84
  148. package/dist/services/review/areas/quality.js.map +0 -1
  149. package/dist/services/review/areas/security.d.ts +0 -9
  150. package/dist/services/review/areas/security.d.ts.map +0 -1
  151. package/dist/services/review/areas/security.js +0 -64
  152. package/dist/services/review/areas/security.js.map +0 -1
  153. package/dist/services/review/evidence.d.ts +0 -10
  154. package/dist/services/review/evidence.d.ts.map +0 -1
  155. package/dist/services/review/evidence.js +0 -40
  156. package/dist/services/review/evidence.js.map +0 -1
  157. package/dist/services/review/recommendations-filter.d.ts +0 -12
  158. package/dist/services/review/recommendations-filter.d.ts.map +0 -1
  159. package/dist/services/review/recommendations-filter.js +0 -20
  160. package/dist/services/review/recommendations-filter.js.map +0 -1
  161. package/dist/services/review/repo-scanner.d.ts +0 -8
  162. package/dist/services/review/repo-scanner.d.ts.map +0 -1
  163. package/dist/services/review/repo-scanner.js +0 -15
  164. package/dist/services/review/repo-scanner.js.map +0 -1
  165. package/dist/services/review/report-renderer.d.ts +0 -15
  166. package/dist/services/review/report-renderer.d.ts.map +0 -1
  167. package/dist/services/review/report-renderer.js +0 -120
  168. package/dist/services/review/report-renderer.js.map +0 -1
  169. package/dist/services/review/review-engine.d.ts +0 -15
  170. package/dist/services/review/review-engine.d.ts.map +0 -1
  171. package/dist/services/review/review-engine.js +0 -61
  172. package/dist/services/review/review-engine.js.map +0 -1
  173. package/dist/services/review/summary-builder.d.ts +0 -8
  174. package/dist/services/review/summary-builder.d.ts.map +0 -1
  175. package/dist/services/review/summary-builder.js +0 -26
  176. package/dist/services/review/summary-builder.js.map +0 -1
  177. package/dist/services/screen-manager.d.ts +0 -13
  178. package/dist/services/screen-manager.d.ts.map +0 -1
  179. package/dist/services/screen-manager.js +0 -42
  180. package/dist/services/screen-manager.js.map +0 -1
  181. package/dist/services/stats-config-manager.d.ts +0 -110
  182. package/dist/services/stats-config-manager.d.ts.map +0 -1
  183. package/dist/services/stats-config-manager.js +0 -443
  184. package/dist/services/stats-config-manager.js.map +0 -1
  185. package/dist/services/systemd-manager.d.ts +0 -197
  186. package/dist/services/systemd-manager.d.ts.map +0 -1
  187. package/dist/services/systemd-manager.js +0 -458
  188. package/dist/services/systemd-manager.js.map +0 -1
  189. package/dist/services/traffic-manager.d.ts +0 -106
  190. package/dist/services/traffic-manager.d.ts.map +0 -1
  191. package/dist/services/traffic-manager.js +0 -368
  192. package/dist/services/traffic-manager.js.map +0 -1
  193. package/dist/services/user-manager.d.ts +0 -90
  194. package/dist/services/user-manager.d.ts.map +0 -1
  195. package/dist/services/user-manager.js +0 -347
  196. package/dist/services/user-manager.js.map +0 -1
  197. package/dist/services/user-metadata-manager.d.ts +0 -85
  198. package/dist/services/user-metadata-manager.d.ts.map +0 -1
  199. package/dist/services/user-metadata-manager.js +0 -181
  200. package/dist/services/user-metadata-manager.js.map +0 -1
  201. package/dist/types/config.d.ts +0 -340
  202. package/dist/types/config.d.ts.map +0 -1
  203. package/dist/types/config.js +0 -7
  204. package/dist/types/config.js.map +0 -1
  205. package/dist/types/layout.d.ts +0 -119
  206. package/dist/types/layout.d.ts.map +0 -1
  207. package/dist/types/layout.js +0 -142
  208. package/dist/types/layout.js.map +0 -1
  209. package/dist/types/platform.d.ts +0 -72
  210. package/dist/types/platform.d.ts.map +0 -1
  211. package/dist/types/platform.js +0 -38
  212. package/dist/types/platform.js.map +0 -1
  213. package/dist/types/quota.d.ts +0 -158
  214. package/dist/types/quota.d.ts.map +0 -1
  215. package/dist/types/quota.js +0 -26
  216. package/dist/types/quota.js.map +0 -1
  217. package/dist/types/review.d.ts +0 -62
  218. package/dist/types/review.d.ts.map +0 -1
  219. package/dist/types/review.js +0 -8
  220. package/dist/types/review.js.map +0 -1
  221. package/dist/types/server-config.d.ts +0 -53
  222. package/dist/types/server-config.d.ts.map +0 -1
  223. package/dist/types/server-config.js +0 -19
  224. package/dist/types/server-config.js.map +0 -1
  225. package/dist/types/service.d.ts +0 -96
  226. package/dist/types/service.d.ts.map +0 -1
  227. package/dist/types/service.js +0 -7
  228. package/dist/types/service.js.map +0 -1
  229. package/dist/types/terminal.d.ts +0 -35
  230. package/dist/types/terminal.d.ts.map +0 -1
  231. package/dist/types/terminal.js +0 -20
  232. package/dist/types/terminal.js.map +0 -1
  233. package/dist/types/ui-components.d.ts +0 -53
  234. package/dist/types/ui-components.d.ts.map +0 -1
  235. package/dist/types/ui-components.js +0 -3
  236. package/dist/types/ui-components.js.map +0 -1
  237. package/dist/types/user-metadata.d.ts +0 -43
  238. package/dist/types/user-metadata.d.ts.map +0 -1
  239. package/dist/types/user-metadata.js +0 -17
  240. package/dist/types/user-metadata.js.map +0 -1
  241. package/dist/types/user.d.ts +0 -134
  242. package/dist/types/user.d.ts.map +0 -1
  243. package/dist/types/user.js +0 -7
  244. package/dist/types/user.js.map +0 -1
  245. package/dist/utils/clipboard.d.ts +0 -21
  246. package/dist/utils/clipboard.d.ts.map +0 -1
  247. package/dist/utils/clipboard.js +0 -45
  248. package/dist/utils/clipboard.js.map +0 -1
  249. package/dist/utils/error-formatter.d.ts +0 -60
  250. package/dist/utils/error-formatter.d.ts.map +0 -1
  251. package/dist/utils/error-formatter.js +0 -244
  252. package/dist/utils/error-formatter.js.map +0 -1
  253. package/dist/utils/errors.d.ts +0 -92
  254. package/dist/utils/errors.d.ts.map +0 -1
  255. package/dist/utils/errors.js +0 -143
  256. package/dist/utils/errors.js.map +0 -1
  257. package/dist/utils/firewall.d.ts +0 -14
  258. package/dist/utils/firewall.d.ts.map +0 -1
  259. package/dist/utils/firewall.js +0 -78
  260. package/dist/utils/firewall.js.map +0 -1
  261. package/dist/utils/format.d.ts +0 -93
  262. package/dist/utils/format.d.ts.map +0 -1
  263. package/dist/utils/format.js +0 -240
  264. package/dist/utils/format.js.map +0 -1
  265. package/dist/utils/icons.d.ts +0 -53
  266. package/dist/utils/icons.d.ts.map +0 -1
  267. package/dist/utils/icons.js +0 -143
  268. package/dist/utils/icons.js.map +0 -1
  269. package/dist/utils/layout.d.ts +0 -142
  270. package/dist/utils/layout.d.ts.map +0 -1
  271. package/dist/utils/layout.js +0 -381
  272. package/dist/utils/layout.js.map +0 -1
  273. package/dist/utils/logger.d.ts +0 -160
  274. package/dist/utils/logger.d.ts.map +0 -1
  275. package/dist/utils/logger.js +0 -351
  276. package/dist/utils/logger.js.map +0 -1
  277. package/dist/utils/network.d.ts +0 -39
  278. package/dist/utils/network.d.ts.map +0 -1
  279. package/dist/utils/network.js +0 -227
  280. package/dist/utils/network.js.map +0 -1
  281. package/dist/utils/os-detection.d.ts +0 -10
  282. package/dist/utils/os-detection.d.ts.map +0 -1
  283. package/dist/utils/os-detection.js +0 -86
  284. package/dist/utils/os-detection.js.map +0 -1
  285. package/dist/utils/preflight.d.ts +0 -57
  286. package/dist/utils/preflight.d.ts.map +0 -1
  287. package/dist/utils/preflight.js +0 -215
  288. package/dist/utils/preflight.js.map +0 -1
  289. package/dist/utils/repo-scan.d.ts +0 -54
  290. package/dist/utils/repo-scan.d.ts.map +0 -1
  291. package/dist/utils/repo-scan.js +0 -165
  292. package/dist/utils/repo-scan.js.map +0 -1
  293. package/dist/utils/report-output.d.ts +0 -13
  294. package/dist/utils/report-output.d.ts.map +0 -1
  295. package/dist/utils/report-output.js +0 -33
  296. package/dist/utils/report-output.js.map +0 -1
  297. package/dist/utils/review-id.d.ts +0 -8
  298. package/dist/utils/review-id.d.ts.map +0 -1
  299. package/dist/utils/review-id.js +0 -17
  300. package/dist/utils/review-id.js.map +0 -1
  301. package/dist/utils/splash.d.ts +0 -21
  302. package/dist/utils/splash.d.ts.map +0 -1
  303. package/dist/utils/splash.js +0 -179
  304. package/dist/utils/splash.js.map +0 -1
  305. package/dist/utils/terminal.d.ts +0 -32
  306. package/dist/utils/terminal.d.ts.map +0 -1
  307. package/dist/utils/terminal.js +0 -93
  308. package/dist/utils/terminal.js.map +0 -1
  309. package/dist/utils/traffic-formatter.d.ts +0 -45
  310. package/dist/utils/traffic-formatter.d.ts.map +0 -1
  311. package/dist/utils/traffic-formatter.js +0 -131
  312. package/dist/utils/traffic-formatter.js.map +0 -1
  313. package/dist/utils/validator.d.ts +0 -102
  314. package/dist/utils/validator.d.ts.map +0 -1
  315. package/dist/utils/validator.js +0 -238
  316. package/dist/utils/validator.js.map +0 -1
  317. package/dist/utils/vless-link.d.ts +0 -27
  318. package/dist/utils/vless-link.d.ts.map +0 -1
  319. package/dist/utils/vless-link.js +0 -69
  320. package/dist/utils/vless-link.js.map +0 -1
  321. package/dist/utils/which.d.ts +0 -13
  322. package/dist/utils/which.d.ts.map +0 -1
  323. package/dist/utils/which.js +0 -28
  324. package/dist/utils/which.js.map +0 -1
@@ -1,351 +0,0 @@
1
- "use strict";
2
- /**
3
- * 日志工具函数(使用 chalk 颜色和通用文本指示符)
4
- * @module utils/logger
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.OutputMode = exports.LogLevel = void 0;
11
- exports.configureLogger = configureLogger;
12
- exports.getOutputMode = getOutputMode;
13
- exports.debug = debug;
14
- exports.info = info;
15
- exports.success = success;
16
- exports.warn = warn;
17
- exports.error = error;
18
- exports.title = title;
19
- exports.separator = separator;
20
- exports.tableHeader = tableHeader;
21
- exports.loading = loading;
22
- exports.progress = progress;
23
- exports.hint = hint;
24
- exports.keyValue = keyValue;
25
- exports.newline = newline;
26
- exports.listItem = listItem;
27
- exports.code = code;
28
- exports.formattedError = formattedError;
29
- exports.formattedErrorInfo = formattedErrorInfo;
30
- exports.formattedGenericError = formattedGenericError;
31
- const chalk_1 = __importDefault(require("chalk"));
32
- const terminal_1 = require("./terminal");
33
- const icons_1 = require("./icons");
34
- const error_formatter_1 = require("./error-formatter");
35
- /**
36
- * 日志级别
37
- */
38
- /* eslint-disable no-unused-vars */
39
- var LogLevel;
40
- (function (LogLevel) {
41
- LogLevel["DEBUG"] = "debug";
42
- LogLevel["INFO"] = "info";
43
- LogLevel["SUCCESS"] = "success";
44
- LogLevel["WARN"] = "warn";
45
- LogLevel["ERROR"] = "error";
46
- })(LogLevel || (exports.LogLevel = LogLevel = {}));
47
- /* eslint-enable no-unused-vars */
48
- /**
49
- * 输出模式
50
- */
51
- /* eslint-disable no-unused-vars */
52
- var OutputMode;
53
- (function (OutputMode) {
54
- /** 完整模式:颜色 + 格式化 */
55
- OutputMode["RICH"] = "rich";
56
- /** 朴素模式:无颜色 + 格式化 */
57
- OutputMode["PLAIN_TTY"] = "plain_tty";
58
- /** 管道模式:纯文本 + 时间戳 */
59
- OutputMode["PIPE"] = "pipe";
60
- })(OutputMode || (exports.OutputMode = OutputMode = {}));
61
- /**
62
- * 全局日志配置
63
- */
64
- let globalOptions = {
65
- color: true,
66
- timestamp: false,
67
- level: LogLevel.INFO,
68
- };
69
- /**
70
- * 缓存的终端能力
71
- */
72
- let cachedCapabilities = (0, terminal_1.detectTerminalCapabilities)();
73
- /**
74
- * 配置全局日志选项
75
- */
76
- function configureLogger(options) {
77
- globalOptions = { ...globalOptions, ...options };
78
- }
79
- /**
80
- * 获取当前输出模式
81
- * @returns 输出模式(RICH, PLAIN_TTY, 或 PIPE)
82
- */
83
- function getOutputMode() {
84
- const isTTY = cachedCapabilities.isTTY;
85
- const colorEnabled = globalOptions.color !== false;
86
- if (!isTTY) {
87
- return OutputMode.PIPE;
88
- }
89
- if (!colorEnabled) {
90
- return OutputMode.PLAIN_TTY;
91
- }
92
- return OutputMode.RICH;
93
- }
94
- /**
95
- * 获取时间戳字符串
96
- */
97
- function getTimestamp() {
98
- const now = new Date();
99
- const hours = String(now.getHours()).padStart(2, '0');
100
- const minutes = String(now.getMinutes()).padStart(2, '0');
101
- const seconds = String(now.getSeconds()).padStart(2, '0');
102
- return `[${hours}:${minutes}:${seconds}]`;
103
- }
104
- /**
105
- * 格式化日志消息(使用新的输出模式检测)
106
- * @param level - 日志级别
107
- * @param message - 消息内容
108
- * @param includeIndicator - 是否包含状态指示符(默认 true)
109
- * @returns 格式化后的消息
110
- */
111
- function formatMessage(level, message, includeIndicator = true) {
112
- const mode = getOutputMode();
113
- const indicator = includeIndicator ? (0, icons_1.resolveIcon)(level, cachedCapabilities) : '';
114
- switch (mode) {
115
- case OutputMode.PIPE:
116
- // 管道模式:[timestamp] [LEVEL] message
117
- const levelLabel = (0, icons_1.getStatusIndicator)(level).ascii;
118
- return `${getTimestamp()} ${levelLabel} ${message}`;
119
- case OutputMode.PLAIN_TTY:
120
- // 朴素 TTY 模式:indicator message(无颜色)
121
- return includeIndicator ? `${indicator} ${message}` : message;
122
- case OutputMode.RICH:
123
- default:
124
- // 完整模式:颜色 + indicator + message
125
- const formattedMessage = includeIndicator ? `${indicator} ${message}` : message;
126
- if (globalOptions.timestamp) {
127
- return `${chalk_1.default.gray(getTimestamp())} ${formattedMessage}`;
128
- }
129
- return formattedMessage;
130
- }
131
- }
132
- /**
133
- * 应用颜色(仅在 RICH 模式下)
134
- * @param message - 消息
135
- * @param colorFn - Chalk 颜色函数
136
- * @returns 着色后的消息
137
- */
138
- function applyColor(message, colorFn) {
139
- const mode = getOutputMode();
140
- if (mode === OutputMode.RICH) {
141
- return colorFn(message);
142
- }
143
- return message;
144
- }
145
- /**
146
- * 调试日志(灰色,[DEBUG] 指示符)
147
- */
148
- function debug(...args) {
149
- const message = args.join(' ');
150
- const formatted = formatMessage(LogLevel.DEBUG, message);
151
- console.debug(applyColor(formatted, chalk_1.default.gray));
152
- }
153
- /**
154
- * 信息日志(默认颜色,[INFO] 指示符)
155
- */
156
- function info(...args) {
157
- const message = args.join(' ');
158
- const formatted = formatMessage(LogLevel.INFO, message);
159
- console.info(applyColor(formatted, chalk_1.default.cyan));
160
- }
161
- /**
162
- * 成功日志(绿色,✓ 或 [OK] 指示符)
163
- */
164
- function success(...args) {
165
- const message = args.join(' ');
166
- const formatted = formatMessage(LogLevel.SUCCESS, message);
167
- console.log(applyColor(formatted, chalk_1.default.green));
168
- }
169
- /**
170
- * 警告日志(黄色,! 或 [WARN] 指示符)
171
- */
172
- function warn(...args) {
173
- const message = args.join(' ');
174
- const formatted = formatMessage(LogLevel.WARN, message);
175
- console.warn(applyColor(formatted, chalk_1.default.yellow));
176
- }
177
- /**
178
- * 错误日志(红色,✗ 或 [ERROR] 指示符)
179
- */
180
- function error(...args) {
181
- const message = args.join(' ');
182
- const formatted = formatMessage(LogLevel.ERROR, message);
183
- console.error(applyColor(formatted, chalk_1.default.red));
184
- }
185
- /**
186
- * 标题日志(青色,加粗)
187
- */
188
- function title(message) {
189
- const mode = getOutputMode();
190
- if (mode === OutputMode.RICH) {
191
- console.log(chalk_1.default.cyan.bold(`\n${message}\n`));
192
- }
193
- else {
194
- console.log(`\n=== ${message} ===\n`);
195
- }
196
- }
197
- /**
198
- * 分隔线(自动适应终端宽度,最大 80 列)
199
- * @param char - 分隔符字符
200
- * @param length - 分隔线长度(默认 50)
201
- */
202
- function separator(char = '─', length = 50) {
203
- // Ensure separator doesn't exceed 80 columns
204
- const maxWidth = 80;
205
- const actualLength = Math.min(length, maxWidth);
206
- const line = char.repeat(actualLength);
207
- console.log(applyColor(line, chalk_1.default.gray));
208
- }
209
- /**
210
- * 表格表头(带边框,确保在 80 列内)
211
- * @param titleText - 标题文本
212
- */
213
- function tableHeader(titleText) {
214
- // Use 59 character width to ensure box drawing chars stay within 80 columns
215
- // 59 (content) + 2 (borders) = 61 chars total
216
- const width = 59;
217
- const border = '═'.repeat(width);
218
- const mode = getOutputMode();
219
- if (mode === OutputMode.RICH) {
220
- console.log(chalk_1.default.cyan(`╔${border}╗`));
221
- console.log(chalk_1.default.cyan(`║${titleText.padStart((width + titleText.length) / 2).padEnd(width)}║`));
222
- console.log(chalk_1.default.cyan(`╚${border}╝`));
223
- }
224
- else {
225
- console.log(border);
226
- console.log(titleText);
227
- console.log(border);
228
- }
229
- }
230
- /**
231
- * 加载动画消息(... 或 [...] 指示符)
232
- */
233
- function loading(message) {
234
- const icon = (0, icons_1.resolveSpecialIcon)('LOADING', cachedCapabilities);
235
- const formatted = `${icon} ${message}...`;
236
- console.log(applyColor(formatted, chalk_1.default.cyan));
237
- }
238
- /**
239
- * 进度消息(> 或 [>>] 指示符)
240
- */
241
- function progress(message) {
242
- const icon = (0, icons_1.resolveSpecialIcon)('PROGRESS', cachedCapabilities);
243
- const formatted = `${icon} ${message}...`;
244
- console.log(applyColor(formatted, chalk_1.default.blue));
245
- }
246
- /**
247
- * 提示消息(* 或 [TIP] 指示符)
248
- */
249
- function hint(message) {
250
- const icon = (0, icons_1.resolveSpecialIcon)('HINT', cachedCapabilities);
251
- const formatted = `${icon} 提示: ${message}`;
252
- console.log(applyColor(formatted, chalk_1.default.cyan));
253
- }
254
- /**
255
- * 带颜色的键值对输出
256
- */
257
- function keyValue(key, value, keyColor = chalk_1.default.gray) {
258
- const mode = getOutputMode();
259
- if (mode === OutputMode.RICH) {
260
- console.log(` ${keyColor(key + ':')} ${value}`);
261
- }
262
- else {
263
- console.log(` ${key}: ${value}`);
264
- }
265
- }
266
- /**
267
- * 打印空行(用于操作之间的视觉分隔,保持一致间距)
268
- * @param count - 空行数量(默认 1)
269
- */
270
- function newline(count = 1) {
271
- console.log('\n'.repeat(count - 1));
272
- }
273
- /**
274
- * 带颜色的列表项
275
- */
276
- function listItem(message, symbol = '•') {
277
- const mode = getOutputMode();
278
- if (mode === OutputMode.RICH) {
279
- console.log(chalk_1.default.gray(` ${symbol} `) + message);
280
- }
281
- else {
282
- console.log(` ${symbol} ${message}`);
283
- }
284
- }
285
- /**
286
- * 代码块(带灰色背景)
287
- */
288
- function code(codeText) {
289
- const mode = getOutputMode();
290
- if (mode === OutputMode.RICH) {
291
- console.log(chalk_1.default.bgGray.white(` ${codeText} `));
292
- }
293
- else {
294
- console.log(`\`${codeText}\``);
295
- }
296
- }
297
- /**
298
- * 输出格式化的 AppError(带原因和解决方案)
299
- * @param err - AppError 实例
300
- * @param options - 格式化选项
301
- */
302
- function formattedError(err, options) {
303
- const formatted = (0, error_formatter_1.formatAppError)(err, options);
304
- console.error(formatted);
305
- }
306
- /**
307
- * 输出格式化的错误信息(从 ErrorInfo 对象)
308
- * @param errorInfo - 错误信息定义
309
- * @param details - 附加详情
310
- * @param options - 格式化选项
311
- */
312
- function formattedErrorInfo(errorInfo, details, options) {
313
- const formatted = (0, error_formatter_1.formatErrorInfo)(errorInfo, details, options);
314
- console.error(formatted);
315
- }
316
- /**
317
- * 输出格式化的通用错误
318
- * @param err - 任意 Error 对象
319
- * @param fallbackInfo - 如果不是 AppError,使用的回退错误信息
320
- * @param options - 格式化选项
321
- */
322
- function formattedGenericError(err, fallbackInfo, options) {
323
- const formatted = (0, error_formatter_1.formatError)(err, fallbackInfo, options);
324
- console.error(formatted);
325
- }
326
- /**
327
- * 默认导出对象
328
- */
329
- exports.default = {
330
- debug,
331
- info,
332
- success,
333
- warn,
334
- error,
335
- title,
336
- separator,
337
- tableHeader,
338
- loading,
339
- progress,
340
- hint,
341
- keyValue,
342
- newline,
343
- listItem,
344
- code,
345
- configure: configureLogger,
346
- getOutputMode,
347
- formattedError,
348
- formattedErrorInfo,
349
- formattedGenericError,
350
- };
351
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Network detection utilities
3
- * Feature: 009-cross-platform-support
4
- */
5
- import { NetworkConfig, NetworkInterface } from '../types/platform.js';
6
- /**
7
- * Public IP detection result
8
- */
9
- export interface PublicIpResult {
10
- ip: string;
11
- success: boolean;
12
- error?: string;
13
- provider?: string;
14
- }
15
- /**
16
- * Validate IP address (IPv4 or IPv6)
17
- */
18
- export declare function isValidIp(ip: string): boolean;
19
- /**
20
- * Fetch public IP address with timeout and retry
21
- *
22
- * @param timeout - Timeout per request in milliseconds (default: 3000)
23
- * @param maxRetries - Maximum retry attempts (default: 1)
24
- * @returns Public IP detection result
25
- */
26
- export declare function fetchPublicIp(timeout?: number, maxRetries?: number): Promise<PublicIpResult>;
27
- /**
28
- * Check if an IP address is private (NAT)
29
- */
30
- export declare function isPrivateIp(ip: string): boolean;
31
- /**
32
- * Get all network interfaces with IPv4 addresses
33
- */
34
- export declare function getNetworkInterfaces(): NetworkInterface[];
35
- /**
36
- * Detect network configuration
37
- */
38
- export declare function detectNetwork(): NetworkConfig;
39
- //# sourceMappingURL=network.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGvE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4DD;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAyCD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,GAAE,MAAwB,EACjC,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,cAAc,CAAC,CAsBzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAsCzD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAS7C"}
@@ -1,227 +0,0 @@
1
- "use strict";
2
- /**
3
- * Network detection utilities
4
- * Feature: 009-cross-platform-support
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.isValidIp = isValidIp;
41
- exports.fetchPublicIp = fetchPublicIp;
42
- exports.isPrivateIp = isPrivateIp;
43
- exports.getNetworkInterfaces = getNetworkInterfaces;
44
- exports.detectNetwork = detectNetwork;
45
- const child_process_1 = require("child_process");
46
- const https = __importStar(require("https"));
47
- const supported_distros_js_1 = require("../constants/supported-distros.js");
48
- /**
49
- * Default timeout for IP detection (3 seconds)
50
- */
51
- const DEFAULT_TIMEOUT = 3000;
52
- /**
53
- * IP detection services in priority order
54
- */
55
- const IP_DETECTION_SERVICES = [
56
- { name: 'ipify', url: 'https://api.ipify.org' },
57
- { name: 'ifconfig.me', url: 'https://ifconfig.me/ip' },
58
- { name: 'ip.sb', url: 'https://api.ip.sb/ip' },
59
- ];
60
- /**
61
- * Validate IPv4 address format
62
- */
63
- function isValidIpv4(ip) {
64
- const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
65
- if (!ipv4Regex.test(ip))
66
- return false;
67
- const parts = ip.split('.');
68
- return parts.every((part) => {
69
- const num = parseInt(part, 10);
70
- return num >= 0 && num <= 255;
71
- });
72
- }
73
- /**
74
- * Validate IPv6 address format (simplified)
75
- */
76
- function isValidIpv6(ip) {
77
- // Handle special cases
78
- if (ip === '::')
79
- return true;
80
- if (ip === '::1')
81
- return true;
82
- // Full IPv6 address: 8 groups of 4 hex digits
83
- const fullIpv6 = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;
84
- if (fullIpv6.test(ip))
85
- return true;
86
- // IPv6 with :: compression (can appear anywhere)
87
- // Must have :: and valid hex groups before/after
88
- if (ip.includes('::')) {
89
- const parts = ip.split('::');
90
- if (parts.length !== 2)
91
- return false;
92
- const validatePart = (part) => {
93
- if (part === '')
94
- return true;
95
- const groups = part.split(':');
96
- return groups.every((g) => /^[0-9a-fA-F]{1,4}$/.test(g));
97
- };
98
- return validatePart(parts[0]) && validatePart(parts[1]);
99
- }
100
- return false;
101
- }
102
- /**
103
- * Validate IP address (IPv4 or IPv6)
104
- */
105
- function isValidIp(ip) {
106
- return isValidIpv4(ip) || isValidIpv6(ip);
107
- }
108
- /**
109
- * Fetch public IP from a single service with timeout
110
- *
111
- * @param url - Service URL
112
- * @param timeout - Timeout in milliseconds
113
- * @returns Promise resolving to IP string or rejecting on error
114
- */
115
- function fetchFromService(url, timeout) {
116
- return new Promise((resolve, reject) => {
117
- const timeoutId = setTimeout(() => {
118
- reject(new Error(`Timeout after ${timeout}ms`));
119
- }, timeout);
120
- const req = https.get(url, (res) => {
121
- let data = '';
122
- res.on('data', (chunk) => {
123
- data += chunk;
124
- });
125
- res.on('end', () => {
126
- clearTimeout(timeoutId);
127
- const ip = data.trim();
128
- if (isValidIp(ip)) {
129
- resolve(ip);
130
- }
131
- else {
132
- reject(new Error(`Invalid IP response: ${ip.substring(0, 50)}`));
133
- }
134
- });
135
- });
136
- req.on('error', (error) => {
137
- clearTimeout(timeoutId);
138
- reject(error);
139
- });
140
- });
141
- }
142
- /**
143
- * Fetch public IP address with timeout and retry
144
- *
145
- * @param timeout - Timeout per request in milliseconds (default: 3000)
146
- * @param maxRetries - Maximum retry attempts (default: 1)
147
- * @returns Public IP detection result
148
- */
149
- async function fetchPublicIp(timeout = DEFAULT_TIMEOUT, maxRetries = 1) {
150
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
151
- for (const service of IP_DETECTION_SERVICES) {
152
- try {
153
- const ip = await fetchFromService(service.url, timeout);
154
- return {
155
- ip,
156
- success: true,
157
- provider: service.name,
158
- };
159
- }
160
- catch {
161
- // Try next service
162
- continue;
163
- }
164
- }
165
- }
166
- return {
167
- ip: '',
168
- success: false,
169
- error: 'All IP detection services failed after retries',
170
- };
171
- }
172
- /**
173
- * Check if an IP address is private (NAT)
174
- */
175
- function isPrivateIp(ip) {
176
- return supported_distros_js_1.PRIVATE_IP_RANGES.some((regex) => regex.test(ip));
177
- }
178
- /**
179
- * Get all network interfaces with IPv4 addresses
180
- */
181
- function getNetworkInterfaces() {
182
- const interfaces = [];
183
- try {
184
- const output = (0, child_process_1.execSync)('ip -4 addr show', { encoding: 'utf-8' });
185
- const lines = output.split('\n');
186
- let currentInterface = {};
187
- for (const line of lines) {
188
- // Match interface line: "2: eth0: <BROADCAST..."
189
- const ifaceMatch = line.match(/^\d+:\s+(\S+):/);
190
- if (ifaceMatch) {
191
- if (currentInterface.name) {
192
- interfaces.push(currentInterface);
193
- }
194
- currentInterface = {
195
- name: ifaceMatch[1],
196
- isLoopback: ifaceMatch[1] === 'lo',
197
- };
198
- }
199
- // Match inet line: " inet 192.168.1.100/24..."
200
- const inetMatch = line.match(/^\s+inet\s+(\d+\.\d+\.\d+\.\d+)/);
201
- if (inetMatch && currentInterface.name) {
202
- currentInterface.ipv4 = inetMatch[1];
203
- }
204
- }
205
- // Add last interface
206
- if (currentInterface.name) {
207
- interfaces.push(currentInterface);
208
- }
209
- }
210
- catch {
211
- // Failed to get interfaces
212
- }
213
- return interfaces.filter((iface) => !iface.isLoopback && iface.ipv4);
214
- }
215
- /**
216
- * Detect network configuration
217
- */
218
- function detectNetwork() {
219
- const interfaces = getNetworkInterfaces();
220
- const firstIp = interfaces[0]?.ipv4 || '';
221
- return {
222
- interfaces,
223
- selectedIp: firstIp,
224
- isNat: isPrivateIp(firstIp),
225
- };
226
- }
227
- //# sourceMappingURL=network.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Operating system detection utilities
3
- * Feature: 009-cross-platform-support
4
- */
5
- import { OperatingSystem } from '../types/platform.js';
6
- /**
7
- * Detect operating system from /etc/os-release
8
- */
9
- export declare function detectOperatingSystem(): OperatingSystem | null;
10
- //# sourceMappingURL=os-detection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"os-detection.d.ts","sourceRoot":"","sources":["../../src/utils/os-detection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAA4B,MAAM,sBAAsB,CAAC;AA6BjF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,GAAG,IAAI,CAkD9D"}