surgio 2.10.1 → 2.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 (52) hide show
  1. package/CHANGELOG.md +83 -50
  2. package/build/command/check.js +4 -4
  3. package/build/command/doctor.js +5 -5
  4. package/build/command/generate.js +4 -4
  5. package/build/command/lint.js +3 -3
  6. package/build/command/new.js +4 -4
  7. package/build/command/subscriptions.js +8 -7
  8. package/build/command/upload.js +3 -3
  9. package/build/generate.js +4 -4
  10. package/build/generator/artifact.d.ts +2 -1
  11. package/build/generator/artifact.js +19 -18
  12. package/build/generator/template.js +11 -17
  13. package/build/index.js +12 -8
  14. package/build/misc/flag_cn.d.ts +1 -0
  15. package/build/misc/flag_cn.js +3 -2
  16. package/build/provider/BlackSSLProvider.js +4 -4
  17. package/build/provider/ClashProvider.js +28 -54
  18. package/build/provider/CustomProvider.js +3 -5
  19. package/build/provider/Provider.d.ts +4 -0
  20. package/build/provider/Provider.js +34 -6
  21. package/build/provider/ShadowsocksJsonSubscribeProvider.js +4 -4
  22. package/build/provider/ShadowsocksSubscribeProvider.js +10 -26
  23. package/build/provider/ShadowsocksrSubscribeProvider.js +11 -26
  24. package/build/provider/SsdProvider.js +11 -27
  25. package/build/provider/TrojanProvider.d.ts +18 -0
  26. package/build/provider/TrojanProvider.js +78 -0
  27. package/build/provider/V2rayNSubscribeProvider.d.ts +3 -2
  28. package/build/provider/V2rayNSubscribeProvider.js +39 -22
  29. package/build/provider/index.js +4 -1
  30. package/build/types.d.ts +7 -1
  31. package/build/types.js +2 -1
  32. package/build/utils/config.js +12 -14
  33. package/build/utils/constant.js +5 -5
  34. package/build/utils/dns.js +6 -17
  35. package/build/utils/error-helper.js +1 -1
  36. package/build/utils/filter.js +3 -3
  37. package/build/utils/flag.js +4 -4
  38. package/build/utils/http-client.js +2 -2
  39. package/build/utils/index.d.ts +1 -0
  40. package/build/utils/index.js +58 -53
  41. package/build/utils/linter.js +3 -3
  42. package/build/utils/loon.js +5 -5
  43. package/build/utils/patch-proxy.js +3 -3
  44. package/build/utils/remote-snippet.js +10 -13
  45. package/build/utils/ss.js +4 -4
  46. package/build/utils/ssr.js +7 -7
  47. package/build/utils/subscription.js +7 -7
  48. package/build/utils/tmp-helper.js +2 -2
  49. package/build/utils/trojan.d.ts +2 -0
  50. package/build/utils/trojan.js +33 -0
  51. package/hygen-template/provider/new/index.js +3 -0
  52. package/package.json +22 -20
@@ -4,18 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parseSsdConfig = exports.getSsdSubscription = void 0;
7
- const joi_1 = __importDefault(require("@hapi/joi"));
7
+ const joi_1 = __importDefault(require("joi"));
8
8
  const logger_1 = require("@surgio/logger");
9
9
  const assert_1 = __importDefault(require("assert"));
10
10
  const bytes_1 = __importDefault(require("bytes"));
11
11
  const types_1 = require("../types");
12
12
  const utils_1 = require("../utils");
13
- const cache_1 = require("../utils/cache");
14
- const http_client_1 = __importDefault(require("../utils/http-client"));
15
13
  const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
16
- const subscription_1 = require("../utils/subscription");
17
14
  const Provider_1 = __importDefault(require("./Provider"));
