import { EmailBridge } from './lib/bridge.js'
import { ImapClient, parseEmail } from './lib/imap-client.js'
import { SmtpClient } from './lib/smtp-client.js'
import { KeetClient } from './lib/keet-client.js'
import { Router } from './lib/router.js'
import { emailToEnvelope, keetToEmail, emailToKeetText, keetToEmailText, extractEmail, extractName } from './lib/adapter.js'
export {
EmailBridge,
ImapClient,
SmtpClient,
KeetClient,
Router,
parseEmail,
emailToEnvelope,
keetToEmail,
emailToKeetText,
keetToEmailText,
extractEmail,
extractName
}
// CLI entry point
const args = process.argv.slice(2)
if (args.includes('--help') || args.includes('-h')) {
console.log(`bridge-email — Email ↔ Keet bridge
Usage:
bridge-email --imap-host <host> --smtp-host <host> --user <email> --pass <password> --keet-room <roomId> [options]
Options:
--imap-host <host> IMAP server hostname
--imap-port <port> IMAP port (default: 993)
--smtp-host <host> SMTP server hostname
--smtp-port <port> SMTP port (default: 465)
--user <email> Email username/address
--pass <password> Email password (or EMAIL_PASS env)
--forward-to <email> Address to relay Keet messages to
--keet-room <roomId> Keet room ID to bridge
--keet-port <port> Keet daemon port (default: 3117)
--poll-interval <ms> IMAP poll interval in ms (default: 30000)
--help Show this help`)
process.exit(0)
}
function getArg (flag) {
const idx = args.indexOf(flag)
return idx !== -1 ? args[idx + 1] : null
}
const imapHost = getArg('--imap-host')
const smtpHost = getArg('--smtp-host')
const user = getArg('--user')
const pass = getArg('--pass') || process.env.EMAIL_PASS
const roomId = getArg('--keet-room')
const keetPort = parseInt(getArg('--keet-port') || '3117', 10)
const forwardTo = getArg('--forward-to')
const pollInterval = parseInt(getArg('--poll-interval') || '30000', 10)
const imapPort = parseInt(getArg('--imap-port') || '993', 10)
const smtpPort = parseInt(getArg('--smtp-port') || '465', 10)
if (imapHost && smtpHost && user && pass && roomId) {
const bridge = new EmailBridge({
imapHost,
imapPort,
smtpHost,
smtpPort,
user,
pass,
roomId,
forwardTo,
keetPort,
pollInterval,
onLog: (msg) => console.log(`[email-bridge] ${msg}`)
})
bridge.start().catch(err => {
console.error('Bridge failed to start:', err.message)
process.exit(1)
})
process.on('SIGINT', () => {
bridge.stop()
process.exit(0)
})
}