UNPKG

@visulima/email

Version:

A comprehensive email library with multi-provider support, crypto utilities, and template engines

79 lines (78 loc) 3.56 kB
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;