@cloudbase/cli 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) 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 +6 -4
  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/lib/run/service/deployPackage.js +6 -4
  16. package/lib/utils/net/http-request.js +4 -4
  17. package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +3 -3
  18. package/package.json +16 -16
  19. package/post-install.js +61 -61
  20. package/runtime/nodejs/bootstrap.js +255 -255
  21. package/runtime/nodejs/runtime.js +183 -183
  22. package/src/auth/index.ts +1 -1
  23. package/src/auth/login.ts +91 -91
  24. package/src/auth/logout.ts +7 -7
  25. package/src/commands/account/index.ts +2 -2
  26. package/src/commands/account/login.ts +192 -192
  27. package/src/commands/account/logout.ts +24 -24
  28. package/src/commands/common.ts +246 -246
  29. package/src/commands/env/base.ts +90 -90
  30. package/src/commands/env/create.ts +92 -92
  31. package/src/commands/env/domain.ts +186 -186
  32. package/src/commands/env/index.ts +4 -4
  33. package/src/commands/env/login.ts +235 -235
  34. package/src/commands/framework/index.ts +124 -124
  35. package/src/commands/functions/alias/getRoute.ts +76 -76
  36. package/src/commands/functions/alias/index.ts +2 -2
  37. package/src/commands/functions/alias/setRoute.ts +82 -82
  38. package/src/commands/functions/code-download.ts +100 -100
  39. package/src/commands/functions/code-update.ts +62 -62
  40. package/src/commands/functions/concurrency/delete.ts +45 -45
  41. package/src/commands/functions/concurrency/index.ts +2 -2
  42. package/src/commands/functions/concurrency/list.ts +58 -58
  43. package/src/commands/functions/concurrency/set.ts +47 -47
  44. package/src/commands/functions/config-update.ts +76 -76
  45. package/src/commands/functions/copy.ts +62 -62
  46. package/src/commands/functions/delete.ts +79 -79
  47. package/src/commands/functions/deploy.ts +293 -293
  48. package/src/commands/functions/detail.ts +138 -138
  49. package/src/commands/functions/index.ts +16 -16
  50. package/src/commands/functions/invoke.ts +121 -121
  51. package/src/commands/functions/layer/bind.ts +182 -182
  52. package/src/commands/functions/layer/common.ts +8 -8
  53. package/src/commands/functions/layer/create.ts +49 -49
  54. package/src/commands/functions/layer/delete.ts +73 -73
  55. package/src/commands/functions/layer/download.ts +92 -92
  56. package/src/commands/functions/layer/index.ts +7 -7
  57. package/src/commands/functions/layer/list.ts +94 -94
  58. package/src/commands/functions/layer/sort.ts +76 -76
  59. package/src/commands/functions/list.ts +68 -68
  60. package/src/commands/functions/log.ts +148 -148
  61. package/src/commands/functions/run.ts +249 -249
  62. package/src/commands/functions/trigger-create.ts +79 -79
  63. package/src/commands/functions/trigger-delete.ts +105 -105
  64. package/src/commands/functions/version/index.ts +1 -1
  65. package/src/commands/functions/version/list.ts +73 -73
  66. package/src/commands/functions/version/publish.ts +43 -43
  67. package/src/commands/gateway/create.ts +109 -109
  68. package/src/commands/gateway/delete.ts +81 -81
  69. package/src/commands/gateway/domain.ts +159 -159
  70. package/src/commands/gateway/index.ts +5 -5
  71. package/src/commands/gateway/list.ts +76 -76
  72. package/src/commands/gateway/switch.ts +107 -107
  73. package/src/commands/helpers/index.ts +2 -2
  74. package/src/commands/helpers/init.ts +431 -431
  75. package/src/commands/helpers/new.ts +117 -117
  76. package/src/commands/helpers/open.ts +67 -67
  77. package/src/commands/hosting/hosting.ts +360 -360
  78. package/src/commands/index.ts +13 -13
  79. package/src/commands/lowcode/app.ts +34 -34
  80. package/src/commands/lowcode/comps.ts +322 -322
  81. package/src/commands/lowcode/index.ts +1 -1
  82. package/src/commands/lowcode/utils.ts +24 -24
  83. package/src/commands/run/image/index.ts +4 -4
  84. package/src/commands/run/standalonegateway/common.ts +7 -7
  85. package/src/commands/run/standalonegateway/create.ts +85 -85
  86. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  87. package/src/commands/run/standalonegateway/index.ts +4 -4
  88. package/src/commands/run/standalonegateway/list.ts +53 -53
  89. package/src/commands/run/standalonegateway/package.ts +62 -62
  90. package/src/commands/run/standalonegateway/turn.ts +63 -63
  91. package/src/commands/run/version/index.ts +4 -4
  92. package/src/commands/smart.ts +132 -132
  93. package/src/commands/storage/storage.ts +464 -464
  94. package/src/commands/third/thirdAttach.ts +49 -49
  95. package/src/completion/index.ts +13 -13
  96. package/src/decorators/captureError.ts +25 -25
  97. package/src/decorators/constants.ts +12 -12
  98. package/src/decorators/deprecate.ts +25 -25
  99. package/src/decorators/guard.ts +42 -42
  100. package/src/decorators/index.ts +7 -7
  101. package/src/decorators/injectParams.ts +54 -54
  102. package/src/decorators/params/common.ts +28 -28
  103. package/src/decorators/params/index.ts +35 -35
  104. package/src/env/domain.ts +33 -33
  105. package/src/env/index.ts +63 -63
  106. package/src/env/login.ts +80 -80
  107. package/src/error.ts +36 -36
  108. package/src/function/alias.ts +43 -43
  109. package/src/function/base.ts +253 -253
  110. package/src/function/code.ts +55 -55
  111. package/src/function/concurrency.ts +57 -57
  112. package/src/function/create.ts +78 -78
  113. package/src/function/delete.ts +42 -42
  114. package/src/function/index.ts +10 -10
  115. package/src/function/layer/attach.ts +68 -68
  116. package/src/function/layer/create.ts +63 -63
  117. package/src/function/layer/delete.ts +21 -21
  118. package/src/function/layer/download.ts +54 -54
  119. package/src/function/layer/index.ts +7 -7
  120. package/src/function/layer/list.ts +32 -32
  121. package/src/function/layer/sort.ts +24 -24
  122. package/src/function/trigger.ts +97 -97
  123. package/src/function/update.ts +35 -35
  124. package/src/function/version.ts +38 -38
  125. package/src/function/vpc.ts +22 -22
  126. package/src/gateway/index.ts +137 -137
  127. package/src/hosting.ts +212 -212
  128. package/src/index.ts +13 -13
  129. package/src/logger.ts +17 -17
  130. package/src/run/create.ts +23 -23
  131. package/src/run/delete.ts +15 -15
  132. package/src/run/image/build.ts +36 -36
  133. package/src/run/image/delete.ts +13 -13
  134. package/src/run/image/index.ts +3 -3
  135. package/src/run/image/info.ts +26 -26
  136. package/src/run/list.ts +29 -29
  137. package/src/run/repo.ts +24 -24
  138. package/src/run/service/deployPackage.ts +6 -4
  139. package/src/run/standalonegateway/create.ts +24 -24
  140. package/src/run/standalonegateway/destroy.ts +19 -19
  141. package/src/run/standalonegateway/index.ts +4 -4
  142. package/src/run/standalonegateway/list.ts +74 -74
  143. package/src/run/standalonegateway/package/list.ts +24 -24
  144. package/src/run/standalonegateway/turn/index.ts +1 -1
  145. package/src/run/standalonegateway/turn/off.ts +19 -19
  146. package/src/run/standalonegateway/turn/on.ts +19 -19
  147. package/src/run/version/create.ts +68 -68
  148. package/src/run/version/delete.ts +15 -15
  149. package/src/run/version/index.ts +5 -5
  150. package/src/run/version/list.ts +16 -16
  151. package/src/run/version/modify.ts +16 -16
  152. package/src/run/version/repo.ts +27 -27
  153. package/src/run/version/update.ts +58 -58
  154. package/src/storage.ts +114 -114
  155. package/src/third/index.ts +12 -12
  156. package/src/utils/auth.ts +15 -15
  157. package/src/utils/cli-table.ts +23 -23
  158. package/src/utils/config.ts +39 -39
  159. package/src/utils/env.ts +244 -244
  160. package/src/utils/fs/del.ts +5 -5
  161. package/src/utils/fs/index.ts +71 -71
  162. package/src/utils/function-packer.ts +97 -97
  163. package/src/utils/log.ts +81 -81
  164. package/src/utils/net/cloud-api-request.ts +62 -62
  165. package/src/utils/net/credential.ts +53 -53
  166. package/src/utils/net/http-request.ts +84 -84
  167. package/src/utils/net/index.ts +4 -4
  168. package/src/utils/net/manager-service.ts +36 -36
  169. package/src/utils/net/proxy.ts +6 -6
  170. package/src/utils/notice.ts +28 -28
  171. package/src/utils/output/highlight.ts +5 -5
  172. package/src/utils/output/index.ts +2 -2
  173. package/src/utils/output/link.ts +10 -10
  174. package/src/utils/output/loading.ts +82 -82
  175. package/src/utils/parallel.ts +82 -82
  176. package/src/utils/platform/index.ts +2 -2
  177. package/src/utils/platform/mac.ts +21 -21
  178. package/src/utils/platform/os.ts +64 -64
  179. package/src/utils/platform/port.ts +10 -10
  180. package/src/utils/progress-bar.ts +38 -38
  181. package/src/utils/prompt/select.ts +59 -59
  182. package/src/utils/reporter/agree.ts +20 -20
  183. package/src/utils/reporter/download.ts +26 -26
  184. package/src/utils/reporter/index.ts +3 -3
  185. package/src/utils/reporter/usage.ts +20 -20
  186. package/src/utils/store/auth.ts +49 -49
  187. package/src/utils/store/common.ts +8 -8
  188. package/src/utils/store/db.ts +68 -68
  189. package/src/utils/store/index.ts +4 -4
  190. package/src/utils/store/usage.ts +12 -12
  191. package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +13 -13
  192. package/src/utils/template.ts +170 -170
  193. package/src/utils/tools/encoding.ts +8 -8
  194. package/src/utils/tools/index.ts +4 -4
  195. package/src/utils/tools/object.ts +33 -33
  196. package/src/utils/tools/time.ts +38 -38
  197. package/src/utils/tools/uid.ts +19 -19
  198. package/templates/html/loginFail.html +90 -90
  199. package/templates/html/loginSuccess.html +86 -86
  200. package/templates/server/node/_gitignore +54 -54
  201. package/templates/server/node/cloudbaserc.json +10 -10
  202. package/templates/server/node/index.js +5 -5
  203. package/templates/server/node/package.json +9 -9
  204. package/tsconfig.json +19 -19
  205. package/tsconfig.test.json +13 -13
  206. 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
+ }