{"version":3,"sources":["../../../src/providers/PostmarkProvider.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 PostmarkProvider.\n */\nexport type PostmarkProviderConfig = {\n  /** Postmark server token */\n  server_token: string;\n  /** Default sender email address */\n  default_from: string;\n};\n\n/**\n * Mailer provider that sends emails via Postmark API.\n * Supports server token from configuration or POSTMARK_SERVER_TOKEN environment variable.\n */\nexport class PostmarkProvider implements MailerProvider {\n  private defaultFrom: string = \"\";\n  private serverToken: string;\n\n  /**\n   * Creates a new PostmarkProvider instance.\n   * @param options - Provider configuration options\n   */\n  constructor(options: Partial<PostmarkProviderConfig> = {}) {\n    this.serverToken =\n      options.server_token || process.env.POSTMARK_SERVER_TOKEN || \"\";\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 Postmark API.\n   * @param mail - The email message to send\n   * @throws Error if the Postmark API request fails\n   */\n  async sendMail(mail: Mailable): Promise<void> {\n    const toEmails = prepareEmails(mail.to);\n    const ccEmails = prepareEmails(mail.cc);\n    const bccEmails = prepareEmails(mail.bcc);\n\n    const emailData = {\n      From: mail.from || this.defaultFrom,\n      To: toEmails.join(\",\"),\n      Cc: ccEmails.length > 0 ? ccEmails.join(\",\") : undefined,\n      Bcc: bccEmails.length > 0 ? bccEmails.join(\",\") : undefined,\n      Subject: mail.subject,\n      TextBody: await mail.getTextContent(),\n      HtmlBody: await mail.getHtmlContent(),\n    };\n\n    const response = await fetch(\"https://api.postmarkapp.com/email\", {\n      method: \"POST\",\n      headers: {\n        \"X-Postmark-Server-Token\": this.serverToken,\n        \"Content-Type\": \"application/json\",\n        Accept: \"application/json\",\n      },\n      body: JSON.stringify(emailData),\n    });\n\n    if (!response.ok) {\n      throw new Error(\n        `Postmark API error: ${response.status} ${response.statusText}`,\n      );\n    }\n  }\n}\n"],"mappings":";;AAAA,SAAS,qBAAqB;AAkBvB,MAAM,iBAA2C;AAAA,EAlBxD,OAkBwD;AAAA;AAAA;AAAA,EAC9C,cAAsB;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMR,YAAY,UAA2C,CAAC,GAAG;AACzD,SAAK,cACH,QAAQ,gBAAgB,QAAQ,IAAI,yBAAyB;AAC/D,SAAK,cAAc,QAAQ,gBAAgB;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,MAAoB;AACjC,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,SAAS,MAA+B;AAC5C,UAAM,WAAW,cAAc,KAAK,EAAE;AACtC,UAAM,WAAW,cAAc,KAAK,EAAE;AACtC,UAAM,YAAY,cAAc,KAAK,GAAG;AAExC,UAAM,YAAY;AAAA,MAChB,MAAM,KAAK,QAAQ,KAAK;AAAA,MACxB,IAAI,SAAS,KAAK,GAAG;AAAA,MACrB,IAAI,SAAS,SAAS,IAAI,SAAS,KAAK,GAAG,IAAI;AAAA,MAC/C,KAAK,UAAU,SAAS,IAAI,UAAU,KAAK,GAAG,IAAI;AAAA,MAClD,SAAS,KAAK;AAAA,MACd,UAAU,MAAM,KAAK,eAAe;AAAA,MACpC,UAAU,MAAM,KAAK,eAAe;AAAA,IACtC;AAEA,UAAM,WAAW,MAAM,MAAM,qCAAqC;AAAA,MAChE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,2BAA2B,KAAK;AAAA,QAChC,gBAAgB;AAAA,QAChB,QAAQ;AAAA,MACV;AAAA,MACA,MAAM,KAAK,UAAU,SAAS;AAAA,IAChC,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,uBAAuB,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AACF;","names":[]}