surgio 2.25.3 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/bin/dev +17 -0
  2. package/bin/dev.cmd +3 -0
  3. package/bin/run +8 -0
  4. package/bin/run.cmd +3 -0
  5. package/build/base-command.d.ts +18 -0
  6. package/build/base-command.js +74 -0
  7. package/build/commands/check.d.ts +10 -0
  8. package/build/commands/check.js +88 -0
  9. package/build/commands/clean-cache.d.ts +6 -0
  10. package/build/commands/clean-cache.js +29 -0
  11. package/build/commands/doctor.d.ts +6 -0
  12. package/build/commands/doctor.js +21 -0
  13. package/build/commands/generate.d.ts +7 -0
  14. package/build/commands/generate.js +93 -0
  15. package/build/commands/lint.d.ts +6 -0
  16. package/build/commands/lint.js +36 -0
  17. package/build/commands/new.d.ts +6 -0
  18. package/build/commands/new.js +36 -0
  19. package/build/commands/subscriptions.d.ts +7 -0
  20. package/build/commands/subscriptions.js +96 -0
  21. package/build/commands/upload.d.ts +6 -0
  22. package/build/commands/upload.js +87 -0
  23. package/build/config.d.ts +6 -0
  24. package/build/config.js +151 -0
  25. package/build/constant/constant.d.ts +17 -16
  26. package/build/constant/constant.js +3 -2
  27. package/build/constant/env.js +1 -1
  28. package/build/constant/error.js +1 -1
  29. package/build/constant/index.js +1 -1
  30. package/build/generate.d.ts +0 -1
  31. package/build/generate.js +3 -65
  32. package/build/generator/artifact.d.ts +299 -64
  33. package/build/generator/artifact.js +90 -92
  34. package/build/generator/index.d.ts +2 -0
  35. package/build/generator/index.js +19 -0
  36. package/build/generator/template.js +2 -6
  37. package/build/hooks/init.d.ts +3 -0
  38. package/build/hooks/init.js +32 -0
  39. package/build/index.d.ts +55 -53
  40. package/build/index.js +13 -51
  41. package/build/internal.d.ts +4 -0
  42. package/build/internal.js +21 -0
  43. package/build/misc/deprecation.d.ts +1 -6
  44. package/build/misc/deprecation.js +1 -8
  45. package/build/misc/flag_cn.js +1 -1
  46. package/build/provider/BlackSSLProvider.d.ts +4 -3
  47. package/build/provider/BlackSSLProvider.js +24 -16
  48. package/build/provider/ClashProvider.d.ts +7 -10
  49. package/build/provider/ClashProvider.js +165 -76
  50. package/build/provider/CustomProvider.d.ts +4 -3
  51. package/build/provider/CustomProvider.js +81 -50
  52. package/build/provider/Provider.d.ts +9 -22
  53. package/build/provider/Provider.js +31 -69
  54. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +4 -5
  55. package/build/provider/ShadowsocksJsonSubscribeProvider.js +27 -21
  56. package/build/provider/ShadowsocksSubscribeProvider.d.ts +5 -8
  57. package/build/provider/ShadowsocksSubscribeProvider.js +30 -27
  58. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +5 -8
  59. package/build/provider/ShadowsocksrSubscribeProvider.js +30 -23
  60. package/build/provider/SsdProvider.d.ts +5 -8
  61. package/build/provider/SsdProvider.js +56 -39
  62. package/build/provider/TrojanProvider.d.ts +5 -8
  63. package/build/provider/TrojanProvider.js +37 -30
  64. package/build/provider/V2rayNSubscribeProvider.d.ts +4 -5
  65. package/build/provider/V2rayNSubscribeProvider.js +61 -33
  66. package/build/provider/index.d.ts +16 -2
  67. package/build/provider/index.js +12 -5
  68. package/build/provider/types.d.ts +10 -1
  69. package/build/provider/types.js +1 -1
  70. package/build/redis.js +1 -1
  71. package/build/types.d.ts +45 -236
  72. package/build/types.js +2 -1
  73. package/build/utils/cache.js +29 -27
  74. package/build/utils/clash.d.ts +204 -3
  75. package/build/utils/clash.js +247 -110
  76. package/build/utils/configurables.d.ts +71 -0
  77. package/build/utils/configurables.js +8 -0
  78. package/build/utils/constant.js +1 -1
  79. package/build/utils/dns.js +1 -1
  80. package/build/utils/doctor.d.ts +2 -0
  81. package/build/utils/doctor.js +38 -0
  82. package/build/utils/env-flag.js +2 -2
  83. package/build/utils/error-helper.d.ts +2 -2
  84. package/build/utils/error-helper.js +30 -16
  85. package/build/utils/filter.d.ts +46 -43
  86. package/build/utils/filter.js +51 -30
  87. package/build/utils/flag.js +1 -1
  88. package/build/utils/http-client.js +38 -5
  89. package/build/utils/index.d.ts +13 -21
  90. package/build/utils/index.js +98 -117
  91. package/build/utils/linter.js +5 -2
  92. package/build/utils/loon.d.ts +3 -2
  93. package/build/utils/loon.js +67 -5
  94. package/build/utils/quantumult.d.ts +3 -3
  95. package/build/utils/quantumult.js +190 -258
  96. package/build/utils/relayable-url.js +1 -1
  97. package/build/utils/remote-snippet.js +3 -4
  98. package/build/utils/ss.js +27 -17
  99. package/build/utils/ssr.js +3 -4
  100. package/build/utils/subscription.js +7 -7
  101. package/build/utils/surfboard.d.ts +3 -2
  102. package/build/utils/surfboard.js +142 -126
  103. package/build/utils/surge.d.ts +4 -2
  104. package/build/utils/surge.js +328 -300
  105. package/build/utils/time.d.ts +1 -0
  106. package/build/utils/time.js +6 -0
  107. package/build/utils/tmp-helper.js +8 -1
  108. package/build/utils/trojan.js +19 -11
  109. package/build/utils/v2ray.js +2 -2
  110. package/build/validators/artifact.d.ts +35 -0
  111. package/build/validators/artifact.js +17 -0
  112. package/build/validators/common.d.ts +121 -0
  113. package/build/validators/common.js +52 -0
  114. package/build/validators/filter.d.ts +10 -0
  115. package/build/validators/filter.js +15 -0
  116. package/build/validators/hooks.d.ts +7 -0
  117. package/build/validators/hooks.js +8 -0
  118. package/build/validators/http.d.ts +137 -0
  119. package/build/validators/http.js +19 -0
  120. package/build/validators/index.d.ts +15 -0
  121. package/build/validators/index.js +32 -0
  122. package/build/validators/provider.d.ts +109 -0
  123. package/build/validators/provider.js +41 -0
  124. package/build/validators/shadowsocks.d.ts +86 -0
  125. package/build/validators/shadowsocks.js +29 -0
  126. package/build/validators/shadowsocksr.d.ts +77 -0
  127. package/build/validators/shadowsocksr.js +19 -0
  128. package/build/validators/snell.d.ts +71 -0
  129. package/build/validators/snell.js +20 -0
  130. package/build/validators/socks5.d.ts +77 -0
  131. package/build/validators/socks5.js +19 -0
  132. package/build/validators/surgio-config.d.ts +307 -0
  133. package/build/validators/surgio-config.js +95 -0
  134. package/build/validators/trojan.d.ts +86 -0
  135. package/build/validators/trojan.js +15 -0
  136. package/build/validators/tuic.d.ts +301 -0
  137. package/build/validators/tuic.js +21 -0
  138. package/build/validators/vmess.d.ts +92 -0
  139. package/build/validators/vmess.js +29 -0
  140. package/build/validators/wireguard.d.ts +123 -0
  141. package/build/validators/wireguard.js +26 -0
  142. package/config.d.ts +1 -0
  143. package/config.js +1 -0
  144. package/constant.d.ts +1 -0
  145. package/constant.js +1 -0
  146. package/generator.d.ts +1 -0
  147. package/generator.js +1 -0
  148. package/hygen-template/artifact/new/index.js +15 -15
  149. package/hygen-template/provider/new/index.js +8 -7
  150. package/hygen-template/template/new/index.js +3 -3
  151. package/index.d.ts +1 -0
  152. package/index.js +1 -0
  153. package/internal.d.ts +1 -0
  154. package/internal.js +1 -0
  155. package/package.json +112 -75
  156. package/provider.d.ts +1 -0
  157. package/provider.js +1 -0
  158. package/utils.d.ts +1 -0
  159. package/utils.js +1 -0
  160. package/bin/surgio.js +0 -8
  161. package/build/command/check.d.ts +0 -9
  162. package/build/command/check.js +0 -79
  163. package/build/command/clean-cache.d.ts +0 -8
  164. package/build/command/clean-cache.js +0 -43
  165. package/build/command/doctor.d.ts +0 -9
  166. package/build/command/doctor.js +0 -63
  167. package/build/command/generate.d.ts +0 -8
  168. package/build/command/generate.js +0 -64
  169. package/build/command/lint.d.ts +0 -7
  170. package/build/command/lint.js +0 -42
  171. package/build/command/new.d.ts +0 -7
  172. package/build/command/new.js +0 -44
  173. package/build/command/subscriptions.d.ts +0 -10
  174. package/build/command/subscriptions.js +0 -87
  175. package/build/command/upload.d.ts +0 -9
  176. package/build/command/upload.js +0 -101
  177. package/build/utils/command.d.ts +0 -2
  178. package/build/utils/command.js +0 -23
  179. package/build/utils/config.d.ts +0 -6
  180. package/build/utils/config.js +0 -245
  181. package/build/utils/patch-proxy.d.ts +0 -1
  182. package/build/utils/patch-proxy.js +0 -19
