@cloudbase/cli 2.0.3 → 2.0.4-alpha.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 (199) 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/bin/tcb.js +0 -0
  10. package/changelog.md +6 -6
  11. package/jest.config.js +17 -17
  12. package/lib/commands/account/login.js +18 -18
  13. package/lib/commands/storage/storage.js +1 -1
  14. package/lib/env/login.js +7 -7
  15. package/package.json +2 -2
  16. package/post-install.js +61 -61
  17. package/runtime/nodejs/bootstrap.js +255 -255
  18. package/runtime/nodejs/runtime.js +183 -183
  19. package/src/auth/index.ts +1 -1
  20. package/src/auth/login.ts +91 -91
  21. package/src/auth/logout.ts +7 -7
  22. package/src/commands/account/index.ts +2 -2
  23. package/src/commands/account/login.ts +192 -192
  24. package/src/commands/account/logout.ts +24 -24
  25. package/src/commands/env/base.ts +90 -90
  26. package/src/commands/env/create.ts +92 -92
  27. package/src/commands/env/domain.ts +186 -186
  28. package/src/commands/env/index.ts +4 -4
  29. package/src/commands/env/login.ts +235 -235
  30. package/src/commands/framework/index.ts +124 -124
  31. package/src/commands/functions/alias/getRoute.ts +76 -76
  32. package/src/commands/functions/alias/index.ts +2 -2
  33. package/src/commands/functions/alias/setRoute.ts +82 -82
  34. package/src/commands/functions/code-download.ts +100 -100
  35. package/src/commands/functions/code-update.ts +62 -62
  36. package/src/commands/functions/concurrency/delete.ts +45 -45
  37. package/src/commands/functions/concurrency/index.ts +2 -2
  38. package/src/commands/functions/concurrency/list.ts +58 -58
  39. package/src/commands/functions/concurrency/set.ts +47 -47
  40. package/src/commands/functions/config-update.ts +76 -76
  41. package/src/commands/functions/copy.ts +62 -62
  42. package/src/commands/functions/delete.ts +79 -79
  43. package/src/commands/functions/deploy.ts +293 -293
  44. package/src/commands/functions/detail.ts +138 -138
  45. package/src/commands/functions/index.ts +16 -16
  46. package/src/commands/functions/invoke.ts +121 -121
  47. package/src/commands/functions/layer/bind.ts +182 -182
  48. package/src/commands/functions/layer/common.ts +8 -8
  49. package/src/commands/functions/layer/create.ts +49 -49
  50. package/src/commands/functions/layer/delete.ts +73 -73
  51. package/src/commands/functions/layer/download.ts +92 -92
  52. package/src/commands/functions/layer/index.ts +7 -7
  53. package/src/commands/functions/layer/list.ts +94 -94
  54. package/src/commands/functions/layer/sort.ts +76 -76
  55. package/src/commands/functions/list.ts +68 -68
  56. package/src/commands/functions/log.ts +148 -148
  57. package/src/commands/functions/run.ts +249 -249
  58. package/src/commands/functions/trigger-create.ts +79 -79
  59. package/src/commands/functions/trigger-delete.ts +105 -105
  60. package/src/commands/functions/version/index.ts +1 -1
  61. package/src/commands/functions/version/list.ts +73 -73
  62. package/src/commands/functions/version/publish.ts +43 -43
  63. package/src/commands/gateway/create.ts +109 -109
  64. package/src/commands/gateway/delete.ts +81 -81
  65. package/src/commands/gateway/domain.ts +159 -159
  66. package/src/commands/gateway/index.ts +5 -5
  67. package/src/commands/gateway/list.ts +76 -76
  68. package/src/commands/gateway/switch.ts +107 -107
  69. package/src/commands/helpers/index.ts +2 -2
  70. package/src/commands/helpers/init.ts +431 -431
  71. package/src/commands/helpers/new.ts +117 -117
  72. package/src/commands/helpers/open.ts +67 -67
  73. package/src/commands/hosting/hosting.ts +360 -360
  74. package/src/commands/index.ts +13 -13
  75. package/src/commands/lowcode/app.ts +34 -34
  76. package/src/commands/lowcode/comps.ts +322 -322
  77. package/src/commands/lowcode/index.ts +1 -1
  78. package/src/commands/lowcode/utils.ts +24 -24
  79. package/src/commands/run/image/index.ts +4 -4
  80. package/src/commands/run/standalonegateway/common.ts +7 -7
  81. package/src/commands/run/standalonegateway/create.ts +85 -85
  82. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  83. package/src/commands/run/standalonegateway/index.ts +4 -4
  84. package/src/commands/run/standalonegateway/list.ts +53 -53
  85. package/src/commands/run/standalonegateway/package.ts +62 -62
  86. package/src/commands/run/standalonegateway/turn.ts +63 -63
  87. package/src/commands/run/version/index.ts +4 -4
  88. package/src/commands/smart.ts +132 -132
  89. package/src/commands/storage/storage.ts +464 -464
  90. package/src/commands/third/thirdAttach.ts +49 -49
  91. package/src/completion/index.ts +13 -13
  92. package/src/decorators/captureError.ts +25 -25
  93. package/src/decorators/constants.ts +12 -12
  94. package/src/decorators/deprecate.ts +25 -25
  95. package/src/decorators/guard.ts +42 -42
  96. package/src/decorators/index.ts +7 -7
  97. package/src/decorators/injectParams.ts +54 -54
  98. package/src/decorators/params/common.ts +28 -28
  99. package/src/decorators/params/index.ts +35 -35
  100. package/src/env/domain.ts +33 -33
  101. package/src/env/index.ts +63 -63
  102. package/src/env/login.ts +80 -80
  103. package/src/error.ts +36 -36
  104. package/src/function/alias.ts +43 -43
  105. package/src/function/base.ts +253 -253
  106. package/src/function/code.ts +55 -55
  107. package/src/function/concurrency.ts +57 -57
  108. package/src/function/create.ts +78 -78
  109. package/src/function/delete.ts +42 -42
  110. package/src/function/index.ts +10 -10
  111. package/src/function/layer/attach.ts +68 -68
  112. package/src/function/layer/create.ts +63 -63
  113. package/src/function/layer/delete.ts +21 -21
  114. package/src/function/layer/download.ts +54 -54
  115. package/src/function/layer/index.ts +7 -7
  116. package/src/function/layer/list.ts +32 -32
  117. package/src/function/layer/sort.ts +24 -24
  118. package/src/function/trigger.ts +97 -97
  119. package/src/function/update.ts +35 -35
  120. package/src/function/version.ts +38 -38
  121. package/src/function/vpc.ts +22 -22
  122. package/src/gateway/index.ts +137 -137
  123. package/src/hosting.ts +212 -212
  124. package/src/index.ts +13 -13
  125. package/src/logger.ts +17 -17
  126. package/src/run/create.ts +23 -23
  127. package/src/run/delete.ts +15 -15
  128. package/src/run/image/build.ts +36 -36
  129. package/src/run/image/delete.ts +13 -13
  130. package/src/run/image/index.ts +3 -3
  131. package/src/run/image/info.ts +26 -26
  132. package/src/run/list.ts +29 -29
  133. package/src/run/repo.ts +24 -24
  134. package/src/run/standalonegateway/create.ts +24 -24
  135. package/src/run/standalonegateway/destroy.ts +19 -19
  136. package/src/run/standalonegateway/index.ts +4 -4
  137. package/src/run/standalonegateway/list.ts +74 -74
  138. package/src/run/standalonegateway/package/list.ts +24 -24
  139. package/src/run/standalonegateway/turn/index.ts +1 -1
  140. package/src/run/standalonegateway/turn/off.ts +19 -19
  141. package/src/run/standalonegateway/turn/on.ts +19 -19
  142. package/src/run/version/create.ts +68 -68
  143. package/src/run/version/delete.ts +15 -15
  144. package/src/run/version/index.ts +5 -5
  145. package/src/run/version/list.ts +16 -16
  146. package/src/run/version/modify.ts +16 -16
  147. package/src/run/version/repo.ts +27 -27
  148. package/src/run/version/update.ts +58 -58
  149. package/src/storage.ts +114 -114
  150. package/src/third/index.ts +12 -12
  151. package/src/utils/auth.ts +15 -15
  152. package/src/utils/cli-table.ts +23 -23
  153. package/src/utils/config.ts +39 -39
  154. package/src/utils/env.ts +244 -244
  155. package/src/utils/fs/del.ts +5 -5
  156. package/src/utils/fs/index.ts +71 -71
  157. package/src/utils/function-packer.ts +97 -97
  158. package/src/utils/log.ts +81 -81
  159. package/src/utils/net/cloud-api-request.ts +62 -62
  160. package/src/utils/net/credential.ts +53 -53
  161. package/src/utils/net/index.ts +4 -4
  162. package/src/utils/net/manager-service.ts +36 -36
  163. package/src/utils/net/proxy.ts +6 -6
  164. package/src/utils/notice.ts +28 -28
  165. package/src/utils/output/highlight.ts +5 -5
  166. package/src/utils/output/index.ts +2 -2
  167. package/src/utils/output/link.ts +10 -10
  168. package/src/utils/output/loading.ts +82 -82
  169. package/src/utils/parallel.ts +82 -82
  170. package/src/utils/platform/index.ts +2 -2
  171. package/src/utils/platform/mac.ts +21 -21
  172. package/src/utils/platform/os.ts +64 -64
  173. package/src/utils/platform/port.ts +10 -10
  174. package/src/utils/progress-bar.ts +38 -38
  175. package/src/utils/prompt/select.ts +59 -59
  176. package/src/utils/reporter/agree.ts +20 -20
  177. package/src/utils/reporter/download.ts +26 -26
  178. package/src/utils/reporter/index.ts +3 -3
  179. package/src/utils/reporter/usage.ts +20 -20
  180. package/src/utils/store/auth.ts +49 -49
  181. package/src/utils/store/common.ts +8 -8
  182. package/src/utils/store/db.ts +68 -68
  183. package/src/utils/store/index.ts +4 -4
  184. package/src/utils/store/usage.ts +12 -12
  185. package/src/utils/template.ts +170 -170
  186. package/src/utils/tools/encoding.ts +8 -8
  187. package/src/utils/tools/index.ts +4 -4
  188. package/src/utils/tools/object.ts +33 -33
  189. package/src/utils/tools/time.ts +38 -38
  190. package/src/utils/tools/uid.ts +19 -19
  191. package/templates/html/loginFail.html +90 -90
  192. package/templates/html/loginSuccess.html +86 -86
  193. package/templates/server/node/_gitignore +54 -54
  194. package/templates/server/node/cloudbaserc.json +10 -10
  195. package/templates/server/node/index.js +5 -5
  196. package/templates/server/node/package.json +9 -9
  197. package/tsconfig.json +19 -19
  198. package/tsconfig.test.json +13 -13
  199. package/.vscode/settings.json +0 -3
