payload-plugin-newsletter
Version:
Complete newsletter management plugin for Payload CMS with subscriber management, magic link authentication, and email service integration
61 lines (55 loc) • 1.96 kB
text/typescript
import { SerializedEditorState } from 'lexical';
import { PayloadRequest } from 'payload';
import { NewsletterPluginConfig, BroadcastProviderConfig, ResendProviderConfig } from './types.cjs';
/**
* DOMPurify configuration for email-safe HTML
*/
declare const EMAIL_SAFE_CONFIG: {
ALLOWED_TAGS: string[];
ALLOWED_ATTR: string[];
ALLOWED_STYLES: {
'*': string[];
};
FORBID_TAGS: string[];
FORBID_ATTR: string[];
};
/**
* Converts Lexical editor state to email-safe HTML
*/
declare function convertToEmailSafeHtml(editorState: SerializedEditorState | undefined | null, options?: {
wrapInTemplate?: boolean;
preheader?: string;
mediaUrl?: string;
customBlockConverter?: (node: any, mediaUrl?: string) => Promise<string>;
payload?: any;
populateFields?: string[] | ((blockType: string) => string[]);
customWrapper?: (content: string, options?: {
preheader?: string;
subject?: string;
documentData?: Record<string, any>;
}) => string | Promise<string>;
subject?: string;
documentData?: Record<string, any>;
}): Promise<string>;
/**
* Email HTML validation utilities
*/
interface ValidationResult {
valid: boolean;
warnings: string[];
errors: string[];
stats: {
sizeInBytes: number;
imageCount: number;
linkCount: number;
hasExternalStyles: boolean;
hasJavaScript: boolean;
};
}
/**
* Validate HTML for email compatibility
*/
declare function validateEmailHtml(html: string): ValidationResult;
declare function getBroadcastConfig(req: PayloadRequest, pluginConfig: NewsletterPluginConfig): Promise<BroadcastProviderConfig | null>;
declare function getResendConfig(req: PayloadRequest, pluginConfig: NewsletterPluginConfig): Promise<ResendProviderConfig | null>;
export { EMAIL_SAFE_CONFIG, type ValidationResult, convertToEmailSafeHtml, getBroadcastConfig, getResendConfig, validateEmailHtml };