@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,57 +1,57 @@
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
+ 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 +1,78 @@
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
+ 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 +1,42 @@
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
+ 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 +1,11 @@
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'
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
11
  export * from './alias'
@@ -1,68 +1,68 @@
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
+ 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 +1,63 @@
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
+ 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
+ }