@cloudbase/cli 2.3.0 → 2.3.1

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 (453) hide show
  1. package/.editorconfig +9 -9
  2. package/.eslintignore +7 -7
  3. package/.eslintrc +35 -35
  4. package/.prettierrc.js +29 -29
  5. package/.vscode/launch.json +26 -26
  6. package/LICENSE +5 -5
  7. package/README.md +35 -35
  8. package/bin/cloudbase.js +6 -6
  9. package/bin/tcb.js +332 -332
  10. package/changelog.md +6 -6
  11. package/jest.config.js +17 -17
  12. package/package.json +3 -3
  13. package/post-install.js +61 -61
  14. package/runtime/nodejs/bootstrap.js +255 -255
  15. package/runtime/nodejs/runtime.js +183 -183
  16. package/templates/html/loginFail.html +90 -90
  17. package/templates/html/loginSuccess.html +86 -86
  18. package/templates/server/node/_gitignore +54 -54
  19. package/templates/server/node/cloudbaserc.json +10 -10
  20. package/templates/server/node/index.js +5 -5
  21. package/templates/server/node/package.json +9 -9
  22. package/tsconfig.json +19 -19
  23. package/tsconfig.test.json +13 -13
  24. package/lib/auth/index.js +0 -18
  25. package/lib/auth/login.js +0 -91
  26. package/lib/auth/logout.js +0 -20
  27. package/lib/commands/account/index.js +0 -18
  28. package/lib/commands/account/login.js +0 -206
  29. package/lib/commands/account/logout.js +0 -55
  30. package/lib/commands/common.js +0 -221
  31. package/lib/commands/env/base.js +0 -127
  32. package/lib/commands/env/domain.js +0 -221
  33. package/lib/commands/env/index.js +0 -19
  34. package/lib/commands/env/login.js +0 -270
  35. package/lib/commands/framework/index.js +0 -196
  36. package/lib/commands/functions/alias/getRoute.js +0 -98
  37. package/lib/commands/functions/alias/index.js +0 -18
  38. package/lib/commands/functions/alias/setRoute.js +0 -100
  39. package/lib/commands/functions/code-download.js +0 -123
  40. package/lib/commands/functions/code-update.js +0 -95
  41. package/lib/commands/functions/concurrency/delete.js +0 -70
  42. package/lib/commands/functions/concurrency/index.js +0 -19
  43. package/lib/commands/functions/concurrency/list.js +0 -81
  44. package/lib/commands/functions/concurrency/set.js +0 -72
  45. package/lib/commands/functions/config-update.js +0 -102
  46. package/lib/commands/functions/copy.js +0 -85
  47. package/lib/commands/functions/delete.js +0 -102
  48. package/lib/commands/functions/deploy.js +0 -294
  49. package/lib/commands/functions/detail.js +0 -168
  50. package/lib/commands/functions/index.js +0 -33
  51. package/lib/commands/functions/invoke.js +0 -141
  52. package/lib/commands/functions/layer/bind.js +0 -190
  53. package/lib/commands/functions/layer/common.js +0 -12
  54. package/lib/commands/functions/layer/create.js +0 -77
  55. package/lib/commands/functions/layer/delete.js +0 -91
  56. package/lib/commands/functions/layer/download.js +0 -109
  57. package/lib/commands/functions/layer/index.js +0 -23
  58. package/lib/commands/functions/layer/list.js +0 -112
  59. package/lib/commands/functions/layer/sort.js +0 -100
  60. package/lib/commands/functions/list.js +0 -94
  61. package/lib/commands/functions/log.js +0 -154
  62. package/lib/commands/functions/run.js +0 -240
  63. package/lib/commands/functions/trigger-create.js +0 -101
  64. package/lib/commands/functions/trigger-delete.js +0 -123
  65. package/lib/commands/functions/version/index.js +0 -18
  66. package/lib/commands/functions/version/list.js +0 -96
  67. package/lib/commands/functions/version/publish.js +0 -70
  68. package/lib/commands/gateway/create.js +0 -127
  69. package/lib/commands/gateway/delete.js +0 -110
  70. package/lib/commands/gateway/domain.js +0 -201
  71. package/lib/commands/gateway/index.js +0 -21
  72. package/lib/commands/gateway/list.js +0 -106
  73. package/lib/commands/gateway/switch.js +0 -141
  74. package/lib/commands/helpers/index.js +0 -19
  75. package/lib/commands/helpers/init.js +0 -394
  76. package/lib/commands/helpers/new.js +0 -129
  77. package/lib/commands/helpers/open.js +0 -89
  78. package/lib/commands/hosting/hosting.js +0 -377
  79. package/lib/commands/hosting/index.js +0 -17
  80. package/lib/commands/index.js +0 -29
  81. package/lib/commands/lowcode/app.js +0 -217
  82. package/lib/commands/lowcode/comps.js +0 -373
  83. package/lib/commands/lowcode/index.js +0 -18
  84. package/lib/commands/lowcode/utils.js +0 -83
  85. package/lib/commands/run/delete.js +0 -101
  86. package/lib/commands/run/image/common.js +0 -12
  87. package/lib/commands/run/image/delete.js +0 -90
  88. package/lib/commands/run/image/download.js +0 -85
  89. package/lib/commands/run/image/index.js +0 -21
  90. package/lib/commands/run/image/list.js +0 -103
  91. package/lib/commands/run/image/upload.js +0 -113
  92. package/lib/commands/run/index.js +0 -22
  93. package/lib/commands/run/list.js +0 -103
  94. package/lib/commands/run/service/config.js +0 -112
  95. package/lib/commands/run/service/deploy.js +0 -154
  96. package/lib/commands/run/service/index.js +0 -20
  97. package/lib/commands/run/service/list.js +0 -115
  98. package/lib/commands/run/service/update.js +0 -140
  99. package/lib/commands/run/standalonegateway/common.js +0 -12
  100. package/lib/commands/run/standalonegateway/create.js +0 -105
  101. package/lib/commands/run/standalonegateway/destroy.js +0 -81
  102. package/lib/commands/run/standalonegateway/index.js +0 -21
  103. package/lib/commands/run/standalonegateway/list.js +0 -77
  104. package/lib/commands/run/standalonegateway/package.js +0 -86
  105. package/lib/commands/run/standalonegateway/turn.js +0 -86
  106. package/lib/commands/run/version/common.js +0 -12
  107. package/lib/commands/run/version/create.js +0 -328
  108. package/lib/commands/run/version/delete.js +0 -89
  109. package/lib/commands/run/version/index.js +0 -21
  110. package/lib/commands/run/version/list.js +0 -108
  111. package/lib/commands/run/version/modify.js +0 -141
  112. package/lib/commands/run/version/update.js +0 -350
  113. package/lib/commands/smart.js +0 -123
  114. package/lib/commands/storage/index.js +0 -17
  115. package/lib/commands/storage/storage.js +0 -510
  116. package/lib/commands/third/index.js +0 -17
  117. package/lib/commands/third/thirdAttach.js +0 -77
  118. package/lib/completion/index.js +0 -15
  119. package/lib/constant.js +0 -141
  120. package/lib/decorators/captureError.js +0 -30
  121. package/lib/decorators/constants.js +0 -15
  122. package/lib/decorators/deprecate.js +0 -17
  123. package/lib/decorators/guard.js +0 -35
  124. package/lib/decorators/index.js +0 -25
  125. package/lib/decorators/injectParams.js +0 -58
  126. package/lib/decorators/params/common.js +0 -16
  127. package/lib/decorators/params/index.js +0 -34
  128. package/lib/env/domain.js +0 -42
  129. package/lib/env/index.js +0 -80
  130. package/lib/env/login.js +0 -78
  131. package/lib/error.js +0 -17
  132. package/lib/function/alias.js +0 -53
  133. package/lib/function/base.js +0 -222
  134. package/lib/function/code.js +0 -52
  135. package/lib/function/concurrency.js +0 -69
  136. package/lib/function/create.js +0 -71
  137. package/lib/function/delete.js +0 -52
  138. package/lib/function/index.js +0 -27
  139. package/lib/function/layer/attach.js +0 -64
  140. package/lib/function/layer/create.js +0 -61
  141. package/lib/function/layer/delete.js +0 -24
  142. package/lib/function/layer/download.js +0 -55
  143. package/lib/function/layer/index.js +0 -23
  144. package/lib/function/layer/list.js +0 -35
  145. package/lib/function/layer/sort.js +0 -25
  146. package/lib/function/trigger.js +0 -105
  147. package/lib/function/update.js +0 -40
  148. package/lib/function/version.js +0 -51
  149. package/lib/function/vpc.js +0 -35
  150. package/lib/gateway/index.js +0 -136
  151. package/lib/help.js +0 -53
  152. package/lib/hosting.js +0 -243
  153. package/lib/index.js +0 -13
  154. package/lib/logger.js +0 -19
  155. package/lib/run/delete.js +0 -22
  156. package/lib/run/image/build.js +0 -37
  157. package/lib/run/image/delete.js +0 -22
  158. package/lib/run/image/index.js +0 -20
  159. package/lib/run/image/info.js +0 -29
  160. package/lib/run/image/list.js +0 -30
  161. package/lib/run/index.js +0 -23
  162. package/lib/run/list.js +0 -39
  163. package/lib/run/repo.js +0 -31
  164. package/lib/run/service/common.js +0 -270
  165. package/lib/run/service/config.js +0 -69
  166. package/lib/run/service/deployPackage.js +0 -82
  167. package/lib/run/service/index.js +0 -22
  168. package/lib/run/service/list.js +0 -31
  169. package/lib/run/service/showLogs.js +0 -116
  170. package/lib/run/service/update.js +0 -83
  171. package/lib/run/standalonegateway/create.js +0 -32
  172. package/lib/run/standalonegateway/destroy.js +0 -28
  173. package/lib/run/standalonegateway/index.js +0 -21
  174. package/lib/run/standalonegateway/list.js +0 -44
  175. package/lib/run/standalonegateway/package/index.js +0 -17
  176. package/lib/run/standalonegateway/package/list.js +0 -32
  177. package/lib/run/standalonegateway/turn/index.js +0 -18
  178. package/lib/run/standalonegateway/turn/off.js +0 -28
  179. package/lib/run/standalonegateway/turn/on.js +0 -28
  180. package/lib/run/version/create.js +0 -50
  181. package/lib/run/version/delete.js +0 -23
  182. package/lib/run/version/index.js +0 -22
  183. package/lib/run/version/list.js +0 -24
  184. package/lib/run/version/modify.js +0 -24
  185. package/lib/run/version/repo.js +0 -33
  186. package/lib/run/version/update.js +0 -39
  187. package/lib/storage.js +0 -124
  188. package/lib/third/index.js +0 -25
  189. package/lib/types.js +0 -12
  190. package/lib/utils/auth.js +0 -28
  191. package/lib/utils/checkTcbrEnv.js +0 -75
  192. package/lib/utils/cli-table.js +0 -18
  193. package/lib/utils/commonParamsCheck.js +0 -48
  194. package/lib/utils/config.js +0 -51
  195. package/lib/utils/debug-logger.js +0 -30
  196. package/lib/utils/env.js +0 -220
  197. package/lib/utils/fs/del.js +0 -11
  198. package/lib/utils/fs/index.js +0 -87
  199. package/lib/utils/function-packer.js +0 -86
  200. package/lib/utils/index.js +0 -37
  201. package/lib/utils/log.js +0 -85
  202. package/lib/utils/net/cloud-api-request.js +0 -63
  203. package/lib/utils/net/credential.js +0 -60
  204. package/lib/utils/net/http-request.js +0 -107
  205. package/lib/utils/net/index.js +0 -21
  206. package/lib/utils/net/manager-service.js +0 -51
  207. package/lib/utils/net/proxy.js +0 -9
  208. package/lib/utils/notice.js +0 -37
  209. package/lib/utils/output/highlight.js +0 -11
  210. package/lib/utils/output/index.js +0 -19
  211. package/lib/utils/output/link.js +0 -16
  212. package/lib/utils/output/loading.js +0 -68
  213. package/lib/utils/parallel.js +0 -65
  214. package/lib/utils/platform/index.js +0 -19
  215. package/lib/utils/platform/mac.js +0 -37
  216. package/lib/utils/platform/os.js +0 -59
  217. package/lib/utils/platform/port.js +0 -26
  218. package/lib/utils/progress-bar.js +0 -43
  219. package/lib/utils/prompt/index.js +0 -17
  220. package/lib/utils/prompt/select.js +0 -52
  221. package/lib/utils/reporter/agree.js +0 -31
  222. package/lib/utils/reporter/download.js +0 -37
  223. package/lib/utils/reporter/index.js +0 -19
  224. package/lib/utils/reporter/usage.js +0 -32
  225. package/lib/utils/store/auth.js +0 -58
  226. package/lib/utils/store/common.js +0 -8
  227. package/lib/utils/store/db.js +0 -78
  228. package/lib/utils/store/index.js +0 -21
  229. package/lib/utils/store/usage.js +0 -9
  230. package/lib/utils/tcbrApi/callTcbrApi.js +0 -38
  231. package/lib/utils/tcbrApi/index.js +0 -17
  232. package/lib/utils/template.js +0 -130
  233. package/lib/utils/tools/encoding.js +0 -13
  234. package/lib/utils/tools/index.js +0 -20
  235. package/lib/utils/tools/object.js +0 -28
  236. package/lib/utils/tools/time.js +0 -49
  237. package/lib/utils/tools/uid.js +0 -25
  238. package/lib/utils/validator.js +0 -64
  239. package/types/auth/index.d.ts +0 -2
  240. package/types/auth/login.d.ts +0 -20
  241. package/types/auth/logout.d.ts +0 -1
  242. package/types/commands/account/index.d.ts +0 -2
  243. package/types/commands/account/login.d.ts +0 -15
  244. package/types/commands/account/logout.d.ts +0 -12
  245. package/types/commands/common.d.ts +0 -36
  246. package/types/commands/env/base.d.ts +0 -27
  247. package/types/commands/env/domain.d.ts +0 -53
  248. package/types/commands/env/index.d.ts +0 -3
  249. package/types/commands/env/login.d.ts +0 -47
  250. package/types/commands/framework/index.d.ts +0 -42
  251. package/types/commands/functions/alias/getRoute.d.ts +0 -13
  252. package/types/commands/functions/alias/index.d.ts +0 -2
  253. package/types/commands/functions/alias/setRoute.d.ts +0 -13
  254. package/types/commands/functions/code-download.d.ts +0 -18
  255. package/types/commands/functions/code-update.d.ts +0 -18
  256. package/types/commands/functions/concurrency/delete.d.ts +0 -13
  257. package/types/commands/functions/concurrency/index.d.ts +0 -3
  258. package/types/commands/functions/concurrency/list.d.ts +0 -13
  259. package/types/commands/functions/concurrency/set.d.ts +0 -13
  260. package/types/commands/functions/config-update.d.ts +0 -19
  261. package/types/commands/functions/copy.d.ts +0 -15
  262. package/types/commands/functions/delete.d.ts +0 -14
  263. package/types/commands/functions/deploy.d.ts +0 -21
  264. package/types/commands/functions/detail.d.ts +0 -16
  265. package/types/commands/functions/index.d.ts +0 -17
  266. package/types/commands/functions/invoke.d.ts +0 -15
  267. package/types/commands/functions/layer/bind.d.ts +0 -35
  268. package/types/commands/functions/layer/common.d.ts +0 -8
  269. package/types/commands/functions/layer/create.d.ts +0 -18
  270. package/types/commands/functions/layer/delete.d.ts +0 -18
  271. package/types/commands/functions/layer/download.d.ts +0 -18
  272. package/types/commands/functions/layer/index.d.ts +0 -7
  273. package/types/commands/functions/layer/list.d.ts +0 -19
  274. package/types/commands/functions/layer/sort.d.ts +0 -18
  275. package/types/commands/functions/list.d.ts +0 -14
  276. package/types/commands/functions/log.d.ts +0 -15
  277. package/types/commands/functions/run.d.ts +0 -17
  278. package/types/commands/functions/trigger-create.d.ts +0 -18
  279. package/types/commands/functions/trigger-delete.d.ts +0 -18
  280. package/types/commands/functions/version/index.d.ts +0 -2
  281. package/types/commands/functions/version/list.d.ts +0 -13
  282. package/types/commands/functions/version/publish.d.ts +0 -13
  283. package/types/commands/gateway/create.d.ts +0 -14
  284. package/types/commands/gateway/delete.d.ts +0 -14
  285. package/types/commands/gateway/domain.d.ts +0 -47
  286. package/types/commands/gateway/index.d.ts +0 -5
  287. package/types/commands/gateway/list.d.ts +0 -15
  288. package/types/commands/gateway/switch.d.ts +0 -31
  289. package/types/commands/helpers/index.d.ts +0 -3
  290. package/types/commands/helpers/init.d.ts +0 -22
  291. package/types/commands/helpers/new.d.ts +0 -17
  292. package/types/commands/helpers/open.d.ts +0 -11
  293. package/types/commands/hosting/hosting.d.ts +0 -66
  294. package/types/commands/hosting/index.d.ts +0 -1
  295. package/types/commands/index.d.ts +0 -13
  296. package/types/commands/lowcode/app.d.ts +0 -42
  297. package/types/commands/lowcode/comps.d.ts +0 -77
  298. package/types/commands/lowcode/index.d.ts +0 -2
  299. package/types/commands/lowcode/utils.d.ts +0 -9
  300. package/types/commands/run/delete.d.ts +0 -13
  301. package/types/commands/run/image/common.d.ts +0 -8
  302. package/types/commands/run/image/delete.d.ts +0 -17
  303. package/types/commands/run/image/download.d.ts +0 -17
  304. package/types/commands/run/image/index.d.ts +0 -5
  305. package/types/commands/run/image/list.d.ts +0 -17
  306. package/types/commands/run/image/upload.d.ts +0 -17
  307. package/types/commands/run/index.d.ts +0 -6
  308. package/types/commands/run/list.d.ts +0 -13
  309. package/types/commands/run/service/config.d.ts +0 -14
  310. package/types/commands/run/service/deploy.d.ts +0 -13
  311. package/types/commands/run/service/index.d.ts +0 -4
  312. package/types/commands/run/service/list.d.ts +0 -13
  313. package/types/commands/run/service/update.d.ts +0 -13
  314. package/types/commands/run/standalonegateway/common.d.ts +0 -8
  315. package/types/commands/run/standalonegateway/create.d.ts +0 -17
  316. package/types/commands/run/standalonegateway/destroy.d.ts +0 -17
  317. package/types/commands/run/standalonegateway/index.d.ts +0 -5
  318. package/types/commands/run/standalonegateway/list.d.ts +0 -17
  319. package/types/commands/run/standalonegateway/package.d.ts +0 -17
  320. package/types/commands/run/standalonegateway/turn.d.ts +0 -17
  321. package/types/commands/run/version/common.d.ts +0 -8
  322. package/types/commands/run/version/create.d.ts +0 -17
  323. package/types/commands/run/version/delete.d.ts +0 -17
  324. package/types/commands/run/version/index.d.ts +0 -5
  325. package/types/commands/run/version/list.d.ts +0 -17
  326. package/types/commands/run/version/modify.d.ts +0 -17
  327. package/types/commands/run/version/update.d.ts +0 -17
  328. package/types/commands/smart.d.ts +0 -1
  329. package/types/commands/storage/index.d.ts +0 -1
  330. package/types/commands/storage/storage.d.ts +0 -106
  331. package/types/commands/third/index.d.ts +0 -1
  332. package/types/commands/third/thirdAttach.d.ts +0 -15
  333. package/types/completion/index.d.ts +0 -4
  334. package/types/constant.d.ts +0 -71
  335. package/types/decorators/captureError.d.ts +0 -1
  336. package/types/decorators/constants.d.ts +0 -11
  337. package/types/decorators/deprecate.d.ts +0 -4
  338. package/types/decorators/guard.d.ts +0 -5
  339. package/types/decorators/index.d.ts +0 -7
  340. package/types/decorators/injectParams.d.ts +0 -1
  341. package/types/decorators/params/common.d.ts +0 -4
  342. package/types/decorators/params/index.d.ts +0 -8
  343. package/types/env/domain.d.ts +0 -11
  344. package/types/env/index.d.ts +0 -12
  345. package/types/env/login.d.ts +0 -16
  346. package/types/error.d.ts +0 -20
  347. package/types/function/alias.d.ts +0 -3
  348. package/types/function/base.d.ts +0 -31
  349. package/types/function/code.d.ts +0 -9
  350. package/types/function/concurrency.d.ts +0 -4
  351. package/types/function/create.d.ts +0 -3
  352. package/types/function/delete.d.ts +0 -8
  353. package/types/function/index.d.ts +0 -11
  354. package/types/function/layer/attach.d.ts +0 -9
  355. package/types/function/layer/create.d.ts +0 -7
  356. package/types/function/layer/delete.d.ts +0 -5
  357. package/types/function/layer/download.d.ts +0 -8
  358. package/types/function/layer/index.d.ts +0 -7
  359. package/types/function/layer/list.d.ts +0 -9
  360. package/types/function/layer/sort.d.ts +0 -10
  361. package/types/function/trigger.d.ts +0 -5
  362. package/types/function/update.d.ts +0 -2
  363. package/types/function/version.d.ts +0 -3
  364. package/types/function/vpc.d.ts +0 -2
  365. package/types/gateway/index.d.ts +0 -18
  366. package/types/help.d.ts +0 -1
  367. package/types/hosting.d.ts +0 -35
  368. package/types/index.d.ts +0 -4
  369. package/types/logger.d.ts +0 -3
  370. package/types/run/delete.d.ts +0 -2
  371. package/types/run/image/build.d.ts +0 -10
  372. package/types/run/image/delete.d.ts +0 -2
  373. package/types/run/image/index.d.ts +0 -4
  374. package/types/run/image/info.d.ts +0 -1
  375. package/types/run/image/list.d.ts +0 -3
  376. package/types/run/index.d.ts +0 -7
  377. package/types/run/list.d.ts +0 -2
  378. package/types/run/repo.d.ts +0 -5
  379. package/types/run/service/common.d.ts +0 -42
  380. package/types/run/service/config.d.ts +0 -23
  381. package/types/run/service/deployPackage.d.ts +0 -11
  382. package/types/run/service/index.d.ts +0 -6
  383. package/types/run/service/list.d.ts +0 -2
  384. package/types/run/service/showLogs.d.ts +0 -2
  385. package/types/run/service/update.d.ts +0 -3
  386. package/types/run/standalonegateway/create.d.ts +0 -2
  387. package/types/run/standalonegateway/destroy.d.ts +0 -2
  388. package/types/run/standalonegateway/index.d.ts +0 -5
  389. package/types/run/standalonegateway/list.d.ts +0 -2
  390. package/types/run/standalonegateway/package/index.d.ts +0 -1
  391. package/types/run/standalonegateway/package/list.d.ts +0 -2
  392. package/types/run/standalonegateway/turn/index.d.ts +0 -2
  393. package/types/run/standalonegateway/turn/off.d.ts +0 -2
  394. package/types/run/standalonegateway/turn/on.d.ts +0 -2
  395. package/types/run/version/create.d.ts +0 -10
  396. package/types/run/version/delete.d.ts +0 -2
  397. package/types/run/version/index.d.ts +0 -6
  398. package/types/run/version/list.d.ts +0 -2
  399. package/types/run/version/modify.d.ts +0 -2
  400. package/types/run/version/repo.d.ts +0 -10
  401. package/types/run/version/update.d.ts +0 -6
  402. package/types/storage.d.ts +0 -34
  403. package/types/third/index.d.ts +0 -1
  404. package/types/types.d.ts +0 -590
  405. package/types/utils/auth.d.ts +0 -3
  406. package/types/utils/checkTcbrEnv.d.ts +0 -3
  407. package/types/utils/cli-table.d.ts +0 -2
  408. package/types/utils/commonParamsCheck.d.ts +0 -3
  409. package/types/utils/config.d.ts +0 -26
  410. package/types/utils/debug-logger.d.ts +0 -1
  411. package/types/utils/env.d.ts +0 -5
  412. package/types/utils/fs/del.d.ts +0 -1
  413. package/types/utils/fs/index.d.ts +0 -7
  414. package/types/utils/function-packer.d.ts +0 -18
  415. package/types/utils/index.d.ts +0 -21
  416. package/types/utils/log.d.ts +0 -22
  417. package/types/utils/net/cloud-api-request.d.ts +0 -9
  418. package/types/utils/net/credential.d.ts +0 -5
  419. package/types/utils/net/http-request.d.ts +0 -8
  420. package/types/utils/net/index.d.ts +0 -5
  421. package/types/utils/net/manager-service.d.ts +0 -4
  422. package/types/utils/net/proxy.d.ts +0 -1
  423. package/types/utils/notice.d.ts +0 -1
  424. package/types/utils/output/highlight.d.ts +0 -1
  425. package/types/utils/output/index.d.ts +0 -3
  426. package/types/utils/output/link.d.ts +0 -1
  427. package/types/utils/output/loading.d.ts +0 -18
  428. package/types/utils/parallel.d.ts +0 -11
  429. package/types/utils/platform/index.d.ts +0 -3
  430. package/types/utils/platform/mac.d.ts +0 -2
  431. package/types/utils/platform/os.d.ts +0 -2
  432. package/types/utils/platform/port.d.ts +0 -1
  433. package/types/utils/progress-bar.d.ts +0 -1
  434. package/types/utils/prompt/index.d.ts +0 -1
  435. package/types/utils/prompt/select.d.ts +0 -4
  436. package/types/utils/reporter/agree.d.ts +0 -1
  437. package/types/utils/reporter/download.d.ts +0 -1
  438. package/types/utils/reporter/index.d.ts +0 -3
  439. package/types/utils/reporter/usage.d.ts +0 -1
  440. package/types/utils/store/auth.d.ts +0 -8
  441. package/types/utils/store/common.d.ts +0 -2
  442. package/types/utils/store/db.d.ts +0 -15
  443. package/types/utils/store/index.d.ts +0 -5
  444. package/types/utils/store/usage.d.ts +0 -2
  445. package/types/utils/tcbrApi/callTcbrApi.d.ts +0 -1
  446. package/types/utils/tcbrApi/index.d.ts +0 -1
  447. package/types/utils/template.d.ts +0 -8
  448. package/types/utils/tools/encoding.d.ts +0 -1
  449. package/types/utils/tools/index.d.ts +0 -4
  450. package/types/utils/tools/object.d.ts +0 -1
  451. package/types/utils/tools/time.d.ts +0 -2
  452. package/types/utils/tools/uid.d.ts +0 -2
  453. package/types/utils/validator.d.ts +0 -9
