surgio 2.25.3 → 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 -110
  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
@@ -1,14 +1,14 @@
1
- 'use strict';
1
+ 'use strict'
2
2
 
3
- const { basename } = require('path');
4
- const { promises: fsp } = require('fs');
5
- const _ = require('lodash');
3
+ const { basename } = require('path')
4
+ const { promises: fsp } = require('fs')
5
+ const _ = require('lodash')
6
6
 
7
- const { loadConfig } = require('../../../build/utils/config');
7
+ const internal = require('../../../build/internal')
8
8
 
9
9
  module.exports = {
10
10
  prompt: ({ prompter: inquirer }) => {
11
- const config = loadConfig(process.cwd(), './surgio.conf.js');
11
+ const config = internal.config.loadConfig(process.cwd())
12
12
 
13
13
  return inquirer.prompt([
14
14
  {
@@ -22,12 +22,12 @@ module.exports = {
22
22
  name: 'provider',
23
23
  message: 'Provider 名称',
24
24
  choices: async () => {
25
- const files = await listFolder(config.providerDir);
25
+ const files = await listFolder(config.providerDir)
26
26
 
27
27
  return _.chain(files)
28
28
  .filter((item) => item.endsWith('js'))
29
29
  .map((item) => basename(item, '.js'))
30
- .value();
30
+ .value()
31
31
  },
32
32
  },
33
33
  {
@@ -35,12 +35,12 @@ module.exports = {
35
35
  name: 'template',
36
36
  message: 'Template 名称',
37
37
  choices: async () => {
38
- const files = await listFolder(config.templateDir);
38
+ const files = await listFolder(config.templateDir)
39
39
 
40
40
  return _.chain(files)
41
41
  .filter((item) => item.endsWith('tpl'))
42
42
  .map((item) => basename(item, '.tpl'))
43
- .value();
43
+ .value()
44
44
  },
45
45
  },
46
46
  {
@@ -48,21 +48,21 @@ module.exports = {
48
48
  name: 'combineProviders',
49
49
  message: '是否合并其它 Provider(不合并直接回车跳过)',
50
50
  choices: async (results) => {
51
- const files = await listFolder(config.providerDir);
51
+ const files = await listFolder(config.providerDir)
52
52
 
53
53
  return _.chain(files)
54
54
  .filter((item) => item.endsWith('js'))
55
55
  .map((item) => basename(item, '.js'))
56
56
  .filter((item) => item !== results.provider)
57
- .value();
57
+ .value()
58
58
  },
59
59
  },
60
- ]);
60
+ ])
61
61
  },
62
- };
62
+ }
63
63
 
64
64
  function listFolder(f) {
65
65
  return fsp.readdir(f, {
66
66
  encoding: 'utf8',
67
- });
67
+ })
68
68
  }
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ 'use strict'
2
2
 
3
- const { SupportProviderEnum } = require('../../../build/types');
3
+ const { types } = require('../../../build/internal')
4
+ const { SupportProviderEnum } = types
4
5
 
5
6
  module.exports = {
6
7
  prompt: ({ prompter: inquirer }) => {
@@ -30,7 +31,7 @@ module.exports = {
30
31
  SupportProviderEnum.ShadowsocksrSubscribe,
31
32
  SupportProviderEnum.ShadowsocksSubscribe,
32
33
  SupportProviderEnum.Trojan,
33
- ].includes(results.type);
34
+ ].includes(results.type)
34
35
  },
35
36
  validate: (str) => /^https?:\/{2}/.test(str),
36
37
  },
@@ -51,7 +52,7 @@ module.exports = {
51
52
  SupportProviderEnum.ShadowsocksrSubscribe,
52
53
  SupportProviderEnum.ShadowsocksSubscribe,
53
54
  SupportProviderEnum.Trojan,
54
- ].includes(results.type);
55
+ ].includes(results.type)
55
56
  },
56
57
  },
57
58
  {
@@ -67,9 +68,9 @@ module.exports = {
67
68
  SupportProviderEnum.ShadowsocksrSubscribe,
68
69
  SupportProviderEnum.ShadowsocksSubscribe,
69
70
  SupportProviderEnum.Trojan,
70
- ].includes(results.type);
71
+ ].includes(results.type)
71
72
  },
72
73
  },
73
- ]);
74
+ ])
74
75
  },
75
- };
76
+ }
@@ -1,4 +1,4 @@
1
- 'use strict';
1
+ 'use strict'
2
2
 
