/** * Render a JS-heavy page in the device's existing Chromium and return its DOM. * * This is the stateless retrieval path: each call creates its own blank target, * navigates, reads the rendered DOM, and closes the target. Interactive * automation (which keeps a page alive across calls) lives in cdp-actions.ts on * a persistent BrowserSession. Both share the transport primitives in * cdp-session.ts. * * PUT /json/new create a blank target, get its WS URL * │ * ▼ * ws://…/devtools/page/ Page.enable → Page.navigate(url) * │ await Page.loadEventFired (load-timeout) * ▼ * Runtime.evaluate outerHTML + body.innerText (returnByValue) * │ * ▼ * PUT /json/close/ always, even on the error paths above */ import { type CdpDeps, type CdpOutcome } from "./cdp-session.js"; export type RenderDeps = CdpDeps; export type { MinimalWebSocket, WebSocketCtor } from "./cdp-session.js"; export type RenderOutcome = CdpOutcome; export interface RenderResult { url: string; rendered: boolean; outcome: RenderOutcome; domBytes: number; text: string; html: string; detail?: string; } export interface RenderOptions { /** Cap on the whole navigate→load wait. */ loadTimeoutMs?: number; /** Cap on each CDP command round-trip (enable, navigate, evaluate). */ commandTimeoutMs?: number; } /** Render `url` in the device Chromium and return its rendered DOM text. * Always returns a structured RenderResult — never throws, never returns a * silent empty page. */ export declare function renderPage(url: string, opts: RenderOptions, deps: RenderDeps): Promise; //# sourceMappingURL=cdp-render.d.ts.map