xray-manager 1.8.4 → 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.
- package/README.md +102 -42
- package/dist/cli.mjs +8587 -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/types/config.d.ts
DELETED
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Xray 配置文件类型定义
|
|
3
|
-
* @module types/config
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Xray 配置文件顶层结构
|
|
7
|
-
* 对应文件: /usr/local/etc/xray/config.json
|
|
8
|
-
*/
|
|
9
|
-
export interface XrayConfig {
|
|
10
|
-
/** 日志配置 */
|
|
11
|
-
log: LogConfig;
|
|
12
|
-
/** 入站连接配置 */
|
|
13
|
-
inbounds: Inbound[];
|
|
14
|
-
/** 出站连接配置 */
|
|
15
|
-
outbounds: Outbound[];
|
|
16
|
-
/** 路由规则 */
|
|
17
|
-
routing?: RoutingConfig;
|
|
18
|
-
/** DNS 配置 */
|
|
19
|
-
dns?: DnsConfig;
|
|
20
|
-
/** Policy 配置(用于统计等功能) */
|
|
21
|
-
policy?: PolicyConfig;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 日志配置
|
|
25
|
-
*/
|
|
26
|
-
export interface LogConfig {
|
|
27
|
-
/** 日志级别: debug, info, warning, error, none */
|
|
28
|
-
loglevel: 'debug' | 'info' | 'warning' | 'error' | 'none';
|
|
29
|
-
/** 访问日志路径(空字符串表示不记录) */
|
|
30
|
-
access: string;
|
|
31
|
-
/** 错误日志路径(空字符串表示不记录) */
|
|
32
|
-
error: string;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* 入站连接配置(服务端监听)
|
|
36
|
-
*/
|
|
37
|
-
export interface Inbound {
|
|
38
|
-
/** 监听端口 */
|
|
39
|
-
port: number;
|
|
40
|
-
/** 监听地址(默认 0.0.0.0) */
|
|
41
|
-
listen?: string;
|
|
42
|
-
/** 协议类型: vless, vmess, trojan, shadowsocks 等 */
|
|
43
|
-
protocol: 'vless' | 'vmess' | 'trojan' | 'shadowsocks';
|
|
44
|
-
/** 协议特定配置 */
|
|
45
|
-
settings: InboundSettings;
|
|
46
|
-
/** 流传输配置(TLS, TCP, WebSocket 等) */
|
|
47
|
-
streamSettings?: StreamSettings;
|
|
48
|
-
/** 嗅探配置 */
|
|
49
|
-
sniffing?: SniffingConfig;
|
|
50
|
-
/** 标签(用于路由引用) */
|
|
51
|
-
tag?: string;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* 出站连接配置(客户端连接外部)
|
|
55
|
-
*/
|
|
56
|
-
export interface Outbound {
|
|
57
|
-
/** 协议类型 */
|
|
58
|
-
protocol: 'freedom' | 'blackhole' | 'socks' | 'http' | 'shadowsocks' | 'vmess' | 'vless';
|
|
59
|
-
/** 协议特定配置 */
|
|
60
|
-
settings?: OutboundSettings;
|
|
61
|
-
/** 流传输配置 */
|
|
62
|
-
streamSettings?: StreamSettings;
|
|
63
|
-
/** 标签(用于路由引用) */
|
|
64
|
-
tag: string;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* 入站协议配置(VLESS 为例)
|
|
68
|
-
*/
|
|
69
|
-
export interface InboundSettings {
|
|
70
|
-
/** 客户端列表 */
|
|
71
|
-
clients: XrayClient[];
|
|
72
|
-
/** 解密方式(VLESS 必须为 "none") */
|
|
73
|
-
decryption?: string;
|
|
74
|
-
/** 回落配置(用于伪装) */
|
|
75
|
-
fallbacks?: Fallback[];
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* 出站协议配置
|
|
79
|
-
*/
|
|
80
|
-
export interface OutboundSettings {
|
|
81
|
-
/** 域名解析策略 */
|
|
82
|
-
domainStrategy?: 'AsIs' | 'UseIP' | 'UseIPv4' | 'UseIPv6';
|
|
83
|
-
/** 其他配置 */
|
|
84
|
-
[key: string]: unknown;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Xray 客户端(用户)
|
|
88
|
-
*/
|
|
89
|
-
export interface XrayClient {
|
|
90
|
-
/** 用户唯一标识(UUID v4 格式) */
|
|
91
|
-
id: string;
|
|
92
|
-
/** 用户邮箱或标识符(用于管理) */
|
|
93
|
-
email?: string;
|
|
94
|
-
/** 协议级别(0 表示默认) */
|
|
95
|
-
level?: number;
|
|
96
|
-
/** 流控模式(xtls-rprx-vision 等) */
|
|
97
|
-
flow?: string;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* 流传输配置
|
|
101
|
-
*/
|
|
102
|
-
export interface StreamSettings {
|
|
103
|
-
/** 传输层协议: tcp, ws, http, grpc 等 */
|
|
104
|
-
network: 'tcp' | 'ws' | 'http' | 'grpc';
|
|
105
|
-
/** TLS/Reality 安全配置 */
|
|
106
|
-
security: 'none' | 'tls' | 'reality';
|
|
107
|
-
/** TLS 配置 */
|
|
108
|
-
tlsSettings?: TlsSettings;
|
|
109
|
-
/** Reality 配置 */
|
|
110
|
-
realitySettings?: RealitySettings;
|
|
111
|
-
/** TCP 配置 */
|
|
112
|
-
tcpSettings?: TcpSettings;
|
|
113
|
-
/** WebSocket 配置 */
|
|
114
|
-
wsSettings?: WsSettings;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* TLS 配置
|
|
118
|
-
*/
|
|
119
|
-
export interface TlsSettings {
|
|
120
|
-
/** 服务器名称指示(SNI) */
|
|
121
|
-
serverName?: string;
|
|
122
|
-
/** 证书配置 */
|
|
123
|
-
certificates: Certificate[];
|
|
124
|
-
/** ALPN 协议列表 */
|
|
125
|
-
alpn?: string[];
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Reality 协议配置(新型伪装协议)
|
|
129
|
-
*/
|
|
130
|
-
export interface RealitySettings {
|
|
131
|
-
/** 目标网站地址(用于伪装) */
|
|
132
|
-
dest: string;
|
|
133
|
-
/** 服务器名称列表 */
|
|
134
|
-
serverNames: string[];
|
|
135
|
-
/** 私钥 */
|
|
136
|
-
privateKey: string;
|
|
137
|
-
/** 短 ID 列表 */
|
|
138
|
-
shortIds: string[];
|
|
139
|
-
/** 最小客户端版本 */
|
|
140
|
-
minClientVer?: string;
|
|
141
|
-
/** 最大客户端版本 */
|
|
142
|
-
maxClientVer?: string;
|
|
143
|
-
/** 最大时间差(秒) */
|
|
144
|
-
maxTimeDiff?: number;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* 证书配置
|
|
148
|
-
*/
|
|
149
|
-
export interface Certificate {
|
|
150
|
-
/** 证书用途: sign, verify, issue */
|
|
151
|
-
usage: 'sign' | 'verify' | 'issue';
|
|
152
|
-
/** 证书文件路径 */
|
|
153
|
-
certificateFile?: string;
|
|
154
|
-
/** 私钥文件路径 */
|
|
155
|
-
keyFile?: string;
|
|
156
|
-
/** 证书内容(Base64 编码) */
|
|
157
|
-
certificate?: string[];
|
|
158
|
-
/** 私钥内容(Base64 编码) */
|
|
159
|
-
key?: string[];
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* TCP 配置
|
|
163
|
-
*/
|
|
164
|
-
export interface TcpSettings {
|
|
165
|
-
/** HTTP 头部伪装 */
|
|
166
|
-
header?: {
|
|
167
|
-
type: 'none' | 'http';
|
|
168
|
-
request?: HttpRequest;
|
|
169
|
-
response?: HttpResponse;
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* HTTP 请求配置(用于伪装)
|
|
174
|
-
*/
|
|
175
|
-
export interface HttpRequest {
|
|
176
|
-
version?: string;
|
|
177
|
-
method?: string;
|
|
178
|
-
path?: string[];
|
|
179
|
-
headers?: Record<string, string[]>;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* HTTP 响应配置(用于伪装)
|
|
183
|
-
*/
|
|
184
|
-
export interface HttpResponse {
|
|
185
|
-
version?: string;
|
|
186
|
-
status?: string;
|
|
187
|
-
reason?: string;
|
|
188
|
-
headers?: Record<string, string[]>;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* WebSocket 配置
|
|
192
|
-
*/
|
|
193
|
-
export interface WsSettings {
|
|
194
|
-
/** WebSocket 路径 */
|
|
195
|
-
path: string;
|
|
196
|
-
/** HTTP 头部 */
|
|
197
|
-
headers?: Record<string, string>;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* 嗅探配置(流量识别)
|
|
201
|
-
*/
|
|
202
|
-
export interface SniffingConfig {
|
|
203
|
-
/** 是否启用嗅探 */
|
|
204
|
-
enabled: boolean;
|
|
205
|
-
/** 嗅探目标: http, tls, quic */
|
|
206
|
-
destOverride: ('http' | 'tls' | 'quic')[];
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* 回落配置(用于伪装和负载均衡)
|
|
210
|
-
*/
|
|
211
|
-
export interface Fallback {
|
|
212
|
-
/** ALPN 协议 */
|
|
213
|
-
alpn?: string;
|
|
214
|
-
/** 路径匹配 */
|
|
215
|
-
path?: string;
|
|
216
|
-
/** 目标地址 */
|
|
217
|
-
dest: string | number;
|
|
218
|
-
/** 目标 xver(PROXY protocol) */
|
|
219
|
-
xver?: number;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* 路由配置
|
|
223
|
-
*/
|
|
224
|
-
export interface RoutingConfig {
|
|
225
|
-
/** 域名解析策略 */
|
|
226
|
-
domainStrategy?: 'AsIs' | 'IPIfNonMatch' | 'IPOnDemand';
|
|
227
|
-
/** 路由规则列表 */
|
|
228
|
-
rules?: RoutingRule[];
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* 路由规则
|
|
232
|
-
*/
|
|
233
|
-
export interface RoutingRule {
|
|
234
|
-
/** 规则类型 */
|
|
235
|
-
type?: 'field';
|
|
236
|
-
/** 域名匹配 */
|
|
237
|
-
domain?: string[];
|
|
238
|
-
/** IP 匹配 */
|
|
239
|
-
ip?: string[];
|
|
240
|
-
/** 端口匹配 */
|
|
241
|
-
port?: string;
|
|
242
|
-
/** 出站标签 */
|
|
243
|
-
outboundTag: string;
|
|
244
|
-
/** 入站标签 */
|
|
245
|
-
inboundTag?: string[];
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* DNS 配置
|
|
249
|
-
*/
|
|
250
|
-
export interface DnsConfig {
|
|
251
|
-
/** DNS 服务器列表 */
|
|
252
|
-
servers?: string[];
|
|
253
|
-
/** 静态主机映射 */
|
|
254
|
-
hosts?: Record<string, string | string[]>;
|
|
255
|
-
/** 域名匹配 */
|
|
256
|
-
tag?: string;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Policy 配置(统计相关)
|
|
260
|
-
*/
|
|
261
|
-
export interface PolicyConfig {
|
|
262
|
-
/** 用户等级配置 */
|
|
263
|
-
levels?: Record<string, PolicyLevelConfig>;
|
|
264
|
-
/** 系统级统计配置 */
|
|
265
|
-
system?: PolicySystemConfig;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Policy 用户等级配置
|
|
269
|
-
*/
|
|
270
|
-
export interface PolicyLevelConfig {
|
|
271
|
-
/** 用户上行统计 */
|
|
272
|
-
statsUserUplink?: boolean;
|
|
273
|
-
/** 用户下行统计 */
|
|
274
|
-
statsUserDownlink?: boolean;
|
|
275
|
-
/** 允许其他扩展字段 */
|
|
276
|
-
[key: string]: unknown;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Policy 系统配置
|
|
280
|
-
*/
|
|
281
|
-
export interface PolicySystemConfig {
|
|
282
|
-
/** 入站上行统计 */
|
|
283
|
-
statsInboundUplink?: boolean;
|
|
284
|
-
/** 入站下行统计 */
|
|
285
|
-
statsInboundDownlink?: boolean;
|
|
286
|
-
/** 允许其他扩展字段 */
|
|
287
|
-
[key: string]: unknown;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Stats 配置(启用流量统计)
|
|
291
|
-
*/
|
|
292
|
-
export interface StatsConfig {
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* API 服务类型
|
|
296
|
-
*/
|
|
297
|
-
export type ApiServiceType = 'StatsService' | 'HandlerService' | 'LoggerService' | 'RoutingService';
|
|
298
|
-
/**
|
|
299
|
-
* API 配置(用于 Stats API)
|
|
300
|
-
*/
|
|
301
|
-
export interface ApiConfig {
|
|
302
|
-
/** API 标签,用于路由引用 */
|
|
303
|
-
tag: string;
|
|
304
|
-
/** 启用的 API 服务列表 */
|
|
305
|
-
services: ApiServiceType[];
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Dokodemo-door 入站设置(用于 API)
|
|
309
|
-
*/
|
|
310
|
-
export interface DokodemoSettings {
|
|
311
|
-
/** 目标地址 */
|
|
312
|
-
address: string;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* API 入站配置
|
|
316
|
-
*/
|
|
317
|
-
export interface ApiInbound {
|
|
318
|
-
/** 入站标签 */
|
|
319
|
-
tag: string;
|
|
320
|
-
/** 监听端口 */
|
|
321
|
-
port: number;
|
|
322
|
-
/** 监听地址 */
|
|
323
|
-
listen: string;
|
|
324
|
-
/** 协议类型 */
|
|
325
|
-
protocol: 'dokodemo-door';
|
|
326
|
-
/** 协议设置 */
|
|
327
|
-
settings: DokodemoSettings;
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* 扩展的 Xray 配置(包含 Stats API)
|
|
331
|
-
*/
|
|
332
|
-
export interface XrayConfigWithStats extends Omit<XrayConfig, 'inbounds'> {
|
|
333
|
-
/** Stats 配置 */
|
|
334
|
-
stats?: StatsConfig;
|
|
335
|
-
/** API 配置 */
|
|
336
|
-
api?: ApiConfig;
|
|
337
|
-
/** 入站连接配置(包含 API inbound) */
|
|
338
|
-
inbounds: (Inbound | ApiInbound)[];
|
|
339
|
-
}
|
|
340
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,GAAG,EAAE,SAAS,CAAC;IAEf,aAAa;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,aAAa;IACb,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB,WAAW;IACX,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,aAAa;IACb,GAAG,CAAC,EAAE,SAAS,CAAC;IAEhB,yBAAyB;IACzB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IAE1D,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;IAEvD,aAAa;IACb,QAAQ,EAAE,eAAe,CAAC;IAE1B,mCAAmC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,WAAW;IACX,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,WAAW;IACX,QAAQ,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;IAEzF,aAAa;IACb,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,YAAY;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iBAAiB;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAE1D,WAAW;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IAEX,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,OAAO,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAExC,uBAAuB;IACvB,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAErC,aAAa;IACb,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,iBAAiB;IACjB,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,aAAa;IACb,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,mBAAmB;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW;IACX,YAAY,EAAE,WAAW,EAAE,CAAC;IAE5B,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,SAAS;IACT,UAAU,EAAE,MAAM,CAAC;IAEnB,cAAc;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,cAAc;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,cAAc;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,eAAe;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEnC,aAAa;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,sBAAsB;IACtB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IAEjB,4BAA4B;IAC5B,YAAY,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,cAAc;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,YAAY,CAAC;IAExD,aAAa;IACb,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,YAAY;IACZ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IAEd,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,aAAa;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAE1C,WAAW;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3C,cAAc;IACd,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa;IACb,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;CAE3B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW;IACX,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IACvE,eAAe;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa;IACb,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,6BAA6B;IAC7B,QAAQ,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;CACpC"}
|
package/dist/types/config.js
DELETED
package/dist/types/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
package/dist/types/layout.d.ts
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layout Type Definitions
|
|
3
|
-
*
|
|
4
|
-
* Core types for terminal layout system supporting responsive layouts
|
|
5
|
-
* and multi-column displays.
|
|
6
|
-
*
|
|
7
|
-
* Feature: 005-ui-layout-expansion
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Layout mode enum - defines different terminal size strategies
|
|
11
|
-
*/
|
|
12
|
-
export declare enum LayoutMode {
|
|
13
|
-
/** Narrow terminals (< 80 columns) */
|
|
14
|
-
COMPACT = "compact",
|
|
15
|
-
/** Standard terminals (80-120 columns) */
|
|
16
|
-
STANDARD = "standard",
|
|
17
|
-
/** Wide terminals (> 120 columns) */
|
|
18
|
-
WIDE = "wide"
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Content region type enum - categorizes different UI regions
|
|
22
|
-
*/
|
|
23
|
-
export declare enum ContentRegionType {
|
|
24
|
-
/** Page header/title area */
|
|
25
|
-
HEADER = "header",
|
|
26
|
-
/** Menu options area */
|
|
27
|
-
MENU = "menu",
|
|
28
|
-
/** Status information area */
|
|
29
|
-
STATUS = "status",
|
|
30
|
-
/** Main content area */
|
|
31
|
-
CONTENT = "content",
|
|
32
|
-
/** Footer/hints area */
|
|
33
|
-
FOOTER = "footer"
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Content region interface - defines a rectangular area in the terminal
|
|
37
|
-
*/
|
|
38
|
-
export interface ContentRegion {
|
|
39
|
-
/** Unique identifier for this region */
|
|
40
|
-
id: string;
|
|
41
|
-
/** Type of content this region contains */
|
|
42
|
-
type: ContentRegionType;
|
|
43
|
-
/** Position in the terminal (row, column) */
|
|
44
|
-
position: {
|
|
45
|
-
row: number;
|
|
46
|
-
column: number;
|
|
47
|
-
};
|
|
48
|
-
/** Size of the region (width, height in characters) */
|
|
49
|
-
size: {
|
|
50
|
-
width: number;
|
|
51
|
-
height: number;
|
|
52
|
-
};
|
|
53
|
-
/** Padding inside the region (top, right, bottom, left in characters) */
|
|
54
|
-
padding: {
|
|
55
|
-
top: number;
|
|
56
|
-
right: number;
|
|
57
|
-
bottom: number;
|
|
58
|
-
left: number;
|
|
59
|
-
};
|
|
60
|
-
/** Whether to display a border around this region */
|
|
61
|
-
showBorder: boolean;
|
|
62
|
-
/** Optional content data (type depends on region type) */
|
|
63
|
-
content?: unknown;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Terminal layout interface - complete layout configuration
|
|
67
|
-
*/
|
|
68
|
-
export interface TerminalLayout {
|
|
69
|
-
/** Terminal width in columns */
|
|
70
|
-
width: number;
|
|
71
|
-
/** Terminal height in rows */
|
|
72
|
-
height: number;
|
|
73
|
-
/** Current layout mode based on terminal width */
|
|
74
|
-
mode: LayoutMode;
|
|
75
|
-
/** Number of columns for multi-column layouts (1 for COMPACT/STANDARD, 2-3 for WIDE) */
|
|
76
|
-
columns: number;
|
|
77
|
-
/** List of content regions in this layout */
|
|
78
|
-
regions: ContentRegion[];
|
|
79
|
-
/** Timestamp when layout was calculated (for cache invalidation) */
|
|
80
|
-
timestamp: number;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Default layout configuration for non-TTY or fallback scenarios
|
|
84
|
-
*/
|
|
85
|
-
export declare const DEFAULT_LAYOUT: TerminalLayout;
|
|
86
|
-
/**
|
|
87
|
-
* Minimum terminal size constraints
|
|
88
|
-
*/
|
|
89
|
-
export declare const MIN_TERMINAL_SIZE: {
|
|
90
|
-
readonly width: 60;
|
|
91
|
-
readonly height: 20;
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* Layout mode thresholds for width-based mode selection
|
|
95
|
-
*/
|
|
96
|
-
export declare const LAYOUT_MODE_THRESHOLDS: {
|
|
97
|
-
readonly COMPACT_MAX: 79;
|
|
98
|
-
readonly STANDARD_MIN: 80;
|
|
99
|
-
readonly STANDARD_MAX: 120;
|
|
100
|
-
readonly WIDE_MIN: 121;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* Validate that a TerminalLayout configuration is valid
|
|
104
|
-
*
|
|
105
|
-
* @param layout - Layout to validate
|
|
106
|
-
* @returns true if valid
|
|
107
|
-
* @throws Error if validation fails
|
|
108
|
-
*/
|
|
109
|
-
export declare function validateLayout(layout: TerminalLayout): boolean;
|
|
110
|
-
/**
|
|
111
|
-
* Validate that a ContentRegion is valid within a given layout
|
|
112
|
-
*
|
|
113
|
-
* @param region - Region to validate
|
|
114
|
-
* @param layout - Parent layout
|
|
115
|
-
* @returns true if valid
|
|
116
|
-
* @throws Error if validation fails
|
|
117
|
-
*/
|
|
118
|
-
export declare function validateRegion(region: ContentRegion, layout: TerminalLayout): boolean;
|
|
119
|
-
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/types/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AAEH,oBAAY,UAAU;IACpB,sCAAsC;IACtC,OAAO,YAAY;IACnB,0CAA0C;IAC1C,QAAQ,aAAa;IACrB,qCAAqC;IACrC,IAAI,SAAS;CACd;AAGD;;GAEG;AAEH,oBAAY,iBAAiB;IAC3B,6BAA6B;IAC7B,MAAM,WAAW;IACjB,wBAAwB;IACxB,IAAI,SAAS;IACb,8BAA8B;IAC9B,MAAM,WAAW;IACjB,wBAAwB;IACxB,OAAO,YAAY;IACnB,wBAAwB;IACxB,MAAM,WAAW;CAClB;AAGD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IAEX,2CAA2C;IAC3C,IAAI,EAAE,iBAAiB,CAAC;IAExB,6CAA6C;IAC7C,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,uDAAuD;IACvD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,yEAAyE;IACzE,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;IAEpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,IAAI,EAAE,UAAU,CAAC;IAEjB,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,OAAO,EAAE,aAAa,EAAE,CAAC;IAEzB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;CAKzB,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAoC9D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CA4CrF"}
|
package/dist/types/layout.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Layout Type Definitions
|
|
4
|
-
*
|
|
5
|
-
* Core types for terminal layout system supporting responsive layouts
|
|
6
|
-
* and multi-column displays.
|
|
7
|
-
*
|
|
8
|
-
* Feature: 005-ui-layout-expansion
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.LAYOUT_MODE_THRESHOLDS = exports.MIN_TERMINAL_SIZE = exports.DEFAULT_LAYOUT = exports.ContentRegionType = exports.LayoutMode = void 0;
|
|
12
|
-
exports.validateLayout = validateLayout;
|
|
13
|
-
exports.validateRegion = validateRegion;
|
|
14
|
-
/**
|
|
15
|
-
* Layout mode enum - defines different terminal size strategies
|
|
16
|
-
*/
|
|
17
|
-
/* eslint-disable no-unused-vars */
|
|
18
|
-
var LayoutMode;
|
|
19
|
-
(function (LayoutMode) {
|
|
20
|
-
/** Narrow terminals (< 80 columns) */
|
|
21
|
-
LayoutMode["COMPACT"] = "compact";
|
|
22
|
-
/** Standard terminals (80-120 columns) */
|
|
23
|
-
LayoutMode["STANDARD"] = "standard";
|
|
24
|
-
/** Wide terminals (> 120 columns) */
|
|
25
|
-
LayoutMode["WIDE"] = "wide";
|
|
26
|
-
})(LayoutMode || (exports.LayoutMode = LayoutMode = {}));
|
|
27
|
-
/* eslint-enable no-unused-vars */
|
|
28
|
-
/**
|
|
29
|
-
* Content region type enum - categorizes different UI regions
|
|
30
|
-
*/
|
|
31
|
-
/* eslint-disable no-unused-vars */
|
|
32
|
-
var ContentRegionType;
|
|
33
|
-
(function (ContentRegionType) {
|
|
34
|
-
/** Page header/title area */
|
|
35
|
-
ContentRegionType["HEADER"] = "header";
|
|
36
|
-
/** Menu options area */
|
|
37
|
-
ContentRegionType["MENU"] = "menu";
|
|
38
|
-
/** Status information area */
|
|
39
|
-
ContentRegionType["STATUS"] = "status";
|
|
40
|
-
/** Main content area */
|
|
41
|
-
ContentRegionType["CONTENT"] = "content";
|
|
42
|
-
/** Footer/hints area */
|
|
43
|
-
ContentRegionType["FOOTER"] = "footer";
|
|
44
|
-
})(ContentRegionType || (exports.ContentRegionType = ContentRegionType = {}));
|
|
45
|
-
/**
|
|
46
|
-
* Default layout configuration for non-TTY or fallback scenarios
|
|
47
|
-
*/
|
|
48
|
-
exports.DEFAULT_LAYOUT = {
|
|
49
|
-
width: 80,
|
|
50
|
-
height: 24,
|
|
51
|
-
mode: LayoutMode.STANDARD,
|
|
52
|
-
columns: 1,
|
|
53
|
-
regions: [],
|
|
54
|
-
timestamp: 0,
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Minimum terminal size constraints
|
|
58
|
-
*/
|
|
59
|
-
exports.MIN_TERMINAL_SIZE = {
|
|
60
|
-
width: 60,
|
|
61
|
-
height: 20,
|
|
62
|
-
};
|
|
63
|
-
/**
|
|
64
|
-
* Layout mode thresholds for width-based mode selection
|
|
65
|
-
*/
|
|
66
|
-
exports.LAYOUT_MODE_THRESHOLDS = {
|
|
67
|
-
COMPACT_MAX: 79,
|
|
68
|
-
STANDARD_MIN: 80,
|
|
69
|
-
STANDARD_MAX: 120,
|
|
70
|
-
WIDE_MIN: 121,
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* Validate that a TerminalLayout configuration is valid
|
|
74
|
-
*
|
|
75
|
-
* @param layout - Layout to validate
|
|
76
|
-
* @returns true if valid
|
|
77
|
-
* @throws Error if validation fails
|
|
78
|
-
*/
|
|
79
|
-
function validateLayout(layout) {
|
|
80
|
-
// 1. Check minimum size
|
|
81
|
-
if (layout.width < exports.MIN_TERMINAL_SIZE.width || layout.height < exports.MIN_TERMINAL_SIZE.height) {
|
|
82
|
-
throw new Error(`Terminal too small: ${layout.width}x${layout.height} (min: ${exports.MIN_TERMINAL_SIZE.width}x${exports.MIN_TERMINAL_SIZE.height})`);
|
|
83
|
-
}
|
|
84
|
-
// 2. Check mode matches width
|
|
85
|
-
const expectedMode = layout.width < exports.LAYOUT_MODE_THRESHOLDS.STANDARD_MIN
|
|
86
|
-
? LayoutMode.COMPACT
|
|
87
|
-
: layout.width > exports.LAYOUT_MODE_THRESHOLDS.STANDARD_MAX
|
|
88
|
-
? LayoutMode.WIDE
|
|
89
|
-
: LayoutMode.STANDARD;
|
|
90
|
-
if (layout.mode !== expectedMode) {
|
|
91
|
-
throw new Error(`LayoutMode mismatch: expected ${expectedMode} for width ${layout.width}, got ${layout.mode}`);
|
|
92
|
-
}
|
|
93
|
-
// 3. Check columns constraint
|
|
94
|
-
if (layout.mode === LayoutMode.WIDE && layout.columns < 2) {
|
|
95
|
-
throw new Error(`WIDE mode requires columns >= 2, got ${layout.columns}`);
|
|
96
|
-
}
|
|
97
|
-
if (layout.mode !== LayoutMode.WIDE && layout.columns !== 1) {
|
|
98
|
-
throw new Error(`Non-WIDE mode requires columns = 1, got ${layout.columns}`);
|
|
99
|
-
}
|
|
100
|
-
// 4. Validate all content regions
|
|
101
|
-
for (const region of layout.regions) {
|
|
102
|
-
validateRegion(region, layout);
|
|
103
|
-
}
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Validate that a ContentRegion is valid within a given layout
|
|
108
|
-
*
|
|
109
|
-
* @param region - Region to validate
|
|
110
|
-
* @param layout - Parent layout
|
|
111
|
-
* @returns true if valid
|
|
112
|
-
* @throws Error if validation fails
|
|
113
|
-
*/
|
|
114
|
-
function validateRegion(region, layout) {
|
|
115
|
-
// 1. Check position bounds
|
|
116
|
-
if (region.position.row < 0 || region.position.row >= layout.height) {
|
|
117
|
-
throw new Error(`Region ${region.id}: row ${region.position.row} out of bounds (0-${layout.height - 1})`);
|
|
118
|
-
}
|
|
119
|
-
if (region.position.column < 0 || region.position.column >= layout.width) {
|
|
120
|
-
throw new Error(`Region ${region.id}: column ${region.position.column} out of bounds (0-${layout.width - 1})`);
|
|
121
|
-
}
|
|
122
|
-
// 2. Check size bounds
|
|
123
|
-
const maxWidth = layout.width - region.position.column;
|
|
124
|
-
const maxHeight = layout.height - region.position.row;
|
|
125
|
-
if (region.size.width <= 0 || region.size.width > maxWidth) {
|
|
126
|
-
throw new Error(`Region ${region.id}: width ${region.size.width} out of bounds (1-${maxWidth})`);
|
|
127
|
-
}
|
|
128
|
-
if (region.size.height <= 0 || region.size.height > maxHeight) {
|
|
129
|
-
throw new Error(`Region ${region.id}: height ${region.size.height} out of bounds (1-${maxHeight})`);
|
|
130
|
-
}
|
|
131
|
-
// 3. Check padding validity
|
|
132
|
-
const totalHorizontalPadding = region.padding.left + region.padding.right;
|
|
133
|
-
const totalVerticalPadding = region.padding.top + region.padding.bottom;
|
|
134
|
-
if (totalHorizontalPadding >= region.size.width) {
|
|
135
|
-
throw new Error(`Region ${region.id}: horizontal padding ${totalHorizontalPadding} >= width ${region.size.width}`);
|
|
136
|
-
}
|
|
137
|
-
if (totalVerticalPadding >= region.size.height) {
|
|
138
|
-
throw new Error(`Region ${region.id}: vertical padding ${totalVerticalPadding} >= height ${region.size.height}`);
|
|
139
|
-
}
|
|
140
|
-
return true;
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=layout.js.map
|
package/dist/types/layout.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/types/layout.ts"],"names":[],"mappings":"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"}
|