surgio 2.25.3 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/LICENSE +1 -1
  2. package/bin/dev +17 -0
  3. package/bin/dev.cmd +3 -0
  4. package/bin/run +8 -0
  5. package/bin/run.cmd +3 -0
  6. package/build/base-command.d.ts +19 -0
  7. package/build/base-command.js +75 -0
  8. package/build/base-command.js.map +1 -0
  9. package/build/commands/check.d.ts +10 -0
  10. package/build/commands/check.js +88 -0
  11. package/build/commands/check.js.map +1 -0
  12. package/build/commands/clean-cache.d.ts +6 -0
  13. package/build/commands/clean-cache.js +29 -0
  14. package/build/commands/clean-cache.js.map +1 -0
  15. package/build/commands/doctor.d.ts +6 -0
  16. package/build/commands/doctor.js +21 -0
  17. package/build/commands/doctor.js.map +1 -0
  18. package/build/commands/generate.d.ts +7 -0
  19. package/build/commands/generate.js +93 -0
  20. package/build/commands/generate.js.map +1 -0
  21. package/build/commands/lint.d.ts +6 -0
  22. package/build/commands/lint.js +36 -0
  23. package/build/commands/lint.js.map +1 -0
  24. package/build/commands/new.d.ts +6 -0
  25. package/build/commands/new.js +36 -0
  26. package/build/commands/new.js.map +1 -0
  27. package/build/commands/subscriptions.d.ts +7 -0
  28. package/build/commands/subscriptions.js +96 -0
  29. package/build/commands/subscriptions.js.map +1 -0
  30. package/build/commands/upload.d.ts +6 -0
  31. package/build/commands/upload.js +89 -0
  32. package/build/commands/upload.js.map +1 -0
  33. package/build/config.d.ts +6 -0
  34. package/build/config.js +151 -0
  35. package/build/config.js.map +1 -0
  36. package/build/configurables.d.ts +80 -0
  37. package/build/configurables.js +52 -0
  38. package/build/configurables.js.map +1 -0
  39. package/build/constant/constant.d.ts +16 -16
  40. package/build/constant/constant.js +3 -13
  41. package/build/constant/constant.js.map +1 -0
  42. package/build/constant/env.js +1 -1
  43. package/build/constant/env.js.map +1 -0
  44. package/build/constant/error.js +1 -1
  45. package/build/constant/error.js.map +1 -0
  46. package/build/constant/index.js +1 -1
  47. package/build/constant/index.js.map +1 -0
  48. package/build/generator/artifact.d.ts +302 -67
  49. package/build/generator/artifact.js +141 -101
  50. package/build/generator/artifact.js.map +1 -0
  51. package/build/generator/index.d.ts +2 -0
  52. package/build/generator/index.js +19 -0
  53. package/build/generator/index.js.map +1 -0
  54. package/build/generator/template.js +2 -28
  55. package/build/generator/template.js.map +1 -0
  56. package/build/hooks/init.d.ts +3 -0
  57. package/build/hooks/init.js +33 -0
  58. package/build/hooks/init.js.map +1 -0
  59. package/build/index.d.ts +68 -66
  60. package/build/index.js +11 -51
  61. package/build/index.js.map +1 -0
  62. package/build/internal.d.ts +5 -0
  63. package/build/internal.js +25 -0
  64. package/build/internal.js.map +1 -0
  65. package/build/misc/deprecation.d.ts +1 -6
  66. package/build/misc/deprecation.js +1 -8
  67. package/build/misc/deprecation.js.map +1 -0
  68. package/build/misc/flag_cn.d.ts +49 -50
  69. package/build/misc/flag_cn.js +3 -3
  70. package/build/misc/flag_cn.js.map +1 -0
  71. package/build/provider/BlackSSLProvider.d.ts +4 -3
  72. package/build/provider/BlackSSLProvider.js +28 -16
  73. package/build/provider/BlackSSLProvider.js.map +1 -0
  74. package/build/provider/ClashProvider.d.ts +7 -10
  75. package/build/provider/ClashProvider.js +168 -76
  76. package/build/provider/ClashProvider.js.map +1 -0
  77. package/build/provider/CustomProvider.d.ts +4 -3
  78. package/build/provider/CustomProvider.js +98 -54
  79. package/build/provider/CustomProvider.js.map +1 -0
  80. package/build/provider/Provider.d.ts +9 -22
  81. package/build/provider/Provider.js +34 -69
  82. package/build/provider/Provider.js.map +1 -0
  83. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +4 -5
  84. package/build/provider/ShadowsocksJsonSubscribeProvider.js +31 -21
  85. package/build/provider/ShadowsocksJsonSubscribeProvider.js.map +1 -0
  86. package/build/provider/ShadowsocksSubscribeProvider.d.ts +5 -8
  87. package/build/provider/ShadowsocksSubscribeProvider.js +33 -27
  88. package/build/provider/ShadowsocksSubscribeProvider.js.map +1 -0
  89. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +5 -8
  90. package/build/provider/ShadowsocksrSubscribeProvider.js +33 -23
  91. package/build/provider/ShadowsocksrSubscribeProvider.js.map +1 -0
  92. package/build/provider/SsdProvider.d.ts +5 -8
  93. package/build/provider/SsdProvider.js +59 -39
  94. package/build/provider/SsdProvider.js.map +1 -0
  95. package/build/provider/TrojanProvider.d.ts +5 -8
  96. package/build/provider/TrojanProvider.js +40 -30
  97. package/build/provider/TrojanProvider.js.map +1 -0
  98. package/build/provider/V2rayNSubscribeProvider.d.ts +4 -5
  99. package/build/provider/V2rayNSubscribeProvider.js +64 -33
  100. package/build/provider/V2rayNSubscribeProvider.js.map +1 -0
  101. package/build/provider/index.d.ts +16 -2
  102. package/build/provider/index.js +12 -5
  103. package/build/provider/index.js.map +1 -0
  104. package/build/provider/types.d.ts +10 -1
  105. package/build/provider/types.js +1 -1
  106. package/build/provider/types.js.map +1 -0
  107. package/build/redis.js +1 -1
  108. package/build/redis.js.map +1 -0
  109. package/build/types.d.ts +42 -236
  110. package/build/types.js +2 -1
  111. package/build/types.js.map +1 -0
  112. package/build/utils/cache.js +29 -27
  113. package/build/utils/cache.js.map +1 -0
  114. package/build/utils/clash.d.ts +204 -3
  115. package/build/utils/clash.js +247 -110
  116. package/build/utils/clash.js.map +1 -0
  117. package/build/utils/constant.js +1 -1
  118. package/build/utils/constant.js.map +1 -0
  119. package/build/utils/dns.js +1 -1
  120. package/build/utils/dns.js.map +1 -0
  121. package/build/utils/doctor.d.ts +2 -0
  122. package/build/utils/doctor.js +38 -0
  123. package/build/utils/doctor.js.map +1 -0
  124. package/build/utils/env-flag.js +2 -2
  125. package/build/utils/env-flag.js.map +1 -0
  126. package/build/utils/error-helper.d.ts +2 -2
  127. package/build/utils/error-helper.js +51 -16
  128. package/build/utils/error-helper.js.map +1 -0
  129. package/build/utils/errors.d.ts +19 -0
  130. package/build/utils/errors.js +60 -0
  131. package/build/utils/errors.js.map +1 -0
  132. package/build/utils/filter.d.ts +46 -43
  133. package/build/utils/filter.js +57 -59
  134. package/build/utils/filter.js.map +1 -0
  135. package/build/utils/flag.js +6 -6
  136. package/build/utils/flag.js.map +1 -0
  137. package/build/utils/http-client.js +38 -5
  138. package/build/utils/http-client.js.map +1 -0
  139. package/build/utils/index.d.ts +14 -21
  140. package/build/utils/index.js +102 -118
  141. package/build/utils/index.js.map +1 -0
  142. package/build/utils/linter.js +5 -2
  143. package/build/utils/linter.js.map +1 -0
  144. package/build/utils/loon.d.ts +3 -2
  145. package/build/utils/loon.js +67 -5
  146. package/build/utils/loon.js.map +1 -0
  147. package/build/utils/quantumult.d.ts +3 -3
  148. package/build/utils/quantumult.js +190 -258
  149. package/build/utils/quantumult.js.map +1 -0
  150. package/build/utils/relayable-url.js +1 -1
  151. package/build/utils/relayable-url.js.map +1 -0
  152. package/build/utils/remote-snippet.js +37 -14
  153. package/build/utils/remote-snippet.js.map +1 -0
  154. package/build/utils/ss.js +27 -17
  155. package/build/utils/ss.js.map +1 -0
  156. package/build/utils/ssr.js +3 -4
  157. package/build/utils/ssr.js.map +1 -0
  158. package/build/utils/subscription.js +10 -9
  159. package/build/utils/subscription.js.map +1 -0
  160. package/build/utils/surfboard.d.ts +3 -2
  161. package/build/utils/surfboard.js +142 -126
  162. package/build/utils/surfboard.js.map +1 -0
  163. package/build/utils/surge.d.ts +4 -2
  164. package/build/utils/surge.js +328 -300
  165. package/build/utils/surge.js.map +1 -0
  166. package/build/utils/time.d.ts +1 -0
  167. package/build/utils/time.js +6 -0
  168. package/build/utils/time.js.map +1 -0
  169. package/build/utils/tmp-helper.js +8 -1
  170. package/build/utils/tmp-helper.js.map +1 -0
  171. package/build/utils/trojan.js +19 -11
  172. package/build/utils/trojan.js.map +1 -0
  173. package/build/validators/artifact.d.ts +35 -0
  174. package/build/validators/artifact.js +17 -0
  175. package/build/validators/artifact.js.map +1 -0
  176. package/build/validators/common.d.ts +121 -0
  177. package/build/validators/common.js +65 -0
  178. package/build/validators/common.js.map +1 -0
  179. package/build/validators/filter.d.ts +10 -0
  180. package/build/validators/filter.js +15 -0
  181. package/build/validators/filter.js.map +1 -0
  182. package/build/validators/hooks.d.ts +9 -0
  183. package/build/validators/hooks.js +11 -0
  184. package/build/validators/hooks.js.map +1 -0
  185. package/build/validators/http.d.ts +137 -0
  186. package/build/validators/http.js +19 -0
  187. package/build/validators/http.js.map +1 -0
  188. package/build/validators/index.d.ts +15 -0
  189. package/build/validators/index.js +32 -0
  190. package/build/validators/index.js.map +1 -0
  191. package/build/validators/provider.d.ts +114 -0
  192. package/build/validators/provider.js +42 -0
  193. package/build/validators/provider.js.map +1 -0
  194. package/build/validators/shadowsocks.d.ts +86 -0
  195. package/build/validators/shadowsocks.js +29 -0
  196. package/build/validators/shadowsocks.js.map +1 -0
  197. package/build/validators/shadowsocksr.d.ts +77 -0
  198. package/build/validators/shadowsocksr.js +19 -0
  199. package/build/validators/shadowsocksr.js.map +1 -0
  200. package/build/validators/snell.d.ts +71 -0
  201. package/build/validators/snell.js +17 -0
  202. package/build/validators/snell.js.map +1 -0
  203. package/build/validators/socks5.d.ts +77 -0
  204. package/build/validators/socks5.js +19 -0
  205. package/build/validators/socks5.js.map +1 -0
  206. package/build/validators/surgio-config.d.ts +307 -0
  207. package/build/validators/surgio-config.js +95 -0
  208. package/build/validators/surgio-config.js.map +1 -0
  209. package/build/validators/trojan.d.ts +86 -0
  210. package/build/validators/trojan.js +15 -0
  211. package/build/validators/trojan.js.map +1 -0
  212. package/build/validators/tuic.d.ts +301 -0
  213. package/build/validators/tuic.js +21 -0
  214. package/build/validators/tuic.js.map +1 -0
  215. package/build/validators/vmess.d.ts +92 -0
  216. package/build/validators/vmess.js +29 -0
  217. package/build/validators/vmess.js.map +1 -0
  218. package/build/validators/wireguard.d.ts +123 -0
  219. package/build/validators/wireguard.js +26 -0
  220. package/build/validators/wireguard.js.map +1 -0
  221. package/config.d.ts +1 -0
  222. package/config.js +1 -0
  223. package/constant.d.ts +1 -0
  224. package/constant.js +1 -0
  225. package/generator.d.ts +1 -0
  226. package/generator.js +1 -0
  227. package/hygen-template/artifact/new/index.js +15 -15
  228. package/hygen-template/provider/new/index.js +8 -7
  229. package/hygen-template/template/new/index.js +3 -3
  230. package/index.d.ts +1 -0
  231. package/index.js +1 -0
  232. package/internal.d.ts +1 -0
  233. package/internal.js +1 -0
  234. package/package.json +120 -80
  235. package/provider.d.ts +1 -0
  236. package/provider.js +1 -0
  237. package/utils.d.ts +1 -0
  238. package/utils.js +1 -0
  239. package/bin/surgio.js +0 -8
  240. package/build/command/check.d.ts +0 -9
  241. package/build/command/check.js +0 -79
  242. package/build/command/clean-cache.d.ts +0 -8
  243. package/build/command/clean-cache.js +0 -43
  244. package/build/command/doctor.d.ts +0 -9
  245. package/build/command/doctor.js +0 -63
  246. package/build/command/generate.d.ts +0 -8
  247. package/build/command/generate.js +0 -64
  248. package/build/command/lint.d.ts +0 -7
  249. package/build/command/lint.js +0 -42
  250. package/build/command/new.d.ts +0 -7
  251. package/build/command/new.js +0 -44
  252. package/build/command/subscriptions.d.ts +0 -10
  253. package/build/command/subscriptions.js +0 -87
  254. package/build/command/upload.d.ts +0 -9
  255. package/build/command/upload.js +0 -101
  256. package/build/generate.d.ts +0 -4
  257. package/build/generate.js +0 -75
  258. package/build/utils/command.d.ts +0 -2
  259. package/build/utils/command.js +0 -23
  260. package/build/utils/config.d.ts +0 -6
  261. package/build/utils/config.js +0 -245
  262. package/build/utils/patch-proxy.d.ts +0 -1
  263. package/build/utils/patch-proxy.js +0 -19
  264. package/build/utils/v2ray.d.ts +0 -4
  265. package/build/utils/v2ray.js +0 -41
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parseClashConfig = exports.getClashSubscription = void 0;
7
- const joi_1 = __importDefault(require("joi"));
8
7
  const assert_1 = __importDefault(require("assert"));
