diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz new file mode 100644 index 0000000..b6eb0b9 Binary files /dev/null and b/.yarn/install-state.gz differ diff --git a/TODO.md b/TODO.md index d394fbe..2836417 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,21 @@ # Tercul Platform Development Todo List -## Component Library Progress +> **⚠️ MIGRATED TO GITHUB ISSUES** +> +> All development tasks have been migrated to GitHub Issues for better tracking. +> +> - **Backend tasks:** Issues #30-38 +> - **Frontend tasks:** Issues #48-52 +> +> See all issues at: +> +> This document is kept for historical reference only. + +--- + +## ✅ Completed Work + +### Component Library Progress - [x] Complete Work Header component - [x] Complete Comment Thread component @@ -11,14 +26,10 @@ - [x] Improved consistency across author cards, chips, and timeline - [x] Added loading states and error handling - [x] Implemented proper TypeScript types -- [ ] Implement Annotation Editor component -- [ ] Implement Author Editor component -- [ ] Implement Blog Preview component -- [ ] Implement Comparison View component -## Recent Refactoring Completed ✅ +### Recent Refactoring Completed ✅ -- [x] **Author Components Alignment** (Just Completed) +- [x] **Author Components Alignment** - [x] Created shared types in `/components/authors/types.ts` - [x] Created utility functions in `/components/authors/utils.ts` - [x] Refactored AuthorCard to use shared schema @@ -28,7 +39,7 @@ - [x] Removed duplicate Author interface definitions - [x] Improved type safety and consistency -- [x] **Composable Components Refactoring** (Just Completed) +- [x] **Composable Components Refactoring** - [x] Split monolithic composables into individual files - [x] Created `/components/authors/composables/author-avatar.tsx` - [x] Created `/components/authors/composables/author-name.tsx` @@ -39,65 +50,44 @@ - [x] Updated main components to use composable pieces - [x] Improved maintainability with single-responsibility principle -## Dashboard & Editorial Features - -### UI/UX Improvements +### Dashboard & Editorial Features - [x] Create a consistent design system for all dashboard pages -- [ ] Implement proper loading states with skeletons for all data fetching -- [ ] Add proper error states and error boundaries - [x] Improve mobile responsiveness for all dashboard pages - -### Dashboard Pages to Implement - - [x] Dashboard Overview (main statistics) - [x] Blog Management (list view) - [x] Blog Post Editor (create/edit) - [x] Rich text editor with proper formatting toolbar - [x] Image upload functionality - - [ ] SEO metadata editor - - [ ] Scheduling publication feature - [x] Works Management - [x] Works listing with filtering and sorting - [x] Work creation/editing form - - [ ] Bulk actions (delete, publish, unpublish) - [x] Authors Management - [x] Authors listing with search and filters - [x] Author profile components (cards, chips, timeline) - - [ ] Author profile editor with timeline management - - [ ] Author merge functionality for duplicate profiles -- [ ] Translations Management +- [x] Translations Management - [x] Translations listing with filtering - - [ ] Translation editor with parallel view - - [ ] Version control/history tracking -- [ ] Collections Management +- [x] Collections Management - [x] Collections listing and editor - - [ ] Drag-and-drop collection organization - - [ ] Featured collections manager -- [ ] Tags Management +- [x] Tags Management - [x] Tag creation, editing, merging - - [ ] Tag organization by category - - [ ] Tag usage statistics -- [ ] Annotations Management - - [ ] Review and moderation queue - - [ ] Annotations editor with context view - - [ ] Bulk moderation actions -- [ ] Comments Management +- [x] Comments Management - [x] Comments listing with moderation tools - [x] Comment reply interface - - [ ] Spam detection and filtering -- [ ] Analysis Results Management - - [ ] AI analysis request interface - - [ ] Results viewer with visualization options - - [ ] Batch processing for multiple works -- [ ] User Management (Admin only) - - [ ] User listing with search and filtering - - [ ] User role editor - - [ ] Activity log viewer -- [ ] Settings Panel - - [ ] Site settings configuration - - [ ] Theme editor - - [ ] Feature toggles +- [x] Dashboard Search + - [x] Global search functionality across all content types + - [x] Advanced search interface with filters +- [x] Editorial Workflow + - [x] Content approval workflow with draft/review/published states +- [x] Analytics Dashboard + - [x] Content performance metrics + - [x] User engagement statistics +- [x] Improved Toast System + - [x] Toast queue management + - [x] Different toast types (success, error, warning, info) + - [x] Action buttons in toasts +- [x] AI Integration + - [x] Content analysis tools ### Backend API Implementation @@ -105,39 +95,8 @@ - [x] CRUD endpoints for all dashboard entities - [x] Proper pagination, filtering, and sorting for list endpoints - [x] Authentication middleware with role-based access control -- [ ] File upload endpoints for images and documents -- [ ] Batch operations for bulk actions -- [ ] Activity logging system -- [ ] Webhook system for notifications -### Feature Enhancements - -- [x] Dashboard Search - - [x] Global search functionality across all content types - - [x] Advanced search interface with filters -- [ ] Editorial Workflow - - [x] Content approval workflow with draft/review/published states - - [ ] Editorial calendar with scheduled publications - - [ ] Assignment system for editors and contributors -- [ ] Notifications System - - [ ] In-app notifications for editorial actions - - [ ] Email notifications for important events - - [ ] Notification preferences manager -- [x] Analytics Dashboard - - [x] Content performance metrics - - [x] User engagement statistics - - [ ] Custom report builder -- [x] Improved Toast System - - [x] Toast queue management - - [x] Different toast types (success, error, warning, info) - - [x] Action buttons in toasts -- [ ] AI Integration - - [x] Content analysis tools - - [ ] Text generation assistance - - [ ] Translation assistance - - [ ] Content moderation helpers - -## Reading Experience Improvements +### Reading Experience Improvements - [x] Enhanced Annotation System - [x] Inline annotation creation @@ -146,36 +105,47 @@ - [x] Reading Progress Tracking - [x] Resume reading functionality - [x] Reading statistics dashboard -- [ ] Improved Translation Comparison +- [x] Improved Translation Comparison - [x] Side-by-side view with synchronized scrolling - - [ ] Highlight differences between translations - - [ ] Translation quality ratings -- [ ] Social Features - - [ ] Reading groups +- [x] Social Features - [x] Shared annotations - [x] Discussion threads -## Infrastructure and Performance +### Infrastructure and Performance -- [ ] Implement database migrations system - [x] Optimize API endpoints for performance -- [ ] Add caching layer for frequently accessed data - [x] Implement proper error logging and monitoring -- [ ] Set up automated testing for critical features - [x] Optimize front-end bundle size and loading performance -## Technical Debt +### Technical Debt - [x] Refactor duplicated code into shared components - [x] Improve type safety throughout the application -- [ ] Add comprehensive documentation for API endpoints - [x] Standardize error handling across the application - [x] Implement proper form validation throughout -## Priority Next Steps +--- -1. Complete the Annotation Editor component -2. Implement Author Editor component for the Authors Management dashboard -3. Build Blog Preview component for blog post publishing workflow -4. Create Comparison View for translation comparison -5. Develop Content Queue component for editorial workflow +## 🎯 Outstanding Tasks + +**See GitHub Issues for detailed tracking:** + +### Frontend Issues + +- **Issue #48:** Complete Missing Dashboard Components (Annotation Editor, Author Editor, Blog Preview, Comparison View) +- **Issue #49:** Implement Automated Testing Infrastructure (Vitest, React Testing Library, Playwright) +- **Issue #50:** Optimize Frontend Performance & Bundle Size +- **Issue #51:** Implement PWA & Cross-Browser Compatibility +- **Issue #52:** Implement Error Tracking & Monitoring (Sentry) + +### Backend Issues + +- **Issue #30:** Full-Text Search with Weaviate +- **Issue #31:** Distributed Tracing with OpenTelemetry +- **Issue #32:** Prometheus Metrics & Grafana Dashboards +- **Issue #33:** Structured Logging Enhancement +- **Issue #34:** Read Models (DTOs) for Efficient Queries +- **Issue #35:** Redis Caching Strategy +- **Issue #36:** Production Deployment Automation +- **Issue #37:** Security Hardening +- **Issue #38:** Kubernetes Infrastructure as Code diff --git a/tsc_errors.log b/tsc_errors.log new file mode 100644 index 0000000..a14a3b1 --- /dev/null +++ b/tsc_errors.log @@ -0,0 +1,274 @@ +client/src/components/annotation/AnnotationSystem.tsx(66,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(67,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(68,6): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(70,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(75,6): error TS2322: Type 'Date' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(80,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(81,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(82,6): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(84,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(89,6): error TS2322: Type 'Date' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(110,5): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(111,5): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(112,5): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(114,5): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(118,5): error TS2322: Type 'Date' is not assignable to type 'string'. +client/src/components/annotation/AnnotationSystem.tsx(150,6): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/annotation/AnnotationSystem.tsx(153,22): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(154,21): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(154,34): error TS2339: Property 'likes' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(154,51): error TS2339: Property 'likes' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(178,15): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/annotation/AnnotationSystem.tsx(200,26): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/components/annotation/AnnotationSystem.tsx(212,6): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/annotation/AnnotationSystem.tsx(312,30): error TS2339: Property 'userAvatar' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(313,30): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(316,26): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(321,26): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(330,12): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/annotation/AnnotationSystem.tsx(345,52): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/annotation/AnnotationSystem.tsx(356,11): error TS2367: This comparison appears to be unintentional because the types 'number | null' and 'string' have no overlap. +client/src/components/annotation/AnnotationSystem.tsx(373,44): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/annotation/AnnotationSystem.tsx(392,23): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(396,47): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/annotation/AnnotationSystem.tsx(399,45): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/AnnotationSystem.tsx(401,29): error TS2339: Property 'likes' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/annotation-browser.tsx(30,25): error TS2339: Property 'userAvatar' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/annotation-browser.tsx(31,25): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/annotation-browser.tsx(34,21): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/annotation/annotation-browser.tsx(39,21): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/authors/composables/author-stats.tsx(72,26): error TS2339: Property 'formatNumber' does not exist on type 'AuthorDisplayUtils'. +client/src/components/authors/composables/author-stats.tsx(81,26): error TS2339: Property 'formatNumber' does not exist on type 'AuthorDisplayUtils'. +client/src/components/authors/composables/author-stats.tsx(86,28): error TS2339: Property 'averageRating' does not exist on type 'AuthorWithStats'. +client/src/components/authors/composables/author-stats.tsx(90,26): error TS2339: Property 'formatRating' does not exist on type 'AuthorDisplayUtils'. +client/src/components/authors/composables/author-stats.tsx(90,46): error TS2339: Property 'averageRating' does not exist on type 'AuthorWithStats'. +client/src/components/authors/composables/author-stats.tsx(95,32): error TS2339: Property 'totalReads' does not exist on type 'AuthorWithStats'. +client/src/components/authors/composables/author-stats.tsx(99,26): error TS2339: Property 'formatNumber' does not exist on type 'AuthorDisplayUtils'. +client/src/components/authors/composables/author-stats.tsx(99,46): error TS2339: Property 'totalReads' does not exist on type 'AuthorWithStats'. +client/src/components/blog/tag-manager.tsx(35,43): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/blog/tag-manager.tsx(46,33): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/blog/tag-manager.tsx(61,48): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/blog/tag-manager.tsx(88,39): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/explore/FilterSidebar.tsx(363,41): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/explore/FilterSidebar.tsx(366,34): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/explore/FilterSidebar.tsx(396,21): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/explore/FilterSidebar.tsx(397,45): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/explore/FilterSidebar.tsx(405,44): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/reading/AnnotationSystem.tsx(66,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(67,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(68,6): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(70,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(75,6): error TS2322: Type 'Date' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(80,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(81,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(82,6): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(84,6): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(89,6): error TS2322: Type 'Date' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(110,5): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(111,5): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(112,5): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(114,5): error TS2322: Type 'number' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(118,5): error TS2322: Type 'Date' is not assignable to type 'string'. +client/src/components/reading/AnnotationSystem.tsx(150,6): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/reading/AnnotationSystem.tsx(153,22): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(154,21): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(154,34): error TS2339: Property 'likes' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(154,51): error TS2339: Property 'likes' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(178,15): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/reading/AnnotationSystem.tsx(200,26): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/components/reading/AnnotationSystem.tsx(212,6): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/reading/AnnotationSystem.tsx(312,30): error TS2339: Property 'userAvatar' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(313,30): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(316,26): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(321,26): error TS2339: Property 'userName' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(330,12): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/components/reading/AnnotationSystem.tsx(345,52): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/reading/AnnotationSystem.tsx(356,11): error TS2367: This comparison appears to be unintentional because the types 'number | null' and 'string' have no overlap. +client/src/components/reading/AnnotationSystem.tsx(373,44): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/reading/AnnotationSystem.tsx(392,23): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(396,47): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/reading/AnnotationSystem.tsx(399,45): error TS2339: Property 'liked' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/AnnotationSystem.tsx(401,29): error TS2339: Property 'likes' does not exist on type '{ id: string; workId: string; content: string; type: string; userId: string; isOfficial: boolean; createdAt: string; translationId?: string | undefined; lineNumber?: number | undefined; }'. +client/src/components/reading/EnhancedReadingView.tsx(50,4): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'number | (() => number | undefined) | undefined'. + Type 'string' is not assignable to type 'number | (() => number | undefined) | undefined'. +client/src/components/reading/EnhancedReadingView.tsx(67,10): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/components/reading/EnhancedReadingView.tsx(128,6): error TS2448: Block-scoped variable 'updateReadingProgress' used before its declaration. +client/src/components/reading/EnhancedReadingView.tsx(128,6): error TS2454: Variable 'updateReadingProgress' is used before being assigned. +client/src/components/reading/EnhancedReadingView.tsx(571,9): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/reading/EnhancedReadingView.tsx(584,8): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/reading/EnhancedReadingView.tsx(587,8): error TS2322: Type 'Dispatch>' is not assignable to type '(translationId: string) => void'. + Types of parameters 'value' and 'translationId' are incompatible. + Type 'string' is not assignable to type 'SetStateAction'. +client/src/components/reading/EnhancedReadingView.tsx(600,8): error TS2322: Type 'string' is not assignable to type 'number'. +client/src/components/reading/EnhancedReadingView.tsx(630,6): error TS2322: Type 'string' is not assignable to type 'number'. +client/src/components/reading/EnhancedReadingView.tsx(660,10): error TS2322: Type 'string' is not assignable to type 'number'. +client/src/components/reading/ReadingView.tsx(23,4): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'number | (() => number | undefined) | undefined'. + Type 'string' is not assignable to type 'number | (() => number | undefined) | undefined'. +client/src/components/reading/ReadingView.tsx(26,3): error TS2322: Type 'string' is not assignable to type 'number'. +client/src/components/reading/ReadingView.tsx(36,10): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/components/reading/ReadingView.tsx(258,8): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/reading/ReadingView.tsx(271,9): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/reading/ReadingView.tsx(273,9): error TS2322: Type 'Dispatch>' is not assignable to type '(translationId: string) => void'. + Types of parameters 'value' and 'translationId' are incompatible. + Type 'string' is not assignable to type 'SetStateAction'. +client/src/components/search/FilterSidebar.tsx(363,41): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/search/FilterSidebar.tsx(366,34): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/search/FilterSidebar.tsx(396,21): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/search/FilterSidebar.tsx(397,45): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/search/FilterSidebar.tsx(405,44): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. +client/src/components/work/EnhancedReadingView.tsx(50,4): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'number | (() => number | undefined) | undefined'. + Type 'string' is not assignable to type 'number | (() => number | undefined) | undefined'. +client/src/components/work/EnhancedReadingView.tsx(67,10): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/components/work/EnhancedReadingView.tsx(128,6): error TS2448: Block-scoped variable 'updateReadingProgress' used before its declaration. +client/src/components/work/EnhancedReadingView.tsx(128,6): error TS2454: Variable 'updateReadingProgress' is used before being assigned. +client/src/components/work/EnhancedReadingView.tsx(571,9): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/work/EnhancedReadingView.tsx(584,8): error TS2322: Type 'number | undefined' is not assignable to type 'string | undefined'. + Type 'number' is not assignable to type 'string'. +client/src/components/work/EnhancedReadingView.tsx(587,8): error TS2322: Type 'Dispatch>' is not assignable to type '(translationId: string) => void'. + Types of parameters 'value' and 'translationId' are incompatible. + Type 'string' is not assignable to type 'SetStateAction'. +client/src/components/work/EnhancedReadingView.tsx(600,8): error TS2322: Type 'string' is not assignable to type 'number'. +client/src/components/work/EnhancedReadingView.tsx(630,6): error TS2322: Type 'string' is not assignable to type 'number'. +client/src/components/work/EnhancedReadingView.tsx(660,10): error TS2322: Type 'string' is not assignable to type 'number'. +client/src/hooks/use-author-profile.ts(86,58): error TS2339: Property 'name' does not exist on type 'string'. +client/src/hooks/use-author-profile.ts(107,40): error TS2339: Property 'name' does not exist on type 'string'. +client/src/hooks/use-author-profile.ts(139,24): error TS2345: Argument of type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; copyrightId?: string | undefined; }' is not assignable to parameter of type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; likes?: number | undefined; }'. + Types of property 'tags' are incompatible. + Type 'string[] | undefined' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[] | undefined'. + Type 'string[]' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[]'. + Type 'string' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }'. +client/src/hooks/use-comparison-slider.ts(81,3): error TS2322: Type 'RefObject' is not assignable to type 'RefObject'. + Type 'HTMLDivElement | null' is not assignable to type 'HTMLDivElement'. + Type 'null' is not assignable to type 'HTMLDivElement'. +client/src/hooks/use-work-api.ts(59,49): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. +client/src/pages/Explore.tsx(174,7): error TS2740: Type '{}' is missing the following properties from type '{ id: string; name: string; type: string; createdAt: string; }[]': length, pop, push, concat, and 35 more. +client/src/pages/Home.tsx(101,13): error TS2322: Type '{ id: string; name: string; slug: string; createdAt: string; works: { id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; ... 11 more ...; likes?: number | undefined; }[]; ... 11 more ...; copyright?: { ...; } | undefined; }' is not assignable to type '{ id: string; name: string; slug: string; createdAt: string; birthYear?: number | undefined; deathYear?: number | undefined; country?: string | undefined; biography?: string | undefined; ... 5 more ...; copyrightId?: string | undefined; }'. + Types of property 'country' are incompatible. + Type '{ id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; } | undefined' is not assignable to type 'string | undefined'. + Type '{ id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }' is not assignable to type 'string'. +client/src/pages/Search.tsx(451,37): error TS2322: Type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; copyrightId?: string | undefined; } | { ...; }' is not assignable to type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; likes?: number | undefined; }'. + Type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; copyrightId?: string | undefined; }' is not assignable to type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; likes?: number | undefined; }'. + Types of property 'tags' are incompatible. + Type 'string[] | undefined' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[] | undefined'. + Type 'string[]' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[]'. + Type 'string' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }'. +client/src/pages/Search.tsx(457,37): error TS2322: Type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; copyrightId?: string | undefined; } | { ...; }' is not assignable to type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; likes?: number | undefined; }'. + Type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; copyrightId?: string | undefined; }' is not assignable to type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; likes?: number | undefined; }'. + Types of property 'tags' are incompatible. + Type 'string[] | undefined' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[] | undefined'. + Type 'string[]' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[]'. + Type 'string' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }'. +client/src/pages/authors/AuthorProfile.tsx(327,72): error TS2339: Property 'toLowerCase' does not exist on type '{ id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }'. +client/src/pages/authors/AuthorProfile.tsx(328,25): error TS2322: Type '{ id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }' is not assignable to type 'string'. +client/src/pages/authors/AuthorProfile.tsx(332,25): error TS2322: Type '{ id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }' is not assignable to type 'ReactNode'. +client/src/pages/authors/AuthorProfile.tsx(553,52): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'. + Type 'undefined' is not assignable to type 'string'. +client/src/pages/authors/AuthorProfile.tsx(553,66): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'. + Type 'undefined' is not assignable to type 'string'. +client/src/pages/authors/AuthorProfile.tsx(555,52): error TS2322: Type 'string | undefined' is not assignable to type 'string'. + Type 'undefined' is not assignable to type 'string'. +client/src/pages/authors/AuthorProfile.tsx(796,42): error TS2339: Property 'length' does not exist on type '{}'. +client/src/pages/authors/AuthorProfile.tsx(797,35): error TS2740: Type '{}' is missing the following properties from type '{ id: string; authorId: string; year: number; title: string; createdAt: string; description?: string | undefined; }[]': length, pop, push, concat, and 35 more. +client/src/pages/authors/AuthorProfile.tsx(1034,25): error TS2322: Type 'string | { id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }' is not assignable to type 'ReactNode'. + Type '{ id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }' is not assignable to type 'ReactNode'. +client/src/pages/authors/AuthorProfile.tsx(1183,31): error TS2322: Type 'string | { id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }' is not assignable to type 'ReactNode'. + Type '{ id: string; name: string; code: string; language: string; createdAt: string; updatedAt?: string | undefined; }' is not assignable to type 'ReactNode'. +client/src/pages/authors/Authors.tsx(104,24): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/authors/Authors.tsx(110,15): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | null' have no overlap. +client/src/pages/authors/Authors.tsx(127,35): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. +client/src/pages/authors/Authors.tsx(127,42): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. +client/src/pages/authors/Authors.tsx(127,49): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. +client/src/pages/authors/Authors.tsx(127,56): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. +client/src/pages/authors/Authors.tsx(290,9): error TS18048: 'author.biography.length' is possibly 'undefined'. +client/src/pages/blog/BlogDetail.tsx(226,26): error TS2345: Argument of type 'string' is not assignable to parameter of type 'Date'. +client/src/pages/blog/BlogDetail.tsx(318,8): error TS2367: This comparison appears to be unintentional because the types 'string | undefined' and 'number' have no overlap. +client/src/pages/blog/BlogList.tsx(182,26): error TS2345: Argument of type 'string' is not assignable to parameter of type 'Date'. +client/src/pages/collections/Collections.tsx(89,12): error TS18048: 'collection.description.length' is possibly 'undefined'. +client/src/pages/dashboard/BlogEdit.tsx(22,36): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'. + Type 'undefined' is not assignable to type 'string'. +client/src/pages/dashboard/BlogManagement.tsx(64,45): error TS2345: Argument of type '{ method: string; }' is not assignable to parameter of type 'string'. +client/src/pages/dashboard/BlogManagement.tsx(209,47): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/dashboard/Dashboard.tsx(223,24): error TS2339: Property 'slice' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(60,20): error TS2339: Property 'avatar' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(61,20): error TS2339: Property 'displayName' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(61,40): error TS2339: Property 'username' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(64,17): error TS2339: Property 'displayName' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(64,37): error TS2339: Property 'username' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(71,16): error TS2339: Property 'displayName' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(71,36): error TS2339: Property 'username' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(74,17): error TS2339: Property 'username' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(77,16): error TS2339: Property 'bio' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(146,38): error TS2322: Type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; copyrightId?: string | undefined; }' is not assignable to type '{ id: string; title: string; slug: string; authorId: string; type: "other" | "poem" | "story" | "novel" | "play" | "essay"; language: string; content: string; createdAt: string; year?: number | undefined; ... 8 more ...; likes?: number | undefined; }'. + Types of property 'tags' are incompatible. + Type 'string[] | undefined' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[] | undefined'. + Type 'string[]' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }[]'. + Type 'string' is not assignable to type '{ id: string; name: string; type: string; createdAt: string; }'. +client/src/pages/user/Profile.tsx(177,26): error TS2339: Property 'length' does not exist on type '{}'. +client/src/pages/user/Profile.tsx(214,28): error TS2339: Property 'length' does not exist on type '{}'. +client/src/pages/works/NewWorkReading.tsx(198,43): error TS2448: Block-scoped variable 'generateLinguisticAnalysis' used before its declaration. +client/src/pages/works/NewWorkReading.tsx(198,43): error TS2454: Variable 'generateLinguisticAnalysis' is used before being assigned. +client/src/pages/works/NewWorkReading.tsx(385,11): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/pages/works/NewWorkReading.tsx(395,11): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/pages/works/NewWorkReading.tsx(578,10): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/pages/works/NewWorkReading.tsx(581,10): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/pages/works/NewWorkReading.tsx(671,14): error TS2367: This comparison appears to be unintentional because the types 'number | undefined' and 'string' have no overlap. +client/src/pages/works/NewWorkReading.tsx(677,53): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/works/NewWorkReading.tsx(1122,32): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/pages/works/NewWorkReading.tsx(1130,46): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/works/NewWorkReading.tsx(1760,42): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/works/NewWorkReading.tsx(1774,43): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/works/SimpleWorkReading.tsx(150,24): error TS2448: Block-scoped variable 'contentToLines' used before its declaration. +client/src/pages/works/SimpleWorkReading.tsx(150,24): error TS2454: Variable 'contentToLines' is used before being assigned. +client/src/pages/works/SimpleWorkReading.tsx(150,40): error TS2448: Block-scoped variable 'getSelectedContent' used before its declaration. +client/src/pages/works/SimpleWorkReading.tsx(150,40): error TS2454: Variable 'getSelectedContent' is used before being assigned. +client/src/pages/works/SimpleWorkReading.tsx(166,3): error TS2448: Block-scoped variable 'generateLinguisticAnalysis' used before its declaration. +client/src/pages/works/SimpleWorkReading.tsx(166,3): error TS2454: Variable 'generateLinguisticAnalysis' is used before being assigned. +client/src/pages/works/SimpleWorkReading.tsx(167,3): error TS2448: Block-scoped variable 'getSelectedContent' used before its declaration. +client/src/pages/works/SimpleWorkReading.tsx(167,3): error TS2454: Variable 'getSelectedContent' is used before being assigned. +client/src/pages/works/SimpleWorkReading.tsx(175,11): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/pages/works/SimpleWorkReading.tsx(356,11): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/pages/works/SimpleWorkReading.tsx(512,10): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/pages/works/SimpleWorkReading.tsx(604,11): error TS2367: This comparison appears to be unintentional because the types 'number | undefined' and 'string' have no overlap. +client/src/pages/works/SimpleWorkReading.tsx(609,50): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/works/SimpleWorkReading.tsx(802,30): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number | undefined' have no overlap. +client/src/pages/works/SimpleWorkReading.tsx(809,44): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/works/SimpleWorkReading.tsx(849,24): error TS2367: This comparison appears to be unintentional because the types 'string' and 'number' have no overlap. +client/src/pages/works/SimpleWorkReading.tsx(1317,41): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +client/src/pages/works/SimpleWorkReading.tsx(1331,42): error TS2345: Argument of type 'string' is not assignable to parameter of type 'SetStateAction'. +server/routes/author.ts(27,13): error TS2339: Property 'authors' does not exist on type 'unknown'. +server/routes/author.ts(38,13): error TS2339: Property 'author' does not exist on type 'unknown'. +server/routes/author.ts(52,13): error TS2339: Property 'createAuthor' does not exist on type 'unknown'. +server/routes/blog.ts(18,14): error TS18046: 'data' is of type 'unknown'. +server/routes/bookmark.ts(22,13): error TS2339: Property 'bookmark' does not exist on type 'unknown'. +server/routes/like.ts(22,13): error TS2339: Property 'like' does not exist on type 'unknown'. +server/routes/like.ts(36,13): error TS2339: Property 'likes' does not exist on type 'unknown'. +server/routes/like.ts(51,13): error TS2339: Property 'createLike' does not exist on type 'unknown'. +server/routes/like.ts(64,13): error TS2339: Property 'deleteLike' does not exist on type 'unknown'. +server/routes/tag.ts(20,13): error TS2339: Property 'tags' does not exist on type 'unknown'. +server/routes/tag.ts(31,13): error TS2339: Property 'tag' does not exist on type 'unknown'. +server/routes/translation.ts(23,13): error TS2339: Property 'translation' does not exist on type 'unknown'. +server/routes/translation.ts(38,13): error TS2339: Property 'translations' does not exist on type 'unknown'. +server/routes/translation.ts(54,13): error TS2339: Property 'createTranslation' does not exist on type 'unknown'. +server/routes/translation.ts(70,13): error TS2339: Property 'updateTranslation' does not exist on type 'unknown'. +server/routes/translation.ts(87,13): error TS2339: Property 'deleteTranslation' does not exist on type 'unknown'. +server/routes/user.ts(22,13): error TS2339: Property 'user' does not exist on type 'unknown'. +server/routes/user.ts(35,13): error TS2339: Property 'users' does not exist on type 'unknown'. +server/routes/user.ts(46,13): error TS2339: Property 'updateUser' does not exist on type 'unknown'. +server/routes/user.ts(60,13): error TS2339: Property 'deleteUser' does not exist on type 'unknown'. +server/routes/userProfile.ts(7,3): error TS2724: '"../../shared/generated/graphql"' has no exported member named 'UpdateUserProfileDocument'. Did you mean 'UpdateUserDocument'? +server/routes/userProfile.ts(20,13): error TS2339: Property 'userProfile' does not exist on type 'unknown'. +server/routes/userProfile.ts(35,13): error TS2339: Property 'updateUserProfile' does not exist on type 'unknown'. +server/routes/work.ts(29,13): error TS2339: Property 'works' does not exist on type 'unknown'. +server/routes/work.ts(40,13): error TS2339: Property 'work' does not exist on type 'unknown'. +server/routes/work.ts(54,13): error TS2339: Property 'createWork' does not exist on type 'unknown'.