import { decode as decodeHtmlEntities } from 'html-entities'; import { mochiEvents } from '../events'; import { applyFilter } from '../extensions'; import { getEmailRuntime } from './config'; import { renderEmailComponent } from './render'; import { buildTransport } from './transports'; import { EmailError, type MochiEmailMessage, type MochiEmailResult, type ResolvedEmailMessage } from './types'; function toArray(value: string | string[] | undefined): string[] | undefined { if (value === undefined) { return undefined; } const list = (Array.isArray(value) ? value : [value]).map((a) => a.trim()).filter(Boolean); return list.length > 0 ? list : undefined; } /** * HTML → plain-text fallback keeping HTML mails multipart. It drops every tag, suppresses the *contents* of * `