surgio 2.25.2 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/bin/dev +17 -0
  2. package/bin/dev.cmd +3 -0
  3. package/bin/run +8 -0
  4. package/bin/run.cmd +3 -0
  5. package/build/base-command.d.ts +18 -0
  6. package/build/base-command.js +74 -0
  7. package/build/commands/check.d.ts +10 -0
  8. package/build/commands/check.js +88 -0
  9. package/build/commands/clean-cache.d.ts +6 -0
  10. package/build/commands/clean-cache.js +29 -0
  11. package/build/commands/doctor.d.ts +6 -0
  12. package/build/commands/doctor.js +21 -0
  13. package/build/commands/generate.d.ts +7 -0
  14. package/build/commands/generate.js +93 -0
  15. package/build/commands/lint.d.ts +6 -0
  16. package/build/commands/lint.js +36 -0
  17. package/build/commands/new.d.ts +6 -0
  18. package/build/commands/new.js +36 -0
  19. package/build/commands/subscriptions.d.ts +7 -0
  20. package/build/commands/subscriptions.js +96 -0
  21. package/build/commands/upload.d.ts +6 -0
  22. package/build/commands/upload.js +87 -0
  23. package/build/config.d.ts +6 -0
  24. package/build/config.js +151 -0
  25. package/build/constant/constant.d.ts +17 -16
  26. package/build/constant/constant.js +3 -2
  27. package/build/constant/env.js +1 -1
  28. package/build/constant/error.js +1 -1
  29. package/build/constant/index.js +1 -1
  30. package/build/generate.d.ts +0 -1
  31. package/build/generate.js +3 -65
  32. package/build/generator/artifact.d.ts +299 -64
  33. package/build/generator/artifact.js +90 -92
  34. package/build/generator/index.d.ts +2 -0
  35. package/build/generator/index.js +19 -0
  36. package/build/generator/template.js +2 -6
  37. package/build/hooks/init.d.ts +3 -0
  38. package/build/hooks/init.js +32 -0
  39. package/build/index.d.ts +55 -53
  40. package/build/index.js +13 -51
  41. package/build/internal.d.ts +4 -0
  42. package/build/internal.js +21 -0
  43. package/build/misc/deprecation.d.ts +1 -6
  44. package/build/misc/deprecation.js +1 -8
  45. package/build/misc/flag_cn.js +1 -1
  46. package/build/provider/BlackSSLProvider.d.ts +4 -3
  47. package/build/provider/BlackSSLProvider.js +24 -16
  48. package/build/provider/ClashProvider.d.ts +7 -10
  49. package/build/provider/ClashProvider.js +165 -76
  50. package/build/provider/CustomProvider.d.ts +4 -3
  51. package/build/provider/CustomProvider.js +81 -50
  52. package/build/provider/Provider.d.ts +9 -22
  53. package/build/provider/Provider.js +31 -69
  54. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +4 -5
  55. package/build/provider/ShadowsocksJsonSubscribeProvider.js +27 -21
  56. package/build/provider/ShadowsocksSubscribeProvider.d.ts +5 -8
  57. package/build/provider/ShadowsocksSubscribeProvider.js +30 -27
  58. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +5 -8
  59. package/build/provider/ShadowsocksrSubscribeProvider.js +30 -23
  60. package/build/provider/SsdProvider.d.ts +5 -8
  61. package/build/provider/SsdProvider.js +56 -39
  62. package/build/provider/TrojanProvider.d.ts +5 -8
  63. package/build/provider/TrojanProvider.js +37 -30
  64. package/build/provider/V2rayNSubscribeProvider.d.ts +4 -5
  65. package/build/provider/V2rayNSubscribeProvider.js +61 -33
  66. package/build/provider/index.d.ts +16 -2
  67. package/build/provider/index.js +12 -5
  68. package/build/provider/types.d.ts +10 -1
  69. package/build/provider/types.js +1 -1
  70. package/build/redis.js +1 -1
  71. package/build/types.d.ts +45 -236
  72. package/build/types.js +2 -1
  73. package/build/utils/cache.js +29 -27
  74. package/build/utils/clash.d.ts +204 -3
  75. package/build/utils/clash.js +247 -106
  76. package/build/utils/configurables.d.ts +71 -0
  77. package/build/utils/configurables.js +8 -0
  78. package/build/utils/constant.js +1 -1
  79. package/build/utils/dns.js +1 -1
  80. package/build/utils/doctor.d.ts +2 -0
  81. package/build/utils/doctor.js +38 -0
  82. package/build/utils/env-flag.js +2 -2
  83. package/build/utils/error-helper.d.ts +2 -2
  84. package/build/utils/error-helper.js +30 -16
  85. package/build/utils/filter.d.ts +46 -43
  86. package/build/utils/filter.js +51 -30
  87. package/build/utils/flag.js +1 -1
  88. package/build/utils/http-client.js +38 -5
  89. package/build/utils/index.d.ts +13 -21
  90. package/build/utils/index.js +98 -117
  91. package/build/utils/linter.js +5 -2
  92. package/build/utils/loon.d.ts +3 -2
  93. package/build/utils/loon.js +67 -5
  94. package/build/utils/quantumult.d.ts +3 -3
  95. package/build/utils/quantumult.js +190 -258
  96. package/build/utils/relayable-url.js +1 -1
  97. package/build/utils/remote-snippet.js +3 -4
  98. package/build/utils/ss.js +27 -17
  99. package/build/utils/ssr.js +3 -4
  100. package/build/utils/subscription.js +7 -7
  101. package/build/utils/surfboard.d.ts +3 -2
  102. package/build/utils/surfboard.js +142 -126
  103. package/build/utils/surge.d.ts +4 -2
  104. package/build/utils/surge.js +328 -300
  105. package/build/utils/time.d.ts +1 -0
  106. package/build/utils/time.js +6 -0
  107. package/build/utils/tmp-helper.js +8 -1
  108. package/build/utils/trojan.js +19 -11
  109. package/build/utils/v2ray.js +2 -2
  110. package/build/validators/artifact.d.ts +35 -0
  111. package/build/validators/artifact.js +17 -0
  112. package/build/validators/common.d.ts +121 -0
  113. package/build/validators/common.js +52 -0
  114. package/build/validators/filter.d.ts +10 -0
  115. package/build/validators/filter.js +15 -0
  116. package/build/validators/hooks.d.ts +7 -0
  117. package/build/validators/hooks.js +8 -0
  118. package/build/validators/http.d.ts +137 -0
  119. package/build/validators/http.js +19 -0
  120. package/build/validators/index.d.ts +15 -0
  121. package/build/validators/index.js +32 -0
  122. package/build/validators/provider.d.ts +109 -0
  123. package/build/validators/provider.js +41 -0
  124. package/build/validators/shadowsocks.d.ts +86 -0
  125. package/build/validators/shadowsocks.js +29 -0
  126. package/build/validators/shadowsocksr.d.ts +77 -0
  127. package/build/validators/shadowsocksr.js +19 -0
  128. package/build/validators/snell.d.ts +71 -0
  129. package/build/validators/snell.js +20 -0
  130. package/build/validators/socks5.d.ts +77 -0
  131. package/build/validators/socks5.js +19 -0
  132. package/build/validators/surgio-config.d.ts +307 -0
  133. package/build/validators/surgio-config.js +95 -0
  134. package/build/validators/trojan.d.ts +86 -0
  135. package/build/validators/trojan.js +15 -0
  136. package/build/validators/tuic.d.ts +301 -0
  137. package/build/validators/tuic.js +21 -0
  138. package/build/validators/vmess.d.ts +92 -0
  139. package/build/validators/vmess.js +29 -0
  140. package/build/validators/wireguard.d.ts +123 -0
  141. package/build/validators/wireguard.js +26 -0
  142. package/config.d.ts +1 -0
  143. package/config.js +1 -0
  144. package/constant.d.ts +1 -0
  145. package/constant.js +1 -0
  146. package/generator.d.ts +1 -0
  147. package/generator.js +1 -0
  148. package/hygen-template/artifact/new/index.js +15 -15
  149. package/hygen-template/provider/new/index.js +8 -7
  150. package/hygen-template/template/new/index.js +3 -3
  151. package/index.d.ts +1 -0
  152. package/index.js +1 -0
  153. package/internal.d.ts +1 -0
  154. package/internal.js +1 -0
  155. package/package.json +112 -75
  156. package/provider.d.ts +1 -0
  157. package/provider.js +1 -0
  158. package/utils.d.ts +1 -0
  159. package/utils.js +1 -0
  160. package/bin/surgio.js +0 -8
  161. package/build/command/check.d.ts +0 -9
  162. package/build/command/check.js +0 -79
  163. package/build/command/clean-cache.d.ts +0 -8
  164. package/build/command/clean-cache.js +0 -43
  165. package/build/command/doctor.d.ts +0 -9
  166. package/build/command/doctor.js +0 -63
  167. package/build/command/generate.d.ts +0 -8
  168. package/build/command/generate.js +0 -64
  169. package/build/command/lint.d.ts +0 -7
  170. package/build/command/lint.js +0 -42
  171. package/build/command/new.d.ts +0 -7
  172. package/build/command/new.js +0 -44
  173. package/build/command/subscriptions.d.ts +0 -10
  174. package/build/command/subscriptions.js +0 -87
  175. package/build/command/upload.d.ts +0 -9
  176. package/build/command/upload.js +0 -101
  177. package/build/utils/command.d.ts +0 -2
  178. package/build/utils/command.js +0 -23
  179. package/build/utils/config.d.ts +0 -6
  180. package/build/utils/config.js +0 -245
  181. package/build/utils/patch-proxy.d.ts +0 -1
  182. package/build/utils/patch-proxy.js +0 -19
package/bin/dev ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+
3
+ const oclif = require('@oclif/core');
4
+ const path = require('path');
5
+
6
+ const project = path.join(__dirname, '..', 'tsconfig.json');
7
+
8
+ // In dev mode -> use ts-node and dev plugins
9
+ process.env.NODE_ENV = 'development';
10
+
11
+ require('ts-node').register({ project });
12
+
13
+ // In dev mode, always show stack traces
14
+ oclif.settings.debug = true;
15
+
16
+ // Start the CLI
17
+ oclif.run().then(oclif.flush).catch(oclif.Errors.handle);
package/bin/dev.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node "%~dp0\dev" %*
package/bin/run ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ const oclif = require('@oclif/core');
4
+
5
+ oclif
6
+ .run()
7
+ .then(require('@oclif/core/flush'))
8
+ .catch(require('@oclif/core/handle'));
package/bin/run.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node "%~dp0\run" %*
@@ -0,0 +1,18 @@
1
+ import { Command, Interfaces, Config } from '@oclif/core';
2
+ import ora from 'ora';
3
+ import { CommandConfig } from './types';
4
+ export type Flags<T extends typeof Command> = Interfaces.InferredFlags<(typeof BaseCommand)['baseFlags'] & T['flags']>;
5
+ export type Args<T extends typeof Command> = Interfaces.InferredArgs<T['args']>;
6
+ declare abstract class BaseCommand<T extends typeof Command> extends Command {
7
+ protected flags: Flags<T>;
8
+ protected args: Args<T>;
9
+ protected surgioConfig: CommandConfig;
10
+ ora: ora.Ora;
11
+ projectDir: string;
12
+ constructor(argv: string[], config: Config);
13
+ init(): Promise<void>;
14
+ protected catch(err: Error & {
15
+ exitCode?: number;
16
+ }): Promise<any>;
17
+ }
18
+ export default BaseCommand;
@@ -0,0 +1,74 @@
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
+ const core_1 = require("@oclif/core");
7
+ const logger_1 = require("@surgio/logger");
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const path_1 = require("path");
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const dotenv_1 = __importDefault(require("dotenv"));
12
+ const config_1 = require("./config");
13
+ const error_helper_1 = require("./utils/error-helper");
14
+ class BaseCommand extends core_1.Command {
15
+ flags;
16
+ args;
17
+ surgioConfig;
18
+ ora = (0, ora_1.default)({
19
+ stream: process.stdout,
20
+ });
21
+ projectDir;
22
+ constructor(argv, config) {
23
+ super(argv, config);
24
+ }
25
+ async init() {
26
+ await super.init();
27
+ const { args, flags } = await this.parse({
28
+ flags: this.ctor.flags,
29
+ baseFlags: super.ctor.baseFlags,
30
+ args: this.ctor.args,
31
+ strict: this.ctor.strict,
32
+ });
33
+ this.flags = flags;
34
+ this.args = args;
35
+ // istanbul ignore next
36
+ if (flags.verbose) {
37
+ logger_1.transports.console.level = 'debug';
38
+ }
39
+ if (flags.project.startsWith('.')) {
40
+ flags.project = (0, path_1.resolve)(process.cwd(), flags.project);
41
+ }
42
+ const envPath = (0, path_1.resolve)(flags.project, './.env');
43
+ // istanbul ignore next
44
+ if (fs_extra_1.default.existsSync(envPath)) {
45
+ dotenv_1.default.config({ path: envPath });
46
+ }
47
+ this.projectDir = flags.project;
48
+ this.surgioConfig = await (0, config_1.loadConfig)(this.projectDir);
49
+ }
50
+ async catch(err) {
51
+ if (this.ora.isSpinning) {
52
+ this.ora.fail();
53
+ }
54
+ await error_helper_1.errorHandler.call(this, err);
55
+ this.exit(err.exitCode || 1);
56
+ }
57
+ }
58
+ BaseCommand.enableJsonFlag = true;
59
+ BaseCommand.baseFlags = {
60
+ project: core_1.Flags.string({
61
+ char: 'p',
62
+ description: 'Surgio 配置目录',
63
+ default: './',
64
+ helpGroup: 'GLOBAL',
65
+ }),
66
+ verbose: core_1.Flags.boolean({
67
+ char: 'V',
68
+ description: '打印调试日志',
69
+ default: false,
70
+ helpGroup: 'GLOBAL',
71
+ }),
72
+ };
73
+ exports.default = BaseCommand;
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jhc2UtY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNDQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsOENBQXFCO0FBQ3JCLCtCQUE4QjtBQUM5Qix3REFBeUI7QUFDekIsb0RBQTJCO0FBRzNCLHFDQUFxQztBQUNyQyx1REFBbUQ7QUFPbkQsTUFBZSxXQUFzQyxTQUFRLGNBQU87SUFDeEQsS0FBSyxDQUFXO0lBQ2hCLElBQUksQ0FBVTtJQUNkLFlBQVksQ0FBZ0I7SUFDL0IsR0FBRyxHQUFHLElBQUEsYUFBRyxFQUFDO1FBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQTtJQUNLLFVBQVUsQ0FBUztJQUUxQixZQUFZLElBQWMsRUFBRSxNQUFjO1FBQ3hDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDckIsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFbEIsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN0QixTQUFTLEVBQUcsS0FBSyxDQUFDLElBQTJCLENBQUMsU0FBUztZQUN2RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07U0FDekIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFpQixDQUFBO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBZSxDQUFBO1FBRTNCLHVCQUF1QjtRQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDakIsbUJBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQTtTQUNuQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFBLGNBQU8sRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQ3REO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBQSxjQUFPLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUVoRCx1QkFBdUI7UUFDdkIsSUFBSSxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFBLG1CQUFVLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFFUyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQWtDO1FBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtTQUNoQjtRQUNELE1BQU0sMkJBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM5QixDQUFDO0NBQ0Y7QUFFRCxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQTtBQUNqQyxXQUFXLENBQUMsU0FBUyxHQUFHO0lBQ3RCLE9BQU8sRUFBRSxZQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3BCLElBQUksRUFBRSxHQUFHO1FBQ1QsV0FBVyxFQUFFLGFBQWE7UUFDMUIsT0FBTyxFQUFFLElBQUk7UUFDYixTQUFTLEVBQUUsUUFBUTtLQUNwQixDQUFDO0lBQ0YsT0FBTyxFQUFFLFlBQUssQ0FBQyxPQUFPLENBQUM7UUFDckIsSUFBSSxFQUFFLEdBQUc7UUFDVCxXQUFXLEVBQUUsUUFBUTtRQUNyQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO0tBQ3BCLENBQUM7Q0FDSCxDQUFBO0FBRUQsa0JBQWUsV0FBVyxDQUFBIn0=
@@ -0,0 +1,10 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class CheckCommand extends BaseCommand<typeof CheckCommand> {
3
+ static description: string;
4
+ static args: {
5
+ provider: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
6
+ };
7
+ run(): Promise<void>;
8
+ private getNodeList;
9
+ }
10
+ export default CheckCommand;
@@ -0,0 +1,88 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ // istanbul ignore file
30
+ const core_1 = require("@oclif/core");
31
+ const fs_extra_1 = __importDefault(require("fs-extra"));
32
+ const path_1 = __importDefault(require("path"));
33
+ const inquirer_1 = __importDefault(require("inquirer"));
34
+ const base_command_1 = __importDefault(require("../base-command"));
35
+ const redis_1 = __importDefault(require("../redis"));
36
+ const config_1 = require("../config");
37
+ const provider_1 = require("../provider");
38
+ class CheckCommand extends base_command_1.default {
39
+ static description = '查询 Provider';
40
+ static args = {
41
+ provider: core_1.Args.string({
42
+ description: '发起检查的 Provider',
43
+ required: true,
44
+ }),
45
+ };
46
+ async run() {
47
+ const nodeList = await this.getNodeList(this.args.provider);
48
+ if (!process.stdin.isTTY) {
49
+ console.log(JSON.stringify(nodeList, null, 2));
50
+ return;
51
+ }
52
+ const answers = await inquirer_1.default.prompt([
53
+ {
54
+ type: 'list',
55
+ name: 'node',
56
+ message: '请选择节点',
57
+ choices: nodeList.map((node) => {
58
+ const name = 'hostname' in node && 'port' in node
59
+ ? `${node.nodeName} - ${node.hostname}:${node.port}`
60
+ : node.nodeName;
61
+ return {
62
+ name,
63
+ value: node,
64
+ };
65
+ }),
66
+ },
67
+ ]);
68
+ console.log(JSON.stringify(answers.node, null, 2));
69
+ await redis_1.default.destroyRedis();
70
+ }
71
+ async getNodeList(providerName) {
72
+ core_1.ux.action.start('正在获取 Provider 信息');
73
+ const config = (0, config_1.getConfig)();
74
+ const filePath = path_1.default.resolve(config.providerDir, `./${providerName}.js`);
75
+ const file = fs_extra_1.default.existsSync(filePath)
76
+ ? await Promise.resolve(`${filePath}`).then(s => __importStar(require(s)))
77
+ : new Error('找不到该 Provider');
78
+ if (file instanceof Error) {
79
+ throw file;
80
+ }
81
+ const provider = await (0, provider_1.getProvider)(providerName, file.default);
82
+ const nodeList = await provider.getNodeList();
83
+ core_1.ux.action.stop();
84
+ return nodeList;
85
+ }
86
+ }
87
+ exports.default = CheckCommand;
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY2hlY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVCQUF1QjtBQUN2QixzQ0FBc0M7QUFDdEMsd0RBQXlCO0FBQ3pCLGdEQUF1QjtBQUN2Qix3REFBK0I7QUFFL0IsbUVBQXlDO0FBQ3pDLHFEQUE0QjtBQUM1QixzQ0FBcUM7QUFDckMsMENBQXlDO0FBRXpDLE1BQU0sWUFBYSxTQUFRLHNCQUFnQztJQUN6RCxNQUFNLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQTtJQUVsQyxNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osUUFBUSxFQUFFLFdBQUksQ0FBQyxNQUFNLENBQUM7WUFDcEIsV0FBVyxFQUFFLGdCQUFnQjtZQUM3QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFBO0lBRU0sS0FBSyxDQUFDLEdBQUc7UUFDZCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUUzRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5QyxPQUFNO1NBQ1A7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGtCQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3BDO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxNQUFNO2dCQUNaLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUM3QixNQUFNLElBQUksR0FDUixVQUFVLElBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJO3dCQUNsQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxNQUFNLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTt3QkFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUE7b0JBRW5CLE9BQU87d0JBQ0wsSUFBSTt3QkFDSixLQUFLLEVBQUUsSUFBSTtxQkFDWixDQUFBO2dCQUNILENBQUMsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbEQsTUFBTSxlQUFLLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDNUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBb0I7UUFDNUMsU0FBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUVuQyxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFTLEdBQUUsQ0FBQTtRQUMxQixNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFBO1FBQ3pFLE1BQU0sSUFBSSxHQUFnQixrQkFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDL0MsQ0FBQyxDQUFDLHlCQUFhLFFBQVEsdUNBQUM7WUFDeEIsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRTlCLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRTtZQUN6QixNQUFNLElBQUksQ0FBQTtTQUNYO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHNCQUFXLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5RCxNQUFNLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUU3QyxTQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO1FBRWhCLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7O0FBR0gsa0JBQWUsWUFBWSxDQUFBIn0=
@@ -0,0 +1,6 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class CleanCacheCommand extends BaseCommand<typeof CleanCacheCommand> {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ }
6
+ export default CleanCacheCommand;
@@ -0,0 +1,29 @@
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
+ // istanbul ignore file
7
+ const core_1 = require("@oclif/core");
8
+ const os_1 = __importDefault(require("os"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const base_command_1 = __importDefault(require("../base-command"));
12
+ const constant_1 = require("../constant");
13
+ const redis_1 = __importDefault(require("../redis"));
14
+ const cache_1 = require("../utils/cache");
15
+ class CleanCacheCommand extends base_command_1.default {
16
+ static description = '清除缓存';
17
+ async run() {
18
+ const tmpDir = path_1.default.join(os_1.default.tmpdir(), constant_1.TMP_FOLDER_NAME);
19
+ core_1.ux.action.start('正在清除缓存');
20
+ if (fs_extra_1.default.existsSync(tmpDir)) {
21
+ await fs_extra_1.default.remove(tmpDir);
22
+ }
23
+ await (0, cache_1.cleanCaches)();
24
+ core_1.ux.action.stop();
25
+ await redis_1.default.destroyRedis();
26
+ }
27
+ }
28
+ exports.default = CleanCacheCommand;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4tY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY2xlYW4tY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1QkFBdUI7QUFDdkIsc0NBQWdDO0FBQ2hDLDRDQUFtQjtBQUNuQixnREFBdUI7QUFDdkIsd0RBQXlCO0FBRXpCLG1FQUF5QztBQUN6QywwQ0FBNkM7QUFDN0MscURBQTRCO0FBQzVCLDBDQUE0QztBQUU1QyxNQUFNLGlCQUFrQixTQUFRLHNCQUFxQztJQUNuRSxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQTtJQUVwQixLQUFLLENBQUMsR0FBRztRQUNkLE1BQU0sTUFBTSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLDBCQUFlLENBQUMsQ0FBQTtRQUV0RCxTQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV6QixJQUFJLGtCQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sa0JBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDeEI7UUFFRCxNQUFNLElBQUEsbUJBQVcsR0FBRSxDQUFBO1FBRW5CLFNBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFaEIsTUFBTSxlQUFLLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDNUIsQ0FBQzs7QUFHSCxrQkFBZSxpQkFBaUIsQ0FBQSJ9
@@ -0,0 +1,6 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class DoctorCommand extends BaseCommand<typeof DoctorCommand> {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ }
6
+ export default DoctorCommand;
@@ -0,0 +1,21 @@
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
+ // istanbul ignore file
7
+ const base_command_1 = __importDefault(require("../base-command"));
8
+ const redis_1 = __importDefault(require("../redis"));
9
+ const doctor_1 = require("../utils/doctor");
10
+ class DoctorCommand extends base_command_1.default {
11
+ static description = '检查运行环境';
12
+ async run() {
13
+ const doctorInfo = await (0, doctor_1.generateDoctorInfo)(this.projectDir, this.config.pjson);
14
+ doctorInfo.forEach((item) => {
15
+ console.log(item);
16
+ });
17
+ await redis_1.default.destroyRedis();
18
+ }
19
+ }
20
+ exports.default = DoctorCommand;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RvY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVCQUF1QjtBQUN2QixtRUFBeUM7QUFDekMscURBQTRCO0FBQzVCLDRDQUFvRDtBQUVwRCxNQUFNLGFBQWMsU0FBUSxzQkFBaUM7SUFDM0QsTUFBTSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUE7SUFFdEIsS0FBSyxDQUFDLEdBQUc7UUFDZCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsMkJBQWtCLEVBQ3pDLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2xCLENBQUE7UUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQixDQUFDLENBQUMsQ0FBQTtRQUVGLE1BQU0sZUFBSyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQzVCLENBQUM7O0FBR0gsa0JBQWUsYUFBYSxDQUFBIn0=
@@ -0,0 +1,7 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class GenerateCommand extends BaseCommand<typeof GenerateCommand> {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ private generate;
6
+ }
7
+ export default GenerateCommand;
@@ -0,0 +1,93 @@
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
+ const core_1 = require("@oclif/core");
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const base_command_1 = __importDefault(require("../base-command"));
10
+ const generator_1 = require("../generator");
11
+ const redis_1 = __importDefault(require("../redis"));
12
+ const config_1 = require("../config");
13
+ const linter_1 = require("../utils/linter");
14
+ const utils_1 = require("../utils");
15
+ class GenerateCommand extends base_command_1.default {
16
+ static description = '生成规则';
17
+ async run() {
18
+ if (!this.flags['skip-lint']) {
19
+ const result = await (0, linter_1.checkAndFix)(this.projectDir);
20
+ if (!result) {
21
+ throw new Error('JS 语法检查不通过,请根据提示修改文件(参考 https://url.royli.dev/SeB6m)');
22
+ }
23
+ }
24
+ if (this.flags.output) {
25
+ (0, config_1.setConfig)('output', this.flags.output);
26
+ }
27
+ await this.generate(this.flags['skip-fail'], this.flags['cache-snippet']);
28
+ await redis_1.default.destroyRedis();
29
+ }
30
+ async generate(skipFail, cacheSnippet) {
31
+ this.ora.info('开始生成规则');
32
+ const config = this.surgioConfig;
33
+ const artifactList = config.artifacts;
34
+ const distPath = config.output;
35
+ const remoteSnippetsConfig = config.remoteSnippets || [];
36
+ const remoteSnippetList = await (0, utils_1.loadRemoteSnippetList)(remoteSnippetsConfig, cacheSnippet);
37
+ const templateEngine = (0, generator_1.getEngine)(config.templateDir);
38
+ await fs_extra_1.default.mkdirp(distPath);
39
+ for (const artifact of artifactList) {
40
+ this.ora.start(`正在生成规则 ${artifact.name}`);
41
+ try {
42
+ const artifactInstance = new generator_1.Artifact(config, artifact, {
43
+ remoteSnippetList,
44
+ });
45
+ artifactInstance.once('initProvider:end', () => {
46
+ this.ora.text = `已处理 Provider ${artifactInstance.initProgress}/${artifactInstance.providerNameList.length}...`;
47
+ });
48
+ await artifactInstance.init();
49
+ const result = artifactInstance.render(templateEngine);
50
+ const destFilePath = path_1.default.join(config.output, artifact.name);
51
+ if (artifact.destDir) {
52
+ fs_extra_1.default.accessSync(artifact.destDir, fs_extra_1.default.constants.W_OK);
53
+ await fs_extra_1.default.writeFile(path_1.default.join(artifact.destDir, artifact.name), result);
54
+ }
55
+ else {
56
+ await fs_extra_1.default.writeFile(destFilePath, result);
57
+ }
58
+ this.ora.succeed(`规则 ${artifact.name} 生成成功`);
59
+ }
60
+ catch (err) {
61
+ this.ora.fail(`规则 ${artifact.name} 生成失败`);
62
+ // istanbul ignore next
63
+ if (skipFail) {
64
+ console.error(err.stack || err);
65
+ }
66
+ else {
67
+ throw err;
68
+ }
69
+ }
70
+ }
71
+ this.ora.succeed('规则生成成功');
72
+ }
73
+ }
74
+ GenerateCommand.flags = {
75
+ output: core_1.Flags.string({
76
+ char: 'o',
77
+ description: '生成规则的目录',
78
+ }),
79
+ 'cache-snippet': core_1.Flags.boolean({
80
+ default: false,
81
+ description: '缓存远程片段',
82
+ }),
83
+ 'skip-fail': core_1.Flags.boolean({
84
+ default: false,
85
+ description: '跳过生成失败的 Artifact',
86
+ }),
87
+ 'skip-lint': core_1.Flags.boolean({
88
+ default: false,
89
+ description: '跳过代码检查',
90
+ }),
91
+ };
92
+ exports.default = GenerateCommand;
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZ2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzQ0FBbUM7QUFDbkMsd0RBQXlCO0FBQ3pCLGdEQUF1QjtBQUV2QixtRUFBeUM7QUFDekMsNENBQWtEO0FBQ2xELHFEQUE0QjtBQUU1QixzQ0FBcUM7QUFDckMsNENBQTZDO0FBQzdDLG9DQUFnRDtBQUVoRCxNQUFNLGVBQWdCLFNBQVEsc0JBQW1DO0lBQy9ELE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFBO0lBRXBCLEtBQUssQ0FBQyxHQUFHO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLG9CQUFXLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRWpELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixzREFBc0QsQ0FDdkQsQ0FBQTthQUNGO1NBQ0Y7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3JCLElBQUEsa0JBQVMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUN2QztRQUVELE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtRQUV6RSxNQUFNLGVBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUM1QixDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVEsQ0FDcEIsUUFBa0IsRUFDbEIsWUFBc0I7UUFFdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsTUFBTSxNQUFNLEdB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
@@ -0,0 +1,6 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class LintCommand extends BaseCommand<typeof LintCommand> {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ }
6
+ export default LintCommand;
@@ -0,0 +1,36 @@
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
+ // istanbul ignore file
7
+ const core_1 = require("@oclif/core");
8
+ const base_command_1 = __importDefault(require("../base-command"));
9
+ const linter_1 = require("../utils/linter");
10
+ class LintCommand extends base_command_1.default {
11
+ static description = '运行 JS 语法检查';
12
+ async run() {
13
+ let result;
14
+ if (this.flags.fix) {
15
+ result = await (0, linter_1.checkAndFix)(this.projectDir);
16
+ }
17
+ else {
18
+ result = await (0, linter_1.check)(this.projectDir);
19
+ }
20
+ if (!result) {
21
+ console.warn('⚠️ JS 语法检查不通过,请根据提示修改文件(可添加参数 --fix 自动修复部分错误, 参考 https://url.royli.dev/SeB6m)');
22
+ process.exit(1);
23
+ }
24
+ else {
25
+ console.log('✅ JS 语法检查通过');
26
+ }
27
+ }
28
+ }
29
+ LintCommand.flags = {
30
+ fix: core_1.Flags.boolean({
31
+ default: false,
32
+ description: '自动修复部分 Lint 错误',
33
+ }),
34
+ };
35
+ exports.default = LintCommand;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9saW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUJBQXVCO0FBQ3ZCLHNDQUFtQztBQUVuQyxtRUFBeUM7QUFDekMsNENBQW9EO0FBRXBELE1BQU0sV0FBWSxTQUFRLHNCQUErQjtJQUN2RCxNQUFNLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQTtJQUUxQixLQUFLLENBQUMsR0FBRztRQUNkLElBQUksTUFBTSxDQUFBO1FBRVYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNsQixNQUFNLEdBQUcsTUFBTSxJQUFBLG9CQUFXLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQzVDO2FBQU07WUFDTCxNQUFNLEdBQUcsTUFBTSxJQUFBLGNBQUssRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7U0FDdEM7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FDVixnRkFBZ0YsQ0FDakYsQ0FBQTtZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUE7U0FDNUI7SUFDSCxDQUFDOztBQUdILFdBQVcsQ0FBQyxLQUFLLEdBQUc7SUFDbEIsR0FBRyxFQUFFLFlBQUssQ0FBQyxPQUFPLENBQUM7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCxXQUFXLEVBQUUsZ0JBQWdCO0tBQzlCLENBQUM7Q0FDSCxDQUFBO0FBRUQsa0JBQWUsV0FBVyxDQUFBIn0=
@@ -0,0 +1,6 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class NewCommand extends BaseCommand<typeof NewCommand> {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ }
6
+ export default NewCommand;
@@ -0,0 +1,36 @@
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
+ // istanbul ignore file
7
+ const core_1 = require("@oclif/core");
8
+ const path_1 = require("path");
9
+ const hygen_1 = require("@royli/hygen");
10
+ const base_command_1 = __importDefault(require("../base-command"));
11
+ const defaultTemplates = (0, path_1.join)(__dirname, '../../hygen-template');
12
+ class NewCommand extends base_command_1.default {
13
+ static description = '新建文件助手';
14
+ async run() {
15
+ const args = [...this.argv].concat('new'); // [type] new ...
16
+ await (0, hygen_1.runner)(args, {
17
+ templates: defaultTemplates,
18
+ cwd: this.projectDir,
19
+ logger: new hygen_1.Logger(console.log.bind(console)),
20
+ createPrompter: () => require('inquirer'),
21
+ exec: (action, body) => {
22
+ const opts = body && body.length > 0 ? { input: body } : {};
23
+ return require('execa').shell(action, opts);
24
+ },
25
+ });
26
+ }
27
+ }
28
+ NewCommand.args = {
29
+ type: core_1.Args.custom({
30
+ description: '文件类型',
31
+ required: true,
32
+ options: ['provider', 'template', 'artifact'],
33
+ })(),
34
+ };
35
+ exports.default = NewCommand;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL25ldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVCQUF1QjtBQUN2QixzQ0FBa0M7QUFDbEMsK0JBQTJCO0FBQzNCLHdDQUE2QztBQUU3QyxtRUFBeUM7QUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQTtBQUVoRSxNQUFNLFVBQVcsU0FBUSxzQkFBOEI7SUFDckQsTUFBTSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUE7SUFFdEIsS0FBSyxDQUFDLEdBQUc7UUFDZCxNQUFNLElBQUksR0FBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLGlCQUFpQjtRQUVyRSxNQUFNLElBQUEsY0FBTSxFQUFDLElBQUksRUFBRTtZQUNqQixTQUFTLEVBQUUsZ0JBQWdCO1lBQzNCLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUNwQixNQUFNLEVBQUUsSUFBSSxjQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDekMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7Z0JBQzNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7O0FBR0gsVUFBVSxDQUFDLElBQUksR0FBRztJQUNoQixJQUFJLEVBQUUsV0FBSSxDQUFDLE1BQU0sQ0FBQztRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixRQUFRLEVBQUUsSUFBSTtRQUNkLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO0tBQzlDLENBQUMsRUFBRTtDQUNMLENBQUE7QUFFRCxrQkFBZSxVQUFVLENBQUEifQ==
@@ -0,0 +1,7 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class SubscriptionsCommand extends BaseCommand<typeof SubscriptionsCommand> {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ private listProviders;
6
+ }
7
+ export default SubscriptionsCommand;
@@ -0,0 +1,96 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ // istanbul ignore file
30
+ const fs_1 = require("fs");
31
+ const path_1 = require("path");
32
+ const logger_1 = require("@surgio/logger");
33
+ const base_command_1 = __importDefault(require("../base-command"));
34
+ const redis_1 = __importDefault(require("../redis"));
35
+ const provider_1 = require("../provider");
36
+ const utils_1 = require("../utils");
37
+ const logger = (0, logger_1.createLogger)({
38
+ service: 'surgio:SubscriptionsCommand',
39
+ });
40
+ class SubscriptionsCommand extends base_command_1.default {
41
+ static description = '查询订阅信息';
42
+ async run() {
43
+ const providerList = await this.listProviders();
44
+ for (const provider of providerList) {
45
+ if (provider.supportGetSubscriptionUserInfo) {
46
+ const userInfo = await provider.getSubscriptionUserInfo();
47
+ if (userInfo) {
48
+ const format = (0, utils_1.formatSubscriptionUserInfo)(userInfo);
49
+ console.log('🤟 %s 已用流量:%s 剩余流量:%s 有效期至:%s', provider.name, format.used, format.left, format.expire);
50
+ }
51
+ else {
52
+ console.log('⚠️ 无法查询 %s 的流量信息', provider.name);
53
+ }
54
+ }
55
+ else {
56
+ console.log('⚠️ 无法查询 %s 的流量信息', provider.name);
57
+ }
58
+ }
59
+ await redis_1.default.destroyRedis();
60
+ }
61
+ async listProviders() {
62
+ const files = await fs_1.promises.readdir(this.surgioConfig.providerDir, {
63
+ encoding: 'utf8',
64
+ });
65
+ const providerList = [];
66
+ async function readProvider(path) {
67
+ let provider;
68
+ try {
69
+ const providerName = (0, path_1.basename)(path, '.js');
70
+ const module = await Promise.resolve(`${path}`).then(s => __importStar(require(s)));
71
+ logger.debug('read %s %s', providerName, path);
72
+ // eslint-disable-next-line prefer-const
73
+ provider = await (0, provider_1.getProvider)(providerName, module.default);
74
+ }
75
+ catch (err) {
76
+ logger.debug(`${path} 不是一个合法的模块`);
77
+ return undefined;
78
+ }
79
+ if (!provider?.type) {
80
+ logger.debug(`${path} 不是一个 Provider`);
81
+ return undefined;
82
+ }
83
+ logger.debug('got provider %j', provider);
84
+ return provider;
85
+ }
86
+ for (const file of files) {
87
+ const result = await readProvider((0, path_1.join)(this.surgioConfig.providerDir, file));
88
+ if (result) {
89
+ providerList.push(result);
90
+ }
91
+ }
92
+ return providerList;
93
+ }
94
+ }
95
+ exports.default = SubscriptionsCommand;
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9zdWJzY3JpcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1QkFBdUI7QUFDdkIsMkJBQW9DO0FBQ3BDLCtCQUFxQztBQUNyQywyQ0FBNkM7QUFFN0MsbUVBQXlDO0FBUXpDLHFEQUE0QjtBQUM1QiwwQ0FBeUM7QUFDekMsb0NBQXFEO0FBRXJELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksRUFBQztJQUMxQixPQUFPLEVBQUUsNkJBQTZCO0NBQ3ZDLENBQUMsQ0FBQTtBQVVGLE1BQU0sb0JBQXFCLFNBQVEsc0JBQXdDO0lBQ3pFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFBO0lBRXRCLEtBQUssQ0FBQyxHQUFHO1FBQ2QsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7UUFFL0MsS0FBSyxNQUFNLFFBQVEsSUFBSSxZQUFZLEVBQUU7WUFDbkMsSUFBSSxRQUFRLENBQUMsOEJBQThCLEVBQUU7Z0JBQzNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLHVCQUF1QixFQUFFLENBQUE7Z0JBRXpELElBQUksUUFBUSxFQUFFO29CQUNaLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQTBCLEVBQUMsUUFBUSxDQUFDLENBQUE7b0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQ1QsK0JBQStCLEVBQy9CLFFBQVEsQ0FBQyxJQUFJLEVBQ2IsTUFBTSxDQUFDLElBQUksRUFDWCxNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxNQUFNLENBQ2QsQ0FBQTtpQkFDRjtxQkFBTTtvQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtpQkFDaEQ7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUNoRDtTQUNGO1FBRUQsTUFBTSxlQUFLLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDNUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sYUFBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRTtZQUM3RCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUE7UUFDRixNQUFNLFlBQVksR0FBMkIsRUFBRSxDQUFBO1FBRS9DLEtBQUssVUFBVSxZQUFZLENBQ3pCLElBQUk7WUFFSixJQUFJLFFBQVEsQ0FBQTtZQUVaLElBQUk7Z0JBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFRLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUMxQyxNQUFNLE1BQU0sR0FBRyx5QkFBYSxJQUFJLHVDQUFDLENBQUE7Z0JBRWpDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFFOUMsd0NBQXdDO2dCQUN4QyxRQUFRLEdBQUcsTUFBTSxJQUFBLHNCQUFXLEVBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUMzRDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFBO2dCQUNqQyxPQUFPLFNBQVMsQ0FBQTthQUNqQjtZQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFBO2dCQUNyQyxPQUFPLFNBQVMsQ0FBQTthQUNqQjtZQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDekMsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztRQUVELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUMvQixJQUFBLFdBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FDMUMsQ0FBQTtZQUNELElBQUksTUFBTSxFQUFFO2dCQUNWLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7YUFDMUI7U0FDRjtRQUVELE9BQU8sWUFBWSxDQUFBO0lBQ3JCLENBQUM7O0FBR0gsa0JBQWUsb0JBQW9CLENBQUEifQ==
@@ -0,0 +1,6 @@
1
+ import BaseCommand from '../base-command';
2
+ declare class UploadCommand extends BaseCommand<typeof UploadCommand> {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ }
6
+ export default UploadCommand;