surgio 3.19.0 → 4.0.0-beta.2

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 (443) hide show
  1. package/bin/dev +5 -9
  2. package/bin/package.json +4 -0
  3. package/bin/run +2 -5
  4. package/build/base-command.d.ts +4 -4
  5. package/build/base-command.js +22 -24
  6. package/build/base-command.js.map +1 -1
  7. package/build/cache/cloudflare.d.ts +1 -0
  8. package/build/cache/cloudflare.js +2 -0
  9. package/build/cache/cloudflare.js.map +1 -0
  10. package/build/cache/configured-store.d.ts +2 -0
  11. package/build/cache/configured-store.js +26 -0
  12. package/build/cache/configured-store.js.map +1 -0
  13. package/build/cache/core.d.ts +2 -0
  14. package/build/cache/core.js +3 -0
  15. package/build/cache/core.js.map +1 -0
  16. package/build/cache/filesystem.d.ts +1 -0
  17. package/build/cache/filesystem.js +2 -0
  18. package/build/cache/filesystem.js.map +1 -0
  19. package/build/cache/index.d.ts +6 -0
  20. package/build/cache/index.js +7 -0
  21. package/build/cache/index.js.map +1 -0
  22. package/build/cache/singleton.d.ts +3 -0
  23. package/build/cache/singleton.js +8 -0
  24. package/build/cache/singleton.js.map +1 -0
  25. package/build/cache/stores/cloudflare-kv.d.ts +33 -0
  26. package/build/cache/stores/cloudflare-kv.js +45 -0
  27. package/build/cache/stores/cloudflare-kv.js.map +1 -0
  28. package/build/cache/stores/filesystem.d.ts +15 -0
  29. package/build/cache/stores/filesystem.js +84 -0
  30. package/build/cache/stores/filesystem.js.map +1 -0
  31. package/build/cache/stores/upstash.d.ts +28 -0
  32. package/build/cache/stores/upstash.js +66 -0
  33. package/build/cache/stores/upstash.js.map +1 -0
  34. package/build/cache/stores/utils.d.ts +5 -0
  35. package/build/cache/stores/utils.js +6 -0
  36. package/build/cache/stores/utils.js.map +1 -0
  37. package/build/cache/ttl-cache.d.ts +24 -0
  38. package/build/cache/ttl-cache.js +154 -0
  39. package/build/cache/ttl-cache.js.map +1 -0
  40. package/build/cache/types.d.ts +16 -0
  41. package/build/cache/types.js +2 -0
  42. package/build/cache/types.js.map +1 -0
  43. package/build/cache/upstash.d.ts +1 -0
  44. package/build/cache/upstash.js +2 -0
  45. package/build/cache/upstash.js.map +1 -0
  46. package/build/commands/check.d.ts +2 -2
  47. package/build/commands/check.js +24 -58
  48. package/build/commands/check.js.map +1 -1
  49. package/build/commands/clean-cache.d.ts +1 -1
  50. package/build/commands/clean-cache.js +16 -21
  51. package/build/commands/clean-cache.js.map +1 -1
  52. package/build/commands/doctor.d.ts +1 -1
  53. package/build/commands/doctor.js +6 -11
  54. package/build/commands/doctor.js.map +1 -1
  55. package/build/commands/generate.d.ts +1 -1
  56. package/build/commands/generate.js +31 -33
  57. package/build/commands/generate.js.map +1 -1
  58. package/build/commands/lint.d.ts +1 -1
  59. package/build/commands/lint.js +9 -14
  60. package/build/commands/lint.js.map +1 -1
  61. package/build/commands/new.d.ts +14 -1
  62. package/build/commands/new.js +252 -25
  63. package/build/commands/new.js.map +1 -1
  64. package/build/commands/subscriptions.d.ts +1 -1
  65. package/build/commands/subscriptions.js +20 -54
  66. package/build/commands/subscriptions.js.map +1 -1
  67. package/build/commands/upload.d.ts +1 -1
  68. package/build/commands/upload.js +21 -74
  69. package/build/commands/upload.js.map +1 -1
  70. package/build/config-normalize.d.ts +102 -0
  71. package/build/config-normalize.js +39 -0
  72. package/build/config-normalize.js.map +1 -0
  73. package/build/config.d.ts +9 -2
  74. package/build/config.js +78 -113
  75. package/build/config.js.map +1 -1
  76. package/build/configurables.d.ts +3 -84
  77. package/build/configurables.js +14 -39
  78. package/build/configurables.js.map +1 -1
  79. package/build/constant/constant.d.ts +26 -26
  80. package/build/constant/constant.js +39 -32
  81. package/build/constant/constant.js.map +1 -1
  82. package/build/constant/env.js +9 -12
  83. package/build/constant/env.js.map +1 -1
  84. package/build/constant/error.js +1 -4
  85. package/build/constant/error.js.map +1 -1
  86. package/build/constant/index.d.ts +3 -3
  87. package/build/constant/index.js +3 -19
  88. package/build/constant/index.js.map +1 -1
  89. package/build/filters/classes.d.ts +1 -1
  90. package/build/filters/classes.js +5 -13
  91. package/build/filters/classes.js.map +1 -1
  92. package/build/filters/filters.d.ts +1 -1
  93. package/build/filters/filters.js +58 -85
  94. package/build/filters/filters.js.map +1 -1
  95. package/build/filters/index.d.ts +2 -2
  96. package/build/filters/index.js +2 -41
  97. package/build/filters/index.js.map +1 -1
  98. package/build/filters/utils.d.ts +1 -1
  99. package/build/filters/utils.js +35 -56
  100. package/build/filters/utils.js.map +1 -1
  101. package/build/generator/artifact.d.ts +78 -72
  102. package/build/generator/artifact.js +71 -281
  103. package/build/generator/artifact.js.map +1 -1
  104. package/build/generator/index.d.ts +4 -3
  105. package/build/generator/index.js +3 -24
  106. package/build/generator/index.js.map +1 -1
  107. package/build/generator/json-extend.d.ts +20 -0
  108. package/build/generator/json-extend.js +37 -0
  109. package/build/generator/json-extend.js.map +1 -0
  110. package/build/generator/template-filters.d.ts +6 -0
  111. package/build/generator/template-filters.js +104 -0
  112. package/build/generator/template-filters.js.map +1 -0
  113. package/build/generator/template.d.ts +8 -7
  114. package/build/generator/template.js +40 -222
  115. package/build/generator/template.js.map +1 -1
  116. package/build/hooks/init.js +3 -38
  117. package/build/hooks/init.js.map +1 -1
  118. package/build/index.d.ts +66 -65
  119. package/build/index.js +20 -68
  120. package/build/index.js.map +1 -1
  121. package/build/internal.d.ts +4 -3
  122. package/build/internal.js +6 -24
  123. package/build/internal.js.map +1 -1
  124. package/build/misc/deprecation.js +10 -13
  125. package/build/misc/deprecation.js.map +1 -1
  126. package/build/misc/flag_cn.d.ts +53 -53
  127. package/build/misc/flag_cn.js +4 -7
  128. package/build/misc/flag_cn.js.map +1 -1
  129. package/build/project/authoring.d.ts +71 -0
  130. package/build/project/authoring.js +14 -0
  131. package/build/project/authoring.js.map +1 -0
  132. package/build/project/core.d.ts +3 -0
  133. package/build/project/core.js +17 -0
  134. package/build/project/core.js.map +1 -0
  135. package/build/project/editor.d.ts +8 -0
  136. package/build/project/editor.js +243 -0
  137. package/build/project/editor.js.map +1 -0
  138. package/build/project/file.d.ts +5 -0
  139. package/build/project/file.js +20 -0
  140. package/build/project/file.js.map +1 -0
  141. package/build/project/index.d.ts +5 -0
  142. package/build/project/index.js +7 -0
  143. package/build/project/index.js.map +1 -0
  144. package/build/project/internal.d.ts +8 -0
  145. package/build/project/internal.js +9 -0
  146. package/build/project/internal.js.map +1 -0
  147. package/build/project/node.d.ts +14 -0
  148. package/build/project/node.js +51 -0
  149. package/build/project/node.js.map +1 -0
  150. package/build/project/types.d.ts +22 -0
  151. package/build/project/types.js +2 -0
  152. package/build/project/types.js.map +1 -0
  153. package/build/provider/ClashProvider.d.ts +8 -5
  154. package/build/provider/ClashProvider.js +110 -115
  155. package/build/provider/ClashProvider.js.map +1 -1
  156. package/build/provider/CustomProvider.d.ts +3 -3
  157. package/build/provider/CustomProvider.js +52 -58
  158. package/build/provider/CustomProvider.js.map +1 -1
  159. package/build/provider/Provider.d.ts +8 -6
  160. package/build/provider/Provider.js +49 -83
  161. package/build/provider/Provider.js.map +1 -1
  162. package/build/provider/ShadowsocksSubscribeProvider.d.ts +5 -4
  163. package/build/provider/ShadowsocksSubscribeProvider.js +26 -33
  164. package/build/provider/ShadowsocksSubscribeProvider.js.map +1 -1
  165. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +5 -4
  166. package/build/provider/ShadowsocksrSubscribeProvider.js +31 -40
  167. package/build/provider/ShadowsocksrSubscribeProvider.js.map +1 -1
  168. package/build/provider/TrojanProvider.d.ts +6 -7
  169. package/build/provider/TrojanProvider.js +35 -48
  170. package/build/provider/TrojanProvider.js.map +1 -1
  171. package/build/provider/V2rayNSubscribeProvider.d.ts +23 -14
  172. package/build/provider/V2rayNSubscribeProvider.js +58 -146
  173. package/build/provider/V2rayNSubscribeProvider.js.map +1 -1
  174. package/build/provider/create-provider.d.ts +4 -0
  175. package/build/provider/create-provider.js +36 -0
  176. package/build/provider/create-provider.js.map +1 -0
  177. package/build/provider/index.d.ts +16 -16
  178. package/build/provider/index.js +19 -51
  179. package/build/provider/index.js.map +1 -1
  180. package/build/provider/node-runtime.d.ts +1 -0
  181. package/build/provider/node-runtime.js +26 -0
  182. package/build/provider/node-runtime.js.map +1 -0
  183. package/build/provider/types.d.ts +11 -14
  184. package/build/provider/types.js +1 -2
  185. package/build/provider/v2rayn-subscription.d.ts +12 -0
  186. package/build/provider/v2rayn-subscription.js +782 -0
  187. package/build/provider/v2rayn-subscription.js.map +1 -0
  188. package/build/runtime/artifact.d.ts +122 -0
  189. package/build/runtime/artifact.js +232 -0
  190. package/build/runtime/artifact.js.map +1 -0
  191. package/build/runtime/dns.d.ts +3 -0
  192. package/build/runtime/dns.js +37 -0
  193. package/build/runtime/dns.js.map +1 -0
  194. package/build/runtime/format.d.ts +4 -0
  195. package/build/runtime/format.js +45 -0
  196. package/build/runtime/format.js.map +1 -0
  197. package/build/runtime/http-client.d.ts +9 -0
  198. package/build/runtime/http-client.js +49 -0
  199. package/build/runtime/http-client.js.map +1 -0
  200. package/build/runtime/index.d.ts +4 -0
  201. package/build/runtime/index.js +2 -0
  202. package/build/runtime/index.js.map +1 -0
  203. package/build/runtime/node.d.ts +8 -0
  204. package/build/runtime/node.js +181 -0
  205. package/build/runtime/node.js.map +1 -0
  206. package/build/runtime/provider-context.d.ts +3 -0
  207. package/build/runtime/provider-context.js +11 -0
  208. package/build/runtime/provider-context.js.map +1 -0
  209. package/build/runtime/public.d.ts +59 -0
  210. package/build/runtime/public.js +2 -0
  211. package/build/runtime/public.js.map +1 -0
  212. package/build/runtime/renderer.d.ts +13 -0
  213. package/build/runtime/renderer.js +38 -0
  214. package/build/runtime/renderer.js.map +1 -0
  215. package/build/runtime/ruleset.d.ts +1 -0
  216. package/build/runtime/ruleset.js +34 -0
  217. package/build/runtime/ruleset.js.map +1 -0
  218. package/build/runtime/snippet-interpreter.d.ts +6 -0
  219. package/build/runtime/snippet-interpreter.js +136 -0
  220. package/build/runtime/snippet-interpreter.js.map +1 -0
  221. package/build/runtime/subscription.d.ts +2 -0
  222. package/build/runtime/subscription.js +18 -0
  223. package/build/runtime/subscription.js.map +1 -0
  224. package/build/runtime/types.d.ts +35 -0
  225. package/build/runtime/types.js +2 -0
  226. package/build/runtime/types.js.map +1 -0
  227. package/build/runtime/user-agent.d.ts +1 -0
  228. package/build/runtime/user-agent.js +3 -0
  229. package/build/runtime/user-agent.js.map +1 -0
  230. package/build/types.d.ts +17 -33
  231. package/build/types.js +4 -10
  232. package/build/types.js.map +1 -1
  233. package/build/utils/clash.d.ts +4 -3
  234. package/build/utils/clash.js +78 -82
  235. package/build/utils/clash.js.map +1 -1
  236. package/build/utils/constant.d.ts +1 -1
  237. package/build/utils/constant.js +1 -17
  238. package/build/utils/constant.js.map +1 -1
  239. package/build/utils/dns.js +17 -35
  240. package/build/utils/dns.js.map +1 -1
  241. package/build/utils/doctor.js +12 -22
  242. package/build/utils/doctor.js.map +1 -1
  243. package/build/utils/env-flag.js +23 -38
  244. package/build/utils/env-flag.js.map +1 -1
  245. package/build/utils/error-helper.d.ts +1 -1
  246. package/build/utils/error-helper.js +28 -34
  247. package/build/utils/error-helper.js.map +1 -1
  248. package/build/utils/errors.d.ts +1 -1
  249. package/build/utils/errors.js +10 -16
  250. package/build/utils/errors.js.map +1 -1
  251. package/build/utils/flag.js +12 -21
  252. package/build/utils/flag.js.map +1 -1
  253. package/build/utils/index.d.ts +13 -78
  254. package/build/utils/index.js +53 -516
  255. package/build/utils/index.js.map +1 -1
  256. package/build/utils/linter.js +53 -24
  257. package/build/utils/linter.js.map +1 -1
  258. package/build/utils/loon.d.ts +3 -2
  259. package/build/utils/loon.js +73 -61
  260. package/build/utils/loon.js.map +1 -1
  261. package/build/utils/module-loader.d.ts +1 -0
  262. package/build/utils/module-loader.js +13 -0
  263. package/build/utils/module-loader.js.map +1 -0
  264. package/build/utils/object-storage.d.ts +16 -0
  265. package/build/utils/object-storage.js +136 -0
  266. package/build/utils/object-storage.js.map +1 -0
  267. package/build/utils/portable.d.ts +27 -0
  268. package/build/utils/portable.js +141 -0
  269. package/build/utils/portable.js.map +1 -0
  270. package/build/utils/quantumult.d.ts +4 -3
  271. package/build/utils/quantumult.js +45 -52
  272. package/build/utils/quantumult.js.map +1 -1
  273. package/build/utils/relayable-url.js +1 -4
  274. package/build/utils/relayable-url.js.map +1 -1
  275. package/build/utils/remote-snippet.d.ts +12 -2
  276. package/build/utils/remote-snippet.js +51 -188
  277. package/build/utils/remote-snippet.js.map +1 -1
  278. package/build/utils/singbox-rules.d.ts +40 -0
  279. package/build/utils/singbox-rules.js +295 -0
  280. package/build/utils/singbox-rules.js.map +1 -0
  281. package/build/utils/singbox.d.ts +5 -3
  282. package/build/utils/singbox.js +210 -149
  283. package/build/utils/singbox.js.map +1 -1
  284. package/build/utils/ss.d.ts +4 -2
  285. package/build/utils/ss.js +58 -21
  286. package/build/utils/ss.js.map +1 -1
  287. package/build/utils/ssr.d.ts +3 -2
  288. package/build/utils/ssr.js +11 -16
  289. package/build/utils/ssr.js.map +1 -1
  290. package/build/utils/subscription.d.ts +3 -2
  291. package/build/utils/subscription.js +14 -41
  292. package/build/utils/subscription.js.map +1 -1
  293. package/build/utils/surfboard.d.ts +4 -3
  294. package/build/utils/surfboard.js +34 -39
  295. package/build/utils/surfboard.js.map +1 -1
  296. package/build/utils/surge.d.ts +4 -3
  297. package/build/utils/surge.js +62 -120
  298. package/build/utils/surge.js.map +1 -1
  299. package/build/utils/time.js +1 -5
  300. package/build/utils/time.js.map +1 -1
  301. package/build/utils/useragent.js +19 -31
  302. package/build/utils/useragent.js.map +1 -1
  303. package/build/utils/v2rayn.d.ts +3 -0
  304. package/build/utils/v2rayn.js +485 -0
  305. package/build/utils/v2rayn.js.map +1 -0
  306. package/build/validators/anytls.d.ts +23 -37
  307. package/build/validators/anytls.js +14 -17
  308. package/build/validators/anytls.js.map +1 -1
  309. package/build/validators/artifact.d.ts +20 -8
  310. package/build/validators/artifact.js +21 -23
  311. package/build/validators/artifact.js.map +1 -1
  312. package/build/validators/common.d.ts +28 -56
  313. package/build/validators/common.js +54 -61
  314. package/build/validators/common.js.map +1 -1
  315. package/build/validators/filter.d.ts +2 -2
  316. package/build/validators/filter.js +3 -6
  317. package/build/validators/filter.js.map +1 -1
  318. package/build/validators/hooks.d.ts +3 -3
  319. package/build/validators/hooks.js +3 -6
  320. package/build/validators/hooks.js.map +1 -1
  321. package/build/validators/http.d.ts +42 -70
  322. package/build/validators/http.js +17 -20
  323. package/build/validators/http.js.map +1 -1
  324. package/build/validators/hysteria2.d.ts +122 -36
  325. package/build/validators/hysteria2.js +19 -14
  326. package/build/validators/hysteria2.js.map +1 -1
  327. package/build/validators/index.d.ts +21 -21
  328. package/build/validators/index.js +21 -37
  329. package/build/validators/index.js.map +1 -1
  330. package/build/validators/masque.d.ts +109 -153
  331. package/build/validators/masque.js +30 -33
  332. package/build/validators/masque.js.map +1 -1
  333. package/build/validators/provider.d.ts +49 -52
  334. package/build/validators/provider.js +30 -34
  335. package/build/validators/provider.js.map +1 -1
  336. package/build/validators/shadowsocks.d.ts +31 -45
  337. package/build/validators/shadowsocks.js +23 -26
  338. package/build/validators/shadowsocks.js.map +1 -1
  339. package/build/validators/shadowsocksr.d.ts +26 -40
  340. package/build/validators/shadowsocksr.js +14 -17
  341. package/build/validators/shadowsocksr.js.map +1 -1
  342. package/build/validators/snell.d.ts +21 -35
  343. package/build/validators/snell.js +12 -15
  344. package/build/validators/snell.js.map +1 -1
  345. package/build/validators/socks5.d.ts +21 -35
  346. package/build/validators/socks5.js +10 -13
  347. package/build/validators/socks5.js.map +1 -1
  348. package/build/validators/surgio-config.d.ts +406 -112
  349. package/build/validators/surgio-config.js +112 -79
  350. package/build/validators/surgio-config.js.map +1 -1
  351. package/build/validators/tailscale.d.ts +25 -39
  352. package/build/validators/tailscale.js +20 -23
  353. package/build/validators/tailscale.js.map +1 -1
  354. package/build/validators/trojan.d.ts +29 -43
  355. package/build/validators/trojan.js +11 -14
  356. package/build/validators/trojan.js.map +1 -1
  357. package/build/validators/trust-tunnel.d.ts +64 -86
  358. package/build/validators/trust-tunnel.js +22 -25
  359. package/build/validators/trust-tunnel.js.map +1 -1
  360. package/build/validators/tuic.d.ts +96 -140
  361. package/build/validators/tuic.js +16 -17
  362. package/build/validators/tuic.js.map +1 -1
  363. package/build/validators/vless.d.ts +70 -84
  364. package/build/validators/vless.js +41 -44
  365. package/build/validators/vless.js.map +1 -1
  366. package/build/validators/vmess.d.ts +80 -94
  367. package/build/validators/vmess.js +59 -62
  368. package/build/validators/vmess.js.map +1 -1
  369. package/build/validators/wireguard.d.ts +35 -49
  370. package/build/validators/wireguard.js +20 -23
  371. package/build/validators/wireguard.js.map +1 -1
  372. package/build/worker/build.d.ts +9 -0
  373. package/build/worker/build.js +120 -0
  374. package/build/worker/build.js.map +1 -0
  375. package/build/worker/config.d.ts +5 -0
  376. package/build/worker/config.js +18 -0
  377. package/build/worker/config.js.map +1 -0
  378. package/build/worker/index.d.ts +4 -0
  379. package/build/worker/index.js +3 -0
  380. package/build/worker/index.js.map +1 -0
  381. package/build/worker/normalize-config.d.ts +3 -0
  382. package/build/worker/normalize-config.js +12 -0
  383. package/build/worker/normalize-config.js.map +1 -0
  384. package/build/worker/precompiled-environment.d.ts +33 -0
  385. package/build/worker/precompiled-environment.js +211 -0
  386. package/build/worker/precompiled-environment.js.map +1 -0
  387. package/build/worker/runtime.d.ts +2 -0
  388. package/build/worker/runtime.js +206 -0
  389. package/build/worker/runtime.js.map +1 -0
  390. package/build/worker/template-engine.d.ts +6 -0
  391. package/build/worker/template-engine.js +22 -0
  392. package/build/worker/template-engine.js.map +1 -0
  393. package/build/worker/types.d.ts +27 -0
  394. package/build/worker/types.js +2 -0
  395. package/build/worker/types.js.map +1 -0
  396. package/package.json +177 -161
  397. package/build/generator/json-template.d.ts +0 -11
  398. package/build/generator/json-template.js +0 -74
  399. package/build/generator/json-template.js.map +0 -1
  400. package/build/provider/BlackSSLProvider.d.ts +0 -12
  401. package/build/provider/BlackSSLProvider.js +0 -103
  402. package/build/provider/BlackSSLProvider.js.map +0 -1
  403. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +0 -12
  404. package/build/provider/ShadowsocksJsonSubscribeProvider.js +0 -92
  405. package/build/provider/ShadowsocksJsonSubscribeProvider.js.map +0 -1
  406. package/build/provider/SsdProvider.d.ts +0 -40
  407. package/build/provider/SsdProvider.js +0 -150
  408. package/build/provider/SsdProvider.js.map +0 -1
  409. package/build/redis.d.ts +0 -9
  410. package/build/redis.js +0 -63
  411. package/build/redis.js.map +0 -1
  412. package/build/utils/cache.d.ts +0 -23
  413. package/build/utils/cache.js +0 -98
  414. package/build/utils/cache.js.map +0 -1
  415. package/build/utils/http-client.d.ts +0 -3
  416. package/build/utils/http-client.js +0 -60
  417. package/build/utils/http-client.js.map +0 -1
  418. package/build/utils/tmp-helper.d.ts +0 -30
  419. package/build/utils/tmp-helper.js +0 -102
  420. package/build/utils/tmp-helper.js.map +0 -1
  421. package/build/utils/trojan.d.ts +0 -2
  422. package/build/utils/trojan.js +0 -38
  423. package/build/utils/trojan.js.map +0 -1
  424. package/config.d.ts +0 -1
  425. package/config.js +0 -1
  426. package/constant.d.ts +0 -1
  427. package/constant.js +0 -1
  428. package/generator.d.ts +0 -1
  429. package/generator.js +0 -1
  430. package/hygen-template/artifact/new/index.js +0 -68
  431. package/hygen-template/artifact/new/template.ejs.t +0 -18
  432. package/hygen-template/provider/new/index.js +0 -81
  433. package/hygen-template/provider/new/template.ejs.t +0 -25
  434. package/hygen-template/template/new/index.js +0 -13
  435. package/hygen-template/template/new/template.ejs.t +0 -4
  436. package/index.d.ts +0 -1
  437. package/index.js +0 -1
  438. package/internal.d.ts +0 -1
  439. package/internal.js +0 -1
  440. package/provider.d.ts +0 -1
  441. package/provider.js +0 -1
  442. package/utils.d.ts +0 -1
  443. package/utils.js +0 -1