3
3
  module.exports = {
4
4
  prompt: ({ prompter: inquirer }) => {
@@ -8,6 +8,6 @@ module.exports = {
8
8
  name: 'name',
9
9
  message: 'Template 名称',
10
10
  },
11
- ]);
11
+ ])
12
12
  },
13
- };
13
+ }
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './build/index'
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./build/index.js')
package/internal.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './build/internal'
package/internal.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./build/internal.js')
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "surgio",
3
3
  "description": "Generating rules for Surge, Clash, Quantumult like a PRO",
4
- "version": "2.25.3",
5
- "main": "build/index.js",
6
- "typings": "build/index.d.ts",
4
+ "version": "3.0.0-alpha.0",
5
+ "main": "./build/index.js",
6
+ "types": "./build/index.d.ts",
7
7
  "bin": {
8
- "surgio": "bin/surgio.js"
8
+ "surgio": "bin/run"
9
9
  },
10
10
  "repository": "https://github.com/geekdada/surgio",
11
11
  "author": "Yihang Li <me@royli.dev>",
@@ -13,121 +13,158 @@
13
13
  "files": [
14
14
  "bin",
15
15
  "build",
16
- "hygen-template"
16
+ "hygen-template",
17
+ "index.js",
18
+ "index.d.ts",
19
+ "internal.js",
20
+ "internal.d.ts",
21
+ "generator.js",
22
+ "generator.d.ts",
23
+ "provider.js",
24
+ "provider.d.ts",
25
+ "constant.js",
26
+ "constant.d.ts",
27
+ "utils.js",
28
+ "utils.d.ts",
29
+ "config.js",
30
+ "config.d.ts"
17
31
  ],
18
32
  "bugs": {
19
33
  "url": "https://github.com/geekdada/surgio/issues"
20
34
  },
21
35
  "homepage": "https://surgio.royli.dev",
22
36
  "scripts": {
23
- "dev": "run-s clean && tsc -p tsconfig.json --watch",
24
- "test": "run-s test:*",
37
+ "dev": "npm run build -- --watch",
38
+ "test": "run-s build test:*",
39
+ "test:types": "tsc --noEmit",
25
40
  "test:lint": "eslint -c .eslintrc.js --ext .js,.ts .",
26
- "test:unit": "run-s build && ava",
27
- "coverage": "cross-env TS_NODE_FILES=true nyc ava",
41
+ "test:unit": "ava",
42
+ "test:cli": "mocha",
43
+ "coverage": "TS_NODE_FILES=true nyc ava",
28
44
  "clean": "rimraf build",
29
- "build": "run-s clean && tsc -p tsconfig.json",
30
- "prepublishOnly": "run-s build",
45
+ "build": "tsc -p tsconfig.build.json",
46
+ "prepublishOnly": "npm run clean && npm run build",
31
47
  "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
32
- "pub": "np --no-cleanup",
33
- "version": "npm run changelog && git add .",
34
48
  "prepare": "husky install",
35
49
  "docs:dev": "vuepress dev docs",
36
50
  "docs:build": "vuepress build docs"
37
51
  },
