surgio 2.25.2 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/bin/dev +17 -0
  2. package/bin/dev.cmd +3 -0
  3. package/bin/run +8 -0
  4. package/bin/run.cmd +3 -0
  5. package/build/base-command.d.ts +18 -0
  6. package/build/base-command.js +74 -0
  7. package/build/commands/check.d.ts +10 -0
  8. package/build/commands/check.js +88 -0
  9. package/build/commands/clean-cache.d.ts +6 -0
  10. package/build/commands/clean-cache.js +29 -0
  11. package/build/commands/doctor.d.ts +6 -0
  12. package/build/commands/doctor.js +21 -0
  13. package/build/commands/generate.d.ts +7 -0
  14. package/build/commands/generate.js +93 -0
  15. package/build/commands/lint.d.ts +6 -0
  16. package/build/commands/lint.js +36 -0
  17. package/build/commands/new.d.ts +6 -0
  18. package/build/commands/new.js +36 -0
  19. package/build/commands/subscriptions.d.ts +7 -0
  20. package/build/commands/subscriptions.js +96 -0
  21. package/build/commands/upload.d.ts +6 -0
  22. package/build/commands/upload.js +87 -0
  23. package/build/config.d.ts +6 -0
  24. package/build/config.js +151 -0
  25. package/build/constant/constant.d.ts +17 -16
  26. package/build/constant/constant.js +3 -2
  27. package/build/constant/env.js +1 -1
  28. package/build/constant/error.js +1 -1
  29. package/build/constant/index.js +1 -1
  30. package/build/generate.d.ts +0 -1
  31. package/build/generate.js +3 -65
  32. package/build/generator/artifact.d.ts +299 -64
  33. package/build/generator/artifact.js +90 -92
  34. package/build/generator/index.d.ts +2 -0
  35. package/build/generator/index.js +19 -0
  36. package/build/generator/template.js +2 -6
  37. package/build/hooks/init.d.ts +3 -0
  38. package/build/hooks/init.js +32 -0
  39. package/build/index.d.ts +55 -53
  40. package/build/index.js +13 -51
  41. package/build/internal.d.ts +4 -0
  42. package/build/internal.js +21 -0
  43. package/build/misc/deprecation.d.ts +1 -6
  44. package/build/misc/deprecation.js +1 -8
  45. package/build/misc/flag_cn.js +1 -1
  46. package/build/provider/BlackSSLProvider.d.ts +4 -3
  47. package/build/provider/BlackSSLProvider.js +24 -16
  48. package/build/provider/ClashProvider.d.ts +7 -10
  49. package/build/provider/ClashProvider.js +165 -76
  50. package/build/provider/CustomProvider.d.ts +4 -3
  51. package/build/provider/CustomProvider.js +81 -50
  52. package/build/provider/Provider.d.ts +9 -22
  53. package/build/provider/Provider.js +31 -69
  54. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +4 -5
  55. package/build/provider/ShadowsocksJsonSubscribeProvider.js +27 -21
  56. package/build/provider/ShadowsocksSubscribeProvider.d.ts +5 -8
  57. package/build/provider/ShadowsocksSubscribeProvider.js +30 -27
  58. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +5 -8
  59. package/build/provider/ShadowsocksrSubscribeProvider.js +30 -23
  60. package/build/provider/SsdProvider.d.ts +5 -8
  61. package/build/provider/SsdProvider.js +56 -39
  62. package/build/provider/TrojanProvider.d.ts +5 -8
  63. package/build/provider/TrojanProvider.js +37 -30
  64. package/build/provider/V2rayNSubscribeProvider.d.ts +4 -5
  65. package/build/provider/V2rayNSubscribeProvider.js +61 -33
  66. package/build/provider/index.d.ts +16 -2
  67. package/build/provider/index.js +12 -5
  68. package/build/provider/types.d.ts +10 -1
  69. package/build/provider/types.js +1 -1
  70. package/build/redis.js +1 -1
  71. package/build/types.d.ts +45 -236
  72. package/build/types.js +2 -1
  73. package/build/utils/cache.js +29 -27
  74. package/build/utils/clash.d.ts +204 -3
  75. package/build/utils/clash.js +247 -106
  76. package/build/utils/configurables.d.ts +71 -0
  77. package/build/utils/configurables.js +8 -0
  78. package/build/utils/constant.js +1 -1
  79. package/build/utils/dns.js +1 -1
  80. package/build/utils/doctor.d.ts +2 -0
  81. package/build/utils/doctor.js +38 -0
  82. package/build/utils/env-flag.js +2 -2
  83. package/build/utils/error-helper.d.ts +2 -2
  84. package/build/utils/error-helper.js +30 -16
  85. package/build/utils/filter.d.ts +46 -43
  86. package/build/utils/filter.js +51 -30
  87. package/build/utils/flag.js +1 -1
  88. package/build/utils/http-client.js +38 -5
  89. package/build/utils/index.d.ts +13 -21
  90. package/build/utils/index.js +98 -117
  91. package/build/utils/linter.js +5 -2
  92. package/build/utils/loon.d.ts +3 -2
  93. package/build/utils/loon.js +67 -5
  94. package/build/utils/quantumult.d.ts +3 -3
  95. package/build/utils/quantumult.js +190 -258
  96. package/build/utils/relayable-url.js +1 -1
  97. package/build/utils/remote-snippet.js +3 -4
  98. package/build/utils/ss.js +27 -17
  99. package/build/utils/ssr.js +3 -4
  100. package/build/utils/subscription.js +7 -7
  101. package/build/utils/surfboard.d.ts +3 -2
  102. package/build/utils/surfboard.js +142 -126
  103. package/build/utils/surge.d.ts +4 -2
  104. package/build/utils/surge.js +328 -300
  105. package/build/utils/time.d.ts +1 -0
  106. package/build/utils/time.js +6 -0
  107. package/build/utils/tmp-helper.js +8 -1
  108. package/build/utils/trojan.js +19 -11
  109. package/build/utils/v2ray.js +2 -2
  110. package/build/validators/artifact.d.ts +35 -0
  111. package/build/validators/artifact.js +17 -0
  112. package/build/validators/common.d.ts +121 -0
  113. package/build/validators/common.js +52 -0
  114. package/build/validators/filter.d.ts +10 -0
  115. package/build/validators/filter.js +15 -0
  116. package/build/validators/hooks.d.ts +7 -0
  117. package/build/validators/hooks.js +8 -0
  118. package/build/validators/http.d.ts +137 -0
  119. package/build/validators/http.js +19 -0
  120. package/build/validators/index.d.ts +15 -0
  121. package/build/validators/index.js +32 -0
  122. package/build/validators/provider.d.ts +109 -0
  123. package/build/validators/provider.js +41 -0
  124. package/build/validators/shadowsocks.d.ts +86 -0
  125. package/build/validators/shadowsocks.js +29 -0
  126. package/build/validators/shadowsocksr.d.ts +77 -0
  127. package/build/validators/shadowsocksr.js +19 -0
  128. package/build/validators/snell.d.ts +71 -0
  129. package/build/validators/snell.js +20 -0
  130. package/build/validators/socks5.d.ts +77 -0
  131. package/build/validators/socks5.js +19 -0
  132. package/build/validators/surgio-config.d.ts +307 -0
  133. package/build/validators/surgio-config.js +95 -0
  134. package/build/validators/trojan.d.ts +86 -0
  135. package/build/validators/trojan.js +15 -0
  136. package/build/validators/tuic.d.ts +301 -0
  137. package/build/validators/tuic.js +21 -0
  138. package/build/validators/vmess.d.ts +92 -0
  139. package/build/validators/vmess.js +29 -0
  140. package/build/validators/wireguard.d.ts +123 -0
  141. package/build/validators/wireguard.js +26 -0
  142. package/config.d.ts +1 -0
  143. package/config.js +1 -0
  144. package/constant.d.ts +1 -0
  145. package/constant.js +1 -0
  146. package/generator.d.ts +1 -0
  147. package/generator.js +1 -0
  148. package/hygen-template/artifact/new/index.js +15 -15
  149. package/hygen-template/provider/new/index.js +8 -7
  150. package/hygen-template/template/new/index.js +3 -3
  151. package/index.d.ts +1 -0
  152. package/index.js +1 -0
  153. package/internal.d.ts +1 -0
  154. package/internal.js +1 -0
  155. package/package.json +112 -75
  156. package/provider.d.ts +1 -0
  157. package/provider.js +1 -0
  158. package/utils.d.ts +1 -0
  159. package/utils.js +1 -0
  160. package/bin/surgio.js +0 -8
  161. package/build/command/check.d.ts +0 -9
  162. package/build/command/check.js +0 -79
  163. package/build/command/clean-cache.d.ts +0 -8
  164. package/build/command/clean-cache.js +0 -43
  165. package/build/command/doctor.d.ts +0 -9
  166. package/build/command/doctor.js +0 -63
  167. package/build/command/generate.d.ts +0 -8
  168. package/build/command/generate.js +0 -64
  169. package/build/command/lint.d.ts +0 -7
  170. package/build/command/lint.js +0 -42
  171. package/build/command/new.d.ts +0 -7
  172. package/build/command/new.js +0 -44
  173. package/build/command/subscriptions.d.ts +0 -10
  174. package/build/command/subscriptions.js +0 -87
  175. package/build/command/upload.d.ts +0 -9
  176. package/build/command/upload.js +0 -101
  177. package/build/utils/command.d.ts +0 -2
  178. package/build/utils/command.js +0 -23
  179. package/build/utils/config.d.ts +0 -6
  180. package/build/utils/config.js +0 -245
  181. package/build/utils/patch-proxy.d.ts +0 -1
  182. package/build/utils/patch-proxy.js +0 -19
