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
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Platform detection service
|
|
4
|
-
* Feature: 009-cross-platform-support
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.detectPlatform = detectPlatform;
|
|
8
|
-
const os_detection_js_1 = require("../utils/os-detection.js");
|
|
9
|
-
const firewall_js_1 = require("../utils/firewall.js");
|
|
10
|
-
const network_js_1 = require("../utils/network.js");
|
|
11
|
-
const platform_js_1 = require("../types/platform.js");
|
|
12
|
-
const child_process_1 = require("child_process");
|
|
13
|
-
/**
|
|
14
|
-
* Detect container environment
|
|
15
|
-
*/
|
|
16
|
-
function detectContainer() {
|
|
17
|
-
try {
|
|
18
|
-
const fs = require('fs');
|
|
19
|
-
// Check for Docker
|
|
20
|
-
if (fs.existsSync('/.dockerenv')) {
|
|
21
|
-
return { type: platform_js_1.ContainerType.DOCKER, isContainer: true };
|
|
22
|
-
}
|
|
23
|
-
// Check cgroup for container hints
|
|
24
|
-
if (fs.existsSync('/proc/1/cgroup')) {
|
|
25
|
-
const cgroup = fs.readFileSync('/proc/1/cgroup', 'utf-8');
|
|
26
|
-
if (cgroup.includes('docker')) {
|
|
27
|
-
return { type: platform_js_1.ContainerType.DOCKER, isContainer: true };
|
|
28
|
-
}
|
|
29
|
-
if (cgroup.includes('lxc')) {
|
|
30
|
-
return { type: platform_js_1.ContainerType.LXC, isContainer: true };
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
// Check for OpenVZ
|
|
34
|
-
if (fs.existsSync('/proc/vz') && !fs.existsSync('/proc/bc')) {
|
|
35
|
-
return { type: platform_js_1.ContainerType.OPENVZ, isContainer: true };
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
// Ignore errors
|
|
40
|
-
}
|
|
41
|
-
return { type: platform_js_1.ContainerType.NONE, isContainer: false };
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Detect SELinux status
|
|
45
|
-
*/
|
|
46
|
-
function detectSelinux() {
|
|
47
|
-
try {
|
|
48
|
-
const output = (0, child_process_1.execSync)('getenforce 2>/dev/null', { encoding: 'utf-8' }).trim();
|
|
49
|
-
switch (output) {
|
|
50
|
-
case 'Enforcing':
|
|
51
|
-
return platform_js_1.SelinuxStatus.ENFORCING;
|
|
52
|
-
case 'Permissive':
|
|
53
|
-
return platform_js_1.SelinuxStatus.PERMISSIVE;
|
|
54
|
-
default:
|
|
55
|
-
return platform_js_1.SelinuxStatus.DISABLED;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return platform_js_1.SelinuxStatus.DISABLED;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check if systemd is available
|
|
64
|
-
*/
|
|
65
|
-
function hasSystemd() {
|
|
66
|
-
try {
|
|
67
|
-
(0, child_process_1.execSync)('systemctl --version', { encoding: 'utf-8' });
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Detect current shell
|
|
76
|
-
*/
|
|
77
|
-
function detectShell() {
|
|
78
|
-
const shell = process.env.SHELL || '/bin/sh';
|
|
79
|
-
const shellName = shell.split('/').pop() || 'sh';
|
|
80
|
-
const isCompatible = ['bash', 'zsh'].includes(shellName);
|
|
81
|
-
return { shell: shellName, isCompatible };
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Get complete platform information
|
|
85
|
-
*/
|
|
86
|
-
function detectPlatform() {
|
|
87
|
-
const os = (0, os_detection_js_1.detectOperatingSystem)();
|
|
88
|
-
if (!os)
|
|
89
|
-
return null;
|
|
90
|
-
const container = detectContainer();
|
|
91
|
-
const shellInfo = detectShell();
|
|
92
|
-
return {
|
|
93
|
-
os,
|
|
94
|
-
environment: {
|
|
95
|
-
shell: shellInfo.shell,
|
|
96
|
-
isCompatibleShell: shellInfo.isCompatible,
|
|
97
|
-
containerType: container.type,
|
|
98
|
-
isContainer: container.isContainer,
|
|
99
|
-
selinuxStatus: detectSelinux(),
|
|
100
|
-
hasSystemd: hasSystemd(),
|
|
101
|
-
},
|
|
102
|
-
network: (0, network_js_1.detectNetwork)(),
|
|
103
|
-
firewall: (0, firewall_js_1.detectFirewall)(),
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=platform-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../src/services/platform-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PublicIpManager - Public IP Detection and Caching Service
|
|
3
|
-
*
|
|
4
|
-
* Provides automatic public IP detection with fallback to manual input
|
|
5
|
-
*
|
|
6
|
-
* @module services/public-ip-manager
|
|
7
|
-
*/
|
|
8
|
-
import type { ServerConfig, IpSource } from '../types/server-config';
|
|
9
|
-
/**
|
|
10
|
-
* Validate IP address (IPv4 or IPv6)
|
|
11
|
-
*/
|
|
12
|
-
export declare function isValidIp(ip: string): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* PublicIpManager - Manage public IP detection and caching
|
|
15
|
-
*/
|
|
16
|
-
export declare class PublicIpManager {
|
|
17
|
-
private configPath;
|
|
18
|
-
private maxRetries;
|
|
19
|
-
/**
|
|
20
|
-
* Create a new PublicIpManager
|
|
21
|
-
*
|
|
22
|
-
* @param configPath - Path to server config file
|
|
23
|
-
* @param maxRetries - Maximum retry attempts (default: 1)
|
|
24
|
-
*/
|
|
25
|
-
constructor(configPath?: string, maxRetries?: number);
|
|
26
|
-
/**
|
|
27
|
-
* Read server config from file
|
|
28
|
-
*
|
|
29
|
-
* @returns ServerConfig or null if not found
|
|
30
|
-
*/
|
|
31
|
-
getConfig(): Promise<ServerConfig | null>;
|
|
32
|
-
/**
|
|
33
|
-
* Save server config to file
|
|
34
|
-
*
|
|
35
|
-
* @param config - ServerConfig to save
|
|
36
|
-
*/
|
|
37
|
-
private saveConfig;
|
|
38
|
-
/**
|
|
39
|
-
* Detect public IP from external services
|
|
40
|
-
*
|
|
41
|
-
* @returns Detection result
|
|
42
|
-
*/
|
|
43
|
-
private detectPublicIp;
|
|
44
|
-
/**
|
|
45
|
-
* Get public IP (from cache or detect)
|
|
46
|
-
*
|
|
47
|
-
* @returns Public IP address
|
|
48
|
-
* @throws Error if unable to get IP and no cache exists
|
|
49
|
-
*/
|
|
50
|
-
getPublicIp(): Promise<string>;
|
|
51
|
-
/**
|
|
52
|
-
* Force refresh public IP (ignore cache)
|
|
53
|
-
*
|
|
54
|
-
* @returns New public IP address
|
|
55
|
-
* @throws Error if detection fails
|
|
56
|
-
*/
|
|
57
|
-
refreshPublicIp(): Promise<string>;
|
|
58
|
-
/**
|
|
59
|
-
* Manually set public IP
|
|
60
|
-
*
|
|
61
|
-
* @param ip - IP address to set
|
|
62
|
-
* @throws Error if IP format is invalid
|
|
63
|
-
*/
|
|
64
|
-
setPublicIp(ip: string): Promise<void>;
|
|
65
|
-
/**
|
|
66
|
-
* Check if manual IP input is needed
|
|
67
|
-
*
|
|
68
|
-
* @returns true if NAT environment detected or detection fails
|
|
69
|
-
*/
|
|
70
|
-
needsManualInput(): Promise<boolean>;
|
|
71
|
-
/**
|
|
72
|
-
* Get IP source (auto or manual)
|
|
73
|
-
*
|
|
74
|
-
* @returns IP source or null if no config
|
|
75
|
-
*/
|
|
76
|
-
getIpSource(): Promise<IpSource | null>;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=public-ip-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"public-ip-manager.d.ts","sourceRoot":"","sources":["../../src/services/public-ip-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EAGT,MAAM,wBAAwB,CAAC;AAkChC;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAwDD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;OAKG;gBACS,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU;IAKvD;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAY/C;;;;OAIG;YACW,UAAU;IAQxB;;;;OAIG;YACW,cAAc;IAiB5B;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBpC;;;;;OAKG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAcxC;;;;;OAKG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5C;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IA4B1C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CAI9C"}
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* PublicIpManager - Public IP Detection and Caching Service
|
|
4
|
-
*
|
|
5
|
-
* Provides automatic public IP detection with fallback to manual input
|
|
6
|
-
*
|
|
7
|
-
* @module services/public-ip-manager
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.PublicIpManager = void 0;
|
|
44
|
-
exports.isValidIp = isValidIp;
|
|
45
|
-
const promises_1 = require("fs/promises");
|
|
46
|
-
const fs_1 = require("fs");
|
|
47
|
-
const path_1 = require("path");
|
|
48
|
-
const https = __importStar(require("https"));
|
|
49
|
-
const paths_1 = require("../constants/paths");
|
|
50
|
-
const network_1 = require("../utils/network");
|
|
51
|
-
/**
|
|
52
|
-
* Default IP detection services (in priority order)
|
|
53
|
-
*/
|
|
54
|
-
const IP_SERVICES = [
|
|
55
|
-
{ name: 'ipify', url: 'https://api.ipify.org', timeout: 3000 },
|
|
56
|
-
{ name: 'ifconfig.me', url: 'https://ifconfig.me/ip', timeout: 3000 },
|
|
57
|
-
{ name: 'ip.sb', url: 'https://api.ip.sb/ip', timeout: 3000 },
|
|
58
|
-
];
|
|
59
|
-
/**
|
|
60
|
-
* Validate IPv4 address format
|
|
61
|
-
*/
|
|
62
|
-
function isValidIpv4(ip) {
|
|
63
|
-
const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
|
|
64
|
-
if (!ipv4Regex.test(ip))
|
|
65
|
-
return false;
|
|
66
|
-
const parts = ip.split('.');
|
|
67
|
-
return parts.every((part) => {
|
|
68
|
-
const num = parseInt(part, 10);
|
|
69
|
-
return num >= 0 && num <= 255;
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Validate IPv6 address format (simplified)
|
|
74
|
-
*/
|
|
75
|
-
function isValidIpv6(ip) {
|
|
76
|
-
const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::$|^([0-9a-fA-F]{1,4}:)*:([0-9a-fA-F]{1,4}:)*[0-9a-fA-F]{1,4}$/;
|
|
77
|
-
return ipv6Regex.test(ip);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Validate IP address (IPv4 or IPv6)
|
|
81
|
-
*/
|
|
82
|
-
function isValidIp(ip) {
|
|
83
|
-
return isValidIpv4(ip) || isValidIpv6(ip);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Fetch IP from a single service with timeout
|
|
87
|
-
*/
|
|
88
|
-
function fetchIpFromService(service) {
|
|
89
|
-
return new Promise((resolve) => {
|
|
90
|
-
const timeoutId = setTimeout(() => {
|
|
91
|
-
resolve({
|
|
92
|
-
ip: '',
|
|
93
|
-
success: false,
|
|
94
|
-
error: `Timeout after ${service.timeout}ms`,
|
|
95
|
-
provider: service.name,
|
|
96
|
-
});
|
|
97
|
-
}, service.timeout);
|
|
98
|
-
const req = https.get(service.url, (res) => {
|
|
99
|
-
let data = '';
|
|
100
|
-
res.on('data', (chunk) => {
|
|
101
|
-
data += chunk;
|
|
102
|
-
});
|
|
103
|
-
res.on('end', () => {
|
|
104
|
-
clearTimeout(timeoutId);
|
|
105
|
-
const ip = data.trim();
|
|
106
|
-
if (isValidIp(ip)) {
|
|
107
|
-
resolve({
|
|
108
|
-
ip,
|
|
109
|
-
success: true,
|
|
110
|
-
provider: service.name,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
resolve({
|
|
115
|
-
ip: '',
|
|
116
|
-
success: false,
|
|
117
|
-
error: `Invalid IP response: ${ip.substring(0, 50)}`,
|
|
118
|
-
provider: service.name,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
req.on('error', (error) => {
|
|
124
|
-
clearTimeout(timeoutId);
|
|
125
|
-
resolve({
|
|
126
|
-
ip: '',
|
|
127
|
-
success: false,
|
|
128
|
-
error: error.message,
|
|
129
|
-
provider: service.name,
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* PublicIpManager - Manage public IP detection and caching
|
|
136
|
-
*/
|
|
137
|
-
class PublicIpManager {
|
|
138
|
-
/**
|
|
139
|
-
* Create a new PublicIpManager
|
|
140
|
-
*
|
|
141
|
-
* @param configPath - Path to server config file
|
|
142
|
-
* @param maxRetries - Maximum retry attempts (default: 1)
|
|
143
|
-
*/
|
|
144
|
-
constructor(configPath, maxRetries = 1) {
|
|
145
|
-
this.configPath = configPath || paths_1.DEFAULT_PATHS.SERVER_CONFIG_FILE;
|
|
146
|
-
this.maxRetries = maxRetries;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Read server config from file
|
|
150
|
-
*
|
|
151
|
-
* @returns ServerConfig or null if not found
|
|
152
|
-
*/
|
|
153
|
-
async getConfig() {
|
|
154
|
-
try {
|
|
155
|
-
if (!(0, fs_1.existsSync)(this.configPath)) {
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
const content = await (0, promises_1.readFile)(this.configPath, 'utf-8');
|
|
159
|
-
return JSON.parse(content);
|
|
160
|
-
}
|
|
161
|
-
catch {
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Save server config to file
|
|
167
|
-
*
|
|
168
|
-
* @param config - ServerConfig to save
|
|
169
|
-
*/
|
|
170
|
-
async saveConfig(config) {
|
|
171
|
-
const dir = (0, path_1.dirname)(this.configPath);
|
|
172
|
-
if (!(0, fs_1.existsSync)(dir)) {
|
|
173
|
-
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
174
|
-
}
|
|
175
|
-
await (0, promises_1.writeFile)(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Detect public IP from external services
|
|
179
|
-
*
|
|
180
|
-
* @returns Detection result
|
|
181
|
-
*/
|
|
182
|
-
async detectPublicIp() {
|
|
183
|
-
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
184
|
-
for (const service of IP_SERVICES) {
|
|
185
|
-
const result = await fetchIpFromService(service);
|
|
186
|
-
if (result.success) {
|
|
187
|
-
return result;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return {
|
|
192
|
-
ip: '',
|
|
193
|
-
success: false,
|
|
194
|
-
error: 'All IP detection services failed after retries',
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Get public IP (from cache or detect)
|
|
199
|
-
*
|
|
200
|
-
* @returns Public IP address
|
|
201
|
-
* @throws Error if unable to get IP and no cache exists
|
|
202
|
-
*/
|
|
203
|
-
async getPublicIp() {
|
|
204
|
-
// Try to get from cache first
|
|
205
|
-
const config = await this.getConfig();
|
|
206
|
-
if (config?.publicIp) {
|
|
207
|
-
return config.publicIp;
|
|
208
|
-
}
|
|
209
|
-
// Try to detect
|
|
210
|
-
const result = await this.detectPublicIp();
|
|
211
|
-
if (result.success) {
|
|
212
|
-
// Cache the result
|
|
213
|
-
await this.saveConfig({
|
|
214
|
-
publicIp: result.ip,
|
|
215
|
-
lastUpdated: new Date().toISOString(),
|
|
216
|
-
source: 'auto',
|
|
217
|
-
});
|
|
218
|
-
return result.ip;
|
|
219
|
-
}
|
|
220
|
-
throw new Error(result.error || 'Failed to detect public IP');
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Force refresh public IP (ignore cache)
|
|
224
|
-
*
|
|
225
|
-
* @returns New public IP address
|
|
226
|
-
* @throws Error if detection fails
|
|
227
|
-
*/
|
|
228
|
-
async refreshPublicIp() {
|
|
229
|
-
const result = await this.detectPublicIp();
|
|
230
|
-
if (result.success) {
|
|
231
|
-
await this.saveConfig({
|
|
232
|
-
publicIp: result.ip,
|
|
233
|
-
lastUpdated: new Date().toISOString(),
|
|
234
|
-
source: 'auto',
|
|
235
|
-
});
|
|
236
|
-
return result.ip;
|
|
237
|
-
}
|
|
238
|
-
throw new Error(result.error || 'Failed to detect public IP');
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Manually set public IP
|
|
242
|
-
*
|
|
243
|
-
* @param ip - IP address to set
|
|
244
|
-
* @throws Error if IP format is invalid
|
|
245
|
-
*/
|
|
246
|
-
async setPublicIp(ip) {
|
|
247
|
-
const trimmedIp = ip.trim();
|
|
248
|
-
if (!isValidIp(trimmedIp)) {
|
|
249
|
-
throw new Error(`Invalid IP address format: ${ip}`);
|
|
250
|
-
}
|
|
251
|
-
await this.saveConfig({
|
|
252
|
-
publicIp: trimmedIp,
|
|
253
|
-
lastUpdated: new Date().toISOString(),
|
|
254
|
-
source: 'manual',
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Check if manual IP input is needed
|
|
259
|
-
*
|
|
260
|
-
* @returns true if NAT environment detected or detection fails
|
|
261
|
-
*/
|
|
262
|
-
async needsManualInput() {
|
|
263
|
-
// Check if we already have a cached IP
|
|
264
|
-
const config = await this.getConfig();
|
|
265
|
-
if (config?.publicIp) {
|
|
266
|
-
return false;
|
|
267
|
-
}
|
|
268
|
-
// Try to detect
|
|
269
|
-
const result = await this.detectPublicIp();
|
|
270
|
-
if (!result.success) {
|
|
271
|
-
return true;
|
|
272
|
-
}
|
|
273
|
-
// Check if detected IP is private (NAT)
|
|
274
|
-
if ((0, network_1.isPrivateIp)(result.ip)) {
|
|
275
|
-
return true;
|
|
276
|
-
}
|
|
277
|
-
// Cache the detected IP
|
|
278
|
-
await this.saveConfig({
|
|
279
|
-
publicIp: result.ip,
|
|
280
|
-
lastUpdated: new Date().toISOString(),
|
|
281
|
-
source: 'auto',
|
|
282
|
-
});
|
|
283
|
-
return false;
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Get IP source (auto or manual)
|
|
287
|
-
*
|
|
288
|
-
* @returns IP source or null if no config
|
|
289
|
-
*/
|
|
290
|
-
async getIpSource() {
|
|
291
|
-
const config = await this.getConfig();
|
|
292
|
-
return config?.source || null;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
exports.PublicIpManager = PublicIpManager;
|
|
296
|
-
//# sourceMappingURL=public-ip-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"public-ip-manager.js","sourceRoot":"","sources":["../../src/services/public-ip-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Quota Enforcer Service
|
|
3
|
-
*
|
|
4
|
-
* Monitors user traffic and enforces quota limits by disabling users
|
|
5
|
-
* who exceed their allocated quota.
|
|
6
|
-
*
|
|
7
|
-
* @module services/quota-enforcer
|
|
8
|
-
*/
|
|
9
|
-
import type { AlertLevel } from '../types/quota';
|
|
10
|
-
/**
|
|
11
|
-
* Result of quota enforcement check
|
|
12
|
-
*/
|
|
13
|
-
export interface EnforcementResult {
|
|
14
|
-
/** User email */
|
|
15
|
-
email: string;
|
|
16
|
-
/** Current usage in bytes */
|
|
17
|
-
usedBytes: number;
|
|
18
|
-
/** Quota limit in bytes (-1 for unlimited) */
|
|
19
|
-
quotaBytes: number;
|
|
20
|
-
/** Usage percentage */
|
|
21
|
-
usagePercent: number;
|
|
22
|
-
/** Alert level */
|
|
23
|
-
alertLevel: AlertLevel;
|
|
24
|
-
/** Whether user was disabled */
|
|
25
|
-
wasDisabled: boolean;
|
|
26
|
-
/** Previous status */
|
|
27
|
-
previousStatus: 'active' | 'disabled' | 'exceeded';
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Summary of enforcement run
|
|
31
|
-
*/
|
|
32
|
-
export interface EnforcementSummary {
|
|
33
|
-
/** Total users checked */
|
|
34
|
-
totalChecked: number;
|
|
35
|
-
/** Users with normal usage */
|
|
36
|
-
normalCount: number;
|
|
37
|
-
/** Users with warning level usage */
|
|
38
|
-
warningCount: number;
|
|
39
|
-
/** Users who exceeded quota */
|
|
40
|
-
exceededCount: number;
|
|
41
|
-
/** Users newly disabled in this run */
|
|
42
|
-
newlyDisabledCount: number;
|
|
43
|
-
/** Detailed results per user */
|
|
44
|
-
results: EnforcementResult[];
|
|
45
|
-
/** Timestamp of enforcement run */
|
|
46
|
-
timestamp: string;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* QuotaEnforcer class
|
|
50
|
-
*
|
|
51
|
-
* Checks all users against their quotas and disables those who exceed limits.
|
|
52
|
-
*/
|
|
53
|
-
export declare class QuotaEnforcer {
|
|
54
|
-
private quotaManager;
|
|
55
|
-
private trafficManager;
|
|
56
|
-
constructor(_configPath?: string, _serviceName?: string);
|
|
57
|
-
/**
|
|
58
|
-
* Check and enforce quotas for all users
|
|
59
|
-
*
|
|
60
|
-
* @param autoDisable - Whether to automatically disable users who exceed quota
|
|
61
|
-
* @returns Enforcement summary
|
|
62
|
-
*/
|
|
63
|
-
enforceQuotas(autoDisable?: boolean): Promise<EnforcementSummary>;
|
|
64
|
-
/**
|
|
65
|
-
* Check quota for a single user
|
|
66
|
-
*
|
|
67
|
-
* @param email - User email
|
|
68
|
-
* @param autoDisable - Whether to automatically disable if exceeded
|
|
69
|
-
* @returns Enforcement result or null if user has no quota
|
|
70
|
-
*/
|
|
71
|
-
checkUser(email: string, autoDisable?: boolean): Promise<EnforcementResult | null>;
|
|
72
|
-
/**
|
|
73
|
-
* Get users who need attention (warning or exceeded)
|
|
74
|
-
*
|
|
75
|
-
* @returns Array of users needing attention
|
|
76
|
-
*/
|
|
77
|
-
getUsersNeedingAttention(): Promise<EnforcementResult[]>;
|
|
78
|
-
/**
|
|
79
|
-
* Re-enable a disabled user
|
|
80
|
-
*
|
|
81
|
-
* @param email - User email
|
|
82
|
-
* @param resetUsage - Whether to also reset usage counter
|
|
83
|
-
*/
|
|
84
|
-
reenableUser(email: string, resetUsage?: boolean): Promise<void>;
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=quota-enforcer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quota-enforcer.d.ts","sourceRoot":"","sources":["../../src/services/quota-enforcer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IAEnB,uBAAuB;IACvB,YAAY,EAAE,MAAM,CAAC;IAErB,kBAAkB;IAClB,UAAU,EAAE,UAAU,CAAC;IAEvB,gCAAgC;IAChC,WAAW,EAAE,OAAO,CAAC;IAErB,sBAAsB;IACtB,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IAErB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IAEpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IAErB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IAEtB,uCAAuC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,gCAAgC;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAE7B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;gBAE3B,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAKvD;;;;;OAKG;IACG,aAAa,CAAC,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwE7E;;;;;;OAMG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAmC9F;;;;OAIG;IACG,wBAAwB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAK9D;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAO9E"}
|