@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.
- package/.editorconfig +9 -9
- package/.eslintignore +7 -7
- package/.eslintrc +35 -35
- package/.prettierrc.js +29 -29
- package/.vscode/launch.json +16 -16
- package/LICENSE +5 -5
- package/README.md +35 -35
- package/bin/cloudbase.js +5 -5
- package/changelog.md +6 -6
- package/jest.config.js +17 -17
- package/lib/commands/account/login.js +18 -18
- package/lib/commands/run/list.js +2 -3
- package/lib/commands/storage/storage.js +1 -1
- package/lib/env/login.js +7 -7
- package/lib/utils/tcbrApi/callTcbrApi.js +2 -2
- package/package.json +3 -3
- package/post-install.js +61 -61
- package/runtime/nodejs/bootstrap.js +255 -255
- package/runtime/nodejs/runtime.js +183 -183
- package/src/auth/index.ts +1 -1
- package/src/auth/login.ts +91 -91
- package/src/auth/logout.ts +7 -7
- package/src/commands/account/index.ts +2 -2
- package/src/commands/account/login.ts +192 -192
- package/src/commands/account/logout.ts +24 -24
- package/src/commands/env/base.ts +90 -90
- package/src/commands/env/create.ts +92 -92
- package/src/commands/env/domain.ts +186 -186
- package/src/commands/env/index.ts +4 -4
- package/src/commands/env/login.ts +235 -235
- package/src/commands/framework/index.ts +124 -124
- package/src/commands/functions/alias/getRoute.ts +76 -76
- package/src/commands/functions/alias/index.ts +2 -2
- package/src/commands/functions/alias/setRoute.ts +82 -82
- package/src/commands/functions/code-download.ts +100 -100
- package/src/commands/functions/code-update.ts +62 -62
- package/src/commands/functions/concurrency/delete.ts +45 -45
- package/src/commands/functions/concurrency/index.ts +2 -2
- package/src/commands/functions/concurrency/list.ts +58 -58
- package/src/commands/functions/concurrency/set.ts +47 -47
- package/src/commands/functions/config-update.ts +76 -76
- package/src/commands/functions/copy.ts +62 -62
- package/src/commands/functions/delete.ts +79 -79
- package/src/commands/functions/deploy.ts +293 -293
- package/src/commands/functions/detail.ts +138 -138
- package/src/commands/functions/index.ts +16 -16
- package/src/commands/functions/invoke.ts +121 -121
- package/src/commands/functions/layer/bind.ts +182 -182
- package/src/commands/functions/layer/common.ts +8 -8
- package/src/commands/functions/layer/create.ts +49 -49
- package/src/commands/functions/layer/delete.ts +73 -73
- package/src/commands/functions/layer/download.ts +92 -92
- package/src/commands/functions/layer/index.ts +7 -7
- package/src/commands/functions/layer/list.ts +94 -94
- package/src/commands/functions/layer/sort.ts +76 -76
- package/src/commands/functions/list.ts +68 -68
- package/src/commands/functions/log.ts +148 -148
- package/src/commands/functions/run.ts +249 -249
- package/src/commands/functions/trigger-create.ts +79 -79
- package/src/commands/functions/trigger-delete.ts +105 -105
- package/src/commands/functions/version/index.ts +1 -1
- package/src/commands/functions/version/list.ts +73 -73
- package/src/commands/functions/version/publish.ts +43 -43
- package/src/commands/gateway/create.ts +109 -109
- package/src/commands/gateway/delete.ts +81 -81
- package/src/commands/gateway/domain.ts +159 -159
- package/src/commands/gateway/index.ts +5 -5
- package/src/commands/gateway/list.ts +76 -76
- package/src/commands/gateway/switch.ts +107 -107
- package/src/commands/helpers/index.ts +2 -2
- package/src/commands/helpers/init.ts +431 -431
- package/src/commands/helpers/new.ts +117 -117
- package/src/commands/helpers/open.ts +67 -67
- package/src/commands/hosting/hosting.ts +360 -360
- package/src/commands/index.ts +13 -13
- package/src/commands/lowcode/app.ts +34 -34
- package/src/commands/lowcode/comps.ts +322 -322
- package/src/commands/lowcode/index.ts +1 -1
- package/src/commands/lowcode/utils.ts +24 -24
- package/src/commands/run/image/index.ts +4 -4
- package/src/commands/run/list.ts +2 -3
- package/src/commands/run/standalonegateway/common.ts +7 -7
- package/src/commands/run/standalonegateway/create.ts +85 -85
- package/src/commands/run/standalonegateway/destroy.ts +59 -59
- package/src/commands/run/standalonegateway/index.ts +4 -4
- package/src/commands/run/standalonegateway/list.ts +53 -53
- package/src/commands/run/standalonegateway/package.ts +62 -62
- package/src/commands/run/standalonegateway/turn.ts +63 -63
- package/src/commands/run/version/index.ts +4 -4
- package/src/commands/smart.ts +132 -132
- package/src/commands/storage/storage.ts +464 -464
- package/src/commands/third/thirdAttach.ts +49 -49
- package/src/completion/index.ts +13 -13
- package/src/decorators/captureError.ts +25 -25
- package/src/decorators/constants.ts +12 -12
- package/src/decorators/deprecate.ts +25 -25
- package/src/decorators/guard.ts +42 -42
- package/src/decorators/index.ts +7 -7
- package/src/decorators/injectParams.ts +54 -54
- package/src/decorators/params/common.ts +28 -28
- package/src/decorators/params/index.ts +35 -35
- package/src/env/domain.ts +33 -33
- package/src/env/index.ts +63 -63
- package/src/env/login.ts +80 -80
- package/src/error.ts +36 -36
- package/src/function/alias.ts +43 -43
- package/src/function/base.ts +253 -253
- package/src/function/code.ts +55 -55
- package/src/function/concurrency.ts +57 -57
- package/src/function/create.ts +78 -78
- package/src/function/delete.ts +42 -42
- package/src/function/index.ts +10 -10
- package/src/function/layer/attach.ts +68 -68
- package/src/function/layer/create.ts +63 -63
- package/src/function/layer/delete.ts +21 -21
- package/src/function/layer/download.ts +54 -54
- package/src/function/layer/index.ts +7 -7
- package/src/function/layer/list.ts +32 -32
- package/src/function/layer/sort.ts +24 -24
- package/src/function/trigger.ts +97 -97
- package/src/function/update.ts +35 -35
- package/src/function/version.ts +38 -38
- package/src/function/vpc.ts +22 -22
- package/src/gateway/index.ts +137 -137
- package/src/hosting.ts +212 -212
- package/src/index.ts +13 -13
- package/src/logger.ts +17 -17
- package/src/run/create.ts +23 -23
- package/src/run/delete.ts +15 -15
- package/src/run/image/build.ts +36 -36
- package/src/run/image/delete.ts +13 -13
- package/src/run/image/index.ts +3 -3
- package/src/run/image/info.ts +26 -26
- package/src/run/list.ts +29 -29
- package/src/run/repo.ts +24 -24
- package/src/run/standalonegateway/create.ts +24 -24
- package/src/run/standalonegateway/destroy.ts +19 -19
- package/src/run/standalonegateway/index.ts +4 -4
- package/src/run/standalonegateway/list.ts +74 -74
- package/src/run/standalonegateway/package/list.ts +24 -24
- package/src/run/standalonegateway/turn/index.ts +1 -1
- package/src/run/standalonegateway/turn/off.ts +19 -19
- package/src/run/standalonegateway/turn/on.ts +19 -19
- package/src/run/version/create.ts +68 -68
- package/src/run/version/delete.ts +15 -15
- package/src/run/version/index.ts +5 -5
- package/src/run/version/list.ts +16 -16
- package/src/run/version/modify.ts +16 -16
- package/src/run/version/repo.ts +27 -27
- package/src/run/version/update.ts +58 -58
- package/src/storage.ts +114 -114
- package/src/third/index.ts +12 -12
- package/src/utils/auth.ts +15 -15
- package/src/utils/cli-table.ts +23 -23
- package/src/utils/config.ts +39 -39
- package/src/utils/env.ts +244 -244
- package/src/utils/fs/del.ts +5 -5
- package/src/utils/fs/index.ts +71 -71
- package/src/utils/function-packer.ts +97 -97
- package/src/utils/log.ts +81 -81
- package/src/utils/net/cloud-api-request.ts +62 -62
- package/src/utils/net/credential.ts +53 -53
- package/src/utils/net/index.ts +4 -4
- package/src/utils/net/manager-service.ts +36 -36
- package/src/utils/net/proxy.ts +6 -6
- package/src/utils/notice.ts +28 -28
- package/src/utils/output/highlight.ts +5 -5
- package/src/utils/output/index.ts +2 -2
- package/src/utils/output/link.ts +10 -10
- package/src/utils/output/loading.ts +82 -82
- package/src/utils/parallel.ts +82 -82
- package/src/utils/platform/index.ts +2 -2
- package/src/utils/platform/mac.ts +21 -21
- package/src/utils/platform/os.ts +64 -64
- package/src/utils/platform/port.ts +10 -10
- package/src/utils/progress-bar.ts +38 -38
- package/src/utils/prompt/select.ts +59 -59
- package/src/utils/reporter/agree.ts +20 -20
- package/src/utils/reporter/download.ts +26 -26
- package/src/utils/reporter/index.ts +3 -3
- package/src/utils/reporter/usage.ts +20 -20
- package/src/utils/store/auth.ts +49 -49
- package/src/utils/store/common.ts +8 -8
- package/src/utils/store/db.ts +68 -68
- package/src/utils/store/index.ts +4 -4
- package/src/utils/store/usage.ts +12 -12
- package/src/utils/tcbrApi/callTcbrApi.ts +1 -1
- package/src/utils/template.ts +170 -170
- package/src/utils/tools/encoding.ts +8 -8
- package/src/utils/tools/index.ts +4 -4
- package/src/utils/tools/object.ts +33 -33
- package/src/utils/tools/time.ts +38 -38
- package/src/utils/tools/uid.ts +19 -19
- package/templates/html/loginFail.html +90 -90
- package/templates/html/loginSuccess.html +86 -86
- package/templates/server/node/_gitignore +54 -54
- package/templates/server/node/cloudbaserc.json +10 -10
- package/templates/server/node/index.js +5 -5
- package/templates/server/node/package.json +9 -9
- package/tsconfig.json +19 -19
- package/tsconfig.test.json +13 -13
- package/.vscode/settings.json +0 -3
- package/lib/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.js +0 -268
- package/lib/utils/tcbrApi/tcbr-cloud-api/error.js +0 -17
- package/lib/utils/tcbrApi/tcbr-cloud-api/index.js +0 -17
- package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +0 -40
- package/lib/utils/tcbrApi/tcbr-cloud-api-request.js +0 -61
- package/src/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.ts +0 -363
- package/src/utils/tcbrApi/tcbr-cloud-api/error.ts +0 -30
- package/src/utils/tcbrApi/tcbr-cloud-api/index.ts +0 -1
- package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +0 -28
- package/src/utils/tcbrApi/tcbr-cloud-api-request.ts +0 -66
- package/types/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.d.ts +0 -51
- package/types/utils/tcbrApi/tcbr-cloud-api/error.d.ts +0 -20
- package/types/utils/tcbrApi/tcbr-cloud-api/index.d.ts +0 -1
- package/types/utils/tcbrApi/tcbr-cloud-api/request.d.ts +0 -4
- package/types/utils/tcbrApi/tcbr-cloud-api-request.d.ts +0 -9
|
@@ -1,21 +1,21 @@
|
|
|
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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import fs from 'fs'
|
|
2
|
-
import path from 'path'
|
|
3
|
-
import unzipper from 'unzipper'
|
|
4
|
-
import { CloudApiService, fetchStream, checkFullAccess, delSync } from '../../utils'
|
|
5
|
-
import { CloudBaseError } from '../../error'
|
|
6
|
-
|
|
7
|
-
const scfService = new CloudApiService('scf')
|
|
8
|
-
|
|
9
|
-
export interface ILayerDownloadOptions {
|
|
10
|
-
name: string
|
|
11
|
-
version: number
|
|
12
|
-
destPath: string
|
|
13
|
-
force?: boolean
|
|
14
|
-
unzip?: boolean
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// 下载文件层 ZIP 文件
|
|
18
|
-
export async function downloadLayer(options: ILayerDownloadOptions): Promise<void> {
|
|
19
|
-
const { name, version, destPath, unzip = false } = options
|
|
20
|
-
const res = await scfService.request('GetLayerVersion', {
|
|
21
|
-
LayerName: name,
|
|
22
|
-
LayerVersion: version
|
|
23
|
-
})
|
|
24
|
-
const url = res?.Location
|
|
25
|
-
const zipPath = path.join(destPath, `${name}-${version}.zip`)
|
|
26
|
-
if (checkFullAccess(zipPath)) {
|
|
27
|
-
throw new CloudBaseError(`文件已存在:${zipPath}`)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// 下载文件
|
|
31
|
-
const streamRes = await fetchStream(url)
|
|
32
|
-
const dest = fs.createWriteStream(zipPath)
|
|
33
|
-
streamRes.body.pipe(dest)
|
|
34
|
-
return new Promise(resolve => {
|
|
35
|
-
// 解压文件
|
|
36
|
-
dest.on('close', () => {
|
|
37
|
-
// 不解压 ZIP 文件
|
|
38
|
-
if (!unzip) {
|
|
39
|
-
resolve()
|
|
40
|
-
return
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const unzipStream = unzipper.Extract({
|
|
44
|
-
path: destPath
|
|
45
|
-
})
|
|
46
|
-
fs.createReadStream(zipPath).pipe(unzipStream)
|
|
47
|
-
unzipStream.on('close', () => {
|
|
48
|
-
// 删除 ZIP 文件
|
|
49
|
-
delSync([zipPath])
|
|
50
|
-
resolve()
|
|
51
|
-
})
|
|
52
|
-
})
|
|
53
|
-
})
|
|
54
|
-
}
|
|
1
|
+
import fs from 'fs'
|
|
2
|
+
import path from 'path'
|
|
3
|
+
import unzipper from 'unzipper'
|
|
4
|
+
import { CloudApiService, fetchStream, checkFullAccess, delSync } from '../../utils'
|
|
5
|
+
import { CloudBaseError } from '../../error'
|
|
6
|
+
|
|
7
|
+
const scfService = new CloudApiService('scf')
|
|
8
|
+
|
|
9
|
+
export interface ILayerDownloadOptions {
|
|
10
|
+
name: string
|
|
11
|
+
version: number
|
|
12
|
+
destPath: string
|
|
13
|
+
force?: boolean
|
|
14
|
+
unzip?: boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// 下载文件层 ZIP 文件
|
|
18
|
+
export async function downloadLayer(options: ILayerDownloadOptions): Promise<void> {
|
|
19
|
+
const { name, version, destPath, unzip = false } = options
|
|
20
|
+
const res = await scfService.request('GetLayerVersion', {
|
|
21
|
+
LayerName: name,
|
|
22
|
+
LayerVersion: version
|
|
23
|
+
})
|
|
24
|
+
const url = res?.Location
|
|
25
|
+
const zipPath = path.join(destPath, `${name}-${version}.zip`)
|
|
26
|
+
if (checkFullAccess(zipPath)) {
|
|
27
|
+
throw new CloudBaseError(`文件已存在:${zipPath}`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 下载文件
|
|
31
|
+
const streamRes = await fetchStream(url)
|
|
32
|
+
const dest = fs.createWriteStream(zipPath)
|
|
33
|
+
streamRes.body.pipe(dest)
|
|
34
|
+
return new Promise(resolve => {
|
|
35
|
+
// 解压文件
|
|
36
|
+
dest.on('close', () => {
|
|
37
|
+
// 不解压 ZIP 文件
|
|
38
|
+
if (!unzip) {
|
|
39
|
+
resolve()
|
|
40
|
+
return
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const unzipStream = unzipper.Extract({
|
|
44
|
+
path: destPath
|
|
45
|
+
})
|
|
46
|
+
fs.createReadStream(zipPath).pipe(unzipStream)
|
|
47
|
+
unzipStream.on('close', () => {
|
|
48
|
+
// 删除 ZIP 文件
|
|
49
|
+
delSync([zipPath])
|
|
50
|
+
resolve()
|
|
51
|
+
})
|
|
52
|
+
})
|
|
53
|
+
})
|
|
54
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './list'
|
|
2
|
-
export * from './attach'
|
|
3
|
-
export * from './delete'
|
|
4
|
-
export * from './create'
|
|
5
|
-
export * from './download'
|
|
6
|
-
export * from './list'
|
|
7
|
-
export * from './sort'
|
|
1
|
+
export * from './list'
|
|
2
|
+
export * from './attach'
|
|
3
|
+
export * from './delete'
|
|
4
|
+
export * from './create'
|
|
5
|
+
export * from './download'
|
|
6
|
+
export * from './list'
|
|
7
|
+
export * from './sort'
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { CloudApiService } from '../../utils'
|
|
2
|
-
|
|
3
|
-
const scfService = new CloudApiService('scf')
|
|
4
|
-
|
|
5
|
-
export interface ILayerListOptions {
|
|
6
|
-
offset: number
|
|
7
|
-
limit: number
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface IVersionListOptions {
|
|
11
|
-
name: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// 列出文件层
|
|
15
|
-
export async function listLayers(options: ILayerListOptions): Promise<any> {
|
|
16
|
-
const { offset, limit } = options
|
|
17
|
-
|
|
18
|
-
const res = await scfService.request('ListLayers', {
|
|
19
|
-
Offset: offset,
|
|
20
|
-
Limit: limit
|
|
21
|
-
})
|
|
22
|
-
return res?.Layers || []
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// 获取文件层的版本列表
|
|
26
|
-
export async function listLayerVersions(options: IVersionListOptions): Promise<any> {
|
|
27
|
-
const { name } = options
|
|
28
|
-
const res = await scfService.request('ListLayerVersions', {
|
|
29
|
-
LayerName: name
|
|
30
|
-
})
|
|
31
|
-
return res?.LayerVersions || []
|
|
32
|
-
}
|
|
1
|
+
import { CloudApiService } from '../../utils'
|
|
2
|
+
|
|
3
|
+
const scfService = new CloudApiService('scf')
|
|
4
|
+
|
|
5
|
+
export interface ILayerListOptions {
|
|
6
|
+
offset: number
|
|
7
|
+
limit: number
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface IVersionListOptions {
|
|
11
|
+
name: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// 列出文件层
|
|
15
|
+
export async function listLayers(options: ILayerListOptions): Promise<any> {
|
|
16
|
+
const { offset, limit } = options
|
|
17
|
+
|
|
18
|
+
const res = await scfService.request('ListLayers', {
|
|
19
|
+
Offset: offset,
|
|
20
|
+
Limit: limit
|
|
21
|
+
})
|
|
22
|
+
return res?.Layers || []
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// 获取文件层的版本列表
|
|
26
|
+
export async function listLayerVersions(options: IVersionListOptions): Promise<any> {
|
|
27
|
+
const { name } = options
|
|
28
|
+
const res = await scfService.request('ListLayerVersions', {
|
|
29
|
+
LayerName: name
|
|
30
|
+
})
|
|
31
|
+
return res?.LayerVersions || []
|
|
32
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { CloudApiService } from '../../utils'
|
|
2
|
-
|
|
3
|
-
const scfService = new CloudApiService('scf')
|
|
4
|
-
|
|
5
|
-
export interface ILayer {
|
|
6
|
-
LayerName: string
|
|
7
|
-
LayerVersion: number
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface ISortOptions {
|
|
11
|
-
envId: string
|
|
12
|
-
functionName: string
|
|
13
|
-
layers: ILayer[]
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// 函数文件层排序
|
|
17
|
-
export async function sortLayer(options: ISortOptions): Promise<void> {
|
|
18
|
-
const { envId, functionName, layers } = options
|
|
19
|
-
return scfService.request('UpdateFunctionConfiguration', {
|
|
20
|
-
Layers: layers,
|
|
21
|
-
Namespace: envId,
|
|
22
|
-
FunctionName: functionName
|
|
23
|
-
})
|
|
24
|
-
}
|
|
1
|
+
import { CloudApiService } from '../../utils'
|
|
2
|
+
|
|
3
|
+
const scfService = new CloudApiService('scf')
|
|
4
|
+
|
|
5
|
+
export interface ILayer {
|
|
6
|
+
LayerName: string
|
|
7
|
+
LayerVersion: number
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface ISortOptions {
|
|
11
|
+
envId: string
|
|
12
|
+
functionName: string
|
|
13
|
+
layers: ILayer[]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// 函数文件层排序
|
|
17
|
+
export async function sortLayer(options: ISortOptions): Promise<void> {
|
|
18
|
+
const { envId, functionName, layers } = options
|
|
19
|
+
return scfService.request('UpdateFunctionConfiguration', {
|
|
20
|
+
Layers: layers,
|
|
21
|
+
Namespace: envId,
|
|
22
|
+
FunctionName: functionName
|
|
23
|
+
})
|
|
24
|
+
}
|
package/src/function/trigger.ts
CHANGED
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
import { CloudApiService } from '../utils'
|
|
2
|
-
import { successLog } from '../logger'
|
|
3
|
-
import { IFunctionTriggerOptions, IFunctionBatchOptions } from '../types'
|
|
4
|
-
import { CloudBaseError } from '../error'
|
|
5
|
-
|
|
6
|
-
const scfService = CloudApiService.getInstance('scf')
|
|
7
|
-
|
|
8
|
-
// 创建函数触发器
|
|
9
|
-
export async function createFunctionTriggers(options: IFunctionTriggerOptions): Promise<void> {
|
|
10
|
-
const { functionName, triggers = [], envId } = options
|
|
11
|
-
|
|
12
|
-
const parsedTriggers = triggers.map(item => {
|
|
13
|
-
if (item.type !== 'timer') {
|
|
14
|
-
throw new CloudBaseError(
|
|
15
|
-
`不支持的触发器类型 [${item.type}],目前仅支持定时触发器(timer)!`
|
|
16
|
-
)
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
TriggerName: item.name,
|
|
20
|
-
Type: item.type,
|
|
21
|
-
TriggerDesc: item.config
|
|
22
|
-
}
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
await scfService.request('BatchCreateTrigger', {
|
|
27
|
-
FunctionName: functionName,
|
|
28
|
-
Namespace: envId,
|
|
29
|
-
Triggers: JSON.stringify(parsedTriggers),
|
|
30
|
-
Count: parsedTriggers.length
|
|
31
|
-
})
|
|
32
|
-
} catch (e) {
|
|
33
|
-
throw new CloudBaseError(`[${functionName}] 创建触发器失败:${e.message}`, {
|
|
34
|
-
action: e.action,
|
|
35
|
-
code: e.code
|
|
36
|
-
})
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// 批量部署函数触发器
|
|
41
|
-
export async function batchCreateTriggers(options: IFunctionBatchOptions): Promise<void> {
|
|
42
|
-
const { functions, envId } = options
|
|
43
|
-
|
|
44
|
-
const promises = functions.map(func =>
|
|
45
|
-
(async () => {
|
|
46
|
-
try {
|
|
47
|
-
await createFunctionTriggers({
|
|
48
|
-
functionName: func.name,
|
|
49
|
-
triggers: func.triggers,
|
|
50
|
-
envId
|
|
51
|
-
})
|
|
52
|
-
successLog(`[${func.name}] 创建云函数触发器成功!`)
|
|
53
|
-
} catch (e) {
|
|
54
|
-
throw new CloudBaseError(e.message)
|
|
55
|
-
}
|
|
56
|
-
})()
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
await Promise.all(promises)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// 删除函数触发器
|
|
63
|
-
export async function deleteFunctionTrigger(options: IFunctionTriggerOptions): Promise<void> {
|
|
64
|
-
const { functionName, triggerName, envId } = options
|
|
65
|
-
try {
|
|
66
|
-
await scfService.request('DeleteTrigger', {
|
|
67
|
-
FunctionName: functionName,
|
|
68
|
-
Namespace: envId,
|
|
69
|
-
TriggerName: triggerName,
|
|
70
|
-
Type: 'timer'
|
|
71
|
-
})
|
|
72
|
-
successLog(`[${functionName}] 删除云函数触发器 ${triggerName} 成功!`)
|
|
73
|
-
} catch (e) {
|
|
74
|
-
throw new CloudBaseError(`[${functionName}] 删除触发器失败:${e.message}`)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export async function batchDeleteTriggers(options: IFunctionBatchOptions): Promise<void> {
|
|
79
|
-
const { functions, envId } = options
|
|
80
|
-
const promises = functions.map(func =>
|
|
81
|
-
(async () => {
|
|
82
|
-
try {
|
|
83
|
-
func.triggers.forEach(async trigger => {
|
|
84
|
-
await deleteFunctionTrigger({
|
|
85
|
-
functionName: func.name,
|
|
86
|
-
triggerName: trigger.name,
|
|
87
|
-
envId
|
|
88
|
-
})
|
|
89
|
-
})
|
|
90
|
-
} catch (e) {
|
|
91
|
-
throw new CloudBaseError(e.message)
|
|
92
|
-
}
|
|
93
|
-
})()
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
await Promise.all(promises)
|
|
97
|
-
}
|
|
1
|
+
import { CloudApiService } from '../utils'
|
|
2
|
+
import { successLog } from '../logger'
|
|
3
|
+
import { IFunctionTriggerOptions, IFunctionBatchOptions } from '../types'
|
|
4
|
+
import { CloudBaseError } from '../error'
|
|
5
|
+
|
|
6
|
+
const scfService = CloudApiService.getInstance('scf')
|
|
7
|
+
|
|
8
|
+
// 创建函数触发器
|
|
9
|
+
export async function createFunctionTriggers(options: IFunctionTriggerOptions): Promise<void> {
|
|
10
|
+
const { functionName, triggers = [], envId } = options
|
|
11
|
+
|
|
12
|
+
const parsedTriggers = triggers.map(item => {
|
|
13
|
+
if (item.type !== 'timer') {
|
|
14
|
+
throw new CloudBaseError(
|
|
15
|
+
`不支持的触发器类型 [${item.type}],目前仅支持定时触发器(timer)!`
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
TriggerName: item.name,
|
|
20
|
+
Type: item.type,
|
|
21
|
+
TriggerDesc: item.config
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
await scfService.request('BatchCreateTrigger', {
|
|
27
|
+
FunctionName: functionName,
|
|
28
|
+
Namespace: envId,
|
|
29
|
+
Triggers: JSON.stringify(parsedTriggers),
|
|
30
|
+
Count: parsedTriggers.length
|
|
31
|
+
})
|
|
32
|
+
} catch (e) {
|
|
33
|
+
throw new CloudBaseError(`[${functionName}] 创建触发器失败:${e.message}`, {
|
|
34
|
+
action: e.action,
|
|
35
|
+
code: e.code
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// 批量部署函数触发器
|
|
41
|
+
export async function batchCreateTriggers(options: IFunctionBatchOptions): Promise<void> {
|
|
42
|
+
const { functions, envId } = options
|
|
43
|
+
|
|
44
|
+
const promises = functions.map(func =>
|
|
45
|
+
(async () => {
|
|
46
|
+
try {
|
|
47
|
+
await createFunctionTriggers({
|
|
48
|
+
functionName: func.name,
|
|
49
|
+
triggers: func.triggers,
|
|
50
|
+
envId
|
|
51
|
+
})
|
|
52
|
+
successLog(`[${func.name}] 创建云函数触发器成功!`)
|
|
53
|
+
} catch (e) {
|
|
54
|
+
throw new CloudBaseError(e.message)
|
|
55
|
+
}
|
|
56
|
+
})()
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
await Promise.all(promises)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// 删除函数触发器
|
|
63
|
+
export async function deleteFunctionTrigger(options: IFunctionTriggerOptions): Promise<void> {
|
|
64
|
+
const { functionName, triggerName, envId } = options
|
|
65
|
+
try {
|
|
66
|
+
await scfService.request('DeleteTrigger', {
|
|
67
|
+
FunctionName: functionName,
|
|
68
|
+
Namespace: envId,
|
|
69
|
+
TriggerName: triggerName,
|
|
70
|
+
Type: 'timer'
|
|
71
|
+
})
|
|
72
|
+
successLog(`[${functionName}] 删除云函数触发器 ${triggerName} 成功!`)
|
|
73
|
+
} catch (e) {
|
|
74
|
+
throw new CloudBaseError(`[${functionName}] 删除触发器失败:${e.message}`)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export async function batchDeleteTriggers(options: IFunctionBatchOptions): Promise<void> {
|
|
79
|
+
const { functions, envId } = options
|
|
80
|
+
const promises = functions.map(func =>
|
|
81
|
+
(async () => {
|
|
82
|
+
try {
|
|
83
|
+
func.triggers.forEach(async trigger => {
|
|
84
|
+
await deleteFunctionTrigger({
|
|
85
|
+
functionName: func.name,
|
|
86
|
+
triggerName: trigger.name,
|
|
87
|
+
envId
|
|
88
|
+
})
|
|
89
|
+
})
|
|
90
|
+
} catch (e) {
|
|
91
|
+
throw new CloudBaseError(e.message)
|
|
92
|
+
}
|
|
93
|
+
})()
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
await Promise.all(promises)
|
|
97
|
+
}
|
package/src/function/update.ts
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { CloudBaseError } from '../error'
|
|
2
|
-
import { ICreateFunctionOptions } from '../types'
|
|
3
|
-
import { getFunctionService } from './base'
|
|
4
|
-
|
|
5
|
-
// 更新云函数代码
|
|
6
|
-
export async function updateFunctionCode(options: ICreateFunctionOptions) {
|
|
7
|
-
const { functionRootPath = '', envId, base64Code = '', codeSecret } = options
|
|
8
|
-
// 兼容处理 config
|
|
9
|
-
const func = {
|
|
10
|
-
...options?.func?.config,
|
|
11
|
-
...options.func
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const funcName = func.name
|
|
15
|
-
|
|
16
|
-
// 校验 CodeSecret 格式
|
|
17
|
-
if (codeSecret && !/^[A-Za-z0-9+=/]{1,160}$/.test(codeSecret)) {
|
|
18
|
-
throw new CloudBaseError('CodeSecret 格式错误,格式为 1-160 位大小字母,数字+=/')
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const scfService = await getFunctionService(envId)
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
await scfService.updateFunctionCode({
|
|
25
|
-
func,
|
|
26
|
-
functionRootPath,
|
|
27
|
-
base64Code,
|
|
28
|
-
codeSecret
|
|
29
|
-
})
|
|
30
|
-
} catch (e) {
|
|
31
|
-
throw new CloudBaseError(`[${funcName}] 函数代码更新失败: ${e.message}`, {
|
|
32
|
-
code: e.code
|
|
33
|
-
})
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
import { CloudBaseError } from '../error'
|
|
2
|
+
import { ICreateFunctionOptions } from '../types'
|
|
3
|
+
import { getFunctionService } from './base'
|
|
4
|
+
|
|
5
|
+
// 更新云函数代码
|
|
6
|
+
export async function updateFunctionCode(options: ICreateFunctionOptions) {
|
|
7
|
+
const { functionRootPath = '', envId, base64Code = '', codeSecret } = options
|
|
8
|
+
// 兼容处理 config
|
|
9
|
+
const func = {
|
|
10
|
+
...options?.func?.config,
|
|
11
|
+
...options.func
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const funcName = func.name
|
|
15
|
+
|
|
16
|
+
// 校验 CodeSecret 格式
|
|
17
|
+
if (codeSecret && !/^[A-Za-z0-9+=/]{1,160}$/.test(codeSecret)) {
|
|
18
|
+
throw new CloudBaseError('CodeSecret 格式错误,格式为 1-160 位大小字母,数字+=/')
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const scfService = await getFunctionService(envId)
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
await scfService.updateFunctionCode({
|
|
25
|
+
func,
|
|
26
|
+
functionRootPath,
|
|
27
|
+
base64Code,
|
|
28
|
+
codeSecret
|
|
29
|
+
})
|
|
30
|
+
} catch (e) {
|
|
31
|
+
throw new CloudBaseError(`[${funcName}] 函数代码更新失败: ${e.message}`, {
|
|
32
|
+
code: e.code
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/function/version.ts
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { CloudBaseError } from '../error'
|
|
2
|
-
import { IPublishVersionParams, IListFunctionVersionParams, IFunctionVersionsRes } from '../types'
|
|
3
|
-
import { getFunctionService } from './base'
|
|
4
|
-
|
|
5
|
-
// 发布云函数新版本
|
|
6
|
-
export async function publishVersion(options: IPublishVersionParams) {
|
|
7
|
-
const { envId, functionName, description = '' } = options
|
|
8
|
-
|
|
9
|
-
const scfService = await getFunctionService(envId)
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
await scfService.publishVersion({
|
|
13
|
-
functionName,
|
|
14
|
-
description
|
|
15
|
-
})
|
|
16
|
-
} catch (e) {
|
|
17
|
-
throw new CloudBaseError(`[${functionName}] 函数发布新版本失败: ${e.message}`, {
|
|
18
|
-
code: e.code
|
|
19
|
-
})
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// 查看函数所有版本
|
|
24
|
-
export async function listFunctionVersions(options: IListFunctionVersionParams): Promise<IFunctionVersionsRes> {
|
|
25
|
-
const { envId, functionName, offset = 0, limit = 20 } = options
|
|
26
|
-
const scfService = await getFunctionService(envId)
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
return scfService.listVersionByFunction({
|
|
30
|
-
functionName,
|
|
31
|
-
offset,
|
|
32
|
-
limit
|
|
33
|
-
})
|
|
34
|
-
} catch (e) {
|
|
35
|
-
throw new CloudBaseError(`[${functionName}] 查看寒函数版本列表失败: ${e.message}`, {
|
|
36
|
-
code: e.code
|
|
37
|
-
})
|
|
38
|
-
}
|
|
1
|
+
import { CloudBaseError } from '../error'
|
|
2
|
+
import { IPublishVersionParams, IListFunctionVersionParams, IFunctionVersionsRes } from '../types'
|
|
3
|
+
import { getFunctionService } from './base'
|
|
4
|
+
|
|
5
|
+
// 发布云函数新版本
|
|
6
|
+
export async function publishVersion(options: IPublishVersionParams) {
|
|
7
|
+
const { envId, functionName, description = '' } = options
|
|
8
|
+
|
|
9
|
+
const scfService = await getFunctionService(envId)
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
await scfService.publishVersion({
|
|
13
|
+
functionName,
|
|
14
|
+
description
|
|
15
|
+
})
|
|
16
|
+
} catch (e) {
|
|
17
|
+
throw new CloudBaseError(`[${functionName}] 函数发布新版本失败: ${e.message}`, {
|
|
18
|
+
code: e.code
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// 查看函数所有版本
|
|
24
|
+
export async function listFunctionVersions(options: IListFunctionVersionParams): Promise<IFunctionVersionsRes> {
|
|
25
|
+
const { envId, functionName, offset = 0, limit = 20 } = options
|
|
26
|
+
const scfService = await getFunctionService(envId)
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
return scfService.listVersionByFunction({
|
|
30
|
+
functionName,
|
|
31
|
+
offset,
|
|
32
|
+
limit
|
|
33
|
+
})
|
|
34
|
+
} catch (e) {
|
|
35
|
+
throw new CloudBaseError(`[${functionName}] 查看寒函数版本列表失败: ${e.message}`, {
|
|
36
|
+
code: e.code
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
39
|
}
|
package/src/function/vpc.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { CloudApiService } from '../utils'
|
|
2
|
-
|
|
3
|
-
const vpcService = CloudApiService.getInstance('vpc')
|
|
4
|
-
|
|
5
|
-
// 获取 vpc 信息
|
|
6
|
-
export async function getVpcs() {
|
|
7
|
-
const { VpcSet } = await vpcService.request('DescribeVpcs')
|
|
8
|
-
return VpcSet
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// 获取子网
|
|
12
|
-
export async function getSubnets(vpcId: string) {
|
|
13
|
-
const { SubnetSet } = await vpcService.request('DescribeSubnets', {
|
|
14
|
-
Filters: [
|
|
15
|
-
{
|
|
16
|
-
Name: 'vpc-id',
|
|
17
|
-
Values: [vpcId]
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
})
|
|
21
|
-
return SubnetSet
|
|
22
|
-
}
|
|
1
|
+
import { CloudApiService } from '../utils'
|
|
2
|
+
|
|
3
|
+
const vpcService = CloudApiService.getInstance('vpc')
|
|
4
|
+
|
|
5
|
+
// 获取 vpc 信息
|
|
6
|
+
export async function getVpcs() {
|
|
7
|
+
const { VpcSet } = await vpcService.request('DescribeVpcs')
|
|
8
|
+
return VpcSet
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// 获取子网
|
|
12
|
+
export async function getSubnets(vpcId: string) {
|
|
13
|
+
const { SubnetSet } = await vpcService.request('DescribeSubnets', {
|
|
14
|
+
Filters: [
|
|
15
|
+
{
|
|
16
|
+
Name: 'vpc-id',
|
|
17
|
+
Values: [vpcId]
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
})
|
|
21
|
+
return SubnetSet
|
|
22
|
+
}
|