@cloudbase/cli 2.0.3 → 2.0.5

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 (217) 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/LICENSE +5 -5
  7. package/README.md +35 -35
  8. package/bin/cloudbase.js +5 -5
  9. package/changelog.md +6 -6
  10. package/jest.config.js +17 -17
  11. package/lib/commands/account/login.js +18 -18
  12. package/lib/commands/run/list.js +2 -3
  13. package/lib/commands/storage/storage.js +1 -1
  14. package/lib/env/login.js +7 -7
  15. package/lib/utils/tcbrApi/callTcbrApi.js +2 -2
  16. package/package.json +3 -3
  17. package/post-install.js +61 -61
  18. package/runtime/nodejs/bootstrap.js +255 -255
  19. package/runtime/nodejs/runtime.js +183 -183
  20. package/src/auth/index.ts +1 -1
  21. package/src/auth/login.ts +91 -91
  22. package/src/auth/logout.ts +7 -7
  23. package/src/commands/account/index.ts +2 -2
  24. package/src/commands/account/login.ts +192 -192
  25. package/src/commands/account/logout.ts +24 -24
  26. package/src/commands/env/base.ts +90 -90
  27. package/src/commands/env/create.ts +92 -92
  28. package/src/commands/env/domain.ts +186 -186
  29. package/src/commands/env/index.ts +4 -4
  30. package/src/commands/env/login.ts +235 -235
  31. package/src/commands/framework/index.ts +124 -124
  32. package/src/commands/functions/alias/getRoute.ts +76 -76
  33. package/src/commands/functions/alias/index.ts +2 -2
  34. package/src/commands/functions/alias/setRoute.ts +82 -82
  35. package/src/commands/functions/code-download.ts +100 -100
  36. package/src/commands/functions/code-update.ts +62 -62
  37. package/src/commands/functions/concurrency/delete.ts +45 -45
  38. package/src/commands/functions/concurrency/index.ts +2 -2
  39. package/src/commands/functions/concurrency/list.ts +58 -58
  40. package/src/commands/functions/concurrency/set.ts +47 -47
  41. package/src/commands/functions/config-update.ts +76 -76
  42. package/src/commands/functions/copy.ts +62 -62
  43. package/src/commands/functions/delete.ts +79 -79
  44. package/src/commands/functions/deploy.ts +293 -293
  45. package/src/commands/functions/detail.ts +138 -138
  46. package/src/commands/functions/index.ts +16 -16
  47. package/src/commands/functions/invoke.ts +121 -121
  48. package/src/commands/functions/layer/bind.ts +182 -182
  49. package/src/commands/functions/layer/common.ts +8 -8
  50. package/src/commands/functions/layer/create.ts +49 -49
  51. package/src/commands/functions/layer/delete.ts +73 -73
  52. package/src/commands/functions/layer/download.ts +92 -92
  53. package/src/commands/functions/layer/index.ts +7 -7
  54. package/src/commands/functions/layer/list.ts +94 -94
  55. package/src/commands/functions/layer/sort.ts +76 -76
  56. package/src/commands/functions/list.ts +68 -68
  57. package/src/commands/functions/log.ts +148 -148
  58. package/src/commands/functions/run.ts +249 -249
  59. package/src/commands/functions/trigger-create.ts +79 -79
  60. package/src/commands/functions/trigger-delete.ts +105 -105
  61. package/src/commands/functions/version/index.ts +1 -1
  62. package/src/commands/functions/version/list.ts +73 -73
  63. package/src/commands/functions/version/publish.ts +43 -43
  64. package/src/commands/gateway/create.ts +109 -109
  65. package/src/commands/gateway/delete.ts +81 -81
  66. package/src/commands/gateway/domain.ts +159 -159
  67. package/src/commands/gateway/index.ts +5 -5
  68. package/src/commands/gateway/list.ts +76 -76
  69. package/src/commands/gateway/switch.ts +107 -107
  70. package/src/commands/helpers/index.ts +2 -2
  71. package/src/commands/helpers/init.ts +431 -431
  72. package/src/commands/helpers/new.ts +117 -117
  73. package/src/commands/helpers/open.ts +67 -67
  74. package/src/commands/hosting/hosting.ts +360 -360
  75. package/src/commands/index.ts +13 -13
  76. package/src/commands/lowcode/app.ts +34 -34
  77. package/src/commands/lowcode/comps.ts +322 -322
  78. package/src/commands/lowcode/index.ts +1 -1
  79. package/src/commands/lowcode/utils.ts +24 -24
  80. package/src/commands/run/image/index.ts +4 -4
  81. package/src/commands/run/list.ts +2 -3
  82. package/src/commands/run/standalonegateway/common.ts +7 -7
  83. package/src/commands/run/standalonegateway/create.ts +85 -85
  84. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  85. package/src/commands/run/standalonegateway/index.ts +4 -4
  86. package/src/commands/run/standalonegateway/list.ts +53 -53
  87. package/src/commands/run/standalonegateway/package.ts +62 -62
  88. package/src/commands/run/standalonegateway/turn.ts +63 -63
  89. package/src/commands/run/version/index.ts +4 -4
  90. package/src/commands/smart.ts +132 -132
  91. package/src/commands/storage/storage.ts +464 -464
  92. package/src/commands/third/thirdAttach.ts +49 -49
  93. package/src/completion/index.ts +13 -13
  94. package/src/decorators/captureError.ts +25 -25
  95. package/src/decorators/constants.ts +12 -12
  96. package/src/decorators/deprecate.ts +25 -25
  97. package/src/decorators/guard.ts +42 -42
  98. package/src/decorators/index.ts +7 -7
  99. package/src/decorators/injectParams.ts +54 -54
  100. package/src/decorators/params/common.ts +28 -28
  101. package/src/decorators/params/index.ts +35 -35
  102. package/src/env/domain.ts +33 -33
  103. package/src/env/index.ts +63 -63
  104. package/src/env/login.ts +80 -80
  105. package/src/error.ts +36 -36
  106. package/src/function/alias.ts +43 -43
  107. package/src/function/base.ts +253 -253
  108. package/src/function/code.ts +55 -55
  109. package/src/function/concurrency.ts +57 -57
  110. package/src/function/create.ts +78 -78
  111. package/src/function/delete.ts +42 -42
  112. package/src/function/index.ts +10 -10
  113. package/src/function/layer/attach.ts +68 -68
  114. package/src/function/layer/create.ts +63 -63
  115. package/src/function/layer/delete.ts +21 -21
  116. package/src/function/layer/download.ts +54 -54
  117. package/src/function/layer/index.ts +7 -7
  118. package/src/function/layer/list.ts +32 -32
  119. package/src/function/layer/sort.ts +24 -24
  120. package/src/function/trigger.ts +97 -97
  121. package/src/function/update.ts +35 -35
  122. package/src/function/version.ts +38 -38
  123. package/src/function/vpc.ts +22 -22
  124. package/src/gateway/index.ts +137 -137
  125. package/src/hosting.ts +212 -212
  126. package/src/index.ts +13 -13
  127. package/src/logger.ts +17 -17
  128. package/src/run/create.ts +23 -23
  129. package/src/run/delete.ts +15 -15
  130. package/src/run/image/build.ts +36 -36
  131. package/src/run/image/delete.ts +13 -13
  132. package/src/run/image/index.ts +3 -3
  133. package/src/run/image/info.ts +26 -26
  134. package/src/run/list.ts +29 -29
  135. package/src/run/repo.ts +24 -24
  136. package/src/run/standalonegateway/create.ts +24 -24
  137. package/src/run/standalonegateway/destroy.ts +19 -19
  138. package/src/run/standalonegateway/index.ts +4 -4
  139. package/src/run/standalonegateway/list.ts +74 -74
  140. package/src/run/standalonegateway/package/list.ts +24 -24
  141. package/src/run/standalonegateway/turn/index.ts +1 -1
  142. package/src/run/standalonegateway/turn/off.ts +19 -19
  143. package/src/run/standalonegateway/turn/on.ts +19 -19
  144. package/src/run/version/create.ts +68 -68
  145. package/src/run/version/delete.ts +15 -15
  146. package/src/run/version/index.ts +5 -5
  147. package/src/run/version/list.ts +16 -16
  148. package/src/run/version/modify.ts +16 -16
  149. package/src/run/version/repo.ts +27 -27
  150. package/src/run/version/update.ts +58 -58
  151. package/src/storage.ts +114 -114
  152. package/src/third/index.ts +12 -12
  153. package/src/utils/auth.ts +15 -15
  154. package/src/utils/cli-table.ts +23 -23
  155. package/src/utils/config.ts +39 -39
  156. package/src/utils/env.ts +244 -244
  157. package/src/utils/fs/del.ts +5 -5
  158. package/src/utils/fs/index.ts +71 -71
  159. package/src/utils/function-packer.ts +97 -97
  160. package/src/utils/log.ts +81 -81
  161. package/src/utils/net/cloud-api-request.ts +62 -62
  162. package/src/utils/net/credential.ts +53 -53
  163. package/src/utils/net/index.ts +4 -4
  164. package/src/utils/net/manager-service.ts +36 -36
  165. package/src/utils/net/proxy.ts +6 -6
  166. package/src/utils/notice.ts +28 -28
  167. package/src/utils/output/highlight.ts +5 -5
  168. package/src/utils/output/index.ts +2 -2
  169. package/src/utils/output/link.ts +10 -10
  170. package/src/utils/output/loading.ts +82 -82
  171. package/src/utils/parallel.ts +82 -82
  172. package/src/utils/platform/index.ts +2 -2
  173. package/src/utils/platform/mac.ts +21 -21
  174. package/src/utils/platform/os.ts +64 -64
  175. package/src/utils/platform/port.ts +10 -10
  176. package/src/utils/progress-bar.ts +38 -38
  177. package/src/utils/prompt/select.ts +59 -59
  178. package/src/utils/reporter/agree.ts +20 -20
  179. package/src/utils/reporter/download.ts +26 -26
  180. package/src/utils/reporter/index.ts +3 -3
  181. package/src/utils/reporter/usage.ts +20 -20
  182. package/src/utils/store/auth.ts +49 -49
  183. package/src/utils/store/common.ts +8 -8
  184. package/src/utils/store/db.ts +68 -68
  185. package/src/utils/store/index.ts +4 -4
  186. package/src/utils/store/usage.ts +12 -12
  187. package/src/utils/tcbrApi/callTcbrApi.ts +1 -1
  188. package/src/utils/template.ts +170 -170
  189. package/src/utils/tools/encoding.ts +8 -8
  190. package/src/utils/tools/index.ts +4 -4
  191. package/src/utils/tools/object.ts +33 -33
  192. package/src/utils/tools/time.ts +38 -38
  193. package/src/utils/tools/uid.ts +19 -19
  194. package/templates/html/loginFail.html +90 -90
  195. package/templates/html/loginSuccess.html +86 -86
  196. package/templates/server/node/_gitignore +54 -54
  197. package/templates/server/node/cloudbaserc.json +10 -10
  198. package/templates/server/node/index.js +5 -5
  199. package/templates/server/node/package.json +9 -9
  200. package/tsconfig.json +19 -19
  201. package/tsconfig.test.json +13 -13
  202. package/.vscode/settings.json +0 -3
  203. package/lib/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.js +0 -268
  204. package/lib/utils/tcbrApi/tcbr-cloud-api/error.js +0 -17
  205. package/lib/utils/tcbrApi/tcbr-cloud-api/index.js +0 -17
  206. package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +0 -40
  207. package/lib/utils/tcbrApi/tcbr-cloud-api-request.js +0 -61
  208. package/src/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.ts +0 -363
  209. package/src/utils/tcbrApi/tcbr-cloud-api/error.ts +0 -30
  210. package/src/utils/tcbrApi/tcbr-cloud-api/index.ts +0 -1
  211. package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +0 -28
  212. package/src/utils/tcbrApi/tcbr-cloud-api-request.ts +0 -66
  213. package/types/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.d.ts +0 -51
  214. package/types/utils/tcbrApi/tcbr-cloud-api/error.d.ts +0 -20
  215. package/types/utils/tcbrApi/tcbr-cloud-api/index.d.ts +0 -1
  216. package/types/utils/tcbrApi/tcbr-cloud-api/request.d.ts +0 -4
  217. package/types/utils/tcbrApi/tcbr-cloud-api-request.d.ts +0 -9