package/bin/tcb.js CHANGED
@@ -1,333 +1,333 @@
1
- #!/usr/bin/env node
2
- const os = require('os')
3
- const yargsParser = require('yargs-parser')
4
- const chalk = require('chalk')
5
- const address = require('address')
6
- const { program } = require('commander')
7
- const Sentry = require('@sentry/node')
8
- const logSymbols = require('log-symbols')
9
- const didYouMean = require('didyoumean')
10
- const updateNotifier = require('update-notifier')
11
- const frameworkPkg = require('@cloudbase/framework-core/package.json')
12
- const wedaPkg = require('@cloudbase/lowcode-cli/package.json')
13
- const { CloudApiService } = require('@cloudbase/cloud-api')
14
- const { getCredentialWithoutCheck } = require('@cloudbase/toolbox')
15
- const { Confirm } = require('enquirer')
16
- const execa = require('execa')
17
-
18
- const pkg = require('../package.json')
19
- const store = require('../lib/utils/store')
20
- const { ALL_COMMANDS } = require('../lib/constant')
21
- const { getProxy } = require('../lib/utils/net')
22
- const { getCloudBaseConfig, getPrivateSettings } = require('../lib/utils/config')
23
- const { registerCommands } = require('../lib')
24
-
25
-
26
- const regionSupported = ['ap-shanghai', 'ap-beijing', 'ap-guangzhou']
27
- const regionSupportedMap = {
28
- 'ap-shanghai': '上海',
29
- 'ap-beijing': '北京',
30
- 'ap-guangzhou': '广州',
31
- 'sh': '上海',
32
- 'bj': '北京',
33
- 'gz': '广州'
34
- }
35
-
36
- async function main() {
37
- let processArgv = process.argv
38
- const isBeta = pkg.version.indexOf('-') > -1
39
- process.CLI_VERSION = pkg.version
40
-
41
- const [major, minor] = process.versions.node.split('.').slice(0, 2)
42
-
43
- // Node 版本检验提示
44
- if (Number(major) < 8 || (Number(major) === 8 && Number(minor) < 6)) {
45
- console.log(
46
- chalk.bold.red(
47
- '您的 Node 版本较低,CloudBase CLI 可能无法正常运行,请升级 Node 到 v8.6.0 以上!\n'
48
- )
49
- )
50
- }
51
-
52
- // Sentry 错误上报
53
- Sentry.init({
54
- release: pkg.version,
55
- dsn: 'https://fff0077d06624655ad70d1ee25df419e@report.url.cn/sentry/1782',
56
- httpsProxy: getProxy() || '',
57
- serverName: os.hostname(),
58
- integrations: [
59
- new Sentry.Integrations.OnUnhandledRejection({
60
- mode: 'none'
61
- })
62
- ]
63
- })
64
-
65
- // 输出版本信息
66
- console.log(chalk.gray(`CloudBase CLI ${pkg.version}`))
67
- console.log(chalk.gray(`CloudBase Framework ${frameworkPkg.version}`))
68
- console.log(chalk.gray(`Weda ${wedaPkg.version}`))
69
-
70
-
71
- const yargsParsedResult = yargsParser(process.argv.slice(2));
72
- const config = await getCloudBaseConfig(yargsParsedResult.configFile);
73
- const privateSettings = getPrivateSettings(config);
74
- if (privateSettings) {
75
- console.log(chalk.gray(`检测到私有化配置`))
76
- if (privateSettings.endpoints && privateSettings.endpoints.cliApi) {
77
- // 初始化 lowcode 服务cliapi入口
78
- process.env.CLOUDBASE_LOWCODE_CLOUDAPI_URL = privateSettings.endpoints.cliApi;
79
- }
80
-
81
- }
82
- // 注册命令
83
- await registerCommands()
84
-
85
- // 设置 Sentry 上报的用户 uin
86
- Sentry.configureScope((scope) => {
87
- try {
88
- const credential = store.authStore.get('credential') || {}
89
- scope.setUser({
90
- uin: credential.uin || '',
91
- ip: address.ip() || ''
92
- })
93
- } catch (e) {
94
- Sentry.captureException(e)
95
- }
96
- })
97
-
98
- // 设置 options 选项
99
- program.storeOptionsAsProperties(false)
100
- program.option('--verbose', '打印出内部运行信息')
101
- program.option('--mode <mode>', '指定加载 env 文件的环境')
102
- program.option('--config-file <path>', '设置配置文件,默认为 cloudbaserc.json')
103
- program.option('-r, --region <region>', '指定环境地域')
104
-
105
- if (!privateSettings) {
106
- // HACK: 隐藏自动生成的 help 信息
107
- program.helpOption(false)
108
- }
109
- const isCommandEmpty = yargsParsedResult._.length === 0;
110
-
111
- // -v 时输出的版本信息,设置时避免影响其他命令使用 -v
112
- if (isCommandEmpty) {
113
- program.version(
114
- `\nCLI: ${pkg.version}\nFramework: ${frameworkPkg.version}\nWeda: ${wedaPkg.version}`,
115
- '-v, --version',
116
- '输出当前 CloudBase CLI 版本'
117
- )
118
- }
119
-
120
- // 处理无效命令
121
- program.action(() => {
122
- const args = program.args
123
- if (!Array.isArray(args) || !args.length) {
124
- return
125
- }
126
- const cmd = args.join(' ')
127
- console.log(chalk.bold.red('Error: ') + `${cmd} 不是有效的命令`)
128
- didYouMean.threshold = 0.5
129
- didYouMean.caseSensitive = false
130
- const suggest = didYouMean(cmd, ALL_COMMANDS)
131
- if (suggest) {
132
- console.log(chalk.bold(`\n您是不是想使用命令:tcb ${suggest}\n`))
133
- }
134
- console.log(`💡使用 ${chalk.bold('tcb -h')} 查看所有命令`)
135
- })
136
-
137
- // 没有使用命令
138
- if (isCommandEmpty) {
139
- if (privateSettings) {
140
- program.outputHelp()
141
- } else {
142
- if (['-h', '--help'].includes(processArgv[2])) {
143
- // 需要隐藏的选项
144
- const hideArgs = ['-h', '--help']
145
- hideArgs.forEach((arg) => {
146
- const index = processArgv.indexOf(arg)
147
- if (index > -1) {
148
- processArgv.splice(index, 1)
149
- }
150
- })
151
- const { outputHelpInfo } = require('../lib/help')
152
- outputHelpInfo()
153
- } else if (!['-v', '--version'].includes(processArgv[2])) {
154
- // HACK: framework 智能命令
155
- const { smartDeploy } = require('../lib')
156
- smartDeploy()
157
- }
158
- }
159
- }
160
-
161
- try {
162
- program.parse(processArgv)
163
- } catch (e) {
164
- const errMsg = `${logSymbols.error} ${e.message || '参数异常,请检查您是否使用了正确的命令!'}`
165
- console.log(errMsg)
166
- }
167
-
168
- /**
169
- * 处理异常
170
- */
171
- async function errorHandler(err) {
172
- process.emit('tcbError')
173
- const stackIngoreErrors = ['TencentCloudSDKHttpException', 'CloudBaseError']
174
- // 忽略自定义错误的错误栈
175
- if (err && err.stack && !stackIngoreErrors.includes(err.name)) {
176
- console.log(err.stack)
177
- }
178
-
179
- // 3 空格,兼容中文字符编码长度问题
180
- if (err && err.message) {
181
- let errMsg = logSymbols.error + ' ' + err.message
182
- errMsg += err.requestId ? `\n${err.requestId}` : ''
183
- console.log(errMsg)
184
-
185
- // 多地域错误提示
186
- if (errMsg.includes('Environment') && errMsg.includes('not found')) {
187
- // 检查是否已经指定了 -r 或 --region 参数,如未指定则尝试获取地域信息
188
- const regionSpecified = processArgv.indexOf('-r') !== -1 || processArgv.indexOf('--region') !== -1
189
- const region = yargsParsedResult.r || yargsParsedResult.region
190
- const multiRegionErrMsg = `\n此环境可能不属于当前账号,或为非${regionSupportedMap[region] || '上海'}地域环境,如需切换地域请追加参数(例:-r gz),请检查环境归属,参考多地域使用方法:https://docs.cloudbase.net/cli-v1/region.html`
191
- if (!regionSpecified) {
192
-
193
- // 从 -e 参数、--envId 参数和配置文件中获取环境 id
194
- const envId = yargsParsedResult.e || yargsParsedResult.envId || config.envId
195
-
196
- // 调用 API 接口尝试查询环境信息
197
- const predictRegion = await tryTellEnvRegion(envId)
198
-
199
- if (regionSupported.includes(predictRegion)) {
200
- // 让用户选择是否切换地域
201
- const prompt = new Confirm({
202
- type: 'confirm',
203
- name: 'confirm',
204
- message: `该环境可能属于 ${regionSupportedMap[predictRegion]} 地域,是否切换地域并重新执行命令?`,
205
- initial: 'Y'
206
- })
207
- const confirm = await prompt.run()
208
- if (confirm) {
209
- // 检查原始命令是否已经追加了 -r 参数,如果有则替换,如果没有则追加
210
- const regionArgIndex = processArgv.indexOf('-r')
211
- if (regionArgIndex !== -1) {
212
- processArgv[regionArgIndex + 1] = predictRegion
213
- } else {
214
- processArgv.push('-r', predictRegion)
215
- }
216
- // 重新执行命令
217
- const newArgvStr = processArgv.slice(2).join(' ')
218
- console.log(`\n${chalk.yellow.bold('正在重新执行命令:')} tcb ${newArgvStr}\n`)
219
- await execa('tcb', processArgv.slice(2), {
220
- stdio: 'inherit'
221
- })
222
- process.emit('tcbExit')
223
- process.exit(0)
224
- } else {
225
- console.log(chalk.yellow.bold(multiRegionErrMsg))
226
- }
227
- }
228
- } else {
229
- console.log(chalk.yellow.bold(multiRegionErrMsg))
230
- }
231
- }
232
- }
233
-
234
- // 输出详细的错误信息
235
- if (processArgv.includes('--verbose')) {
236
- console.log(err)
237
- }
238
-
239
- process.emit('tcbExit')
240
- setTimeout(() => {
241
- process.exit(1)
242
- }, 1000)
243
- }
244
-
245
- const isTokenExpired = (credential, gap = 120) =>
246
- credential.accessTokenExpired && Number(credential.accessTokenExpired) < Date.now() + gap * 1000
247
-
248
- async function tryTellEnvRegion(envId) {
249
- // 依次调用不同地域的 API 接口查询环境信息
250
- const fetchedRegion = await Promise.all(regionSupported.map(async region => {
251
- const { EnvList = [] } = await fetchEnvInfoWithRegion(envId, region)
252
- if (EnvList.length !== 0 && EnvList.find(item => item.EnvId === envId)) {
253
- return res.EnvList[0].Region
254
- }
255
- return ''
256
- }))
257
-
258
- let predictRegion = ''
259
- fetchedRegion.forEach(region => {
260
- if (region) {
261
- predictRegion = region
262
- }
263
- })
264
- return predictRegion
265
- }
266
-
267
- // 在指定地域调用 API 接口查询环境信息
268
- async function fetchEnvInfoWithRegion(envId, region) {
269
- let commonCredential = {}
270
- const commonOpts = {
271
- service: 'tcb',
272
- version: '2019-09-24',
273
- proxy: getProxy(),
274
- timeout: 15000,
275
- getCredential: async () => {
276
- if (commonCredential.secretId && !isTokenExpired(commonCredential)) {
277
- return commonCredential
278
- }
279
- const credential = await getCredentialWithoutCheck()
280
- if (!credential) {
281
- throw new Error('无有效身份信息,请使用 cloudbase login 登录')
282
- }
283
- commonCredential = credential
284
- return {
285
- ...credential,
286
- tokenExpired: Number(credential.accessTokenExpired)
287
- }
288
- }
289
- }
290
- const apiName = 'DescribeEnvs'
291
- const tcbApi = new CloudApiService({
292
- ...commonOpts,
293
- region
294
- })
295
- const res = await tcbApi.request(apiName, {
296
- EnvId: envId,
297
- })
298
- return res
299
- }
300
-
301
- process.on('uncaughtException', errorHandler)
302
- process.on('unhandledRejection', errorHandler)
303
-
304
- // 检查更新
305
- const ONE_DAY = 86400000
306
- // Beta 版 1 个小时检查一次,稳定版 1 天检查一次
307
- const CheckInterval = isBeta ? 3600000 : ONE_DAY
308
-
309
- const notifier = updateNotifier({
310
- pkg,
311
- distTag: isBeta ? 'beta' : 'latest',
312
- // 检查更新间隔 1 天
313
- updateCheckInterval: CheckInterval
314
- })
315
-
316
- notifier.notify({
317
- isGlobal: true
318
- })
319
-
320
- }
321
-
322
- if (require.main === module) {
323
- try {
324
- main()
325
- } catch (error) {
326
- console.log(error)
327
- }
328
- }
329
- process.on('unhandledRejection', (err) => {
330
- console.log('unhandledRejection', err)
331
- })
332
-
1
+ #!/usr/bin/env node
2
+ const os = require('os')
3
+ const yargsParser = require('yargs-parser')
4
+ const chalk = require('chalk')
5
+ const address = require('address')
6
+ const { program } = require('commander')
7
+ const Sentry = require('@sentry/node')
8
+ const logSymbols = require('log-symbols')
9
+ const didYouMean = require('didyoumean')
10
+ const updateNotifier = require('update-notifier')
11
+ const frameworkPkg = require('@cloudbase/framework-core/package.json')
12
+ const wedaPkg = require('@cloudbase/lowcode-cli/package.json')
13
+ const { CloudApiService } = require('@cloudbase/cloud-api')
14
+ const { getCredentialWithoutCheck } = require('@cloudbase/toolbox')
15
+ const { Confirm } = require('enquirer')
16
+ const execa = require('execa')
17
+
18
+ const pkg = require('../package.json')
19
+ const store = require('../lib/utils/store')
20
+ const { ALL_COMMANDS } = require('../lib/constant')
21
+ const { getProxy } = require('../lib/utils/net')
22
+ const { getCloudBaseConfig, getPrivateSettings } = require('../lib/utils/config')
23
+ const { registerCommands } = require('../lib')
24
+
25
+
26
+ const regionSupported = ['ap-shanghai', 'ap-beijing', 'ap-guangzhou']
27
+ const regionSupportedMap = {
28
+ 'ap-shanghai': '上海',
29
+ 'ap-beijing': '北京',
30
+ 'ap-guangzhou': '广州',
31
+ 'sh': '上海',
32
+ 'bj': '北京',
33
+ 'gz': '广州'
34
+ }
35
+
36
+ async function main() {
37
+ let processArgv = process.argv
38
+ const isBeta = pkg.version.indexOf('-') > -1
39
+ process.CLI_VERSION = pkg.version
40
+
41
+ const [major, minor] = process.versions.node.split('.').slice(0, 2)
42
+
43
+ // Node 版本检验提示
44
+ if (Number(major) < 8 || (Number(major) === 8 && Number(minor) < 6)) {
45
+ console.log(
46
+ chalk.bold.red(
47
+ '您的 Node 版本较低,CloudBase CLI 可能无法正常运行,请升级 Node 到 v8.6.0 以上!\n'
48
+ )
49
+ )
50
+ }
51
+
52
+ // Sentry 错误上报
53
+ Sentry.init({
54
+ release: pkg.version,
55
+ dsn: 'https://fff0077d06624655ad70d1ee25df419e@report.url.cn/sentry/1782',
56
+ httpsProxy: getProxy() || '',
57
+ serverName: os.hostname(),
58
+ integrations: [
59
+ new Sentry.Integrations.OnUnhandledRejection({
60
+ mode: 'none'
61
+ })
62
+ ]
63
+ })
64
+
65
+ // 输出版本信息
66
+ console.log(chalk.gray(`CloudBase CLI ${pkg.version}`))
67
+ console.log(chalk.gray(`CloudBase Framework ${frameworkPkg.version}`))
68
+ console.log(chalk.gray(`Weda ${wedaPkg.version}`))
69
+
70
+
71
+ const yargsParsedResult = yargsParser(process.argv.slice(2));
72
+ const config = await getCloudBaseConfig(yargsParsedResult.configFile);
73
+ const privateSettings = getPrivateSettings(config);
74
+ if (privateSettings) {
75
+ console.log(chalk.gray(`检测到私有化配置`))
76
+ if (privateSettings.endpoints && privateSettings.endpoints.cliApi) {
77
+ // 初始化 lowcode 服务cliapi入口
78
+ process.env.CLOUDBASE_LOWCODE_CLOUDAPI_URL = privateSettings.endpoints.cliApi;
79
+ }
80
+
81
+ }
82
+ // 注册命令
83
+ await registerCommands()
84
+
85
+ // 设置 Sentry 上报的用户 uin
86
+ Sentry.configureScope((scope) => {
87
+ try {
88
+ const credential = store.authStore.get('credential') || {}
89
+ scope.setUser({
90
+ uin: credential.uin || '',
91
+ ip: address.ip() || ''
92
+ })
93
+ } catch (e) {
94
+ Sentry.captureException(e)
95
+ }
96
+ })
97
+
98
+ // 设置 options 选项
99
+ program.storeOptionsAsProperties(false)
100
+ program.option('--verbose', '打印出内部运行信息')
101
+ program.option('--mode <mode>', '指定加载 env 文件的环境')
102
+ program.option('--config-file <path>', '设置配置文件,默认为 cloudbaserc.json')
103
+ program.option('-r, --region <region>', '指定环境地域')
104
+
105
+ if (!privateSettings) {
106
+ // HACK: 隐藏自动生成的 help 信息
107
+ program.helpOption(false)
108
+ }
109
+ const isCommandEmpty = yargsParsedResult._.length === 0;
110
+
111
+ // -v 时输出的版本信息,设置时避免影响其他命令使用 -v
112
+ if (isCommandEmpty) {
113
+ program.version(
114
+ `\nCLI: ${pkg.version}\nFramework: ${frameworkPkg.version}\nWeda: ${wedaPkg.version}`,
115
+ '-v, --version',
116
+ '输出当前 CloudBase CLI 版本'
117
+ )
118
+ }
119
+
120
+ // 处理无效命令
121
+ program.action(() => {
122
+ const args = program.args
123
+ if (!Array.isArray(args) || !args.length) {
124
+ return
125
+ }
126
+ const cmd = args.join(' ')
127
+ console.log(chalk.bold.red('Error: ') + `${cmd} 不是有效的命令`)
128
+ didYouMean.threshold = 0.5
129
+ didYouMean.caseSensitive = false
130
+ const suggest = didYouMean(cmd, ALL_COMMANDS)
131
+ if (suggest) {
132
+ console.log(chalk.bold(`\n您是不是想使用命令:tcb ${suggest}\n`))
133
+ }
134
+ console.log(`💡使用 ${chalk.bold('tcb -h')} 查看所有命令`)
135
+ })
136
+
137
+ // 没有使用命令
138
+ if (isCommandEmpty) {
139
+ if (privateSettings) {
140
+ program.outputHelp()
141
+ } else {
142
+ if (['-h', '--help'].includes(processArgv[2])) {
143
+ // 需要隐藏的选项
144
+ const hideArgs = ['-h', '--help']
145
+ hideArgs.forEach((arg) => {
146
+ const index = processArgv.indexOf(arg)
147
+ if (index > -1) {
148
+ processArgv.splice(index, 1)
149
+ }
150
+ })
151
+ const { outputHelpInfo } = require('../lib/help')
152
+ outputHelpInfo()
153
+ } else if (!['-v', '--version'].includes(processArgv[2])) {
154
+ // HACK: framework 智能命令
155
+ const { smartDeploy } = require('../lib')
156
+ smartDeploy()
157
+ }
158
+ }
159
+ }
160
+
161
+ try {
162
+ program.parse(processArgv)
163
+ } catch (e) {
164
+ const errMsg = `${logSymbols.error} ${e.message || '参数异常,请检查您是否使用了正确的命令!'}`
165
+ console.log(errMsg)
166
+ }
167
+
168
+ /**
169
+ * 处理异常
170
+ */
171
+ async function errorHandler(err) {
172
+ process.emit('tcbError')
173
+ const stackIngoreErrors = ['TencentCloudSDKHttpException', 'CloudBaseError']
174
+ // 忽略自定义错误的错误栈
175
+ if (err && err.stack && !stackIngoreErrors.includes(err.name)) {
176
+ console.log(err.stack)
177
+ }
178
+
179
+ // 3 空格,兼容中文字符编码长度问题
180
+ if (err && err.message) {
181
+ let errMsg = logSymbols.error + ' ' + err.message
182
+ errMsg += err.requestId ? `\n${err.requestId}` : ''
183
+ console.log(errMsg)
184
+
185
+ // 多地域错误提示
186
+ if (errMsg.includes('Environment') && errMsg.includes('not found')) {
187
+ // 检查是否已经指定了 -r 或 --region 参数,如未指定则尝试获取地域信息
188
+ const regionSpecified = processArgv.indexOf('-r') !== -1 || processArgv.indexOf('--region') !== -1
189
+ const region = yargsParsedResult.r || yargsParsedResult.region
190
+ const multiRegionErrMsg = `\n此环境可能不属于当前账号,或为非${regionSupportedMap[region] || '上海'}地域环境,如需切换地域请追加参数(例:-r gz),请检查环境归属,参考多地域使用方法:https://docs.cloudbase.net/cli-v1/region.html`
191
+ if (!regionSpecified) {
192
+
193
+ // 从 -e 参数、--envId 参数和配置文件中获取环境 id
194
+ const envId = yargsParsedResult.e || yargsParsedResult.envId || config.envId
195
+
196
+ // 调用 API 接口尝试查询环境信息
197
+ const predictRegion = await tryTellEnvRegion(envId)
198
+
199
+ if (regionSupported.includes(predictRegion)) {
200
+ // 让用户选择是否切换地域
201
+ const prompt = new Confirm({
202
+ type: 'confirm',
203
+ name: 'confirm',
204
+ message: `该环境可能属于 ${regionSupportedMap[predictRegion]} 地域,是否切换地域并重新执行命令?`,
205
+ initial: 'Y'
206
+ })
207
+ const confirm = await prompt.run()
208
+ if (confirm) {
209
+ // 检查原始命令是否已经追加了 -r 参数,如果有则替换,如果没有则追加
210
+ const regionArgIndex = processArgv.indexOf('-r')
211
+ if (regionArgIndex !== -1) {
212
+ processArgv[regionArgIndex + 1] = predictRegion
213
+ } else {
214
+ processArgv.push('-r', predictRegion)
215
+ }
216
+ // 重新执行命令
217
+ const newArgvStr = processArgv.slice(2).join(' ')
218
+ console.log(`\n${chalk.yellow.bold('正在重新执行命令:')} tcb ${newArgvStr}\n`)
219
+ await execa('tcb', processArgv.slice(2), {
220
+ stdio: 'inherit'
221
+ })
222
+ process.emit('tcbExit')
223
+ process.exit(0)
224
+ } else {
225
+ console.log(chalk.yellow.bold(multiRegionErrMsg))
226
+ }
227
+ }
228
+ } else {
229
+ console.log(chalk.yellow.bold(multiRegionErrMsg))
230
+ }
231
+ }
232
+ }
233
+
234
+ // 输出详细的错误信息
235
+ if (processArgv.includes('--verbose')) {
236
+ console.log(err)
237
+ }
238
+
239
+ process.emit('tcbExit')
240
+ setTimeout(() => {
241
+ process.exit(1)
242
+ }, 1000)
243
+ }
244
+
245
+ const isTokenExpired = (credential, gap = 120) =>
246
+ credential.accessTokenExpired && Number(credential.accessTokenExpired) < Date.now() + gap * 1000
247
+
248
+ async function tryTellEnvRegion(envId) {
249
+ // 依次调用不同地域的 API 接口查询环境信息
250
+ const fetchedRegion = await Promise.all(regionSupported.map(async region => {
251
+ const { EnvList = [] } = await fetchEnvInfoWithRegion(envId, region)
252
+ if (EnvList.length !== 0 && EnvList.find(item => item.EnvId === envId)) {
253
+ return res.EnvList[0].Region
254
+ }
255
+ return ''
256
+ }))
257
+
258
+ let predictRegion = ''
259
+ fetchedRegion.forEach(region => {
260
+ if (region) {
261
+ predictRegion = region
262
+ }
263
+ })
264
+ return predictRegion
265
+ }
266
+
267
+ // 在指定地域调用 API 接口查询环境信息
268
+ async function fetchEnvInfoWithRegion(envId, region) {
269
+ let commonCredential = {}
270
+ const commonOpts = {
271
+ service: 'tcb',
272
+ version: '2019-09-24',
273
+ proxy: getProxy(),
274
+ timeout: 15000,
275
+ getCredential: async () => {
276
+ if (commonCredential.secretId && !isTokenExpired(commonCredential)) {
277
+ return commonCredential
278
+ }
279
+ const credential = await getCredentialWithoutCheck()
280
+ if (!credential) {
281
+ throw new Error('无有效身份信息,请使用 cloudbase login 登录')
282
+ }
283
+ commonCredential = credential
284
+ return {
285
+ ...credential,
286
+ tokenExpired: Number(credential.accessTokenExpired)
287
+ }
288
+ }
289
+ }
290
+ const apiName = 'DescribeEnvs'
291
+ const tcbApi = new CloudApiService({
292
+ ...commonOpts,
293
+ region
294
+ })
295
+ const res = await tcbApi.request(apiName, {
296
+ EnvId: envId,
297
+ })
298
+ return res
299
+ }
300
+
301
+ process.on('uncaughtException', errorHandler)
302
+ process.on('unhandledRejection', errorHandler)
303
+
304
+ // 检查更新
305
+ const ONE_DAY = 86400000
306
+ // Beta 版 1 个小时检查一次,稳定版 1 天检查一次
307
+ const CheckInterval = isBeta ? 3600000 : ONE_DAY
308
+
309
+ const notifier = updateNotifier({
310
+ pkg,
311
+ distTag: isBeta ? 'beta' : 'latest',
312
+ // 检查更新间隔 1 天
313
+ updateCheckInterval: CheckInterval
314
+ })
315
+
316
+ notifier.notify({
317
+ isGlobal: true
318
+ })
319
+
320
+ }
321
+
322
+ if (require.main === module) {
323
+ try {
324
+ main()
325
+ } catch (error) {
326
+ console.log(error)
327
+ }
328
+ }
329
+ process.on('unhandledRejection', (err) => {
330
+ console.log('unhandledRejection', err)
331
+ })
332
+
333
333
  exports.main = main