platform-codebase/features/email/shared/README.md

99 lines
2.5 KiB
Markdown
Executable file

# @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<T>` - 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.