@cloudbase/cli 2.0.12 → 2.1.0

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 (277) hide show
  1. package/.history/.gitignore_20220624162613 +84 -0
  2. package/.history/.gitignore_20220627114054 +86 -0
  3. package/.history/package_20220711204706.json +88 -0
  4. package/.history/package_20220711204818.json +88 -0
  5. package/.history/package_20220712151717.json +88 -0
  6. package/.history/package_20220712212537.json +88 -0
  7. package/.history/package_20220722205058.json +88 -0
  8. package/.history/package_20220726110155.json +88 -0
  9. package/.history/package_20220726110201.json +88 -0
  10. package/.history/package_20220728110905.json +88 -0
  11. package/.history/package_20220728110936.json +88 -0
  12. package/.history/package_20220728111531.json +89 -0
  13. package/.history/package_20220728111810.json +89 -0
  14. package/.history/src/commands/lowcode/app_20220728111717.ts +52 -0
  15. package/{src/commands/lowcode/app.ts → .history/src/commands/lowcode/app_20220728112031.ts} +2 -2
  16. package/{src/index.ts → .history/src/index_20220624162613.ts} +0 -0
  17. package/.history/src/index_20220627113609.ts +15 -0
  18. package/.history/src/index_20220627114102.ts +13 -0
  19. package/.vscode/launch.json +10 -0
  20. package/bin/cloudbase.js +0 -0
  21. package/bin/tcb.js +5 -5
  22. package/lib/commands/account/login.js +3 -6
  23. package/lib/commands/env/index.js +0 -1
  24. package/lib/commands/lowcode/app.js +1 -1
  25. package/lib/commands/run/index.js +0 -1
  26. package/lib/commands/run/service/deploy.js +6 -1
  27. package/lib/commands/run/service/index.js +0 -1
  28. package/lib/commands/run/service/update.js +4 -0
  29. package/lib/constant.js +15 -1
  30. package/lib/env/index.js +1 -11
  31. package/lib/run/index.js +0 -1
  32. package/lib/run/service/common.js +20 -7
  33. package/lib/run/service/config.js +2 -3
  34. package/lib/run/service/deployPackage.js +2 -9
  35. package/lib/run/service/index.js +0 -1
  36. package/lib/run/service/update.js +1 -1
  37. package/lib/utils/debug-logger.js +30 -0
  38. package/lib/utils/net/cloud-api-request.js +7 -1
  39. package/lib/utils/net/http-request.js +16 -5
  40. package/package.json +2 -2
  41. package/types/commands/env/index.d.ts +0 -1
  42. package/types/commands/run/index.d.ts +0 -1
  43. package/types/commands/run/service/index.d.ts +0 -1
  44. package/types/env/index.d.ts +0 -6
  45. package/types/run/index.d.ts +0 -1
  46. package/types/run/service/common.d.ts +8 -1
  47. package/types/run/service/index.d.ts +0 -1
  48. package/types/types.d.ts +4 -0
  49. package/types/utils/debug-logger.d.ts +1 -0
  50. package/types/utils/net/http-request.d.ts +6 -2
  51. package/lib/commands/env/create.js +0 -115
  52. package/lib/commands/run/create.js +0 -162
  53. package/lib/commands/run/service/create.js +0 -144
  54. package/lib/run/create.js +0 -19
  55. package/lib/run/service/create.js +0 -67
  56. package/src/auth/index.ts +0 -2
  57. package/src/auth/login.ts +0 -91
  58. package/src/auth/logout.ts +0 -7
  59. package/src/commands/account/index.ts +0 -2
  60. package/src/commands/account/login.ts +0 -192
  61. package/src/commands/account/logout.ts +0 -24
  62. package/src/commands/common.ts +0 -246
  63. package/src/commands/env/base.ts +0 -90
  64. package/src/commands/env/create.ts +0 -92
  65. package/src/commands/env/domain.ts +0 -186
  66. package/src/commands/env/index.ts +0 -4
  67. package/src/commands/env/login.ts +0 -235
  68. package/src/commands/framework/index.ts +0 -124
  69. package/src/commands/functions/alias/getRoute.ts +0 -76
  70. package/src/commands/functions/alias/index.ts +0 -2
  71. package/src/commands/functions/alias/setRoute.ts +0 -82
  72. package/src/commands/functions/code-download.ts +0 -100
  73. package/src/commands/functions/code-update.ts +0 -62
  74. package/src/commands/functions/concurrency/delete.ts +0 -45
  75. package/src/commands/functions/concurrency/index.ts +0 -3
  76. package/src/commands/functions/concurrency/list.ts +0 -58
  77. package/src/commands/functions/concurrency/set.ts +0 -47
  78. package/src/commands/functions/config-update.ts +0 -76
  79. package/src/commands/functions/copy.ts +0 -62
  80. package/src/commands/functions/delete.ts +0 -79
  81. package/src/commands/functions/deploy.ts +0 -293
  82. package/src/commands/functions/detail.ts +0 -138
  83. package/src/commands/functions/index.ts +0 -16
  84. package/src/commands/functions/invoke.ts +0 -121
  85. package/src/commands/functions/layer/bind.ts +0 -182
  86. package/src/commands/functions/layer/common.ts +0 -8
  87. package/src/commands/functions/layer/create.ts +0 -49
  88. package/src/commands/functions/layer/delete.ts +0 -73
  89. package/src/commands/functions/layer/download.ts +0 -92
  90. package/src/commands/functions/layer/index.ts +0 -7
  91. package/src/commands/functions/layer/list.ts +0 -94
  92. package/src/commands/functions/layer/sort.ts +0 -76
  93. package/src/commands/functions/list.ts +0 -68
  94. package/src/commands/functions/log.ts +0 -148
  95. package/src/commands/functions/run.ts +0 -249
  96. package/src/commands/functions/trigger-create.ts +0 -79
  97. package/src/commands/functions/trigger-delete.ts +0 -105
  98. package/src/commands/functions/version/index.ts +0 -2
  99. package/src/commands/functions/version/list.ts +0 -73
  100. package/src/commands/functions/version/publish.ts +0 -43
  101. package/src/commands/gateway/create.ts +0 -109
  102. package/src/commands/gateway/delete.ts +0 -81
  103. package/src/commands/gateway/domain.ts +0 -159
  104. package/src/commands/gateway/index.ts +0 -5
  105. package/src/commands/gateway/list.ts +0 -76
  106. package/src/commands/gateway/switch.ts +0 -107
  107. package/src/commands/helpers/index.ts +0 -3
  108. package/src/commands/helpers/init.ts +0 -431
  109. package/src/commands/helpers/new.ts +0 -117
  110. package/src/commands/helpers/open.ts +0 -67
  111. package/src/commands/hosting/hosting.ts +0 -360
  112. package/src/commands/hosting/index.ts +0 -1
  113. package/src/commands/index.ts +0 -13
  114. package/src/commands/lowcode/comps.ts +0 -325
  115. package/src/commands/lowcode/index.ts +0 -2
  116. package/src/commands/lowcode/utils.ts +0 -25
  117. package/src/commands/run/create.ts +0 -153
  118. package/src/commands/run/delete.ts +0 -77
  119. package/src/commands/run/image/common.ts +0 -8
  120. package/src/commands/run/image/delete.ts +0 -68
  121. package/src/commands/run/image/download.ts +0 -68
  122. package/src/commands/run/image/index.ts +0 -5
  123. package/src/commands/run/image/list.ts +0 -84
  124. package/src/commands/run/image/upload.ts +0 -76
  125. package/src/commands/run/index.ts +0 -7
  126. package/src/commands/run/list.ts +0 -83
  127. package/src/commands/run/service/config.ts +0 -81
  128. package/src/commands/run/service/create.ts +0 -122
  129. package/src/commands/run/service/deploy.ts +0 -125
  130. package/src/commands/run/service/index.ts +0 -5
  131. package/src/commands/run/service/list.ts +0 -94
  132. package/src/commands/run/service/update.ts +0 -108
  133. package/src/commands/run/standalonegateway/common.ts +0 -8
  134. package/src/commands/run/standalonegateway/create.ts +0 -85
  135. package/src/commands/run/standalonegateway/destroy.ts +0 -59
  136. package/src/commands/run/standalonegateway/index.ts +0 -5
  137. package/src/commands/run/standalonegateway/list.ts +0 -53
  138. package/src/commands/run/standalonegateway/package.ts +0 -62
  139. package/src/commands/run/standalonegateway/turn.ts +0 -63
  140. package/src/commands/run/version/common.ts +0 -8
  141. package/src/commands/run/version/create.ts +0 -369
  142. package/src/commands/run/version/delete.ts +0 -64
  143. package/src/commands/run/version/index.ts +0 -5
  144. package/src/commands/run/version/list.ts +0 -91
  145. package/src/commands/run/version/modify.ts +0 -137
  146. package/src/commands/run/version/update.ts +0 -398
  147. package/src/commands/smart.ts +0 -132
  148. package/src/commands/storage/index.ts +0 -1
  149. package/src/commands/storage/storage.ts +0 -464
  150. package/src/commands/third/index.ts +0 -1
  151. package/src/commands/third/thirdAttach.ts +0 -49
  152. package/src/completion/index.ts +0 -13
  153. package/src/constant.ts +0 -154
  154. package/src/decorators/captureError.ts +0 -25
  155. package/src/decorators/constants.ts +0 -12
  156. package/src/decorators/deprecate.ts +0 -25
  157. package/src/decorators/guard.ts +0 -42
  158. package/src/decorators/index.ts +0 -7
  159. package/src/decorators/injectParams.ts +0 -54
  160. package/src/decorators/params/common.ts +0 -28
  161. package/src/decorators/params/index.ts +0 -35
  162. package/src/env/domain.ts +0 -33
  163. package/src/env/index.ts +0 -63
  164. package/src/env/login.ts +0 -80
  165. package/src/error.ts +0 -36
  166. package/src/function/alias.ts +0 -43
  167. package/src/function/base.ts +0 -253
  168. package/src/function/code.ts +0 -55
  169. package/src/function/concurrency.ts +0 -57
  170. package/src/function/create.ts +0 -78
  171. package/src/function/delete.ts +0 -42
  172. package/src/function/index.ts +0 -11
  173. package/src/function/layer/attach.ts +0 -68
  174. package/src/function/layer/create.ts +0 -63
  175. package/src/function/layer/delete.ts +0 -21
  176. package/src/function/layer/download.ts +0 -54
  177. package/src/function/layer/index.ts +0 -7
  178. package/src/function/layer/list.ts +0 -32
  179. package/src/function/layer/sort.ts +0 -24
  180. package/src/function/trigger.ts +0 -97
  181. package/src/function/update.ts +0 -35
  182. package/src/function/version.ts +0 -39
  183. package/src/function/vpc.ts +0 -22
  184. package/src/gateway/index.ts +0 -137
  185. package/src/help.ts +0 -50
  186. package/src/hosting.ts +0 -212
  187. package/src/logger.ts +0 -17
  188. package/src/run/create.ts +0 -23
  189. package/src/run/delete.ts +0 -15
  190. package/src/run/image/build.ts +0 -36
  191. package/src/run/image/delete.ts +0 -14
  192. package/src/run/image/index.ts +0 -4
  193. package/src/run/image/info.ts +0 -27
  194. package/src/run/image/list.ts +0 -23
  195. package/src/run/index.ts +0 -8
  196. package/src/run/list.ts +0 -30
  197. package/src/run/repo.ts +0 -25
  198. package/src/run/service/common.ts +0 -311
  199. package/src/run/service/config.ts +0 -77
  200. package/src/run/service/create.ts +0 -52
  201. package/src/run/service/deployPackage.ts +0 -65
  202. package/src/run/service/index.ts +0 -7
  203. package/src/run/service/list.ts +0 -29
  204. package/src/run/service/showLogs.ts +0 -98
  205. package/src/run/service/update.ts +0 -82
  206. package/src/run/standalonegateway/create.ts +0 -24
  207. package/src/run/standalonegateway/destroy.ts +0 -19
  208. package/src/run/standalonegateway/index.ts +0 -5
  209. package/src/run/standalonegateway/list.ts +0 -74
  210. package/src/run/standalonegateway/package/index.ts +0 -1
  211. package/src/run/standalonegateway/package/list.ts +0 -24
  212. package/src/run/standalonegateway/turn/index.ts +0 -2
  213. package/src/run/standalonegateway/turn/off.ts +0 -19
  214. package/src/run/standalonegateway/turn/on.ts +0 -19
  215. package/src/run/version/create.ts +0 -68
  216. package/src/run/version/delete.ts +0 -16
  217. package/src/run/version/index.ts +0 -6
  218. package/src/run/version/list.ts +0 -17
  219. package/src/run/version/modify.ts +0 -17
  220. package/src/run/version/repo.ts +0 -28
  221. package/src/run/version/update.ts +0 -59
  222. package/src/storage.ts +0 -114
  223. package/src/third/index.ts +0 -13
  224. package/src/types.ts +0 -672
  225. package/src/utils/auth.ts +0 -15
  226. package/src/utils/checkTcbrEnv.ts +0 -69
  227. package/src/utils/cli-table.ts +0 -23
  228. package/src/utils/commonParamsCheck.ts +0 -65
  229. package/src/utils/config.ts +0 -39
  230. package/src/utils/env.ts +0 -244
  231. package/src/utils/fs/del.ts +0 -5
  232. package/src/utils/fs/index.ts +0 -71
  233. package/src/utils/function-packer.ts +0 -97
  234. package/src/utils/index.ts +0 -25
  235. package/src/utils/log.ts +0 -82
  236. package/src/utils/net/cloud-api-request.ts +0 -62
  237. package/src/utils/net/credential.ts +0 -53
  238. package/src/utils/net/http-request.ts +0 -84
  239. package/src/utils/net/index.ts +0 -5
  240. package/src/utils/net/manager-service.ts +0 -36
  241. package/src/utils/net/proxy.ts +0 -6
  242. package/src/utils/notice.ts +0 -28
  243. package/src/utils/output/highlight.ts +0 -5
  244. package/src/utils/output/index.ts +0 -3
  245. package/src/utils/output/link.ts +0 -10
  246. package/src/utils/output/loading.ts +0 -82
  247. package/src/utils/parallel.ts +0 -82
  248. package/src/utils/platform/index.ts +0 -3
  249. package/src/utils/platform/mac.ts +0 -21
  250. package/src/utils/platform/os.ts +0 -64
  251. package/src/utils/platform/port.ts +0 -10
  252. package/src/utils/progress-bar.ts +0 -38
  253. package/src/utils/prompt/index.ts +0 -1
  254. package/src/utils/prompt/select.ts +0 -60
  255. package/src/utils/reporter/agree.ts +0 -20
  256. package/src/utils/reporter/download.ts +0 -26
  257. package/src/utils/reporter/index.ts +0 -3
  258. package/src/utils/reporter/usage.ts +0 -20
  259. package/src/utils/store/auth.ts +0 -49
  260. package/src/utils/store/common.ts +0 -8
  261. package/src/utils/store/db.ts +0 -68
  262. package/src/utils/store/index.ts +0 -5
  263. package/src/utils/store/usage.ts +0 -12
  264. package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
  265. package/src/utils/tcbrApi/index.ts +0 -1
  266. package/src/utils/template.ts +0 -170
  267. package/src/utils/tools/encoding.ts +0 -8
  268. package/src/utils/tools/index.ts +0 -4
  269. package/src/utils/tools/object.ts +0 -33
  270. package/src/utils/tools/time.ts +0 -38
  271. package/src/utils/tools/uid.ts +0 -19
  272. package/src/utils/validator.ts +0 -65
  273. package/types/commands/env/create.d.ts +0 -12
  274. package/types/commands/run/create.d.ts +0 -13
  275. package/types/commands/run/service/create.d.ts +0 -13
  276. package/types/run/create.d.ts +0 -2
  277. package/types/run/service/create.d.ts +0 -7
