@cloudbase/cli 2.0.3 → 2.0.4-alpha.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/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/storage/storage.js +1 -1
- package/lib/env/login.js +7 -7
- package/package.json +2 -2
- 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/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/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
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { Command } from '../common'
|
|
2
|
-
import { loadingFactory } from '../../utils'
|
|
3
|
-
import { deleteThirdPartAttach } from '../../third'
|
|
4
|
-
import { InjectParams, ArgsOptions } from '../../decorators'
|
|
5
|
-
|
|
6
|
-
export class DeleteThirdAttach extends Command {
|
|
7
|
-
get options() {
|
|
8
|
-
return {
|
|
9
|
-
cmd: 'third',
|
|
10
|
-
childCmd: 'deleteThirdAttach',
|
|
11
|
-
deprecateCmd: 'third:deleteThirdAttach',
|
|
12
|
-
options: [
|
|
13
|
-
{
|
|
14
|
-
flags: '--source <source>',
|
|
15
|
-
desc: '第三方来源'
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
flags: '--thirdAppId <thirdAppId>',
|
|
19
|
-
desc: '第三方appId'
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
desc: '解除第三方绑定',
|
|
23
|
-
requiredEnvId: false
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@InjectParams()
|
|
28
|
-
async execute(@ArgsOptions() options) {
|
|
29
|
-
const { source, thirdAppId } = options
|
|
30
|
-
|
|
31
|
-
let typeFlag
|
|
32
|
-
if (source === 'qq') {
|
|
33
|
-
typeFlag = 1
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (!typeFlag) {
|
|
37
|
-
throw new Error('请指定对应的source')
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const loading = loadingFactory()
|
|
41
|
-
loading.start('数据加载中...')
|
|
42
|
-
const data = await deleteThirdPartAttach({
|
|
43
|
-
TypeFlag: typeFlag,
|
|
44
|
-
ThirdPartAppid: thirdAppId
|
|
45
|
-
})
|
|
46
|
-
loading.stop()
|
|
47
|
-
console.log(data)
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
import { Command } from '../common'
|
|
2
|
+
import { loadingFactory } from '../../utils'
|
|
3
|
+
import { deleteThirdPartAttach } from '../../third'
|
|
4
|
+
import { InjectParams, ArgsOptions } from '../../decorators'
|
|
5
|
+
|
|
6
|
+
export class DeleteThirdAttach extends Command {
|
|
7
|
+
get options() {
|
|
8
|
+
return {
|
|
9
|
+
cmd: 'third',
|
|
10
|
+
childCmd: 'deleteThirdAttach',
|
|
11
|
+
deprecateCmd: 'third:deleteThirdAttach',
|
|
12
|
+
options: [
|
|
13
|
+
{
|
|
14
|
+
flags: '--source <source>',
|
|
15
|
+
desc: '第三方来源'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
flags: '--thirdAppId <thirdAppId>',
|
|
19
|
+
desc: '第三方appId'
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
desc: '解除第三方绑定',
|
|
23
|
+
requiredEnvId: false
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@InjectParams()
|
|
28
|
+
async execute(@ArgsOptions() options) {
|
|
29
|
+
const { source, thirdAppId } = options
|
|
30
|
+
|
|
31
|
+
let typeFlag
|
|
32
|
+
if (source === 'qq') {
|
|
33
|
+
typeFlag = 1
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (!typeFlag) {
|
|
37
|
+
throw new Error('请指定对应的source')
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const loading = loadingFactory()
|
|
41
|
+
loading.start('数据加载中...')
|
|
42
|
+
const data = await deleteThirdPartAttach({
|
|
43
|
+
TypeFlag: typeFlag,
|
|
44
|
+
ThirdPartAppid: thirdAppId
|
|
45
|
+
})
|
|
46
|
+
loading.stop()
|
|
47
|
+
console.log(data)
|
|
48
|
+
}
|
|
49
|
+
}
|
package/src/completion/index.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ALL_COMMANDS } from '../constant'
|
|
2
|
-
|
|
3
|
-
export function handleCompletion({ reply, line }) {
|
|
4
|
-
// 命令
|
|
5
|
-
const cmd = line.replace(/^cloudbase\s|^tcb\s/, '')
|
|
6
|
-
|
|
7
|
-
const commands = ALL_COMMANDS.filter(item => item.indexOf(cmd) > -1)
|
|
8
|
-
if (commands.length > 0) {
|
|
9
|
-
reply(commands)
|
|
10
|
-
} else {
|
|
11
|
-
reply(['-h', '-v'])
|
|
12
|
-
}
|
|
13
|
-
}
|
|
1
|
+
import { ALL_COMMANDS } from '../constant'
|
|
2
|
+
|
|
3
|
+
export function handleCompletion({ reply, line }) {
|
|
4
|
+
// 命令
|
|
5
|
+
const cmd = line.replace(/^cloudbase\s|^tcb\s/, '')
|
|
6
|
+
|
|
7
|
+
const commands = ALL_COMMANDS.filter(item => item.indexOf(cmd) > -1)
|
|
8
|
+
if (commands.length > 0) {
|
|
9
|
+
reply(commands)
|
|
10
|
+
} else {
|
|
11
|
+
reply(['-h', '-v'])
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 捕获操作发生的异常,显示错误提示,并在输出中显示详细的错误堆栈信息
|
|
3
|
-
*/
|
|
4
|
-
export const CaptureError = (): MethodDecorator => (
|
|
5
|
-
target: any,
|
|
6
|
-
key: string | symbol,
|
|
7
|
-
descriptor: TypedPropertyDescriptor<any>
|
|
8
|
-
) => {
|
|
9
|
-
const rawFunc: Function = descriptor.value
|
|
10
|
-
|
|
11
|
-
descriptor.value = async function (...args) {
|
|
12
|
-
try {
|
|
13
|
-
const res = await rawFunc.apply(this, args)
|
|
14
|
-
return res
|
|
15
|
-
} catch (e) {
|
|
16
|
-
const errMsg =
|
|
17
|
-
e?.message ||
|
|
18
|
-
(typeof e?.toString === 'function' ? e.toString() : '') ||
|
|
19
|
-
'Unknown Error'
|
|
20
|
-
// output.showErrorWithMessage(errMsg, e?.stack || errMsg)
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return descriptor
|
|
25
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 捕获操作发生的异常,显示错误提示,并在输出中显示详细的错误堆栈信息
|
|
3
|
+
*/
|
|
4
|
+
export const CaptureError = (): MethodDecorator => (
|
|
5
|
+
target: any,
|
|
6
|
+
key: string | symbol,
|
|
7
|
+
descriptor: TypedPropertyDescriptor<any>
|
|
8
|
+
) => {
|
|
9
|
+
const rawFunc: Function = descriptor.value
|
|
10
|
+
|
|
11
|
+
descriptor.value = async function (...args) {
|
|
12
|
+
try {
|
|
13
|
+
const res = await rawFunc.apply(this, args)
|
|
14
|
+
return res
|
|
15
|
+
} catch (e) {
|
|
16
|
+
const errMsg =
|
|
17
|
+
e?.message ||
|
|
18
|
+
(typeof e?.toString === 'function' ? e.toString() : '') ||
|
|
19
|
+
'Unknown Error'
|
|
20
|
+
// output.showErrorWithMessage(errMsg, e?.stack || errMsg)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return descriptor
|
|
25
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export const PARAM_METADATA = 'PARAM_METADATA'
|
|
2
|
-
|
|
3
|
-
export enum ParamTypes {
|
|
4
|
-
Credential = '__Credential__',
|
|
5
|
-
Log = '__Log__',
|
|
6
|
-
// 参数选项
|
|
7
|
-
CmdContext = '__CmdContext__',
|
|
8
|
-
EnvId = '__EnvId__',
|
|
9
|
-
Config = '__Config__',
|
|
10
|
-
ArgsOptions = '__ArgsOptions__',
|
|
11
|
-
ArgsParams = '__ArgsParams__'
|
|
12
|
-
}
|
|
1
|
+
export const PARAM_METADATA = 'PARAM_METADATA'
|
|
2
|
+
|
|
3
|
+
export enum ParamTypes {
|
|
4
|
+
Credential = '__Credential__',
|
|
5
|
+
Log = '__Log__',
|
|
6
|
+
// 参数选项
|
|
7
|
+
CmdContext = '__CmdContext__',
|
|
8
|
+
EnvId = '__EnvId__',
|
|
9
|
+
Config = '__Config__',
|
|
10
|
+
ArgsOptions = '__ArgsOptions__',
|
|
11
|
+
ArgsParams = '__ArgsParams__'
|
|
12
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { Logger } from '../utils'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 废弃命令
|
|
5
|
-
* @param tip
|
|
6
|
-
*/
|
|
7
|
-
export const Deprecate = (options: { tip: string; allowExecute: boolean }): MethodDecorator => (
|
|
8
|
-
target: any,
|
|
9
|
-
key: string,
|
|
10
|
-
descriptor: TypedPropertyDescriptor<any>
|
|
11
|
-
) => {
|
|
12
|
-
const { tip, allowExecute } = options
|
|
13
|
-
const rawFunc: Function = descriptor.value
|
|
14
|
-
|
|
15
|
-
descriptor.value = function (...args) {
|
|
16
|
-
const log = new Logger()
|
|
17
|
-
log.error(tip || '此命令已废弃!')
|
|
18
|
-
|
|
19
|
-
if (allowExecute) {
|
|
20
|
-
rawFunc.apply(this, args)
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return descriptor
|
|
25
|
-
}
|
|
1
|
+
import { Logger } from '../utils'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 废弃命令
|
|
5
|
+
* @param tip
|
|
6
|
+
*/
|
|
7
|
+
export const Deprecate = (options: { tip: string; allowExecute: boolean }): MethodDecorator => (
|
|
8
|
+
target: any,
|
|
9
|
+
key: string,
|
|
10
|
+
descriptor: TypedPropertyDescriptor<any>
|
|
11
|
+
) => {
|
|
12
|
+
const { tip, allowExecute } = options
|
|
13
|
+
const rawFunc: Function = descriptor.value
|
|
14
|
+
|
|
15
|
+
descriptor.value = function (...args) {
|
|
16
|
+
const log = new Logger()
|
|
17
|
+
log.error(tip || '此命令已废弃!')
|
|
18
|
+
|
|
19
|
+
if (allowExecute) {
|
|
20
|
+
rawFunc.apply(this, args)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return descriptor
|
|
25
|
+
}
|
package/src/decorators/guard.ts
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { authSupevisor, getCloudBaseConfig } from '../utils'
|
|
2
|
-
|
|
3
|
-
export interface AuthGuardOptions {
|
|
4
|
-
// 无法通过 guard 认证时的提示信息
|
|
5
|
-
tips?: string
|
|
6
|
-
// 校验配置文件是否存在
|
|
7
|
-
ensureConfig?: boolean
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Auth 装饰器,用于在执行操作前检验是否登录
|
|
12
|
-
* 没有登录时,终止操作,显示登录提示
|
|
13
|
-
*/
|
|
14
|
-
export const AuthGuard = (options: AuthGuardOptions = {}): MethodDecorator => (
|
|
15
|
-
target: any,
|
|
16
|
-
key: string | symbol,
|
|
17
|
-
descriptor: TypedPropertyDescriptor<any>
|
|
18
|
-
) => {
|
|
19
|
-
const { tips, ensureConfig = true } = options
|
|
20
|
-
const rawFunc: Function = descriptor.value
|
|
21
|
-
// 修改原函数行为
|
|
22
|
-
descriptor.value = async function (...args) {
|
|
23
|
-
const credential = target?.credential
|
|
24
|
-
const loginState = await authSupevisor.getLoginState()
|
|
25
|
-
|
|
26
|
-
// 未登录,终止运行
|
|
27
|
-
if (!credential && !loginState) {
|
|
28
|
-
return
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (ensureConfig) {
|
|
32
|
-
const config = await getCloudBaseConfig()
|
|
33
|
-
if (!config?.envId) {
|
|
34
|
-
return
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return rawFunc.apply(this, args)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return descriptor
|
|
42
|
-
}
|
|
1
|
+
import { authSupevisor, getCloudBaseConfig } from '../utils'
|
|
2
|
+
|
|
3
|
+
export interface AuthGuardOptions {
|
|
4
|
+
// 无法通过 guard 认证时的提示信息
|
|
5
|
+
tips?: string
|
|
6
|
+
// 校验配置文件是否存在
|
|
7
|
+
ensureConfig?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Auth 装饰器,用于在执行操作前检验是否登录
|
|
12
|
+
* 没有登录时,终止操作,显示登录提示
|
|
13
|
+
*/
|
|
14
|
+
export const AuthGuard = (options: AuthGuardOptions = {}): MethodDecorator => (
|
|
15
|
+
target: any,
|
|
16
|
+
key: string | symbol,
|
|
17
|
+
descriptor: TypedPropertyDescriptor<any>
|
|
18
|
+
) => {
|
|
19
|
+
const { tips, ensureConfig = true } = options
|
|
20
|
+
const rawFunc: Function = descriptor.value
|
|
21
|
+
// 修改原函数行为
|
|
22
|
+
descriptor.value = async function (...args) {
|
|
23
|
+
const credential = target?.credential
|
|
24
|
+
const loginState = await authSupevisor.getLoginState()
|
|
25
|
+
|
|
26
|
+
// 未登录,终止运行
|
|
27
|
+
if (!credential && !loginState) {
|
|
28
|
+
return
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (ensureConfig) {
|
|
32
|
+
const config = await getCloudBaseConfig()
|
|
33
|
+
if (!config?.envId) {
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return rawFunc.apply(this, args)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return descriptor
|
|
42
|
+
}
|
package/src/decorators/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './params'
|
|
2
|
-
export * from './guard'
|
|
3
|
-
export * from './injectParams'
|
|
4
|
-
export * from './captureError'
|
|
5
|
-
export * from './params/'
|
|
6
|
-
export * from './deprecate'
|
|
7
|
-
export { Logger } from '../utils'
|
|
1
|
+
export * from './params'
|
|
2
|
+
export * from './guard'
|
|
3
|
+
export * from './injectParams'
|
|
4
|
+
export * from './captureError'
|
|
5
|
+
export * from './params/'
|
|
6
|
+
export * from './deprecate'
|
|
7
|
+
export { Logger } from '../utils'
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import { PARAM_METADATA, ParamTypes } from './constants'
|
|
2
|
-
import { ICommandContext } from '../types'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 在方法中注入 params 中定义的各种参数
|
|
6
|
-
*/
|
|
7
|
-
export function InjectParams(): MethodDecorator {
|
|
8
|
-
return function (target: any, key: string | symbol, descriptor: TypedPropertyDescriptor<any>) {
|
|
9
|
-
const rawFunc: Function = descriptor.value
|
|
10
|
-
|
|
11
|
-
// 解析需要注入的参数
|
|
12
|
-
const paramMetadata = Reflect.getMetadata(PARAM_METADATA, target[key])
|
|
13
|
-
|
|
14
|
-
if (paramMetadata) {
|
|
15
|
-
descriptor.value = async function (...args) {
|
|
16
|
-
// 命令 context
|
|
17
|
-
const ctx: ICommandContext = args[0] || {}
|
|
18
|
-
|
|
19
|
-
for (const paramKey in paramMetadata) {
|
|
20
|
-
if (Object.prototype.hasOwnProperty.call(paramMetadata, paramKey)) {
|
|
21
|
-
const { getter, index } = paramMetadata[paramKey]
|
|
22
|
-
switch (paramKey) {
|
|
23
|
-
// 从 context 中注入命令行参数
|
|
24
|
-
case ParamTypes.CmdContext:
|
|
25
|
-
args[index] = ctx
|
|
26
|
-
break
|
|
27
|
-
case ParamTypes.Config:
|
|
28
|
-
args[index] = ctx.config
|
|
29
|
-
break
|
|
30
|
-
case ParamTypes.ArgsParams:
|
|
31
|
-
args[index] = ctx.params
|
|
32
|
-
break
|
|
33
|
-
case ParamTypes.ArgsOptions:
|
|
34
|
-
args[index] = ctx.options
|
|
35
|
-
break
|
|
36
|
-
case ParamTypes.EnvId:
|
|
37
|
-
args[index] = ctx.envId
|
|
38
|
-
break
|
|
39
|
-
default: {
|
|
40
|
-
// 注入其他与命令行不相关的参数
|
|
41
|
-
const injectValue = await getter(target)
|
|
42
|
-
args[index] = injectValue
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return rawFunc.apply(this, args)
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return descriptor
|
|
53
|
-
}
|
|
54
|
-
}
|
|
1
|
+
import { PARAM_METADATA, ParamTypes } from './constants'
|
|
2
|
+
import { ICommandContext } from '../types'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 在方法中注入 params 中定义的各种参数
|
|
6
|
+
*/
|
|
7
|
+
export function InjectParams(): MethodDecorator {
|
|
8
|
+
return function (target: any, key: string | symbol, descriptor: TypedPropertyDescriptor<any>) {
|
|
9
|
+
const rawFunc: Function = descriptor.value
|
|
10
|
+
|
|
11
|
+
// 解析需要注入的参数
|
|
12
|
+
const paramMetadata = Reflect.getMetadata(PARAM_METADATA, target[key])
|
|
13
|
+
|
|
14
|
+
if (paramMetadata) {
|
|
15
|
+
descriptor.value = async function (...args) {
|
|
16
|
+
// 命令 context
|
|
17
|
+
const ctx: ICommandContext = args[0] || {}
|
|
18
|
+
|
|
19
|
+
for (const paramKey in paramMetadata) {
|
|
20
|
+
if (Object.prototype.hasOwnProperty.call(paramMetadata, paramKey)) {
|
|
21
|
+
const { getter, index } = paramMetadata[paramKey]
|
|
22
|
+
switch (paramKey) {
|
|
23
|
+
// 从 context 中注入命令行参数
|
|
24
|
+
case ParamTypes.CmdContext:
|
|
25
|
+
args[index] = ctx
|
|
26
|
+
break
|
|
27
|
+
case ParamTypes.Config:
|
|
28
|
+
args[index] = ctx.config
|
|
29
|
+
break
|
|
30
|
+
case ParamTypes.ArgsParams:
|
|
31
|
+
args[index] = ctx.params
|
|
32
|
+
break
|
|
33
|
+
case ParamTypes.ArgsOptions:
|
|
34
|
+
args[index] = ctx.options
|
|
35
|
+
break
|
|
36
|
+
case ParamTypes.EnvId:
|
|
37
|
+
args[index] = ctx.envId
|
|
38
|
+
break
|
|
39
|
+
default: {
|
|
40
|
+
// 注入其他与命令行不相关的参数
|
|
41
|
+
const injectValue = await getter(target)
|
|
42
|
+
args[index] = injectValue
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return rawFunc.apply(this, args)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return descriptor
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { ParamTypes, PARAM_METADATA } from '../constants'
|
|
2
|
-
|
|
3
|
-
type GetterFunction = (target: any) => Promise<any> | any
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 创建参数装饰器
|
|
7
|
-
* @param paramtype 参数类型名
|
|
8
|
-
* @param getter decorator 取值函数
|
|
9
|
-
*/
|
|
10
|
-
export const createParamDecorator = (paramtype: ParamTypes, getter: GetterFunction) => {
|
|
11
|
-
return () => {
|
|
12
|
-
return (target: any, key: string | symbol, index: number) => {
|
|
13
|
-
const data = Reflect.getMetadata(PARAM_METADATA, target[key]) || {}
|
|
14
|
-
|
|
15
|
-
Reflect.defineMetadata(
|
|
16
|
-
PARAM_METADATA,
|
|
17
|
-
{
|
|
18
|
-
...data,
|
|
19
|
-
[paramtype]: {
|
|
20
|
-
index,
|
|
21
|
-
getter
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
target[key]
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
1
|
+
import { ParamTypes, PARAM_METADATA } from '../constants'
|
|
2
|
+
|
|
3
|
+
type GetterFunction = (target: any) => Promise<any> | any
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 创建参数装饰器
|
|
7
|
+
* @param paramtype 参数类型名
|
|
8
|
+
* @param getter decorator 取值函数
|
|
9
|
+
*/
|
|
10
|
+
export const createParamDecorator = (paramtype: ParamTypes, getter: GetterFunction) => {
|
|
11
|
+
return () => {
|
|
12
|
+
return (target: any, key: string | symbol, index: number) => {
|
|
13
|
+
const data = Reflect.getMetadata(PARAM_METADATA, target[key]) || {}
|
|
14
|
+
|
|
15
|
+
Reflect.defineMetadata(
|
|
16
|
+
PARAM_METADATA,
|
|
17
|
+
{
|
|
18
|
+
...data,
|
|
19
|
+
[paramtype]: {
|
|
20
|
+
index,
|
|
21
|
+
getter
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
target[key]
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { createParamDecorator } from './common'
|
|
2
|
-
import { ParamTypes } from '../constants'
|
|
3
|
-
import { authSupevisor, getArgs, Logger } from '../../utils'
|
|
4
|
-
|
|
5
|
-
const EmptyValue = () => {}
|
|
6
|
-
|
|
7
|
-
// 注入登录态信息
|
|
8
|
-
export const Credential = createParamDecorator(ParamTypes.Credential, async () => {
|
|
9
|
-
const credential = await authSupevisor.getLoginState()
|
|
10
|
-
return credential
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
// 日志打印
|
|
14
|
-
export const Log = createParamDecorator(ParamTypes.Log, () => {
|
|
15
|
-
const args = getArgs()
|
|
16
|
-
const verbose = process.VERBOSE || args.verbose
|
|
17
|
-
const log = new Logger({
|
|
18
|
-
verbose
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
return log
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
// 命令行相关
|
|
25
|
-
export const CmdContext = createParamDecorator(ParamTypes.CmdContext, EmptyValue)
|
|
26
|
-
|
|
27
|
-
export const ArgsOptions = createParamDecorator(ParamTypes.ArgsOptions, EmptyValue)
|
|
28
|
-
|
|
29
|
-
export const ArgsParams = createParamDecorator(ParamTypes.ArgsParams, EmptyValue)
|
|
30
|
-
|
|
31
|
-
// 获取环境 Id
|
|
32
|
-
export const EnvId = createParamDecorator(ParamTypes.EnvId, EmptyValue)
|
|
33
|
-
|
|
34
|
-
// 注入环境配置
|
|
35
|
-
export const Config = createParamDecorator(ParamTypes.Config, EmptyValue)
|
|
1
|
+
import { createParamDecorator } from './common'
|
|
2
|
+
import { ParamTypes } from '../constants'
|
|
3
|
+
import { authSupevisor, getArgs, Logger } from '../../utils'
|
|
4
|
+
|
|
5
|
+
const EmptyValue = () => {}
|
|
6
|
+
|
|
7
|
+
// 注入登录态信息
|
|
8
|
+
export const Credential = createParamDecorator(ParamTypes.Credential, async () => {
|
|
9
|
+
const credential = await authSupevisor.getLoginState()
|
|
10
|
+
return credential
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
// 日志打印
|
|
14
|
+
export const Log = createParamDecorator(ParamTypes.Log, () => {
|
|
15
|
+
const args = getArgs()
|
|
16
|
+
const verbose = process.VERBOSE || args.verbose
|
|
17
|
+
const log = new Logger({
|
|
18
|
+
verbose
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
return log
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
// 命令行相关
|
|
25
|
+
export const CmdContext = createParamDecorator(ParamTypes.CmdContext, EmptyValue)
|
|
26
|
+
|
|
27
|
+
export const ArgsOptions = createParamDecorator(ParamTypes.ArgsOptions, EmptyValue)
|
|
28
|
+
|
|
29
|
+
export const ArgsParams = createParamDecorator(ParamTypes.ArgsParams, EmptyValue)
|
|
30
|
+
|
|
31
|
+
// 获取环境 Id
|
|
32
|
+
export const EnvId = createParamDecorator(ParamTypes.EnvId, EmptyValue)
|
|
33
|
+
|
|
34
|
+
// 注入环境配置
|
|
35
|
+
export const Config = createParamDecorator(ParamTypes.Config, EmptyValue)
|
package/src/env/domain.ts
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { CloudApiService } from '../utils/net'
|
|
2
|
-
|
|
3
|
-
const tcbService = CloudApiService.getInstance('tcb')
|
|
4
|
-
|
|
5
|
-
// 拉取安全域名列表
|
|
6
|
-
export async function getEnvAuthDomains({ envId }) {
|
|
7
|
-
const { Domains = [] }: any = await tcbService.request(
|
|
8
|
-
'DescribeAuthDomains',
|
|
9
|
-
{
|
|
10
|
-
EnvId: envId
|
|
11
|
-
}
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
return Domains
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// 添加环境安全域名
|
|
18
|
-
export async function createEnvDomain({ envId, domains }) {
|
|
19
|
-
await tcbService.request('CreateAuthDomain', {
|
|
20
|
-
EnvId: envId,
|
|
21
|
-
Domains: domains
|
|
22
|
-
})
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// 删除环境安全域名
|
|
26
|
-
export async function deleteEnvDomain({ envId, domainIds }) {
|
|
27
|
-
const { Deleted }: any = await tcbService.request('DeleteAuthDomain', {
|
|
28
|
-
EnvId: envId,
|
|
29
|
-
DomainIds: domainIds
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
return Deleted
|
|
33
|
-
}
|
|
1
|
+
import { CloudApiService } from '../utils/net'
|
|
2
|
+
|
|
3
|
+
const tcbService = CloudApiService.getInstance('tcb')
|
|
4
|
+
|
|
5
|
+
// 拉取安全域名列表
|
|
6
|
+
export async function getEnvAuthDomains({ envId }) {
|
|
7
|
+
const { Domains = [] }: any = await tcbService.request(
|
|
8
|
+
'DescribeAuthDomains',
|
|
9
|
+
{
|
|
10
|
+
EnvId: envId
|
|
11
|
+
}
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
return Domains
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// 添加环境安全域名
|
|
18
|
+
export async function createEnvDomain({ envId, domains }) {
|
|
19
|
+
await tcbService.request('CreateAuthDomain', {
|
|
20
|
+
EnvId: envId,
|
|
21
|
+
Domains: domains
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// 删除环境安全域名
|
|
26
|
+
export async function deleteEnvDomain({ envId, domainIds }) {
|
|
27
|
+
const { Deleted }: any = await tcbService.request('DeleteAuthDomain', {
|
|
28
|
+
EnvId: envId,
|
|
29
|
+
DomainIds: domainIds
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
return Deleted
|
|
33
|
+
}
|