{"version":3,"sources":["../../../src/providers/SMTPProvider.mts"],"sourcesContent":["import type nodemailer from \"nodemailer\";\nimport { loadPackage, prepareEmails } from \"../helper.mjs\";\nimport type { Mailable } from \"../Mailable.mjs\";\nimport type { MailerProvider } from \"../MailerProvider.mjs\";\n\n/**\n * Configuration options for the SMTPProvider.\n */\nexport type SMTPProviderConfig = {\n  /** Nodemailer transport options for SMTP configuration */\n  nodemailer_options: nodemailer.TransportOptions;\n  /** Default sender email address */\n  default_from: string;\n};\n\n/**\n * Mailer provider that sends emails via SMTP using nodemailer.\n * Supports standard SMTP server configuration.\n */\nexport class SMTPProvider implements MailerProvider {\n  private defaultFrom: string = \"\";\n  private transporter: nodemailer.Transporter;\n  private static nodemailerModule: typeof nodemailer;\n\n  /**\n   * Creates a new SMTPProvider instance.\n   * @param options - Provider configuration options\n   */\n  constructor(options: Partial<SMTPProviderConfig> = {}) {\n    if (!SMTPProvider.nodemailerModule) {\n      SMTPProvider.nodemailerModule = loadPackage(\"nodemailer\");\n    }\n    this.transporter = SMTPProvider.nodemailerModule.createTransport(\n      options.nodemailer_options,\n    );\n    this.defaultFrom = options.default_from || \"\";\n  }\n\n  /**\n   * Sets the default sender email address.\n   * @param from - The default sender email address\n   */\n  setDefaultFrom(from: string): void {\n    this.defaultFrom = from;\n  }\n\n  /**\n   * Sends an email via SMTP.\n   * @param mail - The email message to send\n   */\n  async sendMail(mail: Mailable): Promise<void> {\n    await this.transporter.sendMail({\n      from: mail.from || this.defaultFrom,\n      to: prepareEmails(mail.to),\n      cc: prepareEmails(mail.cc),\n      bcc: prepareEmails(mail.bcc),\n      subject: mail.subject,\n      text: await mail.getTextContent(),\n      html: await mail.getHtmlContent(),\n    });\n  }\n}\n"],"mappings":";;AACA,SAAS,aAAa,qBAAqB;AAkBpC,MAAM,aAAuC;AAAA,EAnBpD,OAmBoD;AAAA;AAAA;AAAA,EAC1C,cAAsB;AAAA,EACtB;AAAA,EACR,OAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAMf,YAAY,UAAuC,CAAC,GAAG;AACrD,QAAI,CAAC,aAAa,kBAAkB;AAClC,mBAAa,mBAAmB,YAAY,YAAY;AAAA,IAC1D;AACA,SAAK,cAAc,aAAa,iBAAiB;AAAA,MAC/C,QAAQ;AAAA,IACV;AACA,SAAK,cAAc,QAAQ,gBAAgB;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,MAAoB;AACjC,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS,MAA+B;AAC5C,UAAM,KAAK,YAAY,SAAS;AAAA,MAC9B,MAAM,KAAK,QAAQ,KAAK;AAAA,MACxB,IAAI,cAAc,KAAK,EAAE;AAAA,MACzB,IAAI,cAAc,KAAK,EAAE;AAAA,MACzB,KAAK,cAAc,KAAK,GAAG;AAAA,MAC3B,SAAS,KAAK;AAAA,MACd,MAAM,MAAM,KAAK,eAAe;AAAA,MAChC,MAAM,MAAM,KAAK,eAAe;AAAA,IAClC,CAAC;AAAA,EACH;AACF;","names":[]}