surgio 3.11.2 → 3.12.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 +0 -0
- package/package.json +69 -75
- package/build/base-command.d.ts +0 -20
- package/build/base-command.js +0 -75
- package/build/base-command.js.map +0 -1
- package/build/commands/check.d.ts +0 -10
- package/build/commands/check.js +0 -87
- package/build/commands/check.js.map +0 -1
- package/build/commands/clean-cache.d.ts +0 -6
- package/build/commands/clean-cache.js +0 -28
- package/build/commands/clean-cache.js.map +0 -1
- package/build/commands/doctor.d.ts +0 -6
- package/build/commands/doctor.js +0 -20
- package/build/commands/doctor.js.map +0 -1
- package/build/commands/generate.d.ts +0 -7
- package/build/commands/generate.js +0 -94
- package/build/commands/generate.js.map +0 -1
- package/build/commands/lint.d.ts +0 -6
- package/build/commands/lint.js +0 -37
- package/build/commands/lint.js.map +0 -1
- package/build/commands/new.d.ts +0 -6
- package/build/commands/new.js +0 -37
- package/build/commands/new.js.map +0 -1
- package/build/commands/subscriptions.d.ts +0 -7
- package/build/commands/subscriptions.js +0 -95
- package/build/commands/subscriptions.js.map +0 -1
- package/build/commands/upload.d.ts +0 -6
- package/build/commands/upload.js +0 -91
- package/build/commands/upload.js.map +0 -1
- package/build/config.d.ts +0 -6
- package/build/config.js +0 -156
- package/build/config.js.map +0 -1
- package/build/configurables.d.ts +0 -88
- package/build/configurables.js +0 -52
- package/build/configurables.js.map +0 -1
- package/build/constant/constant.d.ts +0 -36
- package/build/constant/constant.js +0 -160
- package/build/constant/constant.js.map +0 -1
- package/build/constant/env.d.ts +0 -9
- package/build/constant/env.js +0 -13
- package/build/constant/env.js.map +0 -1
- package/build/constant/error.d.ts +0 -1
- package/build/constant/error.js +0 -5
- package/build/constant/error.js.map +0 -1
- package/build/constant/index.d.ts +0 -3
- package/build/constant/index.js +0 -20
- package/build/constant/index.js.map +0 -1
- package/build/filters/classes.d.ts +0 -13
- package/build/filters/classes.js +0 -42
- package/build/filters/classes.js.map +0 -1
- package/build/filters/filters.d.ts +0 -25
- package/build/filters/filters.js +0 -107
- package/build/filters/filters.js.map +0 -1
- package/build/filters/index.d.ts +0 -2
- package/build/filters/index.js +0 -32
- package/build/filters/index.js.map +0 -1
- package/build/filters/utils.d.ts +0 -16
- package/build/filters/utils.js +0 -159
- package/build/filters/utils.js.map +0 -1
- package/build/generator/artifact.d.ts +0 -142
- package/build/generator/artifact.js +0 -370
- package/build/generator/artifact.js.map +0 -1
- package/build/generator/index.d.ts +0 -3
- package/build/generator/index.js +0 -25
- package/build/generator/index.js.map +0 -1
- package/build/generator/json-template.d.ts +0 -11
- package/build/generator/json-template.js +0 -66
- package/build/generator/json-template.js.map +0 -1
- package/build/generator/template.d.ts +0 -8
- package/build/generator/template.js +0 -234
- package/build/generator/template.js.map +0 -1
- package/build/hooks/init.d.ts +0 -3
- package/build/hooks/init.js +0 -33
- package/build/hooks/init.js.map +0 -1
- package/build/index.d.ts +0 -85
- package/build/index.js +0 -64
- package/build/index.js.map +0 -1
- package/build/internal.d.ts +0 -5
- package/build/internal.js +0 -25
- package/build/internal.js.map +0 -1
- package/build/misc/deprecation.d.ts +0 -0
- package/build/misc/deprecation.js +0 -2
- package/build/misc/deprecation.js.map +0 -1
- package/build/misc/flag_cn.d.ts +0 -56
- package/build/misc/flag_cn.js +0 -154
- package/build/misc/flag_cn.js.map +0 -1
- package/build/provider/BlackSSLProvider.d.ts +0 -11
- package/build/provider/BlackSSLProvider.js +0 -93
- package/build/provider/BlackSSLProvider.js.map +0 -1
- package/build/provider/ClashProvider.d.ts +0 -24
- package/build/provider/ClashProvider.js +0 -476
- package/build/provider/ClashProvider.js.map +0 -1
- package/build/provider/CustomProvider.d.ts +0 -10
- package/build/provider/CustomProvider.js +0 -144
- package/build/provider/CustomProvider.js.map +0 -1
- package/build/provider/Provider.d.ts +0 -17
- package/build/provider/Provider.js +0 -111
- package/build/provider/Provider.js.map +0 -1
- package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +0 -11
- package/build/provider/ShadowsocksJsonSubscribeProvider.js +0 -86
- package/build/provider/ShadowsocksJsonSubscribeProvider.js.map +0 -1
- package/build/provider/ShadowsocksSubscribeProvider.d.ts +0 -18
- package/build/provider/ShadowsocksSubscribeProvider.js +0 -84
- package/build/provider/ShadowsocksSubscribeProvider.js.map +0 -1
- package/build/provider/ShadowsocksrSubscribeProvider.d.ts +0 -15
- package/build/provider/ShadowsocksrSubscribeProvider.js +0 -93
- package/build/provider/ShadowsocksrSubscribeProvider.js.map +0 -1
- package/build/provider/SsdProvider.d.ts +0 -39
- package/build/provider/SsdProvider.js +0 -138
- package/build/provider/SsdProvider.js.map +0 -1
- package/build/provider/TrojanProvider.d.ts +0 -24
- package/build/provider/TrojanProvider.js +0 -98
- package/build/provider/TrojanProvider.js.map +0 -1
- package/build/provider/V2rayNSubscribeProvider.d.ts +0 -25
- package/build/provider/V2rayNSubscribeProvider.js +0 -181
- package/build/provider/V2rayNSubscribeProvider.js.map +0 -1
- package/build/provider/index.d.ts +0 -17
- package/build/provider/index.js +0 -54
- package/build/provider/index.js.map +0 -1
- package/build/provider/types.d.ts +0 -18
- package/build/provider/types.js +0 -3
- package/build/provider/types.js.map +0 -1
- package/build/redis.d.ts +0 -9
- package/build/redis.js +0 -63
- package/build/redis.js.map +0 -1
- package/build/types.d.ts +0 -138
- package/build/types.js +0 -31
- package/build/types.js.map +0 -1
- package/build/utils/cache.d.ts +0 -23
- package/build/utils/cache.js +0 -98
- package/build/utils/cache.js.map +0 -1
- package/build/utils/clash.d.ts +0 -3
- package/build/utils/clash.js +0 -448
- package/build/utils/clash.js.map +0 -1
- package/build/utils/constant.d.ts +0 -1
- package/build/utils/constant.js +0 -19
- package/build/utils/constant.js.map +0 -1
- package/build/utils/dns.d.ts +0 -4
- package/build/utils/dns.js +0 -51
- package/build/utils/dns.js.map +0 -1
- package/build/utils/doctor.d.ts +0 -2
- package/build/utils/doctor.js +0 -38
- package/build/utils/doctor.js.map +0 -1
- package/build/utils/env-flag.d.ts +0 -9
- package/build/utils/env-flag.js +0 -41
- package/build/utils/env-flag.js.map +0 -1
- package/build/utils/error-helper.d.ts +0 -2
- package/build/utils/error-helper.js +0 -62
- package/build/utils/error-helper.js.map +0 -1
- package/build/utils/errors.d.ts +0 -19
- package/build/utils/errors.js +0 -60
- package/build/utils/errors.js.map +0 -1
- package/build/utils/flag.d.ts +0 -3
- package/build/utils/flag.js +0 -79
- package/build/utils/flag.js.map +0 -1
- package/build/utils/http-client.d.ts +0 -3
- package/build/utils/http-client.js +0 -82
- package/build/utils/http-client.js.map +0 -1
- package/build/utils/index.d.ts +0 -90
- package/build/utils/index.js +0 -529
- package/build/utils/index.js.map +0 -1
- package/build/utils/linter.d.ts +0 -4
- package/build/utils/linter.js +0 -49
- package/build/utils/linter.js.map +0 -1
- package/build/utils/loon.d.ts +0 -3
- package/build/utils/loon.js +0 -236
- package/build/utils/loon.js.map +0 -1
- package/build/utils/quantumult.d.ts +0 -6
- package/build/utils/quantumult.js +0 -240
- package/build/utils/quantumult.js.map +0 -1
- package/build/utils/relayable-url.d.ts +0 -1
- package/build/utils/relayable-url.js +0 -18
- package/build/utils/relayable-url.js.map +0 -1
- package/build/utils/remote-snippet.d.ts +0 -8
- package/build/utils/remote-snippet.js +0 -198
- package/build/utils/remote-snippet.js.map +0 -1
- package/build/utils/singbox.d.ts +0 -3
- package/build/utils/singbox.js +0 -377
- package/build/utils/singbox.js.map +0 -1
- package/build/utils/ss.d.ts +0 -3
- package/build/utils/ss.js +0 -97
- package/build/utils/ss.js.map +0 -1
- package/build/utils/ssr.d.ts +0 -7
- package/build/utils/ssr.js +0 -53
- package/build/utils/ssr.js.map +0 -1
- package/build/utils/subscription.d.ts +0 -11
- package/build/utils/subscription.js +0 -68
- package/build/utils/subscription.js.map +0 -1
- package/build/utils/surfboard.d.ts +0 -7
- package/build/utils/surfboard.js +0 -184
- package/build/utils/surfboard.js.map +0 -1
- package/build/utils/surge.d.ts +0 -8
- package/build/utils/surge.js +0 -407
- package/build/utils/surge.js.map +0 -1
- package/build/utils/time.d.ts +0 -1
- package/build/utils/time.js +0 -6
- package/build/utils/time.js.map +0 -1
- package/build/utils/tmp-helper.d.ts +0 -30
- package/build/utils/tmp-helper.js +0 -102
- package/build/utils/tmp-helper.js.map +0 -1
- package/build/utils/trojan.d.ts +0 -2
- package/build/utils/trojan.js +0 -38
- package/build/utils/trojan.js.map +0 -1
- package/build/utils/useragent.d.ts +0 -18
- package/build/utils/useragent.js +0 -210
- package/build/utils/useragent.js.map +0 -1
- package/build/validators/artifact.d.ts +0 -44
- package/build/validators/artifact.js +0 -26
- package/build/validators/artifact.js.map +0 -1
- package/build/validators/common.d.ts +0 -377
- package/build/validators/common.js +0 -106
- package/build/validators/common.js.map +0 -1
- package/build/validators/filter.d.ts +0 -10
- package/build/validators/filter.js +0 -15
- package/build/validators/filter.js.map +0 -1
- package/build/validators/hooks.d.ts +0 -9
- package/build/validators/hooks.js +0 -11
- package/build/validators/hooks.js.map +0 -1
- package/build/validators/http.d.ts +0 -366
- package/build/validators/http.js +0 -23
- package/build/validators/http.js.map +0 -1
- package/build/validators/hysteria2.d.ts +0 -196
- package/build/validators/hysteria2.js +0 -15
- package/build/validators/hysteria2.js.map +0 -1
- package/build/validators/index.d.ts +0 -17
- package/build/validators/index.js +0 -34
- package/build/validators/index.js.map +0 -1
- package/build/validators/provider.d.ts +0 -120
- package/build/validators/provider.js +0 -46
- package/build/validators/provider.js.map +0 -1
- package/build/validators/shadowsocks.d.ts +0 -252
- package/build/validators/shadowsocks.js +0 -31
- package/build/validators/shadowsocks.js.map +0 -1
- package/build/validators/shadowsocksr.d.ts +0 -184
- package/build/validators/shadowsocksr.js +0 -19
- package/build/validators/shadowsocksr.js.map +0 -1
- package/build/validators/snell.d.ts +0 -178
- package/build/validators/snell.js +0 -17
- package/build/validators/snell.js.map +0 -1
- package/build/validators/socks5.d.ts +0 -196
- package/build/validators/socks5.js +0 -15
- package/build/validators/socks5.js.map +0 -1
- package/build/validators/surgio-config.d.ts +0 -387
- package/build/validators/surgio-config.js +0 -101
- package/build/validators/surgio-config.js.map +0 -1
- package/build/validators/trojan.d.ts +0 -255
- package/build/validators/trojan.js +0 -16
- package/build/validators/trojan.js.map +0 -1
- package/build/validators/tuic.d.ts +0 -741
- package/build/validators/tuic.js +0 -21
- package/build/validators/tuic.js.map +0 -1
- package/build/validators/vless.d.ts +0 -389
- package/build/validators/vless.js +0 -31
- package/build/validators/vless.js.map +0 -1
- package/build/validators/vmess.d.ts +0 -425
- package/build/validators/vmess.js +0 -86
- package/build/validators/vmess.js.map +0 -1
- package/build/validators/wireguard.d.ts +0 -230
- package/build/validators/wireguard.js +0 -26
- package/build/validators/wireguard.js.map +0 -1
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.parseSsdConfig = exports.getSsdSubscription = void 0;
|
|
7
|
-
const assert_1 = __importDefault(require("assert"));
|
|
8
|
-
const logger_1 = require("@surgio/logger");
|
|
9
|
-
const bytes_1 = __importDefault(require("bytes"));
|
|
10
|
-
const zod_1 = require("zod");
|
|
11
|
-
const types_1 = require("../types");
|
|
12
|
-
const utils_1 = require("../utils");
|
|
13
|
-
const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
|
|
14
|
-
const Provider_1 = __importDefault(require("./Provider"));
|
|
15
|
-
const logger = (0, logger_1.createLogger)({
|
|
16
|
-
service: 'surgio:SsdProvider',
|
|
17
|
-
});
|
|
18
|
-
class SsdProvider extends Provider_1.default {
|
|
19
|
-
#originalUrl;
|
|
20
|
-
udpRelay;
|
|
21
|
-
constructor(name, config) {
|
|
22
|
-
super(name, config);
|
|
23
|
-
const schema = zod_1.z.object({
|
|
24
|
-
url: zod_1.z.string().url(),
|
|
25
|
-
udpRelay: zod_1.z.boolean().optional(),
|
|
26
|
-
});
|
|
27
|
-
const result = schema.safeParse(config);
|
|
28
|
-
// istanbul ignore next
|
|
29
|
-
if (!result.success) {
|
|
30
|
-
throw new utils_1.SurgioError('SsdProvider 配置校验失败', {
|
|
31
|
-
cause: result.error,
|
|
32
|
-
providerName: name,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
this.#originalUrl = result.data.url;
|
|
36
|
-
this.udpRelay = result.data.udpRelay;
|
|
37
|
-
this.supportGetSubscriptionUserInfo = true;
|
|
38
|
-
}
|
|
39
|
-
// istanbul ignore next
|
|
40
|
-
get url() {
|
|
41
|
-
return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
|
|
42
|
-
}
|
|
43
|
-
getSubscriptionUserInfo = async (params = {}) => {
|
|
44
|
-
const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
|
|
45
|
-
const { subscriptionUserinfo } = await (0, exports.getSsdSubscription)(this.url, this.udpRelay, requestUserAgent);
|
|
46
|
-
if (subscriptionUserinfo) {
|
|
47
|
-
return subscriptionUserinfo;
|
|
48
|
-
}
|
|
49
|
-
return undefined;
|
|
50
|
-
};
|
|
51
|
-
getNodeList = async (params = {}) => {
|
|
52
|
-
const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
|
|
53
|
-
const { nodeList } = await (0, exports.getSsdSubscription)(this.url, this.udpRelay, requestUserAgent);
|
|
54
|
-
if (this.config.hooks?.afterNodeListResponse) {
|
|
55
|
-
const newList = await this.config.hooks.afterNodeListResponse(nodeList, params);
|
|
56
|
-
if (newList) {
|
|
57
|
-
return newList;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return nodeList;
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
exports.default = SsdProvider;
|
|
64
|
-
// 协议定义:https://github.com/TheCGDF/SSD-Windows/wiki/HTTP%E8%AE%A2%E9%98%85%E5%8D%8F%E5%AE%9A
|
|
65
|
-
const getSsdSubscription = async (url, udpRelay, requestUserAgent) => {
|
|
66
|
-
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
67
|
-
const response = await Provider_1.default.requestCacheableResource(url, {
|
|
68
|
-
requestUserAgent,
|
|
69
|
-
});
|
|
70
|
-
// istanbul ignore next
|
|
71
|
-
if (!response.body.startsWith('ssd://')) {
|
|
72
|
-
throw new Error(`暂仅支持 ssd:// 开头的订阅地址,${url} 无法处理`);
|
|
73
|
-
}
|
|
74
|
-
const base64 = response.body.replace('ssd://', '');
|
|
75
|
-
const data = JSON.parse((0, utils_1.fromBase64)(base64));
|
|
76
|
-
const { servers, traffic_used, traffic_total, expiry } = data;
|
|
77
|
-
const nodeList = servers.map((server) => (0, exports.parseSsdConfig)(data, server, udpRelay));
|
|
78
|
-
if (!response.subscriptionUserinfo &&
|
|
79
|
-
traffic_used &&
|
|
80
|
-
traffic_total &&
|
|
81
|
-
expiry) {
|
|
82
|
-
response.subscriptionUserinfo = {
|
|
83
|
-
upload: 0,
|
|
84
|
-
download: bytes_1.default.parse(`${traffic_used}GB`),
|
|
85
|
-
total: bytes_1.default.parse(`${traffic_total}GB`),
|
|
86
|
-
expire: Math.floor(new Date(expiry).getTime() / 1000),
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
nodeList: nodeList.filter((item) => item !== undefined),
|
|
91
|
-
subscriptionUserinfo: response.subscriptionUserinfo,
|
|
92
|
-
};
|
|
93
|
-
};
|
|
94
|
-
exports.getSsdSubscription = getSsdSubscription;
|
|
95
|
-
const parseSsdConfig = (globalConfig, server, udpRelay) => {
|
|
96
|
-
const { airport, port, encryption, password } = globalConfig;
|
|
97
|
-
const plugin = server.plugin ?? globalConfig.plugin;
|
|
98
|
-
const pluginOptsString = server.plugin_options ?? globalConfig.plugin_options;
|
|
99
|
-
const pluginOpts = pluginOptsString
|
|
100
|
-
? (0, utils_1.decodeStringList)(pluginOptsString.split(';'))
|
|
101
|
-
: {};
|
|
102
|
-
// istanbul ignore next
|
|
103
|
-
if (plugin && !['simple-obfs', 'v2ray-plugin'].includes(plugin)) {
|
|
104
|
-
logger.warn(`不支持从 SSD 订阅中读取 ${plugin} 类型的 Shadowsocks 节点,节点 ${server.remarks} 会被省略`);
|
|
105
|
-
return undefined;
|
|
106
|
-
}
|
|
107
|
-
// istanbul ignore next
|
|
108
|
-
if (plugin === 'v2ray-plugin' &&
|
|
109
|
-
pluginOpts.mode.toLowerCase() === 'quic') {
|
|
110
|
-
logger.warn(`不支持从 SSD 订阅中读取 QUIC 模式的 Shadowsocks 节点,节点 ${server.remarks} 会被省略`);
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
return {
|
|
114
|
-
type: types_1.NodeTypeEnum.Shadowsocks,
|
|
115
|
-
nodeName: server.remarks ?? `${airport} ${server.server}:${server.port ?? port}`,
|
|
116
|
-
hostname: server.server,
|
|
117
|
-
port: server.port ?? port,
|
|
118
|
-
method: server.encryption ?? encryption,
|
|
119
|
-
password: server.password ?? password,
|
|
120
|
-
udpRelay: udpRelay === true,
|
|
121
|
-
// obfs-local
|
|
122
|
-
...(plugin && plugin === 'simple-obfs'
|
|
123
|
-
? {
|
|
124
|
-
obfs: pluginOpts.obfs,
|
|
125
|
-
obfsHost: pluginOpts['obfs-host'] || 'www.bing.com',
|
|
126
|
-
}
|
|
127
|
-
: null),
|
|
128
|
-
// v2ray-plugin
|
|
129
|
-
...(plugin && plugin === 'v2ray-plugin'
|
|
130
|
-
? {
|
|
131
|
-
obfs: pluginOpts.tls ? 'wss' : 'ws',
|
|
132
|
-
obfsHost: pluginOpts.host,
|
|
133
|
-
}
|
|
134
|
-
: null),
|
|
135
|
-
};
|
|
136
|
-
};
|
|
137
|
-
exports.parseSsdConfig = parseSsdConfig;
|
|
138
|
-
//# sourceMappingURL=SsdProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SsdProvider.js","sourceRoot":"","sources":["../../src/provider/SsdProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { SubscriptionUserinfo, TrojanNodeConfig, TrojanProviderConfig } from '../types';
|
|
2
|
-
import Provider from './Provider';
|
|
3
|
-
import { GetNodeListFunction, GetSubscriptionUserInfoFunction } from './types';
|
|
4
|
-
export default class TrojanProvider extends Provider {
|
|
5
|
-
#private;
|
|
6
|
-
readonly udpRelay?: boolean;
|
|
7
|
-
readonly tls13?: boolean;
|
|
8
|
-
constructor(name: string, config: TrojanProviderConfig);
|
|
9
|
-
get url(): string;
|
|
10
|
-
getSubscriptionUserInfo: GetSubscriptionUserInfoFunction;
|
|
11
|
-
getNodeList: GetNodeListFunction;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* @see https://github.com/trojan-gfw/trojan-url/blob/master/trojan-url.py
|
|
15
|
-
*/
|
|
16
|
-
export declare const getTrojanSubscription: ({ url, udpRelay, tls13, requestUserAgent, }: {
|
|
17
|
-
url: string;
|
|
18
|
-
udpRelay?: boolean | undefined;
|
|
19
|
-
tls13?: boolean | undefined;
|
|
20
|
-
requestUserAgent?: string | undefined;
|
|
21
|
-
}) => Promise<{
|
|
22
|
-
readonly nodeList: Array<TrojanNodeConfig>;
|
|
23
|
-
readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
|
|
24
|
-
}>;
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getTrojanSubscription = void 0;
|
|
7
|
-
const assert_1 = __importDefault(require("assert"));
|
|
8
|
-
const zod_1 = require("zod");
|
|
9
|
-
const utils_1 = require("../utils");
|
|
10
|
-
const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
|
|
11
|
-
const trojan_1 = require("../utils/trojan");
|
|
12
|
-
const Provider_1 = __importDefault(require("./Provider"));
|
|
13
|
-
class TrojanProvider extends Provider_1.default {
|
|
14
|
-
#originalUrl;
|
|
15
|
-
udpRelay;
|
|
16
|
-
tls13;
|
|
17
|
-
constructor(name, config) {
|
|
18
|
-
super(name, config);
|
|
19
|
-
const schema = zod_1.z.object({
|
|
20
|
-
url: zod_1.z.string().url(),
|
|
21
|
-
udpRelay: zod_1.z.boolean().optional(),
|
|
22
|
-
tls13: zod_1.z.boolean().optional(),
|
|
23
|
-
});
|
|
24
|
-
const result = schema.safeParse(config);
|
|
25
|
-
// istanbul ignore next
|
|
26
|
-
if (!result.success) {
|
|
27
|
-
throw new utils_1.SurgioError('TrojanProvider 配置校验失败', {
|
|
28
|
-
cause: result.error,
|
|
29
|
-
providerName: name,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
this.#originalUrl = result.data.url;
|
|
33
|
-
this.udpRelay = result.data.udpRelay;
|
|
34
|
-
this.tls13 = result.data.tls13;
|
|
35
|
-
this.supportGetSubscriptionUserInfo = true;
|
|
36
|
-
}
|
|
37
|
-
// istanbul ignore next
|
|
38
|
-
get url() {
|
|
39
|
-
return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
|
|
40
|
-
}
|
|
41
|
-
getSubscriptionUserInfo = async (params = {}) => {
|
|
42
|
-
const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
|
|
43
|
-
const { subscriptionUserinfo } = await (0, exports.getTrojanSubscription)({
|
|
44
|
-
url: this.url,
|
|
45
|
-
udpRelay: this.udpRelay,
|
|
46
|
-
tls13: this.tls13,
|
|
47
|
-
requestUserAgent: requestUserAgent || this.config.requestUserAgent,
|
|
48
|
-
});
|
|
49
|
-
if (subscriptionUserinfo) {
|
|
50
|
-
return subscriptionUserinfo;
|
|
51
|
-
}
|
|
52
|
-
return undefined;
|
|
53
|
-
};
|
|
54
|
-
getNodeList = async (params = {}) => {
|
|
55
|
-
const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
|
|
56
|
-
const { nodeList } = await (0, exports.getTrojanSubscription)({
|
|
57
|
-
url: this.url,
|
|
58
|
-
udpRelay: this.udpRelay,
|
|
59
|
-
tls13: this.tls13,
|
|
60
|
-
requestUserAgent: requestUserAgent,
|
|
61
|
-
});
|
|
62
|
-
if (this.config.hooks?.afterNodeListResponse) {
|
|
63
|
-
const newList = await this.config.hooks.afterNodeListResponse(nodeList, params);
|
|
64
|
-
if (newList) {
|
|
65
|
-
return newList;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return nodeList;
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
exports.default = TrojanProvider;
|
|
72
|
-
/**
|
|
73
|
-
* @see https://github.com/trojan-gfw/trojan-url/blob/master/trojan-url.py
|
|
74
|
-
*/
|
|
75
|
-
const getTrojanSubscription = async ({ url, udpRelay, tls13, requestUserAgent, }) => {
|
|
76
|
-
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
77
|
-
const response = await Provider_1.default.requestCacheableResource(url, {
|
|
78
|
-
requestUserAgent: requestUserAgent || 'shadowrocket',
|
|
79
|
-
});
|
|
80
|
-
const config = (0, utils_1.fromBase64)(response.body);
|
|
81
|
-
const nodeList = config
|
|
82
|
-
.split('\n')
|
|
83
|
-
.filter((item) => !!item && item.startsWith('trojan://'))
|
|
84
|
-
.map((item) => {
|
|
85
|
-
const nodeConfig = (0, trojan_1.parseTrojanUri)(item);
|
|
86
|
-
return {
|
|
87
|
-
...nodeConfig,
|
|
88
|
-
udpRelay,
|
|
89
|
-
tls13,
|
|
90
|
-
};
|
|
91
|
-
});
|
|
92
|
-
return {
|
|
93
|
-
nodeList,
|
|
94
|
-
subscriptionUserinfo: response.subscriptionUserinfo,
|
|
95
|
-
};
|
|
96
|
-
};
|
|
97
|
-
exports.getTrojanSubscription = getTrojanSubscription;
|
|
98
|
-
//# sourceMappingURL=TrojanProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TrojanProvider.js","sourceRoot":"","sources":["../../src/provider/TrojanProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ShadowsocksNodeConfig, V2rayNSubscribeProviderConfig, VmessNodeConfig } from '../types';
|
|
2
|
-
import Provider from './Provider';
|
|
3
|
-
import { GetNodeListFunction } from './types';
|
|
4
|
-
export default class V2rayNSubscribeProvider extends Provider {
|
|
5
|
-
#private;
|
|
6
|
-
readonly compatibleMode?: boolean;
|
|
7
|
-
readonly skipCertVerify?: boolean;
|
|
8
|
-
readonly udpRelay?: boolean;
|
|
9
|
-
readonly tls13?: boolean;
|
|
10
|
-
constructor(name: string, config: V2rayNSubscribeProviderConfig);
|
|
11
|
-
get url(): string;
|
|
12
|
-
getNodeList: GetNodeListFunction;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* @see https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2)
|
|
16
|
-
*/
|
|
17
|
-
export declare const getV2rayNSubscription: ({ url, isCompatibleMode, skipCertVerify, tls13, udpRelay, requestUserAgent, }: {
|
|
18
|
-
url: string;
|
|
19
|
-
isCompatibleMode?: boolean | undefined;
|
|
20
|
-
skipCertVerify?: boolean | undefined;
|
|
21
|
-
udpRelay?: boolean | undefined;
|
|
22
|
-
tls13?: boolean | undefined;
|
|
23
|
-
requestUserAgent?: string | undefined;
|
|
24
|
-
}) => Promise<Array<VmessNodeConfig | ShadowsocksNodeConfig>>;
|
|
25
|
-
export declare const parseJSONConfig: (json: string, isCompatibleMode?: boolean | undefined, skipCertVerify?: boolean | undefined, udpRelay?: boolean | undefined, tls13?: boolean | undefined) => VmessNodeConfig | undefined;
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.parseJSONConfig = exports.getV2rayNSubscription = void 0;
|
|
7
|
-
const assert_1 = __importDefault(require("assert"));
|
|
8
|
-
const logger_1 = require("@surgio/logger");
|
|
9
|
-
const zod_1 = require("zod");
|
|
10
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
-
const types_1 = require("../types");
|
|
12
|
-
const utils_1 = require("../utils");
|
|
13
|
-
const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
|
|
14
|
-
const ss_1 = require("../utils/ss");
|
|
15
|
-
const Provider_1 = __importDefault(require("./Provider"));
|
|
16
|
-
class V2rayNSubscribeProvider extends Provider_1.default {
|
|
17
|
-
compatibleMode;
|
|
18
|
-
skipCertVerify;
|
|
19
|
-
udpRelay;
|
|
20
|
-
tls13;
|
|
21
|
-
#originalUrl;
|
|
22
|
-
constructor(name, config) {
|
|
23
|
-
super(name, config);
|
|
24
|
-
const schema = zod_1.z.object({
|
|
25
|
-
url: zod_1.z.string().url(),
|
|
26
|
-
udpRelay: zod_1.z.boolean().optional(),
|
|
27
|
-
tls13: zod_1.z.boolean().optional(),
|
|
28
|
-
compatibleMode: zod_1.z.boolean().optional(),
|
|
29
|
-
skipCertVerify: zod_1.z.boolean().optional(),
|
|
30
|
-
});
|
|
31
|
-
const result = schema.safeParse(config);
|
|
32
|
-
// istanbul ignore next
|
|
33
|
-
if (!result.success) {
|
|
34
|
-
throw new utils_1.SurgioError('V2rayNSubscribeProvider 配置校验失败', {
|
|
35
|
-
cause: result.error,
|
|
36
|
-
providerName: name,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
this.#originalUrl = result.data.url;
|
|
40
|
-
this.compatibleMode = result.data.compatibleMode;
|
|
41
|
-
this.skipCertVerify = result.data.skipCertVerify;
|
|
42
|
-
this.tls13 = result.data.tls13;
|
|
43
|
-
this.udpRelay = result.data.udpRelay;
|
|
44
|
-
}
|
|
45
|
-
// istanbul ignore next
|
|
46
|
-
get url() {
|
|
47
|
-
return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
|
|
48
|
-
}
|
|
49
|
-
getNodeList = async (params = {}) => {
|
|
50
|
-
const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
|
|
51
|
-
const nodeList = await (0, exports.getV2rayNSubscription)({
|
|
52
|
-
url: this.url,
|
|
53
|
-
skipCertVerify: this.skipCertVerify,
|
|
54
|
-
tls13: this.tls13,
|
|
55
|
-
udpRelay: this.udpRelay,
|
|
56
|
-
isCompatibleMode: this.compatibleMode,
|
|
57
|
-
requestUserAgent: requestUserAgent,
|
|
58
|
-
});
|
|
59
|
-
if (this.config.hooks?.afterNodeListResponse) {
|
|
60
|
-
const newList = await this.config.hooks.afterNodeListResponse(nodeList, params);
|
|
61
|
-
if (newList) {
|
|
62
|
-
return newList;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return nodeList;
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
exports.default = V2rayNSubscribeProvider;
|
|
69
|
-
/**
|
|
70
|
-
* @see https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2)
|
|
71
|
-
*/
|
|
72
|
-
const getV2rayNSubscription = async ({ url, isCompatibleMode, skipCertVerify, tls13, udpRelay, requestUserAgent, }) => {
|
|
73
|
-
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
74
|
-
if (isCompatibleMode) {
|
|
75
|
-
logger_1.logger.warn('运行在兼容模式,请注意生成的节点是否正确。');
|
|
76
|
-
}
|
|
77
|
-
async function requestConfigFromRemote() {
|
|
78
|
-
const response = await Provider_1.default.requestCacheableResource(url, {
|
|
79
|
-
requestUserAgent,
|
|
80
|
-
});
|
|
81
|
-
const configString = response.body;
|
|
82
|
-
const configList = (0, utils_1.fromBase64)(configString)
|
|
83
|
-
.split('\n')
|
|
84
|
-
.filter((item) => !!item)
|
|
85
|
-
.filter((item) => {
|
|
86
|
-
const pick = item.startsWith('vmess://') || item.startsWith('ss://');
|
|
87
|
-
if (!pick) {
|
|
88
|
-
logger_1.logger.warn(`不支持读取 V2rayN 订阅中的节点 ${item},该节点会被省略。`);
|
|
89
|
-
}
|
|
90
|
-
return pick;
|
|
91
|
-
});
|
|
92
|
-
return configList
|
|
93
|
-
.map((item) => {
|
|
94
|
-
if (item.startsWith('vmess://')) {
|
|
95
|
-
return (0, exports.parseJSONConfig)((0, utils_1.fromBase64)(item.replace('vmess://', '')), isCompatibleMode, skipCertVerify, udpRelay, tls13);
|
|
96
|
-
}
|
|
97
|
-
if (item.startsWith('ss://')) {
|
|
98
|
-
return {
|
|
99
|
-
...(0, ss_1.parseSSUri)(item),
|
|
100
|
-
udpRelay: udpRelay === true,
|
|
101
|
-
skipCertVerify: skipCertVerify === true,
|
|
102
|
-
tls13: tls13 === true,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
return undefined;
|
|
106
|
-
})
|
|
107
|
-
.filter((item) => !!item);
|
|
108
|
-
}
|
|
109
|
-
return await requestConfigFromRemote();
|
|
110
|
-
};
|
|
111
|
-
exports.getV2rayNSubscription = getV2rayNSubscription;
|
|
112
|
-
const parseJSONConfig = (json, isCompatibleMode, skipCertVerify, udpRelay, tls13) => {
|
|
113
|
-
const config = JSON.parse(json);
|
|
114
|
-
// istanbul ignore next
|
|
115
|
-
if (!isCompatibleMode && (!config.v || Number(config.v) !== 2)) {
|
|
116
|
-
throw new Error(`该节点 ${config.ps} 可能不是一个有效的 V2rayN 节点。请参考 https://url.royli.dev/Qtrci 进行排查, 或者将解析模式改为兼容模式`);
|
|
117
|
-
}
|
|
118
|
-
// istanbul ignore next
|
|
119
|
-
if (!['tcp', 'ws', 'h2', 'grpc'].includes(config.net)) {
|
|
120
|
-
logger_1.logger.warn(`不支持读取 network 类型为 ${config.net} 的 Vmess 节点,节点 ${config.ps} 会被省略。`);
|
|
121
|
-
return undefined;
|
|
122
|
-
}
|
|
123
|
-
// istanbul ignore next
|
|
124
|
-
if (!['none', 'http'].includes(config.type)) {
|
|
125
|
-
logger_1.logger.warn(`不支持读取 type 类型为 ${config.type} 的 Vmess 节点,节点 ${config.ps} 会被省略。`);
|
|
126
|
-
return undefined;
|
|
127
|
-
}
|
|
128
|
-
const vmessNode = {
|
|
129
|
-
nodeName: config.ps,
|
|
130
|
-
type: types_1.NodeTypeEnum.Vmess,
|
|
131
|
-
hostname: config.add,
|
|
132
|
-
port: config.port,
|
|
133
|
-
method: config.scy || 'auto',
|
|
134
|
-
uuid: config.id,
|
|
135
|
-
alterId: config.aid || '0',
|
|
136
|
-
network: config.net,
|
|
137
|
-
udpRelay: udpRelay === true,
|
|
138
|
-
tls: config.tls === 'tls',
|
|
139
|
-
};
|
|
140
|
-
if (vmessNode.tls) {
|
|
141
|
-
if (skipCertVerify) {
|
|
142
|
-
vmessNode.skipCertVerify = true;
|
|
143
|
-
}
|
|
144
|
-
if (tls13) {
|
|
145
|
-
vmessNode.tls13 = true;
|
|
146
|
-
}
|
|
147
|
-
if (config.sni) {
|
|
148
|
-
vmessNode.sni = config.sni;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
switch (config.net) {
|
|
152
|
-
case 'tcp':
|
|
153
|
-
if (config.type === 'http') {
|
|
154
|
-
vmessNode.network = 'http';
|
|
155
|
-
lodash_1.default.set(vmessNode, 'httpOpts.path', [config.path || '/']);
|
|
156
|
-
lodash_1.default.set(vmessNode, 'httpOpts.method', 'GET');
|
|
157
|
-
if (config.host) {
|
|
158
|
-
lodash_1.default.set(vmessNode, 'httpOpts.headers.Host', config.host);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
break;
|
|
162
|
-
case 'ws':
|
|
163
|
-
lodash_1.default.set(vmessNode, 'wsOpts.path', config.path || '/');
|
|
164
|
-
if (config.host) {
|
|
165
|
-
lodash_1.default.set(vmessNode, 'wsOpts.headers.Host', config.host);
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
case 'h2':
|
|
169
|
-
lodash_1.default.set(vmessNode, 'h2Opts.path', config.path || '/');
|
|
170
|
-
if (config.host) {
|
|
171
|
-
lodash_1.default.set(vmessNode, 'h2Opts.host', [config.host]);
|
|
172
|
-
}
|
|
173
|
-
break;
|
|
174
|
-
case 'grpc':
|
|
175
|
-
lodash_1.default.set(vmessNode, 'grpcOpts.serviceName', config.path);
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
return vmessNode;
|
|
179
|
-
};
|
|
180
|
-
exports.parseJSONConfig = parseJSONConfig;
|
|
181
|
-
//# sourceMappingURL=V2rayNSubscribeProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"V2rayNSubscribeProvider.js","sourceRoot":"","sources":["../../src/provider/V2rayNSubscribeProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { PossibleProviderConfigType } from '../types';
|
|
2
|
-
import { ProviderDefineFunction } from '../configurables';
|
|
3
|
-
import BlackSSLProvider from './BlackSSLProvider';
|
|
4
|
-
import ClashProvider from './ClashProvider';
|
|
5
|
-
import CustomProvider from './CustomProvider';
|
|
6
|
-
import ShadowsocksJsonSubscribeProvider from './ShadowsocksJsonSubscribeProvider';
|
|
7
|
-
import ShadowsocksrSubscribeProvider from './ShadowsocksrSubscribeProvider';
|
|
8
|
-
import ShadowsocksSubscribeProvider from './ShadowsocksSubscribeProvider';
|
|
9
|
-
import SsdProvider from './SsdProvider';
|
|
10
|
-
import TrojanProvider from './TrojanProvider';
|
|
11
|
-
import V2rayNSubscribeProvider from './V2rayNSubscribeProvider';
|
|
12
|
-
import { PossibleProviderType } from './types';
|
|
13
|
-
import Provider from './Provider';
|
|
14
|
-
export { BlackSSLProvider, ClashProvider, CustomProvider, ShadowsocksJsonSubscribeProvider, ShadowsocksrSubscribeProvider, ShadowsocksSubscribeProvider, SsdProvider, TrojanProvider, V2rayNSubscribeProvider, };
|
|
15
|
-
export type { Provider };
|
|
16
|
-
export type * from './types';
|
|
17
|
-
export declare function getProvider(name: string, config: ReturnType<ProviderDefineFunction<any>> | PossibleProviderConfigType): Promise<PossibleProviderType>;
|
package/build/provider/index.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getProvider = exports.V2rayNSubscribeProvider = exports.TrojanProvider = exports.SsdProvider = exports.ShadowsocksSubscribeProvider = exports.ShadowsocksrSubscribeProvider = exports.ShadowsocksJsonSubscribeProvider = exports.CustomProvider = exports.ClashProvider = exports.BlackSSLProvider = void 0;
|
|
7
|
-
const types_1 = require("../types");
|
|
8
|
-
const BlackSSLProvider_1 = __importDefault(require("./BlackSSLProvider"));
|
|
9
|
-
exports.BlackSSLProvider = BlackSSLProvider_1.default;
|
|
10
|
-
const ClashProvider_1 = __importDefault(require("./ClashProvider"));
|
|
11
|
-
exports.ClashProvider = ClashProvider_1.default;
|
|
12
|
-
const CustomProvider_1 = __importDefault(require("./CustomProvider"));
|
|
13
|
-
exports.CustomProvider = CustomProvider_1.default;
|
|
14
|
-
const ShadowsocksJsonSubscribeProvider_1 = __importDefault(require("./ShadowsocksJsonSubscribeProvider"));
|
|
15
|
-
exports.ShadowsocksJsonSubscribeProvider = ShadowsocksJsonSubscribeProvider_1.default;
|
|
16
|
-
const ShadowsocksrSubscribeProvider_1 = __importDefault(require("./ShadowsocksrSubscribeProvider"));
|
|
17
|
-
exports.ShadowsocksrSubscribeProvider = ShadowsocksrSubscribeProvider_1.default;
|
|
18
|
-
const ShadowsocksSubscribeProvider_1 = __importDefault(require("./ShadowsocksSubscribeProvider"));
|
|
19
|
-
exports.ShadowsocksSubscribeProvider = ShadowsocksSubscribeProvider_1.default;
|
|
20
|
-
const SsdProvider_1 = __importDefault(require("./SsdProvider"));
|
|
21
|
-
exports.SsdProvider = SsdProvider_1.default;
|
|
22
|
-
const TrojanProvider_1 = __importDefault(require("./TrojanProvider"));
|
|
23
|
-
exports.TrojanProvider = TrojanProvider_1.default;
|
|
24
|
-
const V2rayNSubscribeProvider_1 = __importDefault(require("./V2rayNSubscribeProvider"));
|
|
25
|
-
exports.V2rayNSubscribeProvider = V2rayNSubscribeProvider_1.default;
|
|
26
|
-
async function getProvider(name, config) {
|
|
27
|
-
if (typeof config === 'function') {
|
|
28
|
-
config = await config();
|
|
29
|
-
}
|
|
30
|
-
switch (config.type) {
|
|
31
|
-
case types_1.SupportProviderEnum.BlackSSL:
|
|
32
|
-
return new BlackSSLProvider_1.default(name, config);
|
|
33
|
-
case types_1.SupportProviderEnum.ShadowsocksJsonSubscribe:
|
|
34
|
-
return new ShadowsocksJsonSubscribeProvider_1.default(name, config);
|
|
35
|
-
case types_1.SupportProviderEnum.ShadowsocksSubscribe:
|
|
36
|
-
return new ShadowsocksSubscribeProvider_1.default(name, config);
|
|
37
|
-
case types_1.SupportProviderEnum.ShadowsocksrSubscribe:
|
|
38
|
-
return new ShadowsocksrSubscribeProvider_1.default(name, config);
|
|
39
|
-
case types_1.SupportProviderEnum.Custom:
|
|
40
|
-
return new CustomProvider_1.default(name, config);
|
|
41
|
-
case types_1.SupportProviderEnum.V2rayNSubscribe:
|
|
42
|
-
return new V2rayNSubscribeProvider_1.default(name, config);
|
|
43
|
-
case types_1.SupportProviderEnum.Clash:
|
|
44
|
-
return new ClashProvider_1.default(name, config);
|
|
45
|
-
case types_1.SupportProviderEnum.Ssd:
|
|
46
|
-
return new SsdProvider_1.default(name, config);
|
|
47
|
-
case types_1.SupportProviderEnum.Trojan:
|
|
48
|
-
return new TrojanProvider_1.default(name, config);
|
|
49
|
-
default:
|
|
50
|
-
throw new Error(`Unsupported provider type: ${config.type}`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.getProvider = getProvider;
|
|
54
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":";;;;;;AAAA,oCAA0E;AAG1E,0EAAiD;AAa/C,2BAbK,0BAAgB,CAaL;AAZlB,oEAA2C;AAazC,wBAbK,uBAAa,CAaL;AAZf,sEAA6C;AAa3C,yBAbK,wBAAc,CAaL;AAZhB,0GAAiF;AAa/E,2CAbK,0CAAgC,CAaL;AAZlC,oGAA2E;AAazE,wCAbK,uCAA6B,CAaL;AAZ/B,kGAAyE;AAavE,uCAbK,sCAA4B,CAaL;AAZ9B,gEAAuC;AAarC,sBAbK,qBAAW,CAaL;AAZb,sEAA6C;AAa3C,yBAbK,wBAAc,CAaL;AAZhB,wFAA+D;AAa7D,kCAbK,iCAAuB,CAaL;AAMlB,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,MAA4E;IAE5E,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;IACzB,CAAC;IAED,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,2BAAmB,CAAC,QAAQ;YAC/B,OAAO,IAAI,0BAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAE3C,KAAK,2BAAmB,CAAC,wBAAwB;YAC/C,OAAO,IAAI,0CAAgC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAE3D,KAAK,2BAAmB,CAAC,oBAAoB;YAC3C,OAAO,IAAI,sCAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEvD,KAAK,2BAAmB,CAAC,qBAAqB;YAC5C,OAAO,IAAI,uCAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAExD,KAAK,2BAAmB,CAAC,MAAM;YAC7B,OAAO,IAAI,wBAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEzC,KAAK,2BAAmB,CAAC,eAAe;YACtC,OAAO,IAAI,iCAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAElD,KAAK,2BAAmB,CAAC,KAAK;YAC5B,OAAO,IAAI,uBAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAExC,KAAK,2BAAmB,CAAC,GAAG;YAC1B,OAAO,IAAI,qBAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEtC,KAAK,2BAAmB,CAAC,MAAM;YAC7B,OAAO,IAAI,wBAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEzC;YACE,MAAM,IAAI,KAAK,CAAC,8BAA+B,MAAc,CAAC,IAAI,EAAE,CAAC,CAAA;IACzE,CAAC;AACH,CAAC;AAvCD,kCAuCC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { PossibleNodeConfigType, SubscriptionUserinfo } from '../types';
|
|
2
|
-
import BlackSSLProvider from './BlackSSLProvider';
|
|
3
|
-
import ClashProvider from './ClashProvider';
|
|
4
|
-
import CustomProvider from './CustomProvider';
|
|
5
|
-
import ShadowsocksJsonSubscribeProvider from './ShadowsocksJsonSubscribeProvider';
|
|
6
|
-
import ShadowsocksrSubscribeProvider from './ShadowsocksrSubscribeProvider';
|
|
7
|
-
import ShadowsocksSubscribeProvider from './ShadowsocksSubscribeProvider';
|
|
8
|
-
import SsdProvider from './SsdProvider';
|
|
9
|
-
import TrojanProvider from './TrojanProvider';
|
|
10
|
-
import V2rayNSubscribeProvider from './V2rayNSubscribeProvider';
|
|
11
|
-
export type PossibleProviderType = BlackSSLProvider | ShadowsocksJsonSubscribeProvider | ShadowsocksSubscribeProvider | CustomProvider | V2rayNSubscribeProvider | ShadowsocksrSubscribeProvider | ClashProvider | SsdProvider | TrojanProvider;
|
|
12
|
-
export type GetNodeListParams = Record<string, unknown> & {
|
|
13
|
-
requestUserAgent?: string;
|
|
14
|
-
};
|
|
15
|
-
export type GetNodeListFunction = (params?: GetNodeListParams) => Promise<ReadonlyArray<PossibleNodeConfigType>>;
|
|
16
|
-
export type GetSubscriptionUserInfoFunction = (params?: {
|
|
17
|
-
requestUserAgent?: string;
|
|
18
|
-
}) => Promise<SubscriptionUserinfo | undefined>;
|
package/build/provider/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":""}
|
package/build/redis.d.ts
DELETED