@cloudbase/cli 2.0.3-alpha.1 → 2.0.3

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 (201) 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/storage/storage.js +1 -1
  15. package/lib/env/login.js +7 -7
  16. package/lib/run/service/deployPackage.js +2 -2
  17. package/package.json +3 -3
  18. package/post-install.js +61 -61
  19. package/runtime/nodejs/bootstrap.js +255 -255
  20. package/runtime/nodejs/runtime.js +183 -183
  21. package/src/auth/index.ts +1 -1
  22. package/src/auth/login.ts +91 -91
  23. package/src/auth/logout.ts +7 -7
  24. package/src/commands/account/index.ts +2 -2
  25. package/src/commands/account/login.ts +192 -192
  26. package/src/commands/account/logout.ts +24 -24
  27. package/src/commands/env/base.ts +90 -90
  28. package/src/commands/env/create.ts +92 -92
  29. package/src/commands/env/domain.ts +186 -186
  30. package/src/commands/env/index.ts +4 -4
  31. package/src/commands/env/login.ts +235 -235
  32. package/src/commands/framework/index.ts +124 -124
  33. package/src/commands/functions/alias/getRoute.ts +76 -76
  34. package/src/commands/functions/alias/index.ts +2 -2
  35. package/src/commands/functions/alias/setRoute.ts +82 -82
  36. package/src/commands/functions/code-download.ts +100 -100
  37. package/src/commands/functions/code-update.ts +62 -62
  38. package/src/commands/functions/concurrency/delete.ts +45 -45
  39. package/src/commands/functions/concurrency/index.ts +2 -2
  40. package/src/commands/functions/concurrency/list.ts +58 -58
  41. package/src/commands/functions/concurrency/set.ts +47 -47
  42. package/src/commands/functions/config-update.ts +76 -76
  43. package/src/commands/functions/copy.ts +62 -62
  44. package/src/commands/functions/delete.ts +79 -79
  45. package/src/commands/functions/deploy.ts +293 -293
  46. package/src/commands/functions/detail.ts +138 -138
  47. package/src/commands/functions/index.ts +16 -16
  48. package/src/commands/functions/invoke.ts +121 -121
  49. package/src/commands/functions/layer/bind.ts +182 -182
  50. package/src/commands/functions/layer/common.ts +8 -8
  51. package/src/commands/functions/layer/create.ts +49 -49
  52. package/src/commands/functions/layer/delete.ts +73 -73
  53. package/src/commands/functions/layer/download.ts +92 -92
  54. package/src/commands/functions/layer/index.ts +7 -7
  55. package/src/commands/functions/layer/list.ts +94 -94
  56. package/src/commands/functions/layer/sort.ts +76 -76
  57. package/src/commands/functions/list.ts +68 -68
  58. package/src/commands/functions/log.ts +148 -148
  59. package/src/commands/functions/run.ts +249 -249
  60. package/src/commands/functions/trigger-create.ts +79 -79
  61. package/src/commands/functions/trigger-delete.ts +105 -105
  62. package/src/commands/functions/version/index.ts +1 -1
  63. package/src/commands/functions/version/list.ts +73 -73
  64. package/src/commands/functions/version/publish.ts +43 -43
  65. package/src/commands/gateway/create.ts +109 -109
  66. package/src/commands/gateway/delete.ts +81 -81
  67. package/src/commands/gateway/domain.ts +159 -159
  68. package/src/commands/gateway/index.ts +5 -5
  69. package/src/commands/gateway/list.ts +76 -76
  70. package/src/commands/gateway/switch.ts +107 -107
  71. package/src/commands/helpers/index.ts +2 -2
  72. package/src/commands/helpers/init.ts +431 -431
  73. package/src/commands/helpers/new.ts +117 -117
  74. package/src/commands/helpers/open.ts +67 -67
  75. package/src/commands/hosting/hosting.ts +360 -360
  76. package/src/commands/index.ts +13 -13
  77. package/src/commands/lowcode/app.ts +34 -34
  78. package/src/commands/lowcode/comps.ts +322 -322
  79. package/src/commands/lowcode/index.ts +1 -1
  80. package/src/commands/lowcode/utils.ts +24 -24
  81. package/src/commands/run/image/index.ts +4 -4
  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/service/deployPackage.ts +1 -1
  137. package/src/run/standalonegateway/create.ts +24 -24
  138. package/src/run/standalonegateway/destroy.ts +19 -19
  139. package/src/run/standalonegateway/index.ts +4 -4
  140. package/src/run/standalonegateway/list.ts +74 -74
  141. package/src/run/standalonegateway/package/list.ts +24 -24
  142. package/src/run/standalonegateway/turn/index.ts +1 -1
  143. package/src/run/standalonegateway/turn/off.ts +19 -19
  144. package/src/run/standalonegateway/turn/on.ts +19 -19
  145. package/src/run/version/create.ts +68 -68
  146. package/src/run/version/delete.ts +15 -15
  147. package/src/run/version/index.ts +5 -5
  148. package/src/run/version/list.ts +16 -16
  149. package/src/run/version/modify.ts +16 -16
  150. package/src/run/version/repo.ts +27 -27
  151. package/src/run/version/update.ts +58 -58
  152. package/src/storage.ts +114 -114
  153. package/src/third/index.ts +12 -12
  154. package/src/utils/auth.ts +15 -15
  155. package/src/utils/cli-table.ts +23 -23
  156. package/src/utils/config.ts +39 -39
  157. package/src/utils/env.ts +244 -244
  158. package/src/utils/fs/del.ts +5 -5
  159. package/src/utils/fs/index.ts +71 -71
  160. package/src/utils/function-packer.ts +97 -97
  161. package/src/utils/log.ts +81 -81
  162. package/src/utils/net/cloud-api-request.ts +62 -62
  163. package/src/utils/net/credential.ts +53 -53
  164. package/src/utils/net/index.ts +4 -4
  165. package/src/utils/net/manager-service.ts +36 -36
  166. package/src/utils/net/proxy.ts +6 -6
  167. package/src/utils/notice.ts +28 -28
  168. package/src/utils/output/highlight.ts +5 -5
  169. package/src/utils/output/index.ts +2 -2
  170. package/src/utils/output/link.ts +10 -10
  171. package/src/utils/output/loading.ts +82 -82
  172. package/src/utils/parallel.ts +82 -82
  173. package/src/utils/platform/index.ts +2 -2
  174. package/src/utils/platform/mac.ts +21 -21
  175. package/src/utils/platform/os.ts +64 -64
  176. package/src/utils/platform/port.ts +10 -10
  177. package/src/utils/progress-bar.ts +38 -38
  178. package/src/utils/prompt/select.ts +59 -59
  179. package/src/utils/reporter/agree.ts +20 -20
  180. package/src/utils/reporter/download.ts +26 -26
  181. package/src/utils/reporter/index.ts +3 -3
  182. package/src/utils/reporter/usage.ts +20 -20
  183. package/src/utils/store/auth.ts +49 -49
  184. package/src/utils/store/common.ts +8 -8
  185. package/src/utils/store/db.ts +68 -68
  186. package/src/utils/store/index.ts +4 -4
  187. package/src/utils/store/usage.ts +12 -12
  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
@@ -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
+ }