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.
- 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 +18 -0
- package/build/base-command.js +74 -0
- package/build/commands/check.d.ts +10 -0
- package/build/commands/check.js +88 -0
- package/build/commands/clean-cache.d.ts +6 -0
- package/build/commands/clean-cache.js +29 -0
- package/build/commands/doctor.d.ts +6 -0
- package/build/commands/doctor.js +21 -0
- package/build/commands/generate.d.ts +7 -0
- package/build/commands/generate.js +93 -0
- package/build/commands/lint.d.ts +6 -0
- package/build/commands/lint.js +36 -0
- package/build/commands/new.d.ts +6 -0
- package/build/commands/new.js +36 -0
- package/build/commands/subscriptions.d.ts +7 -0
- package/build/commands/subscriptions.js +96 -0
- package/build/commands/upload.d.ts +6 -0
- package/build/commands/upload.js +87 -0
- package/build/config.d.ts +6 -0
- package/build/config.js +151 -0
- package/build/constant/constant.d.ts +17 -16
- package/build/constant/constant.js +3 -2
- package/build/constant/env.js +1 -1
- package/build/constant/error.js +1 -1
- package/build/constant/index.js +1 -1
- package/build/generate.d.ts +0 -1
- package/build/generate.js +3 -65
- package/build/generator/artifact.d.ts +299 -64
- package/build/generator/artifact.js +90 -92
- package/build/generator/index.d.ts +2 -0
- package/build/generator/index.js +19 -0
- package/build/generator/template.js +2 -6
- package/build/hooks/init.d.ts +3 -0
- package/build/hooks/init.js +32 -0
- package/build/index.d.ts +55 -53
- package/build/index.js +13 -51
- package/build/internal.d.ts +4 -0
- package/build/internal.js +21 -0
- package/build/misc/deprecation.d.ts +1 -6
- package/build/misc/deprecation.js +1 -8
- package/build/misc/flag_cn.js +1 -1
- package/build/provider/BlackSSLProvider.d.ts +4 -3
- package/build/provider/BlackSSLProvider.js +24 -16
- package/build/provider/ClashProvider.d.ts +7 -10
- package/build/provider/ClashProvider.js +165 -76
- package/build/provider/CustomProvider.d.ts +4 -3
- package/build/provider/CustomProvider.js +81 -50
- package/build/provider/Provider.d.ts +9 -22
- package/build/provider/Provider.js +31 -69
- package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +4 -5
- package/build/provider/ShadowsocksJsonSubscribeProvider.js +27 -21
- package/build/provider/ShadowsocksSubscribeProvider.d.ts +5 -8
- package/build/provider/ShadowsocksSubscribeProvider.js +30 -27
- package/build/provider/ShadowsocksrSubscribeProvider.d.ts +5 -8
- package/build/provider/ShadowsocksrSubscribeProvider.js +30 -23
- package/build/provider/SsdProvider.d.ts +5 -8
- package/build/provider/SsdProvider.js +56 -39
- package/build/provider/TrojanProvider.d.ts +5 -8
- package/build/provider/TrojanProvider.js +37 -30
- package/build/provider/V2rayNSubscribeProvider.d.ts +4 -5
- package/build/provider/V2rayNSubscribeProvider.js +61 -33
- package/build/provider/index.d.ts +16 -2
- package/build/provider/index.js +12 -5
- package/build/provider/types.d.ts +10 -1
- package/build/provider/types.js +1 -1
- package/build/redis.js +1 -1
- package/build/types.d.ts +45 -236
- package/build/types.js +2 -1
- package/build/utils/cache.js +29 -27
- package/build/utils/clash.d.ts +204 -3
- package/build/utils/clash.js +247 -110
- package/build/utils/configurables.d.ts +71 -0
- package/build/utils/configurables.js +8 -0
- package/build/utils/constant.js +1 -1
- package/build/utils/dns.js +1 -1
- package/build/utils/doctor.d.ts +2 -0
- package/build/utils/doctor.js +38 -0
- package/build/utils/env-flag.js +2 -2
- package/build/utils/error-helper.d.ts +2 -2
- package/build/utils/error-helper.js +30 -16
- package/build/utils/filter.d.ts +46 -43
- package/build/utils/filter.js +51 -30
- package/build/utils/flag.js +1 -1
- package/build/utils/http-client.js +38 -5
- package/build/utils/index.d.ts +13 -21
- package/build/utils/index.js +98 -117
- package/build/utils/linter.js +5 -2
- package/build/utils/loon.d.ts +3 -2
- package/build/utils/loon.js +67 -5
- package/build/utils/quantumult.d.ts +3 -3
- package/build/utils/quantumult.js +190 -258
- package/build/utils/relayable-url.js +1 -1
- package/build/utils/remote-snippet.js +3 -4
- package/build/utils/ss.js +27 -17
- package/build/utils/ssr.js +3 -4
- package/build/utils/subscription.js +7 -7
- package/build/utils/surfboard.d.ts +3 -2
- package/build/utils/surfboard.js +142 -126
- package/build/utils/surge.d.ts +4 -2
- package/build/utils/surge.js +328 -300
- package/build/utils/time.d.ts +1 -0
- package/build/utils/time.js +6 -0
- package/build/utils/tmp-helper.js +8 -1
- package/build/utils/trojan.js +19 -11
- package/build/utils/v2ray.js +2 -2
- package/build/validators/artifact.d.ts +35 -0
- package/build/validators/artifact.js +17 -0
- package/build/validators/common.d.ts +121 -0
- package/build/validators/common.js +52 -0
- package/build/validators/filter.d.ts +10 -0
- package/build/validators/filter.js +15 -0
- package/build/validators/hooks.d.ts +7 -0
- package/build/validators/hooks.js +8 -0
- package/build/validators/http.d.ts +137 -0
- package/build/validators/http.js +19 -0
- package/build/validators/index.d.ts +15 -0
- package/build/validators/index.js +32 -0
- package/build/validators/provider.d.ts +109 -0
- package/build/validators/provider.js +41 -0
- package/build/validators/shadowsocks.d.ts +86 -0
- package/build/validators/shadowsocks.js +29 -0
- package/build/validators/shadowsocksr.d.ts +77 -0
- package/build/validators/shadowsocksr.js +19 -0
- package/build/validators/snell.d.ts +71 -0
- package/build/validators/snell.js +20 -0
- package/build/validators/socks5.d.ts +77 -0
- package/build/validators/socks5.js +19 -0
- package/build/validators/surgio-config.d.ts +307 -0
- package/build/validators/surgio-config.js +95 -0
- package/build/validators/trojan.d.ts +86 -0
- package/build/validators/trojan.js +15 -0
- package/build/validators/tuic.d.ts +301 -0
- package/build/validators/tuic.js +21 -0
- package/build/validators/vmess.d.ts +92 -0
- package/build/validators/vmess.js +29 -0
- package/build/validators/wireguard.d.ts +123 -0
- package/build/validators/wireguard.js +26 -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 +112 -75
- 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/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
|
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.parseClashConfig = exports.getClashSubscription = void 0;
|
|
7
|
-
const joi_1 = __importDefault(require("joi"));
|
|
8
7
|
const assert_1 = __importDefault(require("assert"));
|
|
9
8
|
const yaml_1 = __importDefault(require("yaml"));
|
|
10
9
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
10
|
const logger_1 = require("@surgio/logger");
|
|
11
|
+
const zod_1 = require("zod");
|
|
12
12
|
const types_1 = require("../types");
|
|
13
13
|
const utils_1 = require("../utils");
|
|
14
14
|
const env_flag_1 = require("../utils/env-flag");
|
|
@@ -18,52 +18,59 @@ const logger = (0, logger_1.createLogger)({
|
|
|
18
18
|
service: 'surgio:ClashProvider',
|
|
19
19
|
});
|
|
20
20
|
class ClashProvider extends Provider_1.default {
|
|
21
|
+
#originalUrl;
|
|
22
|
+
udpRelay;
|
|
23
|
+
tls13;
|
|
21
24
|
constructor(name, config) {
|
|
22
25
|
super(name, config);
|
|
23
|
-
const schema =
|
|
24
|
-
url:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
udpRelay: joi_1.default.bool().strict(),
|
|
30
|
-
tls13: joi_1.default.bool().strict(),
|
|
31
|
-
}).unknown();
|
|
32
|
-
const { error } = schema.validate(config);
|
|
26
|
+
const schema = zod_1.z.object({
|
|
27
|
+
url: zod_1.z.string().url(),
|
|
28
|
+
udpRelay: zod_1.z.boolean().optional(),
|
|
29
|
+
tls13: zod_1.z.boolean().optional(),
|
|
30
|
+
});
|
|
31
|
+
const result = schema.safeParse(config);
|
|
33
32
|
// istanbul ignore next
|
|
34
|
-
if (
|
|
35
|
-
throw error;
|
|
33
|
+
if (!result.success) {
|
|
34
|
+
throw result.error;
|
|
36
35
|
}
|
|
37
|
-
this
|
|
38
|
-
this.udpRelay =
|
|
39
|
-
this.tls13 =
|
|
36
|
+
this.#originalUrl = result.data.url;
|
|
37
|
+
this.udpRelay = result.data.udpRelay;
|
|
38
|
+
this.tls13 = result.data.tls13;
|
|
40
39
|
this.supportGetSubscriptionUserInfo = true;
|
|
41
40
|
}
|
|
42
41
|
// istanbul ignore next
|
|
43
42
|
get url() {
|
|
44
|
-
return (0, relayable_url_1.default)(this
|
|
43
|
+
return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
|
|
45
44
|
}
|
|
46
|
-
async
|
|
45
|
+
getSubscriptionUserInfo = async (params = {}) => {
|
|
46
|
+
const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
|
|
47
47
|
const { subscriptionUserinfo } = await (0, exports.getClashSubscription)({
|
|
48
48
|
url: this.url,
|
|
49
49
|
udpRelay: this.udpRelay,
|
|
50
50
|
tls13: this.tls13,
|
|
51
|
-
requestUserAgent
|
|
51
|
+
requestUserAgent,
|
|
52
52
|
});
|
|
53
53
|
if (subscriptionUserinfo) {
|
|
54
54
|
return subscriptionUserinfo;
|
|
55
55
|
}
|
|
56
|
-
return
|
|
57
|
-
}
|
|
58
|
-
async
|
|
56
|
+
return undefined;
|
|
57
|
+
};
|
|
58
|
+
getNodeList = async (params = {}) => {
|
|
59
|
+
const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
|
|
59
60
|
const { nodeList } = await (0, exports.getClashSubscription)({
|
|
60
61
|
url: this.url,
|
|
61
62
|
udpRelay: this.udpRelay,
|
|
62
63
|
tls13: this.tls13,
|
|
63
|
-
requestUserAgent
|
|
64
|
+
requestUserAgent,
|
|
64
65
|
});
|
|
66
|
+
if (this.config.hooks?.afterFetchNodeList) {
|
|
67
|
+
const newList = await this.config.hooks.afterFetchNodeList(nodeList, params);
|
|
68
|
+
if (newList) {
|
|
69
|
+
return newList;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
65
72
|
return nodeList;
|
|
66
|
-
}
|
|
73
|
+
};
|
|
67
74
|
}
|
|
68
75
|
exports.default = ClashProvider;
|
|
69
76
|
const getClashSubscription = async ({ url, udpRelay, tls13, requestUserAgent, }) => {
|
|
@@ -96,50 +103,71 @@ const getClashSubscription = async ({ url, udpRelay, tls13, requestUserAgent, })
|
|
|
96
103
|
exports.getClashSubscription = getClashSubscription;
|
|
97
104
|
const parseClashConfig = (proxyList, udpRelay, tls13) => {
|
|
98
105
|
const nodeList = proxyList.map((item) => {
|
|
99
|
-
var _a, _b, _c, _d;
|
|
100
106
|
switch (item.type) {
|
|
101
107
|
case 'ss': {
|
|
102
108
|
// istanbul ignore next
|
|
103
109
|
if (item.plugin && !['obfs', 'v2ray-plugin'].includes(item.plugin)) {
|
|
104
110
|
logger.warn(`不支持从 Clash 订阅中读取 ${item.plugin} 类型的 Shadowsocks 节点,节点 ${item.name} 会被省略`);
|
|
105
|
-
return
|
|
111
|
+
return undefined;
|
|
106
112
|
}
|
|
107
113
|
// istanbul ignore next
|
|
108
114
|
if (item.plugin === 'v2ray-plugin' &&
|
|
109
115
|
item['plugin-opts'].mode.toLowerCase() === 'quic') {
|
|
110
116
|
logger.warn(`不支持从 Clash 订阅中读取 QUIC 模式的 Shadowsocks 节点,节点 ${item.name} 会被省略`);
|
|
111
|
-
return
|
|
117
|
+
return undefined;
|
|
112
118
|
}
|
|
113
119
|
const wsHeaders = (0, utils_1.lowercaseHeaderKeys)(lodash_1.default.get(item, 'plugin-opts.headers', {}));
|
|
114
|
-
return
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
120
|
+
return {
|
|
121
|
+
type: types_1.NodeTypeEnum.Shadowsocks,
|
|
122
|
+
nodeName: item.name,
|
|
123
|
+
hostname: item.server,
|
|
124
|
+
port: item.port,
|
|
125
|
+
method: item.cipher,
|
|
126
|
+
password: item.password,
|
|
127
|
+
udpRelay: resolveUdpRelay(item.udp, udpRelay),
|
|
128
|
+
// obfs-local 新格式
|
|
129
|
+
...(item.plugin && item.plugin === 'obfs'
|
|
130
|
+
? {
|
|
131
|
+
obfs: item['plugin-opts'].mode,
|
|
132
|
+
obfsHost: item['plugin-opts'].host || 'www.bing.com',
|
|
133
|
+
}
|
|
134
|
+
: null),
|
|
135
|
+
// obfs-local 旧格式
|
|
136
|
+
...(item.obfs
|
|
128
137
|
? {
|
|
129
|
-
|
|
130
|
-
|
|
138
|
+
obfs: item.obfs,
|
|
139
|
+
obfsHost: item['obfs-host'] || 'www.bing.com',
|
|
131
140
|
}
|
|
132
|
-
: null)
|
|
141
|
+
: null),
|
|
142
|
+
// v2ray-plugin
|
|
143
|
+
...(item.plugin &&
|
|
144
|
+
item.plugin === 'v2ray-plugin' &&
|
|
145
|
+
item['plugin-opts'].mode === 'websocket'
|
|
133
146
|
? {
|
|
134
|
-
|
|
147
|
+
obfs: item['plugin-opts'].tls === true ? 'wss' : 'ws',
|
|
148
|
+
obfsHost: item['plugin-opts'].host || item.server,
|
|
149
|
+
obfsUri: item['plugin-opts'].path || '/',
|
|
150
|
+
wsHeaders,
|
|
151
|
+
...(item['plugin-opts'].tls === true
|
|
152
|
+
? {
|
|
153
|
+
skipCertVerify: item['plugin-opts']['skip-cert-verify'] === true,
|
|
154
|
+
tls13: tls13 ?? false,
|
|
155
|
+
}
|
|
156
|
+
: null),
|
|
157
|
+
...(typeof item['plugin-opts'].mux === 'boolean'
|
|
158
|
+
? {
|
|
159
|
+
mux: item['plugin-opts'].mux,
|
|
160
|
+
}
|
|
161
|
+
: null),
|
|
135
162
|
}
|
|
136
|
-
: null)
|
|
163
|
+
: null),
|
|
164
|
+
};
|
|
137
165
|
}
|
|
138
166
|
case 'vmess': {
|
|
139
167
|
// istanbul ignore next
|
|
140
168
|
if (item.network && !['tcp', 'ws'].includes(item.network)) {
|
|
141
169
|
logger.warn(`不支持从 Clash 订阅中读取 network 类型为 ${item.network} 的 Vmess 节点,节点 ${item.name} 会被省略`);
|
|
142
|
-
return
|
|
170
|
+
return undefined;
|
|
143
171
|
}
|
|
144
172
|
const isNewConfig = 'ws-opts' in item;
|
|
145
173
|
const wsHeaders = isNewConfig
|
|
@@ -152,18 +180,31 @@ const parseClashConfig = (proxyList, udpRelay, tls13) => {
|
|
|
152
180
|
path: lodash_1.default.get(item, 'ws-path', '/'),
|
|
153
181
|
headers: wsHeaders,
|
|
154
182
|
};
|
|
155
|
-
return
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
:
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
183
|
+
return {
|
|
184
|
+
type: types_1.NodeTypeEnum.Vmess,
|
|
185
|
+
nodeName: item.name,
|
|
186
|
+
hostname: item.server,
|
|
187
|
+
port: item.port,
|
|
188
|
+
uuid: item.uuid,
|
|
189
|
+
alterId: item.alterId ? `${item.alterId}` : '0',
|
|
190
|
+
method: item.cipher || 'auto',
|
|
191
|
+
udpRelay: resolveUdpRelay(item.udp, udpRelay),
|
|
192
|
+
tls: item.tls ?? false,
|
|
193
|
+
network: item.network || 'tcp',
|
|
194
|
+
...(item.network === 'ws'
|
|
195
|
+
? {
|
|
196
|
+
host: wsHost,
|
|
197
|
+
path: lodash_1.default.get(wsOpts, 'path', '/'),
|
|
198
|
+
wsHeaders,
|
|
199
|
+
}
|
|
200
|
+
: null),
|
|
201
|
+
...(item.tls
|
|
202
|
+
? {
|
|
203
|
+
skipCertVerify: item['skip-cert-verify'] === true,
|
|
204
|
+
tls13: tls13 ?? false,
|
|
205
|
+
}
|
|
206
|
+
: null),
|
|
207
|
+
};
|
|
167
208
|
}
|
|
168
209
|
case 'http':
|
|
169
210
|
if (!item.tls) {
|
|
@@ -183,13 +224,22 @@ const parseClashConfig = (proxyList, udpRelay, tls13) => {
|
|
|
183
224
|
port: item.port,
|
|
184
225
|
username: item.username || '',
|
|
185
226
|
password: item.password || '',
|
|
186
|
-
tls13: tls13
|
|
227
|
+
tls13: tls13 ?? false,
|
|
187
228
|
skipCertVerify: item['skip-cert-verify'] === true,
|
|
188
229
|
};
|
|
189
230
|
case 'snell':
|
|
190
|
-
return
|
|
191
|
-
|
|
192
|
-
:
|
|
231
|
+
return {
|
|
232
|
+
type: types_1.NodeTypeEnum.Snell,
|
|
233
|
+
nodeName: item.name,
|
|
234
|
+
hostname: item.server,
|
|
235
|
+
port: item.port,
|
|
236
|
+
psk: item.psk,
|
|
237
|
+
obfs: lodash_1.default.get(item, 'obfs-opts.mode', 'http'),
|
|
238
|
+
...(typeof item?.['obfs-opts']?.host !== 'undefined'
|
|
239
|
+
? { obfsHost: item['obfs-opts'].host }
|
|
240
|
+
: null),
|
|
241
|
+
...('version' in item ? { version: item.version } : null),
|
|
242
|
+
};
|
|
193
243
|
// istanbul ignore next
|
|
194
244
|
case 'ssr':
|
|
195
245
|
return {
|
|
@@ -199,30 +249,69 @@ const parseClashConfig = (proxyList, udpRelay, tls13) => {
|
|
|
199
249
|
port: item.port,
|
|
200
250
|
password: item.password,
|
|
201
251
|
obfs: item.obfs,
|
|
202
|
-
obfsparam:
|
|
252
|
+
obfsparam: item['obfs-param'] ?? item.obfsparam,
|
|
203
253
|
protocol: item.protocol,
|
|
204
|
-
protoparam:
|
|
254
|
+
protoparam: item['protocol-param'] ?? item.protocolparam,
|
|
205
255
|
method: item.cipher,
|
|
206
|
-
|
|
256
|
+
udpRelay: resolveUdpRelay(item.udp, udpRelay),
|
|
207
257
|
};
|
|
208
258
|
case 'trojan': {
|
|
209
259
|
const network = item.network;
|
|
210
260
|
const wsOpts = lodash_1.default.get(item, 'ws-opts', {});
|
|
211
261
|
const wsHeaders = (0, utils_1.lowercaseHeaderKeys)(lodash_1.default.get(wsOpts, 'headers', {}));
|
|
212
|
-
return
|
|
213
|
-
|
|
214
|
-
:
|
|
215
|
-
|
|
216
|
-
:
|
|
262
|
+
return {
|
|
263
|
+
type: types_1.NodeTypeEnum.Trojan,
|
|
264
|
+
nodeName: item.name,
|
|
265
|
+
hostname: item.server,
|
|
266
|
+
port: item.port,
|
|
267
|
+
password: item.password,
|
|
268
|
+
...('skip-cert-verify' in item
|
|
269
|
+
? { skipCertVerify: item['skip-cert-verify'] === true }
|
|
270
|
+
: null),
|
|
271
|
+
...('alpn' in item ? { alpn: item.alpn } : null),
|
|
272
|
+
...('sni' in item ? { sni: item.sni } : null),
|
|
273
|
+
udpRelay: resolveUdpRelay(item.udp, udpRelay),
|
|
274
|
+
tls13: tls13 ?? false,
|
|
275
|
+
...(network === 'ws'
|
|
276
|
+
? { network: 'ws', wsPath: lodash_1.default.get(wsOpts, 'path', '/'), wsHeaders }
|
|
277
|
+
: null),
|
|
278
|
+
};
|
|
217
279
|
}
|
|
218
280
|
case 'tuic': {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
281
|
+
if (item.version >= 5) {
|
|
282
|
+
return {
|
|
283
|
+
type: types_1.NodeTypeEnum.Tuic,
|
|
284
|
+
version: item.version,
|
|
285
|
+
nodeName: item.name,
|
|
286
|
+
hostname: item.server,
|
|
287
|
+
port: item.port,
|
|
288
|
+
password: item.password,
|
|
289
|
+
uuid: item.uuid,
|
|
290
|
+
...('skip-cert-verify' in item
|
|
291
|
+
? { skipCertVerify: item['skip-cert-verify'] === true }
|
|
292
|
+
: null),
|
|
293
|
+
tls13: tls13 ?? false,
|
|
294
|
+
...('sni' in item ? { sni: item.sni } : null),
|
|
295
|
+
...('alpn' in item ? { alpn: item.alpn } : null),
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
return {
|
|
299
|
+
type: types_1.NodeTypeEnum.Tuic,
|
|
300
|
+
nodeName: item.name,
|
|
301
|
+
hostname: item.server,
|
|
302
|
+
port: item.port,
|
|
303
|
+
token: item.token,
|
|
304
|
+
...('skip-cert-verify' in item
|
|
305
|
+
? { skipCertVerify: item['skip-cert-verify'] === true }
|
|
306
|
+
: null),
|
|
307
|
+
tls13: tls13 ?? false,
|
|
308
|
+
...('sni' in item ? { sni: item.sni } : null),
|
|
309
|
+
...('alpn' in item ? { alpn: item.alpn } : null),
|
|
310
|
+
};
|
|
222
311
|
}
|
|
223
312
|
default:
|
|
224
313
|
logger.warn(`不支持从 Clash 订阅中读取 ${item.type} 的节点,节点 ${item.name} 会被省略`);
|
|
225
|
-
return
|
|
314
|
+
return undefined;
|
|
226
315
|
}
|
|
227
316
|
});
|
|
228
317
|
return nodeList.filter((item) => item !== undefined);
|
|
@@ -234,4 +323,4 @@ function resolveUdpRelay(val, defaultVal = false) {
|
|
|
234
323
|
}
|
|
235
324
|
return defaultVal;
|
|
236
325
|
}
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc2hQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wcm92aWRlci9DbGFzaFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUFzQjtBQUN0QixvREFBNEI7QUFDNUIsZ0RBQXdCO0FBQ3hCLG9EQUF1QjtBQUN2QiwyQ0FBOEM7QUFFOUMsb0NBWWtCO0FBQ2xCLG9DQUErQztBQUMvQyxnREFBc0Q7QUFDdEQsMkVBQWtEO0FBQ2xELDBEQUFrQztBQVlsQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUM7SUFDMUIsT0FBTyxFQUFFLHNCQUFzQjtDQUNoQyxDQUFDLENBQUM7QUFFSCxNQUFxQixhQUFjLFNBQVEsa0JBQVE7SUFLakQsWUFBWSxJQUFZLEVBQUUsTUFBMkI7UUFDbkQsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEdBQUcsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2lCQUNkLEdBQUcsQ0FBQztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDbkIsQ0FBQztpQkFDRCxRQUFRLEVBQUU7WUFDYixRQUFRLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUM3QixLQUFLLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtTQUMzQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFYixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQyx1QkFBdUI7UUFDdkIsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLEtBQUssQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLElBQVcsR0FBRztRQUNaLE9BQU8sSUFBQSx1QkFBWSxFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFDbkMsZ0JBQWdCLE1BQ2lCLEVBQUU7UUFHbkMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFBLDRCQUFvQixFQUFDO1lBQzFELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsZ0JBQWdCLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQjtTQUM1RCxDQUFDLENBQUM7UUFFSCxJQUFJLG9CQUFvQixFQUFFO1lBQ3hCLE9BQU8sb0JBQW9CLENBQUM7U0FDN0I7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQ3ZCLGdCQUFnQixNQUNpQixFQUFFO1FBR25DLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUEsNEJBQW9CLEVBQUM7WUFDOUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixnQkFBZ0IsRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVELENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQXBFRCxnQ0FvRUM7QUFFTSxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFBRSxFQUN6QyxHQUFHLEVBQ0gsUUFBUSxFQUNSLEtBQUssRUFDTCxnQkFBZ0IsR0FNakIsRUFHRSxFQUFFO0lBQ0gsSUFBQSxnQkFBTSxFQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUUzQixNQUFNLFFBQVEsR0FBRyxNQUFNLGtCQUFRLENBQUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFO1FBQzVELGdCQUFnQixFQUFFLGdCQUFnQixJQUFJLElBQUEsNEJBQWlCLEdBQUU7S0FDMUQsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxXQUFXLENBQUM7SUFFaEIsSUFBSTtRQUNGLHdDQUF3QztRQUN4QyxXQUFXLEdBQUcsY0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekM7SUFBQyxPQUFPLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQztRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0tBQzNDO0lBRUQsSUFDRSxDQUFDLGdCQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsQ0FBQyxFQUMxRDtRQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLGdCQUFnQixDQUFDLENBQUM7S0FDekM7SUFFRCxNQUFNLFNBQVMsR0FBVSxXQUFXLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFFbEUsdUJBQXVCO0lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLGdCQUFnQixDQUFDLENBQUM7S0FDekM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLElBQUEsd0JBQWdCLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7UUFDdEQsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjtLQUNwRCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBOUNXLFFBQUEsb0JBQW9CLHdCQThDL0I7QUFFSyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLFNBQTZCLEVBQzdCLFFBQWtCLEVBQ2xCLEtBQWUsRUFDb0IsRUFBRTtJQUNyQyxNQUFNLFFBQVEsR0FBa0QsU0FBUyxDQUFDLEdBQUcsQ0FDM0UsQ0FBQyxJQUFJLEVBQUUsRUFBRTs7UUFDUCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDVCx1QkFBdUI7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQ1Qsb0JBQW9CLElBQUksQ0FBQyxNQUFNLDBCQUEwQixJQUFJLENBQUMsSUFBSSxPQUFPLENBQzFFLENBQUM7b0JBQ0YsT0FBTyxLQUFLLENBQUMsQ0FBQztpQkFDZjtnQkFDRCx1QkFBdUI7Z0JBQ3ZCLElBQ0UsSUFBSSxDQUFDLE1BQU0sS0FBSyxjQUFjO29CQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFDakQ7b0JBQ0EsTUFBTSxDQUFDLElBQUksQ0FDVCwrQ0FBK0MsSUFBSSxDQUFDLElBQUksT0FBTyxDQUNoRSxDQUFDO29CQUNGLE9BQU8sS0FBSyxDQUFDLENBQUM7aUJBQ2Y7Z0JBRUQsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQkFBbUIsRUFDbkMsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUN2QyxDQUFDO2dCQUVGLE9BQU8sNENBQ0wsSUFBSSxFQUFFLG9CQUFZLENBQUMsV0FBVyxFQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFDdkIsV0FBVyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUc3QyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNO29CQUN2QyxDQUFDLENBQUM7d0JBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJO3dCQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksSUFBSSxjQUFjO3FCQUN4RDtvQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLEdBR04sQ0FBQyxJQUFJLENBQUMsSUFBSTtvQkFDWCxDQUFDLENBQUM7d0JBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO3dCQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksY0FBYztxQkFDakQ7b0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUdOLENBQUMsSUFBSSxDQUFDLE1BQU07b0JBQ2YsSUFBSSxDQUFDLE1BQU0sS0FBSyxjQUFjO29CQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVc7b0JBQ3RDLENBQUMsK0JBQ0csSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDckQsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFDcEQsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUMzQyxTQUFTLElBQ04sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUk7d0JBQ2xDLENBQUMsQ0FBQzs0QkFDRSxjQUFjLEVBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSTs0QkFDbEQsS0FBSyxFQUFFLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLEtBQUs7eUJBQ3RCO3dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsR0FDTixDQUFDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTO3dCQUM5QyxDQUFDLENBQUM7NEJBQ0UsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHO3lCQUM3Qjt3QkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLEVBRWIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUNlLENBQUM7YUFDNUI7WUFFRCxLQUFLLE9BQU8sQ0FBQyxDQUFDO2dCQUNaLHVCQUF1QjtnQkFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDekQsTUFBTSxDQUFDLElBQUksQ0FDVCxnQ0FBZ0MsSUFBSSxDQUFDLE9BQU8sa0JBQWtCLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FDL0UsQ0FBQztvQkFDRixPQUFPLEtBQUssQ0FBQyxDQUFDO2lCQUNmO2dCQUVELE1BQU0sV0FBVyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUM7Z0JBQ3RDLE1BQU0sU0FBUyxHQUFHLFdBQVc7b0JBQzNCLENBQUMsQ0FBQyxJQUFBLDJCQUFtQixFQUFDLGdCQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekQsQ0FBQyxDQUFDLElBQUEsMkJBQW1CLEVBQUMsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLE1BQU0sR0FDVixJQUFJLENBQUMsVUFBVSxJQUFJLGdCQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLE1BQU0sR0FBRyxXQUFXO29CQUN4QixDQUFDLENBQUMsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQzVCLENBQUMsQ0FBQzt3QkFDRSxJQUFJLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUM7d0JBQ2pDLE9BQU8sRUFBRSxTQUFTO3FCQUNuQixDQUFDO2dCQUVOLE9BQU8sOEJBQ0wsSUFBSSxFQUFFLG9CQUFZLENBQUMsS0FBSyxFQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUMvQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQzdCLFdBQVcsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFDaEQsR0FBRyxFQUFFLE1BQUEsSUFBSSxDQUFDLEdBQUcsbUNBQUksS0FBSyxFQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLElBQzNCLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJO29CQUN2QixDQUFDLENBQUM7d0JBQ0UsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLGdCQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO3dCQUNoQyxTQUFTO3FCQUNWO29CQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsR0FDTixDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNWLENBQUMsQ0FBQzt3QkFDRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSTt3QkFDakQsS0FBSyxFQUFFLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLEtBQUs7cUJBQ3RCO29CQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDUyxDQUFDO2FBQ3RCO1lBRUQsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNiLE9BQU87d0JBQ0wsSUFBSSxFQUFFLG9CQUFZLENBQUMsSUFBSTt3QkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO3dCQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07d0JBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsSUFBSSxFQUFFO3dCQUN4RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsSUFBSSxFQUFFO3FCQUN2QyxDQUFDO2lCQUNyQjtnQkFFRCxPQUFPO29CQUNMLElBQUksRUFBRSxvQkFBWSxDQUFDLEtBQUs7b0JBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRTtvQkFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRTtvQkFDN0IsS0FBSyxFQUFFLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLEtBQUs7b0JBQ3JCLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxJQUFJO2lCQUMvQixDQUFDO1lBRXZCLEtBQUssT0FBTztnQkFDVixPQUFPLDhCQUNMLElBQUksRUFBRSxvQkFBWSxDQUFDLEtBQUssRUFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFDYixJQUFJLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxJQUN4QyxDQUFDLE9BQU8sQ0FBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRyxXQUFXLENBQUMsMENBQUUsSUFBSSxDQUFBLEtBQUssV0FBVztvQkFDbEQsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUU7b0JBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FDTixDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3ZDLENBQUM7WUFFdkIsdUJBQXVCO1lBQ3ZCLEtBQUssS0FBSztnQkFDUixPQUFPO29CQUNMLElBQUksRUFBRSxvQkFBWSxDQUFDLFlBQVk7b0JBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsU0FBUyxFQUFFLE1BQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQ0FBSSxJQUFJLENBQUMsU0FBUztvQkFDL0MsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixVQUFVLEVBQUUsTUFBQSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUNBQUksSUFBSSxDQUFDLGFBQWE7b0JBQ3hELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsV0FBVyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztpQkFDdkIsQ0FBQztZQUU5QixLQUFLLFFBQVEsQ0FBQyxDQUFDO2dCQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLGdCQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUEsMkJBQW1CLEVBQUMsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVwRSxPQUFPLHdFQUNMLElBQUksRUFBRSxvQkFBWSxDQUFDLE1BQU0sRUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFDcEIsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJO29CQUM1QixDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQ04sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUM3QyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQzdDLFdBQVcsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFDaEQsS0FBSyxFQUFFLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLEtBQUssS0FDbEIsQ0FBQyxPQUFPLEtBQUssSUFBSTtvQkFDbEIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUU7b0JBQ2xFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDVSxDQUFDO2FBQ3ZCO1lBRUQsS0FBSyxNQUFNLENBQUMsQ0FBQztnQkFDWCxPQUFPLDBEQUNMLElBQUksRUFBRSxvQkFBWSxDQUFDLElBQUksRUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFDakIsV0FBVyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUM3QyxDQUFDLGtCQUFrQixJQUFJLElBQUk7b0JBQzVCLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FDVCxLQUFLLEVBQUUsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksS0FBSyxLQUNsQixDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQzFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDL0IsQ0FBQzthQUNyQjtZQUVEO2dCQUNFLE1BQU0sQ0FBQyxJQUFJLENBQ1Qsb0JBQW9CLElBQUksQ0FBQyxJQUFJLFdBQVcsSUFBSSxDQUFDLElBQUksT0FBTyxDQUN6RCxDQUFDO2dCQUNGLE9BQU8sS0FBSyxDQUFDLENBQUM7U0FDakI7SUFDSCxDQUFDLENBQ0YsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FDcEIsQ0FBQyxJQUFJLEVBQThCLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUN6RCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBN09XLFFBQUEsZ0JBQWdCLG9CQTZPM0I7QUFFRixTQUFTLGVBQWUsQ0FBQyxHQUFhLEVBQUUsVUFBVSxHQUFHLEtBQUs7SUFDeEQsSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEVBQUU7UUFDbEIsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMifQ==
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc2hQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlci9DbGFzaFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUEyQjtBQUMzQixnREFBdUI7QUFDdkIsb0RBQXNCO0FBQ3RCLDJDQUE2QztBQUM3Qyw2QkFBdUI7QUFFdkIsb0NBWWlCO0FBQ2pCLG9DQUE4QztBQUM5QyxnREFBcUQ7QUFDckQsMkVBQWlEO0FBQ2pELDBEQUFpQztBQWFqQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUM7SUFDMUIsT0FBTyxFQUFFLHNCQUFzQjtDQUNoQyxDQUFDLENBQUE7QUFFRixNQUFxQixhQUFjLFNBQVEsa0JBQVE7SUFDeEMsWUFBWSxDQUFRO0lBQ2IsUUFBUSxDQUFVO0lBQ2xCLEtBQUssQ0FBVTtJQUUvQixZQUFZLElBQVksRUFBRSxNQUEyQjtRQUNuRCxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBRW5CLE1BQU0sTUFBTSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsR0FBRyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUU7WUFDckIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDaEMsS0FBSyxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDOUIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUV2Qyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFBO1NBQ25CO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtRQUNuQyxJQUFJLENB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
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { CustomProviderConfig
|
|
1
|
+
import { CustomProviderConfig } from '../types';
|
|
2
2
|
import Provider from './Provider';
|
|
3
|
+
import { GetNodeListFunction, GetNodeListParams } from './types';
|
|
3
4
|
export default class CustomProvider extends Provider {
|
|
4
|
-
readonly nodeList:
|
|
5
|
+
readonly nodeList: unknown[] | ((params: GetNodeListParams) => Promise<unknown[]>);
|
|
5
6
|
readonly underlyingProxy?: string;
|
|
6
7
|
constructor(name: string, config: CustomProviderConfig);
|
|
7
|
-
getNodeList
|
|
8
|
+
getNodeList: GetNodeListFunction;
|
|
8
9
|
}
|
|
@@ -3,70 +3,101 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
7
|
const types_1 = require("../types");
|
|
8
8
|
const Provider_1 = __importDefault(require("./Provider"));
|
|
9
|
+
const validators_1 = require("../validators");
|
|
9
10
|
class CustomProvider extends Provider_1.default {
|
|
11
|
+
nodeList;
|
|
12
|
+
underlyingProxy;
|
|
10
13
|
constructor(name, config) {
|
|
11
14
|
super(name, config);
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
.
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
shadowTls: joi_1.default.object({
|
|
21
|
-
password: joi_1.default.string().required(),
|
|
22
|
-
sni: joi_1.default.string(),
|
|
23
|
-
version: joi_1.default.string(),
|
|
24
|
-
}),
|
|
25
|
-
binPath: joi_1.default.string(),
|
|
26
|
-
localPort: joi_1.default.number(),
|
|
27
|
-
underlyingProxy: joi_1.default.string(),
|
|
28
|
-
skipCertVerify: joi_1.default.boolean().strict(),
|
|
29
|
-
sni: joi_1.default.string(),
|
|
30
|
-
alpn: joi_1.default.array().items(joi_1.default.string()),
|
|
31
|
-
serverCertFingerprintSha256: joi_1.default.string(),
|
|
32
|
-
}).unknown();
|
|
33
|
-
const schema = joi_1.default.object({
|
|
34
|
-
nodeList: joi_1.default.array().items(nodeSchema).required(),
|
|
35
|
-
underlyingProxy: joi_1.default.string(),
|
|
36
|
-
}).unknown();
|
|
37
|
-
const { error, value } = schema.validate(config);
|
|
15
|
+
const schema = zod_1.z.object({
|
|
16
|
+
nodeList: zod_1.z.union([
|
|
17
|
+
zod_1.z.array(zod_1.z.any()),
|
|
18
|
+
zod_1.z.function().args(zod_1.z.any()).returns(zod_1.z.any()),
|
|
19
|
+
]),
|
|
20
|
+
underlyingProxy: zod_1.z.ostring(),
|
|
21
|
+
});
|
|
22
|
+
const result = schema.safeParse(config);
|
|
38
23
|
// istanbul ignore next
|
|
39
|
-
if (
|
|
40
|
-
throw error;
|
|
24
|
+
if (!result.success) {
|
|
25
|
+
throw result.error;
|
|
41
26
|
}
|
|
42
|
-
this.nodeList =
|
|
43
|
-
this.underlyingProxy =
|
|
27
|
+
this.nodeList = result.data.nodeList;
|
|
28
|
+
this.underlyingProxy = result.data.underlyingProxy;
|
|
44
29
|
}
|
|
45
|
-
async
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
30
|
+
getNodeList = async (params = {}) => {
|
|
31
|
+
let nodeList;
|
|
32
|
+
const parsedNodeList = [];
|
|
33
|
+
if (typeof this.nodeList === 'function') {
|
|
34
|
+
nodeList = await this.nodeList(params);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
nodeList = this.nodeList;
|
|
38
|
+
}
|
|
39
|
+
for (const node of nodeList) {
|
|
40
|
+
const type = node.type;
|
|
52
41
|
// istanbul ignore next
|
|
53
|
-
if (
|
|
54
|
-
throw
|
|
42
|
+
if (node['udp-relay']) {
|
|
43
|
+
throw new Error('udp-relay is abandoned, please use udpRelay instead');
|
|
55
44
|
}
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
// istanbul ignore next
|
|
46
|
+
if (node['obfs-host']) {
|
|
47
|
+
throw new Error('obfs-host is abandoned, please use obfsHost instead');
|
|
58
48
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
49
|
+
// istanbul ignore next
|
|
50
|
+
if (node['obfs-uri']) {
|
|
51
|
+
throw new Error('obfs-uri is abandoned, please use obfsUri instead');
|
|
52
|
+
}
|
|
53
|
+
const parsedNode = (() => {
|
|
54
|
+
switch (type) {
|
|
55
|
+
case types_1.NodeTypeEnum.Shadowsocks:
|
|
56
|
+
return validators_1.ShadowsocksNodeConfigValidator.parse(node);
|
|
57
|
+
case types_1.NodeTypeEnum.Shadowsocksr:
|
|
58
|
+
return validators_1.ShadowsocksrNodeConfigValidator.parse(node);
|
|
59
|
+
case types_1.NodeTypeEnum.Vmess:
|
|
60
|
+
return validators_1.VmessNodeConfigValidator.parse(node);
|
|
61
|
+
case types_1.NodeTypeEnum.Trojan:
|
|
62
|
+
return validators_1.TrojanNodeConfigValidator.parse(node);
|
|
63
|
+
case types_1.NodeTypeEnum.Socks5:
|
|
64
|
+
return validators_1.Socks5NodeConfigValidator.parse(node);
|
|
65
|
+
case types_1.NodeTypeEnum.HTTP:
|
|
66
|
+
return validators_1.HttpNodeConfigValidator.parse(node);
|
|
67
|
+
case types_1.NodeTypeEnum.HTTPS:
|
|
68
|
+
return validators_1.HttpsNodeConfigValidator.parse(node);
|
|
69
|
+
case types_1.NodeTypeEnum.Snell:
|
|
70
|
+
return validators_1.SnellNodeConfigValidator.parse(node);
|
|
71
|
+
case types_1.NodeTypeEnum.Tuic:
|
|
72
|
+
return validators_1.TuicNodeConfigValidator.parse(node);
|
|
73
|
+
case types_1.NodeTypeEnum.Wireguard:
|
|
74
|
+
return validators_1.WireguardNodeConfigValidator.parse(node);
|
|
75
|
+
default:
|
|
76
|
+
throw new TypeError(`Unexpected object: ${type}`);
|
|
77
|
+
}
|
|
78
|
+
})();
|
|
79
|
+
const propertyKeysMustBeLowercase = ['wsHeaders'];
|
|
80
|
+
if (this.underlyingProxy && !parsedNode.underlyingProxy) {
|
|
81
|
+
parsedNode.underlyingProxy = this.underlyingProxy;
|
|
82
|
+
}
|
|
83
|
+
propertyKeysMustBeLowercase.forEach((key) => {
|
|
84
|
+
if (parsedNode[key]) {
|
|
85
|
+
parsedNode[key] = Object.keys(parsedNode[key]).reduce((acc, curr) => {
|
|
86
|
+
acc[curr.toLowerCase()] = parsedNode[key][curr];
|
|
63
87
|
return acc;
|
|
64
88
|
}, {});
|
|
65
89
|
}
|
|
66
90
|
});
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
91
|
+
parsedNodeList.push(parsedNode);
|
|
92
|
+
}
|
|
93
|
+
if (this.config.hooks?.afterFetchNodeList) {
|
|
94
|
+
const newList = await this.config.hooks.afterFetchNodeList(parsedNodeList, params);
|
|
95
|
+
if (newList) {
|
|
96
|
+
return newList;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return parsedNodeList;
|
|
100
|
+
};
|
|
70
101
|
}
|
|
71
102
|
exports.default = CustomProvider;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXIvQ3VzdG9tUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBdUI7QUFFdkIsb0NBSWlCO0FBQ2pCLDBEQUFpQztBQUNqQyw4Q0FXc0I7QUFHdEIsTUFBcUIsY0FBZSxTQUFRLGtCQUFRO0lBQ2xDLFFBQVEsQ0FFK0I7SUFDdkMsZUFBZSxDQUFTO0lBRXhDLFlBQVksSUFBWSxFQUFFLE1BQTRCO1FBQ3BELEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFFbkIsTUFBTSxNQUFNLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN0QixRQUFRLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDaEIsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLE9BQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUM1QyxDQUFDO1lBQ0YsZUFBZSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUU7U0FDN0IsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUV2Qyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFBO1NBQ25CO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBQ3BELENBQUM7SUFFTSxXQUFXLEdBQXdCLEtBQUssRUFD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
|
|
@@ -1,31 +1,18 @@
|
|
|
1
|
-
import { ProviderConfig, SupportProviderEnum
|
|
1
|
+
import { ProviderConfig, SupportProviderEnum } from '../types';
|
|
2
2
|
import { SubsciptionCacheItem } from '../utils/cache';
|
|
3
|
-
|
|
3
|
+
import { GetNodeListFunction, GetSubscriptionUserInfoFunction } from './types';
|
|
4
|
+
export default abstract class Provider {
|
|
4
5
|
name: string;
|
|
5
6
|
readonly type: SupportProviderEnum;
|
|
6
|
-
readonly
|
|
7
|
-
readonly netflixFilter?: ProviderConfig['netflixFilter'];
|
|
8
|
-
readonly youtubePremiumFilter?: ProviderConfig['youtubePremiumFilter'];
|
|
9
|
-
readonly customFilters?: ProviderConfig['customFilters'];
|
|
10
|
-
readonly addFlag?: boolean;
|
|
11
|
-
readonly removeExistingFlag?: boolean;
|
|
12
|
-
readonly tfo?: boolean;
|
|
13
|
-
readonly underlyingProxy?: string;
|
|
14
|
-
readonly mptcp?: boolean;
|
|
15
|
-
readonly renameNode?: ProviderConfig['renameNode'];
|
|
16
|
-
readonly relayUrl?: boolean | string;
|
|
17
|
-
readonly requestUserAgent?: string;
|
|
7
|
+
readonly config: ProviderConfig;
|
|
18
8
|
supportGetSubscriptionUserInfo: boolean;
|
|
19
|
-
|
|
20
|
-
constructor(name: string, config: ProviderConfig);
|
|
9
|
+
passGatewayRequestUserAgent: boolean;
|
|
10
|
+
protected constructor(name: string, config: ProviderConfig);
|
|
21
11
|
static requestCacheableResource(url: string, options?: {
|
|
22
12
|
requestUserAgent?: string;
|
|
23
13
|
}): Promise<SubsciptionCacheItem>;
|
|
14
|
+
determineRequestUserAgent(requestUserAgent?: string | undefined): string | undefined;
|
|
24
15
|
get nextPort(): number;
|
|
25
|
-
getSubscriptionUserInfo
|
|
26
|
-
|
|
27
|
-
}): Promise<SubscriptionUserinfo | undefined>;
|
|
28
|
-
getNodeList({}?: {
|
|
29
|
-
requestUserAgent?: string;
|
|
30
|
-
}): Promise<ReadonlyArray<PossibleNodeConfigType>>;
|
|
16
|
+
getSubscriptionUserInfo: GetSubscriptionUserInfoFunction;
|
|
17
|
+
getNodeList: GetNodeListFunction;
|
|
31
18
|
}
|