UNPKG

waitlist-mailer

Version:

Modern, modular TypeScript library for managing waitlists with pluggable storage and mail providers. Supports MongoDB, SQL databases, and custom adapters with zero required dependencies for basic usage.

67 lines (61 loc) 1.92 kB
/** * @fileoverview * waitlist-mailer v2.1.0 - Modern, modular TypeScript library for managing waitlists * * This library provides a clean, dependency-injection based architecture for: * - Managing email waitlists * - Sending confirmation emails * - Flexible storage backends (Memory, MongoDB, PostgreSQL, MySQL, SQLite) * - Custom mail providers (Nodemailer, Console, custom implementations) * * @example * ```typescript * import { WaitlistManager } from 'waitlist-mailer'; * import { MemoryStorage } from 'waitlist-mailer/adapters/memory'; * import { NodemailerProvider } from 'waitlist-mailer/adapters/nodemailer'; * * const storage = new MemoryStorage(); * const mailer = new NodemailerProvider({ * host: 'smtp.example.com', * port: 587, * user: 'sender@example.com', * pass: 'password' * }); * * const waitlist = new WaitlistManager({ * storage, * mailer, * companyName: 'My App' * }); * * // Simple usage * const result = await waitlist.join('user@example.com', { * name: 'John Doe', * source: 'ProductHunt' * }); * ``` */ // Core exports export { WaitlistManager } from './core/WaitlistManager'; // Type exports export type { WaitlistEntry, JoinResult, StorageProvider, MailProvider, WaitlistManagerConfig, EmailContext, SearchOptions, } from './types'; // Storage adapters export { MemoryStorage } from './adapters/storage/MemoryStorage'; export { MongooseStorage, type MongooseStorageConfig } from './adapters/storage/MongooseStorage'; export { SequelizeStorage, type SequelizeStorageConfig } from './adapters/storage/SequelizeStorage'; // Mail adapters export { NodemailerProvider, type NodemailerConfig } from './adapters/mail/NodemailerProvider'; export { ConsoleMailProvider } from './adapters/mail/ConsoleMailProvider'; /** * Version of the library. * Used for debugging and version checks. */ export const VERSION = '2.1.0';