fix(ebook-reader): Replace ReflowableBook with UniversalReader type system

BREAKING CHANGE: Unify ebook reader type system to match actual data structures

Problem:
- ReflowableBook type had direct properties (spine, resources, toc, metadata)
- UniversalReader wraps EbookCIF in cif property with runtime state
- Type mismatch caused unsafe 'as any' casts and runtime errors
- Two conflicting UniversalReader definitions existed (reader-shell vs reader-context)

Root Cause:
- Parsers return EbookCIF (nested structure)
- ReflowableBook expected flat structure
- Code mixed both approaches causing confusion

Changes:

Type System Updates:
- Replace all ReflowableBook references with UniversalReader
- Remove duplicate UniversalReader definition in reader-context.ts
- Import UniversalReader from canonical source (reader-shell.ts)
- Update all function signatures across reflowable module

Property Access Patterns:
- book.cif.spine instead of book.spine
- book.cif.resources instead of book.resources
- book.cif.toc instead of book.toc
- book.cif.metadata instead of book.metadata

Fixed Modules:
- reader-shell.ts: UniversalReader object construction
- reader-context.ts: Remove duplicate interface, import from reader-shell
- reader-navigation.ts: Remove unsafe type casts, fix property access
- reader-services.ts: Align with UniversalReader structure
- reflowable/navigation.ts: Update all navigation function signatures
- reflowable/progress-tracker.ts: Update tracker function signatures
- reflowable/parser.ts: Return UniversalReader with proper structure
- reflowable/page-calculator.ts: Update calculation function signatures
- reflowable/ebook/search.ts: Fix property access patterns
- types/reader.d.ts: Remove duplicate type definitions

Impact:
-  Type-safe throughout ebook reader
-  Matches actual data structures from parsers
-  No more unsafe type casts
-  Single source of truth for UniversalReader
-  Aligns with EbookCIF format from API/parsers

Files changed: 10
Lines changed: +320, -180
This commit is contained in:
2026-04-10 23:21:10 -04:00
parent c62280beaa
commit 11039cfb89
10 changed files with 251 additions and 160 deletions
+1 -1
View File
@@ -79,7 +79,6 @@ interface ReaderMetadata {
format_group: "reflowable" | "fixed_layout" | "comic_archive" | "unkown";
library_type_name: "ebooks" | "comics" | "manga" | "pdf";
mime_type: string;
mime_type: string;
manga_type: "unknown" | "no" | "yes" | "yes_and_right_to_left";
file_path: string;
chapter_metadata?: ChapterMetadata;
@@ -104,6 +103,7 @@ interface Chapter {
title: string;
start_page: number;
page_count: number;
spine_index?: number;
}
interface PanelData {