@cloudbase/cli 1.12.7-alpha.4 → 2.0.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 (317) 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 +16 -16
  6. package/.vscode/settings.json +3 -0
  7. package/LICENSE +5 -5
  8. package/README.md +35 -35
  9. package/bin/cloudbase.js +5 -5
  10. package/bin/tcb.js +0 -0
  11. package/changelog.md +6 -6
  12. package/jest.config.js +17 -17
  13. package/lib/commands/account/login.js +18 -18
  14. package/lib/commands/run/create.js +6 -1
  15. package/lib/commands/run/delete.js +6 -1
  16. package/lib/commands/run/image/common.js +1 -1
  17. package/lib/commands/run/image/delete.js +5 -0
  18. package/lib/commands/run/image/download.js +5 -0
  19. package/lib/commands/run/image/list.js +5 -0
  20. package/lib/commands/run/image/upload.js +5 -0
  21. package/lib/commands/run/index.js +1 -0
  22. package/lib/commands/run/list.js +7 -1
  23. package/lib/commands/run/service/config.js +112 -0
  24. package/lib/commands/run/service/create.js +140 -0
  25. package/lib/commands/run/service/deploy.js +145 -0
  26. package/lib/commands/run/service/index.js +21 -0
  27. package/lib/commands/run/service/list.js +115 -0
  28. package/lib/commands/run/service/update.js +132 -0
  29. package/lib/commands/run/version/common.js +1 -1
  30. package/lib/commands/run/version/create.js +5 -0
  31. package/lib/commands/run/version/delete.js +5 -0
  32. package/lib/commands/run/version/list.js +5 -0
  33. package/lib/commands/run/version/modify.js +5 -0
  34. package/lib/commands/run/version/update.js +5 -0
  35. package/lib/commands/storage/storage.js +1 -1
  36. package/lib/constant.js +20 -1
  37. package/lib/env/login.js +7 -7
  38. package/lib/help.js +40 -38
  39. package/lib/run/index.js +1 -0
  40. package/lib/run/service/common.js +163 -0
  41. package/lib/run/service/config.js +70 -0
  42. package/lib/run/service/create.js +67 -0
  43. package/lib/run/service/deployPackage.js +87 -0
  44. package/lib/run/service/index.js +23 -0
  45. package/lib/run/service/list.js +31 -0
  46. package/lib/run/service/showLogs.js +116 -0
  47. package/lib/run/service/update.js +83 -0
  48. package/lib/utils/checkTcbrEnv.js +74 -0
  49. package/lib/utils/commonParamsCheck.js +48 -0
  50. package/lib/utils/index.js +3 -0
  51. package/lib/utils/tcbrApi/callTcbrApi.js +38 -0
  52. package/lib/utils/tcbrApi/index.js +17 -0
  53. package/lib/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.js +268 -0
  54. package/lib/utils/tcbrApi/tcbr-cloud-api/error.js +17 -0
  55. package/lib/utils/tcbrApi/tcbr-cloud-api/index.js +17 -0
  56. package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +40 -0
  57. package/lib/utils/tcbrApi/tcbr-cloud-api-request.js +61 -0
  58. package/lib/utils/validator.js +32 -1
  59. package/package.json +88 -88
  60. package/post-install.js +61 -61
  61. package/runtime/nodejs/bootstrap.js +255 -255
  62. package/runtime/nodejs/runtime.js +183 -183
  63. package/src/auth/index.ts +1 -1
  64. package/src/auth/login.ts +91 -91
  65. package/src/auth/logout.ts +7 -7
  66. package/src/commands/account/index.ts +2 -2
  67. package/src/commands/account/login.ts +192 -192
  68. package/src/commands/account/logout.ts +24 -24
  69. package/src/commands/common.ts +246 -246
  70. package/src/commands/env/base.ts +90 -90
  71. package/src/commands/env/create.ts +92 -92
  72. package/src/commands/env/domain.ts +186 -186
  73. package/src/commands/env/index.ts +4 -4
  74. package/src/commands/env/login.ts +235 -235
  75. package/src/commands/framework/index.ts +124 -124
  76. package/src/commands/functions/alias/getRoute.ts +76 -76
  77. package/src/commands/functions/alias/index.ts +2 -2
  78. package/src/commands/functions/alias/setRoute.ts +82 -82
  79. package/src/commands/functions/code-download.ts +100 -100
  80. package/src/commands/functions/code-update.ts +62 -62
  81. package/src/commands/functions/concurrency/delete.ts +45 -45
  82. package/src/commands/functions/concurrency/index.ts +2 -2
  83. package/src/commands/functions/concurrency/list.ts +58 -58
  84. package/src/commands/functions/concurrency/set.ts +47 -47
  85. package/src/commands/functions/config-update.ts +76 -76
  86. package/src/commands/functions/copy.ts +62 -62
  87. package/src/commands/functions/delete.ts +79 -79
  88. package/src/commands/functions/deploy.ts +293 -293
  89. package/src/commands/functions/detail.ts +138 -138
  90. package/src/commands/functions/index.ts +16 -16
  91. package/src/commands/functions/invoke.ts +121 -121
  92. package/src/commands/functions/layer/bind.ts +182 -182
  93. package/src/commands/functions/layer/common.ts +8 -8
  94. package/src/commands/functions/layer/create.ts +49 -49
  95. package/src/commands/functions/layer/delete.ts +73 -73
  96. package/src/commands/functions/layer/download.ts +92 -92
  97. package/src/commands/functions/layer/index.ts +7 -7
  98. package/src/commands/functions/layer/list.ts +94 -94
  99. package/src/commands/functions/layer/sort.ts +76 -76
  100. package/src/commands/functions/list.ts +68 -68
  101. package/src/commands/functions/log.ts +148 -148
  102. package/src/commands/functions/run.ts +249 -249
  103. package/src/commands/functions/trigger-create.ts +79 -79
  104. package/src/commands/functions/trigger-delete.ts +105 -105
  105. package/src/commands/functions/version/index.ts +1 -1
  106. package/src/commands/functions/version/list.ts +73 -73
  107. package/src/commands/functions/version/publish.ts +43 -43
  108. package/src/commands/gateway/create.ts +109 -109
  109. package/src/commands/gateway/delete.ts +81 -81
  110. package/src/commands/gateway/domain.ts +159 -159
  111. package/src/commands/gateway/index.ts +5 -5
  112. package/src/commands/gateway/list.ts +76 -76
  113. package/src/commands/gateway/switch.ts +107 -107
  114. package/src/commands/helpers/index.ts +2 -2
  115. package/src/commands/helpers/init.ts +431 -431
  116. package/src/commands/helpers/new.ts +117 -117
  117. package/src/commands/helpers/open.ts +67 -67
  118. package/src/commands/hosting/hosting.ts +360 -360
  119. package/src/commands/index.ts +13 -13
  120. package/src/commands/lowcode/app.ts +34 -34
  121. package/src/commands/lowcode/comps.ts +322 -322
  122. package/src/commands/lowcode/index.ts +1 -1
  123. package/src/commands/lowcode/utils.ts +24 -24
  124. package/src/commands/run/create.ts +9 -2
  125. package/src/commands/run/delete.ts +8 -2
  126. package/src/commands/run/image/common.ts +1 -1
  127. package/src/commands/run/image/delete.ts +8 -1
  128. package/src/commands/run/image/download.ts +7 -1
  129. package/src/commands/run/image/index.ts +4 -4
  130. package/src/commands/run/image/list.ts +7 -2
  131. package/src/commands/run/image/upload.ts +8 -1
  132. package/src/commands/run/index.ts +2 -1
  133. package/src/commands/run/list.ts +11 -3
  134. package/src/commands/run/service/config.ts +81 -0
  135. package/src/commands/run/service/create.ts +118 -0
  136. package/src/commands/run/service/deploy.ts +121 -0
  137. package/src/commands/run/service/index.ts +5 -0
  138. package/src/commands/run/service/list.ts +94 -0
  139. package/src/commands/run/service/update.ts +104 -0
  140. package/src/commands/run/standalonegateway/common.ts +7 -7
  141. package/src/commands/run/standalonegateway/create.ts +85 -85
  142. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  143. package/src/commands/run/standalonegateway/index.ts +4 -4
  144. package/src/commands/run/standalonegateway/list.ts +53 -53
  145. package/src/commands/run/standalonegateway/package.ts +62 -62
  146. package/src/commands/run/standalonegateway/turn.ts +63 -63
  147. package/src/commands/run/version/common.ts +1 -1
  148. package/src/commands/run/version/create.ts +8 -1
  149. package/src/commands/run/version/delete.ts +8 -2
  150. package/src/commands/run/version/index.ts +4 -4
  151. package/src/commands/run/version/list.ts +7 -1
  152. package/src/commands/run/version/modify.ts +8 -1
  153. package/src/commands/run/version/update.ts +8 -1
  154. package/src/commands/smart.ts +132 -132
  155. package/src/commands/storage/storage.ts +464 -464
  156. package/src/commands/third/thirdAttach.ts +49 -49
  157. package/src/completion/index.ts +13 -13
  158. package/src/constant.ts +35 -1
  159. package/src/decorators/captureError.ts +25 -25
  160. package/src/decorators/constants.ts +12 -12
  161. package/src/decorators/deprecate.ts +25 -25
  162. package/src/decorators/guard.ts +42 -42
  163. package/src/decorators/index.ts +7 -7
  164. package/src/decorators/injectParams.ts +54 -54
  165. package/src/decorators/params/common.ts +28 -28
  166. package/src/decorators/params/index.ts +35 -35
  167. package/src/env/domain.ts +33 -33
  168. package/src/env/index.ts +63 -63
  169. package/src/env/login.ts +80 -80
  170. package/src/error.ts +36 -36
  171. package/src/function/alias.ts +43 -43
  172. package/src/function/base.ts +253 -253
  173. package/src/function/code.ts +55 -55
  174. package/src/function/concurrency.ts +57 -57
  175. package/src/function/create.ts +78 -78
  176. package/src/function/delete.ts +42 -42
  177. package/src/function/index.ts +10 -10
  178. package/src/function/layer/attach.ts +68 -68
  179. package/src/function/layer/create.ts +63 -63
  180. package/src/function/layer/delete.ts +21 -21
  181. package/src/function/layer/download.ts +54 -54
  182. package/src/function/layer/index.ts +7 -7
  183. package/src/function/layer/list.ts +32 -32
  184. package/src/function/layer/sort.ts +24 -24
  185. package/src/function/trigger.ts +97 -97
  186. package/src/function/update.ts +35 -35
  187. package/src/function/version.ts +38 -38
  188. package/src/function/vpc.ts +22 -22
  189. package/src/gateway/index.ts +137 -137
  190. package/src/help.ts +50 -48
  191. package/src/hosting.ts +212 -212
  192. package/src/index.ts +13 -13
  193. package/src/logger.ts +17 -17
  194. package/src/run/create.ts +23 -23
  195. package/src/run/delete.ts +15 -15
  196. package/src/run/image/build.ts +36 -36
  197. package/src/run/image/delete.ts +13 -13
  198. package/src/run/image/index.ts +3 -3
  199. package/src/run/image/info.ts +26 -26
  200. package/src/run/index.ts +2 -1
  201. package/src/run/list.ts +29 -29
  202. package/src/run/repo.ts +24 -24
  203. package/src/run/service/common.ts +206 -0
  204. package/src/run/service/config.ts +77 -0
  205. package/src/run/service/create.ts +52 -0
  206. package/src/run/service/deployPackage.ts +63 -0
  207. package/src/run/service/index.ts +7 -0
  208. package/src/run/service/list.ts +29 -0
  209. package/src/run/service/showLogs.ts +98 -0
  210. package/src/run/service/update.ts +81 -0
  211. package/src/run/standalonegateway/create.ts +24 -24
  212. package/src/run/standalonegateway/destroy.ts +19 -19
  213. package/src/run/standalonegateway/index.ts +4 -4
  214. package/src/run/standalonegateway/list.ts +74 -74
  215. package/src/run/standalonegateway/package/list.ts +24 -24
  216. package/src/run/standalonegateway/turn/index.ts +1 -1
  217. package/src/run/standalonegateway/turn/off.ts +19 -19
  218. package/src/run/standalonegateway/turn/on.ts +19 -19
  219. package/src/run/version/create.ts +68 -68
  220. package/src/run/version/delete.ts +15 -15
  221. package/src/run/version/index.ts +5 -5
  222. package/src/run/version/list.ts +16 -16
  223. package/src/run/version/modify.ts +16 -16
  224. package/src/run/version/repo.ts +27 -27
  225. package/src/run/version/update.ts +58 -58
  226. package/src/storage.ts +114 -114
  227. package/src/third/index.ts +12 -12
  228. package/src/types.ts +128 -2
  229. package/src/utils/auth.ts +15 -15
  230. package/src/utils/checkTcbrEnv.ts +67 -0
  231. package/src/utils/cli-table.ts +23 -23
  232. package/src/utils/commonParamsCheck.ts +65 -0
  233. package/src/utils/config.ts +39 -39
  234. package/src/utils/env.ts +244 -244
  235. package/src/utils/fs/del.ts +5 -5
  236. package/src/utils/fs/index.ts +71 -71
  237. package/src/utils/function-packer.ts +97 -97
  238. package/src/utils/index.ts +5 -1
  239. package/src/utils/log.ts +81 -81
  240. package/src/utils/net/cloud-api-request.ts +62 -62
  241. package/src/utils/net/credential.ts +53 -53
  242. package/src/utils/net/http-request.ts +84 -84
  243. package/src/utils/net/index.ts +4 -4
  244. package/src/utils/net/manager-service.ts +36 -36
  245. package/src/utils/net/proxy.ts +6 -6
  246. package/src/utils/notice.ts +28 -28
  247. package/src/utils/output/highlight.ts +5 -5
  248. package/src/utils/output/index.ts +2 -2
  249. package/src/utils/output/link.ts +10 -10
  250. package/src/utils/output/loading.ts +82 -82
  251. package/src/utils/parallel.ts +82 -82
  252. package/src/utils/platform/index.ts +2 -2
  253. package/src/utils/platform/mac.ts +21 -21
  254. package/src/utils/platform/os.ts +64 -64
  255. package/src/utils/platform/port.ts +10 -10
  256. package/src/utils/progress-bar.ts +38 -38
  257. package/src/utils/prompt/select.ts +59 -59
  258. package/src/utils/reporter/agree.ts +20 -20
  259. package/src/utils/reporter/download.ts +26 -26
  260. package/src/utils/reporter/index.ts +3 -3
  261. package/src/utils/reporter/usage.ts +20 -20
  262. package/src/utils/store/auth.ts +49 -49
  263. package/src/utils/store/common.ts +8 -8
  264. package/src/utils/store/db.ts +68 -68
  265. package/src/utils/store/index.ts +4 -4
  266. package/src/utils/store/usage.ts +12 -12
  267. package/src/utils/tcbrApi/callTcbrApi.ts +28 -0
  268. package/src/utils/tcbrApi/index.ts +1 -0
  269. package/src/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.ts +363 -0
  270. package/src/utils/tcbrApi/tcbr-cloud-api/error.ts +30 -0
  271. package/src/utils/tcbrApi/tcbr-cloud-api/index.ts +1 -0
  272. package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +28 -0
  273. package/src/utils/tcbrApi/tcbr-cloud-api-request.ts +66 -0
  274. package/src/utils/template.ts +170 -170
  275. package/src/utils/tools/encoding.ts +8 -8
  276. package/src/utils/tools/index.ts +4 -4
  277. package/src/utils/tools/object.ts +33 -33
  278. package/src/utils/tools/time.ts +38 -38
  279. package/src/utils/tools/uid.ts +19 -19
  280. package/src/utils/validator.ts +64 -32
  281. package/templates/html/loginFail.html +90 -90
  282. package/templates/html/loginSuccess.html +86 -86
  283. package/templates/server/node/_gitignore +54 -54
  284. package/templates/server/node/cloudbaserc.json +10 -10
  285. package/templates/server/node/index.js +5 -5
  286. package/templates/server/node/package.json +9 -9
  287. package/tsconfig.json +19 -19
  288. package/tsconfig.test.json +13 -13
  289. package/types/commands/run/index.d.ts +1 -0
  290. package/types/commands/run/service/config.d.ts +14 -0
  291. package/types/commands/run/service/create.d.ts +13 -0
  292. package/types/commands/run/service/deploy.d.ts +13 -0
  293. package/types/commands/run/service/index.d.ts +5 -0
  294. package/types/commands/run/service/list.d.ts +13 -0
  295. package/types/commands/run/service/update.d.ts +13 -0
  296. package/types/constant.d.ts +18 -0
  297. package/types/run/index.d.ts +1 -0
  298. package/types/run/service/common.d.ts +32 -0
  299. package/types/run/service/config.d.ts +23 -0
  300. package/types/run/service/create.d.ts +7 -0
  301. package/types/run/service/deployPackage.d.ts +11 -0
  302. package/types/run/service/index.d.ts +7 -0
  303. package/types/run/service/list.d.ts +2 -0
  304. package/types/run/service/showLogs.d.ts +2 -0
  305. package/types/run/service/update.d.ts +2 -0
  306. package/types/types.d.ts +116 -2
  307. package/types/utils/checkTcbrEnv.d.ts +3 -0
  308. package/types/utils/commonParamsCheck.d.ts +3 -0
  309. package/types/utils/index.d.ts +3 -0
  310. package/types/utils/tcbrApi/callTcbrApi.d.ts +1 -0
  311. package/types/utils/tcbrApi/index.d.ts +1 -0
  312. package/types/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.d.ts +51 -0
  313. package/types/utils/tcbrApi/tcbr-cloud-api/error.d.ts +20 -0
  314. package/types/utils/tcbrApi/tcbr-cloud-api/index.d.ts +1 -0
  315. package/types/utils/tcbrApi/tcbr-cloud-api/request.d.ts +4 -0
  316. package/types/utils/tcbrApi/tcbr-cloud-api-request.d.ts +9 -0
  317. package/types/utils/validator.d.ts +4 -0
