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
text/typescript
/**
* @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';