52
+ "oclif": {
53
+ "bin": "surgio",
54
+ "dirname": "surgio",
55
+ "commands": "./build/commands",
56
+ "plugins": [
57
+ "@oclif/plugin-help",
58
+ "@oclif/plugin-plugins"
59
+ ],
60
+ "hooks": {
61
+ "init": [
62
+ "./build/hooks/init"
63
+ ],
64
+ "prerun": [],
65
+ "postrun": []
66
+ },
67
+ "topicSeparator": " ",
68
+ "topics": {}
69
+ },
38
70
  "dependencies": {
71
+ "@brillout/import": "^0.2.3",
72
+ "@oclif/core": "^2.8.5",
73
+ "@oclif/plugin-help": "^5.2.9",
74
+ "@oclif/plugin-plugins": "^2.4.7",
39
75
  "@royli/hygen": "^6.2.0",
40
- "@surgio/eslint-config-surgio": "^1.0.4",
41
- "@surgio/logger": "^1.2.0",
42
- "@types/eslint": "^7.29.0",
43
- "agentkeepalive": "^4.2.1",
76
+ "@surgio/eslint-config-surgio": "^1.0.5",
77
+ "@surgio/logger": "^1.2.1",
78
+ "@types/eslint": "^8.40.0",
79
+ "agentkeepalive": "^4.3.0",
44
80
  "ali-oss": "^6.17.1",
45
81
  "bluebird": "^3.7.2",
46
82
  "bytes": "^3.1.2",
47
83
  "chalk": "^4.1.2",
48
84
  "change-case": "^4.1.2",
49
85
  "check-node-version": "^4.2.1",
50
- "common-bin": "^2.9.2",
51
- "cross-env": "^7.0.3",
52
- "date-fns": "^2.29.3",
86
+ "date-fns": "^2.30.0",
53
87
  "detect-newline": "^3.1.0",
88
+ "dotenv": "^16.1.2",
54
89
  "emoji-regex": "^10.2.1",
55
- "env2": "^2.2.2",
56
- "eslint": "^7.32.0",
90
+ "eslint": "^8.41.0",
57
91
  "espree": "^7.3.1",
58
92
  "execa": "^4.1.0",
59
- "filesize": "^9.0.11",
60
- "fs-extra": "^9.1.0",
61
- "get-port": "^5.1.1",
62
- "global-agent": "^3.0.0",
63
- "got": "^11.8.5",
64
- "inquirer": "^7.3.3",
65
- "ioredis": "^5.2.3",
66
- "joi": "^17.6.3",
67
- "listr": "^0.14.3",
93
+ "filesize": "^10.0.7",
94
+ "fs-extra": "^11.1.1",
95
+ "got": "^11.8.6",
96
+ "hpagent": "^1.2.0",
97
+ "inquirer": "^8.2.5",
98
+ "ioredis": "^5.3.2",
68
99
  "lodash": "^4.17.21",
69
100
  "micromatch": "^4.0.5",
70
101
  "ms": "^2.1.3",
71
102
  "node-cache": "^5.1.2",
72
103
  "node-dir": "^0.1.17",
73
- "nunjucks": "^3.2.3",
104
+ "nunjucks": "^3.2.4",
74
105
  "ora": "^5.4.1",
75
- "query-string": "^7.1.1",
76
- "rimraf": "^3.0.2",
106
+ "query-string": "^7.1.3",
107
+ "rimraf": "^4.4.1",
77
108
  "source-map-support": "^0.5.21",
78
- "type-fest": "^3.1.0",
109
+ "type-fest": "^3.11.1",
79
110
  "update-notifier": "^5.1.0",
80
111
  "urlsafe-base64": "^1.0.0",
81
- "yaml": "^1.10.2"
112
+ "yaml": "^2.3.1",
113
+ "zod": "^3.21.4",
114
+ "zod-validation-error": "^1.3.0"
82
115
  },
