tunli 0.0.27 → 0.2.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 (388) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +158 -67
  3. package/bin/tunli +4 -5
  4. package/dist/api-client/ApiClient.d.ts +18 -0
  5. package/dist/api-client/ApiClient.d.ts.map +1 -0
  6. package/dist/api-client/ApiClient.js +100 -0
  7. package/dist/api-client/ApiClient.js.map +1 -0
  8. package/dist/api-client/types.d.ts +26 -0
  9. package/dist/api-client/types.d.ts.map +1 -0
  10. package/dist/api-client/types.js +2 -0
  11. package/dist/api-client/types.js.map +1 -0
  12. package/dist/api-client/utils.d.ts +4 -0
  13. package/dist/api-client/utils.d.ts.map +1 -0
  14. package/dist/api-client/utils.js +13 -0
  15. package/dist/api-client/utils.js.map +1 -0
  16. package/dist/cli-app/AppEventEmitter.d.ts +57 -0
  17. package/dist/cli-app/AppEventEmitter.d.ts.map +1 -0
  18. package/dist/cli-app/AppEventEmitter.js +11 -0
  19. package/dist/cli-app/AppEventEmitter.js.map +1 -0
  20. package/dist/cli-app/Dashboard.d.ts +4 -0
  21. package/dist/cli-app/Dashboard.d.ts.map +1 -0
  22. package/dist/cli-app/Dashboard.js +241 -0
  23. package/dist/cli-app/Dashboard.js.map +1 -0
  24. package/dist/cli-app/LiveLog.d.ts +4 -0
  25. package/dist/cli-app/LiveLog.d.ts.map +1 -0
  26. package/dist/cli-app/LiveLog.js +28 -0
  27. package/dist/cli-app/LiveLog.js.map +1 -0
  28. package/dist/cli-app/types.d.ts +10 -0
  29. package/dist/cli-app/types.d.ts.map +1 -0
  30. package/dist/cli-app/types.js +2 -0
  31. package/dist/cli-app/types.js.map +1 -0
  32. package/dist/cli-app/versionCheck.d.ts +4 -0
  33. package/dist/cli-app/versionCheck.d.ts.map +1 -0
  34. package/dist/cli-app/versionCheck.js +46 -0
  35. package/dist/cli-app/versionCheck.js.map +1 -0
  36. package/dist/client.d.ts +2 -0
  37. package/dist/client.d.ts.map +1 -0
  38. package/dist/client.js +75 -0
  39. package/dist/client.js.map +1 -0
  40. package/dist/commander/Argument.d.ts +19 -0
  41. package/dist/commander/Argument.d.ts.map +1 -0
  42. package/dist/commander/Argument.js +25 -0
  43. package/dist/commander/Argument.js.map +1 -0
  44. package/dist/commander/Command.d.ts +23 -0
  45. package/dist/commander/Command.d.ts.map +1 -0
  46. package/dist/commander/Command.js +159 -0
  47. package/dist/commander/Command.js.map +1 -0
  48. package/dist/commander/InvalidArgumentError.d.ts +5 -0
  49. package/dist/commander/InvalidArgumentError.d.ts.map +1 -0
  50. package/dist/commander/InvalidArgumentError.js +8 -0
  51. package/dist/commander/InvalidArgumentError.js.map +1 -0
  52. package/dist/commander/Option.d.ts +15 -0
  53. package/dist/commander/Option.d.ts.map +1 -0
  54. package/dist/commander/Option.js +43 -0
  55. package/dist/commander/Option.js.map +1 -0
  56. package/dist/commander/index.d.ts +7 -0
  57. package/dist/commander/index.d.ts.map +1 -0
  58. package/dist/commander/index.js +5 -0
  59. package/dist/commander/index.js.map +1 -0
  60. package/dist/commander/types.d.ts +2 -0
  61. package/dist/commander/types.d.ts.map +1 -0
  62. package/dist/commander/types.js +2 -0
  63. package/dist/commander/types.js.map +1 -0
  64. package/dist/commands/CommandAuth/CommandAuth.d.ts +4 -0
  65. package/dist/commands/CommandAuth/CommandAuth.d.ts.map +1 -0
  66. package/dist/commands/CommandAuth/CommandAuth.js +24 -0
  67. package/dist/commands/CommandAuth/CommandAuth.js.map +1 -0
  68. package/dist/commands/CommandConfig/CommandConfig.d.ts +4 -0
  69. package/dist/commands/CommandConfig/CommandConfig.d.ts.map +1 -0
  70. package/dist/commands/CommandConfig/CommandConfig.js +37 -0
  71. package/dist/commands/CommandConfig/CommandConfig.js.map +1 -0
  72. package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.d.ts +4 -0
  73. package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.d.ts.map +1 -0
  74. package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.js +20 -0
  75. package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.js.map +1 -0
  76. package/dist/commands/CommandConfig/sub-commands/configGetCommand.d.ts +5 -0
  77. package/dist/commands/CommandConfig/sub-commands/configGetCommand.d.ts.map +1 -0
  78. package/dist/commands/CommandConfig/sub-commands/configGetCommand.js +23 -0
  79. package/dist/commands/CommandConfig/sub-commands/configGetCommand.js.map +1 -0
  80. package/dist/commands/CommandConfig/sub-commands/configSetCommand.d.ts +4 -0
  81. package/dist/commands/CommandConfig/sub-commands/configSetCommand.d.ts.map +1 -0
  82. package/dist/commands/CommandConfig/sub-commands/configSetCommand.js +69 -0
  83. package/dist/commands/CommandConfig/sub-commands/configSetCommand.js.map +1 -0
  84. package/dist/commands/CommandConfig/types.d.ts +6 -0
  85. package/dist/commands/CommandConfig/types.d.ts.map +1 -0
  86. package/dist/commands/CommandConfig/types.js +2 -0
  87. package/dist/commands/CommandConfig/types.js.map +1 -0
  88. package/dist/commands/CommandConfig/utils/preparePrimaryOptions.d.ts +3 -0
  89. package/dist/commands/CommandConfig/utils/preparePrimaryOptions.d.ts.map +1 -0
  90. package/dist/commands/CommandConfig/utils/preparePrimaryOptions.js +8 -0
  91. package/dist/commands/CommandConfig/utils/preparePrimaryOptions.js.map +1 -0
  92. package/dist/commands/CommandConfig/utils/resolveConfig.d.ts +8 -0
  93. package/dist/commands/CommandConfig/utils/resolveConfig.d.ts.map +1 -0
  94. package/dist/commands/CommandConfig/utils/resolveConfig.js +33 -0
  95. package/dist/commands/CommandConfig/utils/resolveConfig.js.map +1 -0
  96. package/dist/commands/CommandConfig/utils/sharedOptions.d.ts +3 -0
  97. package/dist/commands/CommandConfig/utils/sharedOptions.d.ts.map +1 -0
  98. package/dist/commands/CommandConfig/utils/sharedOptions.js +14 -0
  99. package/dist/commands/CommandConfig/utils/sharedOptions.js.map +1 -0
  100. package/dist/commands/CommandDaemon/CommandDaemon.d.ts +4 -0
  101. package/dist/commands/CommandDaemon/CommandDaemon.d.ts.map +1 -0
  102. package/dist/commands/CommandDaemon/CommandDaemon.js +57 -0
  103. package/dist/commands/CommandDaemon/CommandDaemon.js.map +1 -0
  104. package/dist/commands/CommandDashboard/CommandDashboard.d.ts +4 -0
  105. package/dist/commands/CommandDashboard/CommandDashboard.d.ts.map +1 -0
  106. package/dist/commands/CommandDashboard/CommandDashboard.js +54 -0
  107. package/dist/commands/CommandDashboard/CommandDashboard.js.map +1 -0
  108. package/dist/commands/CommandHTTP/CommandHttp.d.ts +4 -0
  109. package/dist/commands/CommandHTTP/CommandHttp.d.ts.map +1 -0
  110. package/dist/commands/CommandHTTP/CommandHttp.js +50 -0
  111. package/dist/commands/CommandHTTP/CommandHttp.js.map +1 -0
  112. package/dist/commands/CommandInit/CommandInit.d.ts +4 -0
  113. package/dist/commands/CommandInit/CommandInit.d.ts.map +1 -0
  114. package/dist/commands/CommandInit/CommandInit.js +36 -0
  115. package/dist/commands/CommandInit/CommandInit.js.map +1 -0
  116. package/dist/commands/CommandList/CommandList.d.ts +4 -0
  117. package/dist/commands/CommandList/CommandList.d.ts.map +1 -0
  118. package/dist/commands/CommandList/CommandList.js +54 -0
  119. package/dist/commands/CommandList/CommandList.js.map +1 -0
  120. package/dist/commands/CommandLogs/CommandLogs.d.ts +4 -0
  121. package/dist/commands/CommandLogs/CommandLogs.d.ts.map +1 -0
  122. package/dist/commands/CommandLogs/CommandLogs.js +33 -0
  123. package/dist/commands/CommandLogs/CommandLogs.js.map +1 -0
  124. package/dist/commands/CommandProfile/CommandProfile.d.ts +5 -0
  125. package/dist/commands/CommandProfile/CommandProfile.d.ts.map +1 -0
  126. package/dist/commands/CommandProfile/CommandProfile.js +64 -0
  127. package/dist/commands/CommandProfile/CommandProfile.js.map +1 -0
  128. package/dist/commands/CommandRegister/CommandRegister.d.ts +4 -0
  129. package/dist/commands/CommandRegister/CommandRegister.d.ts.map +1 -0
  130. package/dist/commands/CommandRegister/CommandRegister.js +43 -0
  131. package/dist/commands/CommandRegister/CommandRegister.js.map +1 -0
  132. package/dist/commands/CommandRestart/CommandRestart.d.ts +4 -0
  133. package/dist/commands/CommandRestart/CommandRestart.d.ts.map +1 -0
  134. package/dist/commands/CommandRestart/CommandRestart.js +62 -0
  135. package/dist/commands/CommandRestart/CommandRestart.js.map +1 -0
  136. package/dist/commands/CommandServer/CommandServer.d.ts +4 -0
  137. package/dist/commands/CommandServer/CommandServer.d.ts.map +1 -0
  138. package/dist/commands/CommandServer/CommandServer.js +24 -0
  139. package/dist/commands/CommandServer/CommandServer.js.map +1 -0
  140. package/dist/commands/CommandStop/CommandStop.d.ts +4 -0
  141. package/dist/commands/CommandStop/CommandStop.d.ts.map +1 -0
  142. package/dist/commands/CommandStop/CommandStop.js +25 -0
  143. package/dist/commands/CommandStop/CommandStop.js.map +1 -0
  144. package/dist/commands/CommandUpdate/CommandUpdate.d.ts +4 -0
  145. package/dist/commands/CommandUpdate/CommandUpdate.d.ts.map +1 -0
  146. package/dist/commands/CommandUpdate/CommandUpdate.js +38 -0
  147. package/dist/commands/CommandUpdate/CommandUpdate.js.map +1 -0
  148. package/dist/commands/CommandUseProfile/CommandUseProfile.d.ts +4 -0
  149. package/dist/commands/CommandUseProfile/CommandUseProfile.d.ts.map +1 -0
  150. package/dist/commands/CommandUseProfile/CommandUseProfile.js +63 -0
  151. package/dist/commands/CommandUseProfile/CommandUseProfile.js.map +1 -0
  152. package/dist/commands/helper/Help.d.ts +4 -0
  153. package/dist/commands/helper/Help.d.ts.map +1 -0
  154. package/dist/commands/helper/Help.js +134 -0
  155. package/dist/commands/helper/Help.js.map +1 -0
  156. package/dist/commands/helper/Parser.d.ts +55 -0
  157. package/dist/commands/helper/Parser.d.ts.map +1 -0
  158. package/dist/commands/helper/Parser.js +280 -0
  159. package/dist/commands/helper/Parser.js.map +1 -0
  160. package/dist/commands/shared/allowDenyCidrCommand.d.ts +3 -0
  161. package/dist/commands/shared/allowDenyCidrCommand.d.ts.map +1 -0
  162. package/dist/commands/shared/allowDenyCidrCommand.js +10 -0
  163. package/dist/commands/shared/allowDenyCidrCommand.js.map +1 -0
  164. package/dist/commands/shared/configServersCommand.d.ts +4 -0
  165. package/dist/commands/shared/configServersCommand.d.ts.map +1 -0
  166. package/dist/commands/shared/configServersCommand.js +19 -0
  167. package/dist/commands/shared/configServersCommand.js.map +1 -0
  168. package/dist/commands/utils.d.ts +3 -0
  169. package/dist/commands/utils.d.ts.map +1 -0
  170. package/dist/commands/utils.js +17 -0
  171. package/dist/commands/utils.js.map +1 -0
  172. package/dist/config/ParsedConfig.d.ts +31 -0
  173. package/dist/config/ParsedConfig.d.ts.map +1 -0
  174. package/dist/config/ParsedConfig.js +116 -0
  175. package/dist/config/ParsedConfig.js.map +1 -0
  176. package/dist/config/ParsedGlobalConfig.d.ts +5 -0
  177. package/dist/config/ParsedGlobalConfig.d.ts.map +1 -0
  178. package/dist/config/ParsedGlobalConfig.js +7 -0
  179. package/dist/config/ParsedGlobalConfig.js.map +1 -0
  180. package/dist/config/ParsedLocalConfig.d.ts +5 -0
  181. package/dist/config/ParsedLocalConfig.d.ts.map +1 -0
  182. package/dist/config/ParsedLocalConfig.js +7 -0
  183. package/dist/config/ParsedLocalConfig.js.map +1 -0
  184. package/dist/config/ParsedProfileConfig.d.ts +46 -0
  185. package/dist/config/ParsedProfileConfig.d.ts.map +1 -0
  186. package/dist/config/ParsedProfileConfig.js +120 -0
  187. package/dist/config/ParsedProfileConfig.js.map +1 -0
  188. package/dist/config/ParsedServerConfig.d.ts +20 -0
  189. package/dist/config/ParsedServerConfig.d.ts.map +1 -0
  190. package/dist/config/ParsedServerConfig.js +55 -0
  191. package/dist/config/ParsedServerConfig.js.map +1 -0
  192. package/dist/config/TempProfileConfig.d.ts +8 -0
  193. package/dist/config/TempProfileConfig.d.ts.map +1 -0
  194. package/dist/config/TempProfileConfig.js +13 -0
  195. package/dist/config/TempProfileConfig.js.map +1 -0
  196. package/dist/config/utils.d.ts +2 -0
  197. package/dist/config/utils.d.ts.map +1 -0
  198. package/dist/config/utils.js +8 -0
  199. package/dist/config/utils.js.map +1 -0
  200. package/dist/config/validations/validateProfileConfig.d.ts +4 -0
  201. package/dist/config/validations/validateProfileConfig.d.ts.map +1 -0
  202. package/dist/config/validations/validateProfileConfig.js +76 -0
  203. package/dist/config/validations/validateProfileConfig.js.map +1 -0
  204. package/dist/core/FS/utils.d.ts +12 -0
  205. package/dist/core/FS/utils.d.ts.map +1 -0
  206. package/dist/core/FS/utils.js +55 -0
  207. package/dist/core/FS/utils.js.map +1 -0
  208. package/dist/daemon/DaemonClient.d.ts +16 -0
  209. package/dist/daemon/DaemonClient.d.ts.map +1 -0
  210. package/dist/daemon/DaemonClient.js +158 -0
  211. package/dist/daemon/DaemonClient.js.map +1 -0
  212. package/dist/daemon/DaemonServer.d.ts +8 -0
  213. package/dist/daemon/DaemonServer.d.ts.map +1 -0
  214. package/dist/daemon/DaemonServer.js +201 -0
  215. package/dist/daemon/DaemonServer.js.map +1 -0
  216. package/dist/daemon/protocol.d.ts +101 -0
  217. package/dist/daemon/protocol.d.ts.map +1 -0
  218. package/dist/daemon/protocol.js +2 -0
  219. package/dist/daemon/protocol.js.map +1 -0
  220. package/dist/daemon-main.d.ts +2 -0
  221. package/dist/daemon-main.d.ts.map +1 -0
  222. package/dist/daemon-main.js +13 -0
  223. package/dist/daemon-main.js.map +1 -0
  224. package/dist/launcher-main.d.ts +2 -0
  225. package/dist/launcher-main.d.ts.map +1 -0
  226. package/dist/launcher-main.js +57 -0
  227. package/dist/launcher-main.js.map +1 -0
  228. package/dist/lib/Flow/applyUpdate.d.ts +3 -0
  229. package/dist/lib/Flow/applyUpdate.d.ts.map +1 -0
  230. package/dist/lib/Flow/applyUpdate.js +34 -0
  231. package/dist/lib/Flow/applyUpdate.js.map +1 -0
  232. package/dist/lib/Flow/downloadBinaryUpdate.d.ts +3 -0
  233. package/dist/lib/Flow/downloadBinaryUpdate.d.ts.map +1 -0
  234. package/dist/lib/Flow/downloadBinaryUpdate.js +54 -0
  235. package/dist/lib/Flow/downloadBinaryUpdate.js.map +1 -0
  236. package/dist/lib/Flow/getLatestVersion.d.ts +2 -0
  237. package/dist/lib/Flow/getLatestVersion.d.ts.map +1 -0
  238. package/dist/lib/Flow/getLatestVersion.js +13 -0
  239. package/dist/lib/Flow/getLatestVersion.js.map +1 -0
  240. package/dist/lib/defs.d.ts +18 -0
  241. package/dist/lib/defs.d.ts.map +1 -0
  242. package/dist/lib/defs.js +33 -0
  243. package/dist/lib/defs.js.map +1 -0
  244. package/dist/logger/logger.d.ts +6 -0
  245. package/dist/logger/logger.d.ts.map +1 -0
  246. package/dist/logger/logger.js +34 -0
  247. package/dist/logger/logger.js.map +1 -0
  248. package/dist/output-formats/colors.d.ts +7 -0
  249. package/dist/output-formats/colors.d.ts.map +1 -0
  250. package/dist/output-formats/colors.js +8 -0
  251. package/dist/output-formats/colors.js.map +1 -0
  252. package/dist/output-formats/formatConfig.d.ts +3 -0
  253. package/dist/output-formats/formatConfig.d.ts.map +1 -0
  254. package/dist/output-formats/formatConfig.js +59 -0
  255. package/dist/output-formats/formatConfig.js.map +1 -0
  256. package/dist/output-formats/formatConfigPath.d.ts +4 -0
  257. package/dist/output-formats/formatConfigPath.d.ts.map +1 -0
  258. package/dist/output-formats/formatConfigPath.js +7 -0
  259. package/dist/output-formats/formatConfigPath.js.map +1 -0
  260. package/dist/output-formats/formatPath.d.ts +2 -0
  261. package/dist/output-formats/formatPath.d.ts.map +1 -0
  262. package/dist/output-formats/formatPath.js +6 -0
  263. package/dist/output-formats/formatPath.js.map +1 -0
  264. package/dist/output-formats/formatProfile.d.ts +3 -0
  265. package/dist/output-formats/formatProfile.d.ts.map +1 -0
  266. package/dist/output-formats/formatProfile.js +35 -0
  267. package/dist/output-formats/formatProfile.js.map +1 -0
  268. package/dist/output-formats/formatProfilesShort.d.ts +3 -0
  269. package/dist/output-formats/formatProfilesShort.d.ts.map +1 -0
  270. package/dist/output-formats/formatProfilesShort.js +19 -0
  271. package/dist/output-formats/formatProfilesShort.js.map +1 -0
  272. package/dist/output-formats/formatSaveResult.d.ts +4 -0
  273. package/dist/output-formats/formatSaveResult.d.ts.map +1 -0
  274. package/dist/output-formats/formatSaveResult.js +7 -0
  275. package/dist/output-formats/formatSaveResult.js.map +1 -0
  276. package/dist/output-formats/table.d.ts +8 -0
  277. package/dist/output-formats/table.d.ts.map +1 -0
  278. package/dist/output-formats/table.js +15 -0
  279. package/dist/output-formats/table.js.map +1 -0
  280. package/dist/package-json/packageJson.d.ts +6 -0
  281. package/dist/package-json/packageJson.d.ts.map +1 -0
  282. package/dist/package-json/packageJson.js +12 -0
  283. package/dist/package-json/packageJson.js.map +1 -0
  284. package/dist/proxy/Proxy.d.ts +6 -0
  285. package/dist/proxy/Proxy.d.ts.map +1 -0
  286. package/dist/proxy/Proxy.js +203 -0
  287. package/dist/proxy/Proxy.js.map +1 -0
  288. package/dist/sea-main.d.ts +2 -0
  289. package/dist/sea-main.d.ts.map +1 -0
  290. package/dist/sea-main.js +20 -0
  291. package/dist/sea-main.js.map +1 -0
  292. package/dist/types/types.d.ts +55 -0
  293. package/dist/types/types.d.ts.map +1 -0
  294. package/dist/types/types.js +2 -0
  295. package/dist/types/types.js.map +1 -0
  296. package/dist/utils/arrayFunctions.d.ts +24 -0
  297. package/dist/utils/arrayFunctions.d.ts.map +1 -0
  298. package/dist/utils/arrayFunctions.js +43 -0
  299. package/dist/utils/arrayFunctions.js.map +1 -0
  300. package/dist/utils/assertFunctions.d.ts +7 -0
  301. package/dist/utils/assertFunctions.d.ts.map +1 -0
  302. package/dist/utils/assertFunctions.js +20 -0
  303. package/dist/utils/assertFunctions.js.map +1 -0
  304. package/dist/utils/checkFunctions.d.ts +34 -0
  305. package/dist/utils/checkFunctions.d.ts.map +1 -0
  306. package/dist/utils/checkFunctions.js +87 -0
  307. package/dist/utils/checkFunctions.js.map +1 -0
  308. package/dist/utils/cliFunctions.d.ts +10 -0
  309. package/dist/utils/cliFunctions.d.ts.map +1 -0
  310. package/dist/utils/cliFunctions.js +68 -0
  311. package/dist/utils/cliFunctions.js.map +1 -0
  312. package/dist/utils/hashFunctions.d.ts +10 -0
  313. package/dist/utils/hashFunctions.d.ts.map +1 -0
  314. package/dist/utils/hashFunctions.js +11 -0
  315. package/dist/utils/hashFunctions.js.map +1 -0
  316. package/dist/utils/npmFunctions.d.ts +3 -0
  317. package/dist/utils/npmFunctions.d.ts.map +1 -0
  318. package/dist/utils/npmFunctions.js +28 -0
  319. package/dist/utils/npmFunctions.js.map +1 -0
  320. package/dist/utils/stringFunctions.d.ts +12 -0
  321. package/dist/utils/stringFunctions.d.ts.map +1 -0
  322. package/dist/utils/stringFunctions.js +37 -0
  323. package/dist/utils/stringFunctions.js.map +1 -0
  324. package/package.json +39 -16
  325. package/client.js +0 -33
  326. package/src/cli-app/Dashboard.js +0 -220
  327. package/src/cli-app/Screen/FullScreenModal.js +0 -63
  328. package/src/cli-app/Screen.js +0 -140
  329. package/src/cli-app/elements/ElementNode.js +0 -97
  330. package/src/cli-app/elements/Line.js +0 -21
  331. package/src/cli-app/elements/List/List.js +0 -227
  332. package/src/cli-app/elements/List/ListCell.js +0 -83
  333. package/src/cli-app/elements/List/ListColumn.js +0 -52
  334. package/src/cli-app/elements/List/ListRow.js +0 -118
  335. package/src/cli-app/elements/Row.js +0 -38
  336. package/src/cli-app/helper/utils.js +0 -42
  337. package/src/commands/Action/addDelValuesAction.js +0 -56
  338. package/src/commands/CommandAuth.js +0 -32
  339. package/src/commands/CommandClearAll.js +0 -27
  340. package/src/commands/CommandConfig.js +0 -59
  341. package/src/commands/CommandHTTP.js +0 -192
  342. package/src/commands/CommandInvite.js +0 -38
  343. package/src/commands/CommandRefresh.js +0 -35
  344. package/src/commands/CommandRegister.js +0 -48
  345. package/src/commands/Option/DeleteOption.js +0 -6
  346. package/src/commands/Option/ProfileListOption.js +0 -65
  347. package/src/commands/Option/SelectConfigOption.js +0 -52
  348. package/src/commands/SubCommand/AllowDenyCidrCommand.js +0 -28
  349. package/src/commands/SubCommand/HostCommand.js +0 -22
  350. package/src/commands/SubCommand/PortCommand.js +0 -20
  351. package/src/commands/SubCommand/ProtocolCommand.js +0 -21
  352. package/src/commands/helper/AliasResolver.js +0 -13
  353. package/src/commands/helper/BindArgs.js +0 -53
  354. package/src/commands/helper/SharedArg.js +0 -32
  355. package/src/commands/utils.js +0 -96
  356. package/src/config/ConfigAbstract.js +0 -353
  357. package/src/config/ConfigManager.js +0 -70
  358. package/src/config/GlobalConfig.js +0 -14
  359. package/src/config/GlobalLocalShardConfigAbstract.js +0 -98
  360. package/src/config/LocalConfig.js +0 -7
  361. package/src/config/PropertyConfig.js +0 -122
  362. package/src/config/SystemConfig.js +0 -31
  363. package/src/core/FS/utils.js +0 -60
  364. package/src/core/Ref.js +0 -70
  365. package/src/lib/Flow/getCurrentIp.js +0 -18
  366. package/src/lib/Flow/getLatestVersion.js +0 -13
  367. package/src/lib/Flow/proxyUrl.js +0 -35
  368. package/src/lib/Flow/validateAuthToken.js +0 -19
  369. package/src/lib/HttpClient.js +0 -61
  370. package/src/lib/Proxy.js +0 -42
  371. package/src/lib/defs.js +0 -13
  372. package/src/net/IPV4.js +0 -139
  373. package/src/net/http/IncomingMessage.js +0 -92
  374. package/src/net/http/ServerResponse.js +0 -126
  375. package/src/net/http/TunliRequest.js +0 -1
  376. package/src/net/http/TunliResponse.js +0 -1
  377. package/src/net/http/TunnelRequest.js +0 -229
  378. package/src/net/http/TunnelResponse.js +0 -119
  379. package/src/tunnel-client/TunnelClient.js +0 -144
  380. package/src/utils/arrayFunctions.js +0 -45
  381. package/src/utils/checkFunctions.js +0 -182
  382. package/src/utils/cliFunctions.js +0 -63
  383. package/src/utils/createRequest.js +0 -12
  384. package/src/utils/hashFunctions.js +0 -9
  385. package/src/utils/httpFunction.js +0 -23
  386. package/src/utils/npmFunctions.js +0 -27
  387. package/src/utils/stringFunctions.js +0 -59
  388. package/types/index.d.ts +0 -119
