@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,124 +1,124 @@
1
- import { run } from '@cloudbase/framework-core'
2
- import { Command, ICommand } from '../common'
3
- import { ICommandContext } from '../../types'
4
- import { InjectParams, CmdContext, ArgsParams, Log, Logger, ArgsOptions } from '../../decorators'
5
-
6
- import * as Hosting from '../../hosting'
7
- import * as Function from '../../function'
8
- import { authSupevisor } from '../../utils'
9
-
10
- async function callFramework(ctx, command, module, params?) {
11
- const { envId, config } = ctx
12
- const { bumpVersion, versionRemark } = ctx.options
13
-
14
- const loginState = await authSupevisor.getLoginState()
15
- const { token, secretId, secretKey } = loginState
16
-
17
- await run(
18
- {
19
- projectPath: process.cwd(),
20
- cloudbaseConfig: {
21
- secretId,
22
- secretKey,
23
- token,
24
- envId
25
- },
26
- config,
27
- logLevel: process.argv.includes('--verbose') ? 'debug' : 'info',
28
- resourceProviders: {
29
- hosting: Hosting,
30
- function: Function
31
- },
32
- bumpVersion: Boolean(bumpVersion),
33
- versionRemark
34
- },
35
- command,
36
- module,
37
- params
38
- )
39
- }
40
-
41
- @ICommand()
42
- export class FrameworkDeploy extends Command {
43
- get options() {
44
- return {
45
- cmd: 'framework',
46
- childCmd: 'deploy [module]',
47
- deprecateCmd: 'framework:deploy [module]',
48
- options: [
49
- {
50
- flags: '-e, --envId <envId>',
51
- desc: '环境 Id'
52
- },
53
- { flags: '--verbose', desc: '是否打印详细日志' }
54
- ],
55
- desc: '云开发 Serverless 应用框架:部署全栈应用'
56
- }
57
- }
58
-
59
- @InjectParams()
60
- async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
61
- const [module] = params || []
62
- await callFramework(ctx, 'deploy', module)
63
- }
64
- }
65
-
66
- @ICommand()
67
- export class FrameworkCompile extends Command {
68
- get options() {
69
- return {
70
- cmd: 'framework',
71
- childCmd: 'compile [module]',
72
- deprecateCmd: 'framework:compile [module]',
73
- options: [
74
- {
75
- flags: '-e, --envId <envId>',
76
- desc: '环境 Id'
77
- },
78
- { flags: '--verbose', desc: '是否打印详细日志' },
79
- { flags: '--bumpVersion', desc: '是否生成新版本' },
80
- {
81
- flags: '--versionRemark <versionRemark>',
82
- desc: '新版本描述信息'
83
- }
84
- ],
85
- desc: '云开发 Serverless 应用框架:编译应用描述文件'
86
- }
87
- }
88
-
89
- @InjectParams()
90
- async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
91
- const [module] = params || []
92
- await callFramework(ctx, 'compile', module)
93
- }
94
- }
95
-
96
- @ICommand()
97
- export class FrameworkRun extends Command {
98
- get options() {
99
- return {
100
- cmd: 'framework',
101
- childCmd: 'run [command]',
102
- deprecateCmd: 'framework:run [command]',
103
- options: [
104
- {
105
- flags: '-e, --envId <envId>',
106
- desc: '环境 Id'
107
- },
108
- {
109
- flags: '--plugin <plugin>',
110
- desc: '执行命令的插件'
111
- }
112
- ],
113
- desc: '云开发 Serverless 应用框架:执行自定义命令'
114
- }
115
- }
116
-
117
- @InjectParams()
118
- async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params, @ArgsOptions() options) {
119
- const [command] = params || []
120
- const { plugin } = options
121
-
122
- await callFramework(ctx, 'run', plugin, { runCommandKey: command })
123
- }
124
- }
1
+ import { run } from '@cloudbase/framework-core'
2
+ import { Command, ICommand } from '../common'
3
+ import { ICommandContext } from '../../types'
4
+ import { InjectParams, CmdContext, ArgsParams, Log, Logger, ArgsOptions } from '../../decorators'
5
+
6
+ import * as Hosting from '../../hosting'
7
+ import * as Function from '../../function'
8
+ import { authSupevisor } from '../../utils'
9
+
10
+ async function callFramework(ctx, command, module, params?) {
11
+ const { envId, config } = ctx
12
+ const { bumpVersion, versionRemark } = ctx.options
13
+
14
+ const loginState = await authSupevisor.getLoginState()
15
+ const { token, secretId, secretKey } = loginState
16
+
17
+ await run(
18
+ {
19
+ projectPath: process.cwd(),
20
+ cloudbaseConfig: {
21
+ secretId,
22
+ secretKey,
23
+ token,
24
+ envId
25
+ },
26
+ config,
27
+ logLevel: process.argv.includes('--verbose') ? 'debug' : 'info',
28
+ resourceProviders: {
29
+ hosting: Hosting,
30
+ function: Function
31
+ },
32
+ bumpVersion: Boolean(bumpVersion),
33
+ versionRemark
34
+ },
35
+ command,
36
+ module,
37
+ params
38
+ )
39
+ }
40
+
41
+ @ICommand()
42
+ export class FrameworkDeploy extends Command {
43
+ get options() {
44
+ return {
45
+ cmd: 'framework',
46
+ childCmd: 'deploy [module]',
47
+ deprecateCmd: 'framework:deploy [module]',
48
+ options: [
49
+ {
50
+ flags: '-e, --envId <envId>',
51
+ desc: '环境 Id'
52
+ },
53
+ { flags: '--verbose', desc: '是否打印详细日志' }
54
+ ],
55
+ desc: '云开发 Serverless 应用框架:部署全栈应用'
56
+ }
57
+ }
58
+
59
+ @InjectParams()
60
+ async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
61
+ const [module] = params || []
62
+ await callFramework(ctx, 'deploy', module)
63
+ }
64
+ }
65
+
66
+ @ICommand()
67
+ export class FrameworkCompile extends Command {
68
+ get options() {
69
+ return {
70
+ cmd: 'framework',
71
+ childCmd: 'compile [module]',
72
+ deprecateCmd: 'framework:compile [module]',
73
+ options: [
74
+ {
75
+ flags: '-e, --envId <envId>',
76
+ desc: '环境 Id'
77
+ },
78
+ { flags: '--verbose', desc: '是否打印详细日志' },
79
+ { flags: '--bumpVersion', desc: '是否生成新版本' },
80
+ {
81
+ flags: '--versionRemark <versionRemark>',
82
+ desc: '新版本描述信息'
83
+ }
84
+ ],
85
+ desc: '云开发 Serverless 应用框架:编译应用描述文件'
86
+ }
87
+ }
88
+
89
+ @InjectParams()
90
+ async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
91
+ const [module] = params || []
92
+ await callFramework(ctx, 'compile', module)
93
+ }
94
+ }
95
+
96
+ @ICommand()
97
+ export class FrameworkRun extends Command {
98
+ get options() {
99
+ return {
100
+ cmd: 'framework',
101
+ childCmd: 'run [command]',
102
+ deprecateCmd: 'framework:run [command]',
103
+ options: [
104
+ {
105
+ flags: '-e, --envId <envId>',
106
+ desc: '环境 Id'
107
+ },
108
+ {
109
+ flags: '--plugin <plugin>',
110
+ desc: '执行命令的插件'
111
+ }
112
+ ],
113
+ desc: '云开发 Serverless 应用框架:执行自定义命令'
114
+ }
115
+ }
116
+
117
+ @InjectParams()
118
+ async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params, @ArgsOptions() options) {
119
+ const [command] = params || []
120
+ const { plugin } = options
121
+
122
+ await callFramework(ctx, 'run', plugin, { runCommandKey: command })
123
+ }
124
+ }
@@ -1,76 +1,76 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { loadingFactory, printHorizontalTable } from '../../../utils'
4
- import { getFunctionAliasConfig } from '../../../function'
5
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
6
-
7
-
8
- function parseRoutingConfigValue(expression: string) {
9
- const commaIndex = expression.indexOf(',')
10
- const valueExpression = expression.substring(commaIndex + 1, expression.length - 1)
11
- return valueExpression
12
- }
13
-
14
- @ICommand()
15
- export class getFunctionRoutingConfig extends Command {
16
- get options() {
17
- return {
18
- cmd: 'fn',
19
- childCmd: 'get-route <name>',
20
- options: [
21
- {
22
- flags: '-e, --envId <envId>',
23
- desc: '环境 Id'
24
- }
25
- ],
26
- desc: '查看函数版本流量配置'
27
- }
28
- }
29
-
30
- @InjectParams()
31
- async execute(@CmdContext() ctx, @ArgsParams() params) {
32
- const name = params?.[0]
33
-
34
- const {
35
- envId
36
- } = ctx
37
-
38
- const loading = loadingFactory()
39
- loading.start(`查询函数 [${name}] 版本流量配置中...`)
40
-
41
- const aliasRes = await getFunctionAliasConfig({
42
- envId,
43
- functionName: name,
44
- name: '$DEFAULT'
45
- })
46
-
47
- const routingConfig = aliasRes?.RoutingConfig?.AddtionVersionMatchs
48
- let finalConfig = []
49
- if (routingConfig.length === 1) {
50
- finalConfig.push({
51
- version: routingConfig[0].Version,
52
- value: parseRoutingConfigValue(routingConfig[0].Expression)
53
- })
54
- } else if (routingConfig.length === 2) {
55
- finalConfig.push({
56
- version: routingConfig[0].Version,
57
- value: parseRoutingConfigValue(routingConfig[0].Expression)
58
- }, {
59
- version: routingConfig[1].Version,
60
- value: 100 - Number(parseRoutingConfigValue(routingConfig[0].Expression))
61
- })
62
- }
63
-
64
- loading.stop()
65
-
66
- const head: string[] = ['版本', '流量比例']
67
-
68
- const tableData = finalConfig.map((item) => [
69
- item.version,
70
- item.value
71
- ])
72
-
73
- printHorizontalTable(head, tableData)
74
-
75
- }
76
- }
1
+
2
+ import { Command, ICommand } from '../../common'
3
+ import { loadingFactory, printHorizontalTable } from '../../../utils'
4
+ import { getFunctionAliasConfig } from '../../../function'
5
+ import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
6
+
7
+
8
+ function parseRoutingConfigValue(expression: string) {
9
+ const commaIndex = expression.indexOf(',')
10
+ const valueExpression = expression.substring(commaIndex + 1, expression.length - 1)
11
+ return valueExpression
12
+ }
13
+
14
+ @ICommand()
15
+ export class getFunctionRoutingConfig extends Command {
16
+ get options() {
17
+ return {
18
+ cmd: 'fn',
19
+ childCmd: 'get-route <name>',
20
+ options: [
21
+ {
22
+ flags: '-e, --envId <envId>',
23
+ desc: '环境 Id'
24
+ }
25
+ ],
26
+ desc: '查看函数版本流量配置'
27
+ }
28
+ }
29
+
30
+ @InjectParams()
31
+ async execute(@CmdContext() ctx, @ArgsParams() params) {
32
+ const name = params?.[0]
33
+
34
+ const {
35
+ envId
36
+ } = ctx
37
+
38
+ const loading = loadingFactory()
39
+ loading.start(`查询函数 [${name}] 版本流量配置中...`)
40
+
41
+ const aliasRes = await getFunctionAliasConfig({
42
+ envId,
43
+ functionName: name,
44
+ name: '$DEFAULT'
45
+ })
46
+
47
+ const routingConfig = aliasRes?.RoutingConfig?.AddtionVersionMatchs
48
+ let finalConfig = []
49
+ if (routingConfig.length === 1) {
50
+ finalConfig.push({
51
+ version: routingConfig[0].Version,
52
+ value: parseRoutingConfigValue(routingConfig[0].Expression)
53
+ })
54
+ } else if (routingConfig.length === 2) {
55
+ finalConfig.push({
56
+ version: routingConfig[0].Version,
57
+ value: parseRoutingConfigValue(routingConfig[0].Expression)
58
+ }, {
59
+ version: routingConfig[1].Version,
60
+ value: 100 - Number(parseRoutingConfigValue(routingConfig[0].Expression))
61
+ })
62
+ }
63
+
64
+ loading.stop()
65
+
66
+ const head: string[] = ['版本', '流量比例']
67
+
68
+ const tableData = finalConfig.map((item) => [
69
+ item.version,
70
+ item.value
71
+ ])
72
+
73
+ printHorizontalTable(head, tableData)
74
+
75
+ }
76
+ }
@@ -1,2 +1,2 @@
1
- export * from './setRoute'
2
- export * from './getRoute'
1
+ export * from './setRoute'
2
+ export * from './getRoute'
@@ -1,82 +1,82 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { loadingFactory } from '../../../utils'
5
- import { setFunctionAliasConfig } from '../../../function'
6
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
-
8
-
9
- @ICommand()
10
- export class setFunctionRoutingConfig extends Command {
11
- get options() {
12
- return {
13
- cmd: 'fn',
14
- childCmd: 'config-route <name> <version1> <traffic1> [version2] [traffic2]',
15
- options: [
16
- {
17
- flags: '-e, --envId <envId>',
18
- desc: '环境 Id'
19
- }
20
- ],
21
- desc: '设置函数版本流量配置'
22
- }
23
- }
24
-
25
- @InjectParams()
26
- async execute(@CmdContext() ctx, @ArgsParams() params) {
27
- const name = params?.[0]
28
- const version1 = params?.[1]
29
- const traffic1 = Number(params?.[2])
30
-
31
- const version2 = params?.[3]
32
- const traffic2 = Number(params?.[4])
33
-
34
- // 校验
35
-
36
- // 1. version2 及 traffic2 必须同时存在
37
- if ((version2 === undefined && traffic2 !== undefined) || (version2 !== undefined && traffic2 === undefined)) {
38
- throw new CloudBaseError('version2 和 traffic2 必须同时设置')
39
- }
40
-
41
- if (traffic1 !== undefined && traffic2 !== undefined) {
42
- if (traffic1 + traffic2 !== 100) {
43
- throw new CloudBaseError('traffic1 和 traffic2 同时设置时,需保证总和 100')
44
- }
45
- }
46
-
47
- const {
48
- envId
49
- } = ctx
50
-
51
- const loading = loadingFactory()
52
- loading.start(`设置函数 [${name}] 版本流量配置中...`)
53
-
54
- let routingConfigParams = {
55
- AddtionVersionMatchs: [{
56
- Expression: `[0,${traffic1})`,
57
- Key: "invoke.headers.X-Tcb-Route-Key",
58
- Method: "range",
59
- Version: version1
60
- }]
61
- }
62
-
63
- if (version2 !== undefined) {
64
- routingConfigParams.AddtionVersionMatchs.push({
65
- Expression: `[${traffic1},${100})`,
66
- Key: "invoke.headers.X-Tcb-Route-Key",
67
- Method: "range",
68
- Version: version2
69
- })
70
- }
71
-
72
- await setFunctionAliasConfig({
73
- envId,
74
- functionName: name,
75
- name: '$DEFAULT',
76
- functionVersion: '$LATEST',
77
- routingConfig: routingConfigParams
78
- })
79
-
80
- loading.succeed(`设置函数 [${name}] 版本流量配置成功!`)
81
- }
82
- }
1
+
2
+ import { Command, ICommand } from '../../common'
3
+ import { CloudBaseError } from '../../../error'
4
+ import { loadingFactory } from '../../../utils'
5
+ import { setFunctionAliasConfig } from '../../../function'
6
+ import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
+
8
+
9
+ @ICommand()
10
+ export class setFunctionRoutingConfig extends Command {
11
+ get options() {
12
+ return {
13
+ cmd: 'fn',
14
+ childCmd: 'config-route <name> <version1> <traffic1> [version2] [traffic2]',
15
+ options: [
16
+ {
17
+ flags: '-e, --envId <envId>',
18
+ desc: '环境 Id'
19
+ }
20
+ ],
21
+ desc: '设置函数版本流量配置'
22
+ }
23
+ }
24
+
25
+ @InjectParams()
26
+ async execute(@CmdContext() ctx, @ArgsParams() params) {
27
+ const name = params?.[0]
28
+ const version1 = params?.[1]
29
+ const traffic1 = Number(params?.[2])
30
+
31
+ const version2 = params?.[3]
32
+ const traffic2 = Number(params?.[4])
33
+
34
+ // 校验
35
+
36
+ // 1. version2 及 traffic2 必须同时存在
37
+ if ((version2 === undefined && traffic2 !== undefined) || (version2 !== undefined && traffic2 === undefined)) {
38
+ throw new CloudBaseError('version2 和 traffic2 必须同时设置')
39
+ }
40
+
41
+ if (traffic1 !== undefined && traffic2 !== undefined) {
42
+ if (traffic1 + traffic2 !== 100) {
43
+ throw new CloudBaseError('traffic1 和 traffic2 同时设置时,需保证总和 100')
44
+ }
45
+ }
46
+
47
+ const {
48
+ envId
49
+ } = ctx
50
+
51
+ const loading = loadingFactory()
52
+ loading.start(`设置函数 [${name}] 版本流量配置中...`)
53
+
54
+ let routingConfigParams = {
55
+ AddtionVersionMatchs: [{
56
+ Expression: `[0,${traffic1})`,
57
+ Key: "invoke.headers.X-Tcb-Route-Key",
58
+ Method: "range",
59
+ Version: version1
60
+ }]
61
+ }
62
+
63
+ if (version2 !== undefined) {
64
+ routingConfigParams.AddtionVersionMatchs.push({
65
+ Expression: `[${traffic1},${100})`,
66
+ Key: "invoke.headers.X-Tcb-Route-Key",
67
+ Method: "range",
68
+ Version: version2
69
+ })
70
+ }
71
+
72
+ await setFunctionAliasConfig({
73
+ envId,
74
+ functionName: name,
75
+ name: '$DEFAULT',
76
+ functionVersion: '$LATEST',
77
+ routingConfig: routingConfigParams
78
+ })
79
+
80
+ loading.succeed(`设置函数 [${name}] 版本流量配置成功!`)
81
+ }
82
+ }