| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- (function attachManagedAliasUtils(root, factory) {
- root.MultiPageManagedAliasUtils = factory();
- })(typeof self !== 'undefined' ? self : globalThis, function createManagedAliasUtilsModule() {
- const GMAIL_PROVIDER = 'gmail';
- const MAIL_2925_PROVIDER = '2925';
- const PROVIDER_CONFIGS = {
- [GMAIL_PROVIDER]: {
- baseLabel: 'Gmail 原邮箱',
- basePlaceholder: '例如 yourname@gmail.com',
- label: 'Gmail +tag 邮箱',
- parseBaseEmail(rawValue = '') {
- const value = String(rawValue || '').trim().toLowerCase();
- const match = value.match(/^([^@\s+]+)@((?:gmail|googlemail)\.com)$/i);
- if (!match) return null;
- return {
- localPart: match[1],
- domain: match[2].toLowerCase(),
- };
- },
- matchesProviderDomain(domain = '') {
- return /^(?:gmail|googlemail)\.com$/i.test(String(domain || '').trim());
- },
- matchesAliasLocalPart(baseLocalPart = '', candidateLocalPart = '') {
- return String(candidateLocalPart || '').split('+')[0] === String(baseLocalPart || '');
- },
- buildAlias(parsedBaseEmail, tag) {
- return `${parsedBaseEmail.localPart}+${tag}@${parsedBaseEmail.domain}`;
- },
- generationHint: '先填写 Gmail 原邮箱后点“生成”,也可以直接手动填写完整的 Gmail 邮箱。',
- registrationPlaceholder: '点击生成 Gmail +tag 邮箱,或手动填写完整邮箱',
- },
- [MAIL_2925_PROVIDER]: {
- baseLabel: '2925 基邮箱',
- basePlaceholder: '例如 yourname@2925.com',
- label: '2925 邮箱',
- parseBaseEmail(rawValue = '') {
- const value = String(rawValue || '').trim().toLowerCase();
- const match = value.match(/^([^@\s+]+)@(2925\.com)$/i);
- if (!match) return null;
- return {
- localPart: match[1],
- domain: match[2].toLowerCase(),
- };
- },
- matchesProviderDomain(domain = '') {
- return String(domain || '').trim().toLowerCase() === '2925.com';
- },
- matchesAliasLocalPart(baseLocalPart = '', candidateLocalPart = '') {
- const normalizedBaseLocalPart = String(baseLocalPart || '');
- const normalizedCandidateLocalPart = String(candidateLocalPart || '');
- return normalizedCandidateLocalPart === normalizedBaseLocalPart
- || normalizedCandidateLocalPart.startsWith(normalizedBaseLocalPart);
- },
- buildAlias(parsedBaseEmail, tag) {
- return `${parsedBaseEmail.localPart}${tag}@${parsedBaseEmail.domain}`;
- },
- generationHint: '先填写 2925 基邮箱后点“生成”,也可以直接手动填写完整的 2925 邮箱。',
- registrationPlaceholder: '点击生成 2925 邮箱,或手动填写完整邮箱',
- },
- };
- function getManagedAliasProviderConfig(provider = '') {
- return PROVIDER_CONFIGS[String(provider || '').trim().toLowerCase()] || null;
- }
- function isManagedAliasProvider(provider = '') {
- return Boolean(getManagedAliasProviderConfig(provider));
- }
- function parseEmailParts(rawValue = '') {
- const value = String(rawValue || '').trim().toLowerCase();
- const match = value.match(/^([^@\s]+)@([^@\s]+\.[^@\s]+)$/);
- if (!match) return null;
- return {
- localPart: match[1],
- domain: match[2],
- };
- }
- function parseManagedAliasBaseEmail(rawValue, provider = '') {
- const config = getManagedAliasProviderConfig(provider);
- return config?.parseBaseEmail(rawValue) || null;
- }
- function isManagedAliasEmail(value, provider = '', baseEmail = '') {
- const config = getManagedAliasProviderConfig(provider);
- if (!config) return false;
- const parsedEmail = parseEmailParts(value);
- if (!parsedEmail || !config.matchesProviderDomain(parsedEmail.domain)) {
- return false;
- }
- const parsedBaseEmail = parseManagedAliasBaseEmail(baseEmail, provider);
- if (!parsedBaseEmail) {
- return true;
- }
- return parsedEmail.domain === parsedBaseEmail.domain
- && config.matchesAliasLocalPart(parsedBaseEmail.localPart, parsedEmail.localPart);
- }
- function buildManagedAliasEmail(provider = '', baseEmail = '', tag = '') {
- const config = getManagedAliasProviderConfig(provider);
- if (!config) {
- throw new Error(`Unsupported managed alias provider: ${provider}`);
- }
- const parsedBaseEmail = parseManagedAliasBaseEmail(baseEmail, provider);
- if (!parsedBaseEmail) {
- throw new Error(`${config.baseLabel}格式不正确`);
- }
- const normalizedTag = String(tag || '').trim();
- if (!normalizedTag) {
- throw new Error(`${config.label}生成标签为空`);
- }
- return config.buildAlias(parsedBaseEmail, normalizedTag);
- }
- function getManagedAliasProviderUiCopy(provider = '') {
- const config = getManagedAliasProviderConfig(provider);
- if (!config) return null;
- return {
- baseLabel: config.baseLabel,
- basePlaceholder: config.basePlaceholder,
- buttonLabel: '生成',
- successVerb: '生成',
- label: config.label,
- placeholder: config.registrationPlaceholder,
- hint: config.generationHint,
- };
- }
- return {
- buildManagedAliasEmail,
- getManagedAliasProviderConfig,
- getManagedAliasProviderUiCopy,
- isManagedAliasEmail,
- isManagedAliasProvider,
- parseEmailParts,
- parseManagedAliasBaseEmail,
- };
- });
|