diff --git a/build.config.ts b/build.config.ts new file mode 100644 index 0000000..efd7065 --- /dev/null +++ b/build.config.ts @@ -0,0 +1,17 @@ +import { defineBuildConfig } from "unbuild"; + +export default defineBuildConfig({ + entries: [ + "src/index", + "src/services/mailgun", + "src/services/plunk", + "src/services/postmark", + "src/services/resend", + "src/services/sendgrid", + ], + clean: false, + declaration: true, + rollup: { + emitCJS: true, + }, +}); diff --git a/package.json b/package.json index 63ac1e5..cd6dad7 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,31 @@ "types": "./dist/index.d.ts", "import": "./dist/index.mjs", "require": "./dist/index.cjs" + }, + "./mailgun": { + "types": "./dist/services/mailgun.d.ts", + "import": "./dist/services/mailgun.mjs", + "require": "./dist/services/mailgun.cjs" + }, + "./plunk": { + "types": "./dist/services/plunk.d.ts", + "import": "./dist/services/plunk.mjs", + "require": "./dist/services/plunk.cjs" + }, + "./postmark": { + "types": "./dist/services/postmark.d.ts", + "import": "./dist/services/postmark.mjs", + "require": "./dist/services/postmark.cjs" + }, + "./resend": { + "types": "./dist/services/resend.d.ts", + "import": "./dist/services/resend.mjs", + "require": "./dist/services/resend.cjs" + }, + "./sendgrid": { + "types": "./dist/services/sendgrid.d.ts", + "import": "./dist/services/sendgrid.mjs", + "require": "./dist/services/sendgrid.cjs" } }, "main": "./dist/index.cjs", diff --git a/src/index.ts b/src/index.ts index 2e41ab5..f7eb9b9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,34 +1,30 @@ -import { PlunkService } from "./services/plunk"; -import { PostmarkService } from "./services/postmark"; -import { ResendService } from "./services/resend"; -import { SendGridService } from "./services/sendgrid"; -import { MailgunService } from "./services/mailgun"; import type { EmailProvider } from "./types/email-options"; import type { EmailService } from "./types/email-service"; /** * Factory function to get the email service based on the provider * @param provider - The email provider - * @returns The email service instance + * @returns A Promise that resolves to the email service instance * @throws Error if the provider is not supported */ -export function useEmail(provider: EmailProvider): EmailService { +export async function useEmail(provider: EmailProvider): Promise { switch (provider) { case "resend": { + const { ResendService } = await import("./services/resend"); return new ResendService(); } case "plunk": { + const { PlunkService } = await import("./services/plunk"); return new PlunkService(); } case "sendgrid": { + const { SendGridService } = await import("./services/sendgrid"); return new SendGridService(); } case "postmark": { + const { PostmarkService } = await import("./services/postmark"); return new PostmarkService(); } - case "mailgun": { - return MailgunService(); - } default: { throw new Error(`Unsupported email provider: ${provider}`); } diff --git a/src/services/resend.ts b/src/services/resend.ts index bc144e6..ee03520 100644 --- a/src/services/resend.ts +++ b/src/services/resend.ts @@ -15,7 +15,6 @@ export class ResendService implements EmailService { } async send(emailOptions: EmailOptions): Promise { - console.log(this.apiToken); if (!this.apiToken) { throw new Error("Resend API token is missing"); }