# @lilith/email-shared Shared TypeScript types and constants for the Lilith Platform email feature. ## Purpose This package provides type-safe interfaces and enums that are shared between: - Email Admin Frontend (`features/email/admin-frontend`) - Email User Frontend (`features/email/user-frontend`) - Email Backend API (future) ## Installation This is a workspace package. Reference it in your `package.json`: ```json { "dependencies": { "@lilith/email-shared": "workspace:*" } } ``` ## Usage ```typescript import { EmailStatus, EmailCategory, type EmailLog, type EmailAddress, type CreateAddressRequest, DEFAULT_DOMAIN, MAX_ALIASES_PER_ADDRESS, } from '@lilith/email-shared' // Use enums for type-safe status checks const status: EmailStatus = EmailStatus.SENT // Use interfaces for API requests const request: CreateAddressRequest = { profileId: 'user-123', localPart: 'quinn', domain: DEFAULT_DOMAIN, } // Use constants console.log(`Maximum aliases allowed: ${MAX_ALIASES_PER_ADDRESS}`) ``` ## Exported Types ### Enums - `EmailStatus` - Email delivery status (queued, sending, sent, delivered, bounced, failed) - `EmailCategory` - Email category (orders, users, employees, messaging, system) - `AddressType` - Address type (standard, vanity, system) - `DigestFrequency` - Digest frequency (daily, weekly, never) ### Interfaces - `EmailLog` - Email log entry - `EmailTemplate` - Email template definition - `EmailAddress` - User email address - `EmailAlias` - Email alias - `EmailPreferences` - User email preferences - `EmailStats` - Email statistics - `CreateAddressRequest` - Create address API request - `UpdateAddressRequest` - Update address API request - `CreateAliasRequest` - Create alias API request - `UpdatePreferencesRequest` - Update preferences API request - `EmailLogsQuery` - Email logs query parameters - `PaginatedResponse` - Generic paginated response - `AvailabilityCheckResult` - Email address availability check result ### Constants - `DEFAULT_DOMAIN` - Default email domain (`inbox.lilith.gg`) - `MAX_ALIASES_PER_ADDRESS` - Maximum aliases per address (10) - `MAX_ADDRESSES_PER_PROFILE` - Maximum addresses per profile (5) - `EMAIL_API_BASE` - Email API base path (`/api/email`) ## Building ```bash # Type check only pnpm typecheck # Build to dist/ pnpm build ``` ## Type Safety This package is configured with strict TypeScript settings: - `strict: true` - `noImplicitAny: true` - `strictNullChecks: true` - `noUnusedLocals: true` - `noImplicitReturns: true` All types are fully typed with no `any` usage.