/** * Shared types for cloakbrowser launch wrappers. */ import type { BrowserContextOptions } from "playwright-core"; import type { HumanConfig, HumanPreset } from "./human/config.js"; export interface LaunchOptions { /** Run in headless mode (default: true). */ headless?: boolean; /** * Proxy server — URL string or Playwright proxy object. * String: 'http://user:pass@proxy:8080' (credentials auto-extracted). * Object: { server: "http://proxy:8080", bypass: ".google.com", ... } * — passed directly to Playwright. */ proxy?: string | { server: string; bypass?: string; username?: string; password?: string; }; /** Additional Chromium CLI arguments. */ args?: string[]; /** Chrome extension paths to load. */ extensionPaths?: string[]; /** Include default stealth fingerprint args (default: true). Set false to use custom --fingerprint flags. */ stealthArgs?: boolean; /** IANA timezone, e.g. "America/New_York". Sets --fingerprint-timezone binary flag. */ timezone?: string; /** BCP 47 locale, e.g. "en-US". Sets --lang binary flag. */ locale?: string; /** Auto-detect timezone/locale from proxy IP (requires: npm install mmdb-lib). */ geoip?: boolean; /** Raw options passed directly to playwright/puppeteer launch(). */ launchOptions?: Record; /** Enable human-like mouse, keyboard, and scroll behavior. */ humanize?: boolean; /** Human behavior preset: 'default' or 'careful'. */ humanPreset?: HumanPreset; /** Override individual human behavior parameters. */ humanConfig?: Partial; } export interface LaunchContextOptions extends LaunchOptions { /** Custom user agent string. */ userAgent?: string; /** Viewport size. */ viewport?: { width: number; height: number; } | null; /** Browser locale, e.g. "en-US". */ locale?: string; /** IANA timezone — alias for `timezone`. Either works. */ timezoneId?: string; /** Color scheme preference — 'light', 'dark', or 'no-preference'. */ colorScheme?: "light" | "dark" | "no-preference"; /** * Extra options forwarded directly to Playwright's `browser.newContext()` — * e.g. `storageState`, `permissions`, `geolocation`, `extraHTTPHeaders`, * `httpCredentials`. Use this for context-level options not surfaced as * top-level fields. `locale` and `timezoneId` are stripped here to avoid * detectable CDP emulation — use the top-level `locale` and `timezone` * wrapper fields instead (they route through undetectable binary flags). */ contextOptions?: BrowserContextOptions; } export interface LaunchPersistentContextOptions extends LaunchContextOptions { /** Path to user data directory for persistent profile. */ userDataDir: string; } export interface BinaryInfo { version: string; platform: string; binaryPath: string; installed: boolean; cacheDir: string; downloadUrl: string; } //# sourceMappingURL=types.d.ts.map