@@ -5,23 +5,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.errorHandler = void 0;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
- const doctor_1 = __importDefault(require("../command/doctor"));
9
- const errorHandler = function (err) {
10
- doctor_1.default.generateDoctorInfo(this.context.cwd).then((doctorInfo) => {
11
- console.error(chalk_1.default.red(`⚠️ 发生错误`));
12
- console.error(chalk_1.default.red(`⚠️ ${err.name}: ${err.message}`));
13
- console.error('⚠️ 版本号: %s', require('../../package.json').version);
14
- console.error('⚠️ 常见问题: %s', chalk_1.default.cyan('https://url.royli.dev/7EMxu'));
15
- console.error('⚠️ 加入交流群汇报问题 %s', chalk_1.default.cyan('https://t.me/surgiotg'));
8
+ const zod_validation_error_1 = require("zod-validation-error");
9
+ const zod_1 = require("zod");
10
+ const doctor_1 = require("./doctor");
11
+ const errorHandler = async function (err) {
12
+ const doctorInfo = await (0, doctor_1.generateDoctorInfo)(this.projectDir, this.config.pjson);
13
+ console.error();
14
+ console.error(chalk_1.default.bgRed(' 发生错误 '));
15
+ if (err.cause && err.cause instanceof zod_1.ZodError) {
16
+ console.error(chalk_1.default.red(err.message));
17
+ console.error(chalk_1.default.red((0, zod_validation_error_1.fromZodError)(err.cause, {
18
+ prefix: '参数校验错误',
19
+ }).message));
20
+ }
21
+ else {
22
+ console.error(chalk_1.default.red(err.message));
16
23
  console.error();
17
- console.error(chalk_1.default.red(err.stack));
18
- console.error();
19
- doctorInfo.forEach((item) => {
20
- console.error(item);
21
- });
22
- console.error();
23
- process.exit(1);
24
+ if (err.stack) {
25
+ console.error(chalk_1.default.bgRed(' 错误堆栈 '));
26
+ console.error(chalk_1.default.yellow(err.stack));
27
+ }
28
+ }
29
+ console.error();
30
+ console.error(chalk_1.default.bgRed(' 诊断信息 '));
31
+ console.error('版本号:', require('../../package.json').version);
32
+ console.error('常见问题:', chalk_1.default.cyan('https://url.royli.dev/7EMxu'));
33
+ console.error('加入交流群汇报问题 ', chalk_1.default.cyan('https://t.me/surgiotg'));
34
+ console.error();
35
+ doctorInfo.forEach((item) => {
36
+ console.error(chalk_1.default.cyan(item));
24
37
  });
38
+ console.error();
25
39
  };
26
40
  exports.errorHandler = errorHandler;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2Vycm9yLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxrREFBMEI7QUFDMUIsK0RBQThDO0FBRXZDLE1BQU0sWUFBWSxHQUFHLFVBQXlCLEdBQVU7SUFDN0QsZ0JBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ3JFLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsS0FBSyxDQUNYLGNBQWMsRUFDZCxlQUFLLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQzFDLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxDQUNYLGtCQUFrQixFQUNsQixlQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQ3BDLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVoQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsWUFBWSxnQkF1QnZCIn0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Vycm9yLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBeUI7QUFDekIsK0RBQW1EO0FBQ25ELDZCQUE4QjtBQUc5QixxQ0FBNkM7QUFFdEMsTUFBTSxZQUFZLEdBQUcsS0FBSyxXQUUvQixHQUFVO0lBRVYsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLDJCQUFrQixFQUN6QyxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNsQixDQUFBO0lBRUQsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFFcEMsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLFlBQVksY0FBUSxFQUFFO1FBQzlDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxPQUFPLENBQUMsS0FBSyxDQUNYLGVBQUssQ0FBQyxHQUFHLENBQ1AsSUFBQSxtQ0FBWSxFQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDdEIsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQyxDQUFDLE9BQU8sQ0FDWCxDQUNGLENBQUE7S0FDRjtTQUFNO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUVmLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQ3BDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtTQUN2QztLQUNGO0lBRUQsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDcEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZUFBSyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUE7SUFDakUsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsZUFBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUE7SUFDaEUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2pDLENBQUMsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0FBQ2pCLENBQUMsQ0FBQTtBQXpDWSxRQUFBLFlBQVksZ0JBeUN4QiJ9
@@ -1,46 +1,49 @@
1
- import { NodeNameFilterType, SimpleNodeConfig, SortedNodeNameFilterType } from '../types';
2
- export declare class SortFilterWithSortedFilters implements SortedNodeNameFilterType {
3
- _filters: ReadonlyArray<NodeNameFilterType>;
4
- supportSort: boolean;
5
- constructor(_filters: ReadonlyArray<NodeNameFilterType>);
6
- filter<T>(nodeList: ReadonlyArray<T & SimpleNodeConfig>): ReadonlyArray<T & SimpleNodeConfig>;
1
+ import { NodeFilterType, SortedNodeFilterType, PossibleNodeConfigType } from '../types';
2
+ export declare class SortFilterWithSortedFilters implements SortedNodeFilterType {
3
+ _filters: Array<NodeFilterType>;
4
+ readonly supportSort = true;
5
+ constructor(_filters: Array<NodeFilterType>);
6
+ filter<T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>): ReadonlyArray<T>;
7
7
  }
8
- export declare class SortFilterWithSortedKeywords implements SortedNodeNameFilterType {
9
- _keywords: ReadonlyArray<string>;
10
- supportSort: boolean;
11
- constructor(_keywords: ReadonlyArray<string>);
12
- filter<T>(nodeList: ReadonlyArray<T & SimpleNodeConfig>): ReadonlyArray<T & SimpleNodeConfig>;
8
+ export declare class SortFilterWithSortedKeywords implements SortedNodeFilterType {
9
+ _keywords: Array<string>;
10
+ readonly supportSort = true;
11
+ constructor(_keywords: Array<string>);
12
+ filter<T extends PossibleNodeConfigType>(nodeList: ReadonlyArray<T>): ReadonlyArray<T>;
13
13
  }
14
- export declare const validateFilter: (filter: any) => boolean;
15
- export declare const applyFilter: <T extends SimpleNodeConfig>(nodeList: readonly T[], filter?: NodeNameFilterType | SortedNodeNameFilterType) => readonly T[];
16
- export declare const mergeFilters: (filters: ReadonlyArray<NodeNameFilterType>, isStrict?: boolean) => NodeNameFilterType;
17
- export declare const useKeywords: (keywords: ReadonlyArray<string>, isStrict?: boolean) => NodeNameFilterType;
18
- export declare const discardKeywords: (keywords: ReadonlyArray<string>, isStrict?: boolean) => NodeNameFilterType;
19
- export declare const useRegexp: (regexp: RegExp) => NodeNameFilterType;
20
- export declare const useGlob: (glob: string) => NodeNameFilterType;
21
- export declare const discardGlob: (glob: string) => NodeNameFilterType;
22
- export declare const useProviders: (keywords: ReadonlyArray<string>, isStrict?: boolean) => NodeNameFilterType;
23
- export declare const discardProviders: (keywords: ReadonlyArray<string>, isStrict?: boolean) => NodeNameFilterType;
24
- export declare const useSortedKeywords: (keywords: ReadonlyArray<string>) => SortedNodeNameFilterType;
25
- export declare const mergeSortedFilters: (filters: ReadonlyArray<NodeNameFilterType>) => SortedNodeNameFilterType;
26
- export declare const netflixFilter: NodeNameFilterType;
27
- export declare const usFilter: NodeNameFilterType;
28
- export declare const hkFilter: NodeNameFilterType;
29
- export declare const japanFilter: NodeNameFilterType;
30
- export declare const koreaFilter: NodeNameFilterType;
31
- export declare const singaporeFilter: NodeNameFilterType;
32
- export declare const taiwanFilter: NodeNameFilterType;
33
- export declare const chinaBackFilter: NodeNameFilterType;
34
- export declare const chinaOutFilter: NodeNameFilterType;
35
- export declare const youtubePremiumFilter: NodeNameFilterType;
14
+ export declare const validateFilter: (filter: unknown) => boolean;
15
+ export declare const applyFilter: <T extends PossibleNodeConfigType>(nodeList: readonly T[], filter?: NodeFilterType | SortedNodeFilterType) => readonly T[];
16
+ export declare const mergeFilters: (filters: Array<NodeFilterType>, isStrict?: boolean) => NodeFilterType;
17
+ export declare const useKeywords: (keywords: Array<string>, isStrict?: boolean) => NodeFilterType;
18
+ export declare const discardKeywords: (keywords: Array<string>, isStrict?: boolean) => NodeFilterType;
19
+ export declare const useRegexp: (regexp: RegExp) => NodeFilterType;
20
+ export declare const useGlob: (glob: string) => NodeFilterType;
21
+ export declare const discardGlob: (glob: string) => NodeFilterType;
22
+ export declare const useProviders: (keywords: Array<string>, isStrict?: boolean) => NodeFilterType;
23
+ export declare const discardProviders: (keywords: Array<string>, isStrict?: boolean) => NodeFilterType;
24
+ export declare const useSortedKeywords: (keywords: Array<string>) => SortedNodeFilterType;
25
+ export declare const mergeSortedFilters: (filters: Array<NodeFilterType>) => SortedNodeFilterType;
26
+ export declare const reverseFilter: (filter: NodeFilterType) => NodeFilterType;
27
+ export declare const mergeReversedFilters: (filters: Array<NodeFilterType>, isStrict?: boolean) => NodeFilterType;
28
+ export declare const netflixFilter: NodeFilterType;
29
+ export declare const usFilter: NodeFilterType;
30
+ export declare const hkFilter: NodeFilterType;
31
+ export declare const japanFilter: NodeFilterType;
32
+ export declare const koreaFilter: NodeFilterType;
33
+ export declare const singaporeFilter: NodeFilterType;
34
+ export declare const taiwanFilter: NodeFilterType;
35
+ export declare const chinaBackFilter: NodeFilterType;
36
+ export declare const chinaOutFilter: NodeFilterType;
37
+ export declare const youtubePremiumFilter: NodeFilterType;
36
38
  export declare const matchGlob: (str: string, glob: string) => boolean;
37
- export declare const shadowsocksFilter: NodeNameFilterType;
38
- export declare const shadowsocksrFilter: NodeNameFilterType;
39
- export declare const vmessFilter: NodeNameFilterType;
40
- export declare const v2rayFilter: NodeNameFilterType;
41
- export declare const snellFilter: NodeNameFilterType;
42
- export declare const tuicFilter: NodeNameFilterType;
43
- export declare const httpFilter: NodeNameFilterType;
44
- export declare const httpsFilter: NodeNameFilterType;
45
- export declare const trojanFilter: NodeNameFilterType;
46
- export declare const socks5Filter: NodeNameFilterType;
39
+ export declare const shadowsocksFilter: NodeFilterType;
40
+ export declare const shadowsocksrFilter: NodeFilterType;
41
+ export declare const vmessFilter: NodeFilterType;
42
+ export declare const v2rayFilter: NodeFilterType;
43
+ export declare const snellFilter: NodeFilterType;
44
+ export declare const tuicFilter: NodeFilterType;
45
+ export declare const httpFilter: NodeFilterType;
46
+ export declare const httpsFilter: NodeFilterType;
47
+ export declare const trojanFilter: NodeFilterType;
48
+ export declare const socks5Filter: NodeFilterType;
49
+ export declare const wireguardFilter: NodeFilterType;
@@ -26,16 +26,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- 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.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;
29
+ 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;
30
30
  const lodash_1 = __importDefault(require("lodash"));
31
31
  const micromatch_1 = __importDefault(require("micromatch"));
32
32
  const flag_cn_1 = __importStar(require("../misc/flag_cn"));
33
33
  const types_1 = require("../types");
34
34
  // tslint:disable-next-line:max-classes-per-file
35
35
  class SortFilterWithSortedFilters {
36
+ _filters;
37
+ supportSort = true;
36
38
  constructor(_filters) {
37
39
  this._filters = _filters;
38
- this.supportSort = true;
39
40
  this.filter.bind(this);
40
41
  }
41
42
  filter(nodeList) {
@@ -49,9 +50,10 @@ class SortFilterWithSortedFilters {
49
50
  exports.SortFilterWithSortedFilters = SortFilterWithSortedFilters;
50
51
  // tslint:disable-next-line:max-classes-per-file
51
52
  class SortFilterWithSortedKeywords {
53
+ _keywords;
54
+ supportSort = true;
52
55
  constructor(_keywords) {
53
56
  this._keywords = _keywords;
54
- this.supportSort = true;
55
57
  this.filter.bind(this);
56
58
  }
57
59
  filter(nodeList) {
@@ -64,14 +66,16 @@ class SortFilterWithSortedKeywords {
64
66
  }
65
67
  exports.SortFilterWithSortedKeywords = SortFilterWithSortedKeywords;
66
68
  const validateFilter = (filter) => {
67
- if (filter === null || filter === void 0) {
69
+ if (filter === null || filter === undefined) {
68
70
  return false;
69
71
  }
70
72
  if (typeof filter === 'function') {
71
73
  return true;
72
74
  }
73
75
  return (typeof filter === 'object' &&
74
- filter.supportSort &&
76
+ 'supportSort' in filter &&
77
+ 'filter' in filter &&
78
+ typeof filter.supportSort === 'boolean' &&
75
79
  typeof filter.filter === 'function');
76
80
  };
77
81
  exports.validateFilter = validateFilter;
@@ -80,24 +84,25 @@ const applyFilter = (nodeList, filter) => {
80
84
  if (filter && !(0, exports.validateFilter)(filter)) {
81
85
  throw new Error(`使用了无效的过滤器 ${filter}`);
82
86
  }
83
- let nodes = nodeList.filter((item) => {
84
- const result = item.enable !== false;
87
+ let newNodeList = nodeList.filter((item) => {
88
+ // Only checks the enable property when it's present, default to true
89
+ const isEnabled = item.enable !== false;
85
90
  if (filter && typeof filter === 'function') {
86
- return filter(item) && result;
91
+ return filter(item) && isEnabled;
87
92
  }
88
- return result;
93
+ return isEnabled;
89
94
  });
90
95
  if (filter &&
91
96
  typeof filter === 'object' &&
92
97
  typeof filter.filter === 'function') {
93
- nodes = filter.filter(nodes);
98
+ newNodeList = filter.filter(newNodeList);
94
99
  }
95
- return nodes;
100
+ return newNodeList;
96
101
  };
97
102
  exports.applyFilter = applyFilter;
98
103
  const mergeFilters = (filters, isStrict) => {
99
104
  filters.forEach((filter) => {
100
- if (filter.hasOwnProperty('supportSort') && filter.supportSort) {
105
+ if ('supportSort' in filter && filter.supportSort) {
101
106
  throw new Error('mergeFilters 不支持包含排序功能的过滤器');
102
107
  }
103
108
  // istanbul ignore next
@@ -147,12 +152,9 @@ const useProviders = (keywords, isStrict = true) => {
147
152
  if (!Array.isArray(keywords)) {
148
153
  throw new Error('keywords 请使用数组');
149
154
  }
150
- return (item) => keywords.some((keyword) => {
151
- var _a, _b;
152
- return isStrict
153
- ? ((_a = item === null || item === void 0 ? void 0 : item.provider) === null || _a === void 0 ? void 0 : _a.name) === keyword
154
- : (_b = item === null || item === void 0 ? void 0 : item.provider) === null || _b === void 0 ? void 0 : _b.name.includes(keyword);
155
- });
155
+ return (item) => keywords.some((keyword) => isStrict
156
+ ? item?.provider?.name === keyword
157
+ : item?.provider?.name.includes(keyword));
156
158
  };
157
159
  exports.useProviders = useProviders;
158
160
  const discardProviders = (keywords, isStrict = true) => {
@@ -160,12 +162,9 @@ const discardProviders = (keywords, isStrict = true) => {
160
162
  if (!Array.isArray(keywords)) {
161
163
  throw new Error('keywords 请使用数组');
162
164
  }
163
- return (item) => !keywords.some((keyword) => {
164
- var _a, _b;
165
- return isStrict
166
- ? ((_a = item === null || item === void 0 ? void 0 : item.provider) === null || _a === void 0 ? void 0 : _a.name) === keyword
167
- : (_b = item === null || item === void 0 ? void 0 : item.provider) === null || _b === void 0 ? void 0 : _b.name.includes(keyword);
168
- });
165
+ return (item) => !keywords.some((keyword) => isStrict
166
+ ? item?.provider?.name === keyword
167
+ : item?.provider?.name.includes(keyword));
169
168
  };
170
169
  exports.discardProviders = discardProviders;
171
170
  const useSortedKeywords = (keywords) => {
@@ -178,7 +177,7 @@ const useSortedKeywords = (keywords) => {
178
177
  exports.useSortedKeywords = useSortedKeywords;
179
178
  const mergeSortedFilters = (filters) => {
180
179
  filters.forEach((filter) => {
181
- if (filter.hasOwnProperty('supportSort') && filter.supportSort) {
180
+ if ('supportSort' in filter && filter.supportSort) {
182
181
  throw new Error('mergeSortedFilters 不支持包含排序功能的过滤器');
183
182
  }
184
183
  // istanbul ignore next
@@ -189,6 +188,28 @@ const mergeSortedFilters = (filters) => {
189
188
  return new SortFilterWithSortedFilters(filters);
190
189
  };
191
190
  exports.mergeSortedFilters = mergeSortedFilters;
191
+ const reverseFilter = (filter) => {
192
+ if ('supportSort' in filter && filter.supportSort) {
193
+ throw new Error('reverseFilter 不支持包含排序功能的过滤器');
194
+ }
195
+ return (item) => !filter(item);
196
+ };
197
+ exports.reverseFilter = reverseFilter;
198
+ const mergeReversedFilters = (filters, isStrict) => {
199
+ filters.forEach((filter) => {
200
+ if ('supportSort' in filter && filter.supportSort) {
201
+ throw new Error('mergeReversedFilters 不支持包含排序功能的过滤器');
202
+ }
203
+ // istanbul ignore next
204
+ if (typeof filter !== 'function') {
205
+ throw new Error('mergeReversedFilters 传入了无效的过滤器');
206
+ }
207
+ });
208
+ return (item) => {
209
+ return filters[isStrict ? 'some' : 'every']((filter) => filter(item));
210
+ };
211
+ };
212
+ exports.mergeReversedFilters = mergeReversedFilters;
192
213
  const netflixFilter = (item) => {
193
214
  return ['netflix', 'nf', 'hkbn', 'hkt', 'hgc', 'nbu'].some((key) => item.nodeName.toLowerCase().includes(key));
194
215
  };
@@ -233,10 +254,7 @@ const chinaBackFilter = (item) => {
233
254
  ].some((key) => item.nodeName.includes(key));
234
255
  };
235
256
  exports.chinaBackFilter = chinaBackFilter;
236
- const chinaOutFilter = (item) => {
237
- return !(0, exports.chinaBackFilter)(item);
238
- };
239
- exports.chinaOutFilter = chinaOutFilter;
257
+ exports.chinaOutFilter = (0, exports.reverseFilter)(exports.chinaBackFilter);
240
258
  exports.youtubePremiumFilter = (0, exports.mergeFilters)([
241
259
  exports.usFilter,
242
260
  exports.japanFilter,
@@ -279,4 +297,7 @@ exports.trojanFilter = trojanFilter;
279
297
  // istanbul ignore next
280
298
  const socks5Filter = (item) => item.type === types_1.NodeTypeEnum.Socks5;
281
299
  exports.socks5Filter = socks5Filter;
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUF1QjtBQUN2Qiw0REFBb0M7QUFFcEMsMkRBQStDO0FBQy9DLG9DQUtrQjtBQUVsQixnREFBZ0Q7QUFDaEQsTUFBYSwyQkFBMkI7SUFHdEMsWUFBbUIsUUFBMkM7UUFBM0MsYUFBUSxHQUFSLFFBQVEsQ0FBbUM7UUFGdkQsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFHeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU0sQ0FDWCxRQUE2QztRQUU3QyxNQUFNLE1BQU0sR0FBNkIsRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBbEJELGtFQWtCQztBQUVELGdEQUFnRDtBQUNoRCxNQUFhLDRCQUE0QjtJQUd2QyxZQUFtQixTQUFnQztRQUFoQyxjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQUY1QyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUd4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUNYLFFBQTZDO1FBRTdDLE1BQU0sTUFBTSxHQUE2QixFQUFFLENBQUM7UUFFNUMs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
300
+ // istanbul ignore next
301
+ const wireguardFilter = (item) => item.type === types_1.NodeTypeEnum.Wireguard;
302
+ exports.wireguardFilter = wireguardFilter;
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFzQjtBQUN0Qiw0REFBbUM7QUFFbkMsMkRBQThDO0FBQzlDLG9DQUtpQjtBQUVqQixnREFBZ0Q7QUFDaEQsTUFBYSwyQkFBMkI7SUFHbkI7SUFGSCxXQUFXLEdBQUcsSUFBSSxDQUFBO0lBRWxDLFlBQW1CLFFBQStCO1FBQS9CLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQ1gsUUFBMEI7UUFFMUIsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFBO1FBRXRCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUN6QyxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sZ0JBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDbEQsQ0FBQztDQUNGO0FBbEJELGtFQWtCQztBQUVELGdEQUFnRDtBQUNoRCxNQUFhLDRCQUE0QjtJQUdwQjtJQUZILFdBQVcsR0FBRyxJQUFJLENBQUE7SUFFbEMsWUFBbUIsU0FBd0I7UUFBeEIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QixDQUFDO0lBRU0sTUFBTSxDQUNYLFFBQTBCO1FBRTFCLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQTtR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
@@ -66,4 +66,4 @@ const removeFlag = (str) => {
66
66
  return str.replace(emojiRegex, '').trim();
67
67
  };
68
68
  exports.removeFlag = removeFlag;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy9mbGFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFxQztBQUNyQyxvREFBdUI7QUFFdkIsOERBQW1DO0FBRW5DLE1BQU0sT0FBTyxHQUFpQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3hELE1BQU0sYUFBYSxHQUFpQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRTlELE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ2xDLGlCQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVJLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBcUIsRUFBRSxLQUFhLEVBQVEsRUFBRTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QjtJQUNELGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUxXLFFBQUEsVUFBVSxjQUtyQjtBQUVLLE1BQU0sV0FBVyxHQUFHLENBQ3pCLEdBQVcsRUFDWCxtQkFBbUIsR0FBRyxLQUFLLEVBQ25CLEVBQUU7SUFDVixNQUFNLFVBQVUsR0FBRyxJQUFBLHFCQUFVLEdBQUUsQ0FBQztJQUNoQyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTNDLElBQUksYUFBYSxFQUFFO1FBQ2pCLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsY0FBYztZQUNkLEdBQUcsR0FBRyxJQUFBLGtCQUFVLEVBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNMLE9BQU87WUFDUCxPQUFPLEdBQUcsQ0FBQztTQUNaO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2xELElBQUksZ0JBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQixPQUFPLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO2FBQzFCO1NBQ0Y7YUFBTTtZQUNMLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxHQUFHLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQzthQUMxQjtTQUNGO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzVDLElBQUksZ0JBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQixPQUFPLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO2FBQzFCO1NBQ0Y7YUFBTTtZQUNMLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxHQUFHLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQzthQUMxQjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQTFDVyxRQUFBLFdBQVcsZUEwQ3RCO0FBRUssTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRTtJQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFBLHFCQUFVLEdBQUUsQ0FBQztJQUNoQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUhXLFFBQUEsVUFBVSxjQUdyQiJ9
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9mbGFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFvQztBQUNwQyxvREFBc0I7QUFFdEIsOERBQWtDO0FBRWxDLE1BQU0sT0FBTyxHQUFpQyxJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQ3ZELE1BQU0sYUFBYSxHQUFpQyxJQUFJLEdBQUcsRUFBRSxDQUFBO0FBRTdELE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ2xDLGlCQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDMUIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQTtBQUVLLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBcUIsRUFBRSxLQUFhLEVBQVEsRUFBRTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUNyQjtJQUNELGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ2hDLENBQUMsQ0FBQTtBQUxZLFFBQUEsVUFBVSxjQUt0QjtBQUVNLE1BQU0sV0FBVyxHQUFHLENBQ3pCLEdBQVcsRUFDWCxtQkFBbUIsR0FBRyxLQUFLLEVBQ25CLEVBQUU7SUFDVixNQUFNLFVBQVUsR0FBRyxJQUFBLHFCQUFVLEdBQUUsQ0FBQTtJQUMvQixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTFDLElBQUksYUFBYSxFQUFFO1FBQ2pCLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsY0FBYztZQUNkLEdBQUcsR0FBRyxJQUFBLGtCQUFVLEVBQUMsR0FBRyxDQUFDLENBQUE7U0FDdEI7YUFBTTtZQUNMLE9BQU87WUFDUCxPQUFPLEdBQUcsQ0FBQTtTQUNYO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2xELElBQUksZ0JBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQixPQUFPLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFBO2FBQ3pCO1NBQ0Y7YUFBTTtZQUNMLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxHQUFHLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQTthQUN6QjtTQUNGO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzVDLElBQUksZ0JBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQixPQUFPLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFBO2FBQ3pCO1NBQ0Y7YUFBTTtZQUNMLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxHQUFHLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQTthQUN6QjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQTFDWSxRQUFBLFdBQVcsZUEwQ3ZCO0FBRU0sTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRTtJQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFBLHFCQUFVLEdBQUUsQ0FBQTtJQUMvQixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0FBQzNDLENBQUMsQ0FBQTtBQUhZLFFBQUEsVUFBVSxjQUd0QiJ9
@@ -29,9 +29,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.getUserAgent = void 0;
30
30
  const got_1 = __importDefault(require("got"));
31
31
  const agentkeepalive_1 = __importStar(require("agentkeepalive"));
32
+ const hpagent_1 = require("hpagent");
32
33
  const constant_1 = require("../constant");
33
34
  const env_flag_1 = require("./env-flag");
35
+ const httpProxy = hasHTTPProxy();
36
+ const httpsProxy = hasHTTPSProxy();
34
37
  const pkg = require('../../package.json');
38
+ const agent = !!httpProxy || !!httpsProxy
39
+ ? {
40
+ http: httpProxy
41
+ ? new hpagent_1.HttpProxyAgent({
42
+ keepAlive: true,
43
+ keepAliveMsecs: 1000,
44
+ maxSockets: 256,
45
+ maxFreeSockets: 256,
46
+ scheduling: 'lifo',
47
+ proxy: httpProxy,
48
+ })
49
+ : new agentkeepalive_1.default(),
50
+ https: httpsProxy
51
+ ? new hpagent_1.HttpsProxyAgent({
52
+ keepAlive: true,
53
+ keepAliveMsecs: 1000,
54
+ maxSockets: 256,
55
+ maxFreeSockets: 256,
56
+ scheduling: 'lifo',
57
+ proxy: httpsProxy,
58
+ })
59
+ : new agentkeepalive_1.HttpsAgent(),
60
+ }
61
+ : {
62
+ http: new agentkeepalive_1.default(),
63
+ https: new agentkeepalive_1.HttpsAgent(),
64
+ };
35
65
  const getUserAgent = (str) => `${str ? str + ' ' : ''}${constant_1.NETWORK_SURGIO_UA}/${pkg.version}`;
36
66
  exports.getUserAgent = getUserAgent;
37
67
  const httpClient = got_1.default.extend({
@@ -40,10 +70,13 @@ const httpClient = got_1.default.extend({
40
70
  headers: {
41
71
  'user-agent': (0, exports.getUserAgent)(),
42
72
  },
43
- agent: {
44
- http: new agentkeepalive_1.default(),
45
- https: new agentkeepalive_1.HttpsAgent(),
46
- },
73
+ agent,
47
74
  });
75
+ function hasHTTPProxy() {
76
+ return process.env.HTTP_PROXY || process.env.http_proxy;
77
+ }
78
+ function hasHTTPSProxy() {
79
+ return process.env.HTTPS_PROXY || process.env.https_proxy;
80
+ }
48
81
  exports.default = httpClient;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsaUVBQXVEO0FBRXZELDBDQUFnRDtBQUNoRCx5Q0FBZ0U7QUFFaEUsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFbkMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFZLEVBQVUsRUFBRSxDQUNuRCxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLDRCQUFpQixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQURsRCxRQUFBLFlBQVksZ0JBQ3NDO0FBRS9ELE1BQU0sVUFBVSxHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7SUFDNUIsT0FBTyxFQUFFLElBQUEsNEJBQWlCLEdBQUU7SUFDNUIsS0FBSyxFQUFFLElBQUEsMEJBQWUsR0FBRTtJQUN4QixPQUFPLEVBQUU7UUFDUCxZQUFZLEVBQUUsSUFBQSxvQkFBWSxHQUFFO0tBQzdCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLElBQUksd0JBQVMsRUFBRTtRQUNyQixLQUFLLEVBQUUsSUFBSSwyQkFBVSxFQUFFO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsa0JBQWUsVUFBVSxDQUFDIn0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBcUI7QUFDckIsaUVBQXNEO0FBQ3RELHFDQUF5RDtBQUV6RCwwQ0FBK0M7QUFDL0MseUNBQStEO0FBRS9ELE1BQU0sU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFBO0FBQ2hDLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFBO0FBQ2xDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBQ3pDLE1BQU0sS0FBSyxHQUNULENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFVBQVU7SUFDekIsQ0FBQyxDQUFDO1FBQ0UsSUFBSSxFQUFFLFNBQVM7WUFDYixDQUFDLENBQUMsSUFBSSx3QkFBYyxDQUFDO2dCQUNqQixTQUFTLEVBQUUsSUFBSTtnQkFDZixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsY0FBYyxFQUFFLEdBQUc7Z0JBQ25CLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixLQUFLLEVBQUUsU0FBUzthQUNqQixDQUFDO1lBQ0osQ0FBQyxDQUFDLElBQUksd0JBQVMsRUFBRTtRQUNuQixLQUFLLEVBQUUsVUFBVTtZQUNmLENBQUMsQ0FBQyxJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixVQUFVLEVBQUUsR0FBRztnQkFDZixjQUFjLEVBQUUsR0FBRztnQkFDbkIsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxVQUFVO2FBQ2xCLENBQUM7WUFDSixDQUFDLENBQUMsSUFBSSwyQkFBVSxFQUFFO0tBQ3JCO0lBQ0gsQ0FBQyxDQUFDO1FBQ0UsSUFBSSxFQUFFLElBQUksd0JBQVMsRUFBRTtRQUNyQixLQUFLLEVBQUUsSUFBSSwyQkFBVSxFQUFFO0tBQ3hCLENBQUE7QUFFQSxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVksRUFBVSxFQUFFLENBQ25ELEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsNEJBQWlCLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBRGpELFFBQUEsWUFBWSxnQkFDcUM7QUFFOUQsTUFBTSxVQUFVLEdBQUcsYUFBRyxDQUFDLE1BQU0sQ0FBQztJQUM1QixPQUFPLEVBQUUsSUFBQSw0QkFBaUIsR0FBRTtJQUM1QixLQUFLLEVBQUUsSUFBQSwwQkFBZSxHQUFFO0lBQ3hCLE9BQU8sRUFBRTtRQUNQLFlBQVksRUFBRSxJQUFBLG9CQUFZLEdBQUU7S0FDN0I7SUFDRCxLQUFLO0NBQ04sQ0FBQyxDQUFBO0FBRUYsU0FBUyxZQUFZO0lBQ25CLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUE7QUFDekQsQ0FBQztBQUVELFNBQVMsYUFBYTtJQUNwQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFBO0FBQzNELENBQUM7QUFFRCxrQkFBZSxVQUFVLENBQUEifQ==
@@ -1,12 +1,16 @@
1
1
  import { JsonObject } from 'type-fest';
2
- import { NodeFilterType, NodeNameFilterType, PlainObjectOf, PossibleNodeConfigType, ProxyGroupModifier, ShadowsocksNodeConfig, ShadowsocksrNodeConfig, SimpleNodeConfig, SortedNodeNameFilterType, VmessNodeConfig } from '../types';
2
+ import { NodeFilterType, PossibleNodeConfigType, ShadowsocksNodeConfig, ShadowsocksrNodeConfig, SortedNodeFilterType, VmessNodeConfig } from '../types';
3
3
  export * from './surge';
4
4
  export * from './surfboard';
5
5
  export * from './clash';
6
6
  export * from './quantumult';
7
+ export * from './loon';
8
+ export * from './remote-snippet';
9
+ export * from './subscription';
10
+ export * from './time';
11
+ export { default as httpClient } from './http-client';
7
12
  export declare const getDownloadUrl: (baseUrl: string | undefined, artifactName: string, inline?: boolean, accessToken?: string) => string;
8
13
  export declare const getUrl: (baseUrl: string, path: string, accessToken?: string) => string;
9
- export declare const getMellowNodes: (list: ReadonlyArray<VmessNodeConfig | ShadowsocksNodeConfig>, filter?: NodeFilterType | SortedNodeNameFilterType) => string;
10
14
  export declare const toUrlSafeBase64: (str: string) => string;
11
15
  export declare const fromUrlSafeBase64: (str: string) => string;
12
16
  export declare const toBase64: (str: string) => string;
@@ -19,33 +23,18 @@ export declare const getShadowsocksNodes: (list: ReadonlyArray<ShadowsocksNodeCo
19
23
  export declare const getShadowsocksrNodes: (list: ReadonlyArray<ShadowsocksrNodeConfig>, groupName: string) => string;
20
24
  export declare const getV2rayNNodes: (list: ReadonlyArray<VmessNodeConfig>) => string;
21
25
  export declare const getShadowsocksNodesJSON: (list: ReadonlyArray<ShadowsocksNodeConfig>) => string;
22
- export declare const getNodeNames: (list: ReadonlyArray<SimpleNodeConfig>, filter?: NodeNameFilterType | SortedNodeNameFilterType, separator?: string) => string;
23
- export declare const generateClashProxyGroup: (ruleName: string, ruleType: 'select' | 'url-test' | 'fallback' | 'load-balance', nodeNameList: ReadonlyArray<SimpleNodeConfig>, options: {
24
- readonly filter?: NodeNameFilterType | SortedNodeNameFilterType;
25
- readonly existingProxies?: ReadonlyArray<string>;
26
- readonly proxyTestUrl?: string;
27
- readonly proxyTestInterval?: number;
28
- }) => {
29
- readonly type: string;
30
- readonly name: string;
31
- readonly proxies: readonly string[];
32
- readonly url?: string | undefined;
33
- readonly interval?: number | undefined;
34
- };
35
- export declare const toYaml: (obj: JsonObject) => string;
26
+ export declare const getNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType, separator?: string) => string;
36
27
  export declare const changeCase: (str: string, format: 'camelCase' | 'snakeCase' | 'kebabCase') => string;
37
28
  export declare const pickAndFormatStringList: (obj: Record<string, any>, keyList: readonly string[], options?: {
38
29
  keyFormat?: 'camelCase' | 'snakeCase' | 'kebabCase';
39
30
  }) => readonly string[];
31
+ export declare const pickAndFormatKeys: (obj: Record<string, any>, keyList: readonly string[], options?: {
32
+ keyFormat?: 'camelCase' | 'snakeCase' | 'kebabCase';
33
+ }) => Record<string, any>;
40
34
  export declare const decodeStringList: <T = Record<string, string | boolean>>(stringList: ReadonlyArray<string>) => T;
41
- export declare const normalizeClashProxyGroupConfig: (nodeList: ReadonlyArray<PossibleNodeConfigType>, customFilters: PlainObjectOf<NodeNameFilterType | SortedNodeNameFilterType>, proxyGroupModifier: ProxyGroupModifier, options?: {
42
- readonly proxyTestUrl?: string;
43
- readonly proxyTestInterval?: number;
44
- }) => ReadonlyArray<any>;
45
35
  export declare const ensureConfigFolder: (dir?: string) => string;
46
36
  export declare const formatV2rayConfig: (localPort: number, nodeConfig: VmessNodeConfig) => JsonObject;
47
37
  export declare const lowercaseHeaderKeys: (headers: Record<string, string>) => Record<string, string>;
48
- export declare const msToSeconds: (ms: number) => number;
49
38
  export declare const isIp: (str: string) => boolean;
50
39
  export declare const isNow: () => boolean;
51
40
  export declare const isVercel: () => boolean;
@@ -58,3 +47,6 @@ export declare const isAWSLambda: () => boolean;
58
47
  export declare const isAWS: () => boolean;
59
48
  export declare const isFlyIO: () => boolean;
60
49
  export declare const isGFWFree: () => boolean;
50
+ export declare const assertNever: (x: never) => never;
51
+ export declare const checkNotNullish: (val: unknown) => boolean;
52
+ export declare const getPortFromHost: (host: string) => number;