83
116
  "devDependencies": {
84
- "@algolia/client-search": "^4.14.2",
85
- "@commitlint/cli": "^17.1.2",
86
- "@commitlint/config-angular": "^17.1.0",
117
+ "@algolia/client-search": "^4.17.1",
118
+ "@commitlint/cli": "^17.6.5",
119
+ "@commitlint/config-angular": "^17.6.5",
87
120
  "@istanbuljs/nyc-config-typescript": "^1.0.2",
88
- "@types/bluebird": "^3.5.37",
121
+ "@oclif/test": "^2.3.21",
122
+ "@types/bluebird": "^3.5.38",
89
123
  "@types/bytes": "^3.1.1",
90
- "@types/debug": "^4.1.7",
91
- "@types/fs-extra": "^9.0.13",
92
- "@types/hapi__joi": "^17.1.8",
93
- "@types/inquirer": "^7.3.3",
94
- "@types/listr": "^0.14.4",
95
- "@types/lodash": "^4.14.186",
96
- "@types/node": "^16.11.68",
97
- "@types/nunjucks": "^3.2.1",
98
- "@types/sinon": "^10.0.13",
124
+ "@types/chai": "^4.3.5",
125
+ "@types/debug": "^4.1.8",
126
+ "@types/fs-extra": "^11.0.1",
127
+ "@types/inquirer": "^8.2.6",
128
+ "@types/ioredis-mock": "^8.2.2",
129
+ "@types/lodash": "^4.14.195",
130
+ "@types/mocha": "^10.0.1",
131
+ "@types/node": "^16.18.34",
132
+ "@types/nunjucks": "^3.2.2",
133
+ "@types/sinon": "^10.0.15",
99
134
  "@types/urlsafe-base64": "^1.0.28",
100
- "@typescript-eslint/eslint-plugin": "^5.40.1",
101
- "@typescript-eslint/parser": "^5.40.1",
102
- "@vuepress/client": "2.0.0-beta.51",
103
- "@vuepress/plugin-docsearch": "2.0.0-beta.51",
104
- "@vuepress/plugin-google-analytics": "2.0.0-beta.51",
105
- "@vuepress/plugin-register-components": "2.0.0-beta.51",
106
- "@vuepress/theme-default": "2.0.0-beta.51",
107
- "@vuepress/utils": "2.0.0-beta.51",
108
- "ava": "^4.3.3",
135
+ "@typescript-eslint/eslint-plugin": "^5.59.8",
136
+ "@typescript-eslint/parser": "^5.59.8",
137
+ "@vuepress/client": "2.0.0-beta.62",
138
+ "@vuepress/plugin-docsearch": "2.0.0-beta.62",
139
+ "@vuepress/plugin-google-analytics": "2.0.0-beta.62",
140
+ "@vuepress/plugin-register-components": "2.0.0-beta.62",
141
+ "@vuepress/theme-default": "2.0.0-beta.62",
142
+ "@vuepress/utils": "2.0.0-beta.62",
143
+ "ava": "^5.3.0",
109
144
  "benchmark": "^2.1.4",
110
- "coffee": "^5.4.0",
145
+ "bumpp": "^9.1.0",
146
+ "chai": "^4.3.7",
147
+ "chai-jest-snapshot": "^2.0.0",
111
148
  "conventional-changelog-cli": "^2.2.2",
112
- "eslint-config-prettier": "^8.5.0",
149
+ "eslint-config-prettier": "^8.8.0",
113
150
  "eslint-plugin-prettier": "^4.2.1",
114
- "husky": "^8.0.1",
151
+ "husky": "^8.0.3",
115
152
  "ini": "^3.0.1",
116
- "ioredis-mock": "^8.2.2",
117
- "lint-staged": "^13.0.3",
118
- "nock": "^13.2.9",
153
+ "ioredis-mock": "^8.7.0",
154
+ "lint-staged": "^13.2.2",
155
+ "mocha": "^10.2.0",
156
+ "nock": "^13.3.1",
119
157
  "np": "^6.5.0",
120
158
  "npm-debug-log-cleaner": "^1.0.3",
121
159
  "npm-run-all": "^4.1.5",
122
160
  "nyc": "^15.1.0",
123
- "prettier": "^2.7.1",
124
- "sass": "^1.55.0",
125
- "sinon": "^14.0.1",
161
+ "prettier": "^2.8.8",
162
+ "sass": "^1.62.1",
163
+ "sinon": "^15.1.0",
126
164
  "ts-node": "^10.9.1",
127
- "typescript": "^4.8.4",
128
- "vue": "^3.2.41",
129
- "vuepress": "2.0.0-beta.51",
130
- "vuepress-plugin-sitemap2": "2.0.0-beta.110"
165
+ "typescript": "^5.0.4",
166
+ "vuepress": "2.0.0-beta.62",
167
+ "vuepress-plugin-sitemap2": "2.0.0-beta.205"
131
168
  },
132
169
  "ava": {
133
170
  "failFast": false,
@@ -137,12 +174,12 @@
137
174
  "js"
138
175
  ],
139
176
  "files": [
140
- "test/**/*.test.ts",
141
- "lib/**/*.test.ts"
177
+ "./test/**/*.test.ts",
178
+ "./src/**/*.test.ts"
142
179
  ],
143
180
  "require": [
144
181
  "ts-node/register",
145
- "./test/stub-axios.js"
182
+ "./test/helpers/stub-axios.js"
146
183
  ]
147
184
  },
148
185
  "nyc": {
@@ -154,7 +191,7 @@
154
191
  ]
155
192
  },
156
193
  "engines": {
157
- "node": ">=12.22.0"
194
+ "node": ">=16.9.0"
158
195
  },