@@ -0,0 +1,241 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { Box, render, Text, useApp, useInput, useStdout } from 'ink';
4
+ import chalk from 'chalk';
5
+ import QRCode from 'qrcode';
6
+ import { readPackageJson } from '#package-json/packageJson';
7
+ import { setCursorVisibility } from '#utils/cliFunctions';
8
+ import { getAvailableUpdate, performUpdate } from '#cli-app/versionCheck';
9
+ import { CHECK_FOR_UPDATES } from "#lib/defs";
10
+ const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*m/g, '');
11
+ const SPINNER_CHARS = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
12
+ const Spinner = ({ spinning }) => {
13
+ const [index, setIndex] = useState(0);
14
+ useEffect(() => {
15
+ if (!spinning)
16
+ return;
17
+ const id = setInterval(() => setIndex(i => (i + 1) % SPINNER_CHARS.length), 100);
18
+ return () => clearInterval(id);
19
+ }, [spinning]);
20
+ return _jsx(Text, { children: spinning ? (SPINNER_CHARS[index] ?? ' ') : ' ' });
21
+ };
22
+ const InfoRow = ({ label, value }) => (_jsxs(Box, { children: [_jsx(Box, { minWidth: 30, children: _jsx(Text, { children: label }) }), _jsx(Text, { children: value })] }));
23
+ const QRModal = ({ text, onClose }) => {
24
+ const { stdout } = useStdout();
25
+ useInput((input, key) => {
26
+ if (key.escape || input === 'q')
27
+ onClose();
28
+ });
29
+ return (_jsx(Box, { width: "100%", height: stdout.rows, flexDirection: "column", alignItems: "center", justifyContent: "center", children: _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", padding: 1, children: [_jsx(Text, { dimColor: true, children: "Press q or Escape to close" }), _jsx(Text, { children: text })] }) }));
30
+ };
31
+ const DetailModal = ({ entry, onClose }) => {
32
+ const { stdout } = useStdout();
33
+ useInput((input, key) => {
34
+ if (key.escape || input === 'q')
35
+ onClose();
36
+ });
37
+ const reqHeaders = Object.entries(entry.req.headers);
38
+ const resHeaders = Object.entries(entry.res.headers);
39
+ return (_jsx(Box, { width: "100%", height: stdout.rows, flexDirection: "column", alignItems: "center", justifyContent: "center", children: _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: Math.min(stdout.columns - 4, 100), children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { bold: true, children: [entry.method, " ", entry.path] }), _jsx(Text, { dimColor: true, children: "q / Esc to close" })] }), _jsxs(Box, { marginTop: 1, gap: 4, children: [_jsx(Text, { children: entry.status }), entry.runtime ? _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Duration " }), _jsx(Text, { children: entry.runtime })] }) : null, _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Time " }), _jsx(Text, { children: new Date(entry.id).toLocaleTimeString() })] })] }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Request Headers" }), _jsx(Text, { children: '─'.repeat(40) }), reqHeaders.length === 0
40
+ ? _jsx(Text, { dimColor: true, children: "\u2014" })
41
+ : reqHeaders.map(([k, v]) => (_jsxs(Box, { children: [_jsx(Box, { minWidth: 30, children: _jsx(Text, { color: "cyan", children: k }) }), _jsx(Text, { children: String(v) })] }, k))), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Response Headers" }), _jsx(Text, { children: '─'.repeat(40) }), resHeaders.length === 0
42
+ ? _jsx(Text, { dimColor: true, children: "\u2014" })
43
+ : resHeaders.map(([k, v]) => (_jsxs(Box, { children: [_jsx(Box, { minWidth: 30, children: _jsx(Text, { color: "cyan", children: k }) }), _jsx(Text, { children: String(v) })] }, k)))] }) }));
44
+ };
45
+ const DashboardApp = ({ config, appEventEmitter }) => {
46
+ const { exit } = useApp();
47
+ const { stdout } = useStdout();
48
+ const packageJson = readPackageJson();
49
+ const [spinning, setSpinning] = useState(true);
50
+ const [connectionStatus, setConnectionStatus] = useState(chalk.yellow('offline'));
51
+ const [availableUpdate, setAvailableUpdate] = useState('');
52
+ const [latestVersion, setLatestVersion] = useState(null);
53
+ const [updatingPackage, setUpdatingPackage] = useState(false);
54
+ const [requestCount, setRequestCount] = useState(0);
55
+ const [blockedCount, setBlockedCount] = useState(0);
56
+ const [lastBlockedIp, setLastBlockedIp] = useState('');
57
+ const [accessLog, setAccessLog] = useState([]);
58
+ const [qrText, setQrText] = useState(null);
59
+ const [latency, setLatency] = useState(null);
60
+ const [paused, setPaused] = useState(false);
61
+ const [cursorIndex, setCursorIndex] = useState(null);
62
+ const [detailEntry, setDetailEntry] = useState(null);
63
+ const runtimeStack = useRef(new Map());
64
+ const pendingLog = useRef([]);
65
+ const accessLogRef = useRef([]);
66
+ const pausedRef = useRef(false);
67
+ const forwardingUrl = `${config.proxy.proxyURL} -> http://${config.target.host}:${config.target.port}/`;
68
+ useEffect(() => {
69
+ if (!CHECK_FOR_UPDATES)
70
+ return;
71
+ if (!packageJson)
72
+ return;
73
+ void getAvailableUpdate(packageJson.version).then(version => {
74
+ if (version) {
75
+ setLatestVersion(version);
76
+ setAvailableUpdate(chalk.yellow(`update available (version ${version}, Ctrl-U to update)`));
77
+ }
78
+ });
79
+ }, []);
80
+ useEffect(() => {
81
+ appEventEmitter
82
+ .on('connect', () => {
83
+ setSpinning(false);
84
+ setConnectionStatus(chalk.bold(chalk.green('online')));
85
+ })
86
+ .on('disconnect', () => {
87
+ setSpinning(true);
88
+ setConnectionStatus(chalk.bold(chalk.red('offline')));
89
+ })
90
+ .on('connect_error', (e) => {
91
+ setSpinning(true);
92
+ setConnectionStatus(`${chalk.bold(chalk.red('error'))} - ${e.message}`);
93
+ })
94
+ .on('request', (req) => {
95
+ runtimeStack.current.set(req.requestId, Date.now());
96
+ })
97
+ .on('response', (req, res) => {
98
+ const now = Date.now();
99
+ const startTime = runtimeStack.current.get(req.requestId);
100
+ runtimeStack.current.delete(req.requestId);
101
+ const runtimeMs = startTime !== undefined ? now - startTime : undefined;
102
+ let rspMsg = `${res.statusCode} ${res.statusMessage}`;
103
+ if (res.statusCode >= 500)
104
+ rspMsg = chalk.red(rspMsg);
105
+ else if (res.statusCode >= 400)
106
+ rspMsg = chalk.blueBright(rspMsg);
107
+ else
108
+ rspMsg = chalk.green(rspMsg);
109
+ rspMsg = chalk.bold(rspMsg);
110
+ let runtime;
111
+ if (runtimeMs !== undefined) {
112
+ const label = `${runtimeMs}ms`;
113
+ runtime = runtimeMs < 100 ? chalk.green(label)
114
+ : runtimeMs < 500 ? chalk.yellow(label)
115
+ : chalk.red(label);
116
+ }
117
+ const entry = { method: req.method, path: req.path, status: rspMsg, runtime, id: now, req, res };
118
+ setRequestCount(c => c + 1);
119
+ if (pausedRef.current) {
120
+ pendingLog.current.push(entry);
121
+ }
122
+ else {
123
+ setAccessLog(log => {
124
+ const next = [...log, entry].slice(-30);
125
+ accessLogRef.current = next;
126
+ return next;
127
+ });
128
+ }
129
+ })
130
+ .on('client-blocked', (ip) => {
131
+ setBlockedCount(c => c + 1);
132
+ setLastBlockedIp(ip);
133
+ })
134
+ .on('latency', (ms) => setLatency(ms))
135
+ .on('request-count', (count) => setRequestCount(count));
136
+ }, []);
137
+ // Ctrl+C always active
138
+ useInput((input, key) => {
139
+ if (key.ctrl && input === 'c') {
140
+ exit();
141
+ process.exit(0);
142
+ }
143
+ });
144
+ // Main key handler — inactive when any modal is open
145
+ useInput((input, key) => {
146
+ if (key.ctrl && input === 'r') {
147
+ setAvailableUpdate(chalk.yellow('Restarting...'));
148
+ process.send?.('restart');
149
+ }
150
+ if (key.ctrl && input === 'q') {
151
+ QRCode.toString(config.proxy.proxyURL, { type: 'terminal' }, (err, url) => {
152
+ if (!err)
153
+ setQrText(url);
154
+ });
155
+ }
156
+ if (key.ctrl && input === 'p') {
157
+ const next = !pausedRef.current;
158
+ pausedRef.current = next;
159
+ setPaused(next);
160
+ if (!next) {
161
+ // unpause: flush buffered entries
162
+ setAccessLog(log => {
163
+ const flushed = [...log, ...pendingLog.current].slice(-30);
164
+ accessLogRef.current = flushed;
165
+ pendingLog.current = [];
166
+ return flushed;
167
+ });
168
+ }
169
+ }
170
+ if (key.ctrl && input === 'u' && latestVersion && !updatingPackage && packageJson) {
171
+ setUpdatingPackage(true);
172
+ setAvailableUpdate(chalk.yellow('Updating...'));
173
+ void performUpdate(packageJson.name, (result) => {
174
+ if (result.status === 'progress') {
175
+ setAvailableUpdate(chalk.yellow(result.message));
176
+ return;
177
+ }
178
+ setUpdatingPackage(false);
179
+ if (result.status === 'success') {
180
+ setAvailableUpdate(chalk.green('Update done. Please restart tunli. (Ctrl+R to restart)'));
181
+ }
182
+ else {
183
+ setAvailableUpdate(chalk.red(`Update failed: ${result.reason}`));
184
+ }
185
+ });
186
+ }
187
+ // cursor navigation
188
+ if (key.upArrow) {
189
+ setCursorIndex(i => {
190
+ if (i === null)
191
+ return 0;
192
+ return Math.max(0, i - 1);
193
+ });
194
+ }
195
+ if (key.downArrow) {
196
+ setCursorIndex(i => {
197
+ const max = accessLogRef.current.length - 1;
198
+ if (i === null)
199
+ return 0;
200
+ return Math.min(max, i + 1);
201
+ });
202
+ }
203
+ if (key.escape) {
204
+ setCursorIndex(null);
205
+ }
206
+ if (key.return && cursorIndex !== null) {
207
+ const displayed = [...accessLogRef.current].reverse();
208
+ const entry = displayed[cursorIndex];
209
+ if (entry)
210
+ setDetailEntry(entry);
211
+ }
212
+ }, { isActive: qrText === null && detailEntry === null });
213
+ const allowedCidr = config.allowedCidr.length ? config.allowedCidr : null;
214
+ const deniedCidr = config.deniedCidr.length ? config.deniedCidr : null;
215
+ if (qrText !== null) {
216
+ return _jsx(QRModal, { text: qrText, onClose: () => setQrText(null) });
217
+ }
218
+ if (detailEntry !== null) {
219
+ return _jsx(DetailModal, { entry: detailEntry, onClose: () => setDetailEntry(null) });
220
+ }
221
+ const displayedLog = [...accessLog].reverse();
222
+ const pathColWidth = Math.max(40, ...accessLog.map(e => e.path.length + 3));
223
+ const statusColWidth = Math.max(20, ...accessLog.map(e => stripAnsi(e.status).length + 3));
224
+ return (_jsxs(Box, { flexDirection: "column", height: stdout.rows, children: [_jsxs(Box, { width: "100%", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { children: "tunli " }), _jsx(Spinner, { spinning: spinning })] }), _jsx(Text, { children: "(Ctrl+C to quit)" })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(InfoRow, { label: "Tunnel", value: connectionStatus }), packageJson ? _jsx(InfoRow, { label: "Version", value: packageJson.version }) : null, availableUpdate ? _jsx(InfoRow, { label: chalk.yellow('Update'), value: availableUpdate }) : null, _jsx(InfoRow, { label: "Profile", value: config.profileName }), _jsx(InfoRow, { label: "Config", value: config.filepath }), _jsx(InfoRow, { label: "QR-Code", value: "Ctrl-Q" }), (allowedCidr ?? deniedCidr) ? _jsx(Text, { children: " " }) : null, allowedCidr ? _jsx(InfoRow, { label: "Allowed", value: allowedCidr.join(', ') }) : null, deniedCidr ? _jsx(InfoRow, { label: "Denied", value: deniedCidr.join(', ') }) : null, (allowedCidr ?? deniedCidr) ? (_jsx(InfoRow, { label: "Blocked", value: `${blockedCount}${lastBlockedIp ? ` (${lastBlockedIp})` : ''}` })) : null, _jsx(Text, { children: " " }), _jsx(InfoRow, { label: "Latency", value: latency !== null ? `${latency}ms` : '—' }), _jsx(InfoRow, { label: "Forwarding", value: forwardingUrl }), _jsx(InfoRow, { label: "Connections", value: String(requestCount) })] }), _jsx(Text, { children: " " }), _jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { children: ["HTTP Requests", cursorIndex !== null ? chalk.dim(' ↑↓ navigate · Enter detail · Esc exit') : chalk.dim(' ↑↓ navigate · Ctrl+P pause')] }), paused ? _jsxs(Text, { children: [chalk.yellow('PAUSED'), " ", pendingLog.current.length > 0 ? chalk.dim(`+${pendingLog.current.length}`) : ''] }) : null] }), _jsx(Text, { children: '─'.repeat(stdout.columns) }), _jsx(Box, { flexDirection: "column", children: displayedLog.map((entry, i) => {
225
+ const selected = cursorIndex === i;
226
+ const dim = cursorIndex !== null && !selected;
227
+ const prefix = selected ? '›' : ' ';
228
+ return (_jsxs(Box, { children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: "cyan", children: prefix }) }), _jsx(Box, { minWidth: 8, children: _jsx(Text, { dimColor: dim, children: entry.method }) }), _jsx(Box, { minWidth: pathColWidth, children: _jsx(Text, { dimColor: dim, children: entry.path }) }), _jsx(Box, { minWidth: statusColWidth, children: _jsx(Text, { dimColor: dim, children: entry.status }) }), entry.runtime ? _jsx(Text, { dimColor: dim, children: entry.runtime }) : null] }, entry.id));
229
+ }) })] }));
230
+ };
231
+ export const initDashboard = (config, appEventEmitter) => {
232
+ process.stdout.write('\x1b[?1049h'); // enter alternate screen buffer
233
+ setCursorVisibility(false);
234
+ const restoreScreen = () => {
235
+ process.stdout.write('\x1b[?1049l'); // leave alternate screen buffer
236
+ setCursorVisibility(true);
237
+ };
238
+ process.once('exit', restoreScreen);
239
+ render(_jsx(DashboardApp, { config: config, appEventEmitter: appEventEmitter }), { exitOnCtrlC: false });
240
+ };
241
+ //# sourceMappingURL=Dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/cli-app/Dashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ProfileConfig } from "#types/types";
2
+ import type { AppEventEmitter } from "#cli-app/AppEventEmitter";
3
+ export declare const initLiveLog: (_config: ProfileConfig, appEventEmitter: AppEventEmitter) => void;
4
+ //# sourceMappingURL=LiveLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveLog.d.ts","sourceRoot":"","sources":["../../src/cli-app/LiveLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAE9D,eAAO,MAAM,WAAW,GAAI,SAAS,aAAa,EAAE,iBAAiB,eAAe,SA2BnF,CAAA"}
@@ -0,0 +1,28 @@
1
+ export const initLiveLog = (_config, appEventEmitter) => {
2
+ const stdout = (msg) => process.stdout.write(`${msg}\n`);
3
+ appEventEmitter.on('response', (req, res) => {
4
+ stdout(`${req.method} ${req.path} - ${res.statusCode} ${res.statusMessage}`);
5
+ }).on('request', (req) => {
6
+ stdout(`→ ${req.method} ${req.path}`);
7
+ }).on('connect', () => {
8
+ stdout('client connected');
9
+ }).on('client-blocked', ip => {
10
+ stdout(`blocked ip ${ip}`);
11
+ }).on('disconnect', () => {
12
+ stdout('client disconnected');
13
+ }).on('connect_error', (e) => {
14
+ stdout(`connection error: ${e.message}`);
15
+ }).on('request-error', (e, meta) => {
16
+ if (meta.isUpgrade) {
17
+ stdout(`[upgrade] TCP error ${meta.requestId}: ${e.message}`);
18
+ }
19
+ else {
20
+ stdout(`[request] local error ${meta.requestId}: ${e.message}`);
21
+ }
22
+ }).on('ready', (info) => {
23
+ stdout('[auth] registered, token received');
24
+ stdout(`[tunnel] id=${info.proxyIdent}`);
25
+ stdout(`[tunnel] url=${info.proxyURL} → ${info.target.host}:${info.target.port}`);
26
+ });
27
+ };
28
+ //# sourceMappingURL=LiveLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveLog.js","sourceRoot":"","sources":["../../src/cli-app/LiveLog.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAsB,EAAE,eAAgC,EAAE,EAAE;IAEtF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAEhE,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QACvB,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE;QAC3B,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;QAC3B,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,uBAAuB,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,yBAAyB,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACjE,CAAC;IACH,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,CAAC,mCAAmC,CAAC,CAAA;QAC3C,MAAM,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QACxC,MAAM,CAAC,gBAAgB,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ export type UpdateResult = {
2
+ status: 'progress';
3
+ message: string;
4
+ } | {
5
+ status: 'success';
6
+ } | {
7
+ status: 'failed';
8
+ reason: string;
9
+ };
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli-app/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli-app/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { UpdateResult } from "./types.js";
2
+ export declare const getAvailableUpdate: (currentVersion: string) => Promise<string | null>;
3
+ export declare const performUpdate: (packageName: string, onComplete: (result: UpdateResult) => void) => Promise<void>;
4
+ //# sourceMappingURL=versionCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionCheck.d.ts","sourceRoot":"","sources":["../../src/cli-app/versionCheck.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,kBAAkB,GAAU,gBAAgB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAItF,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,aAAa,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,KAAG,OAAO,CAAC,IAAI,CAgCjH,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { getLatestVersion } from '#lib/Flow/getLatestVersion';
2
+ import { checkGlobalInstallation, checkLocalInstallation } from '#utils/npmFunctions';
3
+ import { downloadBinaryUpdate } from '#lib/Flow/downloadBinaryUpdate';
4
+ import { exec } from 'node:child_process';
5
+ import { isSea } from 'node:sea';
6
+ export const getAvailableUpdate = async (currentVersion) => {
7
+ const version = await getLatestVersion().catch(() => null);
8
+ if (!version || version === currentVersion)
9
+ return null;
10
+ return version;
11
+ };
12
+ export const performUpdate = async (packageName, onComplete) => {
13
+ if (isSea()) {
14
+ await downloadBinaryUpdate(onComplete);
15
+ return;
16
+ }
17
+ try {
18
+ const isGlobal = await checkGlobalInstallation(packageName);
19
+ let modifier = '';
20
+ if (isGlobal) {
21
+ modifier = ' -g';
22
+ }
23
+ else if (!await checkLocalInstallation(packageName)) {
24
+ onComplete({ status: 'failed', reason: 'Not installed via npm' });
25
+ return;
26
+ }
27
+ const cmd = `npm${modifier} update ${packageName} --registry https://registry.npmjs.org`;
28
+ onComplete({ status: 'progress', message: 'Updating via npm...' });
29
+ await new Promise((resolve) => {
30
+ exec(cmd, (error, _stdout, stderr) => {
31
+ if (error || stderr) {
32
+ const reason = error?.message ?? stderr;
33
+ onComplete({ status: 'failed', reason: `npm update failed: ${reason}`.trimEnd() });
34
+ }
35
+ else {
36
+ onComplete({ status: 'success' });
37
+ }
38
+ resolve();
39
+ });
40
+ });
41
+ }
42
+ catch (e) {
43
+ onComplete({ status: 'failed', reason: e instanceof Error ? e.message : String(e) });
44
+ }
45
+ };
46
+ //# sourceMappingURL=versionCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionCheck.js","sourceRoot":"","sources":["../../src/cli-app/versionCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAC,uBAAuB,EAAE,sBAAsB,EAAC,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,UAAU,CAAA;AAG9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,cAAsB,EAA0B,EAAE;IACzF,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,cAAc;QAAE,OAAO,IAAI,CAAA;IACvD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,EAAE,UAA0C,EAAiB,EAAE;IACpH,IAAI,KAAK,EAAE,EAAE,CAAC;QACZ,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAA;QACtC,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAA;QAC3D,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,GAAG,KAAK,CAAA;QAClB,CAAC;aAAM,IAAI,CAAC,MAAM,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;YACtD,UAAU,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,EAAC,CAAC,CAAA;YAC/D,OAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,QAAQ,WAAW,WAAW,wCAAwC,CAAA;QACxF,UAAU,CAAC,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,EAAC,CAAC,CAAA;QAChE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;oBACpB,MAAM,MAAM,GAAG,KAAK,EAAE,OAAO,IAAI,MAAM,CAAA;oBACvC,UAAU,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,sBAAsB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;gBAClF,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAA;gBACjC,CAAC;gBACD,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAA;IACpF,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":""}
package/dist/client.js ADDED
@@ -0,0 +1,75 @@
1
+ import { readJsonFile } from "#core/FS/utils";
2
+ import { Option, program } from '#commander/index';
3
+ import { FOUND_LOCAL_CONFIG_FILEPATH, GLOBAL_CONFIG_FILEPATH, LOCAL_CONFIG_FILEPATH } from "#lib/defs";
4
+ import { createCommandConfig } from "#commands/CommandConfig/CommandConfig";
5
+ import { createCommandHttp } from "#commands/CommandHTTP/CommandHttp";
6
+ import { createCommandStartProfile } from "#commands/CommandUseProfile/CommandUseProfile";
7
+ import { createCommandRegister } from "#commands/CommandRegister/CommandRegister";
8
+ import { createLocalConfig } from "#config/utils";
9
+ import { createCommandAuth } from "#commands/CommandAuth/CommandAuth";
10
+ import { createCommandInit } from "#commands/CommandInit/CommandInit";
11
+ import { createCommandServer } from "#commands/CommandServer/CommandServer";
12
+ import { ParsedGlobalConfig } from "#config/ParsedGlobalConfig";
13
+ import { ParsedLocalConfig } from "#config/ParsedLocalConfig";
14
+ import { createCommandProfile } from "#commands/CommandProfile/CommandProfile";
15
+ import { createCommandDaemon } from "#commands/CommandDaemon/CommandDaemon";
16
+ import { createCommandList } from "#commands/CommandList/CommandList";
17
+ import { createCommandDashboard } from "#commands/CommandDashboard/CommandDashboard";
18
+ import { createCommandLogs } from "#commands/CommandLogs/CommandLogs";
19
+ import { createCommandStop } from "#commands/CommandStop/CommandStop";
20
+ import { createCommandRestart } from "#commands/CommandRestart/CommandRestart";
21
+ import { createCommandUpdate } from "#commands/CommandUpdate/CommandUpdate";
22
+ import { ApiClient } from "#api-client/ApiClient";
23
+ import { readPackageJson } from "#package-json/packageJson";
24
+ const globalConf = new ParsedGlobalConfig(readJsonFile(GLOBAL_CONFIG_FILEPATH), GLOBAL_CONFIG_FILEPATH);
25
+ const localConf = FOUND_LOCAL_CONFIG_FILEPATH ? new ParsedLocalConfig(readJsonFile(FOUND_LOCAL_CONFIG_FILEPATH), FOUND_LOCAL_CONFIG_FILEPATH) : undefined;
26
+ const packageJson = readPackageJson();
27
+ const ctx = {
28
+ config: {
29
+ global: globalConf,
30
+ local: localConf,
31
+ createLocalConfig: () => createLocalConfig(LOCAL_CONFIG_FILEPATH)
32
+ },
33
+ exit(code) {
34
+ process.exit(code ?? 0);
35
+ },
36
+ apiClient: new ApiClient(globalConf, localConf),
37
+ logger: {
38
+ info: console.info,
39
+ error: console.error,
40
+ warn: console.warn,
41
+ }
42
+ };
43
+ program
44
+ .name('tunli')
45
+ .description('HTTP tunnel client')
46
+ .addOption(new Option('version').short('v'));
47
+ program.addCommand(createCommandInit(ctx, program));
48
+ program.addCommand(createCommandConfig(ctx, program));
49
+ program.addCommand(createCommandHttp(ctx, program), { isDefault: true });
50
+ program.addCommand(createCommandRegister(ctx, program));
51
+ // program.addCommand(createCommandRefresh(program)) TBD
52
+ // program.addCommand(createCommandInvite(program)) TBD
53
+ program.addCommand(createCommandAuth(ctx, program));
54
+ program.addCommand(createCommandStartProfile(ctx, program));
55
+ program.addCommand(createCommandServer(ctx, program));
56
+ program.addCommand(createCommandProfile(ctx, program));
57
+ program.addCommand(createCommandDaemon(ctx, program));
58
+ program.addCommand(createCommandList(ctx, program));
59
+ program.addCommand(createCommandDashboard(ctx, program));
60
+ program.addCommand(createCommandLogs(ctx, program));
61
+ program.addCommand(createCommandStop(ctx, program));
62
+ program.addCommand(createCommandRestart(ctx, program));
63
+ program.addCommand(createCommandUpdate(ctx, program));
64
+ program.action(({ options }) => {
65
+ if (options.version) {
66
+ ctx.logger.info(`tunli: ${packageJson?.version}`);
67
+ ctx.exit(0);
68
+ }
69
+ else {
70
+ ctx.logger.error('Error: Command "tunli": missing required argument, option or subcommand');
71
+ ctx.exit(1);
72
+ }
73
+ });
74
+ await program.parseAsync(process.argv);
75
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,MAAM,EAAoB,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAC,2BAA2B,EAAE,sBAAsB,EAAE,qBAAqB,EAAC,MAAM,WAAW,CAAC;AACrG,OAAO,EAAC,mBAAmB,EAAC,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAC,yBAAyB,EAAC,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAC,qBAAqB,EAAC,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAC,mBAAmB,EAAC,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAC,sBAAsB,EAAC,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAC,oBAAoB,EAAC,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAC,mBAAmB,EAAC,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAE1D,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAA;AACvG,MAAM,SAAS,GAAG,2BAA2B,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,2BAA2B,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACzJ,MAAM,WAAW,GAAG,eAAe,EAAE,CAAA;AACrC,MAAM,GAAG,GAAY;IACnB,MAAM,EAAE;QACN,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;KAClE;IACD,IAAI,CAAC,IAAa;QAChB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;IACzB,CAAC;IACD,SAAS,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/C,MAAM,EAAE;QACN,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB;CACF,CAAA;AAED,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,oBAAoB,CAAC;KACjC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9C,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACnD,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACrD,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;AACtE,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACvD,wDAAwD;AACxD,uDAAuD;AACvD,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACnD,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AAC3D,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACrD,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACtD,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACrD,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACnD,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACxD,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACnD,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACnD,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACtD,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AAErD,OAAO,CAAC,MAAM,CAAC,CAAC,EAAC,OAAO,EAAc,EAAE,EAAE;IACxC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;QACjD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACb,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAA;QAC3F,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACb,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type ParseFn = (value: string, previous?: unknown) => unknown;
2
+ export interface ArgSpec {
3
+ name: string;
4
+ required: boolean;
5
+ many: boolean;
6
+ description?: string | undefined;
7
+ parse?: ParseFn | undefined;
8
+ defaultValue?: unknown;
9
+ }
10
+ export declare class Argument {
11
+ #private;
12
+ constructor(name: string, description?: string);
13
+ required(): this;
14
+ many(): this;
15
+ default(value: unknown): this;
16
+ parse(fn: (value: string, previous?: unknown) => unknown): this;
17
+ get spec(): ArgSpec;
18
+ }
19
+ //# sourceMappingURL=Argument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Argument.d.ts","sourceRoot":"","sources":["../../src/commander/Argument.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;AAEpE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,qBAAa,QAAQ;;gBAGP,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAI9C,QAAQ,IAAI,IAAI;IAKhB,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAK7B,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI;IAM/D,IAAI,IAAI,YAAwB;CACjC"}
@@ -0,0 +1,25 @@
1
+ export class Argument {
2
+ #spec;
3
+ constructor(name, description) {
4
+ this.#spec = { name, required: false, many: false, ...(description !== undefined && { description }) };
5
+ }
6
+ required() {
7
+ this.#spec.required = true;
8
+ return this;
9
+ }
10
+ many() {
11
+ this.#spec.many = true;
12
+ return this;
13
+ }
14
+ default(value) {
15
+ this.#spec.defaultValue = value;
16
+ return this;
17
+ }
18
+ parse(fn) {
19
+ this.#spec.parse = fn;
20
+ return this;
21
+ }
22
+ // ─── Package-internal ──────────────────────────────────────────────────────
23
+ get spec() { return this.#spec; }
24
+ }
25
+ //# sourceMappingURL=Argument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Argument.js","sourceRoot":"","sources":["../../src/commander/Argument.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,QAAQ;IACV,KAAK,CAAS;IAEvB,YAAY,IAAY,EAAE,WAAoB;QAC5C,IAAI,CAAC,KAAK,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,EAAC,WAAW,EAAC,CAAC,EAAC,CAAA;IACpG,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,EAAkD;QACtD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAa,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8EAA8E;IAC9E,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC;CACjC"}
@@ -0,0 +1,23 @@
1
+ import { type ParseResult, type RequiresInput } from '#commands/helper/Parser';
2
+ import { Option } from './Option.js';
3
+ import { Argument } from './Argument.js';
4
+ export declare class Command {
5
+ #private;
6
+ constructor(name?: string);
7
+ name(n: string): this;
8
+ description(d: string): this;
9
+ requires(fn: (matched: RequiresInput) => Partial<RequiresInput>): this;
10
+ alias(a: string): this;
11
+ addOption(opt: Option): this;
12
+ addArgument(arg: Argument): this;
13
+ addCommand(cmd: Command, options?: {
14
+ isDefault?: boolean;
15
+ }): this;
16
+ action<TArgs = Record<string, unknown>, TOpts = Record<string, unknown>>(fn: (result: ParseResult<TArgs, TOpts>) => void | Promise<void>): this;
17
+ addExample(example: string, description?: string): this;
18
+ extendUsage(): this;
19
+ opts<T = Record<string, unknown>>(): T;
20
+ parseAsync(argv: string[]): Promise<void>;
21
+ }
22
+ export declare const program: Command;
23
+ //# sourceMappingURL=Command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../src/commander/Command.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAClC,OAAO,EAAe,QAAQ,EAAe,MAAM,eAAe,CAAA;AAMlE,qBAAa,OAAO;;gBAgBN,IAAI,SAAK;IAIrB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKrB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5B,QAAQ,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAKtE,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAkB5B,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAKhC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAOjE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC9D,IAAI;IAKP,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAKvD,WAAW,IAAI,IAAI;IAKnB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;IAqDhC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BhD;AAED,eAAO,MAAM,OAAO,SAAgB,CAAA"}