@@ -1,138 +1,138 @@
1
- import chalk from 'chalk'
2
- import { Command, ICommand } from '../common'
3
- import { CloudBaseError } from '../../error'
4
- import { getFunctionDetail } from '../../function'
5
- import { loadingFactory, printHorizontalTable } from '../../utils'
6
- import { InjectParams, ArgsParams, CmdContext, Log, Logger } from '../../decorators'
7
-
8
- const StatusMap = {
9
- Active: '部署完成',
10
- Creating: '创建中',
11
- CreateFailed: '创建失败',
12
- Updating: '更新中',
13
- UpdateFailed: '更新失败'
14
- }
15
-
16
- @ICommand()
17
- export class FunctionDetail extends Command {
18
- get options() {
19
- return {
20
- cmd: 'fn',
21
- childCmd: 'detail <name>',
22
- deprecateCmd: 'functions:detail <name>',
23
- options: [
24
- {
25
- flags: '-e, --envId <envId>',
26
- desc: '环境 Id'
27
- },
28
- {
29
- flags: '--code-secret <codeSecret>',
30
- desc: '代码加密的函数的 CodeSecret'
31
- }
32
- ],
33
- desc: '获取云函数信息'
34
- }
35
- }
36
-
37
- @InjectParams()
38
- async execute(@CmdContext() ctx, @ArgsParams() params) {
39
- const { envId, options } = ctx
40
- const { codeSecret } = options
41
- const name = params?.[0]
42
-
43
- if (!name) {
44
- throw new CloudBaseError('请指定云函数名称!')
45
- }
46
-
47
- const loading = loadingFactory()
48
- loading.start('获取函数信息中...')
49
-
50
- try {
51
- const data = await getFunctionDetail({
52
- envId,
53
- functionName: name,
54
- codeSecret
55
- })
56
-
57
- loading.stop()
58
- this.logDetail(data, name)
59
- } catch (e) {
60
- if (e.code === 'ResourceNotFound.FunctionName') {
61
- throw new CloudBaseError(`[${name}] 函数不存在`)
62
- }
63
- throw e
64
- } finally {
65
- loading.stop()
66
- }
67
- }
68
-
69
- @InjectParams()
70
- logDetail(info, name, @Log() log?: Logger) {
71
- const ResMap = {
72
- Namespace: '环境 Id',
73
- FunctionName: '函数名称',
74
- Status: '状态',
75
- CodeSize: '代码大小(B)',
76
- Environment: '环境变量(key=value)',
77
- Handler: '执行方法',
78
- MemorySize: '内存配置(MB)',
79
- Runtime: '运行环境',
80
- Timeout: '超时时间(S)',
81
- VpcConfig: '网络配置',
82
- Triggers: '触发器',
83
- ModTime: '修改时间',
84
- InstallDependency: '自动安装依赖'
85
- }
86
-
87
- const head = ['信息', '值']
88
-
89
- const tableData = Object.keys(ResMap).map((key) => {
90
- if (key === 'Status') {
91
- return [ResMap[key], StatusMap[info[key]]]
92
- }
93
- // 将环境变量数组转换成 key=value 的形式
94
- if (key === 'Environment') {
95
- const data =
96
- info[key].Variables.map((item) => `${item.Key}=${item.Value}`).join('; ') ||
97
- '无'
98
- return [ResMap[key], data]
99
- }
100
-
101
- if (key === 'Triggers') {
102
- let data = info[key]
103
- .map((item) => `${item.TriggerName}:${item.TriggerDesc}`)
104
- .join('\n')
105
- data = data.length ? `${data}\n` : '无'
106
- return [ResMap[key], data]
107
- }
108
-
109
- if (key === 'VpcConfig') {
110
- const { vpc, subnet }: any = info[key]
111
- if (typeof vpc === 'string') {
112
- return [ResMap[key], `${vpc}/${subnet}`]
113
- } else if (vpc && subnet) {
114
- const data = `${vpc.VpcId}(${vpc.VpcName} | ${subnet.CidrBlock}) / ${subnet.SubnetId}(${subnet.SubnetName})`
115
-
116
- return [ResMap[key], data]
117
- } else {
118
- return [ResMap[key], '无']
119
- }
120
- }
121
-
122
- if (key === 'CodeInfo') {
123
- return [ResMap[key], info[key]]
124
- }
125
-
126
- return [ResMap[key], info[key]]
127
- })
128
-
129
- if (info.StatusDesc) {
130
- tableData.push(['状态描述', info.StatusDesc])
131
- }
132
-
133
- log.info(chalk.green(`云函数 [${name}] 详情:`))
134
- printHorizontalTable(head, tableData)
135
- log.info('函数代码(Java 函数以及入口大于 1 M 的函数不会显示)\n')
136
- log.log(info['CodeInfo'])
137
- }
138
- }
1
+ import chalk from 'chalk'
2
+ import { Command, ICommand } from '../common'
3
+ import { CloudBaseError } from '../../error'
4
+ import { getFunctionDetail } from '../../function'
5
+ import { loadingFactory, printHorizontalTable } from '../../utils'
6
+ import { InjectParams, ArgsParams, CmdContext, Log, Logger } from '../../decorators'
7
+
8
+ const StatusMap = {
9
+ Active: '部署完成',
10
+ Creating: '创建中',
11
+ CreateFailed: '创建失败',
12
+ Updating: '更新中',
13
+ UpdateFailed: '更新失败'
14
+ }
15
+
16
+ @ICommand()
17
+ export class FunctionDetail extends Command {
18
+ get options() {
19
+ return {
20
+ cmd: 'fn',
21
+ childCmd: 'detail <name>',
22
+ deprecateCmd: 'functions:detail <name>',
23
+ options: [
24
+ {
25
+ flags: '-e, --envId <envId>',
26
+ desc: '环境 Id'
27
+ },
28
+ {
29
+ flags: '--code-secret <codeSecret>',
30
+ desc: '代码加密的函数的 CodeSecret'
31
+ }
32
+ ],
33
+ desc: '获取云函数信息'
34
+ }
35
+ }
36
+
37
+ @InjectParams()
38
+ async execute(@CmdContext() ctx, @ArgsParams() params) {
39
+ const { envId, options } = ctx
40
+ const { codeSecret } = options
41
+ const name = params?.[0]
42
+
43
+ if (!name) {
44
+ throw new CloudBaseError('请指定云函数名称!')
45
+ }
46
+
47
+ const loading = loadingFactory()
48
+ loading.start('获取函数信息中...')
49
+
50
+ try {
51
+ const data = await getFunctionDetail({
52
+ envId,
53
+ functionName: name,
54
+ codeSecret
55
+ })
56
+
57
+ loading.stop()
58
+ this.logDetail(data, name)
59
+ } catch (e) {
60
+ if (e.code === 'ResourceNotFound.FunctionName') {
61
+ throw new CloudBaseError(`[${name}] 函数不存在`)
62
+ }
63
+ throw e
64
+ } finally {
65
+ loading.stop()
66
+ }
67
+ }
68
+
69
+ @InjectParams()
70
+ logDetail(info, name, @Log() log?: Logger) {
71
+ const ResMap = {
72
+ Namespace: '环境 Id',
73
+ FunctionName: '函数名称',
74
+ Status: '状态',
75
+ CodeSize: '代码大小(B)',
76
+ Environment: '环境变量(key=value)',
77
+ Handler: '执行方法',
78
+ MemorySize: '内存配置(MB)',
79
+ Runtime: '运行环境',
80
+ Timeout: '超时时间(S)',
81
+ VpcConfig: '网络配置',
82
+ Triggers: '触发器',
83
+ ModTime: '修改时间',
84
+ InstallDependency: '自动安装依赖'
85
+ }
86
+
87
+ const head = ['信息', '值']
88
+
89
+ const tableData = Object.keys(ResMap).map((key) => {
90
+ if (key === 'Status') {
91
+ return [ResMap[key], StatusMap[info[key]]]
92
+ }
93
+ // 将环境变量数组转换成 key=value 的形式
94
+ if (key === 'Environment') {
95
+ const data =
96
+ info[key].Variables.map((item) => `${item.Key}=${item.Value}`).join('; ') ||
97
+ '无'
98
+ return [ResMap[key], data]
99
+ }
100
+
101
+ if (key === 'Triggers') {
102
+ let data = info[key]
103
+ .map((item) => `${item.TriggerName}:${item.TriggerDesc}`)
104
+ .join('\n')
105
+ data = data.length ? `${data}\n` : '无'
106
+ return [ResMap[key], data]
107
+ }
108
+
109
+ if (key === 'VpcConfig') {
110
+ const { vpc, subnet }: any = info[key]
111
+ if (typeof vpc === 'string') {
112
+ return [ResMap[key], `${vpc}/${subnet}`]
113
+ } else if (vpc && subnet) {
114
+ const data = `${vpc.VpcId}(${vpc.VpcName} | ${subnet.CidrBlock}) / ${subnet.SubnetId}(${subnet.SubnetName})`
115
+
116
+ return [ResMap[key], data]
117
+ } else {
118
+ return [ResMap[key], '无']
119
+ }
120
+ }
121
+
122
+ if (key === 'CodeInfo') {
123
+ return [ResMap[key], info[key]]
124
+ }
125
+
126
+ return [ResMap[key], info[key]]
127
+ })
128
+
129
+ if (info.StatusDesc) {
130
+ tableData.push(['状态描述', info.StatusDesc])
131
+ }
132
+
133
+ log.info(chalk.green(`云函数 [${name}] 详情:`))
134
+ printHorizontalTable(head, tableData)
135
+ log.info('函数代码(Java 函数以及入口大于 1 M 的函数不会显示)\n')
136
+ log.log(info['CodeInfo'])
137
+ }
138
+ }
@@ -1,16 +1,16 @@
1
- export * from './deploy'
2
- export * from './list'
3
- export * from './delete'
4
- export * from './config-update'
5
- export * from './invoke'
6
- export * from './log'
7
- export * from './detail'
8
- export * from './copy'
9
- export * from './run'
10
- export * from './trigger-create'
11
- export * from './trigger-delete'
12
- export * from './code-update'
13
- export * from './code-download'
14
- export * from './version'
15
- export * from './concurrency'
16
- export * from './alias'
1
+ export * from './deploy'
2
+ export * from './list'
3
+ export * from './delete'
4
+ export * from './config-update'
5
+ export * from './invoke'
6
+ export * from './log'
7
+ export * from './detail'
8
+ export * from './copy'
9
+ export * from './run'
10
+ export * from './trigger-create'
11
+ export * from './trigger-delete'
12
+ export * from './code-update'
13
+ export * from './code-download'
14
+ export * from './version'
15
+ export * from './concurrency'
16
+ export * from './alias'
@@ -1,121 +1,121 @@
1
- import chalk from 'chalk'
2
- import inquirer from 'inquirer'
3
- import { Command, ICommand } from '../common'
4
- import { CloudBaseError } from '../../error'
5
- import { batchInvokeFunctions, invokeFunction } from '../../function'
6
- import { InjectParams, CmdContext, ArgsParams, Log, Logger } from '../../decorators'
7
-
8
- @ICommand()
9
- export class InvokeFunction extends Command {
10
- get options() {
11
- return {
12
- cmd: 'fn',
13
- childCmd: 'invoke [name]',
14
- deprecateCmd: 'functions:invoke [name]',
15
- options: [
16
- {
17
- flags: '-e, --envId <envId>',
18
- desc: '环境 Id'
19
- },
20
- {
21
- flags: '--params <params>',
22
- desc: '调用函数的入参,JSON 字符串形式'
23
- }
24
- ],
25
- desc: '触发云端部署的云函数'
26
- }
27
- }
28
-
29
- @InjectParams()
30
- async execute(@CmdContext() ctx, @ArgsParams() argsParams, @Log() log: Logger) {
31
- const {
32
- envId,
33
- config: { functions },
34
- options
35
- } = ctx
36
- const name = argsParams?.[0]
37
- let isBatchInvoke = false
38
-
39
- // 不指定云函数名称,触发配置文件中的所有函数
40
- if (!name) {
41
- const { isBatch } = await inquirer.prompt({
42
- type: 'confirm',
43
- name: 'isBatch',
44
- message: '无云函数名称,是否需要触发配置文件中的全部云函数?',
45
- default: false
46
- })
47
-
48
- isBatchInvoke = isBatch
49
-
50
- if (!isBatchInvoke) {
51
- throw new CloudBaseError('请指定云函数名称!')
52
- }
53
- }
54
-
55
- let params
56
- const jsonStringParams = options.params
57
- if (jsonStringParams) {
58
- try {
59
- params = JSON.parse(jsonStringParams)
60
- } catch (e) {
61
- console.log(e)
62
- throw new CloudBaseError('jsonStringParams 参数不是正确的 JSON 字符串')
63
- }
64
- }
65
-
66
- if (isBatchInvoke) {
67
- return batchInvokeFunctions({
68
- envId,
69
- functions,
70
- log: true
71
- })
72
- }
73
-
74
- const func = functions.find((item) => item.name === name)
75
-
76
- const configParams = func?.params ? func.params : undefined
77
-
78
- const result = await invokeFunction({
79
- envId,
80
- functionName: name,
81
- params: params || configParams
82
- })
83
-
84
- if (result.InvokeResult === 0) {
85
- log.success(`[${name}] 调用成功\n`)
86
- } else {
87
- log.error(`[${name}] 调用失败\n`)
88
- }
89
-
90
- const ResMap = {
91
- Duration: '运行时间',
92
- MemUsage: '内存占用',
93
- BillDuration: '计费时间',
94
- FunctionRequestId: '请求 Id ',
95
- RetMsg: '返回结果',
96
- ErrMsg: '错误信息',
97
- Log: '调用日志'
98
- }
99
-
100
- const formatInfo = {
101
- ...result,
102
- Duration: Number(result.Duration).toFixed(2) + 'ms',
103
- MemUsage: Number(Number(result.MemUsage) / Math.pow(1024, 2)).toFixed(2) + 'MB',
104
- BillDuration: result.BillDuration + 'ms'
105
- }
106
-
107
- const logInfo = Object.keys(ResMap)
108
- .map((key) => {
109
- if (key === 'Log') {
110
- return `${chalk.bold.cyan(ResMap[key])}:\n${formatInfo[key]}`
111
- } else if (result.InvokeResult === 0 && key === 'ErrMsg') {
112
- return false
113
- } else {
114
- return `${chalk.bold.cyan(ResMap[key])}:${formatInfo[key]}`
115
- }
116
- })
117
- .filter((item) => item)
118
- .join('\n')
119
- console.log(logInfo)
120
- }
121
- }
1
+ import chalk from 'chalk'
2
+ import inquirer from 'inquirer'
3
+ import { Command, ICommand } from '../common'
4
+ import { CloudBaseError } from '../../error'
5
+ import { batchInvokeFunctions, invokeFunction } from '../../function'
6
+ import { InjectParams, CmdContext, ArgsParams, Log, Logger } from '../../decorators'
7
+
8
+ @ICommand()
9
+ export class InvokeFunction extends Command {
10
+ get options() {
11
+ return {
12
+ cmd: 'fn',
13
+ childCmd: 'invoke [name]',
14
+ deprecateCmd: 'functions:invoke [name]',
15
+ options: [
16
+ {
17
+ flags: '-e, --envId <envId>',
18
+ desc: '环境 Id'
19
+ },
20
+ {
21
+ flags: '--params <params>',
22
+ desc: '调用函数的入参,JSON 字符串形式'
23
+ }
24
+ ],
25
+ desc: '触发云端部署的云函数'
26
+ }
27
+ }
28
+
29
+ @InjectParams()
30
+ async execute(@CmdContext() ctx, @ArgsParams() argsParams, @Log() log: Logger) {
31
+ const {
32
+ envId,
33
+ config: { functions },
34
+ options
35
+ } = ctx
36
+ const name = argsParams?.[0]
37
+ let isBatchInvoke = false
38
+
39
+ // 不指定云函数名称,触发配置文件中的所有函数
40
+ if (!name) {
41
+ const { isBatch } = await inquirer.prompt({
42
+ type: 'confirm',
43
+ name: 'isBatch',
44
+ message: '无云函数名称,是否需要触发配置文件中的全部云函数?',
45
+ default: false
46
+ })
47
+
48
+ isBatchInvoke = isBatch
49
+
50
+ if (!isBatchInvoke) {
51
+ throw new CloudBaseError('请指定云函数名称!')
52
+ }
53
+ }
54
+
55
+ let params
56
+ const jsonStringParams = options.params
57
+ if (jsonStringParams) {
58
+ try {
59
+ params = JSON.parse(jsonStringParams)
60
+ } catch (e) {
61
+ console.log(e)
62
+ throw new CloudBaseError('jsonStringParams 参数不是正确的 JSON 字符串')
63
+ }
64
+ }
65
+
66
+ if (isBatchInvoke) {
67
+ return batchInvokeFunctions({
68
+ envId,
69
+ functions,
70
+ log: true
71
+ })
72
+ }
73
+
74
+ const func = functions.find((item) => item.name === name)
75
+
76
+ const configParams = func?.params ? func.params : undefined
77
+
78
+ const result = await invokeFunction({
79
+ envId,
80
+ functionName: name,
81
+ params: params || configParams
82
+ })
83
+
84
+ if (result.InvokeResult === 0) {
85
+ log.success(`[${name}] 调用成功\n`)
86
+ } else {
87
+ log.error(`[${name}] 调用失败\n`)
88
+ }
89
+
90
+ const ResMap = {
91
+ Duration: '运行时间',
92
+ MemUsage: '内存占用',
93
+ BillDuration: '计费时间',
94
+ FunctionRequestId: '请求 Id ',
95
+ RetMsg: '返回结果',
96
+ ErrMsg: '错误信息',
97
+ Log: '调用日志'
98
+ }
99
+
100
+ const formatInfo = {
101
+ ...result,
102
+ Duration: Number(result.Duration).toFixed(2) + 'ms',
103
+ MemUsage: Number(Number(result.MemUsage) / Math.pow(1024, 2)).toFixed(2) + 'MB',
104
+ BillDuration: result.BillDuration + 'ms'
105
+ }
106
+
107
+ const logInfo = Object.keys(ResMap)
108
+ .map((key) => {
109
+ if (key === 'Log') {
110
+ return `${chalk.bold.cyan(ResMap[key])}:\n${formatInfo[key]}`
111
+ } else if (result.InvokeResult === 0 && key === 'ErrMsg') {
112
+ return false
113
+ } else {
114
+ return `${chalk.bold.cyan(ResMap[key])}:${formatInfo[key]}`
115
+ }
116
+ })
117
+ .filter((item) => item)
118
+ .join('\n')
119
+ console.log(logInfo)
120
+ }
121
+ }