surgio 3.11.2 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/bin/dev +0 -0
  2. package/package.json +69 -75
  3. package/build/base-command.d.ts +0 -20
  4. package/build/base-command.js +0 -75
  5. package/build/base-command.js.map +0 -1
  6. package/build/commands/check.d.ts +0 -10
  7. package/build/commands/check.js +0 -87
  8. package/build/commands/check.js.map +0 -1
  9. package/build/commands/clean-cache.d.ts +0 -6
  10. package/build/commands/clean-cache.js +0 -28
  11. package/build/commands/clean-cache.js.map +0 -1
  12. package/build/commands/doctor.d.ts +0 -6
  13. package/build/commands/doctor.js +0 -20
  14. package/build/commands/doctor.js.map +0 -1
  15. package/build/commands/generate.d.ts +0 -7
  16. package/build/commands/generate.js +0 -94
  17. package/build/commands/generate.js.map +0 -1
  18. package/build/commands/lint.d.ts +0 -6
  19. package/build/commands/lint.js +0 -37
  20. package/build/commands/lint.js.map +0 -1
  21. package/build/commands/new.d.ts +0 -6
  22. package/build/commands/new.js +0 -37
  23. package/build/commands/new.js.map +0 -1
  24. package/build/commands/subscriptions.d.ts +0 -7
  25. package/build/commands/subscriptions.js +0 -95
  26. package/build/commands/subscriptions.js.map +0 -1
  27. package/build/commands/upload.d.ts +0 -6
  28. package/build/commands/upload.js +0 -91
  29. package/build/commands/upload.js.map +0 -1
  30. package/build/config.d.ts +0 -6
  31. package/build/config.js +0 -156
  32. package/build/config.js.map +0 -1
  33. package/build/configurables.d.ts +0 -88
  34. package/build/configurables.js +0 -52
  35. package/build/configurables.js.map +0 -1
  36. package/build/constant/constant.d.ts +0 -36
  37. package/build/constant/constant.js +0 -160
  38. package/build/constant/constant.js.map +0 -1
  39. package/build/constant/env.d.ts +0 -9
  40. package/build/constant/env.js +0 -13
  41. package/build/constant/env.js.map +0 -1
  42. package/build/constant/error.d.ts +0 -1
  43. package/build/constant/error.js +0 -5
  44. package/build/constant/error.js.map +0 -1
  45. package/build/constant/index.d.ts +0 -3
  46. package/build/constant/index.js +0 -20
  47. package/build/constant/index.js.map +0 -1
  48. package/build/filters/classes.d.ts +0 -13
  49. package/build/filters/classes.js +0 -42
  50. package/build/filters/classes.js.map +0 -1
  51. package/build/filters/filters.d.ts +0 -25
  52. package/build/filters/filters.js +0 -107
  53. package/build/filters/filters.js.map +0 -1
  54. package/build/filters/index.d.ts +0 -2
  55. package/build/filters/index.js +0 -32
  56. package/build/filters/index.js.map +0 -1
  57. package/build/filters/utils.d.ts +0 -16
  58. package/build/filters/utils.js +0 -159
  59. package/build/filters/utils.js.map +0 -1
  60. package/build/generator/artifact.d.ts +0 -142
  61. package/build/generator/artifact.js +0 -370
  62. package/build/generator/artifact.js.map +0 -1
  63. package/build/generator/index.d.ts +0 -3
  64. package/build/generator/index.js +0 -25
  65. package/build/generator/index.js.map +0 -1
  66. package/build/generator/json-template.d.ts +0 -11
  67. package/build/generator/json-template.js +0 -66
  68. package/build/generator/json-template.js.map +0 -1
  69. package/build/generator/template.d.ts +0 -8
  70. package/build/generator/template.js +0 -234
  71. package/build/generator/template.js.map +0 -1
  72. package/build/hooks/init.d.ts +0 -3
  73. package/build/hooks/init.js +0 -33
  74. package/build/hooks/init.js.map +0 -1
  75. package/build/index.d.ts +0 -85
  76. package/build/index.js +0 -64
  77. package/build/index.js.map +0 -1
  78. package/build/internal.d.ts +0 -5
  79. package/build/internal.js +0 -25
  80. package/build/internal.js.map +0 -1
  81. package/build/misc/deprecation.d.ts +0 -0
  82. package/build/misc/deprecation.js +0 -2
  83. package/build/misc/deprecation.js.map +0 -1
  84. package/build/misc/flag_cn.d.ts +0 -56
  85. package/build/misc/flag_cn.js +0 -154
  86. package/build/misc/flag_cn.js.map +0 -1
  87. package/build/provider/BlackSSLProvider.d.ts +0 -11
  88. package/build/provider/BlackSSLProvider.js +0 -93
  89. package/build/provider/BlackSSLProvider.js.map +0 -1
  90. package/build/provider/ClashProvider.d.ts +0 -24
  91. package/build/provider/ClashProvider.js +0 -476
  92. package/build/provider/ClashProvider.js.map +0 -1
  93. package/build/provider/CustomProvider.d.ts +0 -10
  94. package/build/provider/CustomProvider.js +0 -144
  95. package/build/provider/CustomProvider.js.map +0 -1
  96. package/build/provider/Provider.d.ts +0 -17
  97. package/build/provider/Provider.js +0 -111
  98. package/build/provider/Provider.js.map +0 -1
  99. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +0 -11
  100. package/build/provider/ShadowsocksJsonSubscribeProvider.js +0 -86
  101. package/build/provider/ShadowsocksJsonSubscribeProvider.js.map +0 -1
  102. package/build/provider/ShadowsocksSubscribeProvider.d.ts +0 -18
  103. package/build/provider/ShadowsocksSubscribeProvider.js +0 -84
  104. package/build/provider/ShadowsocksSubscribeProvider.js.map +0 -1
  105. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +0 -15
  106. package/build/provider/ShadowsocksrSubscribeProvider.js +0 -93
  107. package/build/provider/ShadowsocksrSubscribeProvider.js.map +0 -1
  108. package/build/provider/SsdProvider.d.ts +0 -39
  109. package/build/provider/SsdProvider.js +0 -138
  110. package/build/provider/SsdProvider.js.map +0 -1
  111. package/build/provider/TrojanProvider.d.ts +0 -24
  112. package/build/provider/TrojanProvider.js +0 -98
  113. package/build/provider/TrojanProvider.js.map +0 -1
  114. package/build/provider/V2rayNSubscribeProvider.d.ts +0 -25
  115. package/build/provider/V2rayNSubscribeProvider.js +0 -181
  116. package/build/provider/V2rayNSubscribeProvider.js.map +0 -1
  117. package/build/provider/index.d.ts +0 -17
  118. package/build/provider/index.js +0 -54
  119. package/build/provider/index.js.map +0 -1
  120. package/build/provider/types.d.ts +0 -18
  121. package/build/provider/types.js +0 -3
  122. package/build/provider/types.js.map +0 -1
  123. package/build/redis.d.ts +0 -9
  124. package/build/redis.js +0 -63
  125. package/build/redis.js.map +0 -1
  126. package/build/types.d.ts +0 -138
  127. package/build/types.js +0 -31
  128. package/build/types.js.map +0 -1
  129. package/build/utils/cache.d.ts +0 -23
  130. package/build/utils/cache.js +0 -98
  131. package/build/utils/cache.js.map +0 -1
  132. package/build/utils/clash.d.ts +0 -3
  133. package/build/utils/clash.js +0 -448
  134. package/build/utils/clash.js.map +0 -1
  135. package/build/utils/constant.d.ts +0 -1
  136. package/build/utils/constant.js +0 -19
  137. package/build/utils/constant.js.map +0 -1
  138. package/build/utils/dns.d.ts +0 -4
  139. package/build/utils/dns.js +0 -51
  140. package/build/utils/dns.js.map +0 -1
  141. package/build/utils/doctor.d.ts +0 -2
  142. package/build/utils/doctor.js +0 -38
  143. package/build/utils/doctor.js.map +0 -1
  144. package/build/utils/env-flag.d.ts +0 -9
  145. package/build/utils/env-flag.js +0 -41
  146. package/build/utils/env-flag.js.map +0 -1
  147. package/build/utils/error-helper.d.ts +0 -2
  148. package/build/utils/error-helper.js +0 -62
  149. package/build/utils/error-helper.js.map +0 -1
  150. package/build/utils/errors.d.ts +0 -19
  151. package/build/utils/errors.js +0 -60
  152. package/build/utils/errors.js.map +0 -1
  153. package/build/utils/flag.d.ts +0 -3
  154. package/build/utils/flag.js +0 -79
  155. package/build/utils/flag.js.map +0 -1
  156. package/build/utils/http-client.d.ts +0 -3
  157. package/build/utils/http-client.js +0 -82
  158. package/build/utils/http-client.js.map +0 -1
  159. package/build/utils/index.d.ts +0 -90
  160. package/build/utils/index.js +0 -529
  161. package/build/utils/index.js.map +0 -1
  162. package/build/utils/linter.d.ts +0 -4
  163. package/build/utils/linter.js +0 -49
  164. package/build/utils/linter.js.map +0 -1
  165. package/build/utils/loon.d.ts +0 -3
  166. package/build/utils/loon.js +0 -236
  167. package/build/utils/loon.js.map +0 -1
  168. package/build/utils/quantumult.d.ts +0 -6
  169. package/build/utils/quantumult.js +0 -240
  170. package/build/utils/quantumult.js.map +0 -1
  171. package/build/utils/relayable-url.d.ts +0 -1
  172. package/build/utils/relayable-url.js +0 -18
  173. package/build/utils/relayable-url.js.map +0 -1
  174. package/build/utils/remote-snippet.d.ts +0 -8
  175. package/build/utils/remote-snippet.js +0 -198
  176. package/build/utils/remote-snippet.js.map +0 -1
  177. package/build/utils/singbox.d.ts +0 -3
  178. package/build/utils/singbox.js +0 -377
  179. package/build/utils/singbox.js.map +0 -1
  180. package/build/utils/ss.d.ts +0 -3
  181. package/build/utils/ss.js +0 -97
  182. package/build/utils/ss.js.map +0 -1
  183. package/build/utils/ssr.d.ts +0 -7
  184. package/build/utils/ssr.js +0 -53
  185. package/build/utils/ssr.js.map +0 -1
  186. package/build/utils/subscription.d.ts +0 -11
  187. package/build/utils/subscription.js +0 -68
  188. package/build/utils/subscription.js.map +0 -1
  189. package/build/utils/surfboard.d.ts +0 -7
  190. package/build/utils/surfboard.js +0 -184
  191. package/build/utils/surfboard.js.map +0 -1
  192. package/build/utils/surge.d.ts +0 -8
  193. package/build/utils/surge.js +0 -407
  194. package/build/utils/surge.js.map +0 -1
  195. package/build/utils/time.d.ts +0 -1
  196. package/build/utils/time.js +0 -6
  197. package/build/utils/time.js.map +0 -1
  198. package/build/utils/tmp-helper.d.ts +0 -30
  199. package/build/utils/tmp-helper.js +0 -102
  200. package/build/utils/tmp-helper.js.map +0 -1
  201. package/build/utils/trojan.d.ts +0 -2
  202. package/build/utils/trojan.js +0 -38
  203. package/build/utils/trojan.js.map +0 -1
  204. package/build/utils/useragent.d.ts +0 -18
  205. package/build/utils/useragent.js +0 -210
  206. package/build/utils/useragent.js.map +0 -1
  207. package/build/validators/artifact.d.ts +0 -44
  208. package/build/validators/artifact.js +0 -26
  209. package/build/validators/artifact.js.map +0 -1
  210. package/build/validators/common.d.ts +0 -377
  211. package/build/validators/common.js +0 -106
  212. package/build/validators/common.js.map +0 -1
  213. package/build/validators/filter.d.ts +0 -10
  214. package/build/validators/filter.js +0 -15
  215. package/build/validators/filter.js.map +0 -1
  216. package/build/validators/hooks.d.ts +0 -9
  217. package/build/validators/hooks.js +0 -11
  218. package/build/validators/hooks.js.map +0 -1
  219. package/build/validators/http.d.ts +0 -366
  220. package/build/validators/http.js +0 -23
  221. package/build/validators/http.js.map +0 -1
  222. package/build/validators/hysteria2.d.ts +0 -196
  223. package/build/validators/hysteria2.js +0 -15
  224. package/build/validators/hysteria2.js.map +0 -1
  225. package/build/validators/index.d.ts +0 -17
  226. package/build/validators/index.js +0 -34
  227. package/build/validators/index.js.map +0 -1
  228. package/build/validators/provider.d.ts +0 -120
  229. package/build/validators/provider.js +0 -46
  230. package/build/validators/provider.js.map +0 -1
  231. package/build/validators/shadowsocks.d.ts +0 -252
  232. package/build/validators/shadowsocks.js +0 -31
  233. package/build/validators/shadowsocks.js.map +0 -1
  234. package/build/validators/shadowsocksr.d.ts +0 -184
  235. package/build/validators/shadowsocksr.js +0 -19
  236. package/build/validators/shadowsocksr.js.map +0 -1
  237. package/build/validators/snell.d.ts +0 -178
  238. package/build/validators/snell.js +0 -17
  239. package/build/validators/snell.js.map +0 -1
  240. package/build/validators/socks5.d.ts +0 -196
  241. package/build/validators/socks5.js +0 -15
  242. package/build/validators/socks5.js.map +0 -1
  243. package/build/validators/surgio-config.d.ts +0 -387
  244. package/build/validators/surgio-config.js +0 -101
  245. package/build/validators/surgio-config.js.map +0 -1
  246. package/build/validators/trojan.d.ts +0 -255
  247. package/build/validators/trojan.js +0 -16
  248. package/build/validators/trojan.js.map +0 -1
  249. package/build/validators/tuic.d.ts +0 -741
  250. package/build/validators/tuic.js +0 -21
  251. package/build/validators/tuic.js.map +0 -1
  252. package/build/validators/vless.d.ts +0 -389
  253. package/build/validators/vless.js +0 -31
  254. package/build/validators/vless.js.map +0 -1
  255. package/build/validators/vmess.d.ts +0 -425
  256. package/build/validators/vmess.js +0 -86
  257. package/build/validators/vmess.js.map +0 -1
  258. package/build/validators/wireguard.d.ts +0 -230
  259. package/build/validators/wireguard.js +0 -26
  260. package/build/validators/wireguard.js.map +0 -1
