{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import formData from 'form-data';\nimport Mailgun from 'mailgun.js';\nimport Options from 'mailgun.js/interfaces/Options';\n\ninterface Settings {\n  defaultFrom: string;\n  defaultReplyTo: string;\n}\n\ninterface SendOptions {\n  from?: string;\n  to: string;\n  cc: string;\n  bcc: string;\n  replyTo?: string;\n  subject: string;\n  text: string;\n  html: string;\n  [key: string]: unknown;\n}\n\ninterface LegacyOptionMapper {\n  field: string;\n  fn(value: unknown): string;\n}\n\ntype ProviderOptions = Record<string, unknown>;\n\nconst optionsMap: Record<string, LegacyOptionMapper> = {\n  apiKey: { field: 'key', fn: (value) => `${value}` },\n  host: { field: 'url', fn: (value) => `https://${value || 'api.mailgun.net'}` },\n};\n\nexport default {\n  convertProviderOptions(providerOptions: ProviderOptions): Record<string, unknown> {\n    const newOptions: Record<string, unknown> = {};\n    if (typeof providerOptions === 'object') {\n      Object.keys(providerOptions).forEach((key) => {\n        if (Object.keys(optionsMap).includes(key)) {\n          newOptions[optionsMap[key].field] = optionsMap[key].fn(providerOptions[key]);\n        } else {\n          newOptions[key] = providerOptions[key];\n        }\n      });\n    }\n    return newOptions;\n  },\n\n  init(providerOptions: ProviderOptions, settings: Settings) {\n    const defaults = {\n      username: 'api',\n    };\n\n    const mailgun = new Mailgun(formData);\n    const mg = mailgun.client({\n      ...defaults,\n      ...this.convertProviderOptions(providerOptions),\n    } as Options);\n\n    return {\n      send(options: SendOptions) {\n        const { from, to, cc, bcc, replyTo, subject, text, html, ...rest } = options;\n\n        const data = {\n          from: from || settings.defaultFrom,\n          to,\n          cc,\n          bcc,\n          'h:Reply-To': replyTo || settings.defaultReplyTo,\n          subject,\n          text,\n          html,\n          ...rest,\n        };\n\n        return mg.messages.create(providerOptions.domain as string, data);\n      },\n    };\n  },\n};\n"],"names":[],"mappings":";;AA4BA,MAAM,aAAiD;AAAA,EACrD,QAAQ,EAAE,OAAO,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG;AAAA,EAClD,MAAM,EAAE,OAAO,OAAO,IAAI,CAAC,UAAU,WAAW,SAAS,iBAAiB,GAAG;AAC/E;AAEA,MAAe,QAAA;AAAA,EACb,uBAAuB,iBAA2D;AAChF,UAAM,aAAsC,CAAA;AACxC,QAAA,OAAO,oBAAoB,UAAU;AACvC,aAAO,KAAK,eAAe,EAAE,QAAQ,CAAC,QAAQ;AAC5C,YAAI,OAAO,KAAK,UAAU,EAAE,SAAS,GAAG,GAAG;AAC9B,qBAAA,WAAW,GAAG,EAAE,KAAK,IAAI,WAAW,GAAG,EAAE,GAAG,gBAAgB,GAAG,CAAC;AAAA,QAAA,OACtE;AACM,qBAAA,GAAG,IAAI,gBAAgB,GAAG;AAAA,QACvC;AAAA,MAAA,CACD;AAAA,IACH;AACO,WAAA;AAAA,EACT;AAAA,EAEA,KAAK,iBAAkC,UAAoB;AACzD,UAAM,WAAW;AAAA,MACf,UAAU;AAAA,IAAA;AAGN,UAAA,UAAU,IAAI,QAAQ,QAAQ;AAC9B,UAAA,KAAK,QAAQ,OAAO;AAAA,MACxB,GAAG;AAAA,MACH,GAAG,KAAK,uBAAuB,eAAe;AAAA,IAAA,CACpC;AAEL,WAAA;AAAA,MACL,KAAK,SAAsB;AACnB,cAAA,EAAE,MAAM,IAAI,IAAI,KAAK,SAAS,SAAS,MAAM,MAAM,GAAG,KAAA,IAAS;AAErE,cAAM,OAAO;AAAA,UACX,MAAM,QAAQ,SAAS;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc,WAAW,SAAS;AAAA,UAClC;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QAAA;AAGL,eAAO,GAAG,SAAS,OAAO,gBAAgB,QAAkB,IAAI;AAAA,MAClE;AAAA,IAAA;AAAA,EAEJ;AACF;"}