18
- const logger = logger_1.createLogger({
15
+ const logger = (0, logger_1.createLogger)({
19
16
  service: 'surgio:SsdProvider',
20
17
  });
21
18
  class SsdProvider extends Provider_1.default {
@@ -40,46 +37,33 @@ class SsdProvider extends Provider_1.default {
40
37
  }
41
38
  // istanbul ignore next
42
39
  get url() {
43
- return relayable_url_1.default(this._url, this.relayUrl);
40
+ return (0, relayable_url_1.default)(this._url, this.relayUrl);
44
41
  }
45
42
  async getSubscriptionUserInfo() {
46
- const { subscriptionUserinfo } = await exports.getSsdSubscription(this.url, this.udpRelay);
43
+ const { subscriptionUserinfo } = await (0, exports.getSsdSubscription)(this.url, this.udpRelay);
47
44
  if (subscriptionUserinfo) {
48
45
  return subscriptionUserinfo;
49
46
  }
50
47
  return void 0;
51
48
  }
52
49
  async getNodeList() {
53
- const { nodeList } = await exports.getSsdSubscription(this.url, this.udpRelay);
50
+ const { nodeList } = await (0, exports.getSsdSubscription)(this.url, this.udpRelay);
54
51
  return nodeList;
55
52
  }
56
53
  }
57
54
  exports.default = SsdProvider;
58
55
  // 协议定义:https://github.com/TheCGDF/SSD-Windows/wiki/HTTP%E8%AE%A2%E9%98%85%E5%8D%8F%E5%AE%9A
59
56
  const getSsdSubscription = async (url, udpRelay) => {
60
- assert_1.default(url, '未指定订阅地址 url');
61
- const response = cache_1.SubscriptionCache.has(url)
62
- ? cache_1.SubscriptionCache.get(url)
63
- : await (async () => {
64
- const res = await http_client_1.default.get(url);
65
- const subsciptionCacheItem = {
66
- body: res.body,
67
- };
68
- if (res.headers['subscription-userinfo']) {
69
- subsciptionCacheItem.subscriptionUserinfo = subscription_1.parseSubscriptionUserInfo(res.headers['subscription-userinfo']);
70
- logger.debug('%s received subscription userinfo - raw: %s | parsed: %j', url, res.headers['subscription-userinfo'], subsciptionCacheItem.subscriptionUserinfo);
71
- }
72
- cache_1.SubscriptionCache.set(url, subsciptionCacheItem);
73
- return subsciptionCacheItem;
74
- })();
57
+ (0, assert_1.default)(url, '未指定订阅地址 url');
58
+ const response = await Provider_1.default.requestCacheableResource(url);
75
59
  // istanbul ignore next
76
60
  if (!response.body.startsWith('ssd://')) {
77
61
  throw new Error(`暂仅支持 ssd:// 开头的订阅地址,${url} 无法处理`);
78
62
  }
79
63
  const base64 = response.body.replace('ssd://', '');
80
- const data = JSON.parse(utils_1.fromBase64(base64));
64
+ const data = JSON.parse((0, utils_1.fromBase64)(base64));
81
65
  const { servers, traffic_used, traffic_total, expiry } = data;
82
- const nodeList = servers.map((server) => exports.parseSsdConfig(data, server, udpRelay));
66
+ const nodeList = servers.map((server) => (0, exports.parseSsdConfig)(data, server, udpRelay));
83
67
  if (!response.subscriptionUserinfo &&
84
68
  traffic_used &&
85
69
  traffic_total &&
@@ -103,7 +87,7 @@ const parseSsdConfig = (globalConfig, server, udpRelay) => {
103
87
  const plugin = (_a = server.plugin) !== null && _a !== void 0 ? _a : globalConfig.plugin;
104
88
  const pluginOptsString = (_b = server.plugin_options) !== null && _b !== void 0 ? _b : globalConfig.plugin_options;
105
89
  const pluginOpts = pluginOptsString
106
- ? utils_1.decodeStringList(pluginOptsString.split(';'))
90
+ ? (0, utils_1.decodeStringList)(pluginOptsString.split(';'))
107
91
  : {};
108
92
  // istanbul ignore next
109
93
  if (plugin && !['simple-obfs', 'v2ray-plugin'].includes(plugin)) {
@@ -129,4 +113,4 @@ const parseSsdConfig = (globalConfig, server, udpRelay) => {
129
113
  : null));
130
114
  };
131
115
  exports.parseSsdConfig = parseSsdConfig;
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3NkUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvU3NkUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDJDQUE4QztBQUM5QyxvREFBNEI7QUFDNUIsa0RBQTBCO0FBRTFCLG9DQUtrQjtBQUNsQixvQ0FBd0Q7QUFDeEQsMENBQXlFO0FBQ3pFLHVFQUE4QztBQUM5QywyRUFBa0Q7QUFDbEQsd0RBQWtFO0FBQ2xFLDBEQUFrQztBQUVsQyxNQUFNLE1BQU0sR0FBRyxxQkFBWSxDQUFDO0lBQzFCLE9BQU8sRUFBRSxvQkFBb0I7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsTUFBcUIsV0FBWSxTQUFRLGtCQUFRO0lBSS9DLFlBQVksSUFBWSxFQUFFLE1BQXlCO1FBQ2pELEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEIsTUFBTSxNQUFNLEdBQUcsYUFBRyxDQUFDLE1BQU0sQ0FBQztZQUN4QixHQUFHLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRTtpQkFDZCxHQUFHLENBQUM7Z0JBQ0gsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQ25CLENBQUM7aUJBQ0QsUUFBUSxFQUFFO1lBQ2IsUUFBUSxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUU7U0FDakMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUMsdUJBQXVCO1FBQ3ZCLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxLQUFLLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFD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
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3NkUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvU3NkUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNCO0FBQ3RCLDJDQUE4QztBQUM5QyxvREFBNEI7QUFDNUIsa0RBQTBCO0FBRTFCLG9DQUtrQjtBQUNsQixvQ0FBd0Q7QUFDeEQsMkVBQWtEO0FBQ2xELDBEQUFrQztBQUVsQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUM7SUFDMUIsT0FBTyxFQUFFLG9CQUFvQjtDQUM5QixDQUFDLENBQUM7QUFFSCxNQUFxQixXQUFZLFNBQVEsa0JBQVE7SUFJL0MsWUFBWSxJQUFZLEVBQUUsTUFBeUI7UUFDakQsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEdBQUcsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2lCQUNkLEdBQUcsQ0FBQztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDbkIsQ0FBQztpQkFDRCxRQUFRLEVBQUU7WUFDYixRQUFRLEVBQUUsYUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRTtTQUNqQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFYixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQyx1QkFBdUI7UUFDdkIsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLEtBQUssQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO0lBQzdDLENBQUM7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
@@ -0,0 +1,18 @@
1
+ import { SubscriptionUserinfo, TrojanNodeConfig, TrojanProviderConfig } from '../types';
2
+ import Provider from './Provider';
3
+ export default class TrojanProvider extends Provider {
4
+ readonly _url: string;
5
+ readonly udpRelay?: boolean;
6
+ readonly tls13?: boolean;
7
+ constructor(name: string, config: TrojanProviderConfig);
8
+ get url(): string;
9
+ getSubscriptionUserInfo(): Promise<SubscriptionUserinfo | undefined>;
10
+ getNodeList(): Promise<ReadonlyArray<TrojanNodeConfig>>;
11
+ }
12
+ /**
13
+ * @see https://github.com/trojan-gfw/trojan-url/blob/master/trojan-url.py
14
+ */
15
+ export declare const getTrojanSubscription: (url: string, udpRelay?: boolean | undefined, tls13?: boolean | undefined) => Promise<{
16
+ readonly nodeList: ReadonlyArray<TrojanNodeConfig>;
17
+ readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
18
+ }>;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getTrojanSubscription = void 0;
7
+ const joi_1 = __importDefault(require("joi"));
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const logger_1 = require("@surgio/logger");
10
+ const utils_1 = require("../utils");
11
+ const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
12
+ const trojan_1 = require("../utils/trojan");
13
+ const Provider_1 = __importDefault(require("./Provider"));
14
+ const logger = (0, logger_1.createLogger)({
15
+ service: 'surgio:TrojanProvider',
16
+ });
17
+ class TrojanProvider extends Provider_1.default {
18
+ constructor(name, config) {
19
+ super(name, config);
20
+ const schema = joi_1.default.object({
21
+ url: joi_1.default.string()
22
+ .uri({
23
+ scheme: [/https?/],
24
+ })
25
+ .required(),
26
+ udpRelay: joi_1.default.bool().strict(),
27
+ tls13: joi_1.default.bool().strict(),
28
+ }).unknown();
29
+ const { error } = schema.validate(config);
30
+ // istanbul ignore next
31
+ if (error) {
32
+ throw error;
33
+ }
34
+ this._url = config.url;
35
+ this.udpRelay = config.udpRelay;
36
+ this.tls13 = config.tls13;
37
+ this.supportGetSubscriptionUserInfo = true;
38
+ }
39
+ // istanbul ignore next
40
+ get url() {
41
+ return (0, relayable_url_1.default)(this._url, this.relayUrl);
42
+ }
43
+ async getSubscriptionUserInfo() {
44
+ const { subscriptionUserinfo } = await (0, exports.getTrojanSubscription)(this.url, this.udpRelay, this.tls13);
45
+ if (subscriptionUserinfo) {
46
+ return subscriptionUserinfo;
47
+ }
48
+ return void 0;
49
+ }
50
+ async getNodeList() {
51
+ const { nodeList } = await (0, exports.getTrojanSubscription)(this.url, this.udpRelay, this.tls13);
52
+ return nodeList;
53
+ }
54
+ }
55
+ exports.default = TrojanProvider;
56
+ /**
57
+ * @see https://github.com/trojan-gfw/trojan-url/blob/master/trojan-url.py
58
+ */
59
+ const getTrojanSubscription = async (url, udpRelay, tls13) => {
60
+ (0, assert_1.default)(url, '未指定订阅地址 url');
61
+ const response = await Provider_1.default.requestCacheableResource(url, {
62
+ requestUserAgent: 'shadowrocket',
63
+ });
64
+ const config = (0, utils_1.fromBase64)(response.body);
65
+ const nodeList = config
66
+ .split('\n')
67
+ .filter((item) => !!item && item.startsWith('trojan://'))
68
+ .map((item) => {
69
+ const nodeConfig = (0, trojan_1.parseTrojanUri)(item);
70
+ return Object.assign(Object.assign({}, nodeConfig), { 'udp-relay': udpRelay, tls13 });
71
+ });
72
+ return {
73
+ nodeList,
74
+ subscriptionUserinfo: response.subscriptionUserinfo,
75
+ };
76
+ };
77
+ exports.getTrojanSubscription = getTrojanSubscription;
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJvamFuUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvVHJvamFuUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNCO0FBQ3RCLG9EQUE0QjtBQUM1QiwyQ0FBOEM7QUFPOUMsb0NBQXNDO0FBQ3RDLDJFQUFrRDtBQUNsRCw0Q0FBaUQ7QUFDakQsMERBQWtDO0FBRWxDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksRUFBQztJQUMxQixPQUFPLEVBQUUsdUJBQXVCO0NBQ2pDLENBQUMsQ0FBQztBQUVILE1BQXFCLGNBQWUsU0FBUSxrQkFBUTtJQUtsRCxZQUFZLElBQVksRUFBRSxNQUE0QjtRQUNwRCxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXBCLE1BQU0sTUFBTSxHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7WUFDeEIsR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7aUJBQ2QsR0FBRyxDQUFDO2dCQUNILE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUNuQixDQUFDO2lCQUNELFFBQVEsRUFBRTtZQUNiLFFBQVEsRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQzdCLEtBQUssRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1NBQzNCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUViLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLHVCQUF1QjtRQUN2QixJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sS0FBSyxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFBLHVCQUFZLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFHbEMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFBLDZCQUFxQixFQUMxRCxJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLEtBQUssQ0FDWCxDQUFDO1FBRUYsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixPQUFPLG9CQUFvQixDQUFDO1NBQzdCO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBQSw2QkFBcUIsRUFDOUMsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxLQUFLLENBQ1gsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQTVERCxpQ0E0REM7QUFFRDs7R0FFRztBQUNJLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUN4QyxHQUFXLEVBQ1gsUUFBa0IsRUFDbEIsS0FBZSxFQUlkLEVBQUU7SUFDSCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUU7UUFDNUQsZ0JBQWdCLEVBQUUsY0FBYztLQUNqQyxDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFVLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLE1BQU07U0FDcEIsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3hELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBb0IsRUFBRTtRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFBLHVCQUFjLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsdUNBQ0ssVUFBVSxLQUNiLFdBQVcsRUFBRSxRQUFRLEVBQ3JCLEtBQUssSUFDTDtJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTztRQUNMLFFBQVE7UUFDUixvQkFBb0IsRUFBRSxRQUFRLENBQUMsb0JBQW9CO0tBQ3BELENBQUM7QUFDSixDQUFDLENBQUM7QUEvQlcsUUFBQSxxQkFBcUIseUJBK0JoQyJ9
@@ -1,4 +1,4 @@
1
- import { V2rayNSubscribeProviderConfig, VmessNodeConfig } from '../types';
1
+ import { ShadowsocksNodeConfig, V2rayNSubscribeProviderConfig, VmessNodeConfig } from '../types';
2
2
  import Provider from './Provider';
3
3
  export default class V2rayNSubscribeProvider extends Provider {
4
4
  readonly compatibleMode?: boolean;
@@ -13,4 +13,5 @@ export default class V2rayNSubscribeProvider extends Provider {
13
13
  /**
14
14
  * @see 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)
15
15
  */
16
- export declare const getV2rayNSubscription: (url: string, isCompatibleMode?: boolean | undefined, skipCertVerify?: boolean | undefined, udpRelay?: boolean | undefined, tls13?: boolean | undefined) => Promise<ReadonlyArray<VmessNodeConfig>>;
16
+ export declare const getV2rayNSubscription: (url: string, isCompatibleMode?: boolean | undefined, skipCertVerify?: boolean | undefined, udpRelay?: boolean | undefined, tls13?: boolean | undefined) => Promise<ReadonlyArray<VmessNodeConfig | ShadowsocksNodeConfig>>;
17
+ export declare const parseJSONConfig: (json: string, isCompatibleMode: boolean | undefined, skipCertVerify?: boolean | undefined, udpRelay?: boolean | undefined, tls13?: boolean | undefined) => VmessNodeConfig | undefined;
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getV2rayNSubscription = void 0;
7
- const joi_1 = __importDefault(require("@hapi/joi"));
6
+ exports.parseJSONConfig = exports.getV2rayNSubscription = void 0;
7
+ const joi_1 = __importDefault(require("joi"));
8
8
  const logger_1 = require("@surgio/logger");
9
9
  const assert_1 = __importDefault(require("assert"));
10
10
  const types_1 = require("../types");
@@ -12,6 +12,7 @@ const utils_1 = require("../utils");
12
12
  const cache_1 = require("../utils/cache");
13
13
  const http_client_1 = __importDefault(require("../utils/http-client"));
14
14
  const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
15
+ const ss_1 = require("../utils/ss");
15
16
  const Provider_1 = __importDefault(require("./Provider"));
16
17
  class V2rayNSubscribeProvider extends Provider_1.default {
17
18
  constructor(name, config) {
@@ -40,10 +41,10 @@ class V2rayNSubscribeProvider extends Provider_1.default {
40
41
  }
41
42
  // istanbul ignore next
42
43
  get url() {
43
- return relayable_url_1.default(this._url, this.relayUrl);
44
+ return (0, relayable_url_1.default)(this._url, this.relayUrl);
44
45
  }
45
46
  getNodeList() {
46
- return exports.getV2rayNSubscription(this.url, this.compatibleMode, this.skipCertVerify, this.udpRelay, this.tls13);
47
+ return (0, exports.getV2rayNSubscription)(this.url, this.compatibleMode, this.skipCertVerify, this.udpRelay, this.tls13);
47
48
  }
48
49
  }
49
50
  exports.default = V2rayNSubscribeProvider;
@@ -51,7 +52,7 @@ exports.default = V2rayNSubscribeProvider;
51
52
  * @see 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)
52
53
  */
53
54
  const getV2rayNSubscription = async (url, isCompatibleMode, skipCertVerify, udpRelay, tls13) => {
54
- assert_1.default(url, '未指定订阅地址 url');
55
+ (0, assert_1.default)(url, '未指定订阅地址 url');
55
56
  if (isCompatibleMode) {
56
57
  logger_1.logger.warn('运行在兼容模式,请注意生成的节点是否正确。');
57
58
  }
@@ -63,32 +64,48 @@ const getV2rayNSubscription = async (url, isCompatibleMode, skipCertVerify, udpR
63
64
  cache_1.ConfigCache.set(url, res.body);
64
65
  return res.body;
65
66
  })();
66
- const configList = utils_1.fromBase64(response)
67
+ const configList = (0, utils_1.fromBase64)(response)
67
68
  .split('\n')
68
69
  .filter((item) => !!item)
69
- .filter((item) => item.startsWith('vmess://'));
70
+ .filter((item) => {
71
+ const pick = item.startsWith('vmess://') || item.startsWith('ss://');
72
+ if (!pick) {
73
+ logger_1.logger.warn(`不支持读取 V2rayN 订阅中的节点 ${item},该节点会被省略。`);
74
+ }
75
+ return pick;
76
+ });
70
77
  return configList
71
78
  .map((item) => {
72
- const json = JSON.parse(utils_1.fromBase64(item.replace('vmess://', '')));
73
- // istanbul ignore next
74
- if (!isCompatibleMode && (!json.v || Number(json.v) !== 2)) {
75
- throw new Error(`该订阅 ${url} 可能不是一个有效的 V2rayN 订阅。请参考 http://url.royli.dev/Qtrci 进行排查, 或者将解析模式改为兼容模式`);
79
+ if (item.startsWith('vmess://')) {
80
+ return (0, exports.parseJSONConfig)((0, utils_1.fromBase64)(item.replace('vmess://', '')), isCompatibleMode, skipCertVerify, udpRelay, tls13);
76
81
  }
77
- // istanbul ignore next
78
- if (['kcp', 'http'].indexOf(json.net) > -1) {
79
- logger_1.logger.warn(`不支持读取 network 类型为 ${json.net} 的 Vmess 节点,节点 ${json.ps} 会被省略`);
80
- return undefined;
82
+ if (item.startsWith('ss://')) {
83
+ return Object.assign(Object.assign({}, (0, ss_1.parseSSUri)(item)), { 'udp-relay': udpRelay, skipCertVerify: skipCertVerify, tls13: tls13 });
81
84
  }
82
- return Object.assign({ nodeName: json.ps, type: types_1.NodeTypeEnum.Vmess, hostname: json.add, port: json.port, method: 'auto', uuid: json.id, alterId: json.aid || '0', network: json.net, tls: json.tls === 'tls', host: json.host || '', path: json.path || '/', 'udp-relay': udpRelay === true }, (json.tls === 'tls'
83
- ? {
84
- skipCertVerify: skipCertVerify !== null && skipCertVerify !== void 0 ? skipCertVerify : false,
85
- tls13: tls13 !== null && tls13 !== void 0 ? tls13 : false,
86
- }
87
- : null));
85
+ return undefined;
88
86
  })
89
87
  .filter((item) => !!item);
90
88
  }
91
89
  return await requestConfigFromRemote();
92
90
  };
93
91
  exports.getV2rayNSubscription = getV2rayNSubscription;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVjJyYXlOU3Vic2NyaWJlUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvVjJyYXlOU3Vic2NyaWJlUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDJDQUF3QztBQUN4QyxvREFBNEI7QUFFNUIsb0NBSWtCO0FBQ2xCLG9DQUFzQztBQUN0QywwQ0FBNkM7QUFDN0MsdUVBQThDO0FBQzlDLDJFQUFrRDtBQUNsRCwwREFBa0M7QUFFbEMsTUFBcUIsdUJBQXdCLFNBQVEsa0JBQVE7SUFRM0QsWUFBWSxJQUFZLEVBQUUsTUFBcUM7UUFDN0QsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEdBQUcsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2lCQUNkLEdBQUcsQ0FBQztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDbkIsQ0FBQztpQkFDRCxRQUFRLEVBQUU7WUFDYixRQUFRLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUM3QixLQUFLLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUMxQixjQUFjLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUNuQyxjQUFjLEVBQUUsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtTQUNwQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFYixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQyx1QkFBdUI7UUFDdkIsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLEtBQUssQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksR0FB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
92
+ const parseJSONConfig = (json, isCompatibleMode, skipCertVerify, udpRelay, tls13) => {
93
+ const config = JSON.parse(json);
94
+ // istanbul ignore next
95
+ if (!isCompatibleMode && (!config.v || Number(config.v) !== 2)) {
96
+ throw new Error(`该节点 ${config.ps} 可能不是一个有效的 V2rayN 节点。请参考 http://url.royli.dev/Qtrci 进行排查, 或者将解析模式改为兼容模式`);
97
+ }
98
+ // istanbul ignore next
99
+ if (['kcp', 'http'].indexOf(config.net) > -1) {
100
+ logger_1.logger.warn(`不支持读取 network 类型为 ${config.net} 的 Vmess 节点,节点 ${config.ps} 会被省略。`);
101
+ return undefined;
102
+ }
103
+ return Object.assign({ nodeName: config.ps, type: types_1.NodeTypeEnum.Vmess, hostname: config.add, port: config.port, method: 'auto', uuid: config.id, alterId: config.aid || '0', network: config.net, tls: config.tls === 'tls', host: config.host, path: config.path || '/', 'udp-relay': udpRelay === true }, (config.tls === 'tls'
104
+ ? {
105
+ skipCertVerify: skipCertVerify !== null && skipCertVerify !== void 0 ? skipCertVerify : false,
106
+ tls13: tls13 !== null && tls13 !== void 0 ? tls13 : false,
107
+ }
108
+ : null));
109
+ };
110
+ exports.parseJSONConfig = parseJSONConfig;
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVjJyYXlOU3Vic2NyaWJlUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvVjJyYXlOU3Vic2NyaWJlUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNCO0FBQ3RCLDJDQUF3QztBQUN4QyxvREFBNEI7QUFFNUIsb0NBS2tCO0FBQ2xCLG9DQUFzQztBQUN0QywwQ0FBNkM7QUFDN0MsdUVBQThDO0FBQzlDLDJFQUFrRDtBQUNsRCxvQ0FBeUM7QUFDekMsMERBQWtDO0FBRWxDLE1BQXFCLHVCQUF3QixTQUFRLGtCQUFRO0lBUTNELFlBQVksSUFBWSxFQUFFLE1BQXFDO1FBQzdELEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEIsTUFBTSxNQUFNLEdBQUcsYUFBRyxDQUFDLE1BQU0sQ0FBQztZQUN4QixHQUFHLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRTtpQkFDZCxHQUFHLENBQUM7Z0JBQ0gsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQ25CLENBQUM7aUJBQ0QsUUFBUSxFQUFFO1lBQ2IsUUFBUSxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDN0IsS0FBSyxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDMUIsY0FBYyxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDbkMsY0FBYyxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7U0FDcEMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUMsdUJBQXVCO1FBQ3ZCLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxLQUFLLENBQUM7U0FDYjtRQUVELElBQUks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
@@ -12,6 +12,7 @@ const ShadowsocksJsonSubscribeProvider_1 = __importDefault(require("./Shadowsock
12
12
  const ShadowsocksrSubscribeProvider_1 = __importDefault(require("./ShadowsocksrSubscribeProvider"));
13
13
  const ShadowsocksSubscribeProvider_1 = __importDefault(require("./ShadowsocksSubscribeProvider"));
14
14
  const SsdProvider_1 = __importDefault(require("./SsdProvider"));
15
+ const TrojanProvider_1 = __importDefault(require("./TrojanProvider"));
15
16
  const V2rayNSubscribeProvider_1 = __importDefault(require("./V2rayNSubscribeProvider"));
16
17
  async function getProvider(name, config) {
17
18
  // 函数形式,需要先获取到返回值
@@ -36,9 +37,11 @@ async function getProvider(name, config) {
36
37
  return new ClashProvider_1.default(name, config);
37
38
  case types_1.SupportProviderEnum.Ssd:
38
39
  return new SsdProvider_1.default(name, config);
40
+ case types_1.SupportProviderEnum.Trojan:
41
+ return new TrojanProvider_1.default(name, config);
39
42
  default:
40
43
  throw new Error(`Unsupported provider type: ${config.type}`);
41
44
  }
42
45
  }
43
46
  exports.getProvider = getProvider;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0NBQStDO0FBQy9DLDBFQUFrRDtBQUNsRCxvRUFBNEM7QUFDNUMsc0VBQThDO0FBQzlDLDBHQUFrRjtBQUNsRixvR0FBNEU7QUFDNUUsa0dBQTBFO0FBQzFFLGdFQUF3QztBQUV4Qyx3RkFBZ0U7QUFJekQsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBWSxFQUNaLE1BQVc7SUFFWCxpQkFBaUI7SUFDakIsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7UUFDaEMsTUFBTSxHQUFHLE1BQU0sTUFBTSxFQUFFLENBQUM7S0FDekI7SUFFRCxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDbkIsS0FBSywyQkFBbUIsQ0FBQyxRQUFRO1lBQy9CLE9BQU8sSUFBSSwwQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUMsS0FBSywyQkFBbUIsQ0FBQyx3QkFBd0I7WUFDL0MsT0FBTyxJQUFJLDBDQUFnQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU1RCxLQUFLLDJCQUFtQixDQUFDLG9CQUFvQjtZQUMzQyxPQUFPLElBQUksc0NBQTRCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhELEtBQUssMkJBQW1CLENBQUMscUJBQXFCO1lBQzVDLE9BQU8sSUFBSSx1Q0FBNkIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFekQsS0FBSywyQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixPQUFPLElBQUksd0JBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekM7UUFFRCxLQUFLLDJCQUFtQixDQUFDLGVBQWU7WUFDdEMsT0FBTyxJQUFJLGlDQUF1QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVuRCxLQUFLLDJCQUFtQixDQUFDLEtBQUs7WUFDNUIsT0FBTyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXpDLEtBQUssMkJBQW1CLENBQUMsR0FBRztZQUMxQixPQUFPLElBQUkscUJBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdkM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUF0Q0Qsa0NBc0NDIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0NBQStDO0FBQy9DLDBFQUFrRDtBQUNsRCxvRUFBNEM7QUFDNUMsc0VBQThDO0FBQzlDLDBHQUFrRjtBQUNsRixvR0FBNEU7QUFDNUUsa0dBQTBFO0FBQzFFLGdFQUF3QztBQUN4QyxzRUFBOEM7QUFFOUMsd0ZBQWdFO0FBSXpELEtBQUssVUFBVSxXQUFXLENBQy9CLElBQVksRUFDWixNQUFXO0lBRVgsaUJBQWlCO0lBQ2pCLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFO1FBQ2hDLE1BQU0sR0FBRyxNQUFNLE1BQU0sRUFBRSxDQUFDO0tBQ3pCO0lBRUQsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ25CLEtBQUssMkJBQW1CLENBQUMsUUFBUTtZQUMvQixPQUFPLElBQUksMEJBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLEtBQUssMkJBQW1CLENBQUMsd0JBQXdCO1lBQy9DLE9BQU8sSUFBSSwwQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUQsS0FBSywyQkFBbUIsQ0FBQyxvQkFBb0I7WUFDM0MsT0FBTyxJQUFJLHNDQUE0QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4RCxLQUFLLDJCQUFtQixDQUFDLHFCQUFxQjtZQUM1QyxPQUFPLElBQUksdUNBQTZCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXpELEtBQUssMkJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0IsT0FBTyxJQUFJLHdCQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsS0FBSywyQkFBbUIsQ0FBQyxlQUFlO1lBQ3RDLE9BQU8sSUFBSSxpQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbkQsS0FBSywyQkFBbUIsQ0FBQyxLQUFLO1lBQzVCLE9BQU8sSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6QyxLQUFLLDJCQUFtQixDQUFDLEdBQUc7WUFDMUIsT0FBTyxJQUFJLHFCQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZDLEtBQUssMkJBQW1CLENBQUMsTUFBTTtZQUM3QixPQUFPLElBQUksd0JBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFMUM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUF6Q0Qsa0NBeUNDIn0=
package/build/types.d.ts CHANGED
@@ -17,7 +17,8 @@ export declare enum SupportProviderEnum {
17
17
  ShadowsocksJsonSubscribe = "shadowsocks_json_subscribe",
18
18
  V2rayNSubscribe = "v2rayn_subscribe",
19
19
  BlackSSL = "blackssl",
20
- Ssd = "ssd"
20
+ Ssd = "ssd",
21
+ Trojan = "trojan"
21
22
  }
22
23
  export interface CommandConfig {
23
24
  readonly output: string;
@@ -140,6 +141,11 @@ export interface SsdProviderConfig extends ProviderConfig {
140
141
  export interface CustomProviderConfig extends ProviderConfig {
141
142
  readonly nodeList: ReadonlyArray<any>;
142
143
  }
144
+ export interface TrojanProviderConfig extends ProviderConfig {
145
+ readonly url: string;
146
+ readonly udpRelay?: boolean;
147
+ readonly tls13?: boolean;
148
+ }
143
149
  export interface HttpNodeConfig extends SimpleNodeConfig {
144
150
  readonly type: NodeTypeEnum.HTTP;
145
151
  readonly hostname: string;
package/build/types.js CHANGED
@@ -22,5 +22,6 @@ var SupportProviderEnum;
22
22
  SupportProviderEnum["V2rayNSubscribe"] = "v2rayn_subscribe";
23
23
  SupportProviderEnum["BlackSSL"] = "blackssl";
24
24
  SupportProviderEnum["Ssd"] = "ssd";
25
+ SupportProviderEnum["Trojan"] = "trojan";
25
26
  })(SupportProviderEnum = exports.SupportProviderEnum || (exports.SupportProviderEnum = {}));
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsSUFBWSxZQVNYO0FBVEQsV0FBWSxZQUFZO0lBQ3RCLCtCQUFlLENBQUE7SUFDZiw2QkFBYSxDQUFBO0lBQ2IsMkNBQTJCLENBQUE7SUFDM0IsNkNBQTZCLENBQUE7SUFDN0IsK0JBQWUsQ0FBQTtJQUNmLCtCQUFlLENBQUE7SUFDZixpQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFTdkI7QUFFRCxJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0Isc0NBQWUsQ0FBQTtJQUNmLHdDQUFpQixDQUFBO0lBQ2pCLHFFQUE4QyxDQUFBO0lBQzlDLHVFQUFnRCxDQUFBO0lBQ2hELDhFQUF1RCxDQUFBO0lBQ3ZELDJEQUFvQyxDQUFBO0lBQ3BDLDRDQUFxQixDQUFBO0lBQ3JCLGtDQUFXLENBQUE7QUFDYixDQUFDLEVBVFcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFTOUIifQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsSUFBWSxZQVNYO0FBVEQsV0FBWSxZQUFZO0lBQ3RCLCtCQUFlLENBQUE7SUFDZiw2QkFBYSxDQUFBO0lBQ2IsMkNBQTJCLENBQUE7SUFDM0IsNkNBQTZCLENBQUE7SUFDN0IsK0JBQWUsQ0FBQTtJQUNmLCtCQUFlLENBQUE7SUFDZixpQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFTdkI7QUFFRCxJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0Isc0NBQWUsQ0FBQTtJQUNmLHdDQUFpQixDQUFBO0lBQ2pCLHFFQUE4QyxDQUFBO0lBQzlDLHVFQUFnRCxDQUFBO0lBQ2hELDhFQUF1RCxDQUFBO0lBQ3ZELDJEQUFvQyxDQUFBO0lBQ3BDLDRDQUFxQixDQUFBO0lBQ3JCLGtDQUFXLENBQUE7SUFDWCx3Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFVOUIifQ==
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.validateConfig = exports.normalizeConfig = exports.loadConfig = void 0;
7
- const joi_1 = __importDefault(require("@hapi/joi"));
7
+ const joi_1 = __importDefault(require("joi"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
9
  const lodash_1 = __importDefault(require("lodash"));
10
10
  const path_1 = __importDefault(require("path"));
@@ -14,36 +14,36 @@ const deprecation_1 = require("../misc/deprecation");
14
14
  const constant_1 = require("./constant");
15
15
  const flag_1 = require("./flag");
16
16
  const index_1 = require("./index");
17
- const showDEP005 = util_1.deprecate(lodash_1.default.noop, deprecation_1.DEP005, 'DEP005');
18
- const showDEP006 = util_1.deprecate(lodash_1.default.noop, deprecation_1.DEP006, 'DEP006');
17
+ const showDEP005 = (0, util_1.deprecate)(lodash_1.default.noop, deprecation_1.DEP005, 'DEP005');
18
+ const showDEP006 = (0, util_1.deprecate)(lodash_1.default.noop, deprecation_1.DEP006, 'DEP006');
19
19
  const loadConfig = (cwd, configPath, override) => {
20
20
  const absPath = path_1.default.resolve(cwd, configPath);
21
21
  if (!fs_extra_1.default.existsSync(absPath)) {
22
22
  throw new Error(`配置文件 ${absPath} 不存在`);
23
23
  }
24
24
  const userConfig = lodash_1.default.cloneDeep(require(absPath));
25
- exports.validateConfig(userConfig);
25
+ (0, exports.validateConfig)(userConfig);
26
26
  if (userConfig.flags) {
27
27
  Object.keys(userConfig.flags).forEach((emoji) => {
28
28
  if (userConfig.flags) {
29
29
  if (typeof userConfig.flags[emoji] === 'string') {
30
- flag_1.addFlagMap(userConfig.flags[emoji], emoji);
30
+ (0, flag_1.addFlagMap)(userConfig.flags[emoji], emoji);
31
31
  }
32
32
  else if (lodash_1.default.isRegExp(userConfig.flags[emoji])) {
33
- flag_1.addFlagMap(userConfig.flags[emoji], emoji);
33
+ (0, flag_1.addFlagMap)(userConfig.flags[emoji], emoji);
34
34
  }
35
35
  else {
36
36
  userConfig.flags[emoji].forEach((name) => {
37
- flag_1.addFlagMap(name, emoji);
37
+ (0, flag_1.addFlagMap)(name, emoji);
38
38
  });
39
39
  }
40
40
  }
41
41
  });
42
42
  }
43
43
  if (override) {
44
- return Object.assign(Object.assign({}, exports.normalizeConfig(cwd, userConfig)), override);
44
+ return Object.assign(Object.assign({}, (0, exports.normalizeConfig)(cwd, userConfig)), override);
45
45
  }
46
- return exports.normalizeConfig(cwd, userConfig);
46
+ return (0, exports.normalizeConfig)(cwd, userConfig);
47
47
  };
48
48
  exports.loadConfig = loadConfig;
49
49
  const normalizeConfig = (cwd, userConfig) => {
@@ -54,7 +54,7 @@ const normalizeConfig = (cwd, userConfig) => {
54
54
  output: path_1.default.join(cwd, './dist'),
55
55
  templateDir: path_1.default.join(cwd, './template'),
56
56
  providerDir: path_1.default.join(cwd, './provider'),
57
- configDir: index_1.ensureConfigFolder(),
57
+ configDir: (0, index_1.ensureConfigFolder)(),
58
58
  surgeConfig: {
59
59
  shadowsocksFormat: 'ss',
60
60
  v2ray: 'native',
@@ -119,9 +119,7 @@ const validateConfig = (userConfig) => {
119
119
  surgioSnippet: joi_1.default.boolean().strict(),
120
120
  });
121
121
  const schema = joi_1.default.object({
122
- artifacts: joi_1.default.array()
123
- .items(artifactSchema)
124
- .required(),
122
+ artifacts: joi_1.default.array().items(artifactSchema).required(),
125
123
  remoteSnippets: joi_1.default.array().items(remoteSnippetSchema),
126
124
  urlBase: joi_1.default.string(),
127
125
  upload: joi_1.default.object({
@@ -175,4 +173,4 @@ const validateConfig = (userConfig) => {
175
173
  }
176
174
  };
177
175
  exports.validateConfig = validateConfig;
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsd0RBQTBCO0FBQzFCLG9EQUF1QjtBQUN2QixnREFBd0I7QUFDeEIsNkJBQTBCO0FBQzFCLCtCQUFpQztBQUNqQyxxREFBcUQ7QUFHckQseUNBQWlFO0FBQ2pFLGlDQUFvQztBQUNwQyxtQ0FBNkM7QUFFN0MsTUFBTSxVQUFVLEdBQUcsZ0JBQVMsQ0FBQyxnQkFBQyxDQUFDLElBQUksRUFBRSxvQkFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sVUFBVSxHQUFHLGdCQUFTLENBQUMsZ0JBQUMsQ0FBQyxJQUFJLEVBQUUsb0JBQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUVoRCxNQUFNLFVBQVUsR0FBRyxDQUN4QixHQUFXLEVBQ1gsVUFBa0IsRUFDbEIsUUFBaUMsRUFDbEIsRUFBRTtJQUNqQixNQUFNLE9BQU8sR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUU5QyxJQUFJLENBQUMsa0JBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLE9BQU8sTUFBTSxDQUFDLENBQUM7S0FDeEM7SUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUVqRCxzQkFBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTNCLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtRQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BCLElB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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsd0RBQTBCO0FBQzFCLG9EQUF1QjtBQUN2QixnREFBd0I7QUFDeEIsNkJBQTBCO0FBQzFCLCtCQUFpQztBQUNqQyxxREFBcUQ7QUFHckQseUNBQWlFO0FBQ2pFLGlDQUFvQztBQUNwQyxtQ0FBNkM7QUFFN0MsTUFBTSxVQUFVLEdBQUcsSUFBQSxnQkFBUyxFQUFDLGdCQUFDLENBQUMsSUFBSSxFQUFFLG9CQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxnQkFBUyxFQUFDLGdCQUFDLENBQUMsSUFBSSxFQUFFLG9CQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFaEQsTUFBTSxVQUFVLEdBQUcsQ0FDeEIsR0FBVyxFQUNYLFVBQWtCLEVBQ2xCLFFBQWlDLEVBQ2xCLEVBQUU7SUFDakIsTUFBTSxPQUFPLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFOUMsSUFBSSxDQUFDLGtCQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0tBQ3hDO0lBRUQsTUFBTSxVQUFVLEdBQUcsZ0JBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFakQsSUFBQSxzQkFBYyxFQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTNCLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtRQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QyxJQUFJLFVBQVUsQ0FBQyxLQUFL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
@@ -9,11 +9,11 @@ exports.TMP_FOLDER_NAME = exports.ERR_INVALID_FILTER = exports.RELAY_SERVICE = e
9
9
  const ms_1 = __importDefault(require("ms"));
10
10
  exports.NETWORK_TIMEOUT = process.env.SURGIO_NETWORK_TIMEOUT
11
11
  ? Number(process.env.SURGIO_NETWORK_TIMEOUT)
12
- : ms_1.default('5s');
12
+ : (0, ms_1.default)('5s');
13
13
  exports.NETWORK_RESOLVE_TIMEOUT = process.env
14
14
  .SURGIO_NETWORK_RESOLVE_TIMEOUT
15
15
  ? Number(process.env.SURGIO_NETWORK_RESOLVE_TIMEOUT)
16
- : ms_1.default('10s');
16
+ : (0, ms_1.default)('10s');
17
17
  exports.NETWORK_CONCURRENCY = process.env.SURGIO_NETWORK_CONCURRENCY
18
18
  ? Number(process.env.SURGIO_NETWORK_CONCURRENCY)
19
19
  : 5;
@@ -77,11 +77,11 @@ exports.MELLOW_UNSUPPORTED_RULE = [
77
77
  exports.REMOTE_SNIPPET_CACHE_MAXAGE = process.env
78
78
  .SURGIO_REMOTE_SNIPPET_CACHE_MAXAGE
79
79
  ? Number(process.env.SURGIO_REMOTE_SNIPPET_CACHE_MAXAGE)
80
- : ms_1.default('12h');
80
+ : (0, ms_1.default)('12h');
81
81
  exports.PROVIDER_CACHE_MAXAGE = process.env
82
82
  .SURGIO_PROVIDER_CACHE_MAXAGE
83
83
  ? Number(process.env.SURGIO_PROVIDER_CACHE_MAXAGE)
84
- : ms_1.default('10m');
84
+ : (0, ms_1.default)('10m');
85
85
  exports.CATEGORIES = {
86
86
  SNIPPET: 'Snippet',
87
87
  SURGE: 'Surge',
@@ -95,4 +95,4 @@ exports.CATEGORIES = {
95
95
  exports.RELAY_SERVICE = 'https://surgio-cors.herokuapp.com/';
96
96
  exports.ERR_INVALID_FILTER = '传入的过滤器无效,请检查语法和变量名是否正确';
97
97
  exports.TMP_FOLDER_NAME = 'surgio-config';
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVCQUF1Qjs7Ozs7OztBQUV2Qiw0Q0FBb0I7QUFFUCxRQUFBLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQjtJQUMvRCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUM7SUFDNUMsQ0FBQyxDQUFDLFlBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVBLFFBQUEsdUJBQXVCLEdBQUcsT0FBTyxDQUFDLEdBQUc7S0FDL0MsOEJBQThCO0lBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQztJQUNwRCxDQUFDLENBQUMsWUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRUQsUUFBQSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQjtJQUN2RSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVPLFFBQUEsYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CO0lBQzNELENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRU8sUUFBQSxnQkFBZ0IsR0FBRyxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLG1DQUFJLE9BQU8sQ0FBQztBQUVsRSxRQUFBLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztBQUU3QixRQUFBLE9BQU8sR0FDbEIsMklBQTJJLENBQUM7QUFFakksUUFBQSxjQUFjLEdBQUcsdUNBQXVDLENBQUM7QUFFekQsUUFBQSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRO0FBRXBDLFFBQUEsb0JBQW9CLEdBQTBCO0lBQ3pELGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsUUFBUTtJQUNSLGFBQWE7SUFDYixTQUFTO0lBQ1QsVUFBVTtJQUNWLE9BQU87SUFDUCxVQUFVO0lBQ1YsVUFBVTtJQUNWLE9BQU87SUFDUCxPQUFPO0lBQ1AsY0FBYztDQUNmLENBQUM7QUFFVyxRQUFBLDJCQUEyQixHQUEwQjtJQUNoRSxZQUFZO0lBQ1osTUFBTTtJQUNOLGNBQWM7SUFDZCxhQUFhO0lBQ2IsUUFBUTtJQUNSLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsU0FBUztJQUNULFVBQVU7SUFDVixPQUFPO0lBQ1AsT0FBTztDQUNSLENBQUM7QUFFRixnRUFBZ0U7QUFDbkQsUUFBQSxtQkFBbUIsR0FBMEI7SUFDeEQsZUFBZTtJQUNmLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLFdBQVc7SUFDWCxTQUFTO0lBQ1QsT0FBTztJQUNQLE9BQU87Q0FDUixDQUFDO0FBRVcsUUFBQSx1QkFBdUIsR0FBMEI7SUFDNUQsV0FBVztJQUNYLFlBQVk7SUFDWixLQUFLO0lBQ0wsSUFBSTtJQUNKLEtBQUs7SUFDTCxXQUFXO0lBQ1gsU0FBUztJQUNULFFBQVE7SUFDUixVQUFVO0NBQ1gsQ0FBQztBQUVXLFFBQUEsMkJBQTJCLEdBQVcsT0FBTyxDQUFDLEdBQUc7S0FDM0Qsa0NBQWtDO0lBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQztJQUN4RCxDQUFDLENBQUMsWUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRUQsUUFBQSxxQkFBcUIsR0FBVyxPQUFPLENBQUMsR0FBRztLQUNyRCw0QkFBNEI7SUFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDO0lBQ2xELENBQUMsQ0FBQyxZQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFRCxRQUFBLFVBQVUsR0FBRztJQUN4QixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsT0FBTztJQUNkLFlBQVksRUFBRSxjQUFjO0lBQzVCLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMsb0JBQW9CLEVBQUUsc0JBQXNCO0lBQzVDLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07Q0FDYixDQUFDO0FBRVcsUUFBQSxhQUFhLEdBQUcsb0NBQW9DLENBQUM7QUFFckQsUUFBQSxrQkFBa0IsR0FDN0Isd0JBQXdCLENBQUM7QUFFZCxRQUFBLGVBQWUsR0FBRyxlQUFlLENBQUMifQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVCQUF1Qjs7Ozs7OztBQUV2Qiw0Q0FBb0I7QUFFUCxRQUFBLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQjtJQUMvRCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUM7SUFDNUMsQ0FBQyxDQUFDLElBQUEsWUFBRSxFQUFDLElBQUksQ0FBQyxDQUFDO0FBRUEsUUFBQSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsR0FBRztLQUMvQyw4QkFBOEI7SUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDO0lBQ3BELENBQUMsQ0FBQyxJQUFBLFlBQUUsRUFBQyxLQUFLLENBQUMsQ0FBQztBQUVELFFBQUEsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEI7SUFDdkUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFTyxRQUFBLGFBQWEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQjtJQUMzRCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUM7SUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVPLFFBQUEsZ0JBQWdCLEdBQUcsTUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixtQ0FBSSxPQUFPLENBQUM7QUFFbEUsUUFBQSxpQkFBaUIsR0FBRyxRQUFRLENBQUM7QUFFN0IsUUFBQSxPQUFPLEdBQ2xCLDJJQUEySSxDQUFDO0FBRWpJLFFBQUEsY0FBYyxHQUFHLHVDQUF1QyxDQUFDO0FBRXpELFFBQUEsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUTtBQUVwQyxRQUFBLG9CQUFvQixHQUEwQjtJQUN6RCxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLFFBQVE7SUFDUixhQUFhO0lBQ2IsU0FBUztJQUNULFVBQVU7SUFDVixPQUFPO0lBQ1AsVUFBVTtJQUNWLFVBQVU7SUFDVixPQUFPO0lBQ1AsT0FBTztJQUNQLGNBQWM7Q0FDZixDQUFDO0FBRVcsUUFBQSwyQkFBMkIsR0FBMEI7SUFDaEUsWUFBWTtJQUNaLE1BQU07SUFDTixjQUFjO0lBQ2QsYUFBYTtJQUNiLFFBQVE7SUFDUixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLFNBQVM7SUFDVCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87Q0FDUixDQUFDO0FBRUYsZ0VBQWdFO0FBQ25ELFFBQUEsbUJBQW1CLEdBQTBCO0lBQ3hELGVBQWU7SUFDZixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWixXQUFXO0lBQ1gsU0FBUztJQUNULE9BQU87SUFDUCxPQUFPO0NBQ1IsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQTBCO0lBQzVELFdBQVc7SUFDWCxZQUFZO0lBQ1osS0FBSztJQUNMLElBQUk7SUFDSixLQUFLO0lBQ0wsV0FBVztJQUNYLFNBQVM7SUFDVCxRQUFRO0lBQ1IsVUFBVTtDQUNYLENBQUM7QUFFVyxRQUFBLDJCQUEyQixHQUFXLE9BQU8sQ0FBQyxHQUFHO0tBQzNELGtDQUFrQztJQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLElBQUEsWUFBRSxFQUFDLEtBQUssQ0FBQyxDQUFDO0FBRUQsUUFBQSxxQkFBcUIsR0FBVyxPQUFPLENBQUMsR0FBRztLQUNyRCw0QkFBNEI7SUFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDO0lBQ2xELENBQUMsQ0FBQyxJQUFBLFlBQUUsRUFBQyxLQUFLLENBQUMsQ0FBQztBQUVELFFBQUEsVUFBVSxHQUFHO0lBQ3hCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsWUFBWSxFQUFFLGNBQWM7SUFDNUIsbUJBQW1CLEVBQUUscUJBQXFCO0lBQzFDLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxvQkFBb0IsRUFBRSxzQkFBc0I7SUFDNUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUM7QUFFVyxRQUFBLGFBQWEsR0FBRyxvQ0FBb0MsQ0FBQztBQUVyRCxRQUFBLGtCQUFrQixHQUM3Qix3QkFBd0IsQ0FBQztBQUVkLFFBQUEsZUFBZSxHQUFHLGVBQWUsQ0FBQyJ9