chore: format

This commit is contained in:
xiaojunnuo
2026-05-31 01:41:33 +08:00
parent acd440106b
commit 4b57a0d729
557 changed files with 12530 additions and 14039 deletions
@@ -1,18 +1,15 @@
export type BuildContentReq = {
data: any;
data: any;
};
export interface ITemplateProvider<T = any> {
buildContent: (params: BuildContentReq) => Promise<T>;
buildDefaultContent: (params: BuildContentReq) => Promise<T>;
}
export interface ITemplateProvider<T=any> {
buildContent: (params: BuildContentReq) => Promise<T>;
buildDefaultContent:(params: BuildContentReq) => Promise<T>;
}
export type EmailContent = {
subject:string,
content?:string,
html?:string
subject: string;
content?: string;
html?: string;
};
@@ -1,5 +1,5 @@
export * from './plugin-common.js'
export * from './plugin-register-code.js'
export * from './plugin-forgot-password.js'
export * from './plugin-pipeline-result.js'
export * from './plugin-send-cert.js'
export * from "./plugin-common.js";
export * from "./plugin-register-code.js";
export * from "./plugin-forgot-password.js";
export * from "./plugin-pipeline-result.js";
export * from "./plugin-send-cert.js";
@@ -9,14 +9,13 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
props: {
type: "info",
message: "在标题和内容模版中,通过${name}引用参数,例如: 感谢注册,您的注册验证码为:${code}",
}
},
},
order: -9,
col: { span: 24 },
})
useIntro = "";
@AddonInput({
title: "邮件格式",
component: {
@@ -25,8 +24,8 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
options: [
{ label: "HTML", value: "html" },
{ label: "TEXT", value: "text" },
]
}
],
},
},
order: 9,
col: { span: 24 },
@@ -42,7 +41,7 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
name: "a-input",
props: {
placeholder: "邮件标题模版",
}
},
},
col: { span: 24 },
})
@@ -60,30 +59,29 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
})
contentTemplate = "";
async buildContent(params: BuildContentReq): Promise<EmailContent> {
const data = {
title:"",
content:"",
url:"",
title: "",
content: "",
url: "",
...params.data,
}
const title = this.compile(this.titleTemplate)(data)
const content = this.compile(this.contentTemplate)(data)
};
const title = this.compile(this.titleTemplate)(data);
const content = this.compile(this.contentTemplate)(data);
const body: any = {
subject: title,
}
};
if (this.formatType === "html") {
body.html = content
body.html = content;
} else {
body.content = content
body.content = content;
}
return body
};
return body;
}
async buildDefaultContent(params: BuildContentReq): Promise<EmailContent> {
throw new Error("请实现 buildDefaultContent 方法")
throw new Error("请实现 buildDefaultContent 方法");
}
// compile(templateString: string) {
@@ -95,11 +93,13 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
// };
// }
compile(templateString:string) {
return new Function('data', ` with(data || {}) {
compile(templateString: string) {
return new Function(
"data",
` with(data || {}) {
return \`${templateString}\`;
}
`);
`
);
}
}
@@ -4,9 +4,9 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
@IsAddon({
addonType: "emailTemplate",
name: 'common',
title: '通用邮件模版',
desc: '使用通用的邮件标题和内容,内容外部可以自定义html进行美化',
name: "common",
title: "通用邮件模版",
desc: "使用通用的邮件标题和内容,内容外部可以自定义html进行美化",
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -15,25 +15,22 @@ export class CommonEmailTemplateProvider extends BaseEmailTemplateProvider imple
title: "可用参数",
component: {
name: "ParamsShow",
params:[
{label:"标题",value:"title"},
{label:"内容",value:"content"},
{label:"URL",value:"url"}
]
params: [
{ label: "标题", value: "title" },
{ label: "内容", value: "content" },
{ label: "URL", value: "url" },
],
},
helper:"html格式下${content}建议使用pre标签包裹:例如:&lt;pre&gt;${content}&lt;/pre&gt;",
helper: "html格式下${content}建议使用pre标签包裹:例如:&lt;pre&gt;${content}&lt;/pre&gt;",
col: { span: 24 },
})
paramIntro = "";
async buildDefaultContent(req:BuildContentReq) {
const defaultTemplate = new CommonEmailTemplateProvider()
defaultTemplate.titleTemplate = "${title}"
defaultTemplate.contentTemplate = "${content} \n\n ${url?'查看详情:'+url:''}"
defaultTemplate.formatType = "text"
return await defaultTemplate.buildContent(req)
async buildDefaultContent(req: BuildContentReq) {
const defaultTemplate = new CommonEmailTemplateProvider();
defaultTemplate.titleTemplate = "${title}";
defaultTemplate.contentTemplate = "${content} \n\n ${url?'查看详情:'+url:''}";
defaultTemplate.formatType = "text";
return await defaultTemplate.buildContent(req);
}
}
@@ -4,9 +4,9 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
@IsAddon({
addonType: "emailTemplate",
name: 'forgotPassword',
title: '忘记密码邮件模版',
desc: '您正在重置密码,您的验证码为xxxx,请勿泄露',
name: "forgotPassword",
title: "忘记密码邮件模版",
desc: "您正在重置密码,您的验证码为xxxx,请勿泄露",
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -15,21 +15,17 @@ export class ForgotPasswordEmailTemplateProvider extends BaseEmailTemplateProvid
title: "可用参数",
component: {
name: "ParamsShow",
params:[
{label:"验证码",value:"code"}
]
params: [{ label: "验证码", value: "code" }],
},
col: { span: 24 },
})
paramIntro = "";
async buildDefaultContent(req:BuildContentReq) {
const defaultTemplate = new ForgotPasswordEmailTemplateProvider()
defaultTemplate.titleTemplate = "忘记密码"
defaultTemplate.contentTemplate = "您的验证码是:${code},请勿泄露"
defaultTemplate.formatType = "text"
return await defaultTemplate.buildContent(req)
async buildDefaultContent(req: BuildContentReq) {
const defaultTemplate = new ForgotPasswordEmailTemplateProvider();
defaultTemplate.titleTemplate = "忘记密码";
defaultTemplate.contentTemplate = "您的验证码是:${code},请勿泄露";
defaultTemplate.formatType = "text";
return await defaultTemplate.buildContent(req);
}
}
@@ -4,9 +4,9 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
@IsAddon({
addonType: "emailTemplate",
name: 'pipelineResult',
title: '流水线执行结果邮件模版',
desc: '执行失败,xxxx自动化【流水线id】;运行ID:xxx,错误信息:xxxx',
name: "pipelineResult",
title: "流水线执行结果邮件模版",
desc: "执行失败,xxxx自动化【流水线id】;运行ID:xxx,错误信息:xxxx",
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -15,29 +15,27 @@ export class PipelineResultEmailTemplateProvider extends BaseEmailTemplateProvid
title: "可用参数",
component: {
name: "ParamsShow",
params:[
{label:"运行结果",value:"pipelineResult"},
{label:"流水线标题",value:"pipelineTitle"},
{label:"流水线ID",value:"pipelineId"},
{label:"运行Id",value:"historyId"},
{label:"错误信息",value:"errors"},
{label:"URL",value:"url"},
]
params: [
{ label: "运行结果", value: "pipelineResult" },
{ label: "流水线标题", value: "pipelineTitle" },
{ label: "流水线ID", value: "pipelineId" },
{ label: "运行Id", value: "historyId" },
{ label: "错误信息", value: "errors" },
{ label: "URL", value: "url" },
],
},
col: { span: 24 },
})
paramIntro = "";
async buildDefaultContent(req:BuildContentReq) {
const defaultTemplate = new PipelineResultEmailTemplateProvider()
async buildDefaultContent(req: BuildContentReq) {
const defaultTemplate = new PipelineResultEmailTemplateProvider();
const subject = "${result}${pipelineTitle}【${pipelineId}】";
const content = "流水线ID:${pipelineId},运行ID:${runtimeId} \n\n ${errors}";
defaultTemplate.titleTemplate = subject
defaultTemplate.contentTemplate = content
defaultTemplate.formatType = "text"
return await defaultTemplate.buildContent(req)
defaultTemplate.titleTemplate = subject;
defaultTemplate.contentTemplate = content;
defaultTemplate.formatType = "text";
return await defaultTemplate.buildContent(req);
}
}
@@ -4,9 +4,9 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
@IsAddon({
addonType: "emailTemplate",
name: 'registerCode',
title: '注册验证码邮件模版',
desc: '您的注册验证码为:xxxx,请勿泄露',
name: "registerCode",
title: "注册验证码邮件模版",
desc: "您的注册验证码为:xxxx,请勿泄露",
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -15,22 +15,17 @@ export class RegisterCodeEmailTemplateProvider extends BaseEmailTemplateProvider
title: "可用参数",
component: {
name: "ParamsShow",
params:[
{label:"验证码",value:"code"}
]
params: [{ label: "验证码", value: "code" }],
},
col: { span: 24 },
})
paramIntro = "";
async buildDefaultContent(req:BuildContentReq) {
const defaultTemplate = new RegisterCodeEmailTemplateProvider()
defaultTemplate.titleTemplate = "注册验证码"
defaultTemplate.contentTemplate = "您的注册验证码是:${code},请勿泄露"
defaultTemplate.formatType = "text"
return await defaultTemplate.buildContent(req)
async buildDefaultContent(req: BuildContentReq) {
const defaultTemplate = new RegisterCodeEmailTemplateProvider();
defaultTemplate.titleTemplate = "注册验证码";
defaultTemplate.contentTemplate = "您的注册验证码是:${code},请勿泄露";
defaultTemplate.formatType = "text";
return await defaultTemplate.buildContent(req);
}
}
@@ -4,9 +4,9 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
@IsAddon({
addonType: "emailTemplate",
name: 'sendCert',
title: '发送证书邮件模版',
desc: '邮件发送证书插件的邮件模版',
name: "sendCert",
title: "发送证书邮件模版",
desc: "邮件发送证书插件的邮件模版",
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -15,7 +15,7 @@ export class SendCertEmailTemplateProvider extends BaseEmailTemplateProvider imp
title: "可用参数",
component: {
name: "ParamsShow",
params:[
params: [
/**
* mainDomain,
domains,
@@ -25,26 +25,24 @@ export class SendCertEmailTemplateProvider extends BaseEmailTemplateProvider imp
key: this.cert.key,
ic: this.cert.ic,
*/
{label:"主域名",value:"mainDomain"},
{label:"全部域名",value:"domains"},
{label:"过期时间",value:"expiresTime"},
{label:"备注",value:"remark"},
{label:"证书内容",value:"crt"},
{label:"私钥内容",value:"key"},
{label:"中间证书",value:"ic"},
]
{ label: "主域名", value: "mainDomain" },
{ label: "全部域名", value: "domains" },
{ label: "过期时间", value: "expiresTime" },
{ label: "备注", value: "remark" },
{ label: "证书内容", value: "crt" },
{ label: "私钥内容", value: "key" },
{ label: "中间证书", value: "ic" },
],
},
col: { span: 24 },
})
paramIntro = "";
async buildDefaultContent(req:BuildContentReq) {
const defaultTemplate = new SendCertEmailTemplateProvider()
defaultTemplate.titleTemplate = "${title}"
defaultTemplate.contentTemplate = "${content}"
defaultTemplate.formatType = "text"
return await defaultTemplate.buildContent(req)
async buildDefaultContent(req: BuildContentReq) {
const defaultTemplate = new SendCertEmailTemplateProvider();
defaultTemplate.titleTemplate = "${title}";
defaultTemplate.contentTemplate = "${content}";
defaultTemplate.formatType = "text";
return await defaultTemplate.buildContent(req);
}
}
@@ -1 +1 @@
export * from "./email/index.js"
export * from "./email/index.js";