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,201 @@
1
+ import net from 'net';
2
+ import { readFileSync, unlinkSync } from 'node:fs';
3
+ import { DAEMON_SOCKET_PATH, RESTART_DUMP_FILEPATH } from '#lib/defs';
4
+ import { AppEventEmitter } from '#cli-app/AppEventEmitter';
5
+ import { ApiClient } from '#api-client/ApiClient';
6
+ import { ParsedGlobalConfig } from '#config/ParsedGlobalConfig';
7
+ import { createProxy } from '#proxy/Proxy';
8
+ export class DaemonServer {
9
+ #logger;
10
+ #apiClient;
11
+ #tunnels = new Map();
12
+ #server;
13
+ constructor(globalConf, logger) {
14
+ this.#logger = logger;
15
+ this.#apiClient = new ApiClient(globalConf);
16
+ }
17
+ async listen() {
18
+ try {
19
+ unlinkSync(DAEMON_SOCKET_PATH);
20
+ }
21
+ catch { /* stale socket */
22
+ }
23
+ this.#server = net.createServer((socket) => {
24
+ let buffer = '';
25
+ socket.on('data', (chunk) => {
26
+ buffer += chunk.toString();
27
+ const nl = buffer.indexOf('\n');
28
+ if (nl === -1)
29
+ return;
30
+ const line = buffer.slice(0, nl);
31
+ buffer = buffer.slice(nl + 1);
32
+ try {
33
+ void this.#handle(JSON.parse(line), socket);
34
+ }
35
+ catch {
36
+ this.#respond(socket, { type: 'error', message: 'Invalid request' });
37
+ }
38
+ });
39
+ });
40
+ await new Promise((resolve) => this.#server.listen(DAEMON_SOCKET_PATH, resolve));
41
+ this.#logger.info('Daemon listening');
42
+ await this.#restoreFromDump();
43
+ process.on('SIGTERM', () => this.#shutdown());
44
+ process.on('SIGINT', () => this.#shutdown());
45
+ }
46
+ async #handle(req, socket) {
47
+ switch (req.type) {
48
+ case 'start':
49
+ return this.#handleStart(req, socket);
50
+ case 'stop':
51
+ return this.#handleStop(req, socket);
52
+ case 'attach':
53
+ return this.#handleAttach(req, socket);
54
+ case 'list':
55
+ return this.#handleList(socket);
56
+ case 'dump':
57
+ return this.#handleDump(socket);
58
+ case 'shutdown':
59
+ this.#respond(socket, { type: 'ok' });
60
+ this.#shutdown();
61
+ return;
62
+ }
63
+ }
64
+ async #handleStart(req, socket) {
65
+ if (this.#tunnels.has(req.profileName)) {
66
+ return this.#respond(socket, { type: 'error', message: `Tunnel "${req.profileName}" is already running` });
67
+ }
68
+ try {
69
+ await this.#startTunnel(req);
70
+ this.#respond(socket, { type: 'started', profileName: req.profileName, proxyURL: req.proxyURL });
71
+ }
72
+ catch (e) {
73
+ this.#respond(socket, { type: 'error', message: e instanceof Error ? e.message : String(e) });
74
+ }
75
+ }
76
+ async #startTunnel(req) {
77
+ const serverConfig = { url: req.serverUrl, authToken: req.authToken };
78
+ const apiClient = this.#apiClient.withServer(serverConfig);
79
+ const profileConfig = {
80
+ profileName: req.profileName,
81
+ proxy: { proxyIdent: req.proxyIdent, proxyURL: req.proxyURL },
82
+ target: req.target,
83
+ serverConfig,
84
+ apiClient,
85
+ filepath: req.filepath,
86
+ allowedCidr: req.allowedCidr,
87
+ deniedCidr: req.deniedCidr,
88
+ };
89
+ const info = {
90
+ profileName: req.profileName,
91
+ proxyURL: req.proxyURL,
92
+ target: `${req.target.host}:${req.target.port}`,
93
+ status: 'connecting',
94
+ };
95
+ const appEmitter = new AppEventEmitter();
96
+ const handle = { info, startRequest: req, appEmitter, disconnect: () => { }, requestCount: 0 };
97
+ appEmitter.on('connect', () => { info.status = 'connected'; });
98
+ appEmitter.on('disconnect', () => { info.status = 'disconnected'; });
99
+ appEmitter.on('connect_error', () => { info.status = 'error'; });
100
+ appEmitter.on('latency', (ms) => { handle.lastLatency = ms; });
101
+ appEmitter.on('response', () => { handle.requestCount++; });
102
+ const proxy = await createProxy(profileConfig, appEmitter);
103
+ handle.disconnect = proxy.disconnect;
104
+ this.#tunnels.set(req.profileName, handle);
105
+ this.#logger.info(`Tunnel started: ${req.profileName} → ${req.proxyURL}`);
106
+ }
107
+ async #restoreFromDump() {
108
+ let data;
109
+ try {
110
+ data = readFileSync(RESTART_DUMP_FILEPATH, 'utf-8');
111
+ unlinkSync(RESTART_DUMP_FILEPATH);
112
+ }
113
+ catch {
114
+ return;
115
+ }
116
+ try {
117
+ const tunnels = JSON.parse(data);
118
+ for (const tunnel of tunnels) {
119
+ await this.#startTunnel(tunnel).catch(e => {
120
+ this.#logger.error(`Failed to restore tunnel "${tunnel.profileName}": ${e instanceof Error ? e.message : String(e)}`);
121
+ });
122
+ }
123
+ this.#logger.info(`Restored ${tunnels.length} tunnel(s) from dump`);
124
+ }
125
+ catch (e) {
126
+ this.#logger.error(`Failed to parse restart dump: ${e instanceof Error ? e.message : String(e)}`);
127
+ }
128
+ }
129
+ #handleAttach(req, socket) {
130
+ const handle = this.#tunnels.get(req.profileName);
131
+ if (!handle) {
132
+ return this.#respond(socket, { type: 'error', message: `No tunnel running for profile "${req.profileName}"` });
133
+ }
134
+ socket.write(JSON.stringify({
135
+ type: 'attach-ok',
136
+ profileName: req.profileName,
137
+ proxyURL: handle.info.proxyURL,
138
+ status: handle.info.status,
139
+ requestCount: handle.requestCount,
140
+ ...(handle.lastLatency !== undefined && { lastLatency: handle.lastLatency }),
141
+ }) + '\n');
142
+ const send = (msg) => {
143
+ if (!socket.destroyed)
144
+ socket.write(JSON.stringify(msg) + '\n');
145
+ };
146
+ const { appEmitter } = handle;
147
+ const listeners = {
148
+ connect: () => send({ type: 'event', event: 'connect' }),
149
+ disconnect: (reason) => send({ type: 'event', event: 'disconnect', reason }),
150
+ connect_error: (e) => send({ type: 'event', event: 'connect_error', message: e.message }),
151
+ ready: (info) => send({ type: 'event', event: 'ready', ...info }),
152
+ request: (data) => send({ type: 'event', event: 'request', data }),
153
+ response: (req, res) => send({ type: 'event', event: 'response', req, res }),
154
+ 'request-error': (e, meta) => send({ type: 'event', event: 'request-error', message: e.message, meta }),
155
+ 'client-blocked': (ip) => send({ type: 'event', event: 'client-blocked', ip }),
156
+ latency: (ms) => send({ type: 'event', event: 'latency', ms }),
157
+ };
158
+ for (const [event, listener] of Object.entries(listeners)) {
159
+ appEmitter.on(event, listener);
160
+ }
161
+ socket.on('close', () => {
162
+ for (const [event, listener] of Object.entries(listeners)) {
163
+ appEmitter.off(event, listener);
164
+ }
165
+ });
166
+ }
167
+ #handleStop(req, socket) {
168
+ const handle = this.#tunnels.get(req.profileName);
169
+ if (!handle) {
170
+ return this.#respond(socket, { type: 'error', message: `No tunnel running for profile "${req.profileName}"` });
171
+ }
172
+ handle.disconnect();
173
+ this.#tunnels.delete(req.profileName);
174
+ this.#logger.info(`Tunnel stopped: ${req.profileName}`);
175
+ this.#respond(socket, { type: 'stopped', profileName: req.profileName });
176
+ }
177
+ #handleList(socket) {
178
+ const tunnels = [...this.#tunnels.values()].map(h => h.info);
179
+ this.#respond(socket, { type: 'list', tunnels });
180
+ }
181
+ #handleDump(socket) {
182
+ const tunnels = [...this.#tunnels.values()].map(h => h.startRequest);
183
+ this.#respond(socket, { type: 'dump', tunnels });
184
+ }
185
+ #respond(socket, response) {
186
+ socket.write(JSON.stringify(response) + '\n');
187
+ }
188
+ #shutdown() {
189
+ this.#logger.info('Daemon shutting down');
190
+ for (const handle of this.#tunnels.values())
191
+ handle.disconnect();
192
+ this.#server?.close();
193
+ try {
194
+ unlinkSync(DAEMON_SOCKET_PATH);
195
+ }
196
+ catch { /* already gone */
197
+ }
198
+ process.exit(0);
199
+ }
200
+ }
201
+ //# sourceMappingURL=DaemonServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaemonServer.js","sourceRoot":"","sources":["../../src/daemon/DaemonServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import type { TargetConfig } from '#types/types';
2
+ import type { Req, Res, ReqMeta, ReqErrorMeta } from '#cli-app/AppEventEmitter';
3
+ export type TunnelInfo = {
4
+ profileName: string;
5
+ proxyURL: string;
6
+ target: string;
7
+ status: 'connecting' | 'connected' | 'disconnected' | 'error';
8
+ };
9
+ export type StartRequest = {
10
+ type: 'start';
11
+ profileName: string;
12
+ proxyIdent: string;
13
+ proxyURL: string;
14
+ serverUrl: string;
15
+ authToken: string;
16
+ target: TargetConfig;
17
+ filepath: string;
18
+ allowedCidr: string[];
19
+ deniedCidr: string[];
20
+ };
21
+ export type TunnelDump = Omit<StartRequest, 'type'>[];
22
+ export type DaemonRequest = StartRequest | {
23
+ type: 'stop';
24
+ profileName: string;
25
+ } | {
26
+ type: 'attach';
27
+ profileName: string;
28
+ } | {
29
+ type: 'list';
30
+ } | {
31
+ type: 'dump';
32
+ } | {
33
+ type: 'shutdown';
34
+ };
35
+ export type EventMessage = {
36
+ type: 'event';
37
+ event: 'connect';
38
+ } | {
39
+ type: 'event';
40
+ event: 'disconnect';
41
+ reason: string;
42
+ } | {
43
+ type: 'event';
44
+ event: 'connect_error';
45
+ message: string;
46
+ } | {
47
+ type: 'event';
48
+ event: 'ready';
49
+ proxyIdent: string;
50
+ proxyURL: string;
51
+ target: TargetConfig;
52
+ } | {
53
+ type: 'event';
54
+ event: 'request';
55
+ data: ReqMeta;
56
+ } | {
57
+ type: 'event';
58
+ event: 'response';
59
+ req: Req;
60
+ res: Res;
61
+ } | {
62
+ type: 'event';
63
+ event: 'request-error';
64
+ message: string;
65
+ meta: ReqErrorMeta;
66
+ } | {
67
+ type: 'event';
68
+ event: 'client-blocked';
69
+ ip: string;
70
+ } | {
71
+ type: 'event';
72
+ event: 'latency';
73
+ ms: number;
74
+ };
75
+ export type DaemonResponse = {
76
+ type: 'started';
77
+ profileName: string;
78
+ proxyURL: string;
79
+ } | {
80
+ type: 'stopped';
81
+ profileName: string;
82
+ } | {
83
+ type: 'list';
84
+ tunnels: TunnelInfo[];
85
+ } | {
86
+ type: 'dump';
87
+ tunnels: TunnelDump;
88
+ } | {
89
+ type: 'attach-ok';
90
+ profileName: string;
91
+ proxyURL: string;
92
+ status: TunnelInfo['status'];
93
+ lastLatency?: number;
94
+ requestCount: number;
95
+ } | EventMessage | {
96
+ type: 'error';
97
+ message: string;
98
+ } | {
99
+ type: 'ok';
100
+ };
101
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon-main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-main.d.ts","sourceRoot":"","sources":["../src/daemon-main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { readJsonFile } from '#core/FS/utils';
2
+ import { GLOBAL_CONFIG_FILEPATH } from '#lib/defs';
3
+ import { ParsedGlobalConfig } from '#config/ParsedGlobalConfig';
4
+ import { DaemonServer } from '#daemon/DaemonServer';
5
+ import { logInfo, logError, logWarning } from '#logger/logger';
6
+ const globalConf = new ParsedGlobalConfig(readJsonFile(GLOBAL_CONFIG_FILEPATH), GLOBAL_CONFIG_FILEPATH);
7
+ const server = new DaemonServer(globalConf, {
8
+ info: logInfo,
9
+ error: logError,
10
+ warn: logWarning,
11
+ });
12
+ await server.listen();
13
+ //# sourceMappingURL=daemon-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-main.js","sourceRoot":"","sources":["../src/daemon-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,WAAW,CAAA;AAChD,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAA;AAE5D,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAA;AAEvG,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE;IAC1C,IAAI,EAAG,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,IAAI,EAAG,UAAU;CAClB,CAAC,CAAA;AAEF,MAAM,MAAM,CAAC,MAAM,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=launcher-main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-main.d.ts","sourceRoot":"","sources":["../src/launcher-main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ import { chmodSync, existsSync, mkdirSync, renameSync } from 'node:fs';
2
+ import { proxyChildProcess, setCursorVisibility } from './utils/cliFunctions.js';
3
+ import { applyUpdate } from './lib/Flow/applyUpdate.js';
4
+ import { TUNLI_BIN_DIR, TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH } from './lib/defs.js';
5
+ import { downloadBinaryUpdate } from "./lib/Flow/downloadBinaryUpdate.js";
6
+ import { logDebug } from "./logger/logger.js";
7
+ // On first run: install main binary from launcher binary itself
8
+ if (!existsSync(TUNLI_BIN_PATH)) {
9
+ process.stdout.write('prepare first usage...\n');
10
+ logDebug(`Initial setup: Creating binary directory at ${TUNLI_BIN_DIR}`);
11
+ mkdirSync(TUNLI_BIN_DIR, { recursive: true });
12
+ const downloadSuccess = await downloadBinaryUpdate((res) => {
13
+ switch (res.status) {
14
+ case 'progress':
15
+ process.stdout.write(`\rSetup: ${res.message}`);
16
+ break;
17
+ case 'success':
18
+ process.stdout.write('\nSetup: Download completed successfully.\n');
19
+ logDebug('Setup: Binary transfer finished.');
20
+ break;
21
+ case 'failed':
22
+ process.stderr.write(`\nSetup: Installation failed. Reason: ${res.reason}\n`);
23
+ logDebug(`Setup: Failure during download: ${res.reason}`);
24
+ break;
25
+ }
26
+ });
27
+ if (downloadSuccess) {
28
+ logDebug('Initial setup: Binary downloaded. Moving to destination...');
29
+ renameSync(TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH);
30
+ chmodSync(TUNLI_BIN_PATH, 0o755);
31
+ logDebug('Initial setup: Binary installed and permissions set.');
32
+ }
33
+ else {
34
+ const errorMsg = 'Initial setup: Binary download failed.';
35
+ logDebug(errorMsg);
36
+ console.error(errorMsg);
37
+ process.exit(1);
38
+ }
39
+ }
40
+ const onBeforeRestart = async () => {
41
+ logDebug('Lifecycle: Preparing for restart...');
42
+ if (existsSync(TUNLI_BIN_NEW_PATH)) {
43
+ logDebug('Lifecycle: New update detected. Applying update before restart.');
44
+ await applyUpdate();
45
+ }
46
+ else {
47
+ logDebug('Lifecycle: No pending updates found. Performing clean restart.');
48
+ }
49
+ };
50
+ logDebug(`Lifecycle: Launching child process: ${TUNLI_BIN_PATH}`);
51
+ const exitCode = await proxyChildProcess(TUNLI_BIN_PATH, process.argv.slice(2), {
52
+ sea: true,
53
+ onBeforeRestart,
54
+ });
55
+ setCursorVisibility(true);
56
+ process.exit(exitCode ?? 0);
57
+ //# sourceMappingURL=launcher-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-main.js","sourceRoot":"","sources":["../src/launcher-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,SAAS,CAAA;AACpE,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAC,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE5C,gEAAgE;AAChE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAChD,QAAQ,CAAC,+CAA+C,aAAa,EAAE,CAAC,CAAA;IACxE,SAAS,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IAE3C,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE;QACzD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACpE,QAAQ,CAAC,kCAAkC,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC9E,QAAQ,CAAC,mCAAmC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1D,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,QAAQ,CAAC,4DAA4D,CAAC,CAAA;QACtE,UAAU,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;QAC9C,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QAChC,QAAQ,CAAC,sDAAsD,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,wCAAwC,CAAA;QACzD,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;IACjC,QAAQ,CAAC,qCAAqC,CAAC,CAAA;IAE/C,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,iEAAiE,CAAC,CAAA;QAC3E,MAAM,WAAW,EAAE,CAAA;IACrB,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,gEAAgE,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,uCAAuC,cAAc,EAAE,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC9E,GAAG,EAAE,IAAI;IACT,eAAe;CAChB,CAAC,CAAA;AAEF,mBAAmB,CAAC,IAAI,CAAC,CAAA;AACzB,OAAO,CAAC,IAAI,CAAE,QAA0B,IAAI,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const dumpAndStopDaemon: () => Promise<void>;
2
+ export declare const applyUpdate: () => Promise<void>;
3
+ //# sourceMappingURL=applyUpdate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyUpdate.d.ts","sourceRoot":"","sources":["../../../src/lib/Flow/applyUpdate.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAgBtD,CAAA;AAED,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAYhD,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { renameSync, writeFileSync } from 'node:fs';
2
+ import { RESTART_DUMP_FILEPATH, TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH } from '#lib/defs';
3
+ import { DaemonClient } from '#daemon/DaemonClient';
4
+ import { logDebug } from "#logger/logger";
5
+ export const dumpAndStopDaemon = async () => {
6
+ if (!await DaemonClient.isRunning())
7
+ return;
8
+ logDebug('Daemon is active. Requesting tunnel dump...');
9
+ const response = await new DaemonClient().send({ type: 'dump' });
10
+ if (response.type === 'dump' && response.tunnels.length > 0) {
11
+ logDebug(`Dump received. Saving ${response.tunnels.length} tunnels to cache.`);
12
+ writeFileSync(RESTART_DUMP_FILEPATH, JSON.stringify(response.tunnels));
13
+ }
14
+ else {
15
+ logDebug('Dump received, but no active tunnels found.');
16
+ }
17
+ logDebug('Stopping daemon...');
18
+ await DaemonClient.stop();
19
+ logDebug('Daemon stopped successfully.');
20
+ };
21
+ export const applyUpdate = async () => {
22
+ logDebug('Update process: Checking daemon status...');
23
+ await dumpAndStopDaemon();
24
+ logDebug(`Replacing binary: ${TUNLI_BIN_NEW_PATH} -> ${TUNLI_BIN_PATH}`);
25
+ try {
26
+ renameSync(TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH);
27
+ logDebug('Update applied: Binary swapped successfully.');
28
+ }
29
+ catch (error) {
30
+ logDebug(`Update failed during rename: ${error?.message ? error.message : String(error)}`);
31
+ throw error;
32
+ }
33
+ };
34
+ //# sourceMappingURL=applyUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyUpdate.js","sourceRoot":"","sources":["../../../src/lib/Flow/applyUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AACjD,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAE,cAAc,EAAC,MAAM,WAAW,CAAA;AACnF,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;IACzD,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE;QAAE,OAAM;IAE3C,QAAQ,CAAC,6CAA6C,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAA;IAE9D,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,QAAQ,CAAC,yBAAyB,QAAQ,CAAC,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAA;QAC9E,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IACxE,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,6CAA6C,CAAC,CAAA;IACzD,CAAC;IAED,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAC9B,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;IACzB,QAAQ,CAAC,8BAA8B,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,QAAQ,CAAC,2CAA2C,CAAC,CAAA;IACrD,MAAM,iBAAiB,EAAE,CAAA;IAEzB,QAAQ,CAAC,qBAAqB,kBAAkB,OAAO,cAAc,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC;QACH,UAAU,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;QAC9C,QAAQ,CAAC,8CAA8C,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAQ,CAAC,gCAAgC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1F,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { UpdateResult } from "#cli-app/types";
2
+ export declare const downloadBinaryUpdate: (onComplete: (result: UpdateResult) => void) => Promise<boolean>;
3
+ //# sourceMappingURL=downloadBinaryUpdate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadBinaryUpdate.d.ts","sourceRoot":"","sources":["../../../src/lib/Flow/downloadBinaryUpdate.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAOjD,eAAO,MAAM,oBAAoB,GAAU,YAAY,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,KAAG,OAAO,CAAC,OAAO,CA2CtG,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { exec } from 'node:child_process';
2
+ import { createWriteStream, mkdirSync } from 'node:fs';
3
+ import { chmod, copyFile, unlink } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { pipeline } from 'node:stream/promises';
7
+ import { Readable } from 'node:stream';
8
+ import { RELEASE_DOWNLOAD_BASE_URL, TUNLI_BIN_DIR, TUNLI_BIN_NEW_PATH } from '#lib/defs';
9
+ const PLATFORM_ASSET = {
10
+ linux: 'tunli-main-linux.tar.gz',
11
+ darwin: 'tunli-main-macos.tar.gz',
12
+ };
13
+ export const downloadBinaryUpdate = async (onComplete) => {
14
+ const asset = PLATFORM_ASSET[process.platform];
15
+ if (!asset) {
16
+ onComplete({ status: 'failed', reason: `Unsupported platform: ${process.platform}` });
17
+ return false;
18
+ }
19
+ const url = `${RELEASE_DOWNLOAD_BASE_URL}/${asset}`;
20
+ const tmpTar = join(tmpdir(), asset);
21
+ const tmpBin = join(tmpdir(), 'tunli-main');
22
+ const cleanup = async () => {
23
+ await unlink(tmpTar).catch(() => undefined);
24
+ await unlink(tmpBin).catch(() => undefined);
25
+ };
26
+ try {
27
+ onComplete({ status: 'progress', message: 'Downloading...' });
28
+ const response = await fetch(url);
29
+ if (!response.ok || !response.body)
30
+ throw new Error(`Download failed: ${response.status}`);
31
+ await pipeline(Readable.fromWeb(response.body), createWriteStream(tmpTar));
32
+ onComplete({ status: 'progress', message: 'Extracting...' });
33
+ await new Promise((resolve, reject) => {
34
+ exec(`tar -xzf "${tmpTar}" -C "${tmpdir()}"`, err => err ? reject(err) : resolve());
35
+ });
36
+ onComplete({ status: 'progress', message: 'Preparing...' });
37
+ await chmod(tmpBin, 0o755).catch((e) => {
38
+ if (e.code === 'ENOENT')
39
+ throw new Error('Extracted binary not found — the release archive may be corrupted');
40
+ throw e;
41
+ });
42
+ mkdirSync(TUNLI_BIN_DIR, { recursive: true });
43
+ await copyFile(tmpBin, TUNLI_BIN_NEW_PATH);
44
+ await cleanup();
45
+ onComplete({ status: 'success' });
46
+ return true;
47
+ }
48
+ catch (e) {
49
+ await cleanup();
50
+ onComplete({ status: 'failed', reason: e instanceof Error ? e.message : String(e) });
51
+ }
52
+ return false;
53
+ };
54
+ //# sourceMappingURL=downloadBinaryUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadBinaryUpdate.js","sourceRoot":"","sources":["../../../src/lib/Flow/downloadBinaryUpdate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const getLatestVersion: () => Promise<string | false>;
2
+ //# sourceMappingURL=getLatestVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLatestVersion.d.ts","sourceRoot":"","sources":["../../../src/lib/Flow/getLatestVersion.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,MAAM,GAAG,KAAK,CAS/D,CAAA"}
@@ -0,0 +1,13 @@
1
+ export const getLatestVersion = async () => {
2
+ try {
3
+ const response = await fetch('https://registry.npmjs.org/-/package/tunli/dist-tags');
4
+ if (!response.ok)
5
+ return false;
6
+ const data = await response.json();
7
+ return data.latest ?? false;
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ };
13
+ //# sourceMappingURL=getLatestVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLatestVersion.js","sourceRoot":"","sources":["../../../src/lib/Flow/getLatestVersion.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAA6B,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACpF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,KAAK,CAAA;QAC9B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAiB,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ export declare const PING_INTERVAL = 5000;
2
+ export declare const CHECK_FOR_UPDATES = true;
3
+ export declare const DEFAULT_API_SERVER_URL = "https://api.tunli.app";
4
+ export declare const RELEASE_DOWNLOAD_BASE_URL = "https://github.com/tunlijs/tunli-client/releases/latest/download";
5
+ export declare const CONFIG_DIR_NAME = ".tunli";
6
+ export declare const GLOBAL_CONFIG_DIR: string;
7
+ export declare const GLOBAL_CONFIG_FILEPATH: string;
8
+ export declare const LOCAL_CONFIG_FILEPATH: string;
9
+ export declare const DEFAULT_SERVER_NAME = "tunli.app";
10
+ export declare const DEFAULT_PROFILE_NAME = "default";
11
+ export declare const LOCAL_CONFIG_LOOKUP_FILES: string[];
12
+ export declare const FOUND_LOCAL_CONFIG_FILEPATH: string | undefined;
13
+ export declare const DAEMON_SOCKET_PATH: string;
14
+ export declare const TUNLI_BIN_DIR: string;
15
+ export declare const TUNLI_BIN_PATH: string;
16
+ export declare const TUNLI_BIN_NEW_PATH: string;
17
+ export declare const RESTART_DUMP_FILEPATH: string;
18
+ //# sourceMappingURL=defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../src/lib/defs.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,OAAO,CAAA;AAEjC,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAErC,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAE7D,eAAO,MAAM,yBAAyB,qEAAqE,CAAA;AAE3G,eAAO,MAAM,eAAe,WAAW,CAAA;AAEvC,eAAO,MAAM,iBAAiB,QAAsC,CAAC;AAErE,eAAO,MAAM,sBAAsB,QAA4C,CAAA;AAE/E,eAAO,MAAM,qBAAqB,QAAyD,CAAA;AAE3F,eAAO,MAAM,mBAAmB,cAAc,CAAA;AAC9C,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAE7C,eAAO,MAAM,yBAAyB,UAalC,CAAC;AAEL,eAAO,MAAM,2BAA2B,oBAA2D,CAAA;AAEnG,eAAO,MAAM,kBAAkB,QAA4C,CAAA;AAE3E,eAAO,MAAM,aAAa,QAAoC,CAAA;AAC9D,eAAO,MAAM,cAAc,QAAuC,CAAA;AAClE,eAAO,MAAM,kBAAkB,QAA8C,CAAA;AAC7E,eAAO,MAAM,qBAAqB,QAA0C,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { relative, resolve } from "path";
2
+ import { homedir } from "os";
3
+ import { existsSync } from "fs";
4
+ export const PING_INTERVAL = 5000;
5
+ export const CHECK_FOR_UPDATES = true;
6
+ export const DEFAULT_API_SERVER_URL = 'https://api.tunli.app';
7
+ export const RELEASE_DOWNLOAD_BASE_URL = 'https://github.com/tunlijs/tunli-client/releases/latest/download';
8
+ export const CONFIG_DIR_NAME = '.tunli';
9
+ export const GLOBAL_CONFIG_DIR = resolve(homedir(), CONFIG_DIR_NAME);
10
+ export const GLOBAL_CONFIG_FILEPATH = resolve(GLOBAL_CONFIG_DIR, `config.json`);
11
+ export const LOCAL_CONFIG_FILEPATH = resolve(process.cwd(), CONFIG_DIR_NAME, `config.json`);
12
+ export const DEFAULT_SERVER_NAME = 'tunli.app';
13
+ export const DEFAULT_PROFILE_NAME = 'default';
14
+ export const LOCAL_CONFIG_LOOKUP_FILES = (() => {
15
+ const localLookups = [];
16
+ const localLookupDirParts = process.cwd().split('/');
17
+ const home = homedir();
18
+ do {
19
+ const lookupDir = resolve(localLookupDirParts.length === 1 ? '/' : localLookupDirParts.join('/'));
20
+ const rel = relative(home, lookupDir);
21
+ if (rel.startsWith('..') || !rel)
22
+ break;
23
+ localLookups.push(resolve(lookupDir, CONFIG_DIR_NAME, `config.json`));
24
+ } while (localLookupDirParts.pop() !== undefined && localLookupDirParts.length);
25
+ return localLookups;
26
+ })();
27
+ export const FOUND_LOCAL_CONFIG_FILEPATH = LOCAL_CONFIG_LOOKUP_FILES.find(file => existsSync(file));
28
+ export const DAEMON_SOCKET_PATH = resolve(GLOBAL_CONFIG_DIR, 'daemon.sock');
29
+ export const TUNLI_BIN_DIR = resolve(GLOBAL_CONFIG_DIR, 'bin');
30
+ export const TUNLI_BIN_PATH = resolve(TUNLI_BIN_DIR, 'tunli-main');
31
+ export const TUNLI_BIN_NEW_PATH = resolve(TUNLI_BIN_DIR, 'tunli-main.update');
32
+ export const RESTART_DUMP_FILEPATH = resolve(GLOBAL_CONFIG_DIR, 'dump.json');
33
+ //# sourceMappingURL=defs.js.map