@bernierllc/todo-list
Version:
Pure todo list business logic and management utilities for @bernierllc packages
215 lines (160 loc) • 6.21 kB
Markdown
# @bernierllc/todo-list
Pure todo list business logic and management utilities for @bernierllc packages.
## Installation
```bash
npm install @bernierllc/todo-list
```
## Usage
```typescript
import { TaskManager, CreateTaskRequest } from '@bernierllc/todo-list';
const taskManager = new TaskManager();
// Create a new task
const createRequest: CreateTaskRequest = {
userId: '123e4567-e89b-12d3-a456-426614174000',
type: 'review',
title: 'Review pull request',
description: 'Review the new authentication feature PR',
priority: 'high'
};
const result = taskManager.createTask(createRequest);
if (result.success) {
console.log('Task created:', result.data);
} else {
console.error('Error:', result.error);
}
// Get all tasks
const tasksResult = taskManager.getTasks();
if (tasksResult.success) {
console.log('All tasks:', tasksResult.data);
}
// Filter tasks
const filteredResult = taskManager.getTasks({
userId: '123e4567-e89b-12d3-a456-426614174000',
status: 'pending',
priority: 'urgent'
});
// Complete a task
const completionResult = taskManager.completeTask(result.data!.id, {
completedBy: '123e4567-e89b-12d3-a456-426614174000',
notes: 'Completed successfully'
});
// Get analytics
const analyticsResult = taskManager.getTaskAnalytics();
if (analyticsResult.success) {
console.log('Completion rate:', analyticsResult.data!.completionRate);
}
```
## API Reference
### TaskManager
#### Core Methods
- `createTask(request: CreateTaskRequest): TaskOperationResult<Task>`
- `getTasks(filters?: TaskFilters): TaskOperationResult<Task[]>`
- `getTask(id: string): TaskOperationResult<Task | null>`
- `updateTask(id: string, request: UpdateTaskRequest, userId: string): TaskOperationResult<Task>`
- `completeTask(id: string, request: TaskCompletionRequest): TaskOperationResult<Task>`
- `deleteTask(id: string, userId: string): TaskOperationResult<void>`
#### Task Type Management
- `getTaskTypes(): TaskOperationResult<TaskType[]>`
- `createTaskType(taskType: TaskType): TaskOperationResult<TaskType>`
- `updateTaskType(id: string, updates: Partial<TaskType>): TaskOperationResult<TaskType>`
- `deleteTaskType(id: string): TaskOperationResult<void>`
#### Analytics & History
- `getTaskAnalytics(filters?: TaskFilters): TaskOperationResult<TaskAnalytics>`
- `getTaskHistory(taskId?: string): TaskOperationResult<TaskHistoryItem[]>`
#### Validation
- `validateTask(task: Partial<Task>): TaskValidationResult`
#### Utilities
- `getTaskCount(): number`
- `getTaskTypeCount(): number`
- `clearTasks(): void` (for testing)
- `clearTaskTypes(): void` (for testing)
### Types
#### Task
```typescript
interface Task {
readonly id: string;
readonly userId: string;
readonly groupId?: string;
readonly type: TaskType;
readonly title: string;
readonly description: string;
readonly priority: TaskPriority;
readonly dueDate?: string;
readonly status: TaskStatus;
readonly relatedId?: string;
readonly actionUrl?: string;
readonly canCompleteDirectly: boolean;
readonly createdAt: string;
readonly updatedAt: string;
readonly completedAt?: string;
readonly completedBy?: string;
}
```
#### TaskType
```typescript
interface TaskType {
readonly id: string;
readonly name: string;
readonly description: string;
readonly icon: string;
readonly defaultPriority: TaskPriority;
}
```
#### TaskPriority
```typescript
type TaskPriority = 'urgent' | 'high' | 'normal';
```
#### TaskStatus
```typescript
type TaskStatus = 'pending' | 'in-progress' | 'completed';
```
### Default Task Types
The TaskManager comes with 4 built-in task types:
- **review** - Review Required (high priority)
- **approval** - Approval Needed (urgent priority)
- **update** - Update Required (normal priority)
- **notification** - Notification (normal priority)
## Configuration
All requests are validated using Zod schemas. Invalid data will result in operation failure with descriptive error messages.
### Validation Rules
- **Task titles**: Required, 1-255 characters
- **Task descriptions**: Required, 1-1000 characters
- **User IDs**: Must be valid UUIDs
- **Due dates**: Must be valid ISO datetime strings
- **Action URLs**: Must be valid URL format
## Error Handling
All methods return `TaskOperationResult<T>` with consistent structure:
```typescript
interface TaskOperationResult<T = void> {
readonly success: boolean;
readonly data?: T;
readonly error?: string;
}
```
Always check the `success` property before accessing `data`.
## Features
- ✅ **Pure Business Logic** - No UI or external dependencies
- ✅ **Type Safety** - Full TypeScript support with strict typing
- ✅ **Validation** - Comprehensive input validation using Zod
- ✅ **Filtering & Sorting** - Flexible task filtering and priority-based sorting
- ✅ **Analytics** - Built-in analytics and completion metrics
- ✅ **Audit Trail** - Complete history tracking for all operations
- ✅ **Task Types** - Flexible task categorization system
- ✅ **Error Handling** - Consistent error handling with descriptive messages
## Integration Status
### Logger Integration
- **Status**: Not applicable
- **Justification**: This is a pure utility package with no I/O operations, network calls, or side effects. All operations are synchronous and in-memory, making logging integration unnecessary.
### Docs-Suite Integration
- **Status**: Ready
- **Format**: TypeDoc/JSDoc
- **Exports**: All types, interfaces, and classes are fully documented with JSDoc comments for automatic documentation generation.
### NeverHub Integration
- **Status**: Not applicable
- **Justification**: This is a core utility package providing pure business logic with no external service dependencies. It operates entirely in-memory with no need for service discovery or event bus communication.
All methods use the structured `TaskOperationResult<T>` pattern for consistent error handling without requiring external logger integration.
## See Also
- [@bernierllc/task-service](../../../service/task-service) - Higher-level task orchestration
- [@bernierllc/task-ui](../../../ui/task-ui) - React components for task management
## License
Copyright (c) 2025 Bernier LLC. All rights reserved.