surgio 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,280 +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.wireguardFilter = exports.socks5Filter = exports.trojanFilter = exports.httpsFilter = exports.httpFilter = exports.tuicFilter = exports.snellFilter = exports.v2rayFilter = exports.vmessFilter = exports.shadowsocksrFilter = exports.shadowsocksFilter = exports.matchGlob = exports.youtubePremiumFilter = exports.chinaOutFilter = exports.chinaBackFilter = exports.taiwanFilter = exports.singaporeFilter = exports.koreaFilter = exports.japanFilter = exports.hkFilter = exports.usFilter = exports.netflixFilter = exports.mergeReversedFilters = exports.reverseFilter = exports.mergeSortedFilters = exports.useSortedKeywords = exports.discardProviders = exports.useProviders = exports.discardGlob = exports.useGlob = exports.useRegexp = exports.discardKeywords = exports.useKeywords = exports.mergeFilters = exports.applyFilter = exports.validateFilter = exports.SortFilterWithSortedKeywords = exports.SortFilterWithSortedFilters = void 0;
7
- const lodash_1 = __importDefault(require("lodash"));
8
- const micromatch_1 = __importDefault(require("micromatch"));
9
- const flag_cn_1 = require("../misc/flag_cn");
10
- const types_1 = require("../types");
11
- // tslint:disable-next-line:max-classes-per-file
12
- class SortFilterWithSortedFilters {
13
- _filters;
14
- supportSort = true;
15
- constructor(_filters) {
16
- this._filters = _filters;
17
- this.filter.bind(this);
18
- }
19
- filter(nodeList) {
20
- const result = [];
21
- this._filters.forEach((filter) => {
22
- result.push(...nodeList.filter(filter));
23
- });
24
- return lodash_1.default.uniqBy(result, (node) => node.nodeName);
25
- }
26
- }
27
- exports.SortFilterWithSortedFilters = SortFilterWithSortedFilters;
28
- // tslint:disable-next-line:max-classes-per-file
29
- class SortFilterWithSortedKeywords {
30
- _keywords;
31
- supportSort = true;
32
- constructor(_keywords) {
33
- this._keywords = _keywords;
34
- this.filter.bind(this);
35
- }
36
- filter(nodeList) {
37
- const result = [];
38
- this._keywords.forEach((keyword) => {
39
- result.push(...nodeList.filter((node) => node.nodeName.includes(keyword)));
40
- });
41
- return lodash_1.default.uniqBy(result, (node) => node.nodeName);
42
- }
43
- }
44
- exports.SortFilterWithSortedKeywords = SortFilterWithSortedKeywords;
45
- const validateFilter = (filter) => {
46
- if (filter === null || filter === undefined) {
47
- return false;
48
- }
49
- if (typeof filter === 'function') {
50
- return true;
51
- }
52
- return (typeof filter === 'object' &&
53
- 'supportSort' in filter &&
54
- 'filter' in filter &&
55
- typeof filter.supportSort === 'boolean' &&
56
- typeof filter.filter === 'function');
57
- };
58
- exports.validateFilter = validateFilter;
59
- const applyFilter = (nodeList, filter) => {
60
- // istanbul ignore next
61
- if (filter && !(0, exports.validateFilter)(filter)) {
62
- throw new Error(`使用了无效的过滤器 ${filter}`);
63
- }
64
- let newNodeList = nodeList.filter((item) => {
65
- // Only checks the enable property when it's present, default to true
66
- const isEnabled = item.enable !== false;
67
- if (filter && typeof filter === 'function') {
68
- return filter(item) && isEnabled;
69
- }
70
- return isEnabled;
71
- });
72
- if (filter &&
73
- typeof filter === 'object' &&
74
- typeof filter.filter === 'function') {
75
- newNodeList = filter.filter(newNodeList);
76
- }
77
- return newNodeList;
78
- };
79
- exports.applyFilter = applyFilter;
80
- const mergeFilters = (filters, isStrict) => {
81
- filters.forEach((filter) => {
82
- if ('supportSort' in filter && filter.supportSort) {
83
- throw new Error('mergeFilters 不支持包含排序功能的过滤器');
84
- }
85
- // istanbul ignore next
86
- if (typeof filter !== 'function') {
87
- throw new Error('mergeFilters 传入了无效的过滤器');
88
- }
89
- });
90
- return (item) => {
91
- return filters[isStrict ? 'every' : 'some']((filter) => filter(item));
92
- };
93
- };
94
- exports.mergeFilters = mergeFilters;
95
- const useKeywords = (keywords, isStrict) => {
96
- // istanbul ignore next
97
- if (!Array.isArray(keywords)) {
98
- throw new Error('keywords 请使用数组');
99
- }
100
- return (item) => keywords[isStrict ? 'every' : 'some']((keyword) => item.nodeName.includes(keyword));
101
- };
102
- exports.useKeywords = useKeywords;
103
- const discardKeywords = (keywords, isStrict) => {
104
- // istanbul ignore next
105
- if (!Array.isArray(keywords)) {
106
- throw new Error('keywords 请使用数组');
107
- }
108
- return (item) => !keywords[isStrict ? 'every' : 'some']((keyword) => item.nodeName.includes(keyword));
109
- };
110
- exports.discardKeywords = discardKeywords;
111
- const useRegexp = (regexp) => {
112
- // istanbul ignore next
113
- if (!lodash_1.default.isRegExp(regexp)) {
114
- throw new Error('入参不是一个合法的正则表达式');
115
- }
116
- return (item) => regexp.test(item.nodeName);
117
- };
118
- exports.useRegexp = useRegexp;
119
- const useGlob = (glob) => {
120
- return (item) => (0, exports.matchGlob)(item.nodeName, glob);
121
- };
122
- exports.useGlob = useGlob;
123
- const discardGlob = (glob) => {
124
- return (item) => !(0, exports.matchGlob)(item.nodeName, glob);
125
- };
126
- exports.discardGlob = discardGlob;
127
- const useProviders = (keywords, isStrict = true) => {
128
- // istanbul ignore next
129
- if (!Array.isArray(keywords)) {
130
- throw new Error('keywords 请使用数组');
131
- }
132
- return (item) => keywords.some((keyword) => isStrict
133
- ? item?.provider?.name === keyword
134
- : item?.provider?.name.includes(keyword));
135
- };
136
- exports.useProviders = useProviders;
137
- const discardProviders = (keywords, isStrict = true) => {
138
- // istanbul ignore next
139
- if (!Array.isArray(keywords)) {
140
- throw new Error('keywords 请使用数组');
141
- }
142
- return (item) => !keywords.some((keyword) => isStrict
143
- ? item?.provider?.name === keyword
144
- : item?.provider?.name.includes(keyword));
145
- };
146
- exports.discardProviders = discardProviders;
147
- const useSortedKeywords = (keywords) => {
148
- // istanbul ignore next
149
- if (!Array.isArray(keywords)) {
150
- throw new Error('keywords 请使用数组');
151
- }
152
- return new SortFilterWithSortedKeywords(keywords);
153
- };
154
- exports.useSortedKeywords = useSortedKeywords;
155
- const mergeSortedFilters = (filters) => {
156
- filters.forEach((filter) => {
157
- if ('supportSort' in filter && filter.supportSort) {
158
- throw new Error('mergeSortedFilters 不支持包含排序功能的过滤器');
159
- }
160
- // istanbul ignore next
161
- if (typeof filter !== 'function') {
162
- throw new Error('mergeSortedFilters 传入了无效的过滤器');
163
- }
164
- });
165
- return new SortFilterWithSortedFilters(filters);
166
- };
167
- exports.mergeSortedFilters = mergeSortedFilters;
168
- const reverseFilter = (filter) => {
169
- if ('supportSort' in filter && filter.supportSort) {
170
- throw new Error('reverseFilter 不支持包含排序功能的过滤器');
171
- }
172
- return (item) => !filter(item);
173
- };
174
- exports.reverseFilter = reverseFilter;
175
- const mergeReversedFilters = (filters, isStrict) => {
176
- filters.forEach((filter) => {
177
- if ('supportSort' in filter && filter.supportSort) {
178
- throw new Error('mergeReversedFilters 不支持包含排序功能的过滤器');
179
- }
180
- // istanbul ignore next
181
- if (typeof filter !== 'function') {
182
- throw new Error('mergeReversedFilters 传入了无效的过滤器');
183
- }
184
- });
185
- return (item) => {
186
- return filters[isStrict ? 'some' : 'every']((filter) => filter(item));
187
- };
188
- };
189
- exports.mergeReversedFilters = mergeReversedFilters;
190
- const netflixFilter = (item) => {
191
- return ['netflix', 'nf', 'hkbn', 'hkt', 'hgc', 'nbu'].some((key) => item.nodeName.toLowerCase().includes(key));
192
- };
193
- exports.netflixFilter = netflixFilter;
194
- const usFilter = (item) => {
195
- return ['🇺🇸', ...flag_cn_1.FLAGS['🇺🇸']].some((key) => item.nodeName.toUpperCase().includes(key));
196
- };
197
- exports.usFilter = usFilter;
198
- const hkFilter = (item) => {
199
- return ['🇭🇰', ...flag_cn_1.FLAGS['🇭🇰']].some((key) => item.nodeName.toUpperCase().includes(key));
200
- };
201
- exports.hkFilter = hkFilter;
202
- const japanFilter = (item) => {
203
- return ['🇯🇵', ...flag_cn_1.FLAGS['🇯🇵']].some((key) => item.nodeName.toUpperCase().includes(key));
204
- };
205
- exports.japanFilter = japanFilter;
206
- const koreaFilter = (item) => {
207
- return ['🇰🇷', ...flag_cn_1.FLAGS['🇰🇷']].some((key) => item.nodeName.toUpperCase().includes(key));
208
- };
209
- exports.koreaFilter = koreaFilter;
210
- const singaporeFilter = (item) => {
211
- return ['🇸🇬', ...flag_cn_1.FLAGS['🇸🇬']].some((key) => item.nodeName.toUpperCase().includes(key));
212
- };
213
- exports.singaporeFilter = singaporeFilter;
214
- const taiwanFilter = (item) => {
215
- return ['🇹🇼', ...flag_cn_1.TAIWAN].some((key) => item.nodeName.toUpperCase().includes(key));
216
- };
217
- exports.taiwanFilter = taiwanFilter;
218
- const chinaBackFilter = (item) => {
219
- return [
220
- '回国',
221
- 'Back',
222
- '中国上海',
223
- '中国北京',
224
- '中国徐州',
225
- '中国深圳',
226
- '中国枣庄',
227
- '中国郑州',
228
- '硅谷上海',
229
- '东京上海',
230
- 'GCX',
231
- ].some((key) => item.nodeName.includes(key));
232
- };
233
- exports.chinaBackFilter = chinaBackFilter;
234
- exports.chinaOutFilter = (0, exports.reverseFilter)(exports.chinaBackFilter);
235
- exports.youtubePremiumFilter = (0, exports.mergeFilters)([
236
- exports.usFilter,
237
- exports.japanFilter,
238
- exports.koreaFilter,
239
- exports.hkFilter,
240
- exports.singaporeFilter,
241
- exports.taiwanFilter,
242
- ]);
243
- const matchGlob = (str, glob) => {
244
- return micromatch_1.default.contains(str, glob);
245
- };
246
- exports.matchGlob = matchGlob;
247
- // istanbul ignore next
248
- const shadowsocksFilter = (item) => item.type === types_1.NodeTypeEnum.Shadowsocks;
249
- exports.shadowsocksFilter = shadowsocksFilter;
250
- // istanbul ignore next
251
- const shadowsocksrFilter = (item) => item.type === types_1.NodeTypeEnum.Shadowsocksr;
252
- exports.shadowsocksrFilter = shadowsocksrFilter;
253
- // istanbul ignore next
254
- const vmessFilter = (item) => item.type === types_1.NodeTypeEnum.Vmess;
255
- exports.vmessFilter = vmessFilter;
256
- // istanbul ignore next
257
- const v2rayFilter = (item) => item.type === types_1.NodeTypeEnum.Vmess;
258
- exports.v2rayFilter = v2rayFilter;
259
- // istanbul ignore next
260
- const snellFilter = (item) => item.type === types_1.NodeTypeEnum.Snell;
261
- exports.snellFilter = snellFilter;
262
- // istanbul ignore next
263
- const tuicFilter = (item) => item.type === types_1.NodeTypeEnum.Tuic;
264
- exports.tuicFilter = tuicFilter;
265
- // istanbul ignore next
266
- const httpFilter = (item) => item.type === types_1.NodeTypeEnum.HTTP;
267
- exports.httpFilter = httpFilter;
268
- // istanbul ignore next
269
- const httpsFilter = (item) => item.type === types_1.NodeTypeEnum.HTTPS;
270
- exports.httpsFilter = httpsFilter;
271
- // istanbul ignore next
272
- const trojanFilter = (item) => item.type === types_1.NodeTypeEnum.Trojan;
273
- exports.trojanFilter = trojanFilter;
274
- // istanbul ignore next
275
- const socks5Filter = (item) => item.type === types_1.NodeTypeEnum.Socks5;
276
- exports.socks5Filter = socks5Filter;
277
- // istanbul ignore next
278
- const wireguardFilter = (item) => item.type === types_1.NodeTypeEnum.Wireguard;
279
- exports.wireguardFilter = wireguardFilter;
280
- //# sourceMappingURL=filter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/utils/filter.ts"],"names":[],"mappings":"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"}