mirror of
https://github.com/certd/certd.git
synced 2026-07-09 06:07:37 +08:00
chore: format
This commit is contained in:
@@ -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标签包裹:例如:<pre>${content}</pre>",
|
||||
helper: "html格式下${content}建议使用pre标签包裹:例如:<pre>${content}</pre>",
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+10
-14
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+17
-19
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+10
-15
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user