@@ -1,253 +0,0 @@
1
- import CloudBase from '@cloudbase/manager-node'
2
- import { CloudApiService, checkAndGetCredential, getProxy } from '../utils'
3
- import { successLog } from '../logger'
4
- import {
5
- IListFunctionOptions,
6
- IFunctionLogOptions,
7
- IUpdateFunctionConfigOptions,
8
- IFunctionBatchOptions,
9
- InvokeFunctionOptions
10
- } from '../types'
11
- import { CloudBaseError } from '../error'
12
- import { getVpcs, getSubnets } from './vpc'
13
- import { getRegion } from '@cloudbase/toolbox'
14
-
15
- export interface IBaseOptions {
16
- envId: string
17
- functionName: string
18
- }
19
-
20
- export interface ICopyFunctionOptions {
21
- envId: string
22
- functionName: string
23
- newFunctionName: string
24
- targetEnvId: string
25
- force?: boolean
26
- copyConfig?: boolean
27
- codeSecret?: string
28
- }
29
-
30
- const scfService = CloudApiService.getInstance('scf')
31
- export interface IDetailOptions extends IBaseOptions {
32
- codeSecret?: string
33
- }
34
-
35
- export async function getFunctionService(envId: string) {
36
- const region = await getRegion()
37
- const { secretId, secretKey, token } = await checkAndGetCredential(true)
38
-
39
- const app = new CloudBase({
40
- region,
41
- token,
42
- envId,
43
- secretId,
44
- secretKey,
45
- proxy: getProxy()
46
- })
47
- return app.functions
48
- }
49
-
50
- // 列出函数
51
- export async function listFunction(
52
- options: IListFunctionOptions
53
- ): Promise<Record<string, string>[]> {
54
- const { limit = 20, offset = 0, envId } = options
55
- const res: any = await scfService.request('ListFunctions', {
56
- Namespace: envId,
57
- Limit: limit,
58
- Offset: offset
59
- })
60
- const { Functions = [] } = res
61
- const data: Record<string, string>[] = []
62
- Functions.forEach(func => {
63
- const { FunctionId, FunctionName, Runtime, AddTime, ModTime, Status } = func
64
- data.push({
65
- FunctionId,
66
- FunctionName,
67
- Runtime,
68
- AddTime,
69
- ModTime,
70
- Status
71
- })
72
- })
73
-
74
- return data
75
- }
76
-
77
- // 获取云函数详细信息
78
- export async function getFunctionDetail(options: IDetailOptions): Promise<Record<string, any>> {
79
- const { functionName, envId, codeSecret } = options
80
-
81
- const res = await scfService.request('GetFunction', {
82
- FunctionName: functionName,
83
- Namespace: envId,
84
- ShowCode: 'TRUE',
85
- CodeSecret: codeSecret
86
- })
87
-
88
- const data: Record<string, any> = res
89
-
90
- // 获取 VPC 信息
91
- const { VpcId = '', SubnetId = '' } = data.VpcConfig || {}
92
- if (VpcId && SubnetId) {
93
- try {
94
- const vpcs = await getVpcs()
95
- const subnets = await getSubnets(VpcId)
96
- const vpc = vpcs.find(item => item.VpcId === VpcId)
97
- const subnet = subnets.find(item => item.SubnetId === SubnetId)
98
- data.VpcConfig = {
99
- vpc,
100
- subnet
101
- }
102
- } catch (e) {
103
- // 无法获取到 VPC 配置,只展示 id 信息
104
- data.VpcConfig = {
105
- vpc: VpcId,
106
- subnet: SubnetId
107
- }
108
- }
109
- }
110
- return data
111
- }
112
-
113
- // 批量获取函数信息
114
- export async function batchGetFunctionsDetail({
115
- names,
116
- envId,
117
- codeSecret
118
- }): Promise<Record<string, string>[]> {
119
- const data: Record<string, string>[] = []
120
- const promises = names.map(name =>
121
- (async () => {
122
- try {
123
- const info = await getFunctionDetail({
124
- envId,
125
- codeSecret,
126
- functionName: name
127
- })
128
- data.push(info)
129
- } catch (e) {
130
- throw new CloudBaseError(`${name} 获取信息失败:${e.message}`)
131
- }
132
- })()
133
- )
134
-
135
- await Promise.all(promises)
136
-
137
- return data
138
- }
139
-
140
- // 获取函数日志
141
- export async function getFunctionLog(
142
- options: IFunctionLogOptions
143
- ): Promise<Record<string, string>[]> {
144
- const { envId } = options
145
-
146
- const params = {
147
- Namespace: envId
148
- }
149
-
150
- Object.keys(options).forEach(key => {
151
- if (key === 'envId') return
152
- const keyFirstCharUpperCase = key.charAt(0).toUpperCase() + key.slice(1)
153
- params[keyFirstCharUpperCase] = options[key]
154
- })
155
-
156
- const { Data = [] }: any = await scfService.request('GetFunctionLogs', params)
157
- return Data
158
- }
159
-
160
- // 更新函数配置
161
- export async function updateFunctionConfig(options: IUpdateFunctionConfigOptions): Promise<void> {
162
- const { functionName, config, envId } = options
163
-
164
- const functionService = await getFunctionService(envId)
165
- await functionService.updateFunctionConfig({
166
- name: functionName,
167
- ...config
168
- })
169
- }
170
-
171
- // 批量更新函数配置
172
- export async function batchUpdateFunctionConfig(options: IFunctionBatchOptions): Promise<void> {
173
- const { functions, envId, log } = options
174
- const promises = functions.map(func =>
175
- (async () => {
176
- try {
177
- await updateFunctionConfig({
178
- functionName: func.name,
179
- config: func,
180
- envId
181
- })
182
- log && successLog(`[${func.name}] 更新云函数配置成功!`)
183
- } catch (e) {
184
- throw new CloudBaseError(`${func.name} 更新配置失败:${e.message}`)
185
- }
186
- })()
187
- )
188
-
189
- await Promise.all(promises)
190
- }
191
-
192
- // 调用函数
193
- export async function invokeFunction(options: InvokeFunctionOptions) {
194
- const { functionName, envId, params = {} } = options
195
-
196
- const _params = {
197
- FunctionName: functionName,
198
- Namespace: envId,
199
- ClientContext: JSON.stringify(params),
200
- LogType: 'Tail'
201
- }
202
-
203
- try {
204
- const { Result } = await scfService.request('Invoke', _params)
205
- return Result
206
- } catch (e) {
207
- throw new CloudBaseError(`[${functionName}] 调用失败:\n${e.message}`)
208
- }
209
- }
210
-
211
- // 批量触发云函数
212
- export async function batchInvokeFunctions(options: IFunctionBatchOptions) {
213
- const { functions, envId, log = false } = options
214
-
215
- const promises = functions.map(func =>
216
- (async () => {
217
- try {
218
- const result = await invokeFunction({
219
- functionName: func.name,
220
- params: func.params,
221
- envId
222
- })
223
- if (log) {
224
- successLog(`[${func.name}] 调用成功\n响应结果:\n`)
225
- console.log(result)
226
- }
227
- return result
228
- } catch (e) {
229
- throw new CloudBaseError(`${func.name} 函数调用失败:${e.message}`)
230
- }
231
- })()
232
- )
233
-
234
- return Promise.all(promises)
235
- }
236
-
237
- // 复制云函数
238
- export async function copyFunction(options: ICopyFunctionOptions) {
239
- const { envId, functionName, newFunctionName, targetEnvId, force, codeSecret } = options
240
-
241
- if (!envId || !functionName || !newFunctionName) {
242
- throw new CloudBaseError('参数缺失')
243
- }
244
-
245
- await scfService.request('CopyFunction', {
246
- FunctionName: functionName,
247
- NewFunctionName: newFunctionName,
248
- Namespace: envId,
249
- TargetNamespace: targetEnvId || envId,
250
- Override: force ? true : false,
251
- CodeSecret: codeSecret
252
- })
253
- }
@@ -1,55 +0,0 @@
1
- import fs from 'fs'
2
- import path from 'path'
3
- import unzipper from 'unzipper'
4
- import { CloudApiService, fetchStream, delSync, checkFullAccess } from '../utils'
5
-
6
- interface IFunctionCodeOptions {
7
- envId: string
8
- destPath: string
9
- functionName: string
10
- codeSecret?: string
11
- unzip?: boolean
12
- }
13
-
14
- const scfService = CloudApiService.getInstance('scf')
15
-
16
- // 下载函数代码
17
- export async function downloadFunctionCode(options: IFunctionCodeOptions) {
18
- const { destPath, envId, functionName, codeSecret, unzip = false } = options
19
-
20
- // 检验路径是否存在
21
- checkFullAccess(destPath, true)
22
-
23
- // 获取下载链接
24
- const { Url } = await scfService.request('GetFunctionAddress', {
25
- FunctionName: functionName,
26
- Namespace: envId,
27
- CodeSecret: codeSecret
28
- })
29
-
30
- // 下载文件
31
- const res = await fetchStream(Url)
32
- const zipPath = path.join(destPath, `${functionName}.zip`)
33
- const dest = fs.createWriteStream(zipPath)
34
- res.body.pipe(dest)
35
- return new Promise<void>(resolve => {
36
- // 解压文件
37
- dest.on('close', () => {
38
- // 不解压 ZIP 文件
39
- if (!unzip) {
40
- resolve()
41
- return
42
- }
43
-
44
- const unzipStream = unzipper.Extract({
45
- path: destPath
46
- })
47
- fs.createReadStream(zipPath).pipe(unzipStream)
48
- unzipStream.on('close', () => {
49
- // 删除 ZIP 文件
50
- delSync([zipPath])
51
- resolve()
52
- })
53
- })
54
- })
55
- }
@@ -1,57 +0,0 @@
1
- import { CloudBaseError } from '../error'
2
- import { ISetProvisionedConcurrencyConfig, IGetProvisionedConcurrencyConfig, IGetProvisionedConcurrencyRes, IFunctionVersionsRes } from '../types'
3
- import { getFunctionService } from './base'
4
-
5
- // 设置函数预置并发
6
- export async function setProvisionedConcurrencyConfig(options: ISetProvisionedConcurrencyConfig) {
7
- const { envId, functionName, qualifier, versionProvisionedConcurrencyNum } = options
8
-
9
- const scfService = await getFunctionService(envId)
10
-
11
- try {
12
- await scfService.setProvisionedConcurrencyConfig({
13
- functionName,
14
- qualifier,
15
- versionProvisionedConcurrencyNum
16
- })
17
- } catch (e) {
18
- throw new CloudBaseError(`[${functionName}] 设置函数预置并发失败: ${e.message}`, {
19
- code: e.code
20
- })
21
- }
22
- }
23
-
24
- // 查看函数预置并发
25
- export async function getProvisionedConcurrencyConfig(options: IGetProvisionedConcurrencyConfig): Promise<IGetProvisionedConcurrencyRes> {
26
- const { envId, functionName, qualifier } = options
27
- const scfService = await getFunctionService(envId)
28
-
29
- try {
30
- return scfService.getProvisionedConcurrencyConfig({
31
- functionName,
32
- qualifier,
33
- })
34
- } catch (e) {
35
- throw new CloudBaseError(`[${functionName}] 查看函数预置并发信息失败: ${e.message}`, {
36
- code: e.code
37
- })
38
- }
39
- }
40
-
41
- // 删除函数预置并发
42
- export async function deleteProvisionedConcurrencyConfig(options: IGetProvisionedConcurrencyConfig): Promise<void> {
43
- const { envId, functionName, qualifier } = options
44
- const scfService = await getFunctionService(envId)
45
-
46
- try {
47
- await scfService.deleteProvisionedConcurrencyConfig({
48
- functionName,
49
- qualifier
50
- })
51
- } catch (e) {
52
- throw new CloudBaseError(`[${functionName}] 删除函数预置并发失败: ${e.message}`, {
53
- code: e.code
54
- })
55
- }
56
- }
57
-
@@ -1,78 +0,0 @@
1
- import { loadingFactory } from '../utils'
2
- import { CloudBaseError } from '../error'
3
- import { getFunctionService } from './base'
4
- import { ICreateFunctionOptions, ICloudFunction } from '../types'
5
-
6
- // 创建云函数
7
- export async function createFunction(options: ICreateFunctionOptions): Promise<void> {
8
- const {
9
- envId,
10
- accessPath,
11
- codeSecret,
12
- force = false,
13
- functionPath,
14
- base64Code = '',
15
- functionRootPath = ''
16
- } = options
17
-
18
- // 兼容处理 config
19
- const func: ICloudFunction & { path?: string } = {
20
- ...options?.func?.config,
21
- ...options.func
22
- }
23
-
24
- // 覆盖默认的路径
25
- accessPath && (func.path = accessPath)
26
-
27
- const funcName = func.name
28
-
29
- const scfService = await getFunctionService(envId)
30
-
31
- func.isWaitInstall = true
32
-
33
- try {
34
- await scfService.createFunction({
35
- func,
36
- force,
37
- base64Code,
38
- codeSecret,
39
- functionPath,
40
- functionRootPath
41
- })
42
- } catch (e) {
43
- // 不强制覆盖,抛出错误
44
- if (e.message && !force) {
45
- throw new CloudBaseError(`[${funcName}] 部署失败,${e.message}`, {
46
- code: e.code,
47
- original: e
48
- })
49
- }
50
- throw e
51
- }
52
- }
53
-
54
- // 批量创建云函数
55
- export async function batchCreateFunctions(options: ICreateFunctionOptions): Promise<void> {
56
- const { functions, functionRootPath = '', envId, force, codeSecret, log = false } = options
57
- const promises = functions.map((func) =>
58
- (async () => {
59
- const loading = loadingFactory()
60
- try {
61
- log && loading.start(`[${func.name}] 函数部署中...`)
62
- await createFunction({
63
- func,
64
- envId,
65
- force,
66
- codeSecret,
67
- functionRootPath
68
- })
69
- log && loading.succeed(`[${func.name}] 函数部署成功`)
70
- } catch (e) {
71
- log && loading.fail(`[${func.name}] 函数部署失败`)
72
- throw new CloudBaseError(e.message)
73
- }
74
- })()
75
- )
76
-
77
- await Promise.all(promises)
78
- }
@@ -1,42 +0,0 @@
1
- import { successLog } from '../logger'
2
- import { CloudBaseError } from '../error'
3
- import { CloudApiService } from '../utils'
4
- import { queryGateway, deleteGateway } from '../gateway'
5
-
6
- const scfService = CloudApiService.getInstance('scf')
7
-
8
- // 删除函数
9
- export async function deleteFunction({ functionName, envId }): Promise<void> {
10
- // 检测是否绑定了 API 网关
11
- const res = await queryGateway({
12
- envId,
13
- name: functionName
14
- })
15
- // 删除绑定的 API 网关
16
- if (res?.APISet?.length > 0) {
17
- await deleteGateway({
18
- envId,
19
- name: functionName
20
- })
21
- }
22
- await scfService.request('DeleteFunction', {
23
- FunctionName: functionName,
24
- Namespace: envId
25
- })
26
- }
27
-
28
- // 批量删除云函数
29
- export async function batchDeleteFunctions({ names, envId }): Promise<void> {
30
- const promises = names.map(name =>
31
- (async () => {
32
- try {
33
- await deleteFunction({ functionName: name, envId })
34
- successLog(`[${name}] 函数删除成功!`)
35
- } catch (e) {
36
- throw new CloudBaseError(e.message)
37
- }
38
- })()
39
- )
40
-
41
- await Promise.all(promises)
42
- }
@@ -1,11 +0,0 @@
1
- export * from './create'
2
- export * from './trigger'
3
- export * from './code'
4
- export * from './base'
5
- export * from './delete'
6
- export * from './update'
7
- export * from './layer'
8
- export * from './vpc'
9
- export * from './version'
10
- export * from './concurrency'
11
- export * from './alias'
@@ -1,68 +0,0 @@
1
- import _ from 'lodash'
2
- import { getFunctionDetail } from '../base'
3
- import { CloudApiService } from '../../utils'
4
- import { CloudBaseError } from '../../error'
5
-
6
- const scfService = new CloudApiService('scf')
7
-
8
- export interface IAttachOptions {
9
- envId: string
10
- layerName: string
11
- layerVersion: number
12
- functionName: string
13
- codeSecret?: string
14
- }
15
-
16
- // 函数绑定文件层
17
- export async function attachLayer(options: IAttachOptions): Promise<void> {
18
- const { envId, functionName, layerName, layerVersion, codeSecret } = options
19
-
20
- let { Layers } = await getFunctionDetail({
21
- envId,
22
- codeSecret,
23
- functionName
24
- })
25
-
26
- Layers = Layers.map(item => _.pick(item, ['LayerName', 'LayerVersion']))
27
- // 新加的文件层添加到最后
28
- Layers.push({
29
- LayerName: layerName,
30
- LayerVersion: layerVersion
31
- })
32
- const res = await scfService.request('UpdateFunctionConfiguration', {
33
- Layers,
34
- Namespace: envId,
35
- FunctionName: functionName
36
- })
37
- return res
38
- }
39
-
40
- // 函数解绑文件层
41
- export async function unAttachLayer(options: IAttachOptions): Promise<void> {
42
- const { envId, functionName, layerName, layerVersion, codeSecret } = options
43
-
44
- let { Layers } = await getFunctionDetail({
45
- envId,
46
- codeSecret,
47
- functionName
48
- })
49
-
50
- Layers = Layers.map(item => _.pick(item, ['LayerName', 'LayerVersion']))
51
-
52
- const index = Layers.findIndex(
53
- item => item.LayerName === layerName && item.LayerVersion === layerVersion
54
- )
55
-
56
- if (index === -1) {
57
- throw new CloudBaseError('层不存在')
58
- }
59
-
60
- // 删除指定的层
61
- Layers.splice(index, 1)
62
-
63
- return scfService.request('UpdateFunctionConfiguration', {
64
- Layers,
65
- Namespace: envId,
66
- FunctionName: functionName
67
- })
68
- }
@@ -1,63 +0,0 @@
1
- import fs from 'fs'
2
- import path from 'path'
3
- import { CloudBaseError, zipDir } from '@cloudbase/toolbox'
4
- import { CloudApiService, checkFullAccess, isDirectory, delSync } from '../../utils'
5
-
6
- const scfService = new CloudApiService('scf')
7
-
8
- export interface IFunctionLayerOptions {
9
- contentPath?: string
10
- base64Content?: string
11
- layerName: string
12
- // 支持的运行时
13
- runtimes: string[]
14
- }
15
-
16
- // 创建文件层
17
- export async function createLayer(options: IFunctionLayerOptions): Promise<void> {
18
- const { contentPath = '', layerName, base64Content = '', runtimes = [] } = options
19
-
20
- checkFullAccess(contentPath)
21
-
22
- const validRuntime = ['Nodejs8.9', 'Php7', 'Java8']
23
- if (runtimes.some(item => validRuntime.indexOf(item) === -1)) {
24
- throw new CloudBaseError(
25
- `Invalid runtime value. Now only support: ${validRuntime.join(', ')}`
26
- )
27
- }
28
-
29
- let base64
30
-
31
- if (base64Content) {
32
- base64 = base64Content
33
- } else if (isDirectory(contentPath)) {
34
- // 压缩文件夹
35
- const dirName = path.parse(contentPath).name
36
- const dest = path.join(process.cwd(), `cli-${dirName}.zip`)
37
- // ZIP 文件存在,删除 ZIP 文件
38
- if (checkFullAccess(dest)) {
39
- delSync(dest)
40
- }
41
- await zipDir(contentPath, dest)
42
- // 转换成 base64
43
- const fileBuffer = await fs.promises.readFile(dest)
44
- base64 = fileBuffer.toString('base64')
45
- delSync(dest)
46
- } else {
47
- const fileType = path.extname(contentPath)
48
- if (fileType !== '.zip') {
49
- throw new CloudBaseError('文件类型不正确,目前只支持 ZIP 文件!')
50
- }
51
- const fileBuffer = await fs.promises.readFile(contentPath)
52
- base64 = fileBuffer.toString('base64')
53
- }
54
-
55
- return scfService.request('PublishLayerVersion', {
56
- LayerName: layerName,
57
- CompatibleRuntimes: runtimes,
58
- Content: {
59
- // 最大支持 20M
60
- ZipFile: base64
61
- }
62
- })
63
- }
@@ -1,21 +0,0 @@
1
- import fs from 'fs'
2
- import path from 'path'
3
- import { CloudBaseError } from '../../error'
4
- import { CloudApiService } from '../../utils'
5
-
6
- const scfService = new CloudApiService('scf')
7
-
8
- export interface ILayerDeleteOptions {
9
- name: string
10
- version: number
11
- }
12
-
13
- // 创建文件层
14
- export async function deleteLayer(options: ILayerDeleteOptions): Promise<void> {
15
- const { name, version } = options
16
-
17
- return scfService.request('DeleteLayerVersion', {
18
- LayerName: name,
19
- LayerVersion: version
20
- })
21
- }