@@ -1,529 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.getHeader = exports.parseBitrate = exports.getHostnameFromHost = exports.getPortFromHost = exports.checkNotNullish = exports.isGFWFree = exports.isFlyIO = exports.isAWS = exports.isAWSLambda = exports.isNetlify = exports.isRailway = exports.isGitLabCI = exports.isGitHubActions = exports.isHeroku = exports.isVercel = exports.isNow = exports.isIp = exports.lowercaseHeaderKeys = exports.ensureConfigFolder = exports.decodeStringList = exports.pickAndFormatKeys = exports.pickAndFormatStringList = exports.changeCase = exports.getNodeNames = exports.getShadowsocksNodesJSON = exports.getV2rayNNodes = exports.getShadowsocksrNodes = exports.getShadowsocksNodes = exports.toMD5 = exports.fromBase64 = exports.toBase64 = exports.fromUrlSafeBase64 = exports.toUrlSafeBase64 = exports.getUrl = exports.getDownloadUrl = exports.httpClient = void 0;
21
- const os_1 = __importDefault(require("os"));
22
- const path_1 = require("path");
23
- const url_1 = require("url");
24
- const net_1 = __importDefault(require("net"));
25
- const crypto_1 = __importDefault(require("crypto"));
26
- const urlsafe_base64_1 = __importDefault(require("urlsafe-base64"));
27
- const query_string_1 = __importDefault(require("query-string"));
28
- const fs_extra_1 = __importDefault(require("fs-extra"));
29
- const logger_1 = require("@surgio/logger");
30
- const change_case_1 = require("change-case");
31
- const types_1 = require("../types");
32
- const constant_1 = require("../constant");
33
- const filters_1 = require("../filters");
34
- const env_flag_1 = require("./env-flag");
35
- __exportStar(require("./surge"), exports);
36
- __exportStar(require("./surfboard"), exports);
37
- __exportStar(require("./clash"), exports);
38
- __exportStar(require("./singbox"), exports);
39
- __exportStar(require("./quantumult"), exports);
40
- __exportStar(require("./loon"), exports);
41
- __exportStar(require("./remote-snippet"), exports);
42
- __exportStar(require("./subscription"), exports);
43
- __exportStar(require("./time"), exports);
44
- __exportStar(require("./errors"), exports);
45
- __exportStar(require("./env-flag"), exports);
46
- var http_client_1 = require("./http-client");
47
- Object.defineProperty(exports, "httpClient", { enumerable: true, get: function () { return __importDefault(http_client_1).default; } });
48
- const logger = (0, logger_1.createLogger)({ service: 'surgio:utils' });
49
- const getDownloadUrl = (baseUrl = '/', artifactName, inline = true, accessToken) => {
50
- let urlSearchParams;
51
- let name;
52
- if (artifactName.includes('?')) {
53
- urlSearchParams = new url_1.URLSearchParams(artifactName.split('?')[1]);
54
- name = artifactName.split('?')[0];
55
- }
56
- else {
57
- urlSearchParams = new url_1.URLSearchParams();
58
- name = artifactName;
59
- }
60
- if (accessToken) {
61
- urlSearchParams.set('access_token', accessToken);
62
- }
63
- if (!inline) {
64
- urlSearchParams.set('dl', '1');
65
- }
66
- const query = urlSearchParams.toString();
67
- return `${baseUrl}${name}${query ? '?' + query : ''}`;
68
- };
69
- exports.getDownloadUrl = getDownloadUrl;
70
- const getUrl = (baseUrl, path, accessToken) => {
71
- path = path.replace(/^\//, '');
72
- const url = new url_1.URL(path, baseUrl);
73
- if (accessToken) {
74
- url.searchParams.set('access_token', accessToken);
75
- }
76
- return url.toString();
77
- };
78
- exports.getUrl = getUrl;
79
- // istanbul ignore next
80
- const toUrlSafeBase64 = (str) => urlsafe_base64_1.default.encode(Buffer.from(str, 'utf8'));
81
- exports.toUrlSafeBase64 = toUrlSafeBase64;
82
- // istanbul ignore next
83
- const fromUrlSafeBase64 = (str) => {
84
- if (urlsafe_base64_1.default.validate(str)) {
85
- return urlsafe_base64_1.default.decode(str).toString();
86
- }
87
- return (0, exports.fromBase64)(str);
88
- };
89
- exports.fromUrlSafeBase64 = fromUrlSafeBase64;
90
- // istanbul ignore next
91
- const toBase64 = (str) => Buffer.from(str, 'utf8').toString('base64');
92
- exports.toBase64 = toBase64;
93
- // istanbul ignore next
94
- const fromBase64 = (str) => Buffer.from(str, 'base64').toString('utf8');
95
- exports.fromBase64 = fromBase64;
96
- // istanbul ignore next
97
- const toMD5 = (str) => crypto_1.default.createHash('md5').update(str).digest('hex');
98
- exports.toMD5 = toMD5;
99
- /**
100
- * @see https://github.com/shadowsocks/shadowsocks-org/wiki/SIP002-URI-Scheme
101
- */
102
- const getShadowsocksNodes = (list, groupName = 'Surgio') => {
103
- const result = list
104
- .map((nodeConfig) => {
105
- // istanbul ignore next
106
- if (nodeConfig.enable === false) {
107
- return null;
108
- }
109
- switch (nodeConfig.type) {
110
- case types_1.NodeTypeEnum.Shadowsocks: {
111
- const query = {
112
- ...(nodeConfig.obfs
113
- ? {
114
- plugin: `${encodeURIComponent(`obfs-local;obfs=${nodeConfig.obfs};obfs-host=${nodeConfig.obfsHost}`)}`,
115
- }
116
- : null),
117
- ...(groupName ? { group: encodeURIComponent(groupName) } : null),
118
- };
119
- return [
120
- 'ss://',
121
- (0, exports.toUrlSafeBase64)(`${nodeConfig.method}:${nodeConfig.password}`),
122
- '@',
123
- nodeConfig.hostname,
124
- ':',
125
- nodeConfig.port,
126
- '/?',
127
- query_string_1.default.stringify(query, {
128
- encode: false,
129
- sort: false,
130
- }),
131
- '#',
132
- encodeURIComponent(nodeConfig.nodeName),
133
- ].join('');
134
- }
135
- // istanbul ignore next
136
- default:
137
- logger.warn(`在生成 Shadowsocks 节点时出现了 ${nodeConfig.type} 节点,节点 ${nodeConfig.nodeName} 会被省略`);
138
- return null;
139
- }
140
- })
141
- .filter((item) => !!item);
142
- return result.join('\n');
143
- };
144
- exports.getShadowsocksNodes = getShadowsocksNodes;
145
- const getShadowsocksrNodes = (list, groupName) => {
146
- const result = list
147
- .map((nodeConfig) => {
148
- // istanbul ignore next
149
- if (nodeConfig.enable === false) {
150
- return void 0;
151
- }
152
- switch (nodeConfig.type) {
153
- case types_1.NodeTypeEnum.Shadowsocksr: {
154
- const baseUri = [
155
- nodeConfig.hostname,
156
- nodeConfig.port,
157
- nodeConfig.protocol,
158
- nodeConfig.method,
159
- nodeConfig.obfs,
160
- (0, exports.toUrlSafeBase64)(nodeConfig.password),
161
- ].join(':');
162
- const query = {
163
- obfsparam: (0, exports.toUrlSafeBase64)(nodeConfig.obfsparam),
164
- protoparam: (0, exports.toUrlSafeBase64)(nodeConfig.protoparam),
165
- remarks: (0, exports.toUrlSafeBase64)(nodeConfig.nodeName),
166
- group: (0, exports.toUrlSafeBase64)(groupName),
167
- udpport: 0,
168
- uot: 0,
169
- };
170
- return ('ssr://' +
171
- (0, exports.toUrlSafeBase64)([
172
- baseUri,
173
- '/?',
174
- query_string_1.default.stringify(query, {
175
- encode: false,
176
- }),
177
- ].join('')));
178
- }
179
- // istanbul ignore next
180
- default:
181
- logger.warn(`在生成 Shadowsocksr 节点时出现了 ${nodeConfig.type} 节点,节点 ${nodeConfig.nodeName} 会被省略`);
182
- return void 0;
183
- }
184
- })
185
- .filter((item) => item !== undefined);
186
- return result.join('\n');
187
- };
188
- exports.getShadowsocksrNodes = getShadowsocksrNodes;
189
- // https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2)
190
- const getV2rayNNodes = (list) => {
191
- const result = list
192
- .map((nodeConfig) => {
193
- // istanbul ignore next
194
- if (nodeConfig.enable === false) {
195
- return void 0;
196
- }
197
- if (!constant_1.V2RAYN_SUPPORTED_VMESS_NETWORK.includes(nodeConfig.network)) {
198
- logger.warn(`在生成 V2Ray 节点时出现了不被支持的 ${nodeConfig.network} 协议,节点 ${nodeConfig.nodeName} 会被省略`);
199
- return void 0;
200
- }
201
- switch (nodeConfig.type) {
202
- case types_1.NodeTypeEnum.Vmess: {
203
- const json = {
204
- v: '2',
205
- ps: nodeConfig.nodeName,
206
- add: nodeConfig.hostname,
207
- port: `${nodeConfig.port}`,
208
- id: nodeConfig.uuid,
209
- aid: `${nodeConfig.alterId}` || '0',
210
- scy: nodeConfig.method,
211
- net: nodeConfig.network === 'http' ? 'tcp' : nodeConfig.network,
212
- type: nodeConfig.network === 'http' ? 'http' : 'none',
213
- };
214
- if (nodeConfig.tls) {
215
- json.tls = 'tls';
216
- if (nodeConfig.sni) {
217
- json.sni = nodeConfig.sni;
218
- }
219
- if (nodeConfig.alpn) {
220
- json.alpn = nodeConfig.alpn.join(',');
221
- }
222
- }
223
- switch (nodeConfig.network) {
224
- case 'ws':
225
- if (nodeConfig.wsOpts) {
226
- const obfsHost = (0, exports.getHeader)(nodeConfig.wsOpts.headers, 'host');
227
- json.path = nodeConfig.wsOpts.path;
228
- if (obfsHost) {
229
- json.host = obfsHost;
230
- }
231
- }
232
- break;
233
- case 'http':
234
- if (nodeConfig.httpOpts) {
235
- const obfsHost = (0, exports.getHeader)(nodeConfig.httpOpts.headers, 'host');
236
- json.path = nodeConfig.httpOpts.path[0];
237
- if (obfsHost) {
238
- json.host = obfsHost;
239
- }
240
- }
241
- break;
242
- case 'h2':
243
- if (nodeConfig.h2Opts) {
244
- json.path = nodeConfig.h2Opts.path;
245
- json.host = nodeConfig.h2Opts.host[0];
246
- }
247
- break;
248
- case 'grpc':
249
- if (nodeConfig.grpcOpts) {
250
- json.path = nodeConfig.grpcOpts.serviceName;
251
- }
252
- break;
253
- }
254
- return 'vmess://' + (0, exports.toBase64)(JSON.stringify(json));
255
- }
256
- // istanbul ignore next
257
- default:
258
- logger.warn(`在生成 V2Ray 节点时出现了 ${nodeConfig.type} 节点,节点 ${nodeConfig.nodeName} 会被省略`);
259
- return void 0;
260
- }
261
- })
262
- .filter((item) => item !== undefined);
263
- return result.join('\n');
264
- };
265
- exports.getV2rayNNodes = getV2rayNNodes;
266
- // istanbul ignore next
267
- const getShadowsocksNodesJSON = (list) => {
268
- const nodes = list
269
- .map((nodeConfig) => {
270
- // istanbul ignore next
271
- if (nodeConfig.enable === false) {
272
- return null;
273
- }
274
- switch (nodeConfig.type) {
275
- case types_1.NodeTypeEnum.Shadowsocks: {
276
- const useObfs = Boolean(nodeConfig.obfs && nodeConfig.obfsHost);
277
- return {
278
- remarks: nodeConfig.nodeName,
279
- server: nodeConfig.hostname,
280
- server_port: nodeConfig.port,
281
- method: nodeConfig.method,
282
- remarks_base64: (0, exports.toUrlSafeBase64)(nodeConfig.nodeName),
283
- password: nodeConfig.password,
284
- tcp_over_udp: false,
285
- udp_over_tcp: false,
286
- enable: true,
287
- ...(useObfs
288
- ? {
289
- plugin: 'obfs-local',
290
- 'plugin-opts': `obfs=${nodeConfig.obfs};obfs-host=${nodeConfig.obfsHost}`,
291
- }
292
- : null),
293
- };
294
- }
295
- // istanbul ignore next
296
- default:
297
- logger.warn(`在生成 Shadowsocks 节点时出现了 ${nodeConfig.type} 节点,节点 ${nodeConfig.nodeName} 会被省略`);
298
- return undefined;
299
- }
300
- })
301
- .filter((item) => item !== undefined);
302
- return JSON.stringify(nodes, null, 2);
303
- };
304
- exports.getShadowsocksNodesJSON = getShadowsocksNodesJSON;
305
- const getNodeNames = function (list, filter, separator) {
306
- // istanbul ignore next
307
- if (arguments.length === 2 && typeof filter === 'undefined') {
308
- throw new Error(constant_1.ERR_INVALID_FILTER);
309
- }
310
- return (0, filters_1.applyFilter)(list, filter)
311
- .map((item) => item.nodeName)
312
- .join(separator || ', ');
313
- };
314
- exports.getNodeNames = getNodeNames;
315
- // istanbul ignore next
316
- const changeCase = (str, format) => {
317
- switch (format) {
318
- case 'camelCase':
319
- return (0, change_case_1.camelCase)(str);
320
- case 'snakeCase':
321
- return (0, change_case_1.snakeCase)(str);
322
- case 'kebabCase':
323
- return (0, change_case_1.paramCase)(str);
324
- }
325
- };
326
- exports.changeCase = changeCase;
327
- const pickAndFormatStringList = (obj, keyList, options = {}) => {
328
- const result = [];
329
- const { keyFormat, stringifyValue } = options;
330
- keyList.forEach((key) => {
331
- if (obj.hasOwnProperty(key) && obj[key] !== undefined) {
332
- const propertyKey = keyFormat ? (0, exports.changeCase)(key, keyFormat) : key;
333
- const propertyValue = obj[key];
334
- if (Array.isArray(propertyValue)) {
335
- result.push(`${propertyKey}=${stringifyValue
336
- ? JSON.stringify(propertyValue.join(','))
337
- : propertyValue.join(',')}`);
338
- }
339
- else {
340
- result.push(`${propertyKey}=${stringifyValue ? JSON.stringify(propertyValue) : propertyValue}`);
341
- }
342
- }
343
- });
344
- return result;
345
- };
346
- exports.pickAndFormatStringList = pickAndFormatStringList;
347
- /**
348
- * Pick and format keys from an object
349
- * Input:
350
- * {
351
- * foo: 'bar',
352
- * bAr: 'bar',
353
- * bAz: 'baz',
354
- * }
355
- *
356
- * pickAndFormatKeys(obj, ['foo', 'bar'], { keyFormat: 'kebabCase' })
357
- *
358
- * Output:
359
- * {
360
- * 'foo': 'bar',
361
- * 'b-ar': 'bar',
362
- * 'b-az': 'baz',
363
- * }
364
- */
365
- const pickAndFormatKeys = (obj, keyList, options = {}) => {
366
- const result = {};
367
- keyList.forEach((key) => {
368
- if (obj.hasOwnProperty(key) && obj[key] !== undefined) {
369
- const propertyKey = options.keyFormat
370
- ? (0, exports.changeCase)(key, options.keyFormat)
371
- : key;
372
- result[propertyKey] = obj[key];
373
- }
374
- });
375
- return result;
376
- };
377
- exports.pickAndFormatKeys = pickAndFormatKeys;
378
- const decodeStringList = (stringList) => {
379
- const result = {};
380
- stringList.forEach((item) => {
381
- if (item.includes('=')) {
382
- const match = item.match(/^(.*?)=(.*?)$/);
383
- if (match) {
384
- const key = match[1].trim();
385
- const value = match[2].trim();
386
- result[key] = value || true;
387
- }
388
- }
389
- else {
390
- result[item.trim()] = true;
391
- }
392
- });
393
- return result;
394
- };
395
- exports.decodeStringList = decodeStringList;
396
- const ensureConfigFolder = (dir = os_1.default.homedir()) => {
397
- let baseDir;
398
- try {
399
- fs_extra_1.default.accessSync(dir, fs_extra_1.default.constants.W_OK);
400
- baseDir = dir;
401
- }
402
- catch (err) {
403
- // if the user do not have write permission
404
- // istanbul ignore next
405
- baseDir = '/tmp';
406
- }
407
- const configDir = (0, path_1.join)(baseDir, '.config/surgio');
408
- fs_extra_1.default.mkdirpSync(configDir);
409
- return configDir;
410
- };
411
- exports.ensureConfigFolder = ensureConfigFolder;
412
- const lowercaseHeaderKeys = (headers) => {
413
- const wsHeaders = {};
414
- Object.keys(headers).forEach((key) => {
415
- wsHeaders[key.toLowerCase()] = headers[key];
416
- });
417
- return wsHeaders;
418
- };
419
- exports.lowercaseHeaderKeys = lowercaseHeaderKeys;
420
- // istanbul ignore next
421
- const isIp = (str) => net_1.default.isIPv4(str) || net_1.default.isIPv6(str);
422
- exports.isIp = isIp;
423
- // istanbul ignore next
424
- const isNow = () => typeof process.env.NOW_REGION !== 'undefined' ||
425
- typeof process.env.VERCEL_REGION !== 'undefined';
426
- exports.isNow = isNow;
427
- // istanbul ignore next
428
- const isVercel = () => (0, exports.isNow)();
429
- exports.isVercel = isVercel;
430
- // istanbul ignore next
431
- const isHeroku = () => typeof process.env.DYNO !== 'undefined';
432
- exports.isHeroku = isHeroku;
433
- // istanbul ignore next
434
- const isGitHubActions = () => typeof process.env.GITHUB_ACTIONS !== 'undefined';
435
- exports.isGitHubActions = isGitHubActions;
436
- // istanbul ignore next
437
- const isGitLabCI = () => typeof process.env.GITLAB_CI !== 'undefined';
438
- exports.isGitLabCI = isGitLabCI;
439
- // istanbul ignore next
440
- const isRailway = () => typeof process.env.RAILWAY_STATIC_URL !== 'undefined';
441
- exports.isRailway = isRailway;
442
- // istanbul ignore next
443
- const isNetlify = () => typeof process.env.NETLIFY !== 'undefined';
444
- exports.isNetlify = isNetlify;
445
- // istanbul ignore next
446
- const isAWSLambda = () => typeof process.env.AWS_LAMBDA_FUNCTION_NAME !== 'undefined';
447
- exports.isAWSLambda = isAWSLambda;
448
- // istanbul ignore next
449
- const isAWS = () => (0, exports.isAWSLambda)() ||
450
- typeof process.env.AWS_EXECUTION_ENV !== 'undefined' ||
451
- typeof process.env.AWS_REGION !== 'undefined';
452
- exports.isAWS = isAWS;
453
- // istanbul ignore next
454
- const isFlyIO = () => typeof process.env.FLY_REGION !== 'undefined';
455
- exports.isFlyIO = isFlyIO;
456
- // istanbul ignore next
457
- const isGFWFree = () => (0, env_flag_1.getIsGFWFree)() ||
458
- (0, exports.isAWS)() ||
459
- (0, exports.isAWSLambda)() ||
460
- (0, exports.isVercel)() ||
461
- (0, exports.isHeroku)() ||
462
- (0, exports.isGitHubActions)() ||
463
- (0, exports.isGitLabCI)() ||
464
- (0, exports.isRailway)() ||
465
- (0, exports.isNetlify)() ||
466
- (0, exports.isFlyIO)();
467
- exports.isGFWFree = isGFWFree;
468
- const checkNotNullish = (val) => val !== null && val !== undefined;
469
- exports.checkNotNullish = checkNotNullish;
470
- const getPortFromHost = (host) => {
471
- const match = host.match(/:(\d+)$/);
472
- if (match) {
473
- return Number(match[1]);
474
- }
475
- throw new Error(`Invalid host: ${host}`);
476
- };
477
- exports.getPortFromHost = getPortFromHost;
478
- const getHostnameFromHost = (host) => {
479
- const match = host.match(/^(.*?):/);
480
- if (match) {
481
- return match[1];
482
- }
483
- throw new Error(`Invalid host: ${host}`);
484
- };
485
- exports.getHostnameFromHost = getHostnameFromHost;
486
- /**
487
- * Returned value must be in Mbps
488
- *
489
- * Input value can be:
490
- * - 1.2 Mbps
491
- * - 1.2
492
- * - 1200
493
- * - 1200 Kbps
494
- * - 1.2 Gbps
495
- * Return value will be:
496
- * - 1.2
497
- * - 1.2
498
- * - 1.2
499
- * - 1.2
500
- * - 1200
501
- */
502
- const parseBitrate = (input) => {
503
- const inputStr = typeof input === 'number' ? `${input} Mbps` : input;
504
- const match = inputStr.match(/^(\d+(?:\.\d+)?)\s*(?:Mbps|Kbps|Gbps)?$/);
505
- if (!match) {
506
- throw new Error(`Invalid bitrate: ${inputStr}`);
507
- }
508
- const bitrate = Number(match[1]);
509
- if (inputStr.includes('Gbps')) {
510
- return bitrate * 1000;
511
- }
512
- else if (inputStr.includes('Kbps')) {
513
- return bitrate / 1000;
514
- }
515
- else {
516
- return bitrate;
517
- }
518
- };
519
- exports.parseBitrate = parseBitrate;
520
- const getHeader = (headers, key) => {
521
- if (!headers) {
522
- return undefined;
523
- }
524
- const lowerCaseKey = key.toLowerCase();
525
- const headerKey = Object.keys(headers).find((k) => k.toLowerCase() === lowerCaseKey);
526
- return headerKey ? headers[headerKey] : undefined;
527
- };
528
- exports.getHeader = getHeader;
529
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,4CAAmB;AACnB,+BAA2B;AAC3B,6BAA0C;AAC1C,8CAAqB;AACrB,oDAA2B;AAC3B,oEAA0C;AAC1C,gEAAsC;AACtC,wDAAyB;AACzB,2CAA6C;AAC7C,6CAA6D;AAE7D,oCAQiB;AACjB,0CAAgF;AAChF,wCAAwC;AAExC,yCAAyC;AAEzC,0CAAuB;AACvB,8CAA2B;AAC3B,0CAAuB;AACvB,4CAAyB;AACzB,+CAA4B;AAC5B,yCAAsB;AACtB,mDAAgC;AAChC,iDAA8B;AAC9B,yCAAsB;AACtB,2CAAwB;AACxB,6CAA0B;AAC1B,6CAAqD;AAA5C,0HAAA,OAAO,OAAc;AAE9B,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;AAEjD,MAAM,cAAc,GAAG,CAC5B,OAAO,GAAG,GAAG,EACb,YAAoB,EACpB,MAAM,GAAG,IAAI,EACb,WAAoB,EACZ,EAAE;IACV,IAAI,eAAgC,CAAA;IACpC,IAAI,IAAY,CAAA;IAEhB,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,eAAe,GAAG,IAAI,qBAAe,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,IAAI,qBAAe,EAAE,CAAA;QACvC,IAAI,GAAG,YAAY,CAAA;IACrB,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAA;IAExC,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACvD,CAAC,CAAA;AA3BY,QAAA,cAAc,kBA2B1B;AAEM,MAAM,MAAM,GAAG,CACpB,OAAe,EACf,IAAY,EACZ,WAAoB,EACZ,EAAE;IACV,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC,CAAA;AAXY,QAAA,MAAM,UAWlB;AAED,uBAAuB;AAChB,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE,CACrD,wBAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;AADnC,QAAA,eAAe,mBACoB;AAEhD,uBAAuB;AAChB,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAU,EAAE;IACvD,IAAI,wBAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,wBAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC7C,CAAC;IACD,OAAO,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAA;AACxB,CAAC,CAAA;AALY,QAAA,iBAAiB,qBAK7B;AAED,uBAAuB;AAChB,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AADhC,QAAA,QAAQ,YACwB;AAE7C,uBAAuB;AAChB,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE,CAChD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AADhC,QAAA,UAAU,cACsB;AAE7C,uBAAuB;AAChB,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAC3C,gBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AADvC,QAAA,KAAK,SACkC;AAEpD;;GAEG;AACI,MAAM,mBAAmB,GAAG,CACjC,IAA0C,EAC1C,SAAS,GAAG,QAAQ,EACZ,EAAE;IACV,MAAM,MAAM,GAAuB,IAAI;SACpC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClB,uBAAuB;QACvB,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,oBAAY,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAGP;oBACF,GAAG,CAAC,UAAU,CAAC,IAAI;wBACjB,CAAC,CAAC;4BACE,MAAM,EAAE,GAAG,kBAAkB,CAC3B,mBAAmB,UAAU,CAAC,IAAI,cAAc,UAAU,CAAC,QAAQ,EAAE,CACtE,EAAE;yBACJ;wBACH,CAAC,CAAC,IAAI,CAAC;oBACT,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBACjE,CAAA;gBAED,OAAO;oBACL,OAAO;oBACP,IAAA,uBAAe,EAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC9D,GAAG;oBACH,UAAU,CAAC,QAAQ;oBACnB,GAAG;oBACH,UAAU,CAAC,IAAI;oBACf,IAAI;oBACJ,sBAAW,CAAC,SAAS,CAAC,KAAK,EAAE;wBAC3B,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE,KAAK;qBACZ,CAAC;oBACF,GAAG;oBACH,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC;iBACxC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACZ,CAAC;YAED,uBAAuB;YACvB;gBACE,MAAM,CAAC,IAAI,CACT,0BAA0B,UAAU,CAAC,IAAI,UAAU,UAAU,CAAC,QAAQ,OAAO,CAC9E,CAAA;gBACD,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAE3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC,CAAA;AAvDY,QAAA,mBAAmB,uBAuD/B;AAEM,MAAM,oBAAoB,GAAG,CAClC,IAA2C,EAC3C,SAAiB,EACT,EAAE;IACV,MAAM,MAAM,GAAsC,IAAI;SACnD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClB,uBAAuB;QACvB,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,CAAA;QACf,CAAC;QAED,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,oBAAY,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,GAAG;oBACd,UAAU,CAAC,QAAQ;oBACnB,UAAU,CAAC,IAAI;oBACf,UAAU,CAAC,QAAQ;oBACnB,UAAU,CAAC,MAAM;oBACjB,UAAU,CAAC,IAAI;oBACf,IAAA,uBAAe,EAAC,UAAU,CAAC,QAAQ,CAAC;iBACrC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACX,MAAM,KAAK,GAAG;oBACZ,SAAS,EAAE,IAAA,uBAAe,EAAC,UAAU,CAAC,SAAS,CAAC;oBAChD,UAAU,EAAE,IAAA,uBAAe,EAAC,UAAU,CAAC,UAAU,CAAC;oBAClD,OAAO,EAAE,IAAA,uBAAe,EAAC,UAAU,CAAC,QAAQ,CAAC;oBAC7C,KAAK,EAAE,IAAA,uBAAe,EAAC,SAAS,CAAC;oBACjC,OAAO,EAAE,CAAC;oBACV,GAAG,EAAE,CAAC;iBACP,CAAA;gBAED,OAAO,CACL,QAAQ;oBACR,IAAA,uBAAe,EACb;wBACE,OAAO;wBACP,IAAI;wBACJ,sBAAW,CAAC,SAAS,CAAC,KAAK,EAAE;4BAC3B,MAAM,EAAE,KAAK;yBACd,CAAC;qBACH,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CACF,CAAA;YACH,CAAC;YAED,uBAAuB;YACvB;gBACE,MAAM,CAAC,IAAI,CACT,2BAA2B,UAAU,CAAC,IAAI,UAAU,UAAU,CAAC,QAAQ,OAAO,CAC/E,CAAA;gBACD,OAAO,KAAK,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAEvC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC,CAAA;AAvDY,QAAA,oBAAoB,wBAuDhC;AAED,uHAAuH;AAChH,MAAM,cAAc,GAAG,CAC5B,IAAoC,EAC5B,EAAE;IACV,MAAM,MAAM,GAA0B,IAAI;SACvC,GAAG,CAAC,CAAC,UAAU,EAAsB,EAAE;QACtC,uBAAuB;QACvB,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,CAAA;QACf,CAAC;QAED,IAAI,CAAC,yCAA8B,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAc,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CACT,yBAAyB,UAAU,CAAC,OAAO,UAAU,UAAU,CAAC,QAAQ,OAAO,CAChF,CAAA;YACD,OAAO,KAAK,CAAC,CAAA;QACf,CAAC;QAED,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,oBAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,GAA2B;oBACnC,CAAC,EAAE,GAAG;oBACN,EAAE,EAAE,UAAU,CAAC,QAAQ;oBACvB,GAAG,EAAE,UAAU,CAAC,QAAQ;oBACxB,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE;oBAC1B,EAAE,EAAE,UAAU,CAAC,IAAI;oBACnB,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG;oBACnC,GAAG,EAAE,UAAU,CAAC,MAAM;oBACtB,GAAG,EAAE,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO;oBAC/D,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;iBACtD,CAAA;gBAED,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;oBAEhB,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;wBACnB,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAA;oBAC3B,CAAC;oBACD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;wBACpB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACvC,CAAC;gBACH,CAAC;gBAED,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC;oBAC3B,KAAK,IAAI;wBACP,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;4BACtB,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;4BAC7D,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA;4BAElC,IAAI,QAAQ,EAAE,CAAC;gCACb,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;4BACtB,CAAC;wBACH,CAAC;wBAED,MAAK;oBACP,KAAK,MAAM;wBACT,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;4BACxB,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;4BAE/D,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;4BAEvC,IAAI,QAAQ,EAAE,CAAC;gCACb,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;4BACtB,CAAC;wBACH,CAAC;wBAED,MAAK;oBACP,KAAK,IAAI;wBACP,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;4BACtB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA;4BAClC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;wBACvC,CAAC;wBAED,MAAK;oBACP,KAAK,MAAM;wBACT,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;4BACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAA;wBAC7C,CAAC;wBAED,MAAK;gBACT,CAAC;gBAED,OAAO,UAAU,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YACpD,CAAC;YAED,uBAAuB;YACvB;gBACE,MAAM,CAAC,IAAI,CACT,oBAAoB,UAAU,CAAC,IAAI,UAAU,UAAU,CAAC,QAAQ,OAAO,CACxE,CAAA;gBACD,OAAO,KAAK,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAEvD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC,CAAA;AA/FY,QAAA,cAAc,kBA+F1B;AAED,uBAAuB;AAChB,MAAM,uBAAuB,GAAG,CACrC,IAA0C,EAClC,EAAE;IACV,MAAM,KAAK,GAAuB,IAAI;SACnC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClB,uBAAuB;QACvB,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,oBAAY,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC/D,OAAO;oBACL,OAAO,EAAE,UAAU,CAAC,QAAQ;oBAC5B,MAAM,EAAE,UAAU,CAAC,QAAQ;oBAC3B,WAAW,EAAE,UAAU,CAAC,IAAI;oBAC5B,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,cAAc,EAAE,IAAA,uBAAe,EAAC,UAAU,CAAC,QAAQ,CAAC;oBACpD,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,YAAY,EAAE,KAAK;oBACnB,YAAY,EAAE,KAAK;oBACnB,MAAM,EAAE,IAAI;oBACZ,GAAG,CAAC,OAAO;wBACT,CAAC,CAAC;4BACE,MAAM,EAAE,YAAY;4BACpB,aAAa,EAAE,QAAQ,UAAU,CAAC,IAAI,cAAc,UAAU,CAAC,QAAQ,EAAE;yBAC1E;wBACH,CAAC,CAAC,IAAI,CAAC;iBACV,CAAA;YACH,CAAC;YAED,uBAAuB;YACvB;gBACE,MAAM,CAAC,IAAI,CACT,0BAA0B,UAAU,CAAC,IAAI,UAAU,UAAU,CAAC,QAAQ,OAAO,CAC9E,CAAA;gBACD,OAAO,SAAS,CAAA;QACpB,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAEvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACvC,CAAC,CAAA;AA3CY,QAAA,uBAAuB,2BA2CnC;AAEM,MAAM,YAAY,GAAG,UAC1B,IAA2C,EAC3C,MAA8C,EAC9C,SAAkB;IAElB,uBAAuB;IACvB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,6BAAkB,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,IAAA,qBAAW,EAAC,IAAI,EAAE,MAAM,CAAC;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC5B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAA;AAbY,QAAA,YAAY,gBAaxB;AAED,uBAAuB;AAChB,MAAM,UAAU,GAAG,CACxB,GAAW,EACX,MAA+C,EACvC,EAAE;IACV,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAA;QACvB,KAAK,WAAW;YACd,OAAO,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAA;QACvB,KAAK,WAAW;YACd,OAAO,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAA;IACzB,CAAC;AACH,CAAC,CAAA;AAZY,QAAA,UAAU,cAYtB;AAEM,MAAM,uBAAuB,GAAG,CACrC,GAAwB,EACxB,OAA0B,EAC1B,UAGI,EAAE,EACa,EAAE;IACrB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAE7C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;YAChE,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;YAE9B,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CACT,GAAG,WAAW,IACZ,cAAc;oBACZ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAC5B,EAAE,CACH,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CACT,GAAG,WAAW,IACZ,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aACnD,EAAE,CACH,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAnCY,QAAA,uBAAuB,2BAmCnC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,iBAAiB,GAAG,CAC/B,GAAwB,EACxB,OAA0B,EAC1B,UAEI,EAAE,EACe,EAAE;IACvB,MAAM,MAAM,GAAwB,EAAE,CAAA;IAEtC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS;gBACnC,CAAC,CAAC,IAAA,kBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC;gBACpC,CAAC,CAAC,GAAG,CAAA;YACP,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAnBY,QAAA,iBAAiB,qBAmB7B;AAEM,MAAM,gBAAgB,GAAG,CAC9B,UAAiC,EAC9B,EAAE;IACL,MAAM,MAAM,GAAwB,EAAE,CAAA;IAEtC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAEzC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAA;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,MAAW,CAAA;AACpB,CAAC,CAAA;AAnBY,QAAA,gBAAgB,oBAmB5B;AAEM,MAAM,kBAAkB,GAAG,CAAC,MAAc,YAAE,CAAC,OAAO,EAAE,EAAU,EAAE;IACvE,IAAI,OAAO,CAAA;IAEX,IAAI,CAAC;QACH,kBAAE,CAAC,UAAU,CAAC,GAAG,EAAE,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,GAAG,GAAG,CAAA;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2CAA2C;QAC3C,uBAAuB;QACvB,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IACjD,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACxB,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAfY,QAAA,kBAAkB,sBAe9B;AAEM,MAAM,mBAAmB,GAAG,CACjC,OAA+B,EACP,EAAE;IAC1B,MAAM,SAAS,GAA2B,EAAE,CAAA;IAE5C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAVY,QAAA,mBAAmB,uBAU/B;AAED,uBAAuB;AAChB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,aAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,aAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAAnE,QAAA,IAAI,QAA+D;AAEhF,uBAAuB;AAChB,MAAM,KAAK,GAAG,GAAY,EAAE,CACjC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,WAAW;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,WAAW,CAAA;AAFrC,QAAA,KAAK,SAEgC;AAElD,uBAAuB;AAChB,MAAM,QAAQ,GAAG,GAAY,EAAE,CAAC,IAAA,aAAK,GAAE,CAAA;AAAjC,QAAA,QAAQ,YAAyB;AAE9C,uBAAuB;AAChB,MAAM,QAAQ,GAAG,GAAY,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAA;AAAjE,QAAA,QAAQ,YAAyD;AAE9E,uBAAuB;AAChB,MAAM,eAAe,GAAG,GAAY,EAAE,CAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,WAAW,CAAA;AADtC,QAAA,eAAe,mBACuB;AAEnD,uBAAuB;AAChB,MAAM,UAAU,GAAG,GAAY,EAAE,CACtC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,WAAW,CAAA;AADjC,QAAA,UAAU,cACuB;AAE9C,uBAAuB;AAChB,MAAM,SAAS,GAAG,GAAY,EAAE,CACrC,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,CAAA;AAD1C,QAAA,SAAS,aACiC;AAEvD,uBAAuB;AAChB,MAAM,SAAS,GAAG,GAAY,EAAE,CACrC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,WAAW,CAAA;AAD/B,QAAA,SAAS,aACsB;AAE5C,uBAAuB;AAChB,MAAM,WAAW,GAAG,GAAY,EAAE,CACvC,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,WAAW,CAAA;AADhD,QAAA,WAAW,eACqC;AAE7D,uBAAuB;AAChB,MAAM,KAAK,GAAG,GAAY,EAAE,CACjC,IAAA,mBAAW,GAAE;IACb,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,WAAW;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,WAAW,CAAA;AAHlC,QAAA,KAAK,SAG6B;AAE/C,uBAAuB;AAChB,MAAM,OAAO,GAAG,GAAY,EAAE,CACnC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,WAAW,CAAA;AADlC,QAAA,OAAO,WAC2B;AAE/C,uBAAuB;AAChB,MAAM,SAAS,GAAG,GAAY,EAAE,CACrC,IAAA,uBAAY,GAAE;IACd,IAAA,aAAK,GAAE;IACP,IAAA,mBAAW,GAAE;IACb,IAAA,gBAAQ,GAAE;IACV,IAAA,gBAAQ,GAAE;IACV,IAAA,uBAAe,GAAE;IACjB,IAAA,kBAAU,GAAE;IACZ,IAAA,iBAAS,GAAE;IACX,IAAA,iBAAS,GAAE;IACX,IAAA,eAAO,GAAE,CAAA;AAVE,QAAA,SAAS,aAUX;AAEJ,MAAM,eAAe,GAAG,CAAC,GAAY,EAAW,EAAE,CACvD,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAA;AADtB,QAAA,eAAe,mBACO;AAE5B,MAAM,eAAe,GAAG,CAAC,IAAY,EAAU,EAAE;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;AAC1C,CAAC,CAAA;AANY,QAAA,eAAe,mBAM3B;AAEM,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;AAC1C,CAAC,CAAA;AANY,QAAA,mBAAmB,uBAM/B;AAED;;;;;;;;;;;;;;;GAeG;AACI,MAAM,YAAY,GAAG,CAAC,KAAsB,EAAU,EAAE;IAC7D,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;IAEpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAEvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAEhC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,GAAG,IAAI,CAAA;IACvB,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,GAAG,IAAI,CAAA;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;AACH,CAAC,CAAA;AAlBY,QAAA,YAAY,gBAkBxB;AAEM,MAAM,SAAS,GAAG,CACvB,OAA2C,EAC3C,GAAW,EACS,EAAE;IACtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,YAAY,CACxC,CAAA;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AAdY,QAAA,SAAS,aAcrB"}
@@ -1,4 +0,0 @@
1
- import { ESLint } from 'eslint';
2
- export declare const createCli: (cliConfig?: ESLint.Options) => ESLint;
3
- export declare const checkAndFix: (cwd: string) => Promise<boolean>;
4
- export declare const check: (cwd: string) => Promise<boolean>;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- // istanbul ignore file
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.check = exports.checkAndFix = exports.createCli = void 0;
8
- const eslint_1 = require("eslint");
9
- const lodash_1 = __importDefault(require("lodash"));
10
- const createCli = (cliConfig) => {
11
- const linterConfig = {
12
- // 在测试情况下 fixture 目录不包含 eslintrc,避免 eslint 读取根目录的 eslintrc
13
- useEslintrc: process.env.NODE_ENV !== 'test',
14
- extensions: ['.js'],
15
- baseConfig: {
16
- extends: ['@surgio/eslint-config-surgio'].map(
17
- // @ts-ignore
18
- require.resolve),
19
- },
20
- };
21
- return new eslint_1.ESLint({
22
- ...linterConfig,
23
- ...cliConfig,
24
- });
25
- };
26
- exports.createCli = createCli;
27
- const checkAndFix = async (cwd) => {
28
- const cli = (0, exports.createCli)({ fix: true, cwd });
29
- const results = await cli.lintFiles(['.']);
30
- const errorCount = lodash_1.default.sumBy(results, (curr) => curr.errorCount);
31
- const fixableErrorCount = lodash_1.default.sumBy(results, (curr) => curr.fixableErrorCount);
32
- await eslint_1.ESLint.outputFixes(results);
33
- const formatter = await cli.loadFormatter('stylish');
34
- const resultText = formatter.format(results);
35
- console.log(resultText);
36
- return errorCount - fixableErrorCount === 0;
37
- };
38
- exports.checkAndFix = checkAndFix;
39
- const check = async (cwd) => {
40
- const cli = (0, exports.createCli)({ cwd });
41
- const results = await cli.lintFiles(['.']);
42
- const errorCount = lodash_1.default.sumBy(results, (curr) => curr.errorCount);
43
- const formatter = await cli.loadFormatter('stylish');
44
- const resultText = formatter.format(results);
45
- console.log(resultText);
46
- return errorCount === 0;
47
- };
48
- exports.check = check;
49
- //# sourceMappingURL=linter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/utils/linter.ts"],"names":[],"mappings":";AAAA,uBAAuB;;;;;;AAEvB,mCAA+B;AAC/B,oDAAsB;AAEf,MAAM,SAAS,GAAG,CAAC,SAA0B,EAAU,EAAE;IAC9D,MAAM,YAAY,GAAG;QACnB,0DAA0D;QAC1D,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC5C,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,UAAU,EAAE;YACV,OAAO,EAAE,CAAC,8BAA8B,CAAC,CAAC,GAAG;YAC3C,aAAa;YACb,OAAO,CAAC,OAAO,CAChB;SACF;KACF,CAAA;IAED,OAAO,IAAI,eAAM,CAAC;QAChB,GAAG,YAAY;QACf,GAAG,SAAS;KACb,CAAC,CAAA;AACJ,CAAC,CAAA;AAjBY,QAAA,SAAS,aAiBrB;AAEM,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IACjE,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,UAAU,GAAG,gBAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9D,MAAM,iBAAiB,GAAG,gBAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAE5E,MAAM,eAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAEjC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE5C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEvB,OAAO,UAAU,GAAG,iBAAiB,KAAK,CAAC,CAAA;AAC7C,CAAC,CAAA;AAdY,QAAA,WAAW,eAcvB;AAEM,MAAM,KAAK,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IAC3D,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,UAAU,GAAG,gBAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9D,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE5C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEvB,OAAO,UAAU,KAAK,CAAC,CAAA;AACzB,CAAC,CAAA;AAVY,QAAA,KAAK,SAUjB"}
@@ -1,3 +0,0 @@
1
- import { NodeFilterType, PossibleNodeConfigType, SortedNodeFilterType } from '../types';
2
- export declare const getLoonNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => string;
3
- export declare const getLoonNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType, separator?: string) => string;