surgio 2.18.2 → 2.19.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/build/command/check.js +7 -11
- package/build/command/clean-cache.d.ts +1 -1
- package/build/command/clean-cache.js +10 -2
- package/build/command/doctor.js +6 -14
- package/build/command/generate.js +10 -12
- package/build/command/lint.js +1 -1
- package/build/command/new.js +5 -13
- package/build/command/subscriptions.js +5 -10
- package/build/command/upload.js +9 -13
- package/build/constant/constant.d.ts +4 -0
- package/build/constant/constant.js +6 -2
- package/build/generator/template.d.ts +1 -1
- package/build/index.d.ts +7 -1
- package/build/index.js +12 -13
- package/build/misc/flag_cn.d.ts +15 -1
- package/build/misc/flag_cn.js +69 -30
- package/build/provider/ClashProvider.d.ts +1 -1
- package/build/provider/Provider.js +47 -24
- package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +1 -1
- package/build/provider/ShadowsocksSubscribeProvider.d.ts +1 -1
- package/build/provider/ShadowsocksrSubscribeProvider.d.ts +1 -1
- package/build/provider/SsdProvider.d.ts +2 -2
- package/build/redis.d.ts +9 -0
- package/build/redis.js +61 -0
- package/build/types.d.ts +8 -1
- package/build/utils/cache.d.ts +13 -1
- package/build/utils/cache.js +41 -3
- package/build/utils/clash.d.ts +2 -2
- package/build/utils/command.d.ts +2 -0
- package/build/utils/command.js +23 -0
- package/build/utils/config.d.ts +3 -1
- package/build/utils/config.js +41 -3
- package/build/utils/filter.d.ts +4 -4
- package/build/utils/http-client.d.ts +1 -1
- package/build/utils/index.d.ts +8 -5
- package/build/utils/index.js +22 -5
- package/build/utils/linter.d.ts +1 -1
- package/build/utils/loon.d.ts +1 -1
- package/build/utils/patch-proxy.js +2 -7
- package/build/utils/quantumult.d.ts +2 -2
- package/build/utils/remote-snippet.d.ts +1 -1
- package/build/utils/remote-snippet.js +8 -5
- package/build/utils/ss.js +13 -15
- package/build/utils/ssr.js +4 -7
- package/build/utils/surge.d.ts +1 -1
- package/build/utils/tmp-helper.d.ts +21 -7
- package/build/utils/tmp-helper.js +47 -16
- package/build/utils/trojan.js +4 -7
- package/build/utils/v2ray.d.ts +1 -1
- package/build/utils/v2ray.js +6 -8
- package/package.json +10 -20
package/build/misc/flag_cn.d.ts
CHANGED
|
@@ -5,34 +5,48 @@ declare const _default: {
|
|
|
5
5
|
'\uD83C\uDDE6\uD83C\uDDF7': string[];
|
|
6
6
|
'\uD83C\uDDE6\uD83C\uDDF9': string[];
|
|
7
7
|
'\uD83C\uDDE6\uD83C\uDDFA': string[];
|
|
8
|
+
'\uD83C\uDDE7\uD83C\uDDEA': string[];
|
|
9
|
+
'\uD83C\uDDE7\uD83C\uDDEC': string[];
|
|
8
10
|
'\uD83C\uDDF5\uD83C\uDDF0': string[];
|
|
9
11
|
'\uD83C\uDDE7\uD83C\uDDF7': string[];
|
|
10
12
|
'\uD83C\uDDE8\uD83C\uDDE6': string[];
|
|
11
13
|
'\uD83C\uDDE8\uD83C\uDDED': string[];
|
|
12
14
|
'\uD83C\uDDE9\uD83C\uDDEA': string[];
|
|
15
|
+
'\uD83C\uDDE9\uD83C\uDDF0': string[];
|
|
16
|
+
'\uD83C\uDDEA\uD83C\uDDF8': string[];
|
|
17
|
+
'\uD83C\uDDEA\uD83C\uDDFA': string[];
|
|
13
18
|
'\uD83C\uDDEB\uD83C\uDDEE': string[];
|
|
14
19
|
'\uD83C\uDDEB\uD83C\uDDF7': string[];
|
|
15
20
|
'\uD83C\uDDEC\uD83C\uDDE7': string[];
|
|
21
|
+
'\uD83C\uDDFA\uD83C\uDDE6': string[];
|
|
22
|
+
'\uD83C\uDDED\uD83C\uDDFA': string[];
|
|
16
23
|
'\uD83C\uDDED\uD83C\uDDF0': string[];
|
|
24
|
+
'\uD83C\uDDEE\uD83C\uDDF3': string[];
|
|
17
25
|
'\uD83C\uDDEE\uD83C\uDDE9': string[];
|
|
18
26
|
'\uD83C\uDDEE\uD83C\uDDEA': string[];
|
|
19
|
-
'\uD83C\uDDEE\uD83C\
|
|
27
|
+
'\uD83C\uDDEE\uD83C\uDDF1': string[];
|
|
20
28
|
'\uD83C\uDDEE\uD83C\uDDF9': string[];
|
|
21
29
|
'\uD83C\uDDF0\uD83C\uDDF5': string[];
|
|
22
30
|
'\uD83C\uDDF0\uD83C\uDDF7': string[];
|
|
31
|
+
'\uD83C\uDDF1\uD83C\uDDFB': string[];
|
|
32
|
+
'\uD83C\uDDF2\uD83C\uDDFD\uFE0F': string[];
|
|
23
33
|
'\uD83C\uDDF2\uD83C\uDDF4': string[];
|
|
24
34
|
'\uD83C\uDDF2\uD83C\uDDFE': string[];
|
|
25
35
|
'\uD83C\uDDF3\uD83C\uDDF1': string[];
|
|
26
36
|
'\uD83C\uDDF5\uD83C\uDDED': string[];
|
|
27
37
|
'\uD83C\uDDF7\uD83C\uDDF4': string[];
|
|
28
38
|
'\uD83C\uDDF7\uD83C\uDDFA': string[];
|
|
39
|
+
'\uD83C\uDDF8\uD83C\uDDE6': string[];
|
|
40
|
+
'\uD83C\uDDF8\uD83C\uDDEA': string[];
|
|
29
41
|
'\uD83C\uDDF8\uD83C\uDDEC': string[];
|
|
30
42
|
'\uD83C\uDDF9\uD83C\uDDED': string[];
|
|
31
43
|
'\uD83C\uDDF9\uD83C\uDDF7': string[];
|
|
32
44
|
'\uD83C\uDDFA\uD83C\uDDF8': string[];
|
|
33
45
|
'\uD83C\uDDFB\uD83C\uDDF3': string[];
|
|
34
46
|
'\uD83C\uDDFF\uD83C\uDDE6': string[];
|
|
47
|
+
'\uD83C\uDDE6\uD83C\uDDEA': string[];
|
|
35
48
|
'\uD83C\uDDEF\uD83C\uDDF5': string[];
|
|
49
|
+
'\uD83C\uDDF3\uD83C\uDDF4': string[];
|
|
36
50
|
'\uD83C\uDDE8\uD83C\uDDF3': string[];
|
|
37
51
|
};
|
|
38
52
|
export default _default;
|
package/build/misc/flag_cn.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// istanbul ignore file
|
|
3
3
|
// credit: https://github.com/JO2EY/Rules
|
|
4
|
+
// flags from @KOP-XIAO: https://github.com/KOP-XIAO/QuantumultX/blob/master/Scripts/resource-parser.js
|
|
4
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
6
|
exports.TAIWAN = void 0;
|
|
6
7
|
exports.TAIWAN = [
|
|
@@ -11,59 +12,91 @@ exports.TAIWAN = [
|
|
|
11
12
|
'臺',
|
|
12
13
|
'新北',
|
|
13
14
|
'彰化',
|
|
15
|
+
'CHT',
|
|
16
|
+
'HINET',
|
|
14
17
|
];
|
|
15
18
|
exports.default = {
|
|
16
|
-
'🏳️🌈': ['流量', '时间'],
|
|
19
|
+
'🏳️🌈': ['流量', '时间', '过期', 'BANDWIDTH', 'EXPIRE'],
|
|
17
20
|
'🇸🇱': ['应急', '测试节点'],
|
|
18
|
-
'🇦🇷': ['阿根廷'],
|
|
19
|
-
'🇦🇹': ['奥地利', '维也纳'],
|
|
20
|
-
'🇦🇺': ['澳大利亚', '悉尼', '
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
'🇦🇷': ['ARGENTINA', '阿根廷'],
|
|
22
|
+
'🇦🇹': ['AUSTRIA', '奥地利', '维也纳'],
|
|
23
|
+
'🇦🇺': ['AUSTRALIA', '澳大利亚', '澳洲', '墨尔本', '悉尼', 'SYDNEY'],
|
|
24
|
+
'🇧🇪': ['BELGIUM', '比利时'],
|
|
25
|
+
'🇧🇬': ['BULGARIA', '保加利亚'],
|
|
26
|
+
'🇵🇰': ['PAKISTAN', '巴基斯坦'],
|
|
27
|
+
'🇧🇷': ['BRAZIL', '巴西', '圣保罗'],
|
|
28
|
+
'🇨🇦': [
|
|
29
|
+
'CANADA',
|
|
30
|
+
'加拿大',
|
|
31
|
+
'WATERLOO',
|
|
32
|
+
'蒙特利尔',
|
|
33
|
+
'温哥华',
|
|
34
|
+
'楓葉',
|
|
35
|
+
'枫叶',
|
|
36
|
+
'滑铁卢',
|
|
37
|
+
'多伦多',
|
|
38
|
+
],
|
|
39
|
+
'🇨🇭': ['SWITZERLAND', '瑞士', '苏黎世'],
|
|
40
|
+
'🇩🇪': ['GERMAN', '德', '法兰克福'],
|
|
41
|
+
'🇩🇰': ['DENMARK', '丹麦'],
|
|
42
|
+
'🇪🇸': ['SPAIN', '西班牙'],
|
|
43
|
+
'🇪🇺': ['欧盟', '欧罗巴'],
|
|
44
|
+
'🇫🇮': ['FINLAND', '芬兰', '赫尔辛基'],
|
|
45
|
+
'🇫🇷': ['FR', 'FRANCE', '法国', '法國', '巴黎'],
|
|
46
|
+
'🇬🇧': ['UK', 'ENGLAND', 'UNITED KINGDOM', '英', '伦敦'],
|
|
47
|
+
'🇺🇦': ['UKRAINE', '乌克兰', '基辅'],
|
|
48
|
+
'🇭🇺': ['HUNGARY', '匈牙利'],
|
|
49
|
+
'🇭🇰': ['HK', '港', 'HONGKONG', 'HONG KONG', 'HGC', 'WTT', 'CMI'],
|
|
50
|
+
'🇮🇳': ['INDIA', '印度', '孟买', 'MUMBAI'],
|
|
51
|
+
'🇮🇩': ['INDONESIA', '印尼', '印度尼西亚', '雅加达'],
|
|
52
|
+
'🇮🇪': ['IRELAND', '爱尔兰', '都柏林'],
|
|
53
|
+
'🇮🇱': ['ISRAEL', '以色列'],
|
|
54
|
+
'🇮🇹': ['ITALY', 'NACHASH', '意大利', '米兰', '義大利'],
|
|
34
55
|
'🇰🇵': ['朝鲜'],
|
|
35
|
-
'🇰🇷': ['KR', 'KOREA', '
|
|
36
|
-
'
|
|
37
|
-
'
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'
|
|
56
|
+
'🇰🇷': ['KR', 'KOREA', 'KOR', '首尔', '韩', '韓'],
|
|
57
|
+
'🇱🇻': ['LATVIA', 'LATVIJA', '拉脱维亚'],
|
|
58
|
+
'🇲🇽️': ['MEXICO', '墨西哥'],
|
|
59
|
+
'🇲🇴': ['MACAU', 'MACAO', '澳门', 'CTM'],
|
|
60
|
+
'🇲🇾': ['MALAYSIA', '马来西亚', '吉隆坡'],
|
|
61
|
+
'🇳🇱': ['NETHERLANDS', '荷兰', '荷蘭', '尼德蘭', '阿姆斯特丹'],
|
|
62
|
+
'🇵🇭': ['PHILIPPINES', '菲律宾'],
|
|
63
|
+
'🇷🇴': ['ROMANIA', '罗马尼亚'],
|
|
41
64
|
'🇷🇺': [
|
|
42
65
|
'RU',
|
|
43
66
|
'RUSSIA',
|
|
44
67
|
'普京',
|
|
45
68
|
'俄罗斯',
|
|
69
|
+
'俄羅斯',
|
|
46
70
|
'伯力',
|
|
47
71
|
'莫斯科',
|
|
48
72
|
'圣彼得堡',
|
|
49
73
|
'西伯利亚',
|
|
74
|
+
'京俄',
|
|
75
|
+
'杭俄',
|
|
50
76
|
],
|
|
77
|
+
'🇸🇦': ['SAUDI', '沙特'],
|
|
78
|
+
'🇸🇪': ['SWEDEN', '瑞典'],
|
|
51
79
|
'🇸🇬': [
|
|
52
80
|
'SG',
|
|
53
81
|
'SIN',
|
|
54
82
|
'SINGAPORE',
|
|
55
83
|
'新加坡',
|
|
56
84
|
'狮城',
|
|
57
|
-
'深新',
|
|
58
85
|
'沪新',
|
|
59
86
|
'京新',
|
|
60
87
|
'中新',
|
|
88
|
+
'泉新',
|
|
89
|
+
'穗新',
|
|
90
|
+
'深新',
|
|
91
|
+
'杭新',
|
|
61
92
|
'广新',
|
|
62
93
|
],
|
|
63
|
-
'🇹🇭': ['泰', '曼谷'],
|
|
64
|
-
'🇹🇷': ['土耳其', '伊斯坦布尔'],
|
|
94
|
+
'🇹🇭': ['THAILAND', '泰', '曼谷'],
|
|
95
|
+
'🇹🇷': ['TURKEY', '土耳其', '伊斯坦布尔'],
|
|
65
96
|
'🇺🇸': [
|
|
66
97
|
'US',
|
|
98
|
+
'USA',
|
|
99
|
+
'AMERICA',
|
|
67
100
|
'UNITED STATES',
|
|
68
101
|
'LAX',
|
|
69
102
|
'SFO',
|
|
@@ -74,16 +107,21 @@ exports.default = {
|
|
|
74
107
|
'凤凰城',
|
|
75
108
|
'费利蒙',
|
|
76
109
|
'硅谷',
|
|
110
|
+
'矽谷',
|
|
77
111
|
'拉斯维加斯',
|
|
78
112
|
'洛杉矶',
|
|
79
113
|
'圣何塞',
|
|
80
114
|
'圣克拉拉',
|
|
81
115
|
'西雅图',
|
|
82
116
|
'芝加哥',
|
|
117
|
+
'哥伦布',
|
|
118
|
+
'纽约',
|
|
83
119
|
],
|
|
84
|
-
'🇻🇳': ['越南'],
|
|
85
|
-
'🇿🇦': ['南非'],
|
|
86
|
-
'
|
|
120
|
+
'🇻🇳': ['VIETNAM', '越南', '胡志明'],
|
|
121
|
+
'🇿🇦': ['SOUTH AFRICA', '南非'],
|
|
122
|
+
'🇦🇪': ['UNITED ARAB EMIRATES', '阿联酋', '迪拜'],
|
|
123
|
+
'🇯🇵': ['JP', 'JAPAN', '日', '东京', '大阪', '埼玉', 'NTT', 'KDDI'],
|
|
124
|
+
'🇳🇴': ['NORWAY', '挪威'],
|
|
87
125
|
'🇨🇳': [
|
|
88
126
|
...exports.TAIWAN,
|
|
89
127
|
'CHINA',
|
|
@@ -101,6 +139,7 @@ exports.default = {
|
|
|
101
139
|
'青岛',
|
|
102
140
|
'宁波',
|
|
103
141
|
'镇江',
|
|
142
|
+
'BACK',
|
|
104
143
|
],
|
|
105
144
|
};
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ19jbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9taXNjL2ZsYWdfY24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVCQUF1QjtBQUN2Qix5Q0FBeUM7QUFDekMsdUdBQXVHOzs7QUFFMUYsUUFBQSxNQUFNLEdBQTBCO0lBQzNDLElBQUk7SUFDSixRQUFRO0lBQ1IsSUFBSTtJQUNKLEdBQUc7SUFDSCxHQUFHO0lBQ0gsSUFBSTtJQUNKLElBQUk7SUFDSixLQUFLO0lBQ0wsT0FBTztDQUNSLENBQUM7QUFFRixrQkFBZTtJQUNiLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUM7SUFDbkQsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUN0QixNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0lBQzVCLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQzFELE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDMUIsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUM1QixNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQzVCLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOLFFBQVE7UUFDUixLQUFLO1FBQ0wsVUFBVTtRQUNWLE1BQU07UUFDTixLQUFLO1FBQ0wsSUFBSTtRQUNKLElBQUk7UUFDSixLQUFLO1FBQ0wsS0FBSztLQUNOO0lBQ0QsTUFBTSxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFL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
|
|
@@ -23,5 +23,5 @@ export declare const getClashSubscription: ({ url, udpRelay, tls13, requestUserA
|
|
|
23
23
|
readonly nodeList: ReadonlyArray<SupportConfigTypes>;
|
|
24
24
|
readonly subscriptionUserinfo?: SubscriptionUserinfo;
|
|
25
25
|
}>;
|
|
26
|
-
export declare const parseClashConfig: (proxyList: ReadonlyArray<any>, udpRelay?: boolean
|
|
26
|
+
export declare const parseClashConfig: (proxyList: ReadonlyArray<any>, udpRelay?: boolean, tls13?: boolean) => ReadonlyArray<SupportConfigTypes>;
|
|
27
27
|
export {};
|
|
@@ -28,8 +28,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const logger_1 = require("@surgio/logger");
|
|
30
30
|
const joi_1 = __importDefault(require("joi"));
|
|
31
|
+
const constant_1 = require("../constant");
|
|
31
32
|
const types_1 = require("../types");
|
|
32
33
|
const cache_1 = require("../utils/cache");
|
|
34
|
+
const config_1 = require("../utils/config");
|
|
35
|
+
const env_flag_1 = require("../utils/env-flag");
|
|
33
36
|
const http_client_1 = __importStar(require("../utils/http-client"));
|
|
34
37
|
const subscription_1 = require("../utils/subscription");
|
|
35
38
|
const utils_1 = require("../utils");
|
|
@@ -93,29 +96,49 @@ class Provider {
|
|
|
93
96
|
});
|
|
94
97
|
}
|
|
95
98
|
static async requestCacheableResource(url, options = {}) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
99
|
+
var _a, _b;
|
|
100
|
+
const cacheType = ((_b = (_a = (0, config_1.getConfig)()) === null || _a === void 0 ? void 0 : _a.cache) === null || _b === void 0 ? void 0 : _b.type) || 'default';
|
|
101
|
+
const cacheKey = `${constant_1.CACHE_KEYS.Provider}:${(0, utils_1.toMD5)((0, http_client_1.getUserAgent)(options.requestUserAgent || '') + url)}`;
|
|
102
|
+
const requestResource = async () => {
|
|
103
|
+
const headers = {};
|
|
104
|
+
if (options.requestUserAgent) {
|
|
105
|
+
headers['user-agent'] = (0, http_client_1.getUserAgent)(options.requestUserAgent);
|
|
106
|
+
}
|
|
107
|
+
const res = await http_client_1.default.get(url, {
|
|
108
|
+
responseType: 'text',
|
|
109
|
+
headers,
|
|
110
|
+
});
|
|
111
|
+
const subsciptionCacheItem = {
|
|
112
|
+
body: res.body,
|
|
113
|
+
};
|
|
114
|
+
if (res.headers['subscription-userinfo']) {
|
|
115
|
+
subsciptionCacheItem.subscriptionUserinfo = (0, subscription_1.parseSubscriptionUserInfo)(res.headers['subscription-userinfo']);
|
|
116
|
+
logger.debug('%s received subscription userinfo - raw: %s | parsed: %j', url, res.headers['subscription-userinfo'], subsciptionCacheItem.subscriptionUserinfo);
|
|
117
|
+
}
|
|
118
|
+
return subsciptionCacheItem;
|
|
119
|
+
};
|
|
120
|
+
if (cacheType === 'default') {
|
|
121
|
+
return cache_1.SubscriptionCache.has(cacheKey)
|
|
122
|
+
? cache_1.SubscriptionCache.get(cacheKey)
|
|
123
|
+
: await (async () => {
|
|
124
|
+
const subsciptionCacheItem = await requestResource();
|
|
125
|
+
cache_1.SubscriptionCache.set(cacheKey, subsciptionCacheItem);
|
|
126
|
+
return subsciptionCacheItem;
|
|
127
|
+
})();
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const redisCache = new cache_1.RedisCache();
|
|
131
|
+
const cachedValue = await redisCache.getCache(cacheKey);
|
|
132
|
+
return cachedValue
|
|
133
|
+
? cachedValue
|
|
134
|
+
: await (async () => {
|
|
135
|
+
const subsciptionCacheItem = await requestResource();
|
|
136
|
+
await redisCache.setCache(cacheKey, subsciptionCacheItem, {
|
|
137
|
+
ttl: (0, utils_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
|
|
138
|
+
});
|
|
139
|
+
return subsciptionCacheItem;
|
|
140
|
+
})();
|
|
141
|
+
}
|
|
119
142
|
}
|
|
120
143
|
get nextPort() {
|
|
121
144
|
if (this.startPort) {
|
|
@@ -133,4 +156,4 @@ class Provider {
|
|
|
133
156
|
}
|
|
134
157
|
}
|
|
135
158
|
exports.default = Provider;
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE4QztBQUM5Qyw4Q0FBc0I7QUFFdEIsMENBQXlDO0FBQ3pDLG9DQUtrQjtBQUNsQiwwQ0FJd0I7QUFDeEIsNENBQTRDO0FBQzVDLGdEQUEyRDtBQUMzRCxvRUFBZ0U7QUFDaEUsd0RBQWtFO0FBQ2xFLG9DQUE4QztBQUU5QyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUM7SUFDMUIsT0FBTyxFQUFFLGlCQUFpQjtDQUMzQixDQUFDLENBQUM7QUFFSCxNQUFxQixRQUFRO0lBa0IzQixZQUFtQixJQUFZLEVBQUUsTUFBc0I7UUFBcEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUM3QixNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hCLElBQUksRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2lCQUNmLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQVMsMkJBQW1CLENBQUMsQ0FBQztpQkFDcEQsUUFBUSxFQUFFO1lBQ2IsVUFBVSxFQUFFLGFBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQ3pCLGFBQUcsQ0FBQyxRQUFRLEVBQUUsRUFDZCxhQUFHLENBQUMsTUFBTSxDQUFDO2dCQUNULE1BQU0sRUFBRSxhQUFHLENBQUMsUUFBUSxFQUFFO2dCQUN0QixXQUFXLEVBQUUsYUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRTthQUNwQyxDQUFDLENBQ0g7WUFDRCxhQUFhLEVBQUUsYUFBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FDNUIsYUFBRyxDQUFDLFFBQVEsRUFBRSxFQUNkLGFBQUcsQ0FBQyxNQUFNLENBQUM7Z0JBQ1QsTUFBTSxFQUFFLGFBQUcsQ0FBQyxRQUFR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
|
|
@@ -9,4 +9,4 @@ export default class ShadowsocksJsonSubscribeProvider extends Provider {
|
|
|
9
9
|
requestUserAgent?: string;
|
|
10
10
|
}): ReturnType<typeof getShadowsocksJSONConfig>;
|
|
11
11
|
}
|
|
12
|
-
export declare const getShadowsocksJSONConfig: (url: string, udpRelay?: boolean
|
|
12
|
+
export declare const getShadowsocksJSONConfig: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<ReadonlyArray<ShadowsocksNodeConfig>>;
|
|
@@ -15,7 +15,7 @@ export default class ShadowsocksSubscribeProvider extends Provider {
|
|
|
15
15
|
/**
|
|
16
16
|
* @see https://shadowsocks.org/en/spec/SIP002-URI-Scheme.html
|
|
17
17
|
*/
|
|
18
|
-
export declare const getShadowsocksSubscription: (url: string, udpRelay?: boolean
|
|
18
|
+
export declare const getShadowsocksSubscription: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<{
|
|
19
19
|
readonly nodeList: ReadonlyArray<ShadowsocksNodeConfig>;
|
|
20
20
|
readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
|
|
21
21
|
}>;
|
|
@@ -12,7 +12,7 @@ export default class ShadowsocksrSubscribeProvider extends Provider {
|
|
|
12
12
|
requestUserAgent?: string;
|
|
13
13
|
}): Promise<ReadonlyArray<ShadowsocksrNodeConfig>>;
|
|
14
14
|
}
|
|
15
|
-
export declare const getShadowsocksrSubscription: (url: string, udpRelay?: boolean
|
|
15
|
+
export declare const getShadowsocksrSubscription: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<{
|
|
16
16
|
readonly nodeList: ReadonlyArray<ShadowsocksrNodeConfig>;
|
|
17
17
|
readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
|
|
18
18
|
}>;
|
|
@@ -12,11 +12,11 @@ export default class SsdProvider extends Provider {
|
|
|
12
12
|
requestUserAgent?: string;
|
|
13
13
|
}): Promise<ReadonlyArray<ShadowsocksNodeConfig>>;
|
|
14
14
|
}
|
|
15
|
-
export declare const getSsdSubscription: (url: string, udpRelay?: boolean
|
|
15
|
+
export declare const getSsdSubscription: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<{
|
|
16
16
|
readonly nodeList: ReadonlyArray<ShadowsocksNodeConfig>;
|
|
17
17
|
readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
|
|
18
18
|
}>;
|
|
19
|
-
export declare const parseSsdConfig: (globalConfig: SsdSubscription, server: SsdServer, udpRelay?: boolean
|
|
19
|
+
export declare const parseSsdConfig: (globalConfig: SsdSubscription, server: SsdServer, udpRelay?: boolean) => ShadowsocksNodeConfig | undefined;
|
|
20
20
|
export interface SsdSubscription {
|
|
21
21
|
airport: string;
|
|
22
22
|
port: number;
|
package/build/redis.d.ts
ADDED
package/build/redis.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
const logger_1 = require("@surgio/logger");
|
|
7
|
+
const ioredis_1 = __importDefault(require("ioredis"));
|
|
8
|
+
const constant_1 = require("./constant");
|
|
9
|
+
const logger = (0, logger_1.createLogger)({ service: 'surgio:redis' });
|
|
10
|
+
const prepareRedis = () => {
|
|
11
|
+
let client = null;
|
|
12
|
+
let redisURL = null;
|
|
13
|
+
return {
|
|
14
|
+
hasRedis: () => !!client,
|
|
15
|
+
createRedis(_redisURL, customRedis) {
|
|
16
|
+
if (client && redisURL) {
|
|
17
|
+
logger.debug('Redis client already created with URL: %s', redisURL);
|
|
18
|
+
return client;
|
|
19
|
+
}
|
|
20
|
+
redisURL = _redisURL;
|
|
21
|
+
if (customRedis) {
|
|
22
|
+
client = new customRedis(_redisURL);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
client = new ioredis_1.default(_redisURL);
|
|
26
|
+
}
|
|
27
|
+
return client;
|
|
28
|
+
},
|
|
29
|
+
getRedis() {
|
|
30
|
+
if (!client) {
|
|
31
|
+
throw new Error('Redis client is not initialized');
|
|
32
|
+
}
|
|
33
|
+
return client;
|
|
34
|
+
},
|
|
35
|
+
async destroyRedis() {
|
|
36
|
+
if (client) {
|
|
37
|
+
await client.quit();
|
|
38
|
+
client = null;
|
|
39
|
+
redisURL = null;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
async cleanCache() {
|
|
43
|
+
if (!client) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const keysToRemove = await Promise.all(Object.keys(constant_1.CACHE_KEYS).map((key) => {
|
|
47
|
+
if (!client)
|
|
48
|
+
return;
|
|
49
|
+
return client.keys(`${constant_1.CACHE_KEYS[key]}:*`);
|
|
50
|
+
}));
|
|
51
|
+
await Promise.all(keysToRemove.map((keys) => {
|
|
52
|
+
if (!client || !keys || !keys.length)
|
|
53
|
+
return;
|
|
54
|
+
return client.del(keys);
|
|
55
|
+
}));
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
const redis = prepareRedis();
|
|
60
|
+
exports.default = redis;
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVkaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBOEM7QUFDOUMsc0RBQTRCO0FBRTVCLHlDQUF3QztBQUV4QyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUV6RCxNQUFNLFlBQVksR0FBRyxHQUFHLEVBQUU7SUFDeEIsSUFBSSxNQUFNLEdBQWlCLElBQUksQ0FBQztJQUNoQyxJQUFJLFFBQVEsR0FBa0IsSUFBSSxDQUFDO0lBRW5DLE9BQU87UUFDTCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDeEIsV0FBVyxDQUFDLFNBQWlCLEVBQUUsV0FBaUI7WUFDOUMsSUFBSSxNQUFNLElBQUksUUFBUSxFQUFFO2dCQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNwRSxPQUFPLE1BQU0sQ0FBQzthQUNmO1lBQ0QsUUFBUSxHQUFHLFNBQVMsQ0FBQztZQUVyQixJQUFJLFdBQVcsRUFBRTtnQkFDZixNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLElBQUksaUJBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQjtZQUVELE9BQU8sTUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxRQUFRO1lBQ04sSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7YUFDcEQ7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsS0FBSyxDQUFDLFlBQVk7WUFDaEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ2QsUUFBUSxHQUFHLElBQUksQ0FBQzthQUNqQjtRQUNILENBQUM7UUFDRCxLQUFLLENBQUMsVUFBVTtZQUNkLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTzthQUNSO1lBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTztnQkFFcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcscUJBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUVGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPO2dCQUM3QyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7QUFFN0Isa0JBQWUsS0FBSyxDQUFDIn0=
|
package/build/types.d.ts
CHANGED
|
@@ -21,11 +21,11 @@ export declare enum SupportProviderEnum {
|
|
|
21
21
|
Trojan = "trojan"
|
|
22
22
|
}
|
|
23
23
|
export interface CommandConfig {
|
|
24
|
+
publicUrl: string;
|
|
24
25
|
readonly output: string;
|
|
25
26
|
readonly artifacts: ReadonlyArray<ArtifactConfig>;
|
|
26
27
|
readonly remoteSnippets?: ReadonlyArray<RemoteSnippetConfig>;
|
|
27
28
|
readonly urlBase: string;
|
|
28
|
-
publicUrl: string;
|
|
29
29
|
readonly providerDir: string;
|
|
30
30
|
readonly templateDir: string;
|
|
31
31
|
readonly configDir: string;
|
|
@@ -71,6 +71,10 @@ export interface CommandConfig {
|
|
|
71
71
|
readonly [name: string]: NodeNameFilterType | SortedNodeNameFilterType;
|
|
72
72
|
};
|
|
73
73
|
readonly customParams?: PlainObjectOf<string | boolean | number>;
|
|
74
|
+
readonly cache?: {
|
|
75
|
+
readonly type?: 'redis' | 'default';
|
|
76
|
+
readonly redisUrl?: string;
|
|
77
|
+
};
|
|
74
78
|
}
|
|
75
79
|
export interface RemoteSnippetConfig {
|
|
76
80
|
readonly url: string;
|
|
@@ -109,6 +113,9 @@ export interface ProviderConfig {
|
|
|
109
113
|
readonly renameNode?: (name: string) => string;
|
|
110
114
|
readonly relayUrl?: boolean | string;
|
|
111
115
|
readonly requestUserAgent?: string;
|
|
116
|
+
readonly cache?: {
|
|
117
|
+
readonly type?: 'redis' | 'default';
|
|
118
|
+
};
|
|
112
119
|
}
|
|
113
120
|
export interface BlackSSLProviderConfig extends ProviderConfig {
|
|
114
121
|
readonly username: string;
|
package/build/utils/cache.d.ts
CHANGED
|
@@ -6,4 +6,16 @@ export interface SubsciptionCacheItem {
|
|
|
6
6
|
}
|
|
7
7
|
export declare const ConfigCache: NodeCache;
|
|
8
8
|
export declare const SubscriptionCache: NodeCache;
|
|
9
|
-
export declare
|
|
9
|
+
export declare class RedisCache {
|
|
10
|
+
namespace?: string | undefined;
|
|
11
|
+
private redisClient;
|
|
12
|
+
constructor(namespace?: string | undefined);
|
|
13
|
+
getCacheKey(key: string): string;
|
|
14
|
+
setCache: (key: string, value: unknown, { ttl }?: {
|
|
15
|
+
ttl?: number | undefined;
|
|
16
|
+
}) => Promise<void>;
|
|
17
|
+
getCache: <T>(key: string) => Promise<T | undefined>;
|
|
18
|
+
hasCache: (key: string) => Promise<boolean>;
|
|
19
|
+
deleteCache: (key: string) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export declare const cleanCaches: () => Promise<void>;
|
package/build/utils/cache.js
CHANGED
|
@@ -3,10 +3,11 @@ 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
|
-
exports.cleanCaches = exports.SubscriptionCache = exports.ConfigCache = void 0;
|
|
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
9
|
const index_1 = require("./index");
|
|
10
|
+
const redis_1 = __importDefault(require("../redis"));
|
|
10
11
|
exports.ConfigCache = new node_cache_1.default({
|
|
11
12
|
stdTTL: (0, index_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
|
|
12
13
|
maxKeys: 300,
|
|
@@ -17,9 +18,46 @@ exports.SubscriptionCache = new node_cache_1.default({
|
|
|
17
18
|
maxKeys: 300,
|
|
18
19
|
useClones: false,
|
|
19
20
|
});
|
|
20
|
-
|
|
21
|
+
class RedisCache {
|
|
22
|
+
constructor(namespace) {
|
|
23
|
+
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
|
+
this.redisClient = redis_1.default.getRedis();
|
|
48
|
+
}
|
|
49
|
+
getCacheKey(key) {
|
|
50
|
+
return this.namespace ? `${this.namespace}:${key}` : key;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.RedisCache = RedisCache;
|
|
54
|
+
// istanbul ignore next
|
|
55
|
+
const cleanCaches = async () => {
|
|
21
56
|
exports.ConfigCache.flushAll();
|
|
22
57
|
exports.SubscriptionCache.flushAll();
|
|
58
|
+
if (redis_1.default.hasRedis()) {
|
|
59
|
+
await redis_1.default.cleanCache();
|
|
60
|
+
}
|
|
23
61
|
};
|
|
24
62
|
exports.cleanCaches = cleanCaches;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNERBQW1DO0FBR25DLHlDQUFvRDtBQUNwRCxtQ0FBc0M7QUFDdEMscURBQTZCO0FBT2hCLFFBQUEsV0FBVyxHQUFHLElBQUksb0JBQVMsQ0FBQztJQUN2QyxNQUFNLEVBQUUsSUFBQSxtQkFBVyxFQUFDLElBQUEsaUNBQXNCLEdBQUUsQ0FBQztJQUM3QyxPQUFPLEVBQUUsR0FBRztJQUNaLFNBQVMsRUFBRSxLQUFLO0NBQ2pCLENBQUMsQ0FBQztBQUVVLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxvQkFBUyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxJQUFBLG1CQUFXLEVBQUMsSUFBQSxpQ0FBc0IsR0FBRSxDQUFDO0lBQzdDLE9BQU8sRUFBRSxHQUFHO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDakIsQ0FBQyxDQUFDO0FBRUgsTUFBYSxVQUFVO0lBR3JCLFlBQW1CLFNBQWtCO1FBQWxCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFRckMsYUFBUSxHQUFHLEtBQUssRUFDZCxHQUFXLEVBQ1gsS0FBYyxFQUNkLEVBQUUsR0FBRyxLQUF1QixFQUFFLEVBQzlCLEVBQUU7WUFDRixNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpELElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUM5QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDL0Q7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDMUU7UUFDSCxDQUFDLENBQUM7UUFFRixhQUFRLEdBQUcsS0FBSyxFQUFLLEdBQVcsRUFBMEIsRUFBRTtZQUMxRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVoRSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBTSxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUVGLGFBQVEsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFvQixFQUFFO1lBQ2pELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRW5FLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUM7UUFFRixnQkFBVyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUM7UUF2Q0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0QsQ0FBQztDQW1DRjtBQTVDRCxnQ0E0Q0M7QUFFRCx1QkFBdUI7QUFDaEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDcEMsbUJBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2Qix5QkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUU3QixJQUFJLGVBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNwQixNQUFNLGVBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUMxQjtBQUNILENBQUMsQ0FBQztBQVBXLFFBQUEsV0FBVyxlQU90QiJ9
|
package/build/utils/clash.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { NodeFilterType, NodeNameFilterType, PossibleNodeConfigType, SimpleNodeConfig, SortedNodeNameFilterType } from '../types';
|
|
2
|
-
export declare const getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
3
|
-
export declare const getClashNodeNames: (list: ReadonlyArray<SimpleNodeConfig>, filter?:
|
|
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>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineGlobalOptions = void 0;
|
|
4
|
+
const defineGlobalOptions = (yargs) => {
|
|
5
|
+
yargs.options({
|
|
6
|
+
c: {
|
|
7
|
+
alias: 'config',
|
|
8
|
+
default: './surgio.conf.js',
|
|
9
|
+
description: '配置文件',
|
|
10
|
+
},
|
|
11
|
+
V: {
|
|
12
|
+
alias: 'verbose',
|
|
13
|
+
demandOption: false,
|
|
14
|
+
describe: '打印调试日志',
|
|
15
|
+
type: 'boolean',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
yargs.group(['help', 'version', 'config', 'verbose'], 'Global Options:');
|
|
19
|
+
// 禁用 yargs 内部生成的 help 信息,似乎和 common-bin 的 load 有冲突
|
|
20
|
+
yargs.help(false);
|
|
21
|
+
};
|
|
22
|
+
exports.defineGlobalOptions = defineGlobalOptions;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy9jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVPLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUF5QixFQUFRLEVBQUU7SUFDckUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNaLENBQUMsRUFBRTtZQUNELEtBQUssRUFBRSxRQUFRO1lBQ2YsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixXQUFXLEVBQUUsTUFBTTtTQUNwQjtRQUNELENBQUMsRUFBRTtZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hCLFlBQVksRUFBRSxLQUFLO1lBQ25CLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2hCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFekUsbURBQW1EO0lBQ25ELEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBbkJXLFFBQUEsbUJBQW1CLHVCQW1COUIifQ==
|
package/build/utils/config.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { CommandConfig } from '../types';
|
|
2
|
-
export declare const loadConfig: (cwd: string, configPath: string, override?: Partial<CommandConfig>
|
|
2
|
+
export declare const loadConfig: (cwd: string, configPath: string, override?: Partial<CommandConfig>) => CommandConfig;
|
|
3
|
+
export declare const getConfig: () => CommandConfig;
|
|
4
|
+
export declare const setConfig: <T extends keyof CommandConfig>(key: T, value: CommandConfig[T]) => CommandConfig;
|
|
3
5
|
export declare const normalizeConfig: (cwd: string, userConfig: Partial<CommandConfig>) => CommandConfig;
|
|
4
6
|
export declare const validateConfig: (userConfig: Partial<CommandConfig>) => void;
|