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
* `