manifest
Version:
Self-hosted Manifest LLM router with embedded server, SQLite database, and dashboard
51 lines • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResendProvider = void 0;
const logger = {
warn: (msg) => console.warn(`[Resend] ${msg}`),
error: (msg) => console.error(`[Resend] ${msg}`),
log: (msg) => console.log(`[Resend] ${msg}`),
};
class ResendProvider {
name = 'resend';
apiKey;
defaultFrom;
constructor(config) {
this.apiKey = config.apiKey;
this.defaultFrom = config.fromEmail ?? 'noreply@manifest.build';
}
async send(opts) {
if (!this.apiKey) {
logger.warn('Resend not configured — skipping email send');
return false;
}
try {
const res = await fetch('https://api.resend.com/emails', {
method: 'POST',
headers: {
Authorization: `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: opts.from ?? `Manifest <${this.defaultFrom}>`,
to: [opts.to],
subject: opts.subject,
html: opts.html,
...(opts.text ? { text: opts.text } : {}),
}),
});
if (!res.ok) {
logger.error(`Resend returned ${res.status}: ${await res.text()}`);
return false;
}
logger.log(`Email sent to ${opts.to}: ${opts.subject}`);
return true;
}
catch (err) {
logger.error(`Failed to send email: ${err}`);
return false;
}
}
}
exports.ResendProvider = ResendProvider;
//# sourceMappingURL=resend.provider.js.map