Initial commit: MangaReader iOS App

 Features:
- App iOS completa para leer manga sin publicidad
- Scraper con WKWebView para manhwaweb.com
- Sistema de descargas offline
- Lector con zoom y navegación
- Favoritos y progreso de lectura
- Compatible con iOS 15+ y Sideloadly/3uTools

📦 Contenido:
- Backend Node.js con Puppeteer (opcional)
- App iOS con SwiftUI
- Scraper de capítulos e imágenes
- Sistema de almacenamiento local
- Testing completo
- Documentación exhaustiva

🧪 Prueba: Capítulo 789 de One Piece descargado exitosamente
  - 21 páginas descargadas
  - 4.68 MB total
  - URLs verificadas y funcionales

🎉 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-02-04 15:34:18 +01:00
commit b474182dd9
6394 changed files with 1063909 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
/**
* @license
* Copyright 2023 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import { Browser, type BrowserPlatform } from './browser-data/browser-data.js';
/**
* @public
*/
export declare class InstalledBrowser {
#private;
browser: Browser;
buildId: string;
platform: BrowserPlatform;
readonly executablePath: string;
/**
* @internal
*/
constructor(cache: Cache, browser: Browser, buildId: string, platform: BrowserPlatform);
/**
* Path to the root of the installation folder. Use
* {@link computeExecutablePath} to get the path to the executable binary.
*/
get path(): string;
readMetadata(): Metadata;
writeMetadata(metadata: Metadata): void;
}
/**
* @internal
*/
export interface ComputeExecutablePathOptions {
/**
* Determines which platform the browser will be suited for.
*
* @defaultValue **Auto-detected.**
*/
platform?: BrowserPlatform;
/**
* Determines which browser to launch.
*/
browser: Browser;
/**
* Determines which buildId to download. BuildId should uniquely identify
* binaries and they are used for caching.
*/
buildId: string;
}
/**
* @public
*/
export interface Metadata {
aliases: Record<string, string>;
}
/**
* The cache used by Puppeteer relies on the following structure:
*
* - rootDir
* -- <browser1> | browserRoot(browser1)
* ---- <platform>-<buildId> | installationDir()
* ------ the browser-platform-buildId
* ------ specific structure.
* -- <browser2> | browserRoot(browser2)
* ---- <platform>-<buildId> | installationDir()
* ------ the browser-platform-buildId
* ------ specific structure.
* @internal
*/
export declare class Cache {
#private;
constructor(rootDir: string);
/**
* @internal
*/
get rootDir(): string;
browserRoot(browser: Browser): string;
metadataFile(browser: Browser): string;
readMetadata(browser: Browser): Metadata;
writeMetadata(browser: Browser, metadata: Metadata): void;
resolveAlias(browser: Browser, alias: string): string | undefined;
installationDir(browser: Browser, platform: BrowserPlatform, buildId: string): string;
clear(): void;
uninstall(browser: Browser, platform: BrowserPlatform, buildId: string): void;
getInstalledBrowsers(): InstalledBrowser[];
computeExecutablePath(options: ComputeExecutablePathOptions): string;
}
//# sourceMappingURL=Cache.d.ts.map