refactor: clean code

This commit is contained in:
Fu Diwei
2025-01-05 00:08:12 +08:00
parent 3b9a7fe805
commit 61843a4997
69 changed files with 972 additions and 839 deletions

View File

@@ -1,6 +1,5 @@
import { type AccessUsageType } from "./provider";
// #region AccessModel
export interface AccessModel extends BaseModel {
name: string;
provider: string;
@@ -9,106 +8,105 @@ export interface AccessModel extends BaseModel {
NOTICE: If you add new type, please keep ASCII order.
*/ Record<string, unknown> &
(
| ACMEHttpReqAccessConfig
| AliyunAccessConfig
| AWSAccessConfig
| BaiduCloudAccessConfig
| BytePlusAccessConfig
| CloudflareAccessConfig
| DogeCloudAccessConfig
| GoDaddyAccessConfig
| HuaweiCloudAccessConfig
| KubernetesAccessConfig
| LocalAccessConfig
| NameDotComAccessConfig
| NameSiloAccessConfig
| PowerDNSAccessConfig
| QiniuAccessConfig
| SSHAccessConfig
| TencentCloudAccessConfig
| VolcEngineAccessConfig
| WebhookAccessConfig
| AccessConfigForACMEHttpReq
| AccessConfigForAliyun
| AccessConfigForAWS
| AccessConfigForBaiduCloud
| AccessConfigForBytePlus
| AccessConfigForCloudflare
| AccessConfigForDogeCloud
| AccessConfigForGoDaddy
| AccessConfigForHuaweiCloud
| AccessConfigForKubernetes
| AccessConfigForLocal
| AccessConfigForNameDotCom
| AccessConfigForNameSilo
| AccessConfigForPowerDNS
| AccessConfigForQiniu
| AccessConfigForSSH
| AccessConfigForTencentCloud
| AccessConfigForVolcEngine
| AccessConfigForWebhook
);
usage: AccessUsageType;
}
// #endregion
// #region AccessConfig
export type ACMEHttpReqAccessConfig = {
export type AccessConfigForACMEHttpReq = {
endpoint: string;
mode?: string;
username?: string;
password?: string;
};
export type AliyunAccessConfig = {
export type AccessConfigForAliyun = {
accessKeyId: string;
accessKeySecret: string;
};
export type AWSAccessConfig = {
export type AccessConfigForAWS = {
accessKeyId: string;
secretAccessKey: string;
region?: string;
hostedZoneId?: string;
};
export type BaiduCloudAccessConfig = {
export type AccessConfigForBaiduCloud = {
accessKeyId: string;
secretAccessKey: string;
};
export type BytePlusAccessConfig = {
export type AccessConfigForBytePlus = {
accessKey: string;
secretKey: string;
};
export type CloudflareAccessConfig = {
export type AccessConfigForCloudflare = {
dnsApiToken: string;
};
export type DogeCloudAccessConfig = {
export type AccessConfigForDogeCloud = {
accessKey: string;
secretKey: string;
};
export type GoDaddyAccessConfig = {
export type AccessConfigForGoDaddy = {
apiKey: string;
apiSecret: string;
};
export type HuaweiCloudAccessConfig = {
export type AccessConfigForHuaweiCloud = {
accessKeyId: string;
secretAccessKey: string;
region?: string;
};
export type KubernetesAccessConfig = {
export type AccessConfigForKubernetes = {
kubeConfig?: string;
};
export type LocalAccessConfig = NonNullable<unknown>;
export type AccessConfigForLocal = NonNullable<unknown>;
export type NameDotComAccessConfig = {
export type AccessConfigForNameDotCom = {
username: string;
apiToken: string;
};
export type NameSiloAccessConfig = {
export type AccessConfigForNameSilo = {
apiKey: string;
};
export type PowerDNSAccessConfig = {
export type AccessConfigForPowerDNS = {
apiUrl: string;
apiKey: string;
};
export type QiniuAccessConfig = {
export type AccessConfigForQiniu = {
accessKey: string;
secretKey: string;
};
export type SSHAccessConfig = {
export type AccessConfigForSSH = {
host: string;
port: number;
username: string;
@@ -117,17 +115,17 @@ export type SSHAccessConfig = {
keyPassphrase?: string;
};
export type TencentCloudAccessConfig = {
export type AccessConfigForTencentCloud = {
secretId: string;
secretKey: string;
};
export type VolcEngineAccessConfig = {
export type AccessConfigForVolcEngine = {
accessKeyId: string;
secretAccessKey: string;
};
export type WebhookAccessConfig = {
export type AccessConfigForWebhook = {
url: string;
};
// #endregion

View File

@@ -95,12 +95,12 @@ export type WorkflowNode = {
validated?: boolean;
};
export type WorkflowNodeConfigAsStart = {
export type WorkflowNodeConfigForStart = {
trigger: string;
triggerCron?: string;
};
export type WorkflowNodeConfigAsApply = {
export type WorkflowNodeConfigForApply = {
domains: string;
contactEmail: string;
provider: string;
@@ -111,22 +111,22 @@ export type WorkflowNodeConfigAsApply = {
disableFollowCNAME?: boolean;
};
export type WorkflowNodeConfigAsDeploy = {
export type WorkflowNodeConfigForDeploy = {
provider: string;
providerAccessId: string;
certificate: string;
[key: string]: unknown;
};
export type WorkflowNodeConfigAsNotify = {
export type WorkflowNodeConfigForNotify = {
channel: string;
subject: string;
message: string;
};
export type WorkflowNodeConfigAsBranch = never;
export type WorkflowNodeConfigForBranch = never;
export type WorkflowNodeConfigAsEnd = never;
export type WorkflowNodeConfigForEnd = never;
export type WorkflowNodeIO = {
name: string;
@@ -403,7 +403,7 @@ export const isAllNodesValidated = (node: WorkflowNode): boolean => {
*/
export const getExecuteMethod = (node: WorkflowNode): { trigger: string; triggerCron: string } => {
if (node.type === WorkflowNodeType.Start) {
const config = node.config as WorkflowNodeConfigAsStart;
const config = node.config as WorkflowNodeConfigForStart;
return {
trigger: config.trigger ?? "",
triggerCron: config.triggerCron ?? "",