UNPKG

@api-buddy/sendgrid

Version:

API Buddy integration for SendGrid - Email delivery service for transactional and marketing emails

3 lines 2.91 kB
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); import p from"@sendgrid/mail";var u=class{config;initialized=!1;constructor(e){this.config=e,this.initialize()}initialize(){if(!this.initialized){if(!this.config.apiKey&&!process.env.SENDGRID_API_KEY)throw new Error("SendGrid API key is required. Either provide it in the config or set the SENDGRID_API_KEY environment variable.");p.setApiKey(this.config.apiKey||process.env.SENDGRID_API_KEY),this.initialized=!0}}async sendEmail(e){this.initialized||this.initialize();try{let i={to:e.to,from:e.from||this.config.defaultFrom||"no-reply@example.com",subject:e.subject,text:e.text,html:e.html,templateId:e.templateId,dynamicTemplateData:e.dynamicTemplateData,attachments:e.attachments,categories:e.categories,customArgs:e.customArgs,headers:e.headers,mailSettings:e.mailSettings||this.config.mailSettings,trackingSettings:e.trackingSettings||this.config.trackingSettings,replyTo:e.replyTo||this.config.defaultReplyTo,sendAt:e.sendAt,batchId:e.batchId,asm:e.asm||this.config.asm,ipPoolName:e.ipPoolName||this.config.ipPoolName},[s]=await p.send(i);return{success:!0,statusCode:s.statusCode,headers:s.headers,body:s.body}}catch(i){throw console.error("Error sending email:",i),i}}async sendMultipleEmails(e){this.initialized||this.initialize();try{let i=e.map(t=>({to:t.to,from:t.from||this.config.defaultFrom||"no-reply@example.com",subject:t.subject,text:t.text,html:t.html,templateId:t.templateId,dynamicTemplateData:t.dynamicTemplateData,attachments:t.attachments,categories:t.categories,customArgs:t.customArgs,headers:t.headers,mailSettings:t.mailSettings||this.config.mailSettings,trackingSettings:t.trackingSettings||this.config.trackingSettings,replyTo:t.replyTo||this.config.defaultReplyTo,sendAt:t.sendAt,batchId:t.batchId,asm:t.asm||this.config.asm,ipPoolName:t.ipPoolName||this.config.ipPoolName}));return{success:!0,responses:(await p.send(i,!0)).map(t=>({statusCode:t.statusCode,headers:t.headers,body:t.body}))}}catch(i){throw console.error("Error sending multiple emails:",i),i}}},h=new u({apiKey:process.env.SENDGRID_API_KEY||""}),f=r=>h.sendEmail(r),g=r=>h.sendMultipleEmails(r);import{useState as a,useCallback as l}from"react";function I(){let[r,e]=a(!1),[i,s]=a(null),[t,o]=a(null),d=l(async m=>{e(!0),s(null);try{let n=await f(m);return o(n),n}catch(n){throw s(n),n}finally{e(!1)}},[]),c=l(()=>{s(null),o(null)},[]);return{send:d,isLoading:r,error:i,response:t,reset:c}}function b(){let[r,e]=a(!1),[i,s]=a(null),[t,o]=a(null),d=l(async m=>{e(!0),s(null);try{let n=await g(m);return o(n),n}catch(n){throw s(n),n}finally{e(!1)}},[]),c=l(()=>{s(null),o(null)},[]);return{send:d,isLoading:r,error:i,response:t,reset:c}}export{u as SendGridClient,h as default,f as sendEmail,h as sendGridClient,g as sendMultipleEmails,I as useSendEmail,b as useSendMultipleEmails}; //# sourceMappingURL=index.mjs.map