@@ -1,21 +1,16 @@
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 {
1
+ /* istanbul ignore file -- @preserve */
2
+ import { Flags } from '@oclif/core';
3
+ import BaseCommand from '../base-command.js';
4
+ import { check, checkAndFix } from '../utils/linter.js';
5
+ class LintCommand extends BaseCommand {
11
6
  static description = '运行 JS 语法检查';
12
7
  async run() {
13
8
  let result;
14
9
  if (this.flags.fix) {
15
- result = await (0, linter_1.checkAndFix)(this.projectDir);
10
+ result = await checkAndFix(this.projectDir);
16
11
  }
17
12
  else {
18
- result = await (0, linter_1.check)(this.projectDir);
13
+ result = await check(this.projectDir);
19
14
  }
20
15
  if (!result) {
21
16
  console.warn('⚠️ JS 语法检查不通过,请根据提示修改文件(可添加参数 --fix 自动修复部分错误, 参考 https://url.royli.dev/SeB6m)');
@@ -28,10 +23,10 @@ class LintCommand extends base_command_1.default {
28
23
  }
29
24
  }
30
25
  LintCommand.flags = {
31
- fix: core_1.Flags.boolean({
26
+ fix: Flags.boolean({
32
27
  default: false,
33
28
  description: '自动修复部分 Lint 错误',
34
29
  }),
35
30
  };
36
- exports.default = LintCommand;
31
+ export default LintCommand;
37
32
  //# sourceMappingURL=lint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":";;;;;AAAA,uBAAuB;AACvB,sCAAmC;AAEnC,mEAAyC;AACzC,4CAAoD;AAEpD,MAAM,WAAY,SAAQ,sBAA+B;IACvD,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IAE1B,KAAK,CAAC,GAAG;QACd,IAAI,MAAM,CAAA;QAEV,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,GAAG,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,IAAA,cAAK,EAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACV,gFAAgF,CACjF,CAAA;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC7B,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;;AAGH,WAAW,CAAC,KAAK,GAAG;IAClB,GAAG,EAAE,YAAK,CAAC,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,gBAAgB;KAC9B,CAAC;CACH,CAAA;AAED,kBAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,WAAY,SAAQ,WAA+B;IACvD,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IAE1B,KAAK,CAAC,GAAG;QACd,IAAI,MAAM,CAAA;QAEV,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACV,gFAAgF,CACjF,CAAA;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC7B,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;CACF;AAED,WAAW,CAAC,KAAK,GAAG;IAClB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;QACjB,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,gBAAgB;KAC9B,CAAC;CACH,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -1,4 +1,17 @@
1
- import BaseCommand from '../base-command';
1
+ import inquirer from 'inquirer';
2
+ import BaseCommand from '../base-command.js';
3
+ import type { SurgioProjectDefinition } from '../project/types.js';
4
+ type Prompt = typeof inquirer.prompt;
5
+ export interface NewGeneratorContext {
6
+ project: SurgioProjectDefinition;
7
+ projectDir: string;
8
+ projectFile: string;
9
+ prompt: Prompt;
10
+ }
11
+ export declare const resolveNewTemplatePath: (templateDir: string, input: string) => string;
12
+ export declare const createProvider: (context: NewGeneratorContext) => Promise<string>;
13
+ export declare const createArtifact: (context: NewGeneratorContext) => Promise<string>;
14
+ export declare const createTemplate: (context: NewGeneratorContext) => Promise<string>;
2
15
  declare class NewCommand extends BaseCommand<typeof NewCommand> {
3
16
  static description: string;
4
17
  run(): Promise<void>;
@@ -1,37 +1,264 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
1
+ import path from 'node:path';
2
+ import { Args } from '@oclif/core';
3
+ import fs from 'fs-extra';
4
+ import inquirer from 'inquirer';
5
+ import BaseCommand from '../base-command.js';
6
+ import { addArtifactToProjectSource, addProviderToProjectSource, updateSurgioProjectFile, } from '../project/editor.js';
7
+ import { resolveSurgioProjectFile } from '../project/file.js';
8
+ import { SupportProviderEnum, } from '../types.js';
9
+ const nonEmpty = (value) => value.trim().length > 0 || '请输入非空名称';
10
+ const httpUrl = (value) => {
11
+ try {
12
+ const url = new URL(value);
13
+ return ['http:', 'https:'].includes(url.protocol)
14
+ ? true
15
+ : '请输入 HTTP 或 HTTPS URL';
16
+ }
17
+ catch {
18
+ return '请输入有效的 HTTP 或 HTTPS URL';
19
+ }
20
+ };
21
+ const isRemoteProvider = (type) => type !== SupportProviderEnum.Custom;
22
+ const listTemplateFiles = async (directory, root = directory) => {
23
+ if (!(await fs.pathExists(directory)))
24
+ return [];
25
+ const entries = await fs.readdir(directory, { withFileTypes: true });
26
+ const files = await Promise.all(entries.map(async (entry) => {
27
+ const filename = path.join(directory, entry.name);
28
+ if (entry.isDirectory())
29
+ return listTemplateFiles(filename, root);
30
+ if (!entry.isFile() ||
31
+ !['.json', '.tpl'].includes(path.extname(entry.name))) {
32
+ return [];
33
+ }
34
+ return [path.relative(root, filename).split(path.sep).join('/')];
35
+ }));
36
+ return files.flat().sort((left, right) => left.localeCompare(right));
37
+ };
38
+ export const resolveNewTemplatePath = (templateDir, input) => {
39
+ const name = input.trim();
40
+ if (name.length === 0 ||
41
+ name.includes('\0') ||
42
+ path.isAbsolute(name) ||
43
+ path.win32.isAbsolute(name)) {
44
+ throw new Error('模板名称必须是 templateDir 下的安全相对路径');
45
+ }
46
+ const normalized = name.replaceAll('\\', '/');
47
+ const segments = normalized.split('/');
48
+ if (segments.some((segment) => segment === '..' || segment === '')) {
49
+ throw new Error('模板名称不能包含空目录或 .. 路径穿越');
50
+ }
51
+ const relativeName = normalized.endsWith('.tpl')
52
+ ? normalized
53
+ : `${normalized}.tpl`;
54
+ const root = path.resolve(templateDir);
55
+ const filename = path.resolve(root, ...relativeName.split('/'));
56
+ if (filename !== root && !filename.startsWith(`${root}${path.sep}`)) {
57
+ throw new Error('模板路径超出 templateDir');
58
+ }
59
+ return filename;
60
+ };
61
+ export const createProvider = async (context) => {
62
+ const answers = await context.prompt([
63
+ {
64
+ choices: Object.values(SupportProviderEnum),
65
+ message: 'Provider 类型',
66
+ name: 'type',
67
+ type: 'select',
68
+ },
69
+ {
70
+ message: 'Provider 名称',
71
+ name: 'name',
72
+ required: true,
73
+ type: 'input',
74
+ validate: nonEmpty,
75
+ },
76
+ {
77
+ message: '订阅 URL',
78
+ name: 'url',
79
+ required: true,
80
+ type: 'input',
81
+ validate: httpUrl,
82
+ when: (current) => current.type !== undefined && isRemoteProvider(current.type),
83
+ },
84
+ {
85
+ default: true,
86
+ message: '自动添加国旗标识',
87
+ name: 'addFlag',
88
+ type: 'confirm',
89
+ when: (current) => current.type !== undefined && isRemoteProvider(current.type),
90
+ },
91
+ {
92
+ default: false,
93
+ message: '启用 UDP Relay',
94
+ name: 'udpRelay',
95
+ type: 'confirm',
96
+ when: (current) => current.type !== undefined && isRemoteProvider(current.type),
97
+ },
98
+ {
99
+ default: false,
100
+ message: '配置 Relay URL',
101
+ name: 'enableRelay',
102
+ type: 'confirm',
103
+ when: (current) => current.type !== undefined && isRemoteProvider(current.type),
104
+ },
105
+ {
106
+ message: 'Relay URL',
107
+ name: 'relayUrl',
108
+ required: true,
109
+ type: 'input',
110
+ validate: httpUrl,
111
+ when: (current) => current.enableRelay === true,
112
+ },
113
+ ]);
114
+ const name = answers.name.trim();
115
+ if (Object.hasOwn(context.project.providers, name)) {
116
+ throw new Error(`Provider ${name} 已存在,Project 未被修改`);
117
+ }
118
+ if (isRemoteProvider(answers.type)) {
119
+ const urlValidation = httpUrl(answers.url ?? '');
120
+ if (urlValidation !== true)
121
+ throw new Error(urlValidation);
122
+ if (answers.enableRelay) {
123
+ const relayValidation = httpUrl(answers.relayUrl ?? '');
124
+ if (relayValidation !== true)
125
+ throw new Error(relayValidation);
126
+ }
127
+ }
128
+ const definition = answers.type === SupportProviderEnum.Custom
129
+ ? {
130
+ nodeList: [],
131
+ type: SupportProviderEnum.Custom,
132
+ }
133
+ : {
134
+ ...(answers.addFlag ? { addFlag: true } : {}),
135
+ ...(answers.enableRelay ? { relayUrl: answers.relayUrl } : {}),
136
+ type: answers.type,
137
+ ...(answers.udpRelay ? { udpRelay: true } : {}),
138
+ url: answers.url,
139
+ };
140
+ await updateSurgioProjectFile(context.projectFile, (source) => addProviderToProjectSource(source, name, definition));
141
+ return `Provider ${name} 已添加到 ${path.basename(context.projectFile)}`;
142
+ };
143
+ export const createArtifact = async (context) => {
144
+ const providerNames = Object.keys(context.project.providers).sort((left, right) => left.localeCompare(right));
145
+ if (providerNames.length === 0) {
146
+ throw new Error('Project 中没有可用的 Provider,请先运行 surgio new provider');
147
+ }
148
+ const templateDir = path.resolve(context.projectDir, context.project.templateDir ?? 'template');
149
+ const templates = await listTemplateFiles(templateDir);
150
+ if (templates.length === 0) {
151
+ throw new Error(`templateDir 中没有 .tpl 或 .json 模板:${templateDir}`);
152
+ }
153
+ const answers = await context.prompt([
154
+ {
155
+ message: 'Artifact 名称',
156
+ name: 'name',
157
+ required: true,
158
+ type: 'input',
159
+ validate: nonEmpty,
160
+ },
161
+ {
162
+ choices: providerNames,
163
+ message: '主 Provider',
164
+ name: 'provider',
165
+ type: 'select',
166
+ },
167
+ {
168
+ choices: templates,
169
+ message: '模板',
170
+ name: 'template',
171
+ type: 'select',
172
+ },
173
+ {
174
+ choices: (current) => providerNames.filter((name) => name !== current.provider),
175
+ message: '额外合并的 Provider',
176
+ name: 'combineProviders',
177
+ type: 'checkbox',
178
+ },
179
+ ]);
180
+ const name = answers.name.trim();
181
+ if (context.project.artifacts.some((artifact) => artifact.name === name)) {
182
+ throw new Error(`Artifact ${name} 已存在,Project 未被修改`);
183
+ }
184
+ const extension = path.extname(answers.template);
185
+ const artifact = {
186
+ ...(answers.combineProviders.length > 0
187
+ ? { combineProviders: answers.combineProviders }
188
+ : {}),
189
+ name,
190
+ provider: answers.provider,
191
+ template: answers.template.slice(0, -extension.length),
192
+ ...(extension === '.json' ? { templateType: 'json' } : {}),
193
+ };
194
+ await updateSurgioProjectFile(context.projectFile, (source) => addArtifactToProjectSource(source, artifact));
195
+ return `Artifact ${name} 已添加到 ${path.basename(context.projectFile)}`;
196
+ };
197
+ export const createTemplate = async (context) => {
198
+ const answers = await context.prompt([
199
+ {
200
+ message: '模板名称(可包含相对子目录)',
201
+ name: 'name',
202
+ required: true,
203
+ type: 'input',
204
+ validate: nonEmpty,
205
+ },
206
+ ]);
207
+ const templateDir = path.resolve(context.projectDir, context.project.templateDir ?? 'template');
208
+ const filename = resolveNewTemplatePath(templateDir, answers.name);
209
+ await fs.ensureDir(templateDir);
210
+ await fs.ensureDir(path.dirname(filename));
211
+ const [realTemplateDir, realParentDir] = await Promise.all([
212
+ fs.realpath(templateDir),
213
+ fs.realpath(path.dirname(filename)),
214
+ ]);
215
+ if (realParentDir !== realTemplateDir &&
216
+ !realParentDir.startsWith(`${realTemplateDir}${path.sep}`)) {
217
+ throw new Error('模板路径通过符号链接超出 templateDir');
218
+ }
219
+ try {
220
+ await fs.writeFile(filename, '', { flag: 'wx' });
221
+ }
222
+ catch (error) {
223
+ if (error.code === 'EEXIST') {
224
+ throw new Error(`模板已存在,不会覆盖:${filename}`, { cause: error });
225
+ }
226
+ throw error;
227
+ }
228
+ return `模板已创建:${path.relative(context.projectDir, filename)}`;
4
229
  };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- // istanbul ignore file
7
- const path_1 = require("path");
8
- const core_1 = require("@oclif/core");
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 = '新建文件助手';
230
+ class NewCommand extends BaseCommand {
231
+ static description = '新建文件助手(仅支持 Surgio Project)';
14
232
  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: async (action, body) => {
22
- const opts = body && body.length > 0 ? { input: body } : {};
23
- await require('execa')(action, opts);
24
- },
25
- });
233
+ if (this.surgioProject.source !== 'project' ||
234
+ !this.surgioProject.definition) {
235
+ throw new Error('`surgio new` 仅支持 v4 surgio.project.*;请先将 legacy surgio.conf.js 项目迁移为 Surgio Project');
236
+ }
237
+ const projectFile = resolveSurgioProjectFile(this.projectDir);
238
+ if (!projectFile) {
239
+ throw new Error('无法定位 surgio.project.ts、.mts、.mjs 或 .js');
240
+ }
241
+ const context = {
242
+ project: this.surgioProject.definition,
243
+ projectDir: this.projectDir,
244
+ projectFile,
245
+ prompt: inquirer.prompt,
246
+ };
247
+ const result = this.args.type === 'provider'
248
+ ? await createProvider(context)
249
+ : this.args.type === 'artifact'
250
+ ? await createArtifact(context)
251
+ : await createTemplate(context);
252
+ this.log(result);
26
253
  await this.cleanup();
27
254
  }
28
255
  }
29
256
  NewCommand.args = {
30
- type: core_1.Args.custom({
257
+ type: Args.custom({
31
258
  description: '文件类型',
32
259
  required: true,
33
260
  options: ['provider', 'template', 'artifact'],
34
261
  })(),
35
262
  };
36
- exports.default = NewCommand;
263
+ export default NewCommand;
37
264
  //# sourceMappingURL=new.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":";;;;;AAAA,uBAAuB;AACvB,+BAA2B;AAC3B,sCAAkC;AAClC,wCAA6C;AAE7C,mEAAyC;AACzC,MAAM,gBAAgB,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA;AAEhE,MAAM,UAAW,SAAQ,sBAA8B;IACrD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;IAEtB,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,iBAAiB;QAErE,MAAM,IAAA,cAAM,EAAC,IAAI,EAAE;YACjB,SAAS,EAAE,gBAAgB;YAC3B,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,MAAM,EAAE,IAAI,cAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;YACzC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC3D,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACtC,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;;AAGH,UAAU,CAAC,IAAI,GAAG;IAChB,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;KAC9C,CAAC,EAAE;CACL,CAAA;AAED,kBAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import BaseCommand from '../base-command';
1
+ import BaseCommand from '../base-command.js';
2
2
  declare class SubscriptionsCommand extends BaseCommand<typeof SubscriptionsCommand> {
3
3
  static description: string;
4
4
  run(): Promise<void>;
@@ -1,59 +1,22 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- // istanbul ignore file
40
- const fs_1 = require("fs");
41
- const path_1 = require("path");
42
- const logger_1 = require("@surgio/logger");
43
- const base_command_1 = __importDefault(require("../base-command"));
44
- const provider_1 = require("../provider");
45
- const utils_1 = require("../utils");
46
- const logger = (0, logger_1.createLogger)({
1
+ /* istanbul ignore file -- @preserve */
2
+ import { promises as fsp } from 'fs';
3
+ import { basename, join } from 'path';
4
+ import { createLogger } from '@surgio/logger';
5
+ import BaseCommand from '../base-command.js';
6
+ import { getProvider } from '../provider/index.js';
7
+ import { formatSubscriptionUserInfo } from '../utils/index.js';
8
+ import { loadModuleSync } from '../utils/module-loader.js';
9
+ const logger = createLogger({
47
10
  service: 'surgio:SubscriptionsCommand',
48
11
  });
49
- class SubscriptionsCommand extends base_command_1.default {
12
+ class SubscriptionsCommand extends BaseCommand {
50
13
  static description = '查询订阅信息';
51
14
  async run() {
52
15
  const providerList = await this.listProviders();
53
16
  for (const provider of providerList) {
54
17
  const { subscriptionUserInfo } = await provider.getNodeListV2();
55
18
  if (subscriptionUserInfo) {
56
- const format = (0, utils_1.formatSubscriptionUserInfo)(subscriptionUserInfo);
19
+ const format = formatSubscriptionUserInfo(subscriptionUserInfo);
57
20
  console.log('🤟 %s 已用流量:%s 剩余流量:%s 有效期至:%s', provider.name, format.used, format.left, format.expire);
58
21
  }
59
22
  else {
@@ -63,17 +26,20 @@ class SubscriptionsCommand extends base_command_1.default {
63
26
  await this.cleanup();
64
27
  }
65
28
  async listProviders() {
66
- const files = await fs_1.promises.readdir(this.surgioConfig.providerDir, {
29
+ if (this.surgioProject.providers) {
30
+ return Promise.all(Object.entries(this.surgioProject.providers).map(([name, definition]) => getProvider(name, definition)));
31
+ }
32
+ const files = await fsp.readdir(this.surgioConfig.providerDir, {
67
33
  encoding: 'utf8',
68
34
  });
69
35
  const providerList = [];
70
36
  async function readProvider(path) {
71
37
  let provider;
72
38
  try {
73
- const providerName = (0, path_1.basename)(path, '.js');
74
- const module = await Promise.resolve(`${path}`).then(s => __importStar(require(s)));
39
+ const providerName = basename(path, '.js');
40
+ const providerConfig = loadModuleSync(path);
75
41
  logger.debug('read %s %s', providerName, path);
76
- provider = await (0, provider_1.getProvider)(providerName, module.default);
42
+ provider = await getProvider(providerName, providerConfig);
77
43
  }
78
44
  catch {
79
45
  logger.debug(`${path} 不是一个合法的模块`);
@@ -87,7 +53,7 @@ class SubscriptionsCommand extends base_command_1.default {
87
53
  return provider;
88
54
  }
89
55
  for (const file of files) {
90
- const result = await readProvider((0, path_1.join)(this.surgioConfig.providerDir, file));
56
+ const result = await readProvider(join(this.surgioConfig.providerDir, file));
91
57
  if (result) {
92
58
  providerList.push(result);
93
59
  }
@@ -95,5 +61,5 @@ class SubscriptionsCommand extends base_command_1.default {
95
61
  return providerList;
96
62
  }
97
63
  }
98
- exports.default = SubscriptionsCommand;
64
+ export default SubscriptionsCommand;
99
65
  //# sourceMappingURL=subscriptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../src/commands/subscriptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAuB;AACvB,2BAAoC;AACpC,+BAAqC;AACrC,2CAA6C;AAE7C,mEAAyC;AACzC,0CAA+D;AAC/D,oCAAqD;AAErD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC;IAC1B,OAAO,EAAE,6BAA6B;CACvC,CAAC,CAAA;AAEF,MAAM,oBAAqB,SAAQ,sBAAwC;IACzE,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;IAEtB,KAAK,CAAC,GAAG;QACd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE/C,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAA;YAE/D,IAAI,oBAAoB,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,IAAA,kCAA0B,EAAC,oBAAoB,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CACT,+BAA+B,EAC/B,QAAQ,CAAC,IAAI,EACb,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,CACd,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,KAAK,GAAG,MAAM,aAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC7D,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAA;QACF,MAAM,YAAY,GAA2B,EAAE,CAAA;QAE/C,KAAK,UAAU,YAAY,CACzB,IAAY;YAEZ,IAAI,QAAQ,CAAA;YAEZ,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,IAAA,eAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBAC1C,MAAM,MAAM,GAAG,yBAAa,IAAI,uCAAC,CAAA;gBAEjC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;gBAE9C,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,CAAA;gBACjC,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAA;gBACrC,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;YACzC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,IAAA,WAAI,EAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAC1C,CAAA;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;;AAGH,kBAAe,oBAAoB,CAAA"}
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../src/commands/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import BaseCommand from '../base-command';
1
+ import BaseCommand from '../base-command.js';
2
2
  declare class UploadCommand extends BaseCommand<typeof UploadCommand> {
3
3
  static description: string;
4
4
  run(): Promise<void>;
@@ -1,91 +1,38 @@
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 path_1 = __importDefault(require("path"));
8
- const core_1 = require("@oclif/core");
9
- const ali_oss_1 = __importDefault(require("ali-oss"));
10
- const fs_extra_1 = __importDefault(require("fs-extra"));
11
- const node_dir_1 = __importDefault(require("node-dir"));
12
- const base_command_1 = __importDefault(require("../base-command"));
13
- const config_1 = require("../config");
14
- class UploadCommand extends base_command_1.default {
15
- static description = '上传规则到阿里云 OSS';
1
+ /* istanbul ignore file -- @preserve */
2
+ import path from 'path';
3
+ import { Flags } from '@oclif/core';
4
+ import { Client } from 'minio';
5
+ import dir from 'node-dir';
6
+ import BaseCommand from '../base-command.js';
7
+ import { setConfig } from '../config.js';
8
+ import { resolveStorageBackend, synchronizeStorage, } from '../utils/object-storage.js';
9
+ class UploadCommand extends BaseCommand {
10
+ static description = '上传规则到对象存储';
16
11
  async run() {
17
12
  const config = this.surgioConfig;
18
13
  if (this.flags.output) {
19
- (0, config_1.setConfig)('output', this.flags.output);
14
+ setConfig('output', this.flags.output);
20
15
  }
21
- const region = config?.upload?.region;
22
- const bucket = config?.upload?.bucket;
23
- const endpoint = config?.upload?.endpoint;
24
- const accessKeyId = process.env.OSS_ACCESS_KEY_ID ?? config?.upload?.accessKeyId;
25
- const accessKeySecret = process.env.OSS_ACCESS_KEY_SECRET ?? config?.upload?.accessKeySecret;
26
- if (!accessKeyId || !accessKeySecret) {
27
- throw new Error('请在配置文件中配置 OSS 的 accessKeyId 和 accessKeySecret');
16
+ if (!config.upload) {
17
+ throw new Error('请在配置文件中配置 upload');
28
18
  }
29
- const client = new ali_oss_1.default({
30
- secure: true,
31
- region,
32
- bucket,
33
- endpoint,
34
- accessKeyId,
35
- accessKeySecret,
36
- });
37
- const prefix = config?.upload?.prefix || '/';
38
- const fileList = await node_dir_1.default.promiseFiles(config.output);
19
+ const backend = resolveStorageBackend(config.upload);
20
+ const client = new Client(backend.clientOptions);
21
+ const fileList = await dir.promiseFiles(config.output);
39
22
  const files = fileList.map((filePath) => ({
40
- fileName: path_1.default.basename(filePath),
23
+ fileName: path.basename(filePath),
41
24
  filePath,
42
25
  }));
43
- const fileNameList = files.map((file) => file.fileName);
44
- const upload = () => {
45
- return Promise.all(files.map((file) => {
46
- const { fileName, filePath } = file;
47
- const objectName = `${prefix}${fileName}`;
48
- const readStream = fs_extra_1.default.createReadStream(filePath);
49
- return client.put(objectName, readStream, {
50
- mime: 'text/plain; charset=utf-8',
51
- headers: {
52
- 'Cache-Control': 'private, no-cache, no-store',
53
- },
54
- });
55
- }));
56
- };
57
- const deleteUnwanted = async () => {
58
- const list = await client.list({
59
- prefix,
60
- delimiter: '/',
61
- 'max-keys': 100,
62
- }, {});
63
- const deleteList = [];
64
- for (const key in list.objects) {
65
- if (Object.hasOwn(list.objects, key)) {
66
- const object = list.objects[key];
67
- const objectName = object.name.replace(prefix, '');
68
- const isExist = fileNameList.indexOf(objectName) > -1;
69
- if (objectName && !isExist) {
70
- deleteList.push(object.name);
71
- }
72
- }
73
- }
74
- if (deleteList.length) {
75
- await client.deleteMulti(deleteList);
76
- }
77
- };
78
- this.ora.start('开始上传到阿里云 OSS');
79
- await upload();
80
- await deleteUnwanted();
26
+ this.ora.start('开始上传到对象存储');
27
+ await synchronizeStorage(client, backend, files);
81
28
  await this.cleanup();
82
29
  }
83
30
  }
84
31
  UploadCommand.flags = {
85
- output: core_1.Flags.string({
32
+ output: Flags.string({
86
33
  char: 'o',
87
34
  description: '生成规则的目录',
88
35
  }),
89
36
  };
90
- exports.default = UploadCommand;
37
+ export default UploadCommand;
91
38
  //# sourceMappingURL=upload.js.map