zcw-shared 1.13.8 → 1.15.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/dist/functions/css/extractCssVariables.js +75 -0
- package/dist/functions/css/extractCssVariables.js.map +1 -1
- package/dist/functions/git/checkBranch.d.ts +30 -0
- package/dist/functions/git/checkBranch.js +71 -0
- package/dist/functions/git/checkBranch.js.map +1 -0
- package/dist/functions/git/checkWorkingDirectory.d.ts +3 -0
- package/dist/functions/git/checkWorkingDirectory.js +41 -0
- package/dist/functions/git/checkWorkingDirectory.js.map +1 -0
- package/dist/functions/git/createGitTag.d.ts +7 -0
- package/dist/functions/git/createGitTag.js +36 -0
- package/dist/functions/git/createGitTag.js.map +1 -0
- package/dist/functions/git/pushToRemote.d.ts +34 -0
- package/dist/functions/git/pushToRemote.js +51 -0
- package/dist/functions/git/pushToRemote.js.map +1 -0
- package/dist/functions/ipc/dispatchIpcRequest.d.ts +11 -1
- package/dist/functions/ipc/dispatchIpcRequest.js +20 -7
- package/dist/functions/ipc/dispatchIpcRequest.js.map +1 -1
- package/dist/functions/package/readPackageInfo.d.ts +3 -0
- package/dist/functions/package/readPackageInfo.js +53 -0
- package/dist/functions/package/readPackageInfo.js.map +1 -0
- package/dist/functions/tencent-cloud/deploy.tcb.d.ts +3 -0
- package/dist/functions/tencent-cloud/deploy.tcb.js +47 -0
- package/dist/functions/tencent-cloud/deploy.tcb.js.map +1 -0
- package/dist/functions/tencent-cloud/getSecret.d.ts +4 -6
- package/dist/functions/tencent-cloud/getSecret.js +1 -0
- package/dist/functions/tencent-cloud/getSecret.js.map +1 -1
- package/dist/functions/version/incrementVersion.d.ts +3 -0
- package/dist/functions/version/incrementVersion.js +57 -0
- package/dist/functions/version/incrementVersion.js.map +1 -0
- package/dist/functions/version/parseVersion.d.ts +4 -0
- package/dist/functions/version/parseVersion.js +35 -0
- package/dist/functions/version/parseVersion.js.map +1 -0
- package/package.json +6 -1
- package/references/tencent-cloud.d.ts +65 -0
- package/types/semver.d.ts +68 -0
- package/types/tencent-cloud.d.ts +44 -0
|
@@ -1,3 +1,64 @@
|
|
|
1
|
+
function detectCodeContext(filePath, text, lineIndex) {
|
|
2
|
+
const fileExt = filePath.toLowerCase().split('.').pop() || '';
|
|
3
|
+
const isStyleFile = ['css', 'scss', 'sass', 'less', 'styl', 'stylus'].includes(fileExt);
|
|
4
|
+
if (isStyleFile) {
|
|
5
|
+
return { isStyleFile: true, isInStyleBlock: true, isInJsBlock: false };
|
|
6
|
+
}
|
|
7
|
+
const isJsFile = ['js', 'ts', 'jsx', 'tsx', 'mjs', 'cjs'].includes(fileExt);
|
|
8
|
+
const lines = text.split('\n');
|
|
9
|
+
const currentLine = lines[lineIndex]?.trim() || '';
|
|
10
|
+
let isInStyleBlock = false;
|
|
11
|
+
let isInJsBlock = false;
|
|
12
|
+
let styleBlockDepth = 0;
|
|
13
|
+
let scriptBlockDepth = 0;
|
|
14
|
+
let isInTemplateString = false;
|
|
15
|
+
if (isJsFile) {
|
|
16
|
+
let templateStringDepth = 0;
|
|
17
|
+
for (let i = 0; i <= lineIndex; i++) {
|
|
18
|
+
const line = lines[i] || '';
|
|
19
|
+
if (line.includes('styled.') || line.includes('css`') || line.includes('styled`')) {
|
|
20
|
+
isInTemplateString = true;
|
|
21
|
+
}
|
|
22
|
+
const backtickCount = (line.match(/`/g) || []).length;
|
|
23
|
+
templateStringDepth += backtickCount;
|
|
24
|
+
if (templateStringDepth % 2 === 0 && i > 0) {
|
|
25
|
+
isInTemplateString = false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (!isInTemplateString) {
|
|
29
|
+
return { isStyleFile: false, isInStyleBlock: false, isInJsBlock: true };
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
isInStyleBlock = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
for (let i = 0; i <= lineIndex; i++) {
|
|
36
|
+
const line = lines[i]?.trim() || '';
|
|
37
|
+
if (line.includes('<style') || line.includes('<style>')) {
|
|
38
|
+
isInStyleBlock = true;
|
|
39
|
+
styleBlockDepth++;
|
|
40
|
+
}
|
|
41
|
+
if (line.includes('</style>')) {
|
|
42
|
+
styleBlockDepth--;
|
|
43
|
+
if (styleBlockDepth <= 0) {
|
|
44
|
+
isInStyleBlock = false;
|
|
45
|
+
styleBlockDepth = 0;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (line.includes('<script') || line.includes('<script>')) {
|
|
49
|
+
isInJsBlock = true;
|
|
50
|
+
scriptBlockDepth++;
|
|
51
|
+
}
|
|
52
|
+
if (line.includes('</script>')) {
|
|
53
|
+
scriptBlockDepth--;
|
|
54
|
+
if (scriptBlockDepth <= 0) {
|
|
55
|
+
isInJsBlock = false;
|
|
56
|
+
scriptBlockDepth = 0;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return { isStyleFile, isInStyleBlock, isInJsBlock };
|
|
61
|
+
}
|
|
1
62
|
export function extractCssVariableUsages(text, filePath, options = {
|
|
2
63
|
includeCss: true,
|
|
3
64
|
includeScss: true,
|
|
@@ -45,6 +106,13 @@ export function extractCssVariableUsages(text, filePath, options = {
|
|
|
45
106
|
}
|
|
46
107
|
}
|
|
47
108
|
if (options.includeLess !== false) {
|
|
109
|
+
const context = detectCodeContext(filePath, text, lineIndex);
|
|
110
|
+
if (!context.isInStyleBlock && !context.isStyleFile) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (context.isInJsBlock) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
48
116
|
const lessVarDefPattern = /^\s*@([a-zA-Z_][\w-]*)\s*:\s*([^;]+?)\s*;?\s*$/;
|
|
49
117
|
const lessVarPattern = /@([a-zA-Z_][\w-]*)/g;
|
|
50
118
|
let match;
|
|
@@ -156,6 +224,13 @@ export function extractCssVariableDefinitions(text, filePath = 'unknown', option
|
|
|
156
224
|
}
|
|
157
225
|
}
|
|
158
226
|
if (options.includeLess !== false) {
|
|
227
|
+
const context = detectCodeContext(filePath, text, lineIndex);
|
|
228
|
+
if (!context.isInStyleBlock && !context.isStyleFile) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (context.isInJsBlock) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
159
234
|
const lessVarDefPattern = /^\s*@([a-zA-Z_][\w-]*)\s*:\s*([^;]+?)\s*;?\s*$/;
|
|
160
235
|
const match = lessVarDefPattern.exec(line);
|
|
161
236
|
if (match) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractCssVariables.js","sourceRoot":"","sources":["../../../src/functions/css/extractCssVariables.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extractCssVariables.js","sourceRoot":"","sources":["../../../src/functions/css/extractCssVariables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface CommandResult {
|
|
2
|
+
exitCode: number;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
success: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface Executor {
|
|
8
|
+
exec(command: string, options?: {
|
|
9
|
+
cwd?: string;
|
|
10
|
+
}): CommandResult;
|
|
11
|
+
}
|
|
12
|
+
export interface Logger {
|
|
13
|
+
info(message: string): void;
|
|
14
|
+
error(message: string): void;
|
|
15
|
+
warn(message: string): void;
|
|
16
|
+
debug(message: string): void;
|
|
17
|
+
}
|
|
18
|
+
export interface GitEnvironment {
|
|
19
|
+
installed: boolean;
|
|
20
|
+
version?: string;
|
|
21
|
+
userConfigured: boolean;
|
|
22
|
+
userName?: string;
|
|
23
|
+
userEmail?: string;
|
|
24
|
+
inRepository: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare function checkGitEnvironment(executor: Executor): GitEnvironment;
|
|
27
|
+
export declare function checkBranch(executor: Executor, logger: Logger, options?: {
|
|
28
|
+
allowedBranches?: string[];
|
|
29
|
+
force?: boolean;
|
|
30
|
+
}): boolean;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export function checkGitEnvironment(executor) {
|
|
2
|
+
const result = {
|
|
3
|
+
installed: false,
|
|
4
|
+
userConfigured: false,
|
|
5
|
+
inRepository: false
|
|
6
|
+
};
|
|
7
|
+
const versionResult = executor.exec('git --version');
|
|
8
|
+
if (versionResult.success) {
|
|
9
|
+
result.installed = true;
|
|
10
|
+
result.version = versionResult.stdout.trim().replace('git version ', '');
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
const userNameResult = executor.exec('git config user.name');
|
|
16
|
+
const userEmailResult = executor.exec('git config user.email');
|
|
17
|
+
if (userNameResult.success && userEmailResult.success) {
|
|
18
|
+
result.userConfigured = true;
|
|
19
|
+
result.userName = userNameResult.stdout.trim();
|
|
20
|
+
result.userEmail = userEmailResult.stdout.trim();
|
|
21
|
+
}
|
|
22
|
+
const repoResult = executor.exec('git rev-parse --git-dir');
|
|
23
|
+
result.inRepository = repoResult.success;
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
function getCurrentBranch(executor) {
|
|
27
|
+
const result = executor.exec('git branch --show-current');
|
|
28
|
+
if (!result.success) {
|
|
29
|
+
throw new Error(`获取当前分支失败: ${result.stderr}`);
|
|
30
|
+
}
|
|
31
|
+
return result.stdout.trim();
|
|
32
|
+
}
|
|
33
|
+
export function checkBranch(executor, logger, options = {}) {
|
|
34
|
+
const { allowedBranches = ['main', 'master'], force = false } = options;
|
|
35
|
+
try {
|
|
36
|
+
const gitEnv = checkGitEnvironment(executor);
|
|
37
|
+
if (!gitEnv.installed) {
|
|
38
|
+
logger.error('Git 未安装,请先安装 Git');
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (!gitEnv.userConfigured) {
|
|
42
|
+
logger.error('Git 用户信息未配置,请先配置用户名和邮箱');
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
if (!gitEnv.inRepository) {
|
|
46
|
+
logger.error('当前目录不是 Git 仓库');
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
logger.info('检查当前分支...');
|
|
50
|
+
const currentBranch = getCurrentBranch(executor);
|
|
51
|
+
if (!allowedBranches.includes(currentBranch)) {
|
|
52
|
+
const message = `当前在分支 '${currentBranch}',建议在主分支发布`;
|
|
53
|
+
if (force) {
|
|
54
|
+
logger.warn(`${message}(已强制继续)`);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
logger.error(`${message},使用 --force 参数强制发布`);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
logger.info(`当前分支: ${currentBranch}`);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
67
|
+
logger.error(`无法获取当前分支信息: ${errorMessage}`);
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=checkBranch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkBranch.js","sourceRoot":"","sources":["../../../src/functions/git/checkBranch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export function checkWorkingDirectory(git, logger) {
|
|
2
|
+
try {
|
|
3
|
+
logger?.({
|
|
4
|
+
level: 'info',
|
|
5
|
+
message: '检查 Git 工作目录状态...',
|
|
6
|
+
timestamp: new Date()
|
|
7
|
+
});
|
|
8
|
+
const status = git.status();
|
|
9
|
+
if (!status.clean) {
|
|
10
|
+
const message = '工作目录不干净,请先提交或暂存所有更改';
|
|
11
|
+
logger?.({
|
|
12
|
+
level: 'error',
|
|
13
|
+
message,
|
|
14
|
+
timestamp: new Date(),
|
|
15
|
+
details: {
|
|
16
|
+
staged: status.staged,
|
|
17
|
+
modified: status.modified,
|
|
18
|
+
untracked: status.untracked
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
logger?.({
|
|
24
|
+
level: 'success',
|
|
25
|
+
message: '工作目录干净',
|
|
26
|
+
timestamp: new Date()
|
|
27
|
+
});
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const message = '无法检查 Git 状态,请确保在 Git 仓库中运行';
|
|
32
|
+
logger?.({
|
|
33
|
+
level: 'error',
|
|
34
|
+
message,
|
|
35
|
+
timestamp: new Date(),
|
|
36
|
+
details: error
|
|
37
|
+
});
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=checkWorkingDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkWorkingDirectory.js","sourceRoot":"","sources":["../../../src/functions/git/checkWorkingDirectory.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,qBAAqB,CACnC,GAAQ,EACR,MAAkC;IAElC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,kBAAkB;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;QAE3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,qBAAqB,CAAA;YACrC,MAAM,EAAE,CAAC;gBACP,KAAK,EAAE,OAAO;gBACd,OAAO;gBACP,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B;aACF,CAAC,CAAA;YACF,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,4BAA4B,CAAA;QAC5C,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,OAAO;YACd,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Git } from '../../../references/git.d';
|
|
2
|
+
import type { LogEntry } from '../../../types/publish.d';
|
|
3
|
+
export declare function createGitTag(git: Git, version: string, options?: {
|
|
4
|
+
files?: string[];
|
|
5
|
+
commitMessage?: string;
|
|
6
|
+
tagMessage?: string;
|
|
7
|
+
}, logger?: (entry: LogEntry) => void): boolean;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export function createGitTag(git, version, options = {}, logger) {
|
|
2
|
+
const { files = ['package.json'], commitMessage = `chore: bump version to ${version}`, tagMessage = `Release v${version}` } = options;
|
|
3
|
+
try {
|
|
4
|
+
logger?.({
|
|
5
|
+
level: 'info',
|
|
6
|
+
message: '创建 Git 提交和标签...',
|
|
7
|
+
timestamp: new Date()
|
|
8
|
+
});
|
|
9
|
+
git.add(files);
|
|
10
|
+
git.commit(commitMessage);
|
|
11
|
+
git.createTag(`v${version}`, tagMessage);
|
|
12
|
+
logger?.({
|
|
13
|
+
level: 'success',
|
|
14
|
+
message: `已创建标签 v${version}`,
|
|
15
|
+
timestamp: new Date(),
|
|
16
|
+
details: {
|
|
17
|
+
version,
|
|
18
|
+
commitMessage,
|
|
19
|
+
tagMessage,
|
|
20
|
+
files
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
const message = '创建 Git 标签失败';
|
|
27
|
+
logger?.({
|
|
28
|
+
level: 'error',
|
|
29
|
+
message,
|
|
30
|
+
timestamp: new Date(),
|
|
31
|
+
details: error
|
|
32
|
+
});
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=createGitTag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createGitTag.js","sourceRoot":"","sources":["../../../src/functions/git/createGitTag.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,YAAY,CAC1B,GAAQ,EACR,OAAe,EACf,UAII,EAAE,EACN,MAAkC;IAElC,MAAM,EACJ,KAAK,GAAG,CAAC,cAAc,CAAC,EACxB,aAAa,GAAG,0BAA0B,OAAO,EAAE,EACnD,UAAU,GAAG,YAAY,OAAO,EAAE,EACnC,GAAG,OAAO,CAAA;IAEX,IAAI,CAAC;QACH,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,iBAAiB;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAA;QAGF,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAGd,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAGzB,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,EAAE,UAAU,CAAC,CAAA;QAExC,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,UAAU,OAAO,EAAE;YAC5B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE;gBACP,OAAO;gBACP,aAAa;gBACb,UAAU;gBACV,KAAK;aACN;SACF,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,aAAa,CAAA;QAC7B,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,OAAO;YACd,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface CommandResult {
|
|
2
|
+
exitCode: number;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
success: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ExecOptions {
|
|
8
|
+
cwd?: string;
|
|
9
|
+
env?: Record<string, string>;
|
|
10
|
+
timeout?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface Executor {
|
|
13
|
+
exec(command: string, options?: ExecOptions): CommandResult;
|
|
14
|
+
}
|
|
15
|
+
export interface Logger {
|
|
16
|
+
info(message: string): void;
|
|
17
|
+
error(message: string): void;
|
|
18
|
+
warn(message: string): void;
|
|
19
|
+
debug(message: string): void;
|
|
20
|
+
}
|
|
21
|
+
export interface PushOptions extends ExecOptions {
|
|
22
|
+
remote?: string;
|
|
23
|
+
branch?: string;
|
|
24
|
+
pushTags?: boolean;
|
|
25
|
+
force?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface PushResult {
|
|
28
|
+
success: boolean;
|
|
29
|
+
branch: string;
|
|
30
|
+
remote: string;
|
|
31
|
+
tagsPushed: boolean;
|
|
32
|
+
error?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function pushToRemote(executor: Executor, logger: Logger, options?: PushOptions): Promise<PushResult>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
function getCurrentBranch(executor, options) {
|
|
2
|
+
const result = executor.exec('git branch --show-current', options);
|
|
3
|
+
if (!result.success) {
|
|
4
|
+
throw new Error(`获取当前分支失败: ${result.stderr}`);
|
|
5
|
+
}
|
|
6
|
+
return result.stdout.trim();
|
|
7
|
+
}
|
|
8
|
+
export async function pushToRemote(executor, logger, options = {}) {
|
|
9
|
+
const { remote = 'origin', branch, pushTags = false, force = false, ...execOptions } = options;
|
|
10
|
+
try {
|
|
11
|
+
const targetBranch = branch || getCurrentBranch(executor, execOptions);
|
|
12
|
+
logger.info(`开始推送到远程仓库: ${remote}/${targetBranch}`);
|
|
13
|
+
let pushCommand = `git push ${remote} ${targetBranch}`;
|
|
14
|
+
if (force) {
|
|
15
|
+
pushCommand = `git push --force ${remote} ${targetBranch}`;
|
|
16
|
+
}
|
|
17
|
+
const pushResult = executor.exec(pushCommand, execOptions);
|
|
18
|
+
if (!pushResult.success) {
|
|
19
|
+
throw new Error(`推送分支失败: ${pushResult.stderr}`);
|
|
20
|
+
}
|
|
21
|
+
logger.info(`成功推送分支: ${targetBranch}`);
|
|
22
|
+
let tagsPushed = false;
|
|
23
|
+
if (pushTags) {
|
|
24
|
+
const tagCommand = `git push --tags ${remote}`;
|
|
25
|
+
const tagResult = executor.exec(tagCommand, execOptions);
|
|
26
|
+
if (!tagResult.success) {
|
|
27
|
+
throw new Error(`推送标签失败: ${tagResult.stderr}`);
|
|
28
|
+
}
|
|
29
|
+
tagsPushed = true;
|
|
30
|
+
logger.info(`成功推送标签到: ${remote}`);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
success: true,
|
|
34
|
+
branch: targetBranch,
|
|
35
|
+
remote,
|
|
36
|
+
tagsPushed
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
41
|
+
logger.error(`推送失败: ${errorMessage}`);
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
branch: branch || 'unknown',
|
|
45
|
+
remote,
|
|
46
|
+
tagsPushed: false,
|
|
47
|
+
error: errorMessage
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=pushToRemote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushToRemote.js","sourceRoot":"","sources":["../../../src/functions/git/pushToRemote.ts"],"names":[],"mappings":"AAqFA,SAAS,gBAAgB,CAAC,QAAkB,EAAE,OAAqB;IACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAA;IAClE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;AAC7B,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAkB,EAClB,MAAc,EACd,UAAuB,EAAE;IAEzB,MAAM,EACJ,MAAM,GAAG,QAAQ,EACjB,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,GAAG,WAAW,EACf,GAAG,OAAO,CAAA;IAEX,IAAI,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;QAEtE,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,IAAI,YAAY,EAAE,CAAC,CAAA;QAGnD,IAAI,WAAW,GAAG,YAAY,MAAM,IAAI,YAAY,EAAE,CAAA;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,WAAW,GAAG,oBAAoB,MAAM,IAAI,YAAY,EAAE,CAAA;QAC5D,CAAC;QAGD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QAC1D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QACjD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,WAAW,YAAY,EAAE,CAAC,CAAA;QAGtC,IAAI,UAAU,GAAG,KAAK,CAAA;QACtB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,mBAAmB,MAAM,EAAE,CAAA;YAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;YACxD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;YAChD,CAAC;YACD,UAAU,GAAG,IAAI,CAAA;YACjB,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC,CAAA;QACnC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,YAAY;YACpB,MAAM;YACN,UAAU;SACX,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,MAAM,CAAC,KAAK,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;QAErC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,IAAI,SAAS;YAC3B,MAAM;YACN,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,YAAY;SACpB,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -3,4 +3,14 @@ export interface IpcRequest {
|
|
|
3
3
|
event: string;
|
|
4
4
|
args: any;
|
|
5
5
|
}
|
|
6
|
-
export
|
|
6
|
+
export interface IpcHandlerMap {
|
|
7
|
+
[eventName: string]: {
|
|
8
|
+
default: (...args: any[]) => any | Promise<any>;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare function dispatchIpcRequest(req: IpcRequest, options: {
|
|
12
|
+
handlerMap: IpcHandlerMap;
|
|
13
|
+
} | {
|
|
14
|
+
functionsDir: string;
|
|
15
|
+
path: Path;
|
|
16
|
+
}): Promise<any>;
|
|
@@ -1,10 +1,23 @@
|
|
|
1
|
-
export async function dispatchIpcRequest(req,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export async function dispatchIpcRequest(req, options) {
|
|
2
|
+
if ('handlerMap' in options) {
|
|
3
|
+
const module = options.handlerMap[req.event];
|
|
4
|
+
if (!module) {
|
|
5
|
+
throw new Error(`Handler not found for event: ${req.event}`);
|
|
6
|
+
}
|
|
7
|
+
if (typeof module.default !== 'function') {
|
|
8
|
+
throw new Error(`Handler for event '${req.event}' is not a function`);
|
|
9
|
+
}
|
|
10
|
+
return await module.default(req.args);
|
|
6
11
|
}
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
if ('functionsDir' in options && 'path' in options) {
|
|
13
|
+
const funcPath = options.path.resolve(options.functionsDir, req.event);
|
|
14
|
+
const mod = await import(funcPath);
|
|
15
|
+
if (typeof mod.default !== 'function') {
|
|
16
|
+
throw new Error('Handler not found or handler is not a function');
|
|
17
|
+
}
|
|
18
|
+
const data = await mod.default(req.args);
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
throw new Error('Invalid options: must provide either handlerMap or functionsDir with path');
|
|
9
22
|
}
|
|
10
23
|
//# sourceMappingURL=dispatchIpcRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatchIpcRequest.js","sourceRoot":"","sources":["../../../src/functions/ipc/dispatchIpcRequest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dispatchIpcRequest.js","sourceRoot":"","sources":["../../../src/functions/ipc/dispatchIpcRequest.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAe,EACf,OAEwC;IAGxC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,KAAK,qBAAqB,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAGD,IAAI,cAAc,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;AAC/F,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export function readPackageInfo(fs, packagePath = 'package.json', logger) {
|
|
2
|
+
try {
|
|
3
|
+
logger?.({
|
|
4
|
+
level: 'info',
|
|
5
|
+
message: `读取包信息: ${packagePath}`,
|
|
6
|
+
timestamp: new Date()
|
|
7
|
+
});
|
|
8
|
+
if (!fs.existsSync(packagePath)) {
|
|
9
|
+
throw new Error(`package.json 文件不存在: ${packagePath}`);
|
|
10
|
+
}
|
|
11
|
+
const content = fs.readFileSync(packagePath, 'utf8');
|
|
12
|
+
const packageJson = JSON.parse(content);
|
|
13
|
+
const packageInfo = {
|
|
14
|
+
name: packageJson.name || '',
|
|
15
|
+
version: packageJson.version || '0.0.0',
|
|
16
|
+
description: packageJson.description || '',
|
|
17
|
+
main: packageJson.main,
|
|
18
|
+
scripts: packageJson.scripts || {},
|
|
19
|
+
dependencies: packageJson.dependencies || {},
|
|
20
|
+
devDependencies: packageJson.devDependencies || {},
|
|
21
|
+
peerDependencies: packageJson.peerDependencies || {},
|
|
22
|
+
keywords: packageJson.keywords || [],
|
|
23
|
+
author: packageJson.author,
|
|
24
|
+
license: packageJson.license,
|
|
25
|
+
repository: packageJson.repository,
|
|
26
|
+
bugs: packageJson.bugs,
|
|
27
|
+
homepage: packageJson.homepage,
|
|
28
|
+
private: packageJson.private || false
|
|
29
|
+
};
|
|
30
|
+
logger?.({
|
|
31
|
+
level: 'success',
|
|
32
|
+
message: `已读取包信息: ${packageInfo.name}@${packageInfo.version}`,
|
|
33
|
+
timestamp: new Date(),
|
|
34
|
+
details: {
|
|
35
|
+
name: packageInfo.name,
|
|
36
|
+
version: packageInfo.version,
|
|
37
|
+
private: packageInfo.private
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return packageInfo;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
const message = `读取包信息失败: ${packagePath}`;
|
|
44
|
+
logger?.({
|
|
45
|
+
level: 'error',
|
|
46
|
+
message,
|
|
47
|
+
timestamp: new Date(),
|
|
48
|
+
details: error
|
|
49
|
+
});
|
|
50
|
+
throw new Error(message);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=readPackageInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readPackageInfo.js","sourceRoot":"","sources":["../../../src/functions/package/readPackageInfo.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,eAAe,CAC7B,EAAc,EACd,cAAsB,cAAc,EACpC,MAAkC;IAElC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,UAAU,WAAW,EAAE;YAChC,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAA;QAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEvC,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE;YAC5B,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,OAAO;YACvC,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;YAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,EAAE;YAClC,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,EAAE;YAC5C,eAAe,EAAE,WAAW,CAAC,eAAe,IAAI,EAAE;YAClD,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,IAAI,EAAE;YACpD,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;YACpC,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,KAAK;SACtC,CAAA;QAED,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,WAAW,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE;YAC7D,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE;gBACP,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B;SACF,CAAC,CAAA;QAEF,OAAO,WAAW,CAAA;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,YAAY,WAAW,EAAE,CAAA;QACzC,MAAM,EAAE,CAAC;YACP,KAAK,EAAE,OAAO;YACd,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QACF,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export async function deployToTCB(options, dependencies) {
|
|
2
|
+
const { localPath, cloudPath = '/', envId, secretType, showProgress = true } = options;
|
|
3
|
+
const { cloudBase, path, fs, console, getSecret } = dependencies;
|
|
4
|
+
try {
|
|
5
|
+
if (!fs.existsSync(localPath)) {
|
|
6
|
+
return {
|
|
7
|
+
success: false,
|
|
8
|
+
error: `本地路径不存在: ${localPath}`
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const secret = getSecret(secretType);
|
|
12
|
+
if (!secret || !secret.secretId || !secret.secretKey) {
|
|
13
|
+
return {
|
|
14
|
+
success: false,
|
|
15
|
+
error: `无效的密钥类型: ${secretType}`
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const app = cloudBase.init({
|
|
19
|
+
secretId: secret.secretId,
|
|
20
|
+
secretKey: secret.secretKey,
|
|
21
|
+
envId
|
|
22
|
+
});
|
|
23
|
+
const hosting = app.hosting;
|
|
24
|
+
await hosting.uploadFiles({
|
|
25
|
+
localPath,
|
|
26
|
+
cloudPath,
|
|
27
|
+
onProgress: showProgress ? (progressData) => {
|
|
28
|
+
console.log(`上传进度: ${progressData.percent}%`);
|
|
29
|
+
} : undefined
|
|
30
|
+
});
|
|
31
|
+
console.log('文件上传成功');
|
|
32
|
+
return {
|
|
33
|
+
success: true,
|
|
34
|
+
message: '部署成功'
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
39
|
+
console.error('部署失败:', error);
|
|
40
|
+
return {
|
|
41
|
+
success: false,
|
|
42
|
+
error: `部署失败: ${errorMessage}`
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export default deployToTCB;
|
|
47
|
+
//# sourceMappingURL=deploy.tcb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.tcb.js","sourceRoot":"","sources":["../../../src/functions/tencent-cloud/deploy.tcb.ts"],"names":[],"mappings":"AAwCA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAsB,EACtB,YAAgC;IAEhC,MAAM,EACJ,SAAS,EACT,SAAS,GAAG,GAAG,EACf,KAAK,EACL,UAAU,EACV,YAAY,GAAG,IAAI,EACpB,GAAG,OAAO,CAAA;IAEX,MAAM,EACJ,SAAS,EACT,IAAI,EACJ,EAAE,EACF,OAAO,EACP,SAAS,EACV,GAAG,YAAY,CAAA;IAEhB,IAAI,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,SAAS,EAAE;aAC/B,CAAA;QACH,CAAC;QAGD,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACrD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,UAAU,EAAE;aAChC,CAAA;QACH,CAAC;QAGD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK;SACN,CAAC,CAAA;QAGF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;QAG3B,MAAM,OAAO,CAAC,WAAW,CAAC;YACxB,SAAS;YACT,SAAS;YACT,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAAgC,EAAE,EAAE;gBAC7D,OAAO,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,OAAO,GAAG,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAC,CAAC,SAAS;SACf,CAAC,CAAA;QAGF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM;SAChB,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC7B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,SAAS,YAAY,EAAE;SAC/B,CAAA;IACH,CAAC;AACH,CAAC;AAQD,eAAe,WAAW,CAAA"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export type SecretType = 'personal' | 'individual' | 'enterprise';
|
|
6
|
-
export declare function getSecret(type: SecretType): Secret;
|
|
1
|
+
import type { TencentCloudSecret } from '../../../references/tencent-cloud.d';
|
|
2
|
+
import type { SecretType } from '../../../types/tencent-cloud.d';
|
|
3
|
+
export declare function getSecret(type: SecretType): TencentCloudSecret;
|
|
4
|
+
export default getSecret;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSecret.js","sourceRoot":"","sources":["../../../src/functions/tencent-cloud/getSecret.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getSecret.js","sourceRoot":"","sources":["../../../src/functions/tencent-cloud/getSecret.ts"],"names":[],"mappings":"AAIA,MAAM,SAAS,GAA2C;IACxD,QAAQ,EAAE;QAER,QAAQ,EAAE,sCAAsC;QAChD,SAAS,EAAE,kCAAkC;KAC9C;IACD,UAAU,EAAE;QAEV,QAAQ,EAAE,sCAAsC;QAChD,SAAS,EAAE,kCAAkC;KAC9C;IACD,UAAU,EAAE;QAEV,QAAQ,EAAE,sCAAsC;QAChD,SAAS,EAAE,kCAAkC;KAC9C;CACF,CAAA;AAoCD,MAAM,UAAU,SAAS,CAAC,IAAgB;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAKD,eAAe,SAAS,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { parseVersion, stringifyVersion } from './parseVersion';
|
|
2
|
+
export function incrementVersion(currentVersion, type, prerelease) {
|
|
3
|
+
const version = parseVersion(currentVersion);
|
|
4
|
+
switch (type) {
|
|
5
|
+
case 'major':
|
|
6
|
+
return stringifyVersion({
|
|
7
|
+
major: version.major + 1,
|
|
8
|
+
minor: 0,
|
|
9
|
+
patch: 0
|
|
10
|
+
});
|
|
11
|
+
case 'minor':
|
|
12
|
+
return stringifyVersion({
|
|
13
|
+
major: version.major,
|
|
14
|
+
minor: version.minor + 1,
|
|
15
|
+
patch: 0
|
|
16
|
+
});
|
|
17
|
+
case 'patch':
|
|
18
|
+
return stringifyVersion({
|
|
19
|
+
major: version.major,
|
|
20
|
+
minor: version.minor,
|
|
21
|
+
patch: version.patch + 1
|
|
22
|
+
});
|
|
23
|
+
case 'prerelease':
|
|
24
|
+
if (!prerelease) {
|
|
25
|
+
throw new Error('预发布版本需要指定 prerelease 标识符');
|
|
26
|
+
}
|
|
27
|
+
if (version.prerelease) {
|
|
28
|
+
const match = version.prerelease.match(/^(.+?)\.(\d+)$/);
|
|
29
|
+
if (match && match[1] === prerelease) {
|
|
30
|
+
const prereleaseNumber = parseInt(match[2], 10) + 1;
|
|
31
|
+
return stringifyVersion({
|
|
32
|
+
...version,
|
|
33
|
+
prerelease: `${prerelease}.${prereleaseNumber}`
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return stringifyVersion({
|
|
38
|
+
major: version.major,
|
|
39
|
+
minor: version.minor,
|
|
40
|
+
patch: version.patch + 1,
|
|
41
|
+
prerelease: `${prerelease}.0`
|
|
42
|
+
});
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(`不支持的版本类型: ${type}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function suggestVersionType(changes) {
|
|
48
|
+
const changeText = changes.join(' ').toLowerCase();
|
|
49
|
+
if (changeText.includes('breaking') || changeText.includes('major')) {
|
|
50
|
+
return 'major';
|
|
51
|
+
}
|
|
52
|
+
if (changeText.includes('feat') || changeText.includes('feature') || changeText.includes('add')) {
|
|
53
|
+
return 'minor';
|
|
54
|
+
}
|
|
55
|
+
return 'patch';
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=incrementVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incrementVersion.js","sourceRoot":"","sources":["../../../src/functions/version/incrementVersion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAU/D,MAAM,UAAU,gBAAgB,CAC9B,cAAsB,EACtB,IAAiB,EACjB,UAAmB;IAEnB,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;IAE5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;gBACxB,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;aACT,CAAC,CAAA;QAEJ,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;gBACxB,KAAK,EAAE,CAAC;aACT,CAAC,CAAA;QAEJ,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;aACzB,CAAC,CAAA;QAEJ,KAAK,YAAY;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC7C,CAAC;YAGD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBACxD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;oBACrC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;oBACnD,OAAO,gBAAgB,CAAC;wBACtB,GAAG,OAAO;wBACV,UAAU,EAAE,GAAG,UAAU,IAAI,gBAAgB,EAAE;qBAChD,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAGD,OAAO,gBAAgB,CAAC;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;gBACxB,UAAU,EAAE,GAAG,UAAU,IAAI;aAC9B,CAAC,CAAA;QAEJ;YACE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,kBAAkB,CAAC,OAAiB;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IAGlD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChG,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function parseVersion(version) {
|
|
2
|
+
const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);
|
|
3
|
+
if (!match) {
|
|
4
|
+
throw new Error(`无效的版本号格式: ${version}`);
|
|
5
|
+
}
|
|
6
|
+
return {
|
|
7
|
+
major: parseInt(match[1], 10),
|
|
8
|
+
minor: parseInt(match[2], 10),
|
|
9
|
+
patch: parseInt(match[3], 10),
|
|
10
|
+
prerelease: match[4]
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function stringifyVersion(version) {
|
|
14
|
+
const base = `${version.major}.${version.minor}.${version.patch}`;
|
|
15
|
+
return version.prerelease ? `${base}-${version.prerelease}` : base;
|
|
16
|
+
}
|
|
17
|
+
export function compareVersions(a, b) {
|
|
18
|
+
if (a.major !== b.major) {
|
|
19
|
+
return a.major > b.major ? 1 : -1;
|
|
20
|
+
}
|
|
21
|
+
if (a.minor !== b.minor) {
|
|
22
|
+
return a.minor > b.minor ? 1 : -1;
|
|
23
|
+
}
|
|
24
|
+
if (a.patch !== b.patch) {
|
|
25
|
+
return a.patch > b.patch ? 1 : -1;
|
|
26
|
+
}
|
|
27
|
+
if (a.prerelease && !b.prerelease)
|
|
28
|
+
return -1;
|
|
29
|
+
if (!a.prerelease && b.prerelease)
|
|
30
|
+
return 1;
|
|
31
|
+
if (!a.prerelease && !b.prerelease)
|
|
32
|
+
return 0;
|
|
33
|
+
return a.prerelease > b.prerelease ? 1 : (a.prerelease < b.prerelease ? -1 : 0);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=parseVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseVersion.js","sourceRoot":"","sources":["../../../src/functions/version/parseVersion.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAE9D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;KACrB,CAAA;AACH,CAAC;AAQD,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAA;IACjE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACpE,CAAC;AASD,MAAM,UAAU,eAAe,CAAC,CAAU,EAAE,CAAU;IAEpD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAGD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAGD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAGD,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC,CAAA;IAC5C,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;QAAE,OAAO,CAAC,CAAA;IAC3C,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU;QAAE,OAAO,CAAC,CAAA;IAG5C,OAAO,CAAC,CAAC,UAAW,GAAG,CAAC,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAW,GAAG,CAAC,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zcw-shared",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"references",
|
|
6
6
|
"dist",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"./functions/string/similarity": "./dist/functions/string/similarity.js",
|
|
67
67
|
"./functions/string/template": "./dist/functions/string/template.js",
|
|
68
68
|
"./functions/string/wordCount": "./dist/functions/string/wordCount.js",
|
|
69
|
+
"./functions/tencent-cloud/deploy.tcb": "./dist/functions/tencent-cloud/deploy.tcb.js",
|
|
69
70
|
"./functions/tencent-cloud/getSecret": "./dist/functions/tencent-cloud/getSecret.js",
|
|
70
71
|
"./functions/uniapp/app-plus/buildAndroidApp": "./dist/functions/uniapp/app-plus/buildAndroidApp.js",
|
|
71
72
|
"./functions/uniapp/build": "./dist/functions/uniapp/build.js",
|
|
@@ -91,6 +92,8 @@
|
|
|
91
92
|
"./functions/utils/until": "./dist/functions/utils/until.js",
|
|
92
93
|
"./functions/utils/validate": "./dist/functions/utils/validate.js",
|
|
93
94
|
"./functions/utils/walk": "./dist/functions/utils/walk.js",
|
|
95
|
+
"./functions/version/incrementVersion": "./dist/functions/version/incrementVersion.js",
|
|
96
|
+
"./functions/version/parseVersion": "./dist/functions/version/parseVersion.js",
|
|
94
97
|
"./functions/vue/dynamicMount": "./dist/functions/vue/dynamicMount.js",
|
|
95
98
|
"./functions/vue/extractColorsFromVueFile": "./dist/functions/vue/extractColorsFromVueFile.js",
|
|
96
99
|
"./functions/vue/extractColorsFromVueSection": "./dist/functions/vue/extractColorsFromVueSection.js",
|
|
@@ -116,8 +119,10 @@
|
|
|
116
119
|
"./types/design-system": "./types/design-system.d.ts",
|
|
117
120
|
"./types/geometry": "./types/geometry.d.ts",
|
|
118
121
|
"./types/platform": "./types/platform.d.ts",
|
|
122
|
+
"./types/semver": "./types/semver.d.ts",
|
|
119
123
|
"./types/software": "./types/software.d.ts",
|
|
120
124
|
"./types/storage": "./types/storage.d.ts",
|
|
125
|
+
"./types/tencent-cloud": "./types/tencent-cloud.d.ts",
|
|
121
126
|
"./types/uniapp-android-build": "./types/uniapp-android-build.d.ts",
|
|
122
127
|
"./types/vue": "./types/vue.d.ts",
|
|
123
128
|
"./types/worker": "./types/worker.d.ts"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 腾讯云相关类型定义
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* 定义腾讯云服务相关的接口和类型,用于依赖注入
|
|
6
|
+
* 确保函数的环境无关性
|
|
7
|
+
*
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
* @author Assistant
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { Console } from './console.d'
|
|
13
|
+
import type { FileSystem, Path, Process } from './node.d'
|
|
14
|
+
|
|
15
|
+
// 腾讯云密钥接口
|
|
16
|
+
export interface TencentCloudSecret {
|
|
17
|
+
secretId: string
|
|
18
|
+
secretKey: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// 腾讯云配置接口
|
|
22
|
+
export interface TencentCloudConfig {
|
|
23
|
+
secretId: string
|
|
24
|
+
secretKey: string
|
|
25
|
+
envId: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// 上传进度数据
|
|
29
|
+
export interface UploadProgressData {
|
|
30
|
+
percent: number
|
|
31
|
+
loaded: number
|
|
32
|
+
total: number
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// 上传文件选项
|
|
36
|
+
export interface UploadFilesOptions {
|
|
37
|
+
localPath: string
|
|
38
|
+
cloudPath: string
|
|
39
|
+
onProgress?: (progressData: UploadProgressData) => void
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// 静态网站托管服务接口
|
|
43
|
+
export interface HostingService {
|
|
44
|
+
uploadFiles(options: UploadFilesOptions): Promise<void>
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// CloudBase 应用接口
|
|
48
|
+
export interface CloudBaseApp {
|
|
49
|
+
hosting: HostingService
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// CloudBase 管理器接口
|
|
53
|
+
export interface CloudBaseManager {
|
|
54
|
+
init(config: TencentCloudConfig): CloudBaseApp
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// 腾讯云系统依赖接口
|
|
58
|
+
export interface TencentCloudSystemDependencies {
|
|
59
|
+
cloudBase: CloudBaseManager
|
|
60
|
+
path: Path
|
|
61
|
+
fs: FileSystem
|
|
62
|
+
process: Process
|
|
63
|
+
console: Console
|
|
64
|
+
getSecret: (type: string) => TencentCloudSecret
|
|
65
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Versioning (SemVer) 类型定义
|
|
3
|
+
* 遵循 https://semver.org/ 规范
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 版本递增类型
|
|
8
|
+
*/
|
|
9
|
+
export type VersionType = 'major' | 'minor' | 'patch' | 'prerelease'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 语义化版本对象
|
|
13
|
+
*/
|
|
14
|
+
export interface Version {
|
|
15
|
+
/** 主版本号 - 不兼容的 API 修改 */
|
|
16
|
+
major: number
|
|
17
|
+
/** 次版本号 - 向下兼容的功能性新增 */
|
|
18
|
+
minor: number
|
|
19
|
+
/** 修订号 - 向下兼容的问题修正 */
|
|
20
|
+
patch: number
|
|
21
|
+
/** 预发布版本标识符 */
|
|
22
|
+
prerelease?: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 版本比较结果
|
|
27
|
+
*/
|
|
28
|
+
export type VersionComparison = -1 | 0 | 1
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 版本范围操作符
|
|
32
|
+
*/
|
|
33
|
+
export type VersionRangeOperator =
|
|
34
|
+
| '^' // 兼容版本(不改变主版本号)
|
|
35
|
+
| '~' // 近似版本(不改变主次版本号)
|
|
36
|
+
| '>=' // 大于等于
|
|
37
|
+
| '>' // 大于
|
|
38
|
+
| '<=' // 小于等于
|
|
39
|
+
| '<' // 小于
|
|
40
|
+
| '=' // 等于
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 版本范围
|
|
44
|
+
*/
|
|
45
|
+
export interface VersionRange {
|
|
46
|
+
operator: VersionRangeOperator
|
|
47
|
+
version: string
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 版本解析选项
|
|
52
|
+
*/
|
|
53
|
+
export interface VersionParseOptions {
|
|
54
|
+
/** 是否允许前缀 'v' */
|
|
55
|
+
allowPrefix?: boolean
|
|
56
|
+
/** 是否严格模式(严格遵循 SemVer 规范) */
|
|
57
|
+
strict?: boolean
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* 版本递增选项
|
|
62
|
+
*/
|
|
63
|
+
export interface VersionIncrementOptions {
|
|
64
|
+
/** 预发布标识符(如 'alpha', 'beta', 'rc') */
|
|
65
|
+
prerelease?: string
|
|
66
|
+
/** 预发布版本号 */
|
|
67
|
+
prereleaseNumber?: number
|
|
68
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 腾讯云相关应用层类型定义
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* 定义腾讯云部署功能使用的接口和类型
|
|
6
|
+
* 不包含环境相关的类型,环境相关类型请从 references/tencent-cloud.d 导入
|
|
7
|
+
*
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
* @author Assistant
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type {
|
|
13
|
+
TencentCloudSystemDependencies,
|
|
14
|
+
TencentCloudSecret
|
|
15
|
+
} from '../references/tencent-cloud.d'
|
|
16
|
+
|
|
17
|
+
// 密钥类型
|
|
18
|
+
export type SecretType = 'personal' | 'individual' | 'enterprise'
|
|
19
|
+
|
|
20
|
+
// 部署配置选项
|
|
21
|
+
export interface DeployOptions {
|
|
22
|
+
/** 本地文件路径 */
|
|
23
|
+
localPath: string
|
|
24
|
+
/** 云端路径 */
|
|
25
|
+
cloudPath?: string
|
|
26
|
+
/** 环境ID */
|
|
27
|
+
envId: string
|
|
28
|
+
/** 密钥类型 */
|
|
29
|
+
secretType: SecretType
|
|
30
|
+
/** 是否显示进度 */
|
|
31
|
+
showProgress?: boolean
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// 部署结果
|
|
35
|
+
export interface DeployResult {
|
|
36
|
+
success: boolean
|
|
37
|
+
message?: string
|
|
38
|
+
error?: string
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// 部署函数依赖接口
|
|
42
|
+
export interface DeployDependencies extends TencentCloudSystemDependencies {
|
|
43
|
+
// 可以扩展特定于部署功能的依赖
|
|
44
|
+
}
|