9
8
  const yaml_1 = __importDefault(require("yaml"));
10
9
  const lodash_1 = __importDefault(require("lodash"));
11
10
  const logger_1 = require("@surgio/logger");
11
+ const zod_1 = require("zod");
12
12
  const types_1 = require("../types");
13
13
  const utils_1 = require("../utils");
14
14
  const env_flag_1 = require("../utils/env-flag");
@@ -18,52 +18,62 @@ const logger = (0, logger_1.createLogger)({
18
18
  service: 'surgio:ClashProvider',
19
19
  });
20
20
  class ClashProvider extends Provider_1.default {
21
+ #originalUrl;
22
+ udpRelay;
23
+ tls13;
21
24
  constructor(name, config) {
22
25
  super(name, config);
23
- const schema = joi_1.default.object({
24
- url: joi_1.default.string()
25
- .uri({
26
- scheme: [/https?/],
27
- })
28
- .required(),
29
- udpRelay: joi_1.default.bool().strict(),
30
- tls13: joi_1.default.bool().strict(),
31
- }).unknown();
32
- const { error } = schema.validate(config);
26
+ const schema = zod_1.z.object({
27
+ url: zod_1.z.string().url(),
28
+ udpRelay: zod_1.z.boolean().optional(),
29
+ tls13: zod_1.z.boolean().optional(),
30
+ });
31
+ const result = schema.safeParse(config);
33
32
  // istanbul ignore next
34
- if (error) {
35
- throw error;
33
+ if (!result.success) {
34
+ throw new utils_1.SurgioError('ClashProvider 配置校验失败', {
35
+ cause: result.error,
36
+ providerName: name,
37
+ });
36
38
  }
37
- this._url = config.url;
38
- this.udpRelay = config.udpRelay;
39
- this.tls13 = config.tls13;
39
+ this.#originalUrl = result.data.url;
40
+ this.udpRelay = result.data.udpRelay;
41
+ this.tls13 = result.data.tls13;
40
42
  this.supportGetSubscriptionUserInfo = true;
41
43
  }
42
44
  // istanbul ignore next
43
45
  get url() {
44
- return (0, relayable_url_1.default)(this._url, this.relayUrl);
46
+ return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
45
47
  }
46
- async getSubscriptionUserInfo({ requestUserAgent, } = {}) {
48
+ getSubscriptionUserInfo = async (params = {}) => {
49
+ const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
47
50
  const { subscriptionUserinfo } = await (0, exports.getClashSubscription)({
48
51
  url: this.url,
49
52
  udpRelay: this.udpRelay,
50
53
  tls13: this.tls13,
51
- requestUserAgent: requestUserAgent || this.requestUserAgent,
54
+ requestUserAgent,
52
55
  });
53
56
  if (subscriptionUserinfo) {
54
57
  return subscriptionUserinfo;
55
58
  }
56
- return void 0;
57
- }
58
- async getNodeList({ requestUserAgent, } = {}) {
59
+ return undefined;
60
+ };
61
+ getNodeList = async (params = {}) => {
62
+ const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
59
63
  const { nodeList } = await (0, exports.getClashSubscription)({
60
64
  url: this.url,
61
65
  udpRelay: this.udpRelay,
62
66
  tls13: this.tls13,
63
- requestUserAgent: requestUserAgent || this.requestUserAgent,
67
+ requestUserAgent,
64
68
  });
69
+ if (this.config.hooks?.afterNodeListResponse) {
70
+ const newList = await this.config.hooks.afterNodeListResponse(nodeList, params);
71
+ if (newList) {
72
+ return newList;
73
+ }
74
+ }
65
75
  return nodeList;
66
- }
76
+ };
67
77
  }
68
78
  exports.default = ClashProvider;
69
79
  const getClashSubscription = async ({ url, udpRelay, tls13, requestUserAgent, }) => {
@@ -96,50 +106,71 @@ const getClashSubscription = async ({ url, udpRelay, tls13, requestUserAgent, })
96
106
  exports.getClashSubscription = getClashSubscription;
97
107
  const parseClashConfig = (proxyList, udpRelay, tls13) => {
98
108
  const nodeList = proxyList.map((item) => {
99
- var _a, _b, _c, _d;
100
109
  switch (item.type) {
101
110
  case 'ss': {
102
111
  // istanbul ignore next
103
112
  if (item.plugin && !['obfs', 'v2ray-plugin'].includes(item.plugin)) {
104
113
  logger.warn(`不支持从 Clash 订阅中读取 ${item.plugin} 类型的 Shadowsocks 节点,节点 ${item.name} 会被省略`);
105
- return void 0;
114
+ return undefined;
106
115
  }
107
116
  // istanbul ignore next
108
117
  if (item.plugin === 'v2ray-plugin' &&
109
118
  item['plugin-opts'].mode.toLowerCase() === 'quic') {
110
119
  logger.warn(`不支持从 Clash 订阅中读取 QUIC 模式的 Shadowsocks 节点,节点 ${item.name} 会被省略`);
111
- return void 0;
120
+ return undefined;
112
121
  }
113
122
  const wsHeaders = (0, utils_1.lowercaseHeaderKeys)(lodash_1.default.get(item, 'plugin-opts.headers', {}));
114
- return Object.assign(Object.assign(Object.assign({ type: types_1.NodeTypeEnum.Shadowsocks, nodeName: item.name, hostname: item.server, port: item.port, method: item.cipher, password: item.password, 'udp-relay': resolveUdpRelay(item.udp, udpRelay) }, (item.plugin && item.plugin === 'obfs'
115
- ? {
116
- obfs: item['plugin-opts'].mode,
117
- 'obfs-host': item['plugin-opts'].host || 'www.bing.com',
118
- }
119
- : null)), (item.obfs
120
- ? {
121
- obfs: item.obfs,
122
- 'obfs-host': item['obfs-host'] || 'www.bing.com',
123
- }
124
- : null)), (item.plugin &&
125
- item.plugin === 'v2ray-plugin' &&
126
- item['plugin-opts'].mode === 'websocket'
127
- ? Object.assign(Object.assign({ obfs: item['plugin-opts'].tls === true ? 'wss' : 'ws', 'obfs-host': item['plugin-opts'].host || item.server, 'obfs-uri': item['plugin-opts'].path || '/', wsHeaders }, (item['plugin-opts'].tls === true
123
+ return {
124
+ type: types_1.NodeTypeEnum.Shadowsocks,
125
+ nodeName: item.name,
126
+ hostname: item.server,
127
+ port: item.port,
128
+ method: item.cipher,
129
+ password: item.password,
130
+ udpRelay: resolveUdpRelay(item.udp, udpRelay),
131
+ // obfs-local 新格式
132
+ ...(item.plugin && item.plugin === 'obfs'
133
+ ? {
134
+ obfs: item['plugin-opts'].mode,
135
+ obfsHost: item['plugin-opts'].host || 'www.bing.com',
136
+ }
137
+ : null),
138
+ // obfs-local 旧格式
139
+ ...(item.obfs
128
140
  ? {
129
- skipCertVerify: item['plugin-opts']['skip-cert-verify'] === true,
130
- tls13: tls13 !== null && tls13 !== void 0 ? tls13 : false,
141
+ obfs: item.obfs,
142
+ obfsHost: item['obfs-host'] || 'www.bing.com',
131
143
  }
132
- : null)), (typeof item['plugin-opts'].mux === 'boolean'
144
+ : null),
145
+ // v2ray-plugin
146
+ ...(item.plugin &&
147
+ item.plugin === 'v2ray-plugin' &&
148
+ item['plugin-opts'].mode === 'websocket'
133
149
  ? {
134
- mux: item['plugin-opts'].mux,
150
+ obfs: item['plugin-opts'].tls === true ? 'wss' : 'ws',
151
+ obfsHost: item['plugin-opts'].host || item.server,
152
+ obfsUri: item['plugin-opts'].path || '/',
153
+ wsHeaders,
154
+ ...(item['plugin-opts'].tls === true
155
+ ? {
156
+ skipCertVerify: item['plugin-opts']['skip-cert-verify'] === true,
157
+ tls13: tls13 ?? false,
158
+ }
159
+ : null),
160
+ ...(typeof item['plugin-opts'].mux === 'boolean'
161
+ ? {
162
+ mux: item['plugin-opts'].mux,
163
+ }
164
+ : null),
135
165
  }
136
- : null)) : null));
166
+ : null),
167
+ };
137
168
  }
138
169
  case 'vmess': {
139
170
  // istanbul ignore next
140
171
  if (item.network && !['tcp', 'ws'].includes(item.network)) {
141
172
  logger.warn(`不支持从 Clash 订阅中读取 network 类型为 ${item.network} 的 Vmess 节点,节点 ${item.name} 会被省略`);
142
- return void 0;
173
+ return undefined;
143
174
  }
144
175
  const isNewConfig = 'ws-opts' in item;
145
176
  const wsHeaders = isNewConfig
@@ -152,18 +183,31 @@ const parseClashConfig = (proxyList, udpRelay, tls13) => {
152
183
  path: lodash_1.default.get(item, 'ws-path', '/'),
153
184
  headers: wsHeaders,
154
185
  };
155
- return Object.assign(Object.assign({ type: types_1.NodeTypeEnum.Vmess, nodeName: item.name, hostname: item.server, port: item.port, uuid: item.uuid, alterId: item.alterId ? `${item.alterId}` : '0', method: item.cipher || 'auto', 'udp-relay': resolveUdpRelay(item.udp, udpRelay), tls: (_a = item.tls) !== null && _a !== void 0 ? _a : false, network: item.network || 'tcp' }, (item.network === 'ws'
156
- ? {
157
- host: wsHost,
158
- path: lodash_1.default.get(wsOpts, 'path', '/'),
159
- wsHeaders,
160
- }
161
- : null)), (item.tls
162
- ? {
163
- skipCertVerify: item['skip-cert-verify'] === true,
164
- tls13: tls13 !== null && tls13 !== void 0 ? tls13 : false,
165
- }
166
- : null));
186
+ return {
187
+ type: types_1.NodeTypeEnum.Vmess,
188
+ nodeName: item.name,
189
+ hostname: item.server,
190
+ port: item.port,
191
+ uuid: item.uuid,
192
+ alterId: item.alterId ? `${item.alterId}` : '0',
193
+ method: item.cipher || 'auto',
194
+ udpRelay: resolveUdpRelay(item.udp, udpRelay),
195
+ tls: item.tls ?? false,
196
+ network: item.network || 'tcp',
197
+ ...(item.network === 'ws'
198
+ ? {
199
+ host: wsHost,
200
+ path: lodash_1.default.get(wsOpts, 'path', '/'),
201
+ wsHeaders,
202
+ }
203
+ : null),
204
+ ...(item.tls
205
+ ? {
206
+ skipCertVerify: item['skip-cert-verify'] === true,
207
+ tls13: tls13 ?? false,
208
+ }
209
+ : null),
210
+ };
167
211
  }
168
212
  case 'http':
169
213
  if (!item.tls) {
@@ -183,13 +227,22 @@ const parseClashConfig = (proxyList, udpRelay, tls13) => {
183
227
  port: item.port,
184
228
  username: item.username || '',
185
229
  password: item.password || '',
186
- tls13: tls13 !== null && tls13 !== void 0 ? tls13 : false,
230
+ tls13: tls13 ?? false,
187
231
  skipCertVerify: item['skip-cert-verify'] === true,
188
232
  };
189
233
  case 'snell':
190
- return Object.assign(Object.assign({ type: types_1.NodeTypeEnum.Snell, nodeName: item.name, hostname: item.server, port: item.port, psk: item.psk, obfs: lodash_1.default.get(item, 'obfs-opts.mode', 'http') }, (typeof ((_b = item === null || item === void 0 ? void 0 : item['obfs-opts']) === null || _b === void 0 ? void 0 : _b.host) !== 'undefined'
191
- ? { 'obfs-host': item['obfs-opts'].host }
192
- : null)), ('version' in item ? { version: item.version } : null));
234
+ return {
235
+ type: types_1.NodeTypeEnum.Snell,
236
+ nodeName: item.name,
237
+ hostname: item.server,
238
+ port: item.port,
239
+ psk: item.psk,
240
+ obfs: lodash_1.default.get(item, 'obfs-opts.mode', 'http'),
241
+ ...(typeof item?.['obfs-opts']?.host !== 'undefined'
242
+ ? { obfsHost: item['obfs-opts'].host }
243
+ : null),
244
+ ...('version' in item ? { version: item.version } : null),
245
+ };
193
246
  // istanbul ignore next
194
247
  case 'ssr':
195
248
  return {
@@ -199,30 +252,69 @@ const parseClashConfig = (proxyList, udpRelay, tls13) => {
199
252
  port: item.port,
200
253
  password: item.password,
201
254
  obfs: item.obfs,
202
- obfsparam: (_c = item['obfs-param']) !== null && _c !== void 0 ? _c : item.obfsparam,
255
+ obfsparam: item['obfs-param'] ?? item.obfsparam,
203
256
  protocol: item.protocol,
204
- protoparam: (_d = item['protocol-param']) !== null && _d !== void 0 ? _d : item.protocolparam,
257
+ protoparam: item['protocol-param'] ?? item.protocolparam,
205
258
  method: item.cipher,
206
- 'udp-relay': resolveUdpRelay(item.udp, udpRelay),
259
+ udpRelay: resolveUdpRelay(item.udp, udpRelay),
207
260
  };
208
261
  case 'trojan': {
209
262
  const network = item.network;
210
263
  const wsOpts = lodash_1.default.get(item, 'ws-opts', {});
211
264
  const wsHeaders = (0, utils_1.lowercaseHeaderKeys)(lodash_1.default.get(wsOpts, 'headers', {}));
212
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ type: types_1.NodeTypeEnum.Trojan, nodeName: item.name, hostname: item.server, port: item.port, password: item.password }, ('skip-cert-verify' in item
213
- ? { skipCertVerify: item['skip-cert-verify'] === true }
214
- : null)), ('alpn' in item ? { alpn: item.alpn } : null)), ('sni' in item ? { sni: item.sni } : null)), { 'udp-relay': resolveUdpRelay(item.udp, udpRelay), tls13: tls13 !== null && tls13 !== void 0 ? tls13 : false }), (network === 'ws'
215
- ? { network: 'ws', wsPath: lodash_1.default.get(wsOpts, 'path', '/'), wsHeaders }
216
- : null));
265
+ return {
266
+ type: types_1.NodeTypeEnum.Trojan,
267
+ nodeName: item.name,
268
+ hostname: item.server,
269
+ port: item.port,
270
+ password: item.password,
271
+ ...('skip-cert-verify' in item
272
+ ? { skipCertVerify: item['skip-cert-verify'] === true }
273
+ : null),
274
+ ...('alpn' in item ? { alpn: item.alpn } : null),
275
+ ...('sni' in item ? { sni: item.sni } : null),
276
+ udpRelay: resolveUdpRelay(item.udp, udpRelay),
277
+ tls13: tls13 ?? false,
278
+ ...(network === 'ws'
279
+ ? { network: 'ws', wsPath: lodash_1.default.get(wsOpts, 'path', '/'), wsHeaders }
280
+ : null),
281
+ };
217
282
  }
218
283
  case 'tuic': {
219
- return Object.assign(Object.assign(Object.assign(Object.assign({ type: types_1.NodeTypeEnum.Tuic, nodeName: item.name, hostname: item.server, port: item.port, token: item.token, 'udp-relay': resolveUdpRelay(item.udp, udpRelay) }, ('skip-cert-verify' in item
220
- ? { skipCertVerify: item['skip-cert-verify'] === true }
221
- : null)), { tls13: tls13 !== null && tls13 !== void 0 ? tls13 : false }), ('sni' in item ? { sni: item.sni } : null)), ('alpn' in item ? { alpn: item.alpn } : null));
284
+ if (item.version >= 5) {
285
+ return {
286
+ type: types_1.NodeTypeEnum.Tuic,
287
+ version: item.version,
288
+ nodeName: item.name,
289
+ hostname: item.server,
290
+ port: item.port,
291
+ password: item.password,
292
+ uuid: item.uuid,
293
+ ...('skip-cert-verify' in item
294
+ ? { skipCertVerify: item['skip-cert-verify'] === true }
295
+ : null),
296
+ tls13: tls13 ?? false,
297
+ ...('sni' in item ? { sni: item.sni } : null),
298
+ ...('alpn' in item ? { alpn: item.alpn } : null),
299
+ };
300
+ }
301
+ return {
302
+ type: types_1.NodeTypeEnum.Tuic,
303
+ nodeName: item.name,
304
+ hostname: item.server,
305
+ port: item.port,
306
+ token: item.token,
307
+ ...('skip-cert-verify' in item
308
+ ? { skipCertVerify: item['skip-cert-verify'] === true }
309
+ : null),
310
+ tls13: tls13 ?? false,
311
+ ...('sni' in item ? { sni: item.sni } : null),
312
+ ...('alpn' in item ? { alpn: item.alpn } : null),
313
+ };
222
314
  }
223
315
  default:
224
316
  logger.warn(`不支持从 Clash 订阅中读取 ${item.type} 的节点,节点 ${item.name} 会被省略`);
225
- return void 0;
317
+ return undefined;
226
318
  }
227
319
  });
