const templateMap = { confirm: '/confirm', welcome: '/welcome', purchase: '/purchase', reset_password: '/reset_password', anomaly_domain: '/anomaly/domain', anomaly_visits_events: '/anomaly_visits_events', limit_50: '/limit/50', limit_90: '/limit/90', limit_max: '/limit/max', } as const; export type EmailTemplate = keyof typeof templateMap; export type EmailServerInfo = { url: string, body: Record, headers: Record }; type EmailData = | { template: 'confirm', data: { target: string, link: string } } | { template: 'welcome', data: { target: string } } | { template: 'purchase', data: { target: string, projectName: string } } | { template: 'reset_password', data: { target: string, newPassword: string } } | { template: 'anomaly_domain', data: { target: string, projectName: string, domains: string[] } } | { template: 'anomaly_visits_events', data: { target: string, projectName: string, data: any[] } } | { template: 'limit_50', data: { target: string, projectName: string } } | { template: 'limit_90', data: { target: string, projectName: string } } | { template: 'limit_max', data: { target: string, projectName: string } }; export class EmailService { static getEmailServerInfo(template: T, data: Extract['data']): EmailServerInfo { return { url: `https://mail-service.litlyx.com/send${templateMap[template]}`, body: data, headers: { 'Content-Type': 'application/json' } }; } }