package/build/types.d.ts CHANGED
@@ -1,4 +1,7 @@
1
- import Provider from './provider/Provider';
1
+ import { z } from 'zod';
2
+ import { Promisable } from 'type-fest';
3
+ import type { Provider, GetNodeListParams } from './provider';
4
+ import { WireguardNodeConfigValidator, ProviderValidator, ShadowsocksNodeConfigValidator, HttpNodeConfigValidator, HttpsNodeConfigValidator, TrojanNodeConfigValidator, ShadowsocksrNodeConfigValidator, Socks5NodeConfigValidator, VmessNodeConfigValidator, SnellNodeConfigValidator, TuicNodeConfigValidator, SurgioConfigValidator, ArtifactValidator, RemoteSnippetValidator, NodeFilterTypeValidator, SortedNodeFilterTypeValidator } from './validators';
2
5
  export declare enum NodeTypeEnum {
3
6
  HTTPS = "https",
4
7
  HTTP = "http",
@@ -8,7 +11,8 @@ export declare enum NodeTypeEnum {
8
11
  Vmess = "vmess",
9
12
  Trojan = "trojan",
10
13
  Socks5 = "socks5",
11
- Tuic = "tuic"
14
+ Tuic = "tuic",
15
+ Wireguard = "wireguard"
12
16
  }
13
17
  export declare enum SupportProviderEnum {
14
18
  Clash = "clash",
@@ -21,126 +25,44 @@ export declare enum SupportProviderEnum {
21
25
  Ssd = "ssd",
22
26
  Trojan = "trojan"
23
27
  }
24
- export interface CommandConfig {
28
+ export type CommandConfigBeforeNormalize = z.infer<typeof SurgioConfigValidator>;
29
+ export type CommandConfig = CommandConfigBeforeNormalize & {
25
30
  publicUrl: string;
26
- readonly output: string;
27
- readonly artifacts: ReadonlyArray<ArtifactConfig>;
28
- readonly remoteSnippets?: ReadonlyArray<RemoteSnippetConfig>;
29
- readonly urlBase: string;
30
- readonly providerDir: string;
31
- readonly templateDir: string;
32
- readonly configDir: string;
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
- }
31
+ output: string;
32
+ urlBase: string;
33
+ providerDir: string;
34
+ templateDir: string;
35
+ configDir: string;
36
+ };
37
+ export type RemoteSnippetConfig = z.infer<typeof RemoteSnippetValidator>;
90
38
  export interface RemoteSnippet extends RemoteSnippetConfig {
91
39
  readonly main: (...args: string[]) => string;
92
40
  readonly text: string;
93
41
  }
94
- export interface ArtifactConfig {
95
- readonly name: string;
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
- }
42
+ export type ArtifactConfig = z.infer<typeof ArtifactValidator>;
43
+ export type ProviderConfig = z.infer<typeof ProviderValidator>;
127
44
  export interface BlackSSLProviderConfig extends ProviderConfig {
45
+ readonly type: SupportProviderEnum.BlackSSL;
128
46
  readonly username: string;
129
47
  readonly password: string;
130
48
  }
131
49
  export interface ShadowsocksJsonSubscribeProviderConfig extends ProviderConfig {
50
+ readonly type: SupportProviderEnum.ShadowsocksJsonSubscribe;
132
51
  readonly url: string;
133
52
  readonly udpRelay?: boolean;
134
53
  }
135
54
  export interface ShadowsocksSubscribeProviderConfig extends ProviderConfig {
55
+ readonly type: SupportProviderEnum.ShadowsocksSubscribe;
136
56
  readonly url: string;
137
57
  readonly udpRelay?: boolean;
138
58
  }
139
59
  export interface ShadowsocksrSubscribeProviderConfig extends ProviderConfig {
60
+ readonly type: SupportProviderEnum.ShadowsocksrSubscribe;
140
61
  readonly url: string;
141
62
  readonly udpRelay?: boolean;
142
63
  }
143
64
  export interface V2rayNSubscribeProviderConfig extends ProviderConfig {
65
+ readonly type: SupportProviderEnum.V2rayNSubscribe;
144
66
  readonly url: string;
145
67
  readonly compatibleMode?: boolean;
146
68
  readonly skipCertVerify?: boolean;
@@ -148,124 +70,38 @@ export interface V2rayNSubscribeProviderConfig extends ProviderConfig {
148
70
  readonly tls13?: boolean;
149
71
  }
150
72
  export interface ClashProviderConfig extends ProviderConfig {
73
+ readonly type: SupportProviderEnum.Clash;
151
74
  readonly url: string;
152
75
  readonly udpRelay?: boolean;
153
76
  readonly tls13?: boolean;
154
77
  }
155
78
  export interface SsdProviderConfig extends ProviderConfig {
79
+ readonly type: SupportProviderEnum.Ssd;
156
80
  readonly url: string;
157
81
  readonly udpRelay?: boolean;
158
82
  }
83
+ export type AsyncCustomProviderNodeList = (params: GetNodeListParams) => Promise<ReadonlyArray<PossibleNodeConfigType>>;
159
84
  export interface CustomProviderConfig extends ProviderConfig {
160
- readonly nodeList: ReadonlyArray<any>;
85
+ readonly type: SupportProviderEnum.Custom;
86
+ readonly nodeList: ReadonlyArray<PossibleNodeConfigType> | AsyncCustomProviderNodeList;
161
87
  }
162
88
  export interface TrojanProviderConfig extends ProviderConfig {
89
+ readonly type: SupportProviderEnum.Trojan;
163
90
  readonly url: string;
164
91
  readonly udpRelay?: boolean;
165
92
  readonly tls13?: boolean;
166
93
  }
167
- export interface HttpNodeConfig extends SimpleNodeConfig {
168
- readonly type: NodeTypeEnum.HTTP;
169
- readonly hostname: string;
170
- readonly port: number | string;
171
- readonly username: string;
172
- readonly password: string;
173
- }
174
- export interface HttpsNodeConfig extends TlsNodeConfig {
175
- readonly type: NodeTypeEnum.HTTPS;
176
- readonly username: string;
177
- readonly password: string;
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
- };
94
+ export type HttpNodeConfig = z.infer<typeof HttpNodeConfigValidator> & SurgioInternals;
95
+ export type HttpsNodeConfig = z.infer<typeof HttpsNodeConfigValidator> & SurgioInternals;
96
+ export type TrojanNodeConfig = z.infer<typeof TrojanNodeConfigValidator> & SurgioInternals;
97
+ export type ShadowsocksNodeConfig = z.infer<typeof ShadowsocksNodeConfigValidator> & SurgioInternals;
98
+ export type ShadowsocksrNodeConfig = z.infer<typeof ShadowsocksrNodeConfigValidator> & SurgioInternals;
99
+ export type Socks5NodeConfig = z.infer<typeof Socks5NodeConfigValidator> & SurgioInternals;
100
+ export type SnellNodeConfig = z.infer<typeof SnellNodeConfigValidator> & SurgioInternals;
101
+ export type VmessNodeConfig = z.infer<typeof VmessNodeConfigValidator> & SurgioInternals;
102
+ export type TuicNodeConfig = z.infer<typeof TuicNodeConfigValidator> & SurgioInternals;
103
+ export type WireguardNodeConfig = z.infer<typeof WireguardNodeConfigValidator> & SurgioInternals;
104
+ export interface SurgioInternals {
269
105
  binPath?: string;
270
106
  localPort?: number;
271
107
  surgeConfig?: CommandConfig['surgeConfig'];
@@ -274,26 +110,6 @@ export interface SimpleNodeConfig {
274
110
  surfboardConfig?: CommandConfig['surfboardConfig'];
275
111
  hostnameIp?: ReadonlyArray<string>;
276
112
  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
113
  }
298
114
  export interface SubscriptionUserinfo {
299
115
  readonly upload: number;
@@ -301,16 +117,9 @@ export interface SubscriptionUserinfo {
301
117
  readonly total: number;
302
118
  readonly expire: number;
303
119
  }
304
- export declare type NodeFilterType = (nodeConfig: PossibleNodeConfigType) => boolean;
305
- export declare type NodeNameFilterType = (simpleNodeConfig: SimpleNodeConfig) => boolean;
306
- export interface SortedNodeNameFilterType {
307
- readonly filter: <T>(nodeList: ReadonlyArray<T & SimpleNodeConfig>) => ReadonlyArray<T & SimpleNodeConfig>;
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
- }>;
120
+ export type NodeFilterType = z.infer<typeof NodeFilterTypeValidator>;
121
+ export type SortedNodeFilterType = z.infer<typeof SortedNodeFilterTypeValidator>;
122
+ export type PossibleNodeConfigType = HttpsNodeConfig | HttpNodeConfig | ShadowsocksNodeConfig | ShadowsocksrNodeConfig | SnellNodeConfig | VmessNodeConfig | TrojanNodeConfig | Socks5NodeConfig | TuicNodeConfig | WireguardNodeConfig;
123
+ export type PossibleProviderConfigType = BlackSSLProviderConfig | ClashProviderConfig | CustomProviderConfig | ShadowsocksJsonSubscribeProviderConfig | ShadowsocksrSubscribeProviderConfig | ShadowsocksSubscribeProviderConfig | SsdProviderConfig | TrojanProviderConfig | V2rayNSubscribeProviderConfig;
124
+ export type ProviderConfigFactory = () => Promisable<PossibleProviderConfigType>;
125
+ export type ThenArg<T> = T extends PromiseLike<infer U> ? U : T;
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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsSUFBWSxZQVVYO0FBVkQsV0FBWSxZQUFZO0lBQ3RCLCtCQUFlLENBQUE7SUFDZiw2QkFBYSxDQUFBO0lBQ2IsMkNBQTJCLENBQUE7SUFDM0IsNkNBQTZCLENBQUE7SUFDN0IsK0JBQWUsQ0FBQTtJQUNmLCtCQUFlLENBQUE7SUFDZixpQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBaUIsQ0FBQTtJQUNqQiw2QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQVZXLFlBQVksR0FBWixvQkFBWSxLQUFaLG9CQUFZLFFBVXZCO0FBRUQsSUFBWSxtQkFVWDtBQVZELFdBQVksbUJBQW1CO0lBQzdCLHNDQUFlLENBQUE7SUFDZix3Q0FBaUIsQ0FBQTtJQUNqQixxRUFBOEMsQ0FBQTtJQUM5Qyx1RUFBZ0QsQ0FBQTtJQUNoRCw4RUFBdUQsQ0FBQTtJQUN2RCwyREFBb0MsQ0FBQTtJQUNwQyw0Q0FBcUIsQ0FBQTtJQUNyQixrQ0FBVyxDQUFBO0lBQ1gsd0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVZXLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBVTlCIn0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUJBLElBQVksWUFXWDtBQVhELFdBQVksWUFBWTtJQUN0QiwrQkFBZSxDQUFBO0lBQ2YsNkJBQWEsQ0FBQTtJQUNiLDJDQUEyQixDQUFBO0lBQzNCLDZDQUE2QixDQUFBO0lBQzdCLCtCQUFlLENBQUE7SUFDZiwrQkFBZSxDQUFBO0lBQ2YsaUNBQWlCLENBQUE7SUFDakIsaUNBQWlCLENBQUE7SUFDakIsNkJBQWEsQ0FBQTtJQUNiLHVDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFYVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQVd2QjtBQUVELElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3QixzQ0FBZSxDQUFBO0lBQ2Ysd0NBQWlCLENBQUE7SUFDakIscUVBQThDLENBQUE7SUFDOUMsdUVBQWdELENBQUE7SUFDaEQsOEVBQXVELENBQUE7SUFDdkQsMkRBQW9DLENBQUE7SUFDcEMsNENBQXFCLENBQUE7SUFDckIsa0NBQVcsQ0FBQTtJQUNYLHdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQVU5QiJ9
@@ -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, index_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
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, index_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNERBQW1DO0FBR25DLHlDQUFvRDtBQUNwRCxtQ0FBc0M7QUFDdEMscURBQTZCO0FBT2hCLFFBQUEsV0FBVyxHQUFHLElBQUksb0JBQVMsQ0FBQztJQUN2QyxNQUFNLEVBQUUsSUFBQSxtQkFBVyxFQUFDLElBQUEsaUNBQXNCLEdBQUUsQ0FBQztJQUM3QyxPQUFPLEVBQUUsR0FBRztJQUNaLFNBQVMsRUFBRSxLQUFLO0NBQ2pCLENBQUMsQ0FBQztBQUVVLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxvQkFBUyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxJQUFBLG1CQUFXLEVBQUMsSUFBQSxpQ0FBc0IsR0FBRSxDQUFDO0lBQzdDLE9BQU8sRUFBRSxHQUFHO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDakIsQ0FBQyxDQUFDO0FBRUgsTUFBYSxVQUFVO0lBR3JCLFlBQW1CLFNBQWtCO1FBQWxCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFRckMsYUFBUSxHQUFHLEtBQUssRUFDZCxHQUFXLEVBQ1gsS0FBYyxFQUNkLEVBQUUsR0FBRyxLQUF1QixFQUFFLEVBQzlCLEVBQUU7WUFDRixNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpELElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUM5QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDL0Q7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDMUU7UUFDSCxDQUFDLENBQUM7UUFFRixhQUFRLEdBQUcsS0FBSyxFQUFLLEdBQVcsRUFBMEIsRUFBRTtZQUMxRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVoRSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBTSxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUVGLGFBQVEsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFvQixFQUFFO1lBQ2pELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRW5FLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUM7UUFFRixnQkFBVyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUM7UUF2Q0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0QsQ0FBQztDQW1DRjtBQTVDRCxnQ0E0Q0M7QUFFRCx1QkFBdUI7QUFDaEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDcEMsbUJBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2Qix5QkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUU3QixJQUFJLGVBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNwQixNQUFNLGVBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUMxQjtBQUNILENBQUMsQ0FBQztBQVBXLFFBQUEsV0FBVyxlQU90QiJ9
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNERBQWtDO0FBR2xDLHlDQUFtRDtBQUNuRCxxREFBNEI7QUFDNUIsaUNBQW9DO0FBT3ZCLFFBQUEsV0FBVyxHQUFHLElBQUksb0JBQVMsQ0FBQztJQUN2QyxNQUFNLEVBQUUsSUFBQSxrQkFBVyxFQUFDLElBQUEsaUNBQXNCLEdBQUUsQ0FBQztJQUM3QyxPQUFPLEVBQUUsR0FBRztJQUNaLFNBQVMsRUFBRSxLQUFLO0NBQ2pCLENBQUMsQ0FBQTtBQUVXLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxvQkFBUyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUMsSUFBQSxpQ0FBc0IsR0FBRSxDQUFDO0lBQzdDLE9BQU8sRUFBRSxHQUFHO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDakIsQ0FBQyxDQUFBO0FBRUYsTUFBYSxVQUFVO0lBR0Y7SUFGWCxXQUFXLENBQU87SUFFMUIsWUFBbUIsU0FBa0I7UUFBbEIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUMxRCxDQUFDO0lBRUQsUUFBUSxHQUFHLEtBQUssRUFDZCxHQUFXLEVBQ1gsS0FBYyxFQUNkLEVBQUUsR0FBRyxLQUF1QixFQUFFLEVBQzlCLEVBQUU7UUFDRixNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWhELElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtTQUM5RDthQUFNO1lBQ0wsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7U0FDekU7SUFDSCxDQUFDLENBQUE7SUFFRCxRQUFRLEdBQUcsS0FBSyxFQUFLLEdBQVcsRUFBMEIsRUFBRTtRQUMxRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUUvRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxTQUFTLENBQUE7U0FDakI7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFNLENBQUE7SUFDL0IsQ0FBQyxDQUFBO0lBRUQsUUFBUSxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQW9CLEVBQUU7UUFDakQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFFbEUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ2hCLENBQUMsQ0FBQTtJQUVELFdBQVcsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDbEMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbkQsQ0FBQyxDQUFBO0NBQ0Y7QUE1Q0QsZ0NBNENDO0FBRUQsdUJBQXVCO0FBQ2hCLE1BQU0sV0FBVyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ3BDLG1CQUFXLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDdEIseUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUE7SUFFNUIsSUFBSSxlQUFLLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDcEIsTUFBTSxlQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7S0FDekI7QUFDSCxDQUFDLENBQUE7QUFQWSxRQUFBLFdBQVcsZUFPdkIifQ==
@@ -1,3 +1,204 @@
1
- import { NodeFilterType, NodeNameFilterType, PossibleNodeConfigType, SimpleNodeConfig, SortedNodeNameFilterType } from '../types';
2
- export declare const getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeNameFilterType) => ReadonlyArray<any>;
3
- export declare const getClashNodeNames: (list: ReadonlyArray<SimpleNodeConfig>, filter?: NodeNameFilterType | SortedNodeNameFilterType, existingProxies?: ReadonlyArray<string>) => ReadonlyArray<string>;
1
+ import _ from 'lodash';
2
+ import { NodeFilterType, PossibleNodeConfigType, SortedNodeFilterType } from '../types';
3
+ export declare const getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => NonNullable<{
4
+ plugin?: string | undefined;
5
+ readonly 'client-fingerprint'?: string | undefined;
6
+ 'plugin-opts'?: {
7
+ mode: "tls" | "http" | "ws" | "wss";
8
+ host: string | undefined;
9
+ } | {
10
+ host: string | undefined;
11
+ path: string;
12
+ mux: boolean;
13
+ headers: _.Omit<Record<string, string>, "host">;
14
+ 'skip-cert-verify'?: boolean | undefined;
15
+ mode: string;
16
+ tls: boolean;
17
+ } | {
18
+ host?: string | undefined;
19
+ version?: number | undefined;
20
+ password: string;
21
+ mode?: undefined;
22
+ } | undefined;
23
+ readonly type: "ss";
24
+ readonly cipher: string;
25
+ readonly name: string;
26
+ readonly password: string;
27
+ readonly port: string | number;
28
+ readonly server: string;
29
+ readonly udp: boolean;
30
+ readonly obfs?: undefined;
31
+ readonly protocol?: undefined;
32
+ readonly 'obfs-param'?: undefined;
33
+ readonly 'protocol-param'?: undefined;
34
+ readonly username?: undefined;
35
+ readonly tls?: undefined;
36
+ readonly 'skip-cert-verify'?: undefined;
37
+ } | {
38
+ readonly 'ws-opts'?: {
39
+ path: string | undefined;
40
+ headers: {
41
+ host?: string | undefined;
42
+ };
43
+ } | undefined;
44
+ readonly 'skip-cert-verify'?: boolean | undefined;
45
+ readonly tls: boolean;
46
+ readonly network?: "ws" | undefined;
47
+ readonly type: "vmess";
48
+ readonly cipher: "none" | "aes-128-gcm" | "chacha20-ietf-poly1305" | "auto";
49
+ readonly name: string;
50
+ readonly server: string;
51
+ readonly port: string | number;
52
+ readonly udp: boolean;
53
+ readonly uuid: string;
54
+ readonly alterId: string;
55
+ readonly password?: undefined;
56
+ readonly obfs?: undefined;
57
+ readonly protocol?: undefined;
58
+ readonly 'obfs-param'?: undefined;
59
+ readonly 'protocol-param'?: undefined;
60
+ readonly username?: undefined;
61
+ } | {
62
+ readonly type: "ssr";
63
+ readonly name: string;
64
+ readonly server: string;
65
+ readonly port: string | number;
66
+ readonly password: string;
67
+ readonly obfs: string;
68
+ readonly protocol: string;
69
+ readonly cipher: string;
70
+ readonly 'obfs-param': string;
71
+ readonly 'protocol-param': string;
72
+ readonly udp: boolean;
73
+ readonly username?: undefined;
74
+ readonly tls?: undefined;
75
+ readonly 'skip-cert-verify'?: undefined;
76
+ } | {
77
+ readonly version?: string | number | undefined;
78
+ readonly type: "snell";
79
+ readonly name: string;
80
+ readonly server: string;
81
+ readonly port: string | number;
82
+ readonly psk: string;
83
+ readonly 'obfs-opts': {
84
+ readonly host?: string | undefined;
85
+ readonly mode: "tls" | "http" | undefined;
86
+ };
87
+ readonly password?: undefined;
88
+ readonly obfs?: undefined;
89
+ readonly protocol?: undefined;
90
+ readonly cipher?: undefined;
91
+ readonly 'obfs-param'?: undefined;
92
+ readonly 'protocol-param'?: undefined;
93
+ readonly udp?: undefined;
94
+ readonly username?: undefined;
95
+ readonly tls?: undefined;
96
+ readonly 'skip-cert-verify'?: undefined;
97
+ } | {
98
+ readonly type: "http";
99
+ readonly name: string;
100
+ readonly server: string;
101
+ readonly port: string | number;
102
+ readonly username: string;
103
+ readonly password: string;
104
+ readonly tls: true;
105
+ readonly 'skip-cert-verify': boolean;
106
+ readonly obfs?: undefined;
107
+ readonly protocol?: undefined;
108
+ readonly cipher?: undefined;
109
+ readonly 'obfs-param'?: undefined;
110
+ readonly 'protocol-param'?: undefined;
111
+ readonly udp?: undefined;
112
+ } | {
113
+ readonly type: "http";
114
+ readonly name: string;
115
+ readonly server: string;
116
+ readonly port: string | number;
117
+ readonly username: string;
118
+ readonly password: string;
119
+ readonly obfs?: undefined;
120
+ readonly protocol?: undefined;
121
+ readonly cipher?: undefined;
122
+ readonly 'obfs-param'?: undefined;
123
+ readonly 'protocol-param'?: undefined;
124
+ readonly udp?: undefined;
125
+ readonly tls?: undefined;
126
+ readonly 'skip-cert-verify'?: undefined;
127
+ } | {
128
+ readonly network?: string | undefined;
129
+ readonly 'ws-opts'?: {
130
+ path: string;
131
+ headers?: undefined;
132
+ } | undefined;
133
+ readonly 'skip-cert-verify': boolean;
134
+ readonly sni?: string | undefined;
135
+ readonly alpn?: [string, ...string[]] | undefined;
136
+ readonly udp?: true | undefined;
137
+ readonly type: "trojan";
138
+ readonly name: string;
139
+ readonly server: string;
140
+ readonly port: string | number;
141
+ readonly password: string;
142
+ readonly obfs?: undefined;
143
+ readonly protocol?: undefined;
144
+ readonly cipher?: undefined;
145
+ readonly 'obfs-param'?: undefined;
146
+ readonly 'protocol-param'?: undefined;
147
+ readonly username?: undefined;
148
+ readonly tls?: undefined;
149
+ } | {
150
+ readonly udp?: boolean | undefined;
151
+ readonly 'skip-cert-verify'?: boolean | undefined;
152
+ readonly tls?: boolean | undefined;
153
+ readonly password?: string | undefined;
154
+ readonly username?: string | undefined;
155
+ readonly type: "socks5";
156
+ readonly name: string;
157
+ readonly server: string;
158
+ readonly port: string | number;
159
+ readonly obfs?: undefined;
160
+ readonly protocol?: undefined;
161
+ readonly cipher?: undefined;
162
+ readonly 'obfs-param'?: undefined;
163
+ readonly 'protocol-param'?: undefined;
164
+ } | {
165
+ readonly alpn?: [string, ...string[]] | undefined;
166
+ readonly type: "tuic";
167
+ readonly name: string;
168
+ readonly server: string;
169
+ readonly port: string | number;
170
+ readonly udp: true;
171
+ readonly password?: undefined;
172
+ readonly obfs?: undefined;
173
+ readonly protocol?: undefined;
174
+ readonly cipher?: undefined;
175
+ readonly 'obfs-param'?: undefined;
176
+ readonly 'protocol-param'?: undefined;
177
+ readonly username?: undefined;
178
+ readonly tls?: undefined;
179
+ readonly 'skip-cert-verify'?: undefined;
180
+ } | {
181
+ readonly reserved?: number[] | undefined;
182
+ readonly 'preshared-key'?: string | undefined;
183
+ readonly udp: true;
184
+ readonly server: string;
185
+ readonly port: number;
186
+ readonly 'public-key': string;
187
+ readonly dns?: [string, ...string[]] | undefined;
188
+ readonly mtu?: number | undefined;
189
+ readonly ipv6?: string | undefined;
190
+ readonly type: "wireguard";
191
+ readonly name: string;
192
+ readonly 'private-key': string;
193
+ readonly ip: string;
194
+ readonly password?: undefined;
195
+ readonly obfs?: undefined;
196
+ readonly protocol?: undefined;
197
+ readonly cipher?: undefined;
198
+ readonly 'obfs-param'?: undefined;
199
+ readonly 'protocol-param'?: undefined;
200
+ readonly username?: undefined;
201
+ readonly tls?: undefined;
202
+ readonly 'skip-cert-verify'?: undefined;
203
+ } | null>[];
204
+ export declare const getClashNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType, prependNodeNames?: ReadonlyArray<string>) => ReadonlyArray<string>;