228
320
  return nodeList.filter((item) => item !== undefined);
@@ -234,4 +326,4 @@ function resolveUdpRelay(val, defaultVal = false) {
234
326
  }
235
327
  return defaultVal;
236
328
  }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc2hQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wcm92aWRlci9DbGFzaFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUFzQjtBQUN0QixvREFBNEI7QUFDNUIsZ0RBQXdCO0FBQ3hCLG9EQUF1QjtBQUN2QiwyQ0FBOEM7QUFFOUMsb0NBWWtCO0FBQ2xCLG9DQUErQztBQUMvQyxnREFBc0Q7QUFDdEQsMkVBQWtEO0FBQ2xELDBEQUFrQztBQVlsQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUM7SUFDMUIsT0FBTyxFQUFFLHNCQUFzQjtDQUNoQyxDQUFDLENBQUM7QUFFSCxNQUFxQixhQUFjLFNBQVEsa0JBQVE7SUFLakQsWUFBWSxJQUFZLEVBQUUsTUFBMkI7UUFDbkQsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEdBQUcsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2lCQUNkLEdBQUcsQ0FBQztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDbkIsQ0FBQztpQkFDRCxRQUFRLEVBQUU7WUFDYixRQUFRLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUM3QixLQUFLLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtTQUMzQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFYixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQyx1QkFBdUI7UUFDdkIsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLEtBQUssQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FB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
