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:
Vendored
+1
-1
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user