alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
101 lines • 3.61 kB
TypeScript
import { Static } from "alepha";
import { EmailProvider, EmailSendOptions } from "alepha/email";
import { Transporter } from "nodemailer";
//#region ../../src/email/smtp/providers/NodemailerEmailProvider.d.ts
/**
* Nodemailer connection pooling and rate limiting options
*/
declare const nodemailerEmailOptions: import("alepha").Atom<import("zod").ZodObject<{
pool: import("zod").ZodOptional<import("zod").ZodBoolean>;
maxConnections: import("zod").ZodOptional<import("zod").ZodNumber>;
maxMessages: import("zod").ZodOptional<import("zod").ZodNumber>;
rateDelta: import("zod").ZodOptional<import("zod").ZodNumber>;
rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
}, import("zod/v4/core").$strip>, "alepha.email.nodemailer.options">;
type NodemailerEmailProviderOptions = Static<typeof nodemailerEmailOptions.schema>;
declare module "alepha" {
interface State {
[nodemailerEmailOptions.key]: NodemailerEmailProviderOptions;
}
}
/**
* Email provider using Nodemailer for SMTP transport.
*
* Configuration is provided via environment variables:
* - EMAIL_HOST: SMTP server host
* - EMAIL_PORT: SMTP server port (default: 587)
* - EMAIL_USER: SMTP authentication username
* - EMAIL_PASS: SMTP authentication password
* - EMAIL_FROM: Default from email address
* - EMAIL_SECURE: Use secure connection (default: false)
*
* Advanced pooling/rate limiting options can be configured via atom:
* @see {@link nodemailerEmailOptions}
*
* @example
* ```typescript
* // Configure via environment variables
* // EMAIL_HOST=smtp.example.com
* // EMAIL_PORT=587
* // EMAIL_USER=user@example.com
* // EMAIL_PASS=secret
* // EMAIL_FROM=noreply@example.com
*
* // Optionally configure pooling via atom
* alepha.state.set(nodemailerEmailOptions.key, {
* pool: true,
* maxConnections: 5,
* rateLimit: 10,
* });
* ```
*/
declare class NodemailerEmailProvider implements EmailProvider {
protected readonly env: {
EMAIL_HOST?: string | undefined;
EMAIL_PORT: number;
EMAIL_USER?: string | undefined;
EMAIL_PASS?: string | undefined;
EMAIL_FROM?: string | undefined;
EMAIL_SECURE: boolean;
};
protected readonly log: import("alepha/logger").Logger;
protected readonly options: Readonly<{
pool?: boolean | undefined;
maxConnections?: number | undefined;
maxMessages?: number | undefined;
rateDelta?: number | undefined;
rateLimit?: number | undefined;
}>;
protected transporter: Transporter | null;
protected get host(): string;
protected get port(): number;
protected get secure(): boolean;
protected get user(): string | undefined;
protected get pass(): string | undefined;
protected get fromAddress(): string;
protected getTransporter(): Transporter;
send(options: EmailSendOptions): Promise<void>;
protected createTransporter(): Transporter;
/**
* Verify the connection to the email server.
*/
verify(): Promise<boolean>;
/**
* Close the transporter connection.
*/
close(): void;
protected readonly onStart: import("alepha").HookPrimitive<"start">;
protected readonly onStop: import("alepha").HookPrimitive<"stop">;
}
//#endregion
//#region ../../src/email/smtp/index.d.ts
/**
* Plugin for Alepha Email that provides SMTP capabilities via Nodemailer.
*
* @see {@link NodemailerEmailProvider}
* @module alepha.email.smtp
*/
declare const AlephaEmailSmtp: import("alepha").Service<import("alepha").Module>;
//#endregion
export { AlephaEmailSmtp, NodemailerEmailProvider, NodemailerEmailProviderOptions, nodemailerEmailOptions };
//# sourceMappingURL=index.d.ts.map