{"version":3,"sources":["../../../src/providers/FunctionProvider.mts"],"sourcesContent":["import { prepareEmails } from \"../helper.mjs\";\nimport type { Mailable } from \"../Mailable.mjs\";\nimport type { MailerProvider } from \"../MailerProvider.mjs\";\n\n/**\n * Configuration options for the FunctionProvider.\n */\nexport type FunctionProviderConfig = {\n  /** Default sender email address */\n  default_from: string;\n};\n\n/**\n * Mailer provider that uses a custom function to send emails.\n * Useful for testing or custom email sending logic.\n */\nexport class FunctionProvider implements MailerProvider {\n  private defaultFrom: string = \"\";\n\n  /**\n   * Creates a new FunctionProvider instance.\n   * @param func - Function to call for sending emails\n   * @param config - Provider configuration options\n   */\n  constructor(\n    private func: Function,\n    private config: FunctionProviderConfig,\n  ) {\n    this.defaultFrom = config.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 by calling the configured function.\n   * @param mail - The email message to send\n   */\n  async sendMail(mail: Mailable): Promise<void> {\n    mail.to = prepareEmails(mail.to);\n    mail.cc = prepareEmails(mail.cc);\n    mail.bcc = prepareEmails(mail.bcc);\n    mail.from = mail.from || this.defaultFrom;\n\n    await this.func(mail);\n  }\n}\n"],"mappings":";;AAAA,SAAS,qBAAqB;AAgBvB,MAAM,iBAA2C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtD,YACU,MACA,QACR;AAFQ;AACA;AAER,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA,EA7BF,OAgBwD;AAAA;AAAA;AAAA,EAC9C,cAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,EAkB9B,eAAe,MAAoB;AACjC,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS,MAA+B;AAC5C,SAAK,KAAK,cAAc,KAAK,EAAE;AAC/B,SAAK,KAAK,cAAc,KAAK,EAAE;AAC/B,SAAK,MAAM,cAAc,KAAK,GAAG;AACjC,SAAK,OAAO,KAAK,QAAQ,KAAK;AAE9B,UAAM,KAAK,KAAK,IAAI;AAAA,EACtB;AACF;","names":[]}