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