@cloudbase/cli 1.12.7-alpha.4 → 2.0.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.
- package/.editorconfig +9 -9
- package/.eslintignore +7 -7
- package/.eslintrc +35 -35
- package/.prettierrc.js +29 -29
- package/.vscode/launch.json +16 -16
- package/.vscode/settings.json +3 -0
- package/LICENSE +5 -5
- package/README.md +35 -35
- package/bin/cloudbase.js +5 -5
- package/bin/tcb.js +0 -0
- package/changelog.md +6 -6
- package/jest.config.js +17 -17
- package/lib/commands/account/login.js +18 -18
- package/lib/commands/run/create.js +6 -1
- package/lib/commands/run/delete.js +6 -1
- package/lib/commands/run/image/common.js +1 -1
- package/lib/commands/run/image/delete.js +5 -0
- package/lib/commands/run/image/download.js +5 -0
- package/lib/commands/run/image/list.js +5 -0
- package/lib/commands/run/image/upload.js +5 -0
- package/lib/commands/run/index.js +1 -0
- package/lib/commands/run/list.js +7 -1
- package/lib/commands/run/service/config.js +112 -0
- package/lib/commands/run/service/create.js +140 -0
- package/lib/commands/run/service/deploy.js +145 -0
- package/lib/commands/run/service/index.js +21 -0
- package/lib/commands/run/service/list.js +115 -0
- package/lib/commands/run/service/update.js +132 -0
- package/lib/commands/run/version/common.js +1 -1
- package/lib/commands/run/version/create.js +5 -0
- package/lib/commands/run/version/delete.js +5 -0
- package/lib/commands/run/version/list.js +5 -0
- package/lib/commands/run/version/modify.js +5 -0
- package/lib/commands/run/version/update.js +5 -0
- package/lib/commands/storage/storage.js +1 -1
- package/lib/constant.js +20 -1
- package/lib/env/login.js +7 -7
- package/lib/help.js +40 -38
- package/lib/run/index.js +1 -0
- package/lib/run/service/common.js +163 -0
- package/lib/run/service/config.js +70 -0
- package/lib/run/service/create.js +67 -0
- package/lib/run/service/deployPackage.js +87 -0
- package/lib/run/service/index.js +23 -0
- package/lib/run/service/list.js +31 -0
- package/lib/run/service/showLogs.js +116 -0
- package/lib/run/service/update.js +83 -0
- package/lib/utils/checkTcbrEnv.js +74 -0
- package/lib/utils/commonParamsCheck.js +48 -0
- package/lib/utils/index.js +3 -0
- package/lib/utils/tcbrApi/callTcbrApi.js +38 -0
- package/lib/utils/tcbrApi/index.js +17 -0
- package/lib/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.js +268 -0
- package/lib/utils/tcbrApi/tcbr-cloud-api/error.js +17 -0
- package/lib/utils/tcbrApi/tcbr-cloud-api/index.js +17 -0
- package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +40 -0
- package/lib/utils/tcbrApi/tcbr-cloud-api-request.js +61 -0
- package/lib/utils/validator.js +32 -1
- package/package.json +88 -88
- 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/common.ts +246 -246
- 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/create.ts +9 -2
- package/src/commands/run/delete.ts +8 -2
- package/src/commands/run/image/common.ts +1 -1
- package/src/commands/run/image/delete.ts +8 -1
- package/src/commands/run/image/download.ts +7 -1
- package/src/commands/run/image/index.ts +4 -4
- package/src/commands/run/image/list.ts +7 -2
- package/src/commands/run/image/upload.ts +8 -1
- package/src/commands/run/index.ts +2 -1
- package/src/commands/run/list.ts +11 -3
- package/src/commands/run/service/config.ts +81 -0
- package/src/commands/run/service/create.ts +118 -0
- package/src/commands/run/service/deploy.ts +121 -0
- package/src/commands/run/service/index.ts +5 -0
- package/src/commands/run/service/list.ts +94 -0
- package/src/commands/run/service/update.ts +104 -0
- 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/common.ts +1 -1
- package/src/commands/run/version/create.ts +8 -1
- package/src/commands/run/version/delete.ts +8 -2
- package/src/commands/run/version/index.ts +4 -4
- package/src/commands/run/version/list.ts +7 -1
- package/src/commands/run/version/modify.ts +8 -1
- package/src/commands/run/version/update.ts +8 -1
- 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/constant.ts +35 -1
- 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/help.ts +50 -48
- 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/index.ts +2 -1
- package/src/run/list.ts +29 -29
- package/src/run/repo.ts +24 -24
- package/src/run/service/common.ts +206 -0
- package/src/run/service/config.ts +77 -0
- package/src/run/service/create.ts +52 -0
- package/src/run/service/deployPackage.ts +63 -0
- package/src/run/service/index.ts +7 -0
- package/src/run/service/list.ts +29 -0
- package/src/run/service/showLogs.ts +98 -0
- package/src/run/service/update.ts +81 -0
- 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/types.ts +128 -2
- package/src/utils/auth.ts +15 -15
- package/src/utils/checkTcbrEnv.ts +67 -0
- package/src/utils/cli-table.ts +23 -23
- package/src/utils/commonParamsCheck.ts +65 -0
- 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/index.ts +5 -1
- 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/http-request.ts +84 -84
- 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 +28 -0
- package/src/utils/tcbrApi/index.ts +1 -0
- package/src/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.ts +363 -0
- package/src/utils/tcbrApi/tcbr-cloud-api/error.ts +30 -0
- package/src/utils/tcbrApi/tcbr-cloud-api/index.ts +1 -0
- package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +28 -0
- package/src/utils/tcbrApi/tcbr-cloud-api-request.ts +66 -0
- 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/src/utils/validator.ts +64 -32
- 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/types/commands/run/index.d.ts +1 -0
- package/types/commands/run/service/config.d.ts +14 -0
- package/types/commands/run/service/create.d.ts +13 -0
- package/types/commands/run/service/deploy.d.ts +13 -0
- package/types/commands/run/service/index.d.ts +5 -0
- package/types/commands/run/service/list.d.ts +13 -0
- package/types/commands/run/service/update.d.ts +13 -0
- package/types/constant.d.ts +18 -0
- package/types/run/index.d.ts +1 -0
- package/types/run/service/common.d.ts +32 -0
- package/types/run/service/config.d.ts +23 -0
- package/types/run/service/create.d.ts +7 -0
- package/types/run/service/deployPackage.d.ts +11 -0
- package/types/run/service/index.d.ts +7 -0
- package/types/run/service/list.d.ts +2 -0
- package/types/run/service/showLogs.d.ts +2 -0
- package/types/run/service/update.d.ts +2 -0
- package/types/types.d.ts +116 -2
- package/types/utils/checkTcbrEnv.d.ts +3 -0
- package/types/utils/commonParamsCheck.d.ts +3 -0
- package/types/utils/index.d.ts +3 -0
- package/types/utils/tcbrApi/callTcbrApi.d.ts +1 -0
- package/types/utils/tcbrApi/index.d.ts +1 -0
- package/types/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.d.ts +51 -0
- package/types/utils/tcbrApi/tcbr-cloud-api/error.d.ts +20 -0
- package/types/utils/tcbrApi/tcbr-cloud-api/index.d.ts +1 -0
- package/types/utils/tcbrApi/tcbr-cloud-api/request.d.ts +4 -0
- package/types/utils/tcbrApi/tcbr-cloud-api-request.d.ts +9 -0
- package/types/utils/validator.d.ts +4 -0
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
import fs from 'fs'
|
|
2
|
-
import del from 'del'
|
|
3
|
-
import path from 'path'
|
|
4
|
-
import makeDir from 'make-dir'
|
|
5
|
-
import { random } from './tools'
|
|
6
|
-
import { CloudBaseError, zipDir, checkFullAccess } from '@cloudbase/toolbox'
|
|
7
|
-
|
|
8
|
-
export enum CodeType {
|
|
9
|
-
File,
|
|
10
|
-
JavaFile
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 将函数代码转换成 Base64 编码
|
|
15
|
-
* 普通文件:Node,PHP
|
|
16
|
-
* Java 文件:Jar,ZIP
|
|
17
|
-
*/
|
|
18
|
-
export class FunctionPacker {
|
|
19
|
-
// 项目根目录
|
|
20
|
-
root: string
|
|
21
|
-
// 函数名
|
|
22
|
-
name: string
|
|
23
|
-
// 代码文件类型
|
|
24
|
-
type: CodeType
|
|
25
|
-
funcPath: string
|
|
26
|
-
funcDistPath: string
|
|
27
|
-
// 临时目录
|
|
28
|
-
tmpPath: string
|
|
29
|
-
// 忽略文件模式
|
|
30
|
-
ignore: string | string[]
|
|
31
|
-
|
|
32
|
-
constructor(root: string, name: string, ignore: string | string[]) {
|
|
33
|
-
this.name = name
|
|
34
|
-
this.root = root
|
|
35
|
-
this.ignore = ignore
|
|
36
|
-
this.funcPath = path.join(root, name)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async getFileCode() {
|
|
40
|
-
checkFullAccess(this.funcPath, true)
|
|
41
|
-
// 构建临时文件夹存放函数打包结果
|
|
42
|
-
this.tmpPath = path.join(this.root, `.cloudbase_tmp_${random()}`)
|
|
43
|
-
this.funcDistPath = path.join(this.tmpPath, this.name)
|
|
44
|
-
// 生成存放 zip 文件的文件夹
|
|
45
|
-
await makeDir(this.funcDistPath)
|
|
46
|
-
const zipPath = path.resolve(this.funcDistPath, 'dist.zip')
|
|
47
|
-
// 生成 zip 文件
|
|
48
|
-
|
|
49
|
-
await zipDir(this.funcPath, zipPath, this.ignore)
|
|
50
|
-
// 将 zip 文件转换成 base64
|
|
51
|
-
const base64 = fs.readFileSync(zipPath).toString('base64')
|
|
52
|
-
// 清除打包文件
|
|
53
|
-
this.clean()
|
|
54
|
-
return base64
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// 获取 Java 代码
|
|
58
|
-
getJavaFileCode() {
|
|
59
|
-
const { funcPath } = this
|
|
60
|
-
// Java 代码为 jar 或 zip 包
|
|
61
|
-
const jarExist = checkFullAccess(`${funcPath}.jar`)
|
|
62
|
-
const zipExist = checkFullAccess(`${funcPath}.zip`)
|
|
63
|
-
if (!jarExist && !zipExist) {
|
|
64
|
-
return null
|
|
65
|
-
}
|
|
66
|
-
const packagePath = jarExist ? `${funcPath}.jar` : `${funcPath}.zip`
|
|
67
|
-
return fs.readFileSync(packagePath).toString('base64')
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async build(type: CodeType) {
|
|
71
|
-
if (type === CodeType.JavaFile) {
|
|
72
|
-
try {
|
|
73
|
-
const code = await this.getJavaFileCode()
|
|
74
|
-
return code
|
|
75
|
-
} catch (error) {
|
|
76
|
-
this.clean()
|
|
77
|
-
throw new CloudBaseError(`函数代码打包失败:\n ${error.message}`)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (type === CodeType.File) {
|
|
82
|
-
try {
|
|
83
|
-
const code = await this.getFileCode()
|
|
84
|
-
return code
|
|
85
|
-
} catch (error) {
|
|
86
|
-
this.clean()
|
|
87
|
-
throw new CloudBaseError(`函数代码打包失败:\n ${error.message}`)
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
clean() {
|
|
93
|
-
// allow deleting the current working directory and outside
|
|
94
|
-
this.funcDistPath && del.sync([this.funcDistPath], { force: true })
|
|
95
|
-
this.tmpPath && del.sync([this.tmpPath], { force: true })
|
|
96
|
-
}
|
|
97
|
-
}
|
|
1
|
+
import fs from 'fs'
|
|
2
|
+
import del from 'del'
|
|
3
|
+
import path from 'path'
|
|
4
|
+
import makeDir from 'make-dir'
|
|
5
|
+
import { random } from './tools'
|
|
6
|
+
import { CloudBaseError, zipDir, checkFullAccess } from '@cloudbase/toolbox'
|
|
7
|
+
|
|
8
|
+
export enum CodeType {
|
|
9
|
+
File,
|
|
10
|
+
JavaFile
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 将函数代码转换成 Base64 编码
|
|
15
|
+
* 普通文件:Node,PHP
|
|
16
|
+
* Java 文件:Jar,ZIP
|
|
17
|
+
*/
|
|
18
|
+
export class FunctionPacker {
|
|
19
|
+
// 项目根目录
|
|
20
|
+
root: string
|
|
21
|
+
// 函数名
|
|
22
|
+
name: string
|
|
23
|
+
// 代码文件类型
|
|
24
|
+
type: CodeType
|
|
25
|
+
funcPath: string
|
|
26
|
+
funcDistPath: string
|
|
27
|
+
// 临时目录
|
|
28
|
+
tmpPath: string
|
|
29
|
+
// 忽略文件模式
|
|
30
|
+
ignore: string | string[]
|
|
31
|
+
|
|
32
|
+
constructor(root: string, name: string, ignore: string | string[]) {
|
|
33
|
+
this.name = name
|
|
34
|
+
this.root = root
|
|
35
|
+
this.ignore = ignore
|
|
36
|
+
this.funcPath = path.join(root, name)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async getFileCode() {
|
|
40
|
+
checkFullAccess(this.funcPath, true)
|
|
41
|
+
// 构建临时文件夹存放函数打包结果
|
|
42
|
+
this.tmpPath = path.join(this.root, `.cloudbase_tmp_${random()}`)
|
|
43
|
+
this.funcDistPath = path.join(this.tmpPath, this.name)
|
|
44
|
+
// 生成存放 zip 文件的文件夹
|
|
45
|
+
await makeDir(this.funcDistPath)
|
|
46
|
+
const zipPath = path.resolve(this.funcDistPath, 'dist.zip')
|
|
47
|
+
// 生成 zip 文件
|
|
48
|
+
|
|
49
|
+
await zipDir(this.funcPath, zipPath, this.ignore)
|
|
50
|
+
// 将 zip 文件转换成 base64
|
|
51
|
+
const base64 = fs.readFileSync(zipPath).toString('base64')
|
|
52
|
+
// 清除打包文件
|
|
53
|
+
this.clean()
|
|
54
|
+
return base64
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// 获取 Java 代码
|
|
58
|
+
getJavaFileCode() {
|
|
59
|
+
const { funcPath } = this
|
|
60
|
+
// Java 代码为 jar 或 zip 包
|
|
61
|
+
const jarExist = checkFullAccess(`${funcPath}.jar`)
|
|
62
|
+
const zipExist = checkFullAccess(`${funcPath}.zip`)
|
|
63
|
+
if (!jarExist && !zipExist) {
|
|
64
|
+
return null
|
|
65
|
+
}
|
|
66
|
+
const packagePath = jarExist ? `${funcPath}.jar` : `${funcPath}.zip`
|
|
67
|
+
return fs.readFileSync(packagePath).toString('base64')
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async build(type: CodeType) {
|
|
71
|
+
if (type === CodeType.JavaFile) {
|
|
72
|
+
try {
|
|
73
|
+
const code = await this.getJavaFileCode()
|
|
74
|
+
return code
|
|
75
|
+
} catch (error) {
|
|
76
|
+
this.clean()
|
|
77
|
+
throw new CloudBaseError(`函数代码打包失败:\n ${error.message}`)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (type === CodeType.File) {
|
|
82
|
+
try {
|
|
83
|
+
const code = await this.getFileCode()
|
|
84
|
+
return code
|
|
85
|
+
} catch (error) {
|
|
86
|
+
this.clean()
|
|
87
|
+
throw new CloudBaseError(`函数代码打包失败:\n ${error.message}`)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
clean() {
|
|
93
|
+
// allow deleting the current working directory and outside
|
|
94
|
+
this.funcDistPath && del.sync([this.funcDistPath], { force: true })
|
|
95
|
+
this.tmpPath && del.sync([this.tmpPath], { force: true })
|
|
96
|
+
}
|
|
97
|
+
}
|
package/src/utils/index.ts
CHANGED
|
@@ -18,4 +18,8 @@ export * from './config'
|
|
|
18
18
|
export * from './auth'
|
|
19
19
|
export * from './store'
|
|
20
20
|
export * from './notice'
|
|
21
|
-
export * from './parallel'
|
|
21
|
+
export * from './parallel'
|
|
22
|
+
|
|
23
|
+
export * from './tcbrApi'
|
|
24
|
+
export * from './checkTcbrEnv'
|
|
25
|
+
export * from './commonParamsCheck'
|
package/src/utils/log.ts
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
import chalk from 'chalk'
|
|
2
|
-
import logSymbols from 'log-symbols'
|
|
3
|
-
import { format } from 'util'
|
|
4
|
-
import { Console } from 'console'
|
|
5
|
-
import terminalLink from 'terminal-link'
|
|
6
|
-
|
|
7
|
-
export class Logger {
|
|
8
|
-
c = {
|
|
9
|
-
_times: new Map(),
|
|
10
|
-
log(a: string, ...args: string[]) {
|
|
11
|
-
this.debug(format(a, ...args))
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
verboseEnabled: boolean
|
|
16
|
-
|
|
17
|
-
constructor(options: { verbose?: boolean } = {}) {
|
|
18
|
-
const { verbose } = options
|
|
19
|
-
this.verboseEnabled = verbose
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
breakLine() {
|
|
23
|
-
console.log()
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
log(...args) {
|
|
27
|
-
console.log(...args)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
info(msg: string) {
|
|
31
|
-
console.log(`${logSymbols.info} ${msg}`)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
success(msg: string) {
|
|
35
|
-
console.log(`${logSymbols.success} ${msg}`)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
warn(msg: string) {
|
|
39
|
-
console.log(`${logSymbols.warning} ${msg}`)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
error(msg: string) {
|
|
43
|
-
console.log(`${logSymbols.error} ${msg}`)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
verbose(...args: any) {
|
|
47
|
-
if (this.verboseEnabled) {
|
|
48
|
-
const msg = args.join(' ▶️ ')
|
|
49
|
-
console.log(
|
|
50
|
-
`${chalk.bold('[debug]')} ${chalk.gray(`[${new Date().toISOString()}]`)} ${msg}`
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
genClickableLink(link: string) {
|
|
56
|
-
if (terminalLink.isSupported) {
|
|
57
|
-
const clickablelink = terminalLink(link, link)
|
|
58
|
-
return chalk.bold.cyan(clickablelink)
|
|
59
|
-
}
|
|
60
|
-
return chalk.bold.underline.cyan(link)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
printClickableLink(link: string) {
|
|
64
|
-
const clickLink = this.genClickableLink(link)
|
|
65
|
-
this.info(clickLink)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async time(label: string, fn: Promise<any> | (() => Promise<any>)) {
|
|
69
|
-
const promise = typeof fn === 'function' ? fn() : fn
|
|
70
|
-
if (this.verboseEnabled) {
|
|
71
|
-
this.c.log(label)
|
|
72
|
-
Console.prototype.time.call(this.c, label)
|
|
73
|
-
const r = await promise
|
|
74
|
-
Console.prototype.timeEnd.call(this.c, label)
|
|
75
|
-
return r
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return promise
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
1
|
+
import chalk from 'chalk'
|
|
2
|
+
import logSymbols from 'log-symbols'
|
|
3
|
+
import { format } from 'util'
|
|
4
|
+
import { Console } from 'console'
|
|
5
|
+
import terminalLink from 'terminal-link'
|
|
6
|
+
|
|
7
|
+
export class Logger {
|
|
8
|
+
c = {
|
|
9
|
+
_times: new Map(),
|
|
10
|
+
log(a: string, ...args: string[]) {
|
|
11
|
+
this.debug(format(a, ...args))
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
verboseEnabled: boolean
|
|
16
|
+
|
|
17
|
+
constructor(options: { verbose?: boolean } = {}) {
|
|
18
|
+
const { verbose } = options
|
|
19
|
+
this.verboseEnabled = verbose
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
breakLine() {
|
|
23
|
+
console.log()
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
log(...args) {
|
|
27
|
+
console.log(...args)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
info(msg: string) {
|
|
31
|
+
console.log(`${logSymbols.info} ${msg}`)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
success(msg: string) {
|
|
35
|
+
console.log(`${logSymbols.success} ${msg}`)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
warn(msg: string) {
|
|
39
|
+
console.log(`${logSymbols.warning} ${msg}`)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
error(msg: string) {
|
|
43
|
+
console.log(`${logSymbols.error} ${msg}`)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
verbose(...args: any) {
|
|
47
|
+
if (this.verboseEnabled) {
|
|
48
|
+
const msg = args.join(' ▶️ ')
|
|
49
|
+
console.log(
|
|
50
|
+
`${chalk.bold('[debug]')} ${chalk.gray(`[${new Date().toISOString()}]`)} ${msg}`
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
genClickableLink(link: string) {
|
|
56
|
+
if (terminalLink.isSupported) {
|
|
57
|
+
const clickablelink = terminalLink(link, link)
|
|
58
|
+
return chalk.bold.cyan(clickablelink)
|
|
59
|
+
}
|
|
60
|
+
return chalk.bold.underline.cyan(link)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
printClickableLink(link: string) {
|
|
64
|
+
const clickLink = this.genClickableLink(link)
|
|
65
|
+
this.info(clickLink)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async time(label: string, fn: Promise<any> | (() => Promise<any>)) {
|
|
69
|
+
const promise = typeof fn === 'function' ? fn() : fn
|
|
70
|
+
if (this.verboseEnabled) {
|
|
71
|
+
this.c.log(label)
|
|
72
|
+
Console.prototype.time.call(this.c, label)
|
|
73
|
+
const r = await promise
|
|
74
|
+
Console.prototype.timeEnd.call(this.c, label)
|
|
75
|
+
return r
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return promise
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
82
|
export const logger = new Logger()
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import { getCredentialWithoutCheck, getRegion, Credential, getProxy } from '@cloudbase/toolbox'
|
|
2
|
-
import { CloudApiService as _CloudApiService } from '@cloudbase/cloud-api'
|
|
3
|
-
import { CloudBaseError } from '../../error'
|
|
4
|
-
import { REQUEST_TIMEOUT } from '../../constant'
|
|
5
|
-
|
|
6
|
-
let commonCredential: Credential
|
|
7
|
-
|
|
8
|
-
// token 将在 n 分钟内过期
|
|
9
|
-
const isTokenExpired = (credential: Credential, gap = 120) =>
|
|
10
|
-
credential.accessTokenExpired && Number(credential.accessTokenExpired) < Date.now() + gap * 1000
|
|
11
|
-
|
|
12
|
-
export class CloudApiService {
|
|
13
|
-
// 缓存请求实例
|
|
14
|
-
static serviceCacheMap: Record<string, CloudApiService> = {}
|
|
15
|
-
|
|
16
|
-
// 单例模式
|
|
17
|
-
static getInstance(service: string) {
|
|
18
|
-
if (CloudApiService.serviceCacheMap?.[service]) {
|
|
19
|
-
return CloudApiService.serviceCacheMap[service]
|
|
20
|
-
}
|
|
21
|
-
const apiService = new CloudApiService(service)
|
|
22
|
-
CloudApiService.serviceCacheMap[service] = apiService
|
|
23
|
-
return apiService
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
region: string
|
|
27
|
-
apiService: _CloudApiService
|
|
28
|
-
|
|
29
|
-
constructor(service: string, baseParams?: Record<string, any>, version = '') {
|
|
30
|
-
// 初始化 API 实例
|
|
31
|
-
this.apiService = new _CloudApiService({
|
|
32
|
-
service,
|
|
33
|
-
version: service === 'tcr' ? version : '2019-09-24',
|
|
34
|
-
baseParams,
|
|
35
|
-
proxy: getProxy(),
|
|
36
|
-
timeout: REQUEST_TIMEOUT,
|
|
37
|
-
getCredential: async () => {
|
|
38
|
-
// 存在未过期的 token
|
|
39
|
-
if (commonCredential?.secretId && !isTokenExpired(commonCredential)) {
|
|
40
|
-
return commonCredential
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const credential = await getCredentialWithoutCheck()
|
|
44
|
-
if (!credential) {
|
|
45
|
-
throw new CloudBaseError('无有效身份信息,请使用 cloudbase login 登录')
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
commonCredential = credential
|
|
49
|
-
|
|
50
|
-
return {
|
|
51
|
-
...credential,
|
|
52
|
-
tokenExpired: Number(credential.accessTokenExpired)
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
})
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async request(action: string, data: Record<string, any> = {}, method: 'POST' | 'GET' = 'POST') {
|
|
59
|
-
const region = this.region || (await getRegion())
|
|
60
|
-
return this.apiService.request({ action, data, method, region })
|
|
61
|
-
}
|
|
62
|
-
}
|
|
1
|
+
import { getCredentialWithoutCheck, getRegion, Credential, getProxy } from '@cloudbase/toolbox'
|
|
2
|
+
import { CloudApiService as _CloudApiService } from '@cloudbase/cloud-api'
|
|
3
|
+
import { CloudBaseError } from '../../error'
|
|
4
|
+
import { REQUEST_TIMEOUT } from '../../constant'
|
|
5
|
+
|
|
6
|
+
let commonCredential: Credential
|
|
7
|
+
|
|
8
|
+
// token 将在 n 分钟内过期
|
|
9
|
+
const isTokenExpired = (credential: Credential, gap = 120) =>
|
|
10
|
+
credential.accessTokenExpired && Number(credential.accessTokenExpired) < Date.now() + gap * 1000
|
|
11
|
+
|
|
12
|
+
export class CloudApiService {
|
|
13
|
+
// 缓存请求实例
|
|
14
|
+
static serviceCacheMap: Record<string, CloudApiService> = {}
|
|
15
|
+
|
|
16
|
+
// 单例模式
|
|
17
|
+
static getInstance(service: string) {
|
|
18
|
+
if (CloudApiService.serviceCacheMap?.[service]) {
|
|
19
|
+
return CloudApiService.serviceCacheMap[service]
|
|
20
|
+
}
|
|
21
|
+
const apiService = new CloudApiService(service)
|
|
22
|
+
CloudApiService.serviceCacheMap[service] = apiService
|
|
23
|
+
return apiService
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
region: string
|
|
27
|
+
apiService: _CloudApiService
|
|
28
|
+
|
|
29
|
+
constructor(service: string, baseParams?: Record<string, any>, version = '') {
|
|
30
|
+
// 初始化 API 实例
|
|
31
|
+
this.apiService = new _CloudApiService({
|
|
32
|
+
service,
|
|
33
|
+
version: service === 'tcr' ? version : '2019-09-24',
|
|
34
|
+
baseParams,
|
|
35
|
+
proxy: getProxy(),
|
|
36
|
+
timeout: REQUEST_TIMEOUT,
|
|
37
|
+
getCredential: async () => {
|
|
38
|
+
// 存在未过期的 token
|
|
39
|
+
if (commonCredential?.secretId && !isTokenExpired(commonCredential)) {
|
|
40
|
+
return commonCredential
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const credential = await getCredentialWithoutCheck()
|
|
44
|
+
if (!credential) {
|
|
45
|
+
throw new CloudBaseError('无有效身份信息,请使用 cloudbase login 登录')
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
commonCredential = credential
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
...credential,
|
|
52
|
+
tokenExpired: Number(credential.accessTokenExpired)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async request(action: string, data: Record<string, any> = {}, method: 'POST' | 'GET' = 'POST') {
|
|
59
|
+
const region = this.region || (await getRegion())
|
|
60
|
+
return this.apiService.request({ action, data, method, region })
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import _ from 'lodash'
|
|
2
|
-
import { checkAndGetCredential as _getCredentail } from '@cloudbase/toolbox'
|
|
3
|
-
import { CloudBaseError } from '../../error'
|
|
4
|
-
import { REQUEST_TIMEOUT } from '../../constant'
|
|
5
|
-
import { Credential, AuthSecret } from '../../types'
|
|
6
|
-
|
|
7
|
-
import { md5 } from '../tools'
|
|
8
|
-
import { getMacAddress } from '../platform'
|
|
9
|
-
import { getProxy } from './proxy'
|
|
10
|
-
import { fetch } from './http-request'
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const refreshTokenUrl = 'https://iaas.cloud.tencent.com/tcb_refresh'
|
|
14
|
-
|
|
15
|
-
// 临时密钥过期后,进行续期
|
|
16
|
-
export async function refreshTmpToken(
|
|
17
|
-
metaData: Credential & { isLogout?: boolean }
|
|
18
|
-
): Promise<Credential> {
|
|
19
|
-
const mac = await getMacAddress()
|
|
20
|
-
const hash = md5(mac)
|
|
21
|
-
metaData.hash = hash
|
|
22
|
-
|
|
23
|
-
const res = await fetch(refreshTokenUrl, {
|
|
24
|
-
method: 'POST',
|
|
25
|
-
body: JSON.stringify(metaData),
|
|
26
|
-
headers: { 'Content-Type': 'application/json' }
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
if (res.code !== 0) {
|
|
30
|
-
throw new CloudBaseError(res.message, {
|
|
31
|
-
code: res.code
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const { data: credential } = res
|
|
36
|
-
return credential
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export async function checkAndGetCredential(throwError = false): Promise<AuthSecret> {
|
|
40
|
-
const credential = await _getCredentail({
|
|
41
|
-
proxy: getProxy(),
|
|
42
|
-
timeout: REQUEST_TIMEOUT
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
if (!credential || _.isEmpty(credential)) {
|
|
46
|
-
if (throwError) {
|
|
47
|
-
throw new CloudBaseError('无有效身份信息,请使用 cloudbase login 登录')
|
|
48
|
-
}
|
|
49
|
-
return null
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return credential
|
|
53
|
-
}
|
|
1
|
+
import _ from 'lodash'
|
|
2
|
+
import { checkAndGetCredential as _getCredentail } from '@cloudbase/toolbox'
|
|
3
|
+
import { CloudBaseError } from '../../error'
|
|
4
|
+
import { REQUEST_TIMEOUT } from '../../constant'
|
|
5
|
+
import { Credential, AuthSecret } from '../../types'
|
|
6
|
+
|
|
7
|
+
import { md5 } from '../tools'
|
|
8
|
+
import { getMacAddress } from '../platform'
|
|
9
|
+
import { getProxy } from './proxy'
|
|
10
|
+
import { fetch } from './http-request'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const refreshTokenUrl = 'https://iaas.cloud.tencent.com/tcb_refresh'
|
|
14
|
+
|
|
15
|
+
// 临时密钥过期后,进行续期
|
|
16
|
+
export async function refreshTmpToken(
|
|
17
|
+
metaData: Credential & { isLogout?: boolean }
|
|
18
|
+
): Promise<Credential> {
|
|
19
|
+
const mac = await getMacAddress()
|
|
20
|
+
const hash = md5(mac)
|
|
21
|
+
metaData.hash = hash
|
|
22
|
+
|
|
23
|
+
const res = await fetch(refreshTokenUrl, {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
body: JSON.stringify(metaData),
|
|
26
|
+
headers: { 'Content-Type': 'application/json' }
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
if (res.code !== 0) {
|
|
30
|
+
throw new CloudBaseError(res.message, {
|
|
31
|
+
code: res.code
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const { data: credential } = res
|
|
36
|
+
return credential
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export async function checkAndGetCredential(throwError = false): Promise<AuthSecret> {
|
|
40
|
+
const credential = await _getCredentail({
|
|
41
|
+
proxy: getProxy(),
|
|
42
|
+
timeout: REQUEST_TIMEOUT
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
if (!credential || _.isEmpty(credential)) {
|
|
46
|
+
if (throwError) {
|
|
47
|
+
throw new CloudBaseError('无有效身份信息,请使用 cloudbase login 登录')
|
|
48
|
+
}
|
|
49
|
+
return null
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return credential
|
|
53
|
+
}
|