@visulima/email
Version:
A comprehensive email library with multi-provider support, crypto utilities, and template engines
79 lines (78 loc) • 3.56 kB
TypeScript
import type { EmailAddress, EmailOptions } from "../../types.d.ts";
/**
* Common payload building utilities for email providers
*/
export declare class PayloadBuilder {
private payload;
constructor(initialPayload?: Record<string, unknown>);
/**
* Sets a field in the payload.
* @param key The field key to set.
* @param value The field value to set (undefined and null values are ignored).
* @returns This instance for method chaining.
*/
set(key: string, value: unknown): this;
/**
* Sets multiple fields conditionally in the payload.
* @param fields An object containing key-value pairs to set.
* @returns This instance for method chaining.
*/
setMultiple(fields: Record<string, unknown>): this;
/**
* Adds recipients (to, cc, bcc) to the payload using a formatter function.
* @param emailOptions The email options containing recipient addresses.
* @param formatter A function to format the addresses for the specific provider.
* @returns This instance for method chaining.
*/
addRecipients(emailOptions: EmailOptions, formatter: (addresses: EmailAddress | EmailAddress[]) => unknown): this;
/**
* Adds standard email fields (subject, html, text, replyTo) to the payload.
* @param emailOptions The email options containing the standard fields.
* @returns This instance for method chaining.
*/
addStandardFields(emailOptions: EmailOptions): this;
/**
* Adds template-related fields to the payload.
* @param emailOptions The email options containing template information.
* @param templateKey The key name to use for the template ID (default: "template_id").
* @returns This instance for method chaining.
*/
addTemplateFields(emailOptions: EmailOptions, templateKey?: string): this;
/**
* Adds scheduling fields to the payload for delayed sending.
* @param emailOptions The email options containing scheduling information.
* @returns This instance for method chaining.
*/
addSchedulingFields(emailOptions: EmailOptions): this;
/**
* Adds tags to the payload for email categorization.
* @param emailOptions The email options containing tags.
* @param formatter An optional function to format tags for the specific provider.
* @returns This instance for method chaining.
*/
addTags(emailOptions: EmailOptions, formatter?: (tags: unknown[]) => unknown): this;
/**
* Adds custom headers to the payload.
* @param emailOptions The email options containing custom headers.
* @param formatter An optional function to format headers for the specific provider.
* @returns This instance for method chaining.
*/
addHeaders(emailOptions: EmailOptions, formatter?: (headers: Record<string, string>) => unknown): this;
/**
* Adds a batch ID to the payload for batch email operations.
* @param emailOptions The email options containing the batch ID.
* @returns This instance for method chaining.
*/
addBatchId(emailOptions: EmailOptions): this;
/**
* Builds and returns the final payload object.
* @returns The complete payload object ready for API submission.
*/
build(): Record<string, unknown>;
}
/**
* Creates a new payload builder instance.
* @param initialPayload Optional initial payload object to start with.
* @returns A new PayloadBuilder instance.
*/
export declare const createPayloadBuilder: (initialPayload?: Record<string, unknown>) => PayloadBuilder;