xray-manager 1.8.5 → 2.0.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/README.md +129 -42
- package/dist/cli.mjs +8598 -0
- package/dist/cli.mjs.map +7 -0
- package/package.json +13 -5
- package/dist/cli.d.ts +0 -11
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -134
- package/dist/cli.js.map +0 -1
- package/dist/commands/clash.d.ts +0 -20
- package/dist/commands/clash.d.ts.map +0 -1
- package/dist/commands/clash.js +0 -156
- package/dist/commands/clash.js.map +0 -1
- package/dist/commands/config.d.ts +0 -56
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -461
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/interactive.d.ts +0 -55
- package/dist/commands/interactive.d.ts.map +0 -1
- package/dist/commands/interactive.js +0 -418
- package/dist/commands/interactive.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -62
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/logs.js +0 -389
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/quota.d.ts +0 -54
- package/dist/commands/quota.d.ts.map +0 -1
- package/dist/commands/quota.js +0 -661
- package/dist/commands/quota.js.map +0 -1
- package/dist/commands/review.d.ts +0 -8
- package/dist/commands/review.d.ts.map +0 -1
- package/dist/commands/review.js +0 -79
- package/dist/commands/review.js.map +0 -1
- package/dist/commands/service.d.ts +0 -43
- package/dist/commands/service.d.ts.map +0 -1
- package/dist/commands/service.js +0 -202
- package/dist/commands/service.js.map +0 -1
- package/dist/commands/user.d.ts +0 -49
- package/dist/commands/user.d.ts.map +0 -1
- package/dist/commands/user.js +0 -371
- package/dist/commands/user.js.map +0 -1
- package/dist/components/dashboard-widget.d.ts +0 -21
- package/dist/components/dashboard-widget.d.ts.map +0 -1
- package/dist/components/dashboard-widget.js +0 -234
- package/dist/components/dashboard-widget.js.map +0 -1
- package/dist/components/progress-bar.d.ts +0 -67
- package/dist/components/progress-bar.d.ts.map +0 -1
- package/dist/components/progress-bar.js +0 -138
- package/dist/components/progress-bar.js.map +0 -1
- package/dist/components/user-table.d.ts +0 -8
- package/dist/components/user-table.d.ts.map +0 -1
- package/dist/components/user-table.js +0 -91
- package/dist/components/user-table.js.map +0 -1
- package/dist/config/i18n.d.ts +0 -136
- package/dist/config/i18n.d.ts.map +0 -1
- package/dist/config/i18n.js +0 -323
- package/dist/config/i18n.js.map +0 -1
- package/dist/constants/error-codes.d.ts +0 -344
- package/dist/constants/error-codes.d.ts.map +0 -1
- package/dist/constants/error-codes.js +0 -462
- package/dist/constants/error-codes.js.map +0 -1
- package/dist/constants/exit-codes.d.ts +0 -49
- package/dist/constants/exit-codes.d.ts.map +0 -1
- package/dist/constants/exit-codes.js +0 -100
- package/dist/constants/exit-codes.js.map +0 -1
- package/dist/constants/paths.d.ts +0 -63
- package/dist/constants/paths.d.ts.map +0 -1
- package/dist/constants/paths.js +0 -78
- package/dist/constants/paths.js.map +0 -1
- package/dist/constants/quota.d.ts +0 -126
- package/dist/constants/quota.d.ts.map +0 -1
- package/dist/constants/quota.js +0 -135
- package/dist/constants/quota.js.map +0 -1
- package/dist/constants/review.d.ts +0 -14
- package/dist/constants/review.d.ts.map +0 -1
- package/dist/constants/review.js +0 -33
- package/dist/constants/review.js.map +0 -1
- package/dist/constants/supported-distros.d.ts +0 -17
- package/dist/constants/supported-distros.d.ts.map +0 -1
- package/dist/constants/supported-distros.js +0 -68
- package/dist/constants/supported-distros.js.map +0 -1
- package/dist/constants/theme.d.ts +0 -34
- package/dist/constants/theme.d.ts.map +0 -1
- package/dist/constants/theme.js +0 -52
- package/dist/constants/theme.js.map +0 -1
- package/dist/constants/timeouts.d.ts +0 -84
- package/dist/constants/timeouts.d.ts.map +0 -1
- package/dist/constants/timeouts.js +0 -111
- package/dist/constants/timeouts.js.map +0 -1
- package/dist/constants/ui-symbols.d.ts +0 -47
- package/dist/constants/ui-symbols.d.ts.map +0 -1
- package/dist/constants/ui-symbols.js +0 -48
- package/dist/constants/ui-symbols.js.map +0 -1
- package/dist/services/clash-config.d.ts +0 -16
- package/dist/services/clash-config.d.ts.map +0 -1
- package/dist/services/clash-config.js +0 -107
- package/dist/services/clash-config.js.map +0 -1
- package/dist/services/config-manager.d.ts +0 -90
- package/dist/services/config-manager.d.ts.map +0 -1
- package/dist/services/config-manager.js +0 -307
- package/dist/services/config-manager.js.map +0 -1
- package/dist/services/layout-manager.d.ts +0 -94
- package/dist/services/layout-manager.d.ts.map +0 -1
- package/dist/services/layout-manager.js +0 -192
- package/dist/services/layout-manager.js.map +0 -1
- package/dist/services/log-manager.d.ts +0 -157
- package/dist/services/log-manager.d.ts.map +0 -1
- package/dist/services/log-manager.js +0 -397
- package/dist/services/log-manager.js.map +0 -1
- package/dist/services/navigation-manager.d.ts +0 -23
- package/dist/services/navigation-manager.d.ts.map +0 -1
- package/dist/services/navigation-manager.js +0 -39
- package/dist/services/navigation-manager.js.map +0 -1
- package/dist/services/platform-detector.d.ts +0 -10
- package/dist/services/platform-detector.d.ts.map +0 -1
- package/dist/services/platform-detector.js +0 -106
- package/dist/services/platform-detector.js.map +0 -1
- package/dist/services/public-ip-manager.d.ts +0 -78
- package/dist/services/public-ip-manager.d.ts.map +0 -1
- package/dist/services/public-ip-manager.js +0 -296
- package/dist/services/public-ip-manager.js.map +0 -1
- package/dist/services/quota-enforcer.d.ts +0 -86
- package/dist/services/quota-enforcer.d.ts.map +0 -1
- package/dist/services/quota-enforcer.js +0 -151
- package/dist/services/quota-enforcer.js.map +0 -1
- package/dist/services/quota-manager.d.ts +0 -101
- package/dist/services/quota-manager.d.ts.map +0 -1
- package/dist/services/quota-manager.js +0 -257
- package/dist/services/quota-manager.js.map +0 -1
- package/dist/services/review/areas/community.d.ts +0 -9
- package/dist/services/review/areas/community.d.ts.map +0 -1
- package/dist/services/review/areas/community.js +0 -59
- package/dist/services/review/areas/community.js.map +0 -1
- package/dist/services/review/areas/contribution.d.ts +0 -9
- package/dist/services/review/areas/contribution.d.ts.map +0 -1
- package/dist/services/review/areas/contribution.js +0 -107
- package/dist/services/review/areas/contribution.js.map +0 -1
- package/dist/services/review/areas/documentation.d.ts +0 -9
- package/dist/services/review/areas/documentation.d.ts.map +0 -1
- package/dist/services/review/areas/documentation.js +0 -110
- package/dist/services/review/areas/documentation.js.map +0 -1
- package/dist/services/review/areas/license.d.ts +0 -9
- package/dist/services/review/areas/license.d.ts.map +0 -1
- package/dist/services/review/areas/license.js +0 -86
- package/dist/services/review/areas/license.js.map +0 -1
- package/dist/services/review/areas/quality.d.ts +0 -9
- package/dist/services/review/areas/quality.d.ts.map +0 -1
- package/dist/services/review/areas/quality.js +0 -84
- package/dist/services/review/areas/quality.js.map +0 -1
- package/dist/services/review/areas/security.d.ts +0 -9
- package/dist/services/review/areas/security.d.ts.map +0 -1
- package/dist/services/review/areas/security.js +0 -64
- package/dist/services/review/areas/security.js.map +0 -1
- package/dist/services/review/evidence.d.ts +0 -10
- package/dist/services/review/evidence.d.ts.map +0 -1
- package/dist/services/review/evidence.js +0 -40
- package/dist/services/review/evidence.js.map +0 -1
- package/dist/services/review/recommendations-filter.d.ts +0 -12
- package/dist/services/review/recommendations-filter.d.ts.map +0 -1
- package/dist/services/review/recommendations-filter.js +0 -20
- package/dist/services/review/recommendations-filter.js.map +0 -1
- package/dist/services/review/repo-scanner.d.ts +0 -8
- package/dist/services/review/repo-scanner.d.ts.map +0 -1
- package/dist/services/review/repo-scanner.js +0 -15
- package/dist/services/review/repo-scanner.js.map +0 -1
- package/dist/services/review/report-renderer.d.ts +0 -15
- package/dist/services/review/report-renderer.d.ts.map +0 -1
- package/dist/services/review/report-renderer.js +0 -120
- package/dist/services/review/report-renderer.js.map +0 -1
- package/dist/services/review/review-engine.d.ts +0 -15
- package/dist/services/review/review-engine.d.ts.map +0 -1
- package/dist/services/review/review-engine.js +0 -61
- package/dist/services/review/review-engine.js.map +0 -1
- package/dist/services/review/summary-builder.d.ts +0 -8
- package/dist/services/review/summary-builder.d.ts.map +0 -1
- package/dist/services/review/summary-builder.js +0 -26
- package/dist/services/review/summary-builder.js.map +0 -1
- package/dist/services/screen-manager.d.ts +0 -13
- package/dist/services/screen-manager.d.ts.map +0 -1
- package/dist/services/screen-manager.js +0 -42
- package/dist/services/screen-manager.js.map +0 -1
- package/dist/services/stats-config-manager.d.ts +0 -110
- package/dist/services/stats-config-manager.d.ts.map +0 -1
- package/dist/services/stats-config-manager.js +0 -443
- package/dist/services/stats-config-manager.js.map +0 -1
- package/dist/services/systemd-manager.d.ts +0 -197
- package/dist/services/systemd-manager.d.ts.map +0 -1
- package/dist/services/systemd-manager.js +0 -458
- package/dist/services/systemd-manager.js.map +0 -1
- package/dist/services/traffic-manager.d.ts +0 -106
- package/dist/services/traffic-manager.d.ts.map +0 -1
- package/dist/services/traffic-manager.js +0 -368
- package/dist/services/traffic-manager.js.map +0 -1
- package/dist/services/user-manager.d.ts +0 -90
- package/dist/services/user-manager.d.ts.map +0 -1
- package/dist/services/user-manager.js +0 -347
- package/dist/services/user-manager.js.map +0 -1
- package/dist/services/user-metadata-manager.d.ts +0 -85
- package/dist/services/user-metadata-manager.d.ts.map +0 -1
- package/dist/services/user-metadata-manager.js +0 -181
- package/dist/services/user-metadata-manager.js.map +0 -1
- package/dist/types/config.d.ts +0 -340
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -7
- package/dist/types/config.js.map +0 -1
- package/dist/types/layout.d.ts +0 -119
- package/dist/types/layout.d.ts.map +0 -1
- package/dist/types/layout.js +0 -142
- package/dist/types/layout.js.map +0 -1
- package/dist/types/platform.d.ts +0 -72
- package/dist/types/platform.d.ts.map +0 -1
- package/dist/types/platform.js +0 -38
- package/dist/types/platform.js.map +0 -1
- package/dist/types/quota.d.ts +0 -158
- package/dist/types/quota.d.ts.map +0 -1
- package/dist/types/quota.js +0 -26
- package/dist/types/quota.js.map +0 -1
- package/dist/types/review.d.ts +0 -62
- package/dist/types/review.d.ts.map +0 -1
- package/dist/types/review.js +0 -8
- package/dist/types/review.js.map +0 -1
- package/dist/types/server-config.d.ts +0 -53
- package/dist/types/server-config.d.ts.map +0 -1
- package/dist/types/server-config.js +0 -19
- package/dist/types/server-config.js.map +0 -1
- package/dist/types/service.d.ts +0 -96
- package/dist/types/service.d.ts.map +0 -1
- package/dist/types/service.js +0 -7
- package/dist/types/service.js.map +0 -1
- package/dist/types/terminal.d.ts +0 -35
- package/dist/types/terminal.d.ts.map +0 -1
- package/dist/types/terminal.js +0 -20
- package/dist/types/terminal.js.map +0 -1
- package/dist/types/ui-components.d.ts +0 -53
- package/dist/types/ui-components.d.ts.map +0 -1
- package/dist/types/ui-components.js +0 -3
- package/dist/types/ui-components.js.map +0 -1
- package/dist/types/user-metadata.d.ts +0 -43
- package/dist/types/user-metadata.d.ts.map +0 -1
- package/dist/types/user-metadata.js +0 -17
- package/dist/types/user-metadata.js.map +0 -1
- package/dist/types/user.d.ts +0 -134
- package/dist/types/user.d.ts.map +0 -1
- package/dist/types/user.js +0 -7
- package/dist/types/user.js.map +0 -1
- package/dist/utils/clipboard.d.ts +0 -21
- package/dist/utils/clipboard.d.ts.map +0 -1
- package/dist/utils/clipboard.js +0 -45
- package/dist/utils/clipboard.js.map +0 -1
- package/dist/utils/error-formatter.d.ts +0 -60
- package/dist/utils/error-formatter.d.ts.map +0 -1
- package/dist/utils/error-formatter.js +0 -244
- package/dist/utils/error-formatter.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -92
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -143
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/firewall.d.ts +0 -14
- package/dist/utils/firewall.d.ts.map +0 -1
- package/dist/utils/firewall.js +0 -78
- package/dist/utils/firewall.js.map +0 -1
- package/dist/utils/format.d.ts +0 -93
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js +0 -240
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/icons.d.ts +0 -53
- package/dist/utils/icons.d.ts.map +0 -1
- package/dist/utils/icons.js +0 -143
- package/dist/utils/icons.js.map +0 -1
- package/dist/utils/layout.d.ts +0 -142
- package/dist/utils/layout.d.ts.map +0 -1
- package/dist/utils/layout.js +0 -381
- package/dist/utils/layout.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -160
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -351
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/network.d.ts +0 -39
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js +0 -227
- package/dist/utils/network.js.map +0 -1
- package/dist/utils/os-detection.d.ts +0 -10
- package/dist/utils/os-detection.d.ts.map +0 -1
- package/dist/utils/os-detection.js +0 -86
- package/dist/utils/os-detection.js.map +0 -1
- package/dist/utils/preflight.d.ts +0 -57
- package/dist/utils/preflight.d.ts.map +0 -1
- package/dist/utils/preflight.js +0 -215
- package/dist/utils/preflight.js.map +0 -1
- package/dist/utils/repo-scan.d.ts +0 -54
- package/dist/utils/repo-scan.d.ts.map +0 -1
- package/dist/utils/repo-scan.js +0 -165
- package/dist/utils/repo-scan.js.map +0 -1
- package/dist/utils/report-output.d.ts +0 -13
- package/dist/utils/report-output.d.ts.map +0 -1
- package/dist/utils/report-output.js +0 -33
- package/dist/utils/report-output.js.map +0 -1
- package/dist/utils/review-id.d.ts +0 -8
- package/dist/utils/review-id.d.ts.map +0 -1
- package/dist/utils/review-id.js +0 -17
- package/dist/utils/review-id.js.map +0 -1
- package/dist/utils/splash.d.ts +0 -21
- package/dist/utils/splash.d.ts.map +0 -1
- package/dist/utils/splash.js +0 -179
- package/dist/utils/splash.js.map +0 -1
- package/dist/utils/terminal.d.ts +0 -32
- package/dist/utils/terminal.d.ts.map +0 -1
- package/dist/utils/terminal.js +0 -93
- package/dist/utils/terminal.js.map +0 -1
- package/dist/utils/traffic-formatter.d.ts +0 -45
- package/dist/utils/traffic-formatter.d.ts.map +0 -1
- package/dist/utils/traffic-formatter.js +0 -131
- package/dist/utils/traffic-formatter.js.map +0 -1
- package/dist/utils/validator.d.ts +0 -102
- package/dist/utils/validator.d.ts.map +0 -1
- package/dist/utils/validator.js +0 -238
- package/dist/utils/validator.js.map +0 -1
- package/dist/utils/vless-link.d.ts +0 -27
- package/dist/utils/vless-link.d.ts.map +0 -1
- package/dist/utils/vless-link.js +0 -69
- package/dist/utils/vless-link.js.map +0 -1
- package/dist/utils/which.d.ts +0 -13
- package/dist/utils/which.d.ts.map +0 -1
- package/dist/utils/which.js +0 -28
- package/dist/utils/which.js.map +0 -1
package/dist/utils/layout.js
DELETED
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Layout Utility Functions
|
|
4
|
-
*
|
|
5
|
-
* Pure functions for layout calculations, text fitting, and rendering
|
|
6
|
-
* Feature: 005-ui-layout-expansion
|
|
7
|
-
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.calculateDisplayWidth = calculateDisplayWidth;
|
|
13
|
-
exports.calculateColumnWidth = calculateColumnWidth;
|
|
14
|
-
exports.fitText = fitText;
|
|
15
|
-
exports.renderSeparator = renderSeparator;
|
|
16
|
-
exports.renderHeader = renderHeader;
|
|
17
|
-
exports.applyPadding = applyPadding;
|
|
18
|
-
exports.renderTable = renderTable;
|
|
19
|
-
exports.renderSection = renderSection;
|
|
20
|
-
exports.distributeToColumns = distributeToColumns;
|
|
21
|
-
exports.renderColumns = renderColumns;
|
|
22
|
-
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
23
|
-
/**
|
|
24
|
-
* Calculate the display width of a string, accounting for Chinese characters
|
|
25
|
-
*
|
|
26
|
-
* Chinese characters (and other full-width characters) occupy 2 columns,
|
|
27
|
-
* while ASCII characters occupy 1 column.
|
|
28
|
-
*
|
|
29
|
-
* @param text - Input text
|
|
30
|
-
* @returns Display width in terminal columns
|
|
31
|
-
*/
|
|
32
|
-
function calculateDisplayWidth(text) {
|
|
33
|
-
let width = 0;
|
|
34
|
-
for (const char of text) {
|
|
35
|
-
const code = char.charCodeAt(0);
|
|
36
|
-
// Chinese characters are in these Unicode ranges:
|
|
37
|
-
// CJK Unified Ideographs: U+4E00 - U+9FFF
|
|
38
|
-
// CJK Extension A: U+3400 - U+4DBF
|
|
39
|
-
// CJK Extension B: U+20000 - U+2A6DF
|
|
40
|
-
// Also check for full-width characters: U+FF00 - U+FFEF
|
|
41
|
-
if ((code >= 0x4e00 && code <= 0x9fff) || // CJK Unified
|
|
42
|
-
(code >= 0x3400 && code <= 0x4dbf) || // CJK Extension A
|
|
43
|
-
(code >= 0xff00 && code <= 0xffef) || // Full-width
|
|
44
|
-
(code >= 0x3000 && code <= 0x303f) // CJK Symbols and Punctuation
|
|
45
|
-
) {
|
|
46
|
-
width += 2;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
width += 1;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return width;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Calculate the width of each column in a multi-column layout
|
|
56
|
-
*
|
|
57
|
-
* Formula: (totalWidth - (columns - 1) * gap) / columns
|
|
58
|
-
*
|
|
59
|
-
* @param totalWidth - Total available width
|
|
60
|
-
* @param columns - Number of columns
|
|
61
|
-
* @param gap - Space between columns
|
|
62
|
-
* @returns Width of each column (rounded down)
|
|
63
|
-
*/
|
|
64
|
-
function calculateColumnWidth(totalWidth, columns, gap) {
|
|
65
|
-
return Math.floor((totalWidth - (columns - 1) * gap) / columns);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Fit text to a specific width by truncating or padding
|
|
69
|
-
*
|
|
70
|
-
* @param text - Input text
|
|
71
|
-
* @param width - Target width in columns
|
|
72
|
-
* @param align - Alignment ('left', 'center', 'right')
|
|
73
|
-
* @param ellipsis - Ellipsis string for truncation (default '...')
|
|
74
|
-
* @returns Text adjusted to exact width
|
|
75
|
-
*/
|
|
76
|
-
function fitText(text, width, align = 'left', ellipsis = '...') {
|
|
77
|
-
const textWidth = calculateDisplayWidth(text);
|
|
78
|
-
// If text is too long, truncate with ellipsis
|
|
79
|
-
if (textWidth > width) {
|
|
80
|
-
const ellipsisWidth = calculateDisplayWidth(ellipsis);
|
|
81
|
-
let truncated = '';
|
|
82
|
-
let currentWidth = 0;
|
|
83
|
-
for (const char of text) {
|
|
84
|
-
const charWidth = calculateDisplayWidth(char);
|
|
85
|
-
if (currentWidth + charWidth + ellipsisWidth <= width) {
|
|
86
|
-
truncated += char;
|
|
87
|
-
currentWidth += charWidth;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return truncated + ellipsis;
|
|
94
|
-
}
|
|
95
|
-
// If text is shorter, pad with spaces
|
|
96
|
-
if (textWidth < width) {
|
|
97
|
-
const paddingNeeded = width - textWidth;
|
|
98
|
-
if (align === 'left') {
|
|
99
|
-
return text + ' '.repeat(paddingNeeded);
|
|
100
|
-
}
|
|
101
|
-
else if (align === 'right') {
|
|
102
|
-
return ' '.repeat(paddingNeeded) + text;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
// center
|
|
106
|
-
const leftPadding = Math.floor(paddingNeeded / 2);
|
|
107
|
-
const rightPadding = paddingNeeded - leftPadding;
|
|
108
|
-
return ' '.repeat(leftPadding) + text + ' '.repeat(rightPadding);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Exact width
|
|
112
|
-
return text;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Render a horizontal separator line
|
|
116
|
-
*
|
|
117
|
-
* @param width - Width of separator in columns
|
|
118
|
-
* @param char - Character to use (default '─')
|
|
119
|
-
* @param color - Optional chalk color name
|
|
120
|
-
* @returns Separator string
|
|
121
|
-
*/
|
|
122
|
-
function renderSeparator(width, char = '─', color) {
|
|
123
|
-
if (width <= 0) {
|
|
124
|
-
return '';
|
|
125
|
-
}
|
|
126
|
-
const separator = char.repeat(width);
|
|
127
|
-
// Color support can be added later when integrating with chalk
|
|
128
|
-
if (color) {
|
|
129
|
-
// TODO: Apply chalk color
|
|
130
|
-
return separator;
|
|
131
|
-
}
|
|
132
|
-
return separator;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Render a header with optional alignment and border
|
|
136
|
-
*
|
|
137
|
-
* @param title - Header title text
|
|
138
|
-
* @param width - Total width
|
|
139
|
-
* @param align - Alignment
|
|
140
|
-
* @param options - Render options
|
|
141
|
-
* @returns Rendered header string
|
|
142
|
-
*/
|
|
143
|
-
function renderHeader(title, width, align = 'center', options) {
|
|
144
|
-
const lines = [];
|
|
145
|
-
// Add top border if requested
|
|
146
|
-
if (options?.showBorder) {
|
|
147
|
-
lines.push(renderSeparator(width, '─', options.color));
|
|
148
|
-
}
|
|
149
|
-
// Add title line
|
|
150
|
-
lines.push(fitText(title, width, align));
|
|
151
|
-
// Add bottom border if requested
|
|
152
|
-
if (options?.showBorder) {
|
|
153
|
-
lines.push(renderSeparator(width, '─', options.color));
|
|
154
|
-
}
|
|
155
|
-
return lines.join('\n');
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Apply padding to a text block
|
|
159
|
-
*
|
|
160
|
-
* @param text - Original text (can be multi-line)
|
|
161
|
-
* @param padding - Padding configuration
|
|
162
|
-
* @param width - Target width (for horizontal padding)
|
|
163
|
-
* @returns Padded text
|
|
164
|
-
*/
|
|
165
|
-
function applyPadding(text, padding, width) {
|
|
166
|
-
const lines = [];
|
|
167
|
-
// Top padding
|
|
168
|
-
for (let i = 0; i < padding.top; i++) {
|
|
169
|
-
lines.push(' '.repeat(width));
|
|
170
|
-
}
|
|
171
|
-
// Process content lines
|
|
172
|
-
const contentLines = text.split('\n');
|
|
173
|
-
const contentWidth = width - padding.left - padding.right;
|
|
174
|
-
for (const line of contentLines) {
|
|
175
|
-
const paddedLine = ' '.repeat(padding.left) + fitText(line, contentWidth, 'left') + ' '.repeat(padding.right);
|
|
176
|
-
lines.push(paddedLine);
|
|
177
|
-
}
|
|
178
|
-
// Bottom padding
|
|
179
|
-
for (let i = 0; i < padding.bottom; i++) {
|
|
180
|
-
lines.push(' '.repeat(width));
|
|
181
|
-
}
|
|
182
|
-
return lines.join('\n');
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Render a table using cli-table3
|
|
186
|
-
*
|
|
187
|
-
* @param columns - Column definitions
|
|
188
|
-
* @param rows - Data rows
|
|
189
|
-
* @param options - Render options
|
|
190
|
-
* @returns Rendered table string
|
|
191
|
-
*/
|
|
192
|
-
function renderTable(columns, rows, options) {
|
|
193
|
-
// Map border style to cli-table3 style
|
|
194
|
-
const borderChars = {
|
|
195
|
-
single: {
|
|
196
|
-
top: '─',
|
|
197
|
-
'top-mid': '┬',
|
|
198
|
-
'top-left': '┌',
|
|
199
|
-
'top-right': '┐',
|
|
200
|
-
bottom: '─',
|
|
201
|
-
'bottom-mid': '┴',
|
|
202
|
-
'bottom-left': '└',
|
|
203
|
-
'bottom-right': '┘',
|
|
204
|
-
left: '│',
|
|
205
|
-
'left-mid': '├',
|
|
206
|
-
mid: '─',
|
|
207
|
-
'mid-mid': '┼',
|
|
208
|
-
right: '│',
|
|
209
|
-
'right-mid': '┤',
|
|
210
|
-
middle: '│',
|
|
211
|
-
},
|
|
212
|
-
double: {
|
|
213
|
-
top: '═',
|
|
214
|
-
'top-mid': '╦',
|
|
215
|
-
'top-left': '╔',
|
|
216
|
-
'top-right': '╗',
|
|
217
|
-
bottom: '═',
|
|
218
|
-
'bottom-mid': '╩',
|
|
219
|
-
'bottom-left': '╚',
|
|
220
|
-
'bottom-right': '╝',
|
|
221
|
-
left: '║',
|
|
222
|
-
'left-mid': '╠',
|
|
223
|
-
mid: '═',
|
|
224
|
-
'mid-mid': '╬',
|
|
225
|
-
right: '║',
|
|
226
|
-
'right-mid': '╣',
|
|
227
|
-
middle: '║',
|
|
228
|
-
},
|
|
229
|
-
compact: {
|
|
230
|
-
top: '-',
|
|
231
|
-
'top-mid': '+',
|
|
232
|
-
'top-left': '+',
|
|
233
|
-
'top-right': '+',
|
|
234
|
-
bottom: '-',
|
|
235
|
-
'bottom-mid': '+',
|
|
236
|
-
'bottom-left': '+',
|
|
237
|
-
'bottom-right': '+',
|
|
238
|
-
left: '|',
|
|
239
|
-
'left-mid': '+',
|
|
240
|
-
mid: '-',
|
|
241
|
-
'mid-mid': '+',
|
|
242
|
-
right: '|',
|
|
243
|
-
'right-mid': '+',
|
|
244
|
-
middle: '|',
|
|
245
|
-
},
|
|
246
|
-
};
|
|
247
|
-
const borderStyle = options?.borderStyle ?? 'single';
|
|
248
|
-
// Create table configuration
|
|
249
|
-
const tableConfig = {
|
|
250
|
-
head: columns.map((col) => col.header),
|
|
251
|
-
chars: borderChars[borderStyle],
|
|
252
|
-
};
|
|
253
|
-
// Add column-specific configurations
|
|
254
|
-
if (columns.some((col) => col.width || col.align)) {
|
|
255
|
-
tableConfig.colWidths = columns.map((col) => col.width ?? null);
|
|
256
|
-
tableConfig.colAligns = columns.map((col) => col.align ?? 'left');
|
|
257
|
-
}
|
|
258
|
-
const table = new cli_table3_1.default(tableConfig);
|
|
259
|
-
// Add rows
|
|
260
|
-
for (const row of rows) {
|
|
261
|
-
const tableRow = columns.map((col) => {
|
|
262
|
-
const value = row[col.key];
|
|
263
|
-
return value !== undefined && value !== null ? String(value) : '';
|
|
264
|
-
});
|
|
265
|
-
table.push(tableRow);
|
|
266
|
-
}
|
|
267
|
-
return table.toString();
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Render a section with title and content
|
|
271
|
-
*
|
|
272
|
-
* @param title - Section title
|
|
273
|
-
* @param content - Section content (can be multi-line)
|
|
274
|
-
* @param options - Render options
|
|
275
|
-
* @returns Rendered section string
|
|
276
|
-
*/
|
|
277
|
-
function renderSection(title, content, options) {
|
|
278
|
-
const lines = [];
|
|
279
|
-
const showBorder = options?.showBorder ?? false;
|
|
280
|
-
const padding = options?.padding || { top: 0, right: 0, bottom: 0, left: 0 };
|
|
281
|
-
// Calculate content width (approximate - will depend on actual rendering)
|
|
282
|
-
const contentLines = content.split('\n');
|
|
283
|
-
const maxContentWidth = Math.max(calculateDisplayWidth(title), ...contentLines.map((line) => calculateDisplayWidth(line)));
|
|
284
|
-
const totalWidth = maxContentWidth + padding.left + padding.right + 4; // +4 for borders if any
|
|
285
|
-
// Top border
|
|
286
|
-
if (showBorder) {
|
|
287
|
-
lines.push(renderSeparator(totalWidth, '─'));
|
|
288
|
-
}
|
|
289
|
-
// Top padding
|
|
290
|
-
for (let i = 0; i < padding.top; i++) {
|
|
291
|
-
lines.push(' '.repeat(totalWidth));
|
|
292
|
-
}
|
|
293
|
-
// Title line
|
|
294
|
-
const titleLine = ' '.repeat(padding.left) + title + ' '.repeat(padding.right);
|
|
295
|
-
lines.push(titleLine);
|
|
296
|
-
// Add separator between title and content if border is enabled
|
|
297
|
-
if (showBorder) {
|
|
298
|
-
lines.push(renderSeparator(totalWidth, '─'));
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
lines.push(''); // Empty line for visual separation
|
|
302
|
-
}
|
|
303
|
-
// Content lines
|
|
304
|
-
for (const contentLine of contentLines) {
|
|
305
|
-
const paddedContentLine = ' '.repeat(padding.left) + contentLine + ' '.repeat(padding.right);
|
|
306
|
-
lines.push(paddedContentLine);
|
|
307
|
-
}
|
|
308
|
-
// Bottom padding
|
|
309
|
-
for (let i = 0; i < padding.bottom; i++) {
|
|
310
|
-
lines.push(' '.repeat(totalWidth));
|
|
311
|
-
}
|
|
312
|
-
// Bottom border
|
|
313
|
-
if (showBorder) {
|
|
314
|
-
lines.push(renderSeparator(totalWidth, '─'));
|
|
315
|
-
}
|
|
316
|
-
return lines.join('\n');
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Distribute items evenly across multiple columns
|
|
320
|
-
*
|
|
321
|
-
* @param items - Array of items to distribute
|
|
322
|
-
* @param columnCount - Number of columns to create
|
|
323
|
-
* @returns Array of columns, each containing a subset of items
|
|
324
|
-
*
|
|
325
|
-
* @example
|
|
326
|
-
* distributeToColumns(['A', 'B', 'C', 'D', 'E', 'F'], 2)
|
|
327
|
-
* // Returns: [['A', 'B', 'C'], ['D', 'E', 'F']]
|
|
328
|
-
*
|
|
329
|
-
* distributeToColumns(['A', 'B', 'C', 'D', 'E'], 2)
|
|
330
|
-
* // Returns: [['A', 'B', 'C'], ['D', 'E']]
|
|
331
|
-
*/
|
|
332
|
-
function distributeToColumns(items, columnCount) {
|
|
333
|
-
if (columnCount <= 0) {
|
|
334
|
-
throw new Error('Column count must be positive');
|
|
335
|
-
}
|
|
336
|
-
if (columnCount === 1) {
|
|
337
|
-
return [items];
|
|
338
|
-
}
|
|
339
|
-
const columns = Array.from({ length: columnCount }, () => []);
|
|
340
|
-
const itemsPerColumn = Math.ceil(items.length / columnCount);
|
|
341
|
-
for (let i = 0; i < items.length; i++) {
|
|
342
|
-
const columnIndex = Math.floor(i / itemsPerColumn);
|
|
343
|
-
if (columnIndex < columnCount) {
|
|
344
|
-
columns[columnIndex].push(items[i]);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
return columns;
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Render multiple columns of text side by side
|
|
351
|
-
*
|
|
352
|
-
* @param columns - Array of columns, each containing lines of text
|
|
353
|
-
* @param totalWidth - Total width available for all columns
|
|
354
|
-
* @param gap - Space between columns (default: 2)
|
|
355
|
-
* @returns Rendered multi-column text
|
|
356
|
-
*
|
|
357
|
-
* @example
|
|
358
|
-
* renderColumns([['Line 1', 'Line 2'], ['Col 2 Line 1', 'Col 2 Line 2']], 80, 2)
|
|
359
|
-
* // Returns text with two columns side by side
|
|
360
|
-
*/
|
|
361
|
-
function renderColumns(columns, totalWidth, gap = 2) {
|
|
362
|
-
if (columns.length === 0) {
|
|
363
|
-
return '';
|
|
364
|
-
}
|
|
365
|
-
if (columns.length === 1) {
|
|
366
|
-
return columns[0].join('\n');
|
|
367
|
-
}
|
|
368
|
-
const columnWidth = calculateColumnWidth(totalWidth, columns.length, gap);
|
|
369
|
-
const maxHeight = Math.max(...columns.map((col) => col.length));
|
|
370
|
-
const lines = [];
|
|
371
|
-
for (let row = 0; row < maxHeight; row++) {
|
|
372
|
-
const rowParts = [];
|
|
373
|
-
for (let colIndex = 0; colIndex < columns.length; colIndex++) {
|
|
374
|
-
const cellContent = row < columns[colIndex].length ? columns[colIndex][row] : '';
|
|
375
|
-
rowParts.push(fitText(cellContent, columnWidth, 'left'));
|
|
376
|
-
}
|
|
377
|
-
lines.push(rowParts.join(' '.repeat(gap)));
|
|
378
|
-
}
|
|
379
|
-
return lines.join('\n');
|
|
380
|
-
}
|
|
381
|
-
//# sourceMappingURL=layout.js.map
|
package/dist/utils/layout.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/utils/layout.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.d.ts
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 日志工具函数(使用 chalk 颜色和通用文本指示符)
|
|
3
|
-
* @module utils/logger
|
|
4
|
-
*/
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { AppError } from './errors';
|
|
7
|
-
import { ErrorInfo } from '../constants/error-codes';
|
|
8
|
-
import { type FormatOptions } from './error-formatter';
|
|
9
|
-
/**
|
|
10
|
-
* 日志级别
|
|
11
|
-
*/
|
|
12
|
-
export declare enum LogLevel {
|
|
13
|
-
DEBUG = "debug",
|
|
14
|
-
INFO = "info",
|
|
15
|
-
SUCCESS = "success",
|
|
16
|
-
WARN = "warn",
|
|
17
|
-
ERROR = "error"
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* 输出模式
|
|
21
|
-
*/
|
|
22
|
-
export declare enum OutputMode {
|
|
23
|
-
/** 完整模式:颜色 + 格式化 */
|
|
24
|
-
RICH = "rich",
|
|
25
|
-
/** 朴素模式:无颜色 + 格式化 */
|
|
26
|
-
PLAIN_TTY = "plain_tty",
|
|
27
|
-
/** 管道模式:纯文本 + 时间戳 */
|
|
28
|
-
PIPE = "pipe"
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* 日志选项
|
|
32
|
-
*/
|
|
33
|
-
export interface LogOptions {
|
|
34
|
-
/** 是否启用颜色(默认 true) */
|
|
35
|
-
color?: boolean;
|
|
36
|
-
/** 是否显示时间戳(默认 false) */
|
|
37
|
-
timestamp?: boolean;
|
|
38
|
-
/** 日志级别(用于过滤) */
|
|
39
|
-
level?: LogLevel;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 配置全局日志选项
|
|
43
|
-
*/
|
|
44
|
-
export declare function configureLogger(options: LogOptions): void;
|
|
45
|
-
/**
|
|
46
|
-
* 获取当前输出模式
|
|
47
|
-
* @returns 输出模式(RICH, PLAIN_TTY, 或 PIPE)
|
|
48
|
-
*/
|
|
49
|
-
export declare function getOutputMode(): OutputMode;
|
|
50
|
-
/**
|
|
51
|
-
* 调试日志(灰色,[DEBUG] 指示符)
|
|
52
|
-
*/
|
|
53
|
-
export declare function debug(...args: unknown[]): void;
|
|
54
|
-
/**
|
|
55
|
-
* 信息日志(默认颜色,[INFO] 指示符)
|
|
56
|
-
*/
|
|
57
|
-
export declare function info(...args: unknown[]): void;
|
|
58
|
-
/**
|
|
59
|
-
* 成功日志(绿色,✓ 或 [OK] 指示符)
|
|
60
|
-
*/
|
|
61
|
-
export declare function success(...args: unknown[]): void;
|
|
62
|
-
/**
|
|
63
|
-
* 警告日志(黄色,! 或 [WARN] 指示符)
|
|
64
|
-
*/
|
|
65
|
-
export declare function warn(...args: unknown[]): void;
|
|
66
|
-
/**
|
|
67
|
-
* 错误日志(红色,✗ 或 [ERROR] 指示符)
|
|
68
|
-
*/
|
|
69
|
-
export declare function error(...args: unknown[]): void;
|
|
70
|
-
/**
|
|
71
|
-
* 标题日志(青色,加粗)
|
|
72
|
-
*/
|
|
73
|
-
export declare function title(message: string): void;
|
|
74
|
-
/**
|
|
75
|
-
* 分隔线(自动适应终端宽度,最大 80 列)
|
|
76
|
-
* @param char - 分隔符字符
|
|
77
|
-
* @param length - 分隔线长度(默认 50)
|
|
78
|
-
*/
|
|
79
|
-
export declare function separator(char?: string, length?: number): void;
|
|
80
|
-
/**
|
|
81
|
-
* 表格表头(带边框,确保在 80 列内)
|
|
82
|
-
* @param titleText - 标题文本
|
|
83
|
-
*/
|
|
84
|
-
export declare function tableHeader(titleText: string): void;
|
|
85
|
-
/**
|
|
86
|
-
* 加载动画消息(... 或 [...] 指示符)
|
|
87
|
-
*/
|
|
88
|
-
export declare function loading(message: string): void;
|
|
89
|
-
/**
|
|
90
|
-
* 进度消息(> 或 [>>] 指示符)
|
|
91
|
-
*/
|
|
92
|
-
export declare function progress(message: string): void;
|
|
93
|
-
/**
|
|
94
|
-
* 提示消息(* 或 [TIP] 指示符)
|
|
95
|
-
*/
|
|
96
|
-
export declare function hint(message: string): void;
|
|
97
|
-
/**
|
|
98
|
-
* 带颜色的键值对输出
|
|
99
|
-
*/
|
|
100
|
-
export declare function keyValue(key: string, value: string, keyColor?: chalk.Chalk): void;
|
|
101
|
-
/**
|
|
102
|
-
* 打印空行(用于操作之间的视觉分隔,保持一致间距)
|
|
103
|
-
* @param count - 空行数量(默认 1)
|
|
104
|
-
*/
|
|
105
|
-
export declare function newline(count?: number): void;
|
|
106
|
-
/**
|
|
107
|
-
* 带颜色的列表项
|
|
108
|
-
*/
|
|
109
|
-
export declare function listItem(message: string, symbol?: string): void;
|
|
110
|
-
/**
|
|
111
|
-
* 代码块(带灰色背景)
|
|
112
|
-
*/
|
|
113
|
-
export declare function code(codeText: string): void;
|
|
114
|
-
/**
|
|
115
|
-
* 输出格式化的 AppError(带原因和解决方案)
|
|
116
|
-
* @param err - AppError 实例
|
|
117
|
-
* @param options - 格式化选项
|
|
118
|
-
*/
|
|
119
|
-
export declare function formattedError(err: AppError, options?: FormatOptions): void;
|
|
120
|
-
/**
|
|
121
|
-
* 输出格式化的错误信息(从 ErrorInfo 对象)
|
|
122
|
-
* @param errorInfo - 错误信息定义
|
|
123
|
-
* @param details - 附加详情
|
|
124
|
-
* @param options - 格式化选项
|
|
125
|
-
*/
|
|
126
|
-
export declare function formattedErrorInfo(errorInfo: ErrorInfo, details?: string, options?: FormatOptions): void;
|
|
127
|
-
/**
|
|
128
|
-
* 输出格式化的通用错误
|
|
129
|
-
* @param err - 任意 Error 对象
|
|
130
|
-
* @param fallbackInfo - 如果不是 AppError,使用的回退错误信息
|
|
131
|
-
* @param options - 格式化选项
|
|
132
|
-
*/
|
|
133
|
-
export declare function formattedGenericError(err: Error, fallbackInfo?: ErrorInfo, options?: FormatOptions): void;
|
|
134
|
-
/**
|
|
135
|
-
* 默认导出对象
|
|
136
|
-
*/
|
|
137
|
-
declare const _default: {
|
|
138
|
-
debug: typeof debug;
|
|
139
|
-
info: typeof info;
|
|
140
|
-
success: typeof success;
|
|
141
|
-
warn: typeof warn;
|
|
142
|
-
error: typeof error;
|
|
143
|
-
title: typeof title;
|
|
144
|
-
separator: typeof separator;
|
|
145
|
-
tableHeader: typeof tableHeader;
|
|
146
|
-
loading: typeof loading;
|
|
147
|
-
progress: typeof progress;
|
|
148
|
-
hint: typeof hint;
|
|
149
|
-
keyValue: typeof keyValue;
|
|
150
|
-
newline: typeof newline;
|
|
151
|
-
listItem: typeof listItem;
|
|
152
|
-
code: typeof code;
|
|
153
|
-
configure: typeof configureLogger;
|
|
154
|
-
getOutputMode: typeof getOutputMode;
|
|
155
|
-
formattedError: typeof formattedError;
|
|
156
|
-
formattedErrorInfo: typeof formattedErrorInfo;
|
|
157
|
-
formattedGenericError: typeof formattedGenericError;
|
|
158
|
-
};
|
|
159
|
-
export default _default;
|
|
160
|
-
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|