@@ -1,235 +1,235 @@
1
- import inquirer from 'inquirer'
2
- import { Command, ICommand } from '../common'
3
- import { CloudBaseError } from '../../error'
4
- import { printHorizontalTable } from '../../utils'
5
- import { InjectParams, EnvId, Log, Logger } from '../../decorators'
6
- import { getLoginConfigList, updateLoginConfig, createLoginConfig } from '../../env'
7
-
8
- const platformMap = {
9
- 'WECHAT-OPEN': '微信开放平台',
10
- 'WECHAT-PUBLIC': '微信公众平台',
11
- ANONYMOUS: '匿名登录'
12
- }
13
-
14
- @ICommand()
15
- export class ListLoginCommand extends Command {
16
- get options() {
17
- return {
18
- cmd: 'env',
19
- childCmd: {
20
- cmd: 'login',
21
- desc: '登录授权管理'
22
- },
23
- childSubCmd: 'list',
24
- deprecateCmd: 'env:login:list',
25
- options: [
26
- {
27
- flags: '-e, --envId <envId>',
28
- desc: '环境 Id'
29
- }
30
- ],
31
- desc: '列出环境登录配置'
32
- }
33
- }
34
-
35
- @InjectParams()
36
- async execute(@EnvId() envId) {
37
- const configList = await getLoginConfigList({
38
- envId
39
- })
40
-
41
- const head = ['平台', '平台 Id', '创建时间', '状态']
42
- const tableData = configList.map((item) => [
43
- platformMap[item.Platform] ? platformMap[item.Platform] : item.Platform,
44
- item.PlatformId,
45
- item.CreateTime,
46
- item.Status === 'ENABLE' ? '启用' : '禁用'
47
- ])
48
- printHorizontalTable(head, tableData)
49
- }
50
- }
51
-
52
- @ICommand()
53
- export class CreateLoginCommand extends Command {
54
- get options() {
55
- return {
56
- cmd: 'env',
57
- childCmd: 'login',
58
- childSubCmd: 'create',
59
- deprecateCmd: 'env:login:create',
60
- options: [
61
- {
62
- flags: '-e, --envId <envId>',
63
- desc: '环境 Id'
64
- }
65
- ],
66
- desc: '添加环境登录方式配置'
67
- }
68
- }
69
-
70
- @InjectParams()
71
- async execute(@EnvId() envId, @Log() log: Logger) {
72
- const { platform } = await inquirer.prompt([
73
- {
74
- type: 'list',
75
- name: 'platform',
76
- choices: [
77
- {
78
- name: '微信公众平台',
79
- value: 'WECHAT-PUBLIC'
80
- },
81
- {
82
- name: '微信开放平台',
83
- value: 'WECHAT-OPEN'
84
- },
85
- {
86
- name: '匿名登录',
87
- value: 'ANONYMOUS'
88
- }
89
- ],
90
- message: '请选择登录方式:',
91
- default: 'WECHAT-PUBLIC'
92
- }
93
- ])
94
-
95
- let appId
96
- let appSecret
97
-
98
- // 微信登录,需要配置 AppId 和 AppSecret
99
- if (platform === 'WECHAT-OPEN' || platform === 'WECHAT-PUBLIC') {
100
- const input = await inquirer.prompt([
101
- {
102
- type: 'input',
103
- name: 'appId',
104
- message: '请输入 AppId:'
105
- },
106
- {
107
- type: 'input',
108
- name: 'appSecret',
109
- message: '请输入 AppSecret:'
110
- }
111
- ])
112
-
113
- appId = input?.appId
114
- appSecret = input?.appSecret
115
-
116
- if (!appId || !appSecret) {
117
- throw new CloudBaseError('appId 和 appSecret 不能为空!')
118
- }
119
- }
120
-
121
- // 匿名登录
122
- if (platform === 'ANONYMOUS') {
123
- appId = 'anonymous'
124
- appSecret = 'anonymous'
125
- }
126
-
127
- try {
128
- await createLoginConfig({
129
- envId,
130
- appId,
131
- appSecret,
132
- platform
133
- })
134
-
135
- log.success('创建登录方式成功!')
136
- } catch (e) {
137
- if (e.code === 'ResourceInUse') {
138
- log.error('登录方式已开启')
139
- }
140
- }
141
- }
142
- }
143
-
144
- @ICommand()
145
- export class UpdateLogin extends Command {
146
- get options() {
147
- return {
148
- cmd: 'env',
149
- childCmd: 'login',
150
- childSubCmd: 'update',
151
- deprecateCmd: 'env:login:update',
152
- options: [
153
- {
154
- flags: '-e, --envId <envId>',
155
- desc: '环境 Id'
156
- }
157
- ],
158
- desc: '更新环境登录方式配置'
159
- }
160
- }
161
-
162
- @InjectParams()
163
- async execute(@EnvId() envId, @Log() log: Logger) {
164
- const configList = await getLoginConfigList({
165
- envId
166
- })
167
-
168
- const configChoices = configList.map((item) => ({
169
- name: `${platformMap[item.Platform]}:${item.PlatformId} [${
170
- item.Status === 'ENABLE' ? '启用' : '禁用'
171
- }]`,
172
- value: item,
173
- short: `${platformMap[item.Platform]}:${item.PlatformId}`
174
- }))
175
-
176
- const { config, status } = await inquirer.prompt([
177
- {
178
- type: 'list',
179
- name: 'config',
180
- choices: configChoices,
181
- message: '请选择需要配置的条目:'
182
- },
183
- {
184
- type: 'list',
185
- name: 'status',
186
- choices: [
187
- {
188
- name: '启用',
189
- value: 'ENABLE'
190
- },
191
- {
192
- name: '禁用',
193
- value: 'DISABLE'
194
- }
195
- ],
196
- message: '请选择登录方式状态:',
197
- default: '启用'
198
- }
199
- ])
200
-
201
- const platform = config.Platform
202
-
203
- let appId
204
- let appSecret
205
-
206
- if (platform === 'WECHAT-OPEN' || platform === 'WECHAT-PUBLIC') {
207
- const input = await inquirer.prompt([
208
- {
209
- type: 'input',
210
- name: 'appId',
211
- message: '请输入 AppId(配置状态时可不填):'
212
- },
213
- {
214
- type: 'input',
215
- name: 'appSecret',
216
- message: '请输入 AppSecret(配置状态时可不填):'
217
- }
218
- ])
219
-
220
- appId = input?.appId
221
- appSecret = input?.appSecret
222
- }
223
-
224
- // 检查平台配置是否存在,若存在则更新配置,否则创建配置
225
- await updateLoginConfig({
226
- envId,
227
- configId: config.Id,
228
- appId,
229
- appSecret,
230
- status
231
- })
232
-
233
- log.success('更新登录方式成功!')
234
- }
235
- }
1
+ import inquirer from 'inquirer'
2
+ import { Command, ICommand } from '../common'
3
+ import { CloudBaseError } from '../../error'
4
+ import { printHorizontalTable } from '../../utils'
5
+ import { InjectParams, EnvId, Log, Logger } from '../../decorators'
6
+ import { getLoginConfigList, updateLoginConfig, createLoginConfig } from '../../env'
7
+
8
+ const platformMap = {
9
+ 'WECHAT-OPEN': '微信开放平台',
10
+ 'WECHAT-PUBLIC': '微信公众平台',
11
+ ANONYMOUS: '匿名登录'
12
+ }
13
+
14
+ @ICommand()
15
+ export class ListLoginCommand extends Command {
16
+ get options() {
17
+ return {
18
+ cmd: 'env',
19
+ childCmd: {
20
+ cmd: 'login',
21
+ desc: '登录授权管理'
22
+ },
23
+ childSubCmd: 'list',
24
+ deprecateCmd: 'env:login:list',
25
+ options: [
26
+ {
27
+ flags: '-e, --envId <envId>',
28
+ desc: '环境 Id'
29
+ }
30
+ ],
31
+ desc: '列出环境登录配置'
32
+ }
33
+ }
34
+
35
+ @InjectParams()
36
+ async execute(@EnvId() envId) {
37
+ const configList = await getLoginConfigList({
38
+ envId
39
+ })
40
+
41
+ const head = ['平台', '平台 Id', '创建时间', '状态']
42
+ const tableData = configList.map((item) => [
43
+ platformMap[item.Platform] ? platformMap[item.Platform] : item.Platform,
44
+ item.PlatformId,
45
+ item.CreateTime,
46
+ item.Status === 'ENABLE' ? '启用' : '禁用'
47
+ ])
48
+ printHorizontalTable(head, tableData)
49
+ }
50
+ }
51
+
52
+ @ICommand()
53
+ export class CreateLoginCommand extends Command {
54
+ get options() {
55
+ return {
56
+ cmd: 'env',
57
+ childCmd: 'login',
58
+ childSubCmd: 'create',
59
+ deprecateCmd: 'env:login:create',
60
+ options: [
61
+ {
62
+ flags: '-e, --envId <envId>',
63
+ desc: '环境 Id'
64
+ }
65
+ ],
66
+ desc: '添加环境登录方式配置'
67
+ }
68
+ }
69
+
70
+ @InjectParams()
71
+ async execute(@EnvId() envId, @Log() log: Logger) {
72
+ const { platform } = await inquirer.prompt([
73
+ {
74
+ type: 'list',
75
+ name: 'platform',
76
+ choices: [
77
+ {
78
+ name: '微信公众平台',
79
+ value: 'WECHAT-PUBLIC'
80
+ },
81
+ {
82
+ name: '微信开放平台',
83
+ value: 'WECHAT-OPEN'
84
+ },
85
+ {
86
+ name: '匿名登录',
87
+ value: 'ANONYMOUS'
88
+ }
89
+ ],
90
+ message: '请选择登录方式:',
91
+ default: 'WECHAT-PUBLIC'
92
+ }
93
+ ])
94
+
95
+ let appId
96
+ let appSecret
97
+
98
+ // 微信登录,需要配置 AppId 和 AppSecret
99
+ if (platform === 'WECHAT-OPEN' || platform === 'WECHAT-PUBLIC') {
100
+ const input = await inquirer.prompt([
101
+ {
102
+ type: 'input',
103
+ name: 'appId',
104
+ message: '请输入 AppId:'
105
+ },
106
+ {
107
+ type: 'input',
108
+ name: 'appSecret',
109
+ message: '请输入 AppSecret:'
110
+ }
111
+ ])
112
+
113
+ appId = input?.appId
114
+ appSecret = input?.appSecret
115
+
116
+ if (!appId || !appSecret) {
117
+ throw new CloudBaseError('appId 和 appSecret 不能为空!')
118
+ }
119
+ }
120
+
121
+ // 匿名登录
122
+ if (platform === 'ANONYMOUS') {
123
+ appId = 'anonymous'
124
+ appSecret = 'anonymous'
125
+ }
126
+
127
+ try {
128
+ await createLoginConfig({
129
+ envId,
130
+ appId,
131
+ appSecret,
132
+ platform
133
+ })
134
+
135
+ log.success('创建登录方式成功!')
136
+ } catch (e) {
137
+ if (e.code === 'ResourceInUse') {
138
+ log.error('登录方式已开启')
139
+ }
140
+ }
141
+ }
142
+ }
143
+
144
+ @ICommand()
145
+ export class UpdateLogin extends Command {
146
+ get options() {
147
+ return {
148
+ cmd: 'env',
149
+ childCmd: 'login',
150
+ childSubCmd: 'update',
151
+ deprecateCmd: 'env:login:update',
152
+ options: [
153
+ {
154
+ flags: '-e, --envId <envId>',
155
+ desc: '环境 Id'
156
+ }
157
+ ],
158
+ desc: '更新环境登录方式配置'
159
+ }
160
+ }
161
+
162
+ @InjectParams()
163
+ async execute(@EnvId() envId, @Log() log: Logger) {
164
+ const configList = await getLoginConfigList({
165
+ envId
166
+ })
167
+
168
+ const configChoices = configList.map((item) => ({
169
+ name: `${platformMap[item.Platform]}:${item.PlatformId} [${
170
+ item.Status === 'ENABLE' ? '启用' : '禁用'
171
+ }]`,
172
+ value: item,
173
+ short: `${platformMap[item.Platform]}:${item.PlatformId}`
174
+ }))
175
+
176
+ const { config, status } = await inquirer.prompt([
177
+ {
178
+ type: 'list',
179
+ name: 'config',
180
+ choices: configChoices,
181
+ message: '请选择需要配置的条目:'
182
+ },
183
+ {
184
+ type: 'list',
185
+ name: 'status',
186
+ choices: [
187
+ {
188
+ name: '启用',
189
+ value: 'ENABLE'
190
+ },
191
+ {
192
+ name: '禁用',
193
+ value: 'DISABLE'
194
+ }
195
+ ],
196
+ message: '请选择登录方式状态:',
197
+ default: '启用'
198
+ }
199
+ ])
200
+
201
+ const platform = config.Platform
202
+
203
+ let appId
204
+ let appSecret
205
+
206
+ if (platform === 'WECHAT-OPEN' || platform === 'WECHAT-PUBLIC') {
207
+ const input = await inquirer.prompt([
208
+ {
209
+ type: 'input',
210
+ name: 'appId',
211
+ message: '请输入 AppId(配置状态时可不填):'
212
+ },
213
+ {
214
+ type: 'input',
215
+ name: 'appSecret',
216
+ message: '请输入 AppSecret(配置状态时可不填):'
217
+ }
218
+ ])
219
+
220
+ appId = input?.appId
221
+ appSecret = input?.appSecret
222
+ }
223
+
224
+ // 检查平台配置是否存在,若存在则更新配置,否则创建配置
225
+ await updateLoginConfig({
226
+ envId,
227
+ configId: config.Id,
228
+ appId,
229
+ appSecret,
230
+ status
231
+ })
232
+
233
+ log.success('更新登录方式成功!')
234
+ }
235
+ }