@@ -1,68 +1,68 @@
1
- import { Command, ICommand } from '../common'
2
- import { CloudBaseError } from '../../error'
3
- import { listFunction } from '../../function'
4
- import { printHorizontalTable, loadingFactory } from '../../utils'
5
- import { InjectParams, EnvId, ArgsOptions } from '../../decorators'
6
- import { StatusMap } from '../../constant'
7
-
8
- @ICommand()
9
- export class ListFunction extends Command {
10
- get options() {
11
- return {
12
- cmd: 'fn',
13
- childCmd: 'list',
14
- deprecateCmd: 'functions:list',
15
- options: [
16
- {
17
- flags: '-e, --envId <envId>',
18
- desc: '环境 Id'
19
- },
20
- { flags: '-l, --limit <limit>', desc: '返回数据长度,默认值为 20' },
21
- {
22
- flags: '-o, --offset <offset>',
23
- desc: '数据偏移量,默认值为 0'
24
- }
25
- ],
26
- desc: '展示云函数列表'
27
- }
28
- }
29
-
30
- @InjectParams()
31
- async execute(@EnvId() envId, @ArgsOptions() options) {
32
- let { limit = 20, offset = 0 } = options
33
- limit = Number(limit)
34
- offset = Number(offset)
35
- if (!Number.isInteger(limit) || !Number.isInteger(offset)) {
36
- throw new CloudBaseError('limit 和 offset 必须为整数')
37
- }
38
-
39
- if (limit < 0 || offset < 0) {
40
- throw new CloudBaseError('limit 和 offset 必须为大于 0 的整数')
41
- }
42
-
43
- const loading = loadingFactory()
44
-
45
- loading.start('数据加载中...')
46
-
47
- const data = await listFunction({
48
- envId,
49
- limit: Number(limit),
50
- offset: Number(offset)
51
- })
52
-
53
- loading.stop()
54
-
55
- const head: string[] = ['函数 Id', '函数名称', '运行时', '创建时间', '修改时间', '状态']
56
-
57
- const tableData = data.map((item) => [
58
- item.FunctionId,
59
- item.FunctionName,
60
- item.Runtime,
61
- item.AddTime,
62
- item.ModTime,
63
- StatusMap[item.Status]
64
- ])
65
-
66
- printHorizontalTable(head, tableData)
67
- }
68
- }
1
+ import { Command, ICommand } from '../common'
2
+ import { CloudBaseError } from '../../error'
3
+ import { listFunction } from '../../function'
4
+ import { printHorizontalTable, loadingFactory } from '../../utils'
5
+ import { InjectParams, EnvId, ArgsOptions } from '../../decorators'
6
+ import { StatusMap } from '../../constant'
7
+
8
+ @ICommand()
9
+ export class ListFunction extends Command {
10
+ get options() {
11
+ return {
12
+ cmd: 'fn',
13
+ childCmd: 'list',
14
+ deprecateCmd: 'functions:list',
15
+ options: [
16
+ {
17
+ flags: '-e, --envId <envId>',
18
+ desc: '环境 Id'
19
+ },
20
+ { flags: '-l, --limit <limit>', desc: '返回数据长度,默认值为 20' },
21
+ {
22
+ flags: '-o, --offset <offset>',
23
+ desc: '数据偏移量,默认值为 0'
24
+ }
25
+ ],
26
+ desc: '展示云函数列表'
27
+ }
28
+ }
29
+
30
+ @InjectParams()
31
+ async execute(@EnvId() envId, @ArgsOptions() options) {
32
+ let { limit = 20, offset = 0 } = options
33
+ limit = Number(limit)
34
+ offset = Number(offset)
35
+ if (!Number.isInteger(limit) || !Number.isInteger(offset)) {
36
+ throw new CloudBaseError('limit 和 offset 必须为整数')
37
+ }
38
+
39
+ if (limit < 0 || offset < 0) {
40
+ throw new CloudBaseError('limit 和 offset 必须为大于 0 的整数')
41
+ }
42
+
43
+ const loading = loadingFactory()
44
+
45
+ loading.start('数据加载中...')
46
+
47
+ const data = await listFunction({
48
+ envId,
49
+ limit: Number(limit),
50
+ offset: Number(offset)
51
+ })
52
+
53
+ loading.stop()
54
+
55
+ const head: string[] = ['函数 Id', '函数名称', '运行时', '创建时间', '修改时间', '状态']
56
+
57
+ const tableData = data.map((item) => [
58
+ item.FunctionId,
59
+ item.FunctionName,
60
+ item.Runtime,
61
+ item.AddTime,
62
+ item.ModTime,
63
+ StatusMap[item.Status]
64
+ ])
65
+
66
+ printHorizontalTable(head, tableData)
67
+ }
68
+ }
@@ -1,148 +1,148 @@
1
- import chalk from 'chalk'
2
- import { Command, ICommand } from '../common'
3
- import { CloudBaseError } from '../../error'
4
- import { getFunctionLog } from '../../function'
5
- import { InjectParams, CmdContext, ArgsParams, Log, Logger } from '../../decorators'
6
-
7
- @ICommand()
8
- export class FunctionLog extends Command {
9
- get options() {
10
- return {
11
- cmd: 'fn',
12
- childCmd: 'log <name>',
13
- deprecateCmd: 'functions:log <name>',
14
- options: [
15
- {
16
- flags: '-e, --envId <envId>',
17
- desc: '环境 Id'
18
- },
19
- { flags: '-i, --reqId <reqId>', desc: '函数请求 Id' },
20
- {
21
- flags: '-o, --offset <offset>',
22
- desc: '数据的偏移量,Offset + Limit不能大于10000'
23
- },
24
- {
25
- flags: '-l, --limit <limit>',
26
- desc: '返回数据的长度,Offset + Limit不能大于10000'
27
- },
28
- {
29
- flags: '--order <order>',
30
- desc: '以升序还是降序的方式对日志进行排序,可选值 desc 和 asc'
31
- },
32
- {
33
- flags: '--orderBy <orderBy>',
34
- desc:
35
- '根据某个字段排序日志,支持以下字段:function_name, duration, mem_usage, start_time'
36
- },
37
- {
38
- flags: '--startTime <startTime>',
39
- desc: '查询的具体日期,例如:2019-05-16 20:00:00,只能与 endtime 相差一天之内'
40
- },
41
- {
42
- flags: '--endTime <endTime>',
43
- desc: '查询的具体日期,例如:2019-05-16 20:59:59,只能与 startTime 相差一天之内'
44
- },
45
- { flags: '-e, --error', desc: '只返回错误类型的日志' },
46
- { flags: '-s, --success', desc: '只返回正确类型的日志' }
47
- ],
48
- desc: '打印云函数日志'
49
- }
50
- }
51
-
52
- @InjectParams()
53
- async execute(@CmdContext() ctx, @ArgsParams() argsParams, @Log() log: Logger) {
54
- const { envId, options } = ctx
55
- const name = argsParams?.[0]
56
-
57
- let {
58
- offset,
59
- limit,
60
- order,
61
- orderBy,
62
- error,
63
- success,
64
- startTime,
65
- endTime,
66
- reqId: functionRequestId
67
- } = options
68
-
69
- if (!name) {
70
- throw new CloudBaseError('云函数名称不能为空')
71
- }
72
-
73
- // 2019-05-16 20:59:59 时间类型的长度
74
- const TimeLength = 19
75
-
76
- if (
77
- typeof startTime !== 'undefined' &&
78
- typeof endTime !== 'undefined' &&
79
- (startTime.length !== TimeLength || endTime.length !== TimeLength)
80
- ) {
81
- throw new CloudBaseError('时间格式错误,必须为 2019-05-16 20:59:59 类型')
82
- }
83
-
84
- if (new Date(endTime).getTime() < new Date(startTime).getTime()) {
85
- throw new CloudBaseError('开始时间不能晚于结束时间')
86
- }
87
-
88
- const OneDay = 86400000
89
- if (new Date(endTime).getTime() - new Date(startTime).getTime() > OneDay) {
90
- throw new CloudBaseError('endTime 与 startTime 只能相差一天之内')
91
- }
92
-
93
- let params: any = {
94
- order,
95
- orderBy,
96
- startTime,
97
- endTime,
98
- functionRequestId,
99
- offset: Number(offset),
100
- limit: Number(limit)
101
- }
102
-
103
- error && (params.filter = { RetCode: 'not0' })
104
- success && (params.filter = { RetCode: 'is0' })
105
- // 删除值为 undefined 的字段
106
- params = JSON.parse(JSON.stringify(params))
107
-
108
- const logs = await getFunctionLog({
109
- envId,
110
- functionName: name,
111
- ...params
112
- })
113
-
114
- const ResMap = {
115
- StartTime: '请求时间',
116
- FunctionName: '函数名称',
117
- BillDuration: '计费时间(ms)',
118
- Duration: '运行时间(ms)',
119
- InvokeFinished: '调用次数',
120
- MemUsage: '占用内存',
121
- RequestId: '请求 Id',
122
- RetCode: '调用状态',
123
- RetMsg: '返回结果'
124
- }
125
-
126
- log.success(chalk.green(`函数:${name} 调用日志:\n`))
127
-
128
- if (logs.length === 0) {
129
- return log.info('无调用日志')
130
- }
131
-
132
- logs.forEach((log) => {
133
- const info = Object.keys(ResMap)
134
- .map((key) => {
135
- if (key === 'RetCode') {
136
- return `${ResMap[key]}:${Number(log[key]) === 0 ? '成功' : '失败'}\n`
137
- }
138
- if (key === 'MemUsage') {
139
- const str = Number(Number(log[key]) / 1024 / 1024).toFixed(3)
140
- return `${ResMap[key]}:${str} MB\n`
141
- }
142
- return `${ResMap[key]}:${log[key]} \n`
143
- })
144
- .reduce((prev, next) => prev + next)
145
- console.log(info + `日志:\n ${log.Log} \n`)
146
- })
147
- }
148
- }
1
+ import chalk from 'chalk'
2
+ import { Command, ICommand } from '../common'
3
+ import { CloudBaseError } from '../../error'
4
+ import { getFunctionLog } from '../../function'
5
+ import { InjectParams, CmdContext, ArgsParams, Log, Logger } from '../../decorators'
6
+
7
+ @ICommand()
8
+ export class FunctionLog extends Command {
9
+ get options() {
10
+ return {
11
+ cmd: 'fn',
12
+ childCmd: 'log <name>',
13
+ deprecateCmd: 'functions:log <name>',
14
+ options: [
15
+ {
16
+ flags: '-e, --envId <envId>',
17
+ desc: '环境 Id'
18
+ },
19
+ { flags: '-i, --reqId <reqId>', desc: '函数请求 Id' },
20
+ {
21
+ flags: '-o, --offset <offset>',
22
+ desc: '数据的偏移量,Offset + Limit不能大于10000'
23
+ },
24
+ {
25
+ flags: '-l, --limit <limit>',
26
+ desc: '返回数据的长度,Offset + Limit不能大于10000'
27
+ },
28
+ {
29
+ flags: '--order <order>',
30
+ desc: '以升序还是降序的方式对日志进行排序,可选值 desc 和 asc'
31
+ },
32
+ {
33
+ flags: '--orderBy <orderBy>',
34
+ desc:
35
+ '根据某个字段排序日志,支持以下字段:function_name, duration, mem_usage, start_time'
36
+ },
37
+ {
38
+ flags: '--startTime <startTime>',
39
+ desc: '查询的具体日期,例如:2019-05-16 20:00:00,只能与 endtime 相差一天之内'
40
+ },
41
+ {
42
+ flags: '--endTime <endTime>',
43
+ desc: '查询的具体日期,例如:2019-05-16 20:59:59,只能与 startTime 相差一天之内'
44
+ },
45
+ { flags: '-e, --error', desc: '只返回错误类型的日志' },
46
+ { flags: '-s, --success', desc: '只返回正确类型的日志' }
47
+ ],
48
+ desc: '打印云函数日志'
49
+ }
50
+ }
51
+
52
+ @InjectParams()
53
+ async execute(@CmdContext() ctx, @ArgsParams() argsParams, @Log() log: Logger) {
54
+ const { envId, options } = ctx
55
+ const name = argsParams?.[0]
56
+
57
+ let {
58
+ offset,
59
+ limit,
60
+ order,
61
+ orderBy,
62
+ error,
63
+ success,
64
+ startTime,
65
+ endTime,
66
+ reqId: functionRequestId
67
+ } = options
68
+
69
+ if (!name) {
70
+ throw new CloudBaseError('云函数名称不能为空')
71
+ }
72
+
73
+ // 2019-05-16 20:59:59 时间类型的长度
74
+ const TimeLength = 19
75
+
76
+ if (
77
+ typeof startTime !== 'undefined' &&
78
+ typeof endTime !== 'undefined' &&
79
+ (startTime.length !== TimeLength || endTime.length !== TimeLength)
80
+ ) {
81
+ throw new CloudBaseError('时间格式错误,必须为 2019-05-16 20:59:59 类型')
82
+ }
83
+
84
+ if (new Date(endTime).getTime() < new Date(startTime).getTime()) {
85
+ throw new CloudBaseError('开始时间不能晚于结束时间')
86
+ }
87
+
88
+ const OneDay = 86400000
89
+ if (new Date(endTime).getTime() - new Date(startTime).getTime() > OneDay) {
90
+ throw new CloudBaseError('endTime 与 startTime 只能相差一天之内')
91
+ }
92
+
93
+ let params: any = {
94
+ order,
95
+ orderBy,
96
+ startTime,
97
+ endTime,
98
+ functionRequestId,
99
+ offset: Number(offset),
100
+ limit: Number(limit)
101
+ }
102
+
103
+ error && (params.filter = { RetCode: 'not0' })
104
+ success && (params.filter = { RetCode: 'is0' })
105
+ // 删除值为 undefined 的字段
106
+ params = JSON.parse(JSON.stringify(params))
107
+
108
+ const logs = await getFunctionLog({
109
+ envId,
110
+ functionName: name,
111
+ ...params
112
+ })
113
+
114
+ const ResMap = {
115
+ StartTime: '请求时间',
116
+ FunctionName: '函数名称',
117
+ BillDuration: '计费时间(ms)',
118
+ Duration: '运行时间(ms)',
119
+ InvokeFinished: '调用次数',
120
+ MemUsage: '占用内存',
121
+ RequestId: '请求 Id',
122
+ RetCode: '调用状态',
123
+ RetMsg: '返回结果'
124
+ }
125
+
126
+ log.success(chalk.green(`函数:${name} 调用日志:\n`))
127
+
128
+ if (logs.length === 0) {
129
+ return log.info('无调用日志')
130
+ }
131
+
132
+ logs.forEach((log) => {
133
+ const info = Object.keys(ResMap)
134
+ .map((key) => {
135
+ if (key === 'RetCode') {
136
+ return `${ResMap[key]}:${Number(log[key]) === 0 ? '成功' : '失败'}\n`
137
+ }
138
+ if (key === 'MemUsage') {
139
+ const str = Number(Number(log[key]) / 1024 / 1024).toFixed(3)
140
+ return `${ResMap[key]}:${str} MB\n`
141
+ }
142
+ return `${ResMap[key]}:${log[key]} \n`
143
+ })
144
+ .reduce((prev, next) => prev + next)
145
+ console.log(info + `日志:\n ${log.Log} \n`)
146
+ })
147
+ }
148
+ }