UNPKG

alepha

Version:

Easy-to-use modern TypeScript framework for building many kind of applications.

102 lines 3.45 kB
import { Alepha } from "alepha"; import { EmailProvider, EmailSendOptions } from "alepha/email"; //#region ../../src/email/cloudflare/providers/CloudflareEmailProvider.d.ts /** * Default Cloudflare Email Sending binding name. * * Matches the convention used by other Alepha Cloudflare providers * (e.g. `KV_CACHE` for {@link CloudflareKVProvider}). */ declare const SEND_EMAIL_DEFAULT_BINDING = "SEND_EMAIL"; /** * Shape of the Cloudflare Email Sending binding (public beta, 2026-04-16). * * @see https://developers.cloudflare.com/email-service/ */ interface CloudflareEmailBinding { send(message: CloudflareEmailSendMessage): Promise<CloudflareEmailSendResult>; } interface CloudflareEmailSendMessage { to: string | string[]; from: string | { email: string; name?: string; }; subject: string; html?: string; text?: string; cc?: string | string[]; bcc?: string | string[]; reply_to?: string | string[]; headers?: Record<string, string>; } interface CloudflareEmailSendResult { id?: string; status?: "queued" | "sent" | "bounced" | string; } /** * Email provider using Cloudflare's Email Sending API via a Workers binding. * * Requires the Workers Paid plan and a verified sender address on the * `EMAIL_FROM` domain. * * **Required Cloudflare binding:** * - `SEND_EMAIL` — an Email Sending binding in wrangler configuration * * Configuration is provided via environment variables: * - `EMAIL_FROM`: Default sender email address * * @example * ```toml * # wrangler.toml * [[send_email]] * binding = "SEND_EMAIL" * ``` * * @example * ```typescript * // app.ts * import { AlephaEmailCloudflare } from "alepha/email/cloudflare"; * * const app = Alepha.create().with(AlephaEmailCloudflare); * ``` */ declare class CloudflareEmailProvider implements EmailProvider { protected readonly alepha: Alepha; protected readonly env: { EMAIL_FROM?: string | undefined; }; protected readonly log: import("alepha/logger").Logger; protected binding?: CloudflareEmailBinding; protected readonly onStart: import("alepha").HookPrimitive<"start">; send(options: EmailSendOptions): Promise<void>; /** * Map the configured `EMAIL_FROM` to Cloudflare's `from` shape. An RFC 5322 * display-name form — `Name <addr@host>` (the name may be quoted) — is split * into `{ email, name }` so Cloudflare renders the sender's display name * (e.g. `Lore <noreply@lore.alepha.dev>` → "Lore"). A bare address is passed * through unchanged. * * The object key is `email` (not `address`) — that is the field the * Cloudflare Email Service Workers API expects. Sending `{ address, name }` * makes the API reject the message with an opaque "internal error". */ protected resolveFrom(value: string): string | { email: string; name?: string; }; protected getBinding(): CloudflareEmailBinding; } //#endregion //#region ../../src/email/cloudflare/index.d.ts /** * Plugin for Alepha Email that sends through Cloudflare's Email Sending API * via a Workers binding. * * @see {@link CloudflareEmailProvider} * @module alepha.email.cloudflare */ declare const AlephaEmailCloudflare: import("alepha").Service<import("alepha").Module>; //#endregion export { AlephaEmailCloudflare, CloudflareEmailBinding, CloudflareEmailProvider, CloudflareEmailSendMessage, CloudflareEmailSendResult, SEND_EMAIL_DEFAULT_BINDING }; //# sourceMappingURL=index.d.ts.map