@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,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
+ }