surgio 2.25.3 → 3.0.0-alpha.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/LICENSE +1 -1
- package/bin/dev +17 -0
- package/bin/dev.cmd +3 -0
- package/bin/run +8 -0
- package/bin/run.cmd +3 -0
- package/build/base-command.d.ts +19 -0
- package/build/base-command.js +75 -0
- package/build/base-command.js.map +1 -0
- package/build/commands/check.d.ts +10 -0
- package/build/commands/check.js +88 -0
- package/build/commands/check.js.map +1 -0
- package/build/commands/clean-cache.d.ts +6 -0
- package/build/commands/clean-cache.js +29 -0
- package/build/commands/clean-cache.js.map +1 -0
- package/build/commands/doctor.d.ts +6 -0
- package/build/commands/doctor.js +21 -0
- package/build/commands/doctor.js.map +1 -0
- package/build/commands/generate.d.ts +7 -0
- package/build/commands/generate.js +93 -0
- package/build/commands/generate.js.map +1 -0
- package/build/commands/lint.d.ts +6 -0
- package/build/commands/lint.js +36 -0
- package/build/commands/lint.js.map +1 -0
- package/build/commands/new.d.ts +6 -0
- package/build/commands/new.js +36 -0
- package/build/commands/new.js.map +1 -0
- package/build/commands/subscriptions.d.ts +7 -0
- package/build/commands/subscriptions.js +96 -0
- package/build/commands/subscriptions.js.map +1 -0
- package/build/commands/upload.d.ts +6 -0
- package/build/commands/upload.js +89 -0
- package/build/commands/upload.js.map +1 -0
- package/build/config.d.ts +6 -0
- package/build/config.js +151 -0
- package/build/config.js.map +1 -0
- package/build/configurables.d.ts +80 -0
- package/build/configurables.js +52 -0
- package/build/configurables.js.map +1 -0
- package/build/constant/constant.d.ts +16 -16
- package/build/constant/constant.js +3 -13
- package/build/constant/constant.js.map +1 -0
- package/build/constant/env.js +1 -1
- package/build/constant/env.js.map +1 -0
- package/build/constant/error.js +1 -1
- package/build/constant/error.js.map +1 -0
- package/build/constant/index.js +1 -1
- package/build/constant/index.js.map +1 -0
- package/build/generator/artifact.d.ts +302 -67
- package/build/generator/artifact.js +141 -101
- package/build/generator/artifact.js.map +1 -0
- package/build/generator/index.d.ts +2 -0
- package/build/generator/index.js +19 -0
- package/build/generator/index.js.map +1 -0
- package/build/generator/template.js +2 -28
- package/build/generator/template.js.map +1 -0
- package/build/hooks/init.d.ts +3 -0
- package/build/hooks/init.js +33 -0
- package/build/hooks/init.js.map +1 -0
- package/build/index.d.ts +68 -66
- package/build/index.js +11 -51
- package/build/index.js.map +1 -0
- package/build/internal.d.ts +5 -0
- package/build/internal.js +25 -0
- package/build/internal.js.map +1 -0
- package/build/misc/deprecation.d.ts +1 -6
- package/build/misc/deprecation.js +1 -8
- package/build/misc/deprecation.js.map +1 -0
- package/build/misc/flag_cn.d.ts +49 -50
- package/build/misc/flag_cn.js +3 -3
- package/build/misc/flag_cn.js.map +1 -0
- package/build/provider/BlackSSLProvider.d.ts +4 -3
- package/build/provider/BlackSSLProvider.js +28 -16
- package/build/provider/BlackSSLProvider.js.map +1 -0
- package/build/provider/ClashProvider.d.ts +7 -10
- package/build/provider/ClashProvider.js +168 -76
- package/build/provider/ClashProvider.js.map +1 -0
- package/build/provider/CustomProvider.d.ts +4 -3
- package/build/provider/CustomProvider.js +98 -54
- package/build/provider/CustomProvider.js.map +1 -0
- package/build/provider/Provider.d.ts +9 -22
- package/build/provider/Provider.js +34 -69
- package/build/provider/Provider.js.map +1 -0
- package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +4 -5
- package/build/provider/ShadowsocksJsonSubscribeProvider.js +31 -21
- package/build/provider/ShadowsocksJsonSubscribeProvider.js.map +1 -0
- package/build/provider/ShadowsocksSubscribeProvider.d.ts +5 -8
- package/build/provider/ShadowsocksSubscribeProvider.js +33 -27
- package/build/provider/ShadowsocksSubscribeProvider.js.map +1 -0
- package/build/provider/ShadowsocksrSubscribeProvider.d.ts +5 -8
- package/build/provider/ShadowsocksrSubscribeProvider.js +33 -23
- package/build/provider/ShadowsocksrSubscribeProvider.js.map +1 -0
- package/build/provider/SsdProvider.d.ts +5 -8
- package/build/provider/SsdProvider.js +59 -39
- package/build/provider/SsdProvider.js.map +1 -0
- package/build/provider/TrojanProvider.d.ts +5 -8
- package/build/provider/TrojanProvider.js +40 -30
- package/build/provider/TrojanProvider.js.map +1 -0
- package/build/provider/V2rayNSubscribeProvider.d.ts +4 -5
- package/build/provider/V2rayNSubscribeProvider.js +64 -33
- package/build/provider/V2rayNSubscribeProvider.js.map +1 -0
- package/build/provider/index.d.ts +16 -2
- package/build/provider/index.js +12 -5
- package/build/provider/index.js.map +1 -0
- package/build/provider/types.d.ts +10 -1
- package/build/provider/types.js +1 -1
- package/build/provider/types.js.map +1 -0
- package/build/redis.js +1 -1
- package/build/redis.js.map +1 -0
- package/build/types.d.ts +42 -236
- package/build/types.js +2 -1
- package/build/types.js.map +1 -0
- package/build/utils/cache.js +29 -27
- package/build/utils/cache.js.map +1 -0
- package/build/utils/clash.d.ts +204 -3
- package/build/utils/clash.js +247 -110
- package/build/utils/clash.js.map +1 -0
- package/build/utils/constant.js +1 -1
- package/build/utils/constant.js.map +1 -0
- package/build/utils/dns.js +1 -1
- package/build/utils/dns.js.map +1 -0
- package/build/utils/doctor.d.ts +2 -0
- package/build/utils/doctor.js +38 -0
- package/build/utils/doctor.js.map +1 -0
- package/build/utils/env-flag.js +2 -2
- package/build/utils/env-flag.js.map +1 -0
- package/build/utils/error-helper.d.ts +2 -2
- package/build/utils/error-helper.js +51 -16
- package/build/utils/error-helper.js.map +1 -0
- package/build/utils/errors.d.ts +19 -0
- package/build/utils/errors.js +60 -0
- package/build/utils/errors.js.map +1 -0
- package/build/utils/filter.d.ts +46 -43
- package/build/utils/filter.js +57 -59
- package/build/utils/filter.js.map +1 -0
- package/build/utils/flag.js +6 -6
- package/build/utils/flag.js.map +1 -0
- package/build/utils/http-client.js +38 -5
- package/build/utils/http-client.js.map +1 -0
- package/build/utils/index.d.ts +14 -21
- package/build/utils/index.js +102 -118
- package/build/utils/index.js.map +1 -0
- package/build/utils/linter.js +5 -2
- package/build/utils/linter.js.map +1 -0
- package/build/utils/loon.d.ts +3 -2
- package/build/utils/loon.js +67 -5
- package/build/utils/loon.js.map +1 -0
- package/build/utils/quantumult.d.ts +3 -3
- package/build/utils/quantumult.js +190 -258
- package/build/utils/quantumult.js.map +1 -0
- package/build/utils/relayable-url.js +1 -1
- package/build/utils/relayable-url.js.map +1 -0
- package/build/utils/remote-snippet.js +37 -14
- package/build/utils/remote-snippet.js.map +1 -0
- package/build/utils/ss.js +27 -17
- package/build/utils/ss.js.map +1 -0
- package/build/utils/ssr.js +3 -4
- package/build/utils/ssr.js.map +1 -0
- package/build/utils/subscription.js +10 -9
- package/build/utils/subscription.js.map +1 -0
- package/build/utils/surfboard.d.ts +3 -2
- package/build/utils/surfboard.js +142 -126
- package/build/utils/surfboard.js.map +1 -0
- package/build/utils/surge.d.ts +4 -2
- package/build/utils/surge.js +328 -300
- package/build/utils/surge.js.map +1 -0
- package/build/utils/time.d.ts +1 -0
- package/build/utils/time.js +6 -0
- package/build/utils/time.js.map +1 -0
- package/build/utils/tmp-helper.js +8 -1
- package/build/utils/tmp-helper.js.map +1 -0
- package/build/utils/trojan.js +19 -11
- package/build/utils/trojan.js.map +1 -0
- package/build/validators/artifact.d.ts +35 -0
- package/build/validators/artifact.js +17 -0
- package/build/validators/artifact.js.map +1 -0
- package/build/validators/common.d.ts +121 -0
- package/build/validators/common.js +65 -0
- package/build/validators/common.js.map +1 -0
- package/build/validators/filter.d.ts +10 -0
- package/build/validators/filter.js +15 -0
- package/build/validators/filter.js.map +1 -0
- package/build/validators/hooks.d.ts +9 -0
- package/build/validators/hooks.js +11 -0
- package/build/validators/hooks.js.map +1 -0
- package/build/validators/http.d.ts +137 -0
- package/build/validators/http.js +19 -0
- package/build/validators/http.js.map +1 -0
- package/build/validators/index.d.ts +15 -0
- package/build/validators/index.js +32 -0
- package/build/validators/index.js.map +1 -0
- package/build/validators/provider.d.ts +114 -0
- package/build/validators/provider.js +42 -0
- package/build/validators/provider.js.map +1 -0
- package/build/validators/shadowsocks.d.ts +86 -0
- package/build/validators/shadowsocks.js +29 -0
- package/build/validators/shadowsocks.js.map +1 -0
- package/build/validators/shadowsocksr.d.ts +77 -0
- package/build/validators/shadowsocksr.js +19 -0
- package/build/validators/shadowsocksr.js.map +1 -0
- package/build/validators/snell.d.ts +71 -0
- package/build/validators/snell.js +17 -0
- package/build/validators/snell.js.map +1 -0
- package/build/validators/socks5.d.ts +77 -0
- package/build/validators/socks5.js +19 -0
- package/build/validators/socks5.js.map +1 -0
- package/build/validators/surgio-config.d.ts +307 -0
- package/build/validators/surgio-config.js +95 -0
- package/build/validators/surgio-config.js.map +1 -0
- package/build/validators/trojan.d.ts +86 -0
- package/build/validators/trojan.js +15 -0
- package/build/validators/trojan.js.map +1 -0
- package/build/validators/tuic.d.ts +301 -0
- package/build/validators/tuic.js +21 -0
- package/build/validators/tuic.js.map +1 -0
- package/build/validators/vmess.d.ts +92 -0
- package/build/validators/vmess.js +29 -0
- package/build/validators/vmess.js.map +1 -0
- package/build/validators/wireguard.d.ts +123 -0
- package/build/validators/wireguard.js +26 -0
- package/build/validators/wireguard.js.map +1 -0
- package/config.d.ts +1 -0
- package/config.js +1 -0
- package/constant.d.ts +1 -0
- package/constant.js +1 -0
- package/generator.d.ts +1 -0
- package/generator.js +1 -0
- package/hygen-template/artifact/new/index.js +15 -15
- package/hygen-template/provider/new/index.js +8 -7
- package/hygen-template/template/new/index.js +3 -3
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/internal.d.ts +1 -0
- package/internal.js +1 -0
- package/package.json +120 -80
- package/provider.d.ts +1 -0
- package/provider.js +1 -0
- package/utils.d.ts +1 -0
- package/utils.js +1 -0
- package/bin/surgio.js +0 -8
- package/build/command/check.d.ts +0 -9
- package/build/command/check.js +0 -79
- package/build/command/clean-cache.d.ts +0 -8
- package/build/command/clean-cache.js +0 -43
- package/build/command/doctor.d.ts +0 -9
- package/build/command/doctor.js +0 -63
- package/build/command/generate.d.ts +0 -8
- package/build/command/generate.js +0 -64
- package/build/command/lint.d.ts +0 -7
- package/build/command/lint.js +0 -42
- package/build/command/new.d.ts +0 -7
- package/build/command/new.js +0 -44
- package/build/command/subscriptions.d.ts +0 -10
- package/build/command/subscriptions.js +0 -87
- package/build/command/upload.d.ts +0 -9
- package/build/command/upload.js +0 -101
- package/build/generate.d.ts +0 -4
- package/build/generate.js +0 -75
- package/build/utils/command.d.ts +0 -2
- package/build/utils/command.js +0 -23
- package/build/utils/config.d.ts +0 -6
- package/build/utils/config.js +0 -245
- package/build/utils/patch-proxy.d.ts +0 -1
- package/build/utils/patch-proxy.js +0 -19
- package/build/utils/v2ray.d.ts +0 -4
- package/build/utils/v2ray.js +0 -41
package/build/redis.js
CHANGED
|
@@ -58,4 +58,4 @@ const prepareRedis = () => {
|
|
|
58
58
|
};
|
|
59
59
|
const redis = prepareRedis();
|
|
60
60
|
exports.default = redis;
|
|
61
|
-
//# sourceMappingURL=
|
|
61
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../src/redis.ts"],"names":[],"mappings":";;;;;AAAA,2CAA6C;AAC7C,sDAA2B;AAE3B,yCAAuC;AAEvC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;AAExD,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,IAAI,MAAM,GAAiB,IAAI,CAAA;IAC/B,IAAI,QAAQ,GAAkB,IAAI,CAAA;IAElC,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM;QACxB,WAAW,CAAC,SAAiB,EAAE,WAAiB;YAC9C,IAAI,MAAM,IAAI,QAAQ,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAA;gBACnE,OAAO,MAAM,CAAA;aACd;YACD,QAAQ,GAAG,SAAS,CAAA;YAEpB,IAAI,WAAW,EAAE;gBACf,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAA;aACpC;iBAAM;gBACL,MAAM,GAAG,IAAI,iBAAK,CAAC,SAAS,CAAC,CAAA;aAC9B;YAED,OAAO,MAAe,CAAA;QACxB,CAAC;QACD,QAAQ;YACN,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;aACnD;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QACD,KAAK,CAAC,YAAY;YAChB,IAAI,MAAM,EAAE;gBACV,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBACnB,MAAM,GAAG,IAAI,CAAA;gBACb,QAAQ,GAAG,IAAI,CAAA;aAChB;QACH,CAAC;QACD,KAAK,CAAC,UAAU;YACd,IAAI,CAAC,MAAM,EAAE;gBACX,OAAM;aACP;YAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,MAAM,CAAC,IAAI,CAAC,qBAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,IAAI,CAAC,MAAM;oBAAE,OAAM;gBAEnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAU,CAAC,GAA8B,CAAC,IAAI,CAAC,CAAA;YACvE,CAAC,CAAC,CACH,CAAA;YAED,MAAM,OAAO,CAAC,GAAG,CACf,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,OAAM;gBAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AACD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAA;AAE5B,kBAAe,KAAK,CAAA"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Provider, GetNodeListParams } from './provider';
|
|
3
|
+
import { WireguardNodeConfigValidator, ProviderValidator, ShadowsocksNodeConfigValidator, HttpNodeConfigValidator, HttpsNodeConfigValidator, TrojanNodeConfigValidator, ShadowsocksrNodeConfigValidator, Socks5NodeConfigValidator, VmessNodeConfigValidator, SnellNodeConfigValidator, TuicNodeConfigValidator, SurgioConfigValidator, ArtifactValidator, RemoteSnippetValidator, NodeFilterTypeValidator, SortedNodeFilterTypeValidator } from './validators';
|
|
2
4
|
export declare enum NodeTypeEnum {
|
|
3
5
|
HTTPS = "https",
|
|
4
6
|
HTTP = "http",
|
|
@@ -8,7 +10,8 @@ export declare enum NodeTypeEnum {
|
|
|
8
10
|
Vmess = "vmess",
|
|
9
11
|
Trojan = "trojan",
|
|
10
12
|
Socks5 = "socks5",
|
|
11
|
-
Tuic = "tuic"
|
|
13
|
+
Tuic = "tuic",
|
|
14
|
+
Wireguard = "wireguard"
|
|
12
15
|
}
|
|
13
16
|
export declare enum SupportProviderEnum {
|
|
14
17
|
Clash = "clash",
|
|
@@ -21,126 +24,44 @@ export declare enum SupportProviderEnum {
|
|
|
21
24
|
Ssd = "ssd",
|
|
22
25
|
Trojan = "trojan"
|
|
23
26
|
}
|
|
24
|
-
export
|
|
27
|
+
export type CommandConfigBeforeNormalize = z.infer<typeof SurgioConfigValidator>;
|
|
28
|
+
export type CommandConfig = CommandConfigBeforeNormalize & {
|
|
25
29
|
publicUrl: string;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
readonly analytics?: boolean;
|
|
34
|
-
readonly checkHostname?: boolean;
|
|
35
|
-
readonly upload?: {
|
|
36
|
-
readonly prefix?: string;
|
|
37
|
-
readonly region?: string;
|
|
38
|
-
readonly endpoint?: string;
|
|
39
|
-
readonly bucket: string;
|
|
40
|
-
readonly accessKeyId: string;
|
|
41
|
-
readonly accessKeySecret: string;
|
|
42
|
-
};
|
|
43
|
-
readonly binPath?: {
|
|
44
|
-
readonly shadowsocksr?: string;
|
|
45
|
-
readonly v2ray?: string;
|
|
46
|
-
vmess?: string;
|
|
47
|
-
};
|
|
48
|
-
readonly flags?: {
|
|
49
|
-
[name: string]: ReadonlyArray<string | RegExp> | string | RegExp;
|
|
50
|
-
};
|
|
51
|
-
readonly surgeConfig?: {
|
|
52
|
-
readonly shadowsocksFormat?: 'ss' | 'custom';
|
|
53
|
-
readonly v2ray?: 'native' | 'external';
|
|
54
|
-
readonly resolveHostname?: boolean;
|
|
55
|
-
readonly vmessAEAD?: boolean;
|
|
56
|
-
};
|
|
57
|
-
readonly quantumultXConfig?: {
|
|
58
|
-
readonly vmessAEAD?: boolean;
|
|
59
|
-
};
|
|
60
|
-
readonly clashConfig?: {
|
|
61
|
-
readonly ssrFormat?: 'native' | 'legacy';
|
|
62
|
-
readonly enableTuic?: boolean;
|
|
63
|
-
};
|
|
64
|
-
readonly surfboardConfig?: {
|
|
65
|
-
readonly vmessAEAD?: boolean;
|
|
66
|
-
};
|
|
67
|
-
readonly gateway?: {
|
|
68
|
-
readonly accessToken?: string;
|
|
69
|
-
readonly viewerToken?: string;
|
|
70
|
-
readonly auth?: boolean;
|
|
71
|
-
readonly cookieMaxAge?: number;
|
|
72
|
-
readonly useCacheOnError?: boolean;
|
|
73
|
-
};
|
|
74
|
-
readonly proxyTestUrl?: string;
|
|
75
|
-
readonly proxyTestInterval?: number;
|
|
76
|
-
readonly customFilters?: {
|
|
77
|
-
readonly [name: string]: NodeNameFilterType | SortedNodeNameFilterType;
|
|
78
|
-
};
|
|
79
|
-
readonly customParams?: PlainObjectOf<string | boolean | number>;
|
|
80
|
-
readonly cache?: {
|
|
81
|
-
readonly type?: 'redis' | 'default';
|
|
82
|
-
readonly redisUrl?: string;
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
export interface RemoteSnippetConfig {
|
|
86
|
-
readonly url: string;
|
|
87
|
-
readonly name: string;
|
|
88
|
-
readonly surgioSnippet?: boolean;
|
|
89
|
-
}
|
|
30
|
+
output: string;
|
|
31
|
+
urlBase: string;
|
|
32
|
+
providerDir: string;
|
|
33
|
+
templateDir: string;
|
|
34
|
+
configDir: string;
|
|
35
|
+
};
|
|
36
|
+
export type RemoteSnippetConfig = z.infer<typeof RemoteSnippetValidator>;
|
|
90
37
|
export interface RemoteSnippet extends RemoteSnippetConfig {
|
|
91
38
|
readonly main: (...args: string[]) => string;
|
|
92
39
|
readonly text: string;
|
|
93
40
|
}
|
|
94
|
-
export
|
|
95
|
-
|
|
96
|
-
readonly template: string | undefined;
|
|
97
|
-
readonly provider: string;
|
|
98
|
-
readonly combineProviders?: ReadonlyArray<string>;
|
|
99
|
-
readonly categories?: ReadonlyArray<string>;
|
|
100
|
-
readonly customParams?: PlainObjectOf<string | boolean | number>;
|
|
101
|
-
readonly proxyGroupModifier?: ProxyGroupModifier;
|
|
102
|
-
readonly destDir?: string;
|
|
103
|
-
readonly templateString?: string;
|
|
104
|
-
readonly downloadUrl?: string;
|
|
105
|
-
}
|
|
106
|
-
export interface ProviderConfig {
|
|
107
|
-
readonly type: SupportProviderEnum;
|
|
108
|
-
readonly nodeFilter?: NodeFilterType | SortedNodeNameFilterType;
|
|
109
|
-
readonly netflixFilter?: NodeNameFilterType | SortedNodeNameFilterType;
|
|
110
|
-
readonly youtubePremiumFilter?: NodeNameFilterType | SortedNodeNameFilterType;
|
|
111
|
-
readonly startPort?: number;
|
|
112
|
-
readonly customFilters?: {
|
|
113
|
-
readonly [name: string]: NodeNameFilterType | SortedNodeNameFilterType;
|
|
114
|
-
};
|
|
115
|
-
readonly addFlag?: boolean;
|
|
116
|
-
readonly removeExistingFlag?: boolean;
|
|
117
|
-
readonly tfo?: boolean;
|
|
118
|
-
readonly mptcp?: boolean;
|
|
119
|
-
readonly renameNode?: (name: string) => string;
|
|
120
|
-
readonly relayUrl?: boolean | string;
|
|
121
|
-
readonly requestUserAgent?: string;
|
|
122
|
-
readonly cache?: {
|
|
123
|
-
readonly type?: 'redis' | 'default';
|
|
124
|
-
};
|
|
125
|
-
readonly underlyingProxy?: string;
|
|
126
|
-
}
|
|
41
|
+
export type ArtifactConfig = z.infer<typeof ArtifactValidator>;
|
|
42
|
+
export type ProviderConfig = z.infer<typeof ProviderValidator>;
|
|
127
43
|
export interface BlackSSLProviderConfig extends ProviderConfig {
|
|
44
|
+
readonly type: SupportProviderEnum.BlackSSL;
|
|
128
45
|
readonly username: string;
|
|
129
46
|
readonly password: string;
|
|
130
47
|
}
|
|
131
48
|
export interface ShadowsocksJsonSubscribeProviderConfig extends ProviderConfig {
|
|
49
|
+
readonly type: SupportProviderEnum.ShadowsocksJsonSubscribe;
|
|
132
50
|
readonly url: string;
|
|
133
51
|
readonly udpRelay?: boolean;
|
|
134
52
|
}
|
|
135
53
|
export interface ShadowsocksSubscribeProviderConfig extends ProviderConfig {
|
|
54
|
+
readonly type: SupportProviderEnum.ShadowsocksSubscribe;
|
|
136
55
|
readonly url: string;
|
|
137
56
|
readonly udpRelay?: boolean;
|
|
138
57
|
}
|
|
139
58
|
export interface ShadowsocksrSubscribeProviderConfig extends ProviderConfig {
|
|
59
|
+
readonly type: SupportProviderEnum.ShadowsocksrSubscribe;
|
|
140
60
|
readonly url: string;
|
|
141
61
|
readonly udpRelay?: boolean;
|
|
142
62
|
}
|
|
143
63
|
export interface V2rayNSubscribeProviderConfig extends ProviderConfig {
|
|
64
|
+
readonly type: SupportProviderEnum.V2rayNSubscribe;
|
|
144
65
|
readonly url: string;
|
|
145
66
|
readonly compatibleMode?: boolean;
|
|
146
67
|
readonly skipCertVerify?: boolean;
|
|
@@ -148,124 +69,38 @@ export interface V2rayNSubscribeProviderConfig extends ProviderConfig {
|
|
|
148
69
|
readonly tls13?: boolean;
|
|
149
70
|
}
|
|
150
71
|
export interface ClashProviderConfig extends ProviderConfig {
|
|
72
|
+
readonly type: SupportProviderEnum.Clash;
|
|
151
73
|
readonly url: string;
|
|
152
74
|
readonly udpRelay?: boolean;
|
|
153
75
|
readonly tls13?: boolean;
|
|
154
76
|
}
|
|
155
77
|
export interface SsdProviderConfig extends ProviderConfig {
|
|
78
|
+
readonly type: SupportProviderEnum.Ssd;
|
|
156
79
|
readonly url: string;
|
|
157
80
|
readonly udpRelay?: boolean;
|
|
158
81
|
}
|
|
82
|
+
export type AsyncCustomProviderNodeList = (params: GetNodeListParams) => Promise<ReadonlyArray<PossibleNodeConfigType>>;
|
|
159
83
|
export interface CustomProviderConfig extends ProviderConfig {
|
|
160
|
-
readonly
|
|
84
|
+
readonly type: SupportProviderEnum.Custom;
|
|
85
|
+
readonly nodeList: ReadonlyArray<PossibleNodeConfigType> | AsyncCustomProviderNodeList;
|
|
161
86
|
}
|
|
162
87
|
export interface TrojanProviderConfig extends ProviderConfig {
|
|
88
|
+
readonly type: SupportProviderEnum.Trojan;
|
|
163
89
|
readonly url: string;
|
|
164
90
|
readonly udpRelay?: boolean;
|
|
165
91
|
readonly tls13?: boolean;
|
|
166
92
|
}
|
|
167
|
-
export
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
export
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
export interface ShadowsocksNodeConfig extends SimpleNodeConfig {
|
|
180
|
-
readonly type: NodeTypeEnum.Shadowsocks;
|
|
181
|
-
readonly hostname: string;
|
|
182
|
-
readonly port: number | string;
|
|
183
|
-
readonly method: string;
|
|
184
|
-
readonly password: string;
|
|
185
|
-
readonly 'udp-relay'?: boolean;
|
|
186
|
-
readonly obfs?: 'tls' | 'http' | 'ws' | 'wss';
|
|
187
|
-
readonly 'obfs-host'?: string;
|
|
188
|
-
readonly 'obfs-uri'?: string;
|
|
189
|
-
readonly skipCertVerify?: boolean;
|
|
190
|
-
readonly wsHeaders?: Record<string, string>;
|
|
191
|
-
readonly tls13?: boolean;
|
|
192
|
-
readonly mux?: boolean;
|
|
193
|
-
}
|
|
194
|
-
export interface SnellNodeConfig extends SimpleNodeConfig {
|
|
195
|
-
readonly type: NodeTypeEnum.Snell;
|
|
196
|
-
readonly hostname: string;
|
|
197
|
-
readonly port: number | string;
|
|
198
|
-
readonly psk: string;
|
|
199
|
-
readonly obfs?: string;
|
|
200
|
-
readonly 'obfs-host'?: string;
|
|
201
|
-
readonly version?: string;
|
|
202
|
-
readonly reuse?: boolean;
|
|
203
|
-
}
|
|
204
|
-
export interface ShadowsocksrNodeConfig extends SimpleNodeConfig {
|
|
205
|
-
readonly type: NodeTypeEnum.Shadowsocksr;
|
|
206
|
-
readonly hostname: string;
|
|
207
|
-
readonly port: number | string;
|
|
208
|
-
readonly method: string;
|
|
209
|
-
readonly protocol: string;
|
|
210
|
-
readonly obfs: string;
|
|
211
|
-
readonly password: string;
|
|
212
|
-
readonly obfsparam: string;
|
|
213
|
-
readonly protoparam: string;
|
|
214
|
-
readonly 'udp-relay'?: boolean;
|
|
215
|
-
}
|
|
216
|
-
export interface VmessNodeConfig extends SimpleNodeConfig {
|
|
217
|
-
readonly type: NodeTypeEnum.Vmess;
|
|
218
|
-
readonly hostname: string;
|
|
219
|
-
readonly port: number | string;
|
|
220
|
-
readonly method: 'auto' | 'aes-128-gcm' | 'chacha20-ietf-poly1305' | 'none';
|
|
221
|
-
readonly uuid: string;
|
|
222
|
-
readonly alterId: string;
|
|
223
|
-
readonly network: 'tcp' | 'ws';
|
|
224
|
-
readonly tls: boolean;
|
|
225
|
-
readonly host?: string;
|
|
226
|
-
readonly path?: string;
|
|
227
|
-
readonly 'udp-relay'?: boolean;
|
|
228
|
-
readonly tls13?: boolean;
|
|
229
|
-
readonly skipCertVerify?: boolean;
|
|
230
|
-
readonly wsHeaders?: Record<string, string>;
|
|
231
|
-
readonly serverCertFingerprintSha256?: string;
|
|
232
|
-
}
|
|
233
|
-
export interface TrojanNodeConfig extends TlsNodeConfig {
|
|
234
|
-
readonly type: NodeTypeEnum.Trojan;
|
|
235
|
-
readonly password: string;
|
|
236
|
-
readonly 'udp-relay'?: boolean;
|
|
237
|
-
readonly network?: 'tcp' | 'ws';
|
|
238
|
-
readonly wsPath?: string;
|
|
239
|
-
readonly wsHeaders?: Record<string, string>;
|
|
240
|
-
}
|
|
241
|
-
export interface TuicNodeConfig extends TlsNodeConfig {
|
|
242
|
-
readonly type: NodeTypeEnum.Tuic;
|
|
243
|
-
readonly token: string;
|
|
244
|
-
readonly 'udp-relay'?: boolean;
|
|
245
|
-
}
|
|
246
|
-
export interface Socks5NodeConfig extends SimpleNodeConfig {
|
|
247
|
-
readonly type: NodeTypeEnum.Socks5;
|
|
248
|
-
readonly hostname: string;
|
|
249
|
-
readonly port: number | string;
|
|
250
|
-
readonly username?: string;
|
|
251
|
-
readonly password?: string;
|
|
252
|
-
readonly tls?: boolean;
|
|
253
|
-
readonly skipCertVerify?: boolean;
|
|
254
|
-
readonly udpRelay?: boolean;
|
|
255
|
-
readonly sni?: string;
|
|
256
|
-
readonly clientCert?: string;
|
|
257
|
-
}
|
|
258
|
-
export interface SimpleNodeConfig {
|
|
259
|
-
readonly type: NodeTypeEnum;
|
|
260
|
-
nodeName: string;
|
|
261
|
-
enable?: boolean;
|
|
262
|
-
tfo?: boolean;
|
|
263
|
-
mptcp?: boolean;
|
|
264
|
-
shadowTls?: {
|
|
265
|
-
password: string;
|
|
266
|
-
sni?: string;
|
|
267
|
-
version?: string;
|
|
268
|
-
};
|
|
93
|
+
export type HttpNodeConfig = z.infer<typeof HttpNodeConfigValidator> & SurgioInternals;
|
|
94
|
+
export type HttpsNodeConfig = z.infer<typeof HttpsNodeConfigValidator> & SurgioInternals;
|
|
95
|
+
export type TrojanNodeConfig = z.infer<typeof TrojanNodeConfigValidator> & SurgioInternals;
|
|
96
|
+
export type ShadowsocksNodeConfig = z.infer<typeof ShadowsocksNodeConfigValidator> & SurgioInternals;
|
|
97
|
+
export type ShadowsocksrNodeConfig = z.infer<typeof ShadowsocksrNodeConfigValidator> & SurgioInternals;
|
|
98
|
+
export type Socks5NodeConfig = z.infer<typeof Socks5NodeConfigValidator> & SurgioInternals;
|
|
99
|
+
export type SnellNodeConfig = z.infer<typeof SnellNodeConfigValidator> & SurgioInternals;
|
|
100
|
+
export type VmessNodeConfig = z.infer<typeof VmessNodeConfigValidator> & SurgioInternals;
|
|
101
|
+
export type TuicNodeConfig = z.infer<typeof TuicNodeConfigValidator> & SurgioInternals;
|
|
102
|
+
export type WireguardNodeConfig = z.infer<typeof WireguardNodeConfigValidator> & SurgioInternals;
|
|
103
|
+
export interface SurgioInternals {
|
|
269
104
|
binPath?: string;
|
|
270
105
|
localPort?: number;
|
|
271
106
|
surgeConfig?: CommandConfig['surgeConfig'];
|
|
@@ -274,26 +109,6 @@ export interface SimpleNodeConfig {
|
|
|
274
109
|
surfboardConfig?: CommandConfig['surfboardConfig'];
|
|
275
110
|
hostnameIp?: ReadonlyArray<string>;
|
|
276
111
|
provider?: Provider;
|
|
277
|
-
underlyingProxy?: string;
|
|
278
|
-
testUrl?: string;
|
|
279
|
-
}
|
|
280
|
-
export interface TlsNodeConfig extends SimpleNodeConfig {
|
|
281
|
-
readonly hostname: string;
|
|
282
|
-
readonly port: number | string;
|
|
283
|
-
readonly tls13?: boolean;
|
|
284
|
-
readonly skipCertVerify?: boolean;
|
|
285
|
-
readonly sni?: string;
|
|
286
|
-
readonly alpn?: ReadonlyArray<string>;
|
|
287
|
-
readonly serverCertFingerprintSha256?: string;
|
|
288
|
-
}
|
|
289
|
-
export interface PlainObject {
|
|
290
|
-
readonly [name: string]: any;
|
|
291
|
-
}
|
|
292
|
-
export interface PlainObjectOf<T> {
|
|
293
|
-
readonly [name: string]: T;
|
|
294
|
-
}
|
|
295
|
-
export interface CreateServerOptions {
|
|
296
|
-
readonly cwd?: string;
|
|
297
112
|
}
|
|
298
113
|
export interface SubscriptionUserinfo {
|
|
299
114
|
readonly upload: number;
|
|
@@ -301,16 +116,7 @@ export interface SubscriptionUserinfo {
|
|
|
301
116
|
readonly total: number;
|
|
302
117
|
readonly expire: number;
|
|
303
118
|
}
|
|
304
|
-
export
|
|
305
|
-
export
|
|
306
|
-
export
|
|
307
|
-
|
|
308
|
-
readonly supportSort?: boolean;
|
|
309
|
-
}
|
|
310
|
-
export declare type PossibleNodeConfigType = HttpsNodeConfig | HttpNodeConfig | ShadowsocksNodeConfig | ShadowsocksrNodeConfig | SnellNodeConfig | VmessNodeConfig | TrojanNodeConfig | Socks5NodeConfig | TuicNodeConfig;
|
|
311
|
-
export declare type ProxyGroupModifier = (nodeList: ReadonlyArray<PossibleNodeConfigType>, filters: PlainObjectOf<NodeNameFilterType | SortedNodeNameFilterType>) => ReadonlyArray<{
|
|
312
|
-
readonly name: string;
|
|
313
|
-
readonly type: 'select' | 'url-test' | 'fallback' | 'load-balance';
|
|
314
|
-
readonly proxies?: ReadonlyArray<string>;
|
|
315
|
-
readonly filter?: NodeNameFilterType;
|
|
316
|
-
}>;
|
|
119
|
+
export type NodeFilterType = z.infer<typeof NodeFilterTypeValidator>;
|
|
120
|
+
export type SortedNodeFilterType = z.infer<typeof SortedNodeFilterTypeValidator>;
|
|
121
|
+
export type PossibleNodeConfigType = HttpsNodeConfig | HttpNodeConfig | ShadowsocksNodeConfig | ShadowsocksrNodeConfig | SnellNodeConfig | VmessNodeConfig | TrojanNodeConfig | Socks5NodeConfig | TuicNodeConfig | WireguardNodeConfig;
|
|
122
|
+
export type PossibleProviderConfigType = BlackSSLProviderConfig | ClashProviderConfig | CustomProviderConfig | ShadowsocksJsonSubscribeProviderConfig | ShadowsocksrSubscribeProviderConfig | ShadowsocksSubscribeProviderConfig | SsdProviderConfig | TrojanProviderConfig | V2rayNSubscribeProviderConfig;
|
package/build/types.js
CHANGED
|
@@ -12,6 +12,7 @@ var NodeTypeEnum;
|
|
|
12
12
|
NodeTypeEnum["Trojan"] = "trojan";
|
|
13
13
|
NodeTypeEnum["Socks5"] = "socks5";
|
|
14
14
|
NodeTypeEnum["Tuic"] = "tuic";
|
|
15
|
+
NodeTypeEnum["Wireguard"] = "wireguard";
|
|
15
16
|
})(NodeTypeEnum = exports.NodeTypeEnum || (exports.NodeTypeEnum = {}));
|
|
16
17
|
var SupportProviderEnum;
|
|
17
18
|
(function (SupportProviderEnum) {
|
|
@@ -25,4 +26,4 @@ var SupportProviderEnum;
|
|
|
25
26
|
SupportProviderEnum["Ssd"] = "ssd";
|
|
26
27
|
SupportProviderEnum["Trojan"] = "trojan";
|
|
27
28
|
})(SupportProviderEnum = exports.SupportProviderEnum || (exports.SupportProviderEnum = {}));
|
|
28
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAsBA,IAAY,YAWX;AAXD,WAAY,YAAY;IACtB,+BAAe,CAAA;IACf,6BAAa,CAAA;IACb,2CAA2B,CAAA;IAC3B,6CAA6B,CAAA;IAC7B,+BAAe,CAAA;IACf,+BAAe,CAAA;IACf,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,6BAAa,CAAA;IACb,uCAAuB,CAAA;AACzB,CAAC,EAXW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAWvB;AAED,IAAY,mBAUX;AAVD,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,wCAAiB,CAAA;IACjB,qEAA8C,CAAA;IAC9C,uEAAgD,CAAA;IAChD,8EAAuD,CAAA;IACvD,2DAAoC,CAAA;IACpC,4CAAqB,CAAA;IACrB,kCAAW,CAAA;IACX,wCAAiB,CAAA;AACnB,CAAC,EAVW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAU9B"}
|
package/build/utils/cache.js
CHANGED
|
@@ -6,49 +6,51 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.cleanCaches = exports.RedisCache = exports.SubscriptionCache = exports.ConfigCache = void 0;
|
|
7
7
|
const node_cache_1 = __importDefault(require("node-cache"));
|
|
8
8
|
const env_flag_1 = require("./env-flag");
|
|
9
|
-
const index_1 = require("./index");
|
|
10
9
|
const redis_1 = __importDefault(require("../redis"));
|
|
10
|
+
const time_1 = require("./time");
|
|
11
11
|
exports.ConfigCache = new node_cache_1.default({
|
|
12
|
-
stdTTL: (0,
|
|
12
|
+
stdTTL: (0, time_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
|
|
13
13
|
maxKeys: 300,
|
|
14
14
|
useClones: false,
|
|
15
15
|
});
|
|
16
16
|
exports.SubscriptionCache = new node_cache_1.default({
|
|
17
|
-
stdTTL: (0,
|
|
17
|
+
stdTTL: (0, time_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
|
|
18
18
|
maxKeys: 300,
|
|
19
19
|
useClones: false,
|
|
20
20
|
});
|
|
21
21
|
class RedisCache {
|
|
22
|
+
namespace;
|
|
23
|
+
redisClient;
|
|
22
24
|
constructor(namespace) {
|
|
23
25
|
this.namespace = namespace;
|
|
24
|
-
this.setCache = async (key, value, { ttl } = {}) => {
|
|
25
|
-
const storeValue = JSON.stringify(value);
|
|
26
|
-
if (typeof ttl === 'undefined') {
|
|
27
|
-
await this.redisClient.set(this.getCacheKey(key), storeValue);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
await this.redisClient.set(this.getCacheKey(key), storeValue, 'EX', ttl);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
this.getCache = async (key) => {
|
|
34
|
-
const value = await this.redisClient.get(this.getCacheKey(key));
|
|
35
|
-
if (!value) {
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
return JSON.parse(value);
|
|
39
|
-
};
|
|
40
|
-
this.hasCache = async (key) => {
|
|
41
|
-
const value = await this.redisClient.exists(this.getCacheKey(key));
|
|
42
|
-
return !!value;
|
|
43
|
-
};
|
|
44
|
-
this.deleteCache = async (key) => {
|
|
45
|
-
await this.redisClient.del(this.getCacheKey(key));
|
|
46
|
-
};
|
|
47
26
|
this.redisClient = redis_1.default.getRedis();
|
|
48
27
|
}
|
|
49
28
|
getCacheKey(key) {
|
|
50
29
|
return this.namespace ? `${this.namespace}:${key}` : key;
|
|
51
30
|
}
|
|
31
|
+
setCache = async (key, value, { ttl } = {}) => {
|
|
32
|
+
const storeValue = JSON.stringify(value);
|
|
33
|
+
if (typeof ttl === 'undefined') {
|
|
34
|
+
await this.redisClient.set(this.getCacheKey(key), storeValue);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
await this.redisClient.set(this.getCacheKey(key), storeValue, 'EX', ttl);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
getCache = async (key) => {
|
|
41
|
+
const value = await this.redisClient.get(this.getCacheKey(key));
|
|
42
|
+
if (!value) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
return JSON.parse(value);
|
|
46
|
+
};
|
|
47
|
+
hasCache = async (key) => {
|
|
48
|
+
const value = await this.redisClient.exists(this.getCacheKey(key));
|
|
49
|
+
return !!value;
|
|
50
|
+
};
|
|
51
|
+
deleteCache = async (key) => {
|
|
52
|
+
await this.redisClient.del(this.getCacheKey(key));
|
|
53
|
+
};
|
|
52
54
|
}
|
|
53
55
|
exports.RedisCache = RedisCache;
|
|
54
56
|
// istanbul ignore next
|
|
@@ -60,4 +62,4 @@ const cleanCaches = async () => {
|
|
|
60
62
|
}
|
|
61
63
|
};
|
|
62
64
|
exports.cleanCaches = cleanCaches;
|
|
63
|
-
//# sourceMappingURL=
|
|
65
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";;;;;;AACA,4DAAkC;AAGlC,yCAAmD;AACnD,qDAA4B;AAC5B,iCAAoC;AAOvB,QAAA,WAAW,GAAG,IAAI,oBAAS,CAAC;IACvC,MAAM,EAAE,IAAA,kBAAW,EAAC,IAAA,iCAAsB,GAAE,CAAC;IAC7C,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,KAAK;CACjB,CAAC,CAAA;AAEW,QAAA,iBAAiB,GAAG,IAAI,oBAAS,CAAC;IAC7C,MAAM,EAAE,IAAA,kBAAW,EAAC,IAAA,iCAAsB,GAAE,CAAC;IAC7C,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,KAAK;CACjB,CAAC,CAAA;AAEF,MAAa,UAAU;IAGF;IAFX,WAAW,CAAO;IAE1B,YAAmB,SAAkB;QAAlB,cAAS,GAAT,SAAS,CAAS;QACnC,IAAI,CAAC,WAAW,GAAG,eAAK,CAAC,QAAQ,EAAE,CAAA;IACrC,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IAC1D,CAAC;IAED,QAAQ,GAAG,KAAK,EACd,GAAW,EACX,KAAc,EACd,EAAE,GAAG,KAAuB,EAAE,EAC9B,EAAE;QACF,MAAM,UAAU,GAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;YAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAA;SAC9D;aAAM;YACL,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;SACzE;IACH,CAAC,CAAA;IAED,QAAQ,GAAG,KAAK,EAAK,GAAW,EAA0B,EAAE;QAC1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAE/D,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,SAAS,CAAA;SACjB;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAA;IAC/B,CAAC,CAAA;IAED,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAElE,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC,CAAA;IAED,WAAW,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;QAClC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IACnD,CAAC,CAAA;CACF;AA5CD,gCA4CC;AAED,uBAAuB;AAChB,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;IACpC,mBAAW,CAAC,QAAQ,EAAE,CAAA;IACtB,yBAAiB,CAAC,QAAQ,EAAE,CAAA;IAE5B,IAAI,eAAK,CAAC,QAAQ,EAAE,EAAE;QACpB,MAAM,eAAK,CAAC,UAAU,EAAE,CAAA;KACzB;AACH,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB"}
|