99 lines
2.5 KiB
Markdown
Executable file
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.
|