329
+ //# sourceMappingURL=ClashProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClashProvider.js","sourceRoot":"","sources":["../../src/provider/ClashProvider.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { CustomProviderConfig, PossibleNodeConfigType } from '../types';
1
+ import { CustomProviderConfig } from '../types';
2
2
  import Provider from './Provider';
3
+ import { GetNodeListFunction, GetNodeListParams } from './types';
3
4
  export default class CustomProvider extends Provider {
4
- readonly nodeList: ReadonlyArray<any>;
5
+ readonly nodeList: unknown[] | ((params: GetNodeListParams) => Promise<unknown[]>);
5
6
  readonly underlyingProxy?: string;
6
7
  constructor(name: string, config: CustomProviderConfig);
7
- getNodeList(): Promise<ReadonlyArray<PossibleNodeConfigType>>;
8
+ getNodeList: GetNodeListFunction;
8
9
  }
@@ -3,70 +3,114 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const joi_1 = __importDefault(require("joi"));
6
+ const zod_1 = require("zod");
7
7
  const types_1 = require("../types");
8
+ const utils_1 = require("../utils");
8
9
  const Provider_1 = __importDefault(require("./Provider"));
10
+ const validators_1 = require("../validators");
9
11
  class CustomProvider extends Provider_1.default {
12
+ nodeList;
13
+ underlyingProxy;
10
14
  constructor(name, config) {
11
15
  super(name, config);
12
- const nodeSchema = joi_1.default.object({
13
- type: joi_1.default.string()
14
- .valid(...Object.values(types_1.NodeTypeEnum))
15
- .required(),
16
- nodeName: joi_1.default.string().required(),
17
- enable: joi_1.default.boolean().strict(),
18
- tfo: joi_1.default.boolean().strict(),
19
- mptcp: joi_1.default.boolean().strict(),
20
- shadowTls: joi_1.default.object({
21
- password: joi_1.default.string().required(),
22
- sni: joi_1.default.string(),
23
- version: joi_1.default.string(),
24
- }),
25
- binPath: joi_1.default.string(),
26
- localPort: joi_1.default.number(),
27
- underlyingProxy: joi_1.default.string(),
28
- skipCertVerify: joi_1.default.boolean().strict(),
29
- sni: joi_1.default.string(),
30
- alpn: joi_1.default.array().items(joi_1.default.string()),
31
- serverCertFingerprintSha256: joi_1.default.string(),
32
- }).unknown();
33
- const schema = joi_1.default.object({
34
- nodeList: joi_1.default.array().items(nodeSchema).required(),
35
- underlyingProxy: joi_1.default.string(),
36
- }).unknown();
37
- const { error, value } = schema.validate(config);
16
+ const schema = zod_1.z.object({
17
+ nodeList: zod_1.z.union([
18
+ zod_1.z.array(zod_1.z.any()),
19
+ zod_1.z.function().args(zod_1.z.any()).returns(zod_1.z.any()),
20
+ ]),
21
+ underlyingProxy: zod_1.z.ostring(),
22
+ });
23
+ const result = schema.safeParse(config);
38
24
  // istanbul ignore next
39
- if (error) {
40
- throw error;
25
+ if (!result.success) {
26
+ throw new utils_1.SurgioError('CustomProvider 配置校验失败', {
27
+ cause: result.error,
28
+ providerName: name,
29
+ });
41
30
  }
42
- this.nodeList = value.nodeList;
43
- this.underlyingProxy = value.underlyingProxy;
31
+ this.nodeList = result.data.nodeList;
32
+ this.underlyingProxy = result.data.underlyingProxy;
44
33
  }
45
- async getNodeList() {
46
- const udpRelayCheckSchema = joi_1.default.object({
47
- 'udp-relay': joi_1.default.bool().strict(),
48
- }).unknown();
49
- return this.nodeList.map((item) => {
50
- const { error: udpRelayCheckError } = udpRelayCheckSchema.validate(item);
51
- const lowercaseKeys = ['wsHeaders'];
52
- // istanbul ignore next
53
- if (udpRelayCheckError) {
54
- throw udpRelayCheckError;
34
+ getNodeList = async (params = {}) => {
35
+ let nodeList;
36
+ const parsedNodeList = [];
37
+ if (typeof this.nodeList === 'function') {
38
+ nodeList = await this.nodeList(params);
39
+ }
40
+ else {
41
+ nodeList = this.nodeList;
42
+ }
43
+ nodeList.forEach((node, index) => {
44
+ try {
45
+ const type = node.type;
46
+ // istanbul ignore next
47
+ if (node['udp-relay']) {
48
+ throw new Error('udp-relay 已废弃, 请使用 udpRelay');
49
+ }
50
+ // istanbul ignore next
51
+ if (node['obfs-host']) {
52
+ throw new Error('obfs-host 已废弃, 请使用 obfsHost');
53
+ }
54
+ // istanbul ignore next
55
+ if (node['obfs-uri']) {
56
+ throw new Error('obfs-uri 已废弃, 请使用 obfsUri');
57
+ }
58
+ const parsedNode = (() => {
59
+ switch (type) {
60
+ case types_1.NodeTypeEnum.Shadowsocks:
61
+ return validators_1.ShadowsocksNodeConfigValidator.parse(node);
62
+ case types_1.NodeTypeEnum.Shadowsocksr:
63
+ return validators_1.ShadowsocksrNodeConfigValidator.parse(node);
64
+ case types_1.NodeTypeEnum.Vmess:
65
+ return validators_1.VmessNodeConfigValidator.parse(node);
66
+ case types_1.NodeTypeEnum.Trojan:
67
+ return validators_1.TrojanNodeConfigValidator.parse(node);
68
+ case types_1.NodeTypeEnum.Socks5:
69
+ return validators_1.Socks5NodeConfigValidator.parse(node);
70
+ case types_1.NodeTypeEnum.HTTP:
71
+ return validators_1.HttpNodeConfigValidator.parse(node);
72
+ case types_1.NodeTypeEnum.HTTPS:
73
+ return validators_1.HttpsNodeConfigValidator.parse(node);
74
+ case types_1.NodeTypeEnum.Snell:
75
+ return validators_1.SnellNodeConfigValidator.parse(node);
76
+ case types_1.NodeTypeEnum.Tuic:
77
+ return validators_1.TuicNodeConfigValidator.parse(node);
78
+ case types_1.NodeTypeEnum.Wireguard:
79
+ return validators_1.WireguardNodeConfigValidator.parse(node);
80
+ default:
81
+ throw new TypeError(`无法识别的节点类型:${type}`);
82
+ }
83
+ })();
84
+ const propertyKeysMustBeLowercase = ['wsHeaders'];
85
+ if (this.underlyingProxy && !parsedNode.underlyingProxy) {
86
+ parsedNode.underlyingProxy = this.underlyingProxy;
87
+ }
88
+ propertyKeysMustBeLowercase.forEach((key) => {
89
+ if (key in parsedNode && parsedNode[key] !== undefined) {
90
+ parsedNode[key] = Object.keys(parsedNode[key]).reduce((acc, curr) => {
91
+ acc[curr.toLowerCase()] = parsedNode[key][curr];
92
+ return acc;
93
+ }, {});
94
+ }
95
+ });
96
+ parsedNodeList.push(parsedNode);
55
97
  }
56
- if (this.underlyingProxy && !item.underlyingProxy) {
57
- item.underlyingProxy = this.underlyingProxy;
98
+ catch (err) {
99
+ throw new utils_1.SurgioError('节点配置校验失败', {
100
+ providerName: this.name,
101
+ nodeIndex: index,
102
+ cause: err,
103
+ });
58
104
  }
59
- lowercaseKeys.forEach((key) => {
60
- if (item[key]) {
61
- item[key] = Object.keys(item[key]).reduce((acc, curr) => {
62
- acc[curr.toLowerCase()] = item[key][curr];
63
- return acc;
64
- }, {});
65
- }
66
- });
67
- return item;
68
105
  });
69
- }
106
+ if (this.config.hooks?.afterNodeListResponse) {
107
+ const newList = await this.config.hooks.afterNodeListResponse(parsedNodeList, params);
108
+ if (newList) {
109
+ return newList;
110
+ }
111
+ }
112
+ return parsedNodeList;
113
+ };
70
114
  }
71
115
  exports.default = CustomProvider;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvQ3VzdG9tUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsb0NBSWtCO0FBQ2xCLDBEQUFrQztBQUVsQyxNQUFxQixjQUFlLFNBQVEsa0JBQVE7SUFJbEQsWUFBWSxJQUFZLEVBQUUsTUFBNEI7UUFDcEQsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQixNQUFNLFVBQVUsR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQzVCLElBQUksRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2lCQUNmLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQVMsb0JBQVksQ0FBQyxDQUFDO2lCQUM3QyxRQUFRLEVBQUU7WUFDYixRQUFRLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUNqQyxNQUFNLEVBQUUsYUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUM5QixHQUFHLEVBQUUsYUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUMzQixLQUFLLEVBQUUsYUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUM3QixTQUFTLEVBQUUsYUFBRyxDQUFDLE1BQU0sQ0FBQztnQkFDcEIsUUFBUSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pDLEdBQUcsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2dCQUNqQixPQUFPLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRTthQUN0QixDQUFDO1lBQ0YsT0FBTyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDckIsU0FBUyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDdkIsZUFBZSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDN0IsY0FBYyxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDakIsSUFBSSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLDJCQUEyQixFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7U0FDMUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxNQUFNLEdBQUcsYUFBRyxDQUFDLE1BQU0sQ0FBQztZQUN4QixRQUFRLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDbEQsZUFBZSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7U0FDOUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWIsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpELHVCQUF1QjtRQUN2QixJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sS0FBSyxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVztRQUN0QixNQUFNLG1CQUFtQixHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7WUFDckMsV0FBVyxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7U0FDakMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUVwQyx1QkFBdUI7WUFDdkIsSUFBSSxrQkFBa0IsRUFBRTtnQkFDdEIsTUFBTSxrQkFBa0IsQ0FBQzthQUMxQjtZQUVELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUM3QztZQUVELGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMxQyxPQUFPLEdBQUcsQ0FBQztvQkFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ1I7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUExRUQsaUNBMEVDIn0=
116
+ //# sourceMappingURL=CustomProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomProvider.js","sourceRoot":"","sources":["../../src/provider/CustomProvider.ts"],"names":[],"mappings":"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"}