159
196
  "lint-staged": {
160
197
  "*.js": "eslint",
package/provider.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './build/provider'
package/provider.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./build/provider')
package/utils.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './build/utils'
package/utils.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./build/utils')
package/bin/surgio.js DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- 'use strict';
4
-
5
- const SurgioCommand = require('..').SurgioCommand;
6
-
7
- const d = new SurgioCommand();
8
- d.start();
@@ -1,9 +0,0 @@
1
- import Command from 'common-bin';
2
- declare class CheckCommand extends Command {
3
- constructor(rawArgv?: string[]);
4
- run(ctx: any): Promise<void>;
5
- get description(): string;
6
- errorHandler(err: any): void;
7
- private getTasks;
8
- }
9
- export = CheckCommand;
@@ -1,79 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- // istanbul ignore file
6
- const assert_1 = __importDefault(require("assert"));
7
- const common_bin_1 = __importDefault(require("common-bin"));
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const listr_1 = __importDefault(require("listr"));
11
- const inquirer_1 = __importDefault(require("inquirer"));
12
- const redis_1 = __importDefault(require("../redis"));
13
- const command_1 = require("../utils/command");
14
- const config_1 = require("../utils/config");
15
- const provider_1 = require("../provider");
16
- const error_helper_1 = require("../utils/error-helper");
17
- class CheckCommand extends common_bin_1.default {
18
- constructor(rawArgv) {
19
- super(rawArgv);
20
- this.usage = '使用方法: surgio check [provider]';
21
- (0, command_1.defineGlobalOptions)(this.yargs);
22
- }
23
- async run(ctx) {
24
- (0, config_1.loadConfig)(ctx.cwd, ctx.argv.config);
25
- const tasks = this.getTasks();
26
- const tasksResult = await tasks.run({
27
- cmdCtx: ctx,
28
- });
29
- const { nodeList } = tasksResult;
30
- if (!process.stdin.isTTY) {
31
- console.log(JSON.stringify(nodeList, null, 2));
32
- return;
33
- }
34
- const answers = await inquirer_1.default.prompt([
35
- {
36
- type: 'list',
37
- name: 'node',
38
- message: '请选择节点',
39
- choices: nodeList.map((node) => ({
40
- name: `${node.nodeName} - ${node.hostname}:${node.port}`,
41
- value: node,
42
- })),
43
- },
44
- ]);
45
- console.log(JSON.stringify(answers.node, null, 2));
46
- await redis_1.default.destroyRedis();
47
- }
48
- get description() {
49
- return '查询 Provider';
50
- }
51
- // istanbul ignore next
52
- errorHandler(err) {
53
- error_helper_1.errorHandler.call(this, err);
54
- }
55
- getTasks() {
56
- return new listr_1.default([
57
- {
58
- title: '获取 Provider 信息',
59
- task: async (ctx) => {
60
- const { cmdCtx } = ctx;
61
- (0, assert_1.default)(cmdCtx.argv._[0], '没有指定 Provider');
62
- const providerName = cmdCtx.argv._[0];
63
- const config = (0, config_1.getConfig)();
64
- const filePath = path_1.default.resolve(config.providerDir, `./${providerName}.js`);
65
- const file = fs_1.default.existsSync(filePath)
66
- ? require(filePath)
67
- : new Error('找不到该 Provider');
68
- if (file instanceof Error) {
69
- throw file;
70
- }
71
- const provider = await (0, provider_1.getProvider)(providerName, file);
72
- ctx.nodeList = await provider.getNodeList();
73
- },
74
- },
75
- ]);
76
- }
77
- }
78
- module.exports = CheckCommand;
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvY29tbWFuZC9jaGVjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsdUJBQXVCO0FBQ3ZCLG9EQUE0QjtBQUM1Qiw0REFBOEM7QUFDOUMsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixrREFBMEI7QUFDMUIsd0RBQWdDO0FBRWhDLHFEQUE2QjtBQUU3Qiw4Q0FBdUQ7QUFDdkQsNENBQXdEO0FBQ3hELDBDQUEwQztBQUMxQyx3REFBcUQ7QUFFckQsTUFBTSxZQUFhLFNBQVEsb0JBQU87SUFDaEMsWUFBWSxPQUFrQjtRQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLCtCQUErQixDQUFDO1FBRTdDLElBQUEsNkJBQW1CLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUc7UUFDbEIsSUFBQSxtQkFBVSxFQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ2xDLE1BQU0sRUFBRSxHQUFHO1NBQ1osQ0FBQyxDQUFDO1FBQ0gsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUVqQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGtCQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3BDO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxNQUFNO2dCQUNaLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ3hELEtBQUssRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQzthQUNKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkQsTUFBTSxlQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsdUJBQXVCO0lBQ2hCLFlBQVksQ0FBQyxHQUFHO1FBQ3JCLDJCQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sUUFBUTtRQUNkLE9BQU8sSUFBSSxlQUFLLENBR2I7WUFDRDtnQkFDRSxLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNsQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDO29CQUV2QixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7b0JBRTFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFTLEdBQUUsQ0FBQztvQkFDM0IsTUFBTSxRQUFRLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FDM0IsTUFBTSxDQUFDLFdBQVcsRUFDbEIsS0FBSyxZQUFZLEtBQUssQ0FDdkIsQ0FBQztvQkFDRixNQUFNLElBQUksR0FBZ0IsWUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7d0JBQy9DLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO3dCQUNuQixDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBRS9CLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRTt3QkFDekIsTUFBTSxJQUFJLENBQUM7cUJBQ1o7b0JBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHNCQUFXLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUV2RCxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM5QyxDQUFDO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxpQkFBUyxZQUFZLENBQUMifQ==
@@ -1,8 +0,0 @@
1
- import Command from 'common-bin';
2
- declare class CleanCacheCommand extends Command {
3
- constructor(rawArgv?: string[]);
4
- get description(): string;
5
- run(ctx: any): Promise<void>;
6
- errorHandler(err: any): void;
7
- }
8
- export = CleanCacheCommand;
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- // istanbul ignore file
6
- const common_bin_1 = __importDefault(require("common-bin"));
7
- const os_1 = __importDefault(require("os"));
8
- const path_1 = __importDefault(require("path"));
9
- const fs_extra_1 = __importDefault(require("fs-extra"));
10
- const logger_1 = require("@surgio/logger");
11
- const constant_1 = require("../constant");
12
- const redis_1 = __importDefault(require("../redis"));
13
- const cache_1 = require("../utils/cache");
14
- const command_1 = require("../utils/command");
15
- const config_1 = require("../utils/config");
16
- const error_helper_1 = require("../utils/error-helper");
17
- class CleanCacheCommand extends common_bin_1.default {
18
- constructor(rawArgv) {
19
- super(rawArgv);
20
- this.usage = '使用方法: surgio clean-cache';
21
- (0, command_1.defineGlobalOptions)(this.yargs);
22
- }
23
- // istanbul ignore next
24
- get description() {
25
- return '清除缓存';
26
- }
27
- async run(ctx) {
28
- const tmpDir = path_1.default.join(os_1.default.tmpdir(), constant_1.TMP_FOLDER_NAME);
29
- (0, config_1.loadConfig)(ctx.cwd, ctx.argv.config);
30
- if (fs_extra_1.default.existsSync(tmpDir)) {
31
- await fs_extra_1.default.remove(tmpDir);
32
- }
33
- await (0, cache_1.cleanCaches)();
34
- logger_1.logger.info('清除成功');
35
- await redis_1.default.destroyRedis();
36
- }
37
- // istanbul ignore next
38
- errorHandler(err) {
39
- error_helper_1.errorHandler.call(this, err);
40
- }
41
- }
42
- module.exports = CleanCacheCommand;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4tY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvY29tbWFuZC9jbGVhbi1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsdUJBQXVCO0FBQ3ZCLDREQUFpQztBQUNqQyw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLHdEQUEwQjtBQUMxQiwyQ0FBd0M7QUFFeEMsMENBQThDO0FBQzlDLHFEQUE2QjtBQUM3QiwwQ0FBNkM7QUFDN0MsOENBQXVEO0FBQ3ZELDRDQUE2QztBQUM3Qyx3REFBcUQ7QUFFckQsTUFBTSxpQkFBa0IsU0FBUSxvQkFBTztJQUNyQyxZQUFZLE9BQWtCO1FBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQTBCLENBQUM7UUFFeEMsSUFBQSw2QkFBbUIsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixJQUFXLFdBQVc7UUFDcEIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRztRQUNsQixNQUFNLE1BQU0sR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFlBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSwwQkFBZSxDQUFDLENBQUM7UUFFdkQsSUFBQSxtQkFBVSxFQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyQyxJQUFJLGtCQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sa0JBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekI7UUFFRCxNQUFNLElBQUEsbUJBQVcsR0FBRSxDQUFDO1FBRXBCLGVBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEIsTUFBTSxlQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHVCQUF1QjtJQUNoQixZQUFZLENBQUMsR0FBRztRQUNyQiwyQkFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBRUQsaUJBQVMsaUJBQWlCLENBQUMifQ==
@@ -1,9 +0,0 @@
1
- import Command from 'common-bin';
2
- declare class DoctorCommand extends Command {
3
- constructor(rawArgv?: string[]);
4
- run(ctx: any): Promise<void>;
5
- get description(): string;
6
- errorHandler(err: any): void;
7
- static generateDoctorInfo(cwd: string): Promise<ReadonlyArray<string>>;
8
- }
9
- export = DoctorCommand;