From b83f50b8f67dad594a44284a6bfcd4f8aee97f30 Mon Sep 17 00:00:00 2001 From: Nikhil Date: Mon, 23 Feb 2026 13:47:57 -0800 Subject: [PATCH] feat: generate cdp types based on protocol" (#355) * feat: gen cdp types * feat: move apis to use typed cdp * fix: lint errors on scripts/codegen * fix: lint errors on scripts/codegen --- apps/server/package.json | 1 + apps/server/src/browser/backends/cdp.ts | 69 +- apps/server/src/browser/backends/types.ts | 11 +- apps/server/src/browser/bookmarks.ts | 30 +- apps/server/src/browser/browser.ts | 409 ++--- apps/server/src/browser/elements.ts | 120 +- apps/server/src/browser/history.ts | 14 +- apps/server/src/browser/keyboard.ts | 233 ++- apps/server/src/browser/mouse.ts | 121 +- apps/server/src/browser/snapshot.ts | 58 +- apps/server/src/browser/tab-groups.ts | 27 +- bun.lock | 8 + package.json | 2 + packages/cdp-protocol/package.json | 458 ++++++ .../cdp-protocol/src/generated/create-api.ts | 86 + .../generated/domain-apis/accessibility.ts | 46 + .../src/generated/domain-apis/animation.ts | 54 + .../src/generated/domain-apis/audits.ts | 28 + .../src/generated/domain-apis/autofill.ts | 23 + .../domain-apis/background-service.ts | 30 + .../domain-apis/bluetooth-emulation.ts | 73 + .../src/generated/domain-apis/bookmarks.ts | 26 + .../src/generated/domain-apis/browser.ts | 145 ++ .../generated/domain-apis/cache-storage.ts | 26 + .../src/generated/domain-apis/cast.ts | 33 + .../src/generated/domain-apis/console.ts | 18 + .../src/generated/domain-apis/css.ts | 168 ++ .../src/generated/domain-apis/debugger.ts | 124 ++ .../generated/domain-apis/device-access.ts | 23 + .../domain-apis/device-orientation.ts | 12 + .../src/generated/domain-apis/dom-debugger.ts | 40 + .../src/generated/domain-apis/dom-snapshot.ts | 17 + .../src/generated/domain-apis/dom-storage.ts | 45 + .../src/generated/domain-apis/dom.ts | 257 +++ .../src/generated/domain-apis/emulation.ts | 140 ++ .../domain-apis/event-breakpoints.ts | 18 + .../src/generated/domain-apis/extensions.ts | 23 + .../src/generated/domain-apis/fed-cm.ts | 34 + .../src/generated/domain-apis/fetch.ts | 43 + .../src/generated/domain-apis/file-system.ts | 12 + .../domain-apis/headless-experimental.ts | 14 + .../generated/domain-apis/heap-profiler.ts | 60 + .../src/generated/domain-apis/history.ts | 19 + .../src/generated/domain-apis/indexed-db.ts | 33 + .../src/generated/domain-apis/input.ts | 44 + .../src/generated/domain-apis/inspector.ts | 17 + .../src/generated/domain-apis/io.ts | 17 + .../src/generated/domain-apis/layer-tree.ts | 48 + .../src/generated/domain-apis/log.ts | 23 + .../src/generated/domain-apis/media.ts | 39 + .../src/generated/domain-apis/memory.ts | 32 + .../src/generated/domain-apis/network.ts | 343 ++++ .../src/generated/domain-apis/overlay.ts | 106 ++ .../src/generated/domain-apis/page.ts | 298 ++++ .../domain-apis/performance-timeline.ts | 19 + .../src/generated/domain-apis/performance.ts | 21 + .../src/generated/domain-apis/preload.ts | 44 + .../src/generated/domain-apis/profiler.ts | 44 + .../src/generated/domain-apis/pwa.ts | 28 + .../src/generated/domain-apis/runtime.ts | 106 ++ .../src/generated/domain-apis/schema.ts | 9 + .../src/generated/domain-apis/security.ts | 39 + .../generated/domain-apis/service-worker.ts | 52 + .../src/generated/domain-apis/storage.ts | 222 +++ .../src/generated/domain-apis/system-info.ts | 16 + .../src/generated/domain-apis/target.ts | 97 ++ .../src/generated/domain-apis/tethering.ts | 18 + .../src/generated/domain-apis/tracing.ts | 41 + .../src/generated/domain-apis/web-audio.ts | 82 + .../src/generated/domain-apis/web-authn.ts | 66 + .../src/generated/domains/accessibility.ts | 225 +++ .../src/generated/domains/animation.ts | 115 ++ .../src/generated/domains/audits.ts | 634 ++++++++ .../src/generated/domains/autofill.ts | 64 + .../generated/domains/background-service.ts | 60 + .../generated/domains/bluetooth-emulation.ts | 156 ++ .../src/generated/domains/bookmarks.ts | 72 + .../src/generated/domains/browser.ts | 482 ++++++ .../src/generated/domains/cache-storage.ts | 86 + .../src/generated/domains/cast.ts | 41 + .../src/generated/domains/console.ts | 31 + .../cdp-protocol/src/generated/domains/css.ts | 641 ++++++++ .../src/generated/domains/debugger.ts | 405 +++++ .../src/generated/domains/device-access.ts | 30 + .../generated/domains/device-orientation.ts | 9 + .../src/generated/domains/dom-debugger.ts | 80 + .../src/generated/domains/dom-snapshot.ts | 170 ++ .../src/generated/domains/dom-storage.ts | 62 + .../cdp-protocol/src/generated/domains/dom.ts | 606 +++++++ .../src/generated/domains/emulation.ts | 373 +++++ .../generated/domains/event-breakpoints.ts | 11 + .../src/generated/domains/extensions.ts | 46 + .../src/generated/domains/fed-cm.ts | 72 + .../src/generated/domains/fetch.ts | 123 ++ .../src/generated/domains/file-system.ts | 35 + .../domains/headless-experimental.ts | 23 + .../src/generated/domains/heap-profiler.ts | 102 ++ .../src/generated/domains/history.ts | 44 + .../src/generated/domains/indexed-db.ts | 130 ++ .../src/generated/domains/input.ts | 165 ++ .../src/generated/domains/inspector.ts | 9 + .../cdp-protocol/src/generated/domains/io.ts | 33 + .../src/generated/domains/layer-tree.ts | 120 ++ .../cdp-protocol/src/generated/domains/log.ts | 57 + .../src/generated/domains/media.ts | 70 + .../src/generated/domains/memory.ts | 65 + .../src/generated/domains/network.ts | 1386 +++++++++++++++++ .../src/generated/domains/overlay.ts | 302 ++++ .../src/generated/domains/page.ts | 1164 ++++++++++++++ .../generated/domains/performance-timeline.ts | 51 + .../src/generated/domains/performance.ts | 29 + .../src/generated/domains/preload.ts | 218 +++ .../src/generated/domains/profiler.ts | 96 ++ .../cdp-protocol/src/generated/domains/pwa.ts | 66 + .../src/generated/domains/runtime.ts | 478 ++++++ .../src/generated/domains/schema.ts | 14 + .../src/generated/domains/security.ts | 109 ++ .../src/generated/domains/service-worker.ts | 108 ++ .../src/generated/domains/storage.ts | 670 ++++++++ .../src/generated/domains/system-info.ts | 72 + .../src/generated/domains/target.ts | 215 +++ .../src/generated/domains/tethering.ts | 18 + .../src/generated/domains/tracing.ts | 86 + .../src/generated/domains/web-audio.ts | 145 ++ .../src/generated/domains/web-authn.ts | 141 ++ .../src/generated/protocol-api.ts | 115 ++ packages/cdp-protocol/tsconfig.json | 7 + scripts/codegen/cdp-protocol.ts | 107 ++ scripts/codegen/lib/domain-api-emitter.ts | 92 ++ scripts/codegen/lib/domain-emitter.ts | 105 ++ scripts/codegen/lib/naming.ts | 16 + scripts/codegen/lib/protocol-api-emitter.ts | 88 ++ scripts/codegen/lib/protocol-parser.ts | 57 + scripts/codegen/lib/type-emitter.ts | 126 ++ scripts/tsconfig.json | 14 +- 135 files changed, 15980 insertions(+), 664 deletions(-) create mode 100644 packages/cdp-protocol/package.json create mode 100644 packages/cdp-protocol/src/generated/create-api.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/accessibility.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/animation.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/audits.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/autofill.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/background-service.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/bluetooth-emulation.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/bookmarks.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/browser.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/cache-storage.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/cast.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/console.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/css.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/debugger.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/device-access.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/device-orientation.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/dom-debugger.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/dom-snapshot.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/dom-storage.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/dom.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/emulation.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/event-breakpoints.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/extensions.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/fed-cm.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/fetch.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/file-system.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/headless-experimental.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/heap-profiler.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/history.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/indexed-db.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/input.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/inspector.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/io.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/layer-tree.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/log.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/media.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/memory.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/network.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/overlay.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/page.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/performance-timeline.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/performance.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/preload.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/profiler.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/pwa.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/runtime.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/schema.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/security.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/service-worker.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/storage.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/system-info.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/target.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/tethering.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/tracing.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/web-audio.ts create mode 100644 packages/cdp-protocol/src/generated/domain-apis/web-authn.ts create mode 100644 packages/cdp-protocol/src/generated/domains/accessibility.ts create mode 100644 packages/cdp-protocol/src/generated/domains/animation.ts create mode 100644 packages/cdp-protocol/src/generated/domains/audits.ts create mode 100644 packages/cdp-protocol/src/generated/domains/autofill.ts create mode 100644 packages/cdp-protocol/src/generated/domains/background-service.ts create mode 100644 packages/cdp-protocol/src/generated/domains/bluetooth-emulation.ts create mode 100644 packages/cdp-protocol/src/generated/domains/bookmarks.ts create mode 100644 packages/cdp-protocol/src/generated/domains/browser.ts create mode 100644 packages/cdp-protocol/src/generated/domains/cache-storage.ts create mode 100644 packages/cdp-protocol/src/generated/domains/cast.ts create mode 100644 packages/cdp-protocol/src/generated/domains/console.ts create mode 100644 packages/cdp-protocol/src/generated/domains/css.ts create mode 100644 packages/cdp-protocol/src/generated/domains/debugger.ts create mode 100644 packages/cdp-protocol/src/generated/domains/device-access.ts create mode 100644 packages/cdp-protocol/src/generated/domains/device-orientation.ts create mode 100644 packages/cdp-protocol/src/generated/domains/dom-debugger.ts create mode 100644 packages/cdp-protocol/src/generated/domains/dom-snapshot.ts create mode 100644 packages/cdp-protocol/src/generated/domains/dom-storage.ts create mode 100644 packages/cdp-protocol/src/generated/domains/dom.ts create mode 100644 packages/cdp-protocol/src/generated/domains/emulation.ts create mode 100644 packages/cdp-protocol/src/generated/domains/event-breakpoints.ts create mode 100644 packages/cdp-protocol/src/generated/domains/extensions.ts create mode 100644 packages/cdp-protocol/src/generated/domains/fed-cm.ts create mode 100644 packages/cdp-protocol/src/generated/domains/fetch.ts create mode 100644 packages/cdp-protocol/src/generated/domains/file-system.ts create mode 100644 packages/cdp-protocol/src/generated/domains/headless-experimental.ts create mode 100644 packages/cdp-protocol/src/generated/domains/heap-profiler.ts create mode 100644 packages/cdp-protocol/src/generated/domains/history.ts create mode 100644 packages/cdp-protocol/src/generated/domains/indexed-db.ts create mode 100644 packages/cdp-protocol/src/generated/domains/input.ts create mode 100644 packages/cdp-protocol/src/generated/domains/inspector.ts create mode 100644 packages/cdp-protocol/src/generated/domains/io.ts create mode 100644 packages/cdp-protocol/src/generated/domains/layer-tree.ts create mode 100644 packages/cdp-protocol/src/generated/domains/log.ts create mode 100644 packages/cdp-protocol/src/generated/domains/media.ts create mode 100644 packages/cdp-protocol/src/generated/domains/memory.ts create mode 100644 packages/cdp-protocol/src/generated/domains/network.ts create mode 100644 packages/cdp-protocol/src/generated/domains/overlay.ts create mode 100644 packages/cdp-protocol/src/generated/domains/page.ts create mode 100644 packages/cdp-protocol/src/generated/domains/performance-timeline.ts create mode 100644 packages/cdp-protocol/src/generated/domains/performance.ts create mode 100644 packages/cdp-protocol/src/generated/domains/preload.ts create mode 100644 packages/cdp-protocol/src/generated/domains/profiler.ts create mode 100644 packages/cdp-protocol/src/generated/domains/pwa.ts create mode 100644 packages/cdp-protocol/src/generated/domains/runtime.ts create mode 100644 packages/cdp-protocol/src/generated/domains/schema.ts create mode 100644 packages/cdp-protocol/src/generated/domains/security.ts create mode 100644 packages/cdp-protocol/src/generated/domains/service-worker.ts create mode 100644 packages/cdp-protocol/src/generated/domains/storage.ts create mode 100644 packages/cdp-protocol/src/generated/domains/system-info.ts create mode 100644 packages/cdp-protocol/src/generated/domains/target.ts create mode 100644 packages/cdp-protocol/src/generated/domains/tethering.ts create mode 100644 packages/cdp-protocol/src/generated/domains/tracing.ts create mode 100644 packages/cdp-protocol/src/generated/domains/web-audio.ts create mode 100644 packages/cdp-protocol/src/generated/domains/web-authn.ts create mode 100644 packages/cdp-protocol/src/generated/protocol-api.ts create mode 100644 packages/cdp-protocol/tsconfig.json create mode 100644 scripts/codegen/cdp-protocol.ts create mode 100644 scripts/codegen/lib/domain-api-emitter.ts create mode 100644 scripts/codegen/lib/domain-emitter.ts create mode 100644 scripts/codegen/lib/naming.ts create mode 100644 scripts/codegen/lib/protocol-api-emitter.ts create mode 100644 scripts/codegen/lib/protocol-parser.ts create mode 100644 scripts/codegen/lib/type-emitter.ts diff --git a/apps/server/package.json b/apps/server/package.json index cc295ad21..1215dda5e 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -51,6 +51,7 @@ "@ai-sdk/openai-compatible": "^2.0.30", "@ai-sdk/provider": "^3.0.8", "@browseros-ai/agent-sdk": "workspace:*", + "@browseros/cdp-protocol": "workspace:*", "@browseros/shared": "workspace:*", "@google/gemini-cli-core": "^0.16.0", "@google/genai": "1.30.0", diff --git a/apps/server/src/browser/backends/cdp.ts b/apps/server/src/browser/backends/cdp.ts index 41f447045..9da036cf4 100644 --- a/apps/server/src/browser/backends/cdp.ts +++ b/apps/server/src/browser/backends/cdp.ts @@ -1,3 +1,9 @@ +import { + createProtocolApi, + type RawOn, + type RawSend, +} from '@browseros/cdp-protocol/create-api' +import type { ProtocolApi } from '@browseros/cdp-protocol/protocol-api' import type { CdpTarget, CdpBackend as ICdpBackend } from './types' interface PendingRequest { @@ -5,16 +11,24 @@ interface PendingRequest { reject: (reason: Error) => void } -export class CdpBackend implements ICdpBackend { +// biome-ignore lint/correctness/noUnusedVariables: declaration merging adds ProtocolApi properties to the class +interface CdpBackend extends ProtocolApi {} +// biome-ignore lint/suspicious/noUnsafeDeclarationMerging: intentional — Object.assign fills these at runtime +class CdpBackend implements ICdpBackend { private port: number private ws: WebSocket | null = null private messageId = 0 private pending = new Map() private connected = false private eventHandlers = new Map void)[]>() + private sessionCache = new Map() constructor(config: { port: number }) { this.port = config.port + + const rawSend: RawSend = (method, params) => this.rawSend(method, params) + const rawOn: RawOn = (event, handler) => this.rawOn(event, handler) + Object.assign(this, createProtocolApi(rawSend, rawOn)) } async connect(): Promise { @@ -60,7 +74,32 @@ export class CdpBackend implements ICdpBackend { return this.connected } - async send( + session(sessionId: string): ProtocolApi { + let cached = this.sessionCache.get(sessionId) + if (!cached) { + cached = createProtocolApi( + (method, params) => this.rawSend(method, params, sessionId), + (event, handler) => this.rawOn(event, handler), + ) + this.sessionCache.set(sessionId, cached) + } + return cached + } + + async getTargets(): Promise { + const result = await this.Target.getTargets() + + return result.targetInfos.map((t) => ({ + id: t.targetId, + type: t.type, + title: t.title, + url: t.url, + tabId: t.tabId, + windowId: t.windowId, + })) + } + + private async rawSend( method: string, params?: Record, sessionId?: string, @@ -86,29 +125,7 @@ export class CdpBackend implements ICdpBackend { }) } - async getTargets(): Promise { - const result = (await this.send('Target.getTargets')) as { - targetInfos: Array<{ - targetId: string - type: string - title: string - url: string - tabId?: number - windowId?: number - }> - } - - return result.targetInfos.map((t) => ({ - id: t.targetId, - type: t.type, - title: t.title, - url: t.url, - tabId: t.tabId, - windowId: t.windowId, - })) - } - - on(event: string, handler: (params: unknown) => void): () => void { + private rawOn(event: string, handler: (params: unknown) => void): () => void { if (!this.eventHandlers.has(event)) { this.eventHandlers.set(event, []) } @@ -154,3 +171,5 @@ export class CdpBackend implements ICdpBackend { } } } + +export { CdpBackend } diff --git a/apps/server/src/browser/backends/types.ts b/apps/server/src/browser/backends/types.ts index 1188bee6c..2e04803c7 100644 --- a/apps/server/src/browser/backends/types.ts +++ b/apps/server/src/browser/backends/types.ts @@ -1,14 +1,11 @@ -export interface CdpBackend { +import type { ProtocolApi } from '@browseros/cdp-protocol/protocol-api' + +export interface CdpBackend extends ProtocolApi { connect(): Promise disconnect(): Promise isConnected(): boolean - send( - method: string, - params?: Record, - sessionId?: string, - ): Promise getTargets(): Promise - on(event: string, handler: (params: unknown) => void): () => void + session(sessionId: string): ProtocolApi } export interface ControllerBackend { diff --git a/apps/server/src/browser/bookmarks.ts b/apps/server/src/browser/bookmarks.ts index 4097f5993..9a4c6928a 100644 --- a/apps/server/src/browser/bookmarks.ts +++ b/apps/server/src/browser/bookmarks.ts @@ -12,29 +12,27 @@ export interface BookmarkNode { } export async function getBookmarks(cdp: CdpBackend): Promise { - const result = await cdp.send('Bookmarks.getBookmarks') - const data = result as { nodes: BookmarkNode[] } - return data.nodes + const result = await cdp.Bookmarks.getBookmarks() + return result.nodes as BookmarkNode[] } export async function createBookmark( cdp: CdpBackend, params: { title: string; url?: string; parentId?: string }, ): Promise { - const result = await cdp.send('Bookmarks.createBookmark', { + const result = await cdp.Bookmarks.createBookmark({ title: params.title, ...(params.url !== undefined && { url: params.url }), ...(params.parentId !== undefined && { parentId: params.parentId }), }) - const data = result as { node: BookmarkNode } - return data.node + return result.node as BookmarkNode } export async function removeBookmark( cdp: CdpBackend, id: string, ): Promise { - await cdp.send('Bookmarks.removeBookmark', { id }) + await cdp.Bookmarks.removeBookmark({ id }) } export async function updateBookmark( @@ -42,9 +40,8 @@ export async function updateBookmark( id: string, changes: { url?: string; title?: string }, ): Promise { - const result = await cdp.send('Bookmarks.updateBookmark', { id, ...changes }) - const data = result as { node: BookmarkNode } - return data.node + const result = await cdp.Bookmarks.updateBookmark({ id, ...changes }) + return result.node as BookmarkNode } export async function moveBookmark( @@ -52,19 +49,14 @@ export async function moveBookmark( id: string, destination: { parentId?: string; index?: number }, ): Promise { - const result = await cdp.send('Bookmarks.moveBookmark', { - id, - ...destination, - }) - const data = result as { node: BookmarkNode } - return data.node + const result = await cdp.Bookmarks.moveBookmark({ id, ...destination }) + return result.node as BookmarkNode } export async function searchBookmarks( cdp: CdpBackend, query: string, ): Promise { - const result = await cdp.send('Bookmarks.searchBookmarks', { query }) - const data = result as { results: BookmarkNode[] } - return data.results + const result = await cdp.Bookmarks.searchBookmarks({ query }) + return result.results as BookmarkNode[] } diff --git a/apps/server/src/browser/browser.ts b/apps/server/src/browser/browser.ts index 987dfb71b..9cd006837 100644 --- a/apps/server/src/browser/browser.ts +++ b/apps/server/src/browser/browser.ts @@ -1,3 +1,4 @@ +import type { ProtocolApi } from '@browseros/cdp-protocol/protocol-api' import { logger } from '../lib/logger' import type { CdpBackend, ControllerBackend } from './backends/types' import type { BookmarkNode } from './bookmarks' @@ -93,11 +94,10 @@ export class Browser { } private setupEventHandlers(): void { - this.cdp.on('Target.detachedFromTarget', (params) => { - const { sessionId } = params as { sessionId?: string } - if (sessionId) { + this.cdp.Target.on('detachedFromTarget', (params) => { + if (params.sessionId) { for (const [targetId, sid] of this.sessions) { - if (sid === sessionId) { + if (sid === params.sessionId) { this.sessions.delete(targetId) break } @@ -108,7 +108,7 @@ export class Browser { // --- Session management --- - private async resolvePage(page: number): Promise { + private async resolveSession(page: number): Promise { let info = this.pages.get(page) if (!info) { await this.listPages() @@ -118,25 +118,27 @@ export class Browser { throw new Error( `Unknown page ${page}. Use list_pages to see available pages.`, ) - return this.attachToPage(info.targetId) + const sessionId = await this.attachToPage(info.targetId) + return this.cdp.session(sessionId) } private async attachToPage(targetId: string): Promise { const cached = this.sessions.get(targetId) if (cached) return cached - const result = (await this.cdp.send('Target.attachToTarget', { + const result = await this.cdp.Target.attachToTarget({ targetId, flatten: true, - })) as { sessionId: string } + }) const sessionId = result.sessionId + const session = this.cdp.session(sessionId) await Promise.all([ - this.cdp.send('Page.enable', {}, sessionId), - this.cdp.send('DOM.enable', {}, sessionId), - this.cdp.send('Runtime.enable', {}, sessionId), - this.cdp.send('Accessibility.enable', {}, sessionId), + session.Page.enable(), + session.DOM.enable(), + session.Runtime.enable(), + session.Accessibility.enable(), ]) this.sessions.set(targetId, sessionId) @@ -146,10 +148,8 @@ export class Browser { // --- Pages --- async listPages(): Promise { - const result = (await this.cdp.send('Browser.getTabs', { - includeHidden: true, - })) as { tabs: TabInfo[] } - const tabs = result.tabs.filter( + const result = await this.cdp.Browser.getTabs({ includeHidden: true }) + const tabs = (result.tabs as TabInfo[]).filter( (t) => !EXCLUDED_URL_PREFIXES.some((prefix) => t.url.startsWith(prefix)), ) @@ -218,16 +218,14 @@ export class Browser { } async getActivePage(): Promise { - const result = (await this.cdp.send('Browser.getActiveTab')) as { - tab?: TabInfo - } + const result = await this.cdp.Browser.getActiveTab() if (!result.tab) return null await this.listPages() for (const info of this.pages.values()) { - if (info.targetId === result.tab.targetId) return info + if (info.targetId === (result.tab as TabInfo).targetId) return info } return null @@ -237,17 +235,17 @@ export class Browser { url: string, opts?: { hidden?: boolean; background?: boolean; windowId?: number }, ): Promise { - const createResult = (await this.cdp.send('Browser.createTab', { + const createResult = await this.cdp.Browser.createTab({ url, ...(opts?.hidden !== undefined && { hidden: opts.hidden }), ...(opts?.background !== undefined && { background: opts.background }), ...(opts?.windowId !== undefined && { windowId: opts.windowId }), - })) as { tab: TabInfo } + }) - const infoResult = (await this.cdp.send('Browser.getTabInfo', { - tabId: createResult.tab.tabId, - })) as { tab: TabInfo } - const tabInfo = infoResult.tab + const infoResult = await this.cdp.Browser.getTabInfo({ + tabId: (createResult.tab as TabInfo).tabId, + }) + const tabInfo = infoResult.tab as TabInfo const pageId = this.nextPageId++ this.pages.set(pageId, { @@ -274,25 +272,27 @@ export class Browser { throw new Error( `Unknown page ${page}. Use list_pages to see available pages.`, ) - await this.cdp.send('Browser.closeTab', { tabId: info.tabId }) + await this.cdp.Browser.closeTab({ tabId: info.tabId }) this.pages.delete(page) this.sessions.delete(info.targetId) } // --- Navigation --- - private async waitForLoad(sessionId: string, timeout = 30000): Promise { + private async waitForLoad( + session: ProtocolApi, + timeout = 30000, + ): Promise { const deadline = Date.now() + timeout await new Promise((r) => setTimeout(r, 50)) while (Date.now() < deadline) { try { - const result = (await this.cdp.send( - 'Runtime.evaluate', - { expression: 'document.readyState', returnByValue: true }, - sessionId, - )) as { result?: { value?: string } } - if (result.result?.value === 'complete') return + const result = await session.Runtime.evaluate({ + expression: 'document.readyState', + returnByValue: true, + }) + if ((result.result?.value as string) === 'complete') return } catch { // Context torn down during navigation — expected } @@ -301,67 +301,57 @@ export class Browser { } async goto(page: number, url: string): Promise { - const sessionId = await this.resolvePage(page) - await this.cdp.send('Page.navigate', { url }, sessionId) - await this.waitForLoad(sessionId) + const session = await this.resolveSession(page) + await session.Page.navigate({ url }) + await this.waitForLoad(session) } async goBack(page: number): Promise { - const sessionId = await this.resolvePage(page) - await this.cdp.send( - 'Runtime.evaluate', - { expression: 'history.back()', awaitPromise: true }, - sessionId, - ) - await this.waitForLoad(sessionId) + const session = await this.resolveSession(page) + await session.Runtime.evaluate({ + expression: 'history.back()', + awaitPromise: true, + }) + await this.waitForLoad(session) } async goForward(page: number): Promise { - const sessionId = await this.resolvePage(page) - await this.cdp.send( - 'Runtime.evaluate', - { expression: 'history.forward()', awaitPromise: true }, - sessionId, - ) - await this.waitForLoad(sessionId) + const session = await this.resolveSession(page) + await session.Runtime.evaluate({ + expression: 'history.forward()', + awaitPromise: true, + }) + await this.waitForLoad(session) } async reload(page: number): Promise { - const sessionId = await this.resolvePage(page) - await this.cdp.send('Page.reload', {}, sessionId) - await this.waitForLoad(sessionId) + const session = await this.resolveSession(page) + await session.Page.reload() + await this.waitForLoad(session) } async waitFor( page: number, opts: { text?: string; selector?: string; timeout: number }, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const deadline = Date.now() + opts.timeout const interval = 500 while (Date.now() < deadline) { if (opts.text) { - const result = (await this.cdp.send( - 'Runtime.evaluate', - { - expression: `document.body?.innerText?.includes(${JSON.stringify(opts.text)}) ?? false`, - returnByValue: true, - }, - sessionId, - )) as { result?: { value?: boolean } } + const result = await session.Runtime.evaluate({ + expression: `document.body?.innerText?.includes(${JSON.stringify(opts.text)}) ?? false`, + returnByValue: true, + }) if (result.result?.value === true) return true } if (opts.selector) { - const result = (await this.cdp.send( - 'Runtime.evaluate', - { - expression: `!!document.querySelector(${JSON.stringify(opts.selector)})`, - returnByValue: true, - }, - sessionId, - )) as { result?: { value?: boolean } } + const result = await session.Runtime.evaluate({ + expression: `!!document.querySelector(${JSON.stringify(opts.selector)})`, + returnByValue: true, + }) if (result.result?.value === true) return true } @@ -373,36 +363,28 @@ export class Browser { // --- Observation --- - private async fetchAXTree(sessionId: string): Promise { - const result = (await this.cdp.send( - 'Accessibility.getFullAXTree', - {}, - sessionId, - )) as { - nodes: AXNode[] - } - return result.nodes ?? [] + private async fetchAXTree(session: ProtocolApi): Promise { + const result = await session.Accessibility.getFullAXTree() + return (result.nodes as AXNode[]) ?? [] } async snapshot(page: number): Promise { - const sessionId = await this.resolvePage(page) - const nodes = await this.fetchAXTree(sessionId) + const session = await this.resolveSession(page) + const nodes = await this.fetchAXTree(session) if (nodes.length === 0) return '' return snapshot.buildInteractiveTree(nodes).join('\n') } async enhancedSnapshot(page: number): Promise { - const sessionId = await this.resolvePage(page) - const nodes = await this.fetchAXTree(sessionId) + const session = await this.resolveSession(page) + const nodes = await this.fetchAXTree(session) if (nodes.length === 0) return '' const treeLines = snapshot.buildEnhancedTree(nodes) try { - const cursorElements = await snapshot.findCursorInteractiveElements( - this.cdp, - sessionId, - ) + const cursorElements = + await snapshot.findCursorInteractiveElements(session) if (cursorElements.length > 0) { const existingIds = new Set() @@ -434,25 +416,24 @@ export class Browser { } async content(page: number, selector?: string): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const expression = selector ? `(document.querySelector(${JSON.stringify(selector)})?.innerText ?? '')` : `(document.body?.innerText ?? '')` - const result = (await this.cdp.send( - 'Runtime.evaluate', - { expression, returnByValue: true }, - sessionId, - )) as { result?: { value?: string } } + const result = await session.Runtime.evaluate({ + expression, + returnByValue: true, + }) - return result.result?.value ?? '' + return (result.result?.value as string) ?? '' } async contentAsMarkdown( page: number, opts?: Omit & { selector?: string }, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const expression = buildContentMarkdownExpression({ selector: opts?.selector, viewportOnly: opts?.viewportOnly, @@ -460,20 +441,19 @@ export class Browser { includeImages: opts?.includeImages, }) - const result = (await this.cdp.send( - 'Runtime.evaluate', - { expression, returnByValue: true }, - sessionId, - )) as { result?: { value?: string } } + const result = await session.Runtime.evaluate({ + expression, + returnByValue: true, + }) - return result.result?.value ?? '' + return (result.result?.value as string) ?? '' } async screenshot( page: number, opts: { format: string; quality?: number; fullPage: boolean }, ): Promise<{ data: string; mimeType: string }> { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const params: Record = { format: opts.format, @@ -481,13 +461,9 @@ export class Browser { } if (opts.quality !== undefined) params.quality = opts.quality - const result = (await this.cdp.send( - 'Page.captureScreenshot', - params, - sessionId, - )) as { - data: string - } + const result = await session.Page.captureScreenshot( + params as Parameters[0], + ) return { data: result.data, mimeType: `image/${opts.format}` } } @@ -500,27 +476,13 @@ export class Browser { error?: string description?: string }> { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) - const result = (await this.cdp.send( - 'Runtime.evaluate', - { - expression, - returnByValue: true, - awaitPromise: true, - }, - sessionId, - )) as { - result?: { - type: string - value?: unknown - description?: string - } - exceptionDetails?: { - text: string - exception?: { description?: string } - } - } + const result = await session.Runtime.evaluate({ + expression, + returnByValue: true, + awaitPromise: true, + }) if (result.exceptionDetails) { return { @@ -543,19 +505,14 @@ export class Browser { element: number, opts?: { button?: string; clickCount?: number }, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) - await elements.scrollIntoView(this.cdp, element, sessionId) + await elements.scrollIntoView(session, element) try { - const { x, y } = await elements.getElementCenter( - this.cdp, - element, - sessionId, - ) + const { x, y } = await elements.getElementCenter(session, element) await mouse.dispatchClick( - this.cdp, - sessionId, + session, x, y, opts?.button ?? 'left', @@ -566,7 +523,7 @@ export class Browser { logger.debug( `CDP click failed for element=${element}, falling back to JS click`, ) - await elements.jsClick(this.cdp, element, sessionId) + await elements.jsClick(session, element) } } @@ -576,10 +533,9 @@ export class Browser { y: number, opts?: { button?: string; clickCount?: number }, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) await mouse.dispatchClick( - this.cdp, - sessionId, + session, x, y, opts?.button ?? 'left', @@ -589,15 +545,11 @@ export class Browser { } async hover(page: number, element: number): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) - await elements.scrollIntoView(this.cdp, element, sessionId) - const { x, y } = await elements.getElementCenter( - this.cdp, - element, - sessionId, - ) - await mouse.dispatchHover(this.cdp, sessionId, x, y) + await elements.scrollIntoView(session, element) + const { x, y } = await elements.getElementCenter(session, element) + await mouse.dispatchHover(session, x, y) } async fill( @@ -606,32 +558,28 @@ export class Browser { text: string, clear = true, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) - await elements.scrollIntoView(this.cdp, element, sessionId) + await elements.scrollIntoView(session, element) try { - await elements.focusElement(this.cdp, element, sessionId) + await elements.focusElement(session, element) } catch { try { - const { x, y } = await elements.getElementCenter( - this.cdp, - element, - sessionId, - ) - await mouse.dispatchClick(this.cdp, sessionId, x, y, 'left', 1, 0) + const { x, y } = await elements.getElementCenter(session, element) + await mouse.dispatchClick(session, x, y, 'left', 1, 0) } catch { logger.warn('Could not focus element via click either') } } - if (clear) await keyboard.clearField(this.cdp, sessionId) - await keyboard.typeText(this.cdp, sessionId, text) + if (clear) await keyboard.clearField(session) + await keyboard.typeText(session, text) } async pressKey(page: number, key: string): Promise { - const sessionId = await this.resolvePage(page) - await keyboard.pressCombo(this.cdp, sessionId, key) + const session = await this.resolveSession(page) + await keyboard.pressCombo(session, key) } async drag( @@ -639,18 +587,14 @@ export class Browser { sourceElement: number, target: { element?: number; x?: number; y?: number }, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) - await elements.scrollIntoView(this.cdp, sourceElement, sessionId) - const from = await elements.getElementCenter( - this.cdp, - sourceElement, - sessionId, - ) + await elements.scrollIntoView(session, sourceElement) + const from = await elements.getElementCenter(session, sourceElement) let to: { x: number; y: number } if (target.element !== undefined) { - to = await elements.getElementCenter(this.cdp, target.element, sessionId) + to = await elements.getElementCenter(session, target.element) } else if (target.x !== undefined && target.y !== undefined) { to = { x: target.x, y: target.y } } else { @@ -659,7 +603,7 @@ export class Browser { ) } - await mouse.dispatchDrag(this.cdp, sessionId, from, to) + await mouse.dispatchDrag(session, from, to) } async scroll( @@ -668,30 +612,17 @@ export class Browser { amount: number, element?: number, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const pixels = amount * 120 let x: number let y: number if (element !== undefined) { - const center = await elements.getElementCenter( - this.cdp, - element, - sessionId, - ) + const center = await elements.getElementCenter(session, element) x = center.x y = center.y } else { - const metrics = (await this.cdp.send( - 'Page.getLayoutMetrics', - {}, - sessionId, - )) as { - layoutViewport: { - clientWidth: number - clientHeight: number - } - } + const metrics = await session.Page.getLayoutMetrics() x = metrics.layoutViewport.clientWidth / 2 y = metrics.layoutViewport.clientHeight / 2 } @@ -701,7 +632,7 @@ export class Browser { const deltaY = direction === 'up' ? -pixels : direction === 'down' ? pixels : 0 - await mouse.dispatchScroll(this.cdp, sessionId, x, y, deltaX, deltaY) + await mouse.dispatchScroll(session, x, y, deltaX, deltaY) } async handleDialog( @@ -709,10 +640,11 @@ export class Browser { accept: boolean, promptText?: string, ): Promise { - const sessionId = await this.resolvePage(page) - const params: Record = { accept } - if (promptText !== undefined) params.promptText = promptText - await this.cdp.send('Page.handleJavaScriptDialog', params, sessionId) + const session = await this.resolveSession(page) + await session.Page.handleJavaScriptDialog({ + accept, + ...(promptText !== undefined && { promptText }), + }) } async selectOption( @@ -720,12 +652,11 @@ export class Browser { element: number, value: string, ): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const selected = await elements.callOnElement( - this.cdp, + session, element, - sessionId, `function(val){ for(var i=0;i { - const sessionId = await this.resolvePage(page) - await elements.scrollIntoView(this.cdp, element, sessionId) - await elements.focusElement(this.cdp, element, sessionId) + const session = await this.resolveSession(page) + await elements.scrollIntoView(session, element) + await elements.focusElement(session, element) } async check(page: number, element: number): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const checked = await elements.callOnElement( - this.cdp, + session, element, - sessionId, 'function(){return this.checked}', ) if (!checked) await this.click(page, element) @@ -763,11 +693,10 @@ export class Browser { } async uncheck(page: number, element: number): Promise { - const sessionId = await this.resolvePage(page) + const session = await this.resolveSession(page) const checked = await elements.callOnElement( - this.cdp, + session, element, - sessionId, 'function(){return this.checked}', ) if (checked) await this.click(page, element) @@ -779,12 +708,8 @@ export class Browser { element: number, files: string[], ): Promise { - const sessionId = await this.resolvePage(page) - await this.cdp.send( - 'DOM.setFileInputFiles', - { files, backendNodeId: element }, - sessionId, - ) + const session = await this.resolveSession(page) + await session.DOM.setFileInputFiles({ files, backendNodeId: element }) } // --- File operations --- @@ -793,15 +718,11 @@ export class Browser { page: number, opts?: { landscape?: boolean; printBackground?: boolean }, ): Promise<{ data: string }> { - const sessionId = await this.resolvePage(page) - const result = (await this.cdp.send( - 'Page.printToPDF', - { - landscape: opts?.landscape ?? false, - printBackground: opts?.printBackground ?? true, - }, - sessionId, - )) as { data: string } + const session = await this.resolveSession(page) + const result = await session.Page.printToPDF({ + landscape: opts?.landscape ?? false, + printBackground: opts?.printBackground ?? true, + }) return { data: result.data } } @@ -810,7 +731,7 @@ export class Browser { element: number, downloadPath: string, ): Promise<{ filePath: string; suggestedFilename: string }> { - await this.cdp.send('Browser.setDownloadBehavior', { + await this.cdp.Browser.setDownloadBehavior({ behavior: 'allowAndName', downloadPath, eventsEnabled: true, @@ -825,27 +746,25 @@ export class Browser { reject(new Error('Download timed out after 60s')) }, 60000) - const unsubBegin = this.cdp.on( - 'Browser.downloadWillBegin', - (params: unknown) => { - const p = params as { guid: string; suggestedFilename: string } - guid = p.guid - suggestedFilename = p.suggestedFilename + const unsubBegin = this.cdp.Browser.on( + 'downloadWillBegin', + (params) => { + guid = params.guid + suggestedFilename = params.suggestedFilename }, ) - const unsubProgress = this.cdp.on( - 'Browser.downloadProgress', - (params: unknown) => { - const p = params as { guid: string; state: string } - if (p.guid === guid && p.state === 'completed') { + const unsubProgress = this.cdp.Browser.on( + 'downloadProgress', + (params) => { + if (params.guid === guid && params.state === 'completed') { cleanUp() resolve({ filePath: `${downloadPath}/${guid}`, suggestedFilename, }) } - if (p.guid === guid && p.state === 'canceled') { + if (params.guid === guid && params.state === 'canceled') { cleanUp() reject(new Error('Download was canceled')) } @@ -856,9 +775,9 @@ export class Browser { clearTimeout(timeout) unsubBegin() unsubProgress() - this.cdp - .send('Browser.setDownloadBehavior', { behavior: 'default' }) - .catch(() => {}) + this.cdp.Browser.setDownloadBehavior({ behavior: 'default' }).catch( + () => {}, + ) } this.click(page, element).catch((err) => { @@ -872,25 +791,23 @@ export class Browser { // --- Windows --- async listWindows(): Promise { - const result = (await this.cdp.send('Browser.getWindows')) as { - windows: WindowInfo[] - } - return result.windows + const result = await this.cdp.Browser.getWindows() + return result.windows as WindowInfo[] } async createWindow(opts?: { hidden?: boolean }): Promise { - const result = (await this.cdp.send('Browser.createWindow', { + const result = await this.cdp.Browser.createWindow({ ...(opts?.hidden !== undefined && { hidden: opts.hidden }), - })) as { window: WindowInfo } - return result.window + }) + return result.window as WindowInfo } async closeWindow(windowId: number): Promise { - await this.cdp.send('Browser.closeWindow', { windowId }) + await this.cdp.Browser.closeWindow({ windowId }) } async activateWindow(windowId: number): Promise { - await this.cdp.send('Browser.activateWindow', { windowId }) + await this.cdp.Browser.activateWindow({ windowId }) } // --- Bookmarks --- diff --git a/apps/server/src/browser/elements.ts b/apps/server/src/browser/elements.ts index 0f786729c..2111875e4 100644 --- a/apps/server/src/browser/elements.ts +++ b/apps/server/src/browser/elements.ts @@ -1,4 +1,4 @@ -import type { CdpBackend } from './backends/types' +import type { ProtocolApi } from '@browseros/cdp-protocol/protocol-api' function quadCenter(q: number[]): { x: number; y: number } { const x = ((q[0] ?? 0) + (q[2] ?? 0) + (q[4] ?? 0) + (q[6] ?? 0)) / 4 @@ -8,20 +8,13 @@ function quadCenter(q: number[]): { x: number; y: number } { /** 3-tier fallback: getContentQuads -> getBoxModel -> getBoundingClientRect */ export async function getElementCenter( - cdp: CdpBackend, + session: ProtocolApi, backendNodeId: number, - sessionId: string, ): Promise<{ x: number; y: number }> { try { - const quadsResult = (await cdp.send( - 'DOM.getContentQuads', - { backendNodeId }, - sessionId, - )) as { - quads?: number[][] - } + const quadsResult = await session.DOM.getContentQuads({ backendNodeId }) if (quadsResult.quads?.length) { - const q = quadsResult.quads[0] + const q = quadsResult.quads[0] as unknown as number[] if (q && q.length >= 8) return quadCenter(q) } } catch { @@ -29,26 +22,14 @@ export async function getElementCenter( } try { - const boxResult = (await cdp.send( - 'DOM.getBoxModel', - { backendNodeId }, - sessionId, - )) as { - model?: { content: number[] } - } - const content = boxResult.model?.content + const boxResult = await session.DOM.getBoxModel({ backendNodeId }) + const content = boxResult.model?.content as unknown as number[] | undefined if (content && content.length >= 8) return quadCenter(content) } catch { // fall through } - const resolved = (await cdp.send( - 'DOM.resolveNode', - { backendNodeId }, - sessionId, - )) as { - object?: { objectId?: string } - } + const resolved = await session.DOM.resolveNode({ backendNodeId }) const objectId = resolved.object?.objectId if (!objectId) { throw new Error( @@ -56,76 +37,57 @@ export async function getElementCenter( ) } - const boundsResult = (await cdp.send( - 'Runtime.callFunctionOn', - { - functionDeclaration: - 'function(){var r=this.getBoundingClientRect();return{x:r.left,y:r.top,w:r.width,h:r.height}}', - objectId, - returnByValue: true, - }, - sessionId, - )) as { - result?: { - value?: { x: number; y: number; w: number; h: number } - } - } + const boundsResult = await session.Runtime.callFunctionOn({ + functionDeclaration: + 'function(){var r=this.getBoundingClientRect();return{x:r.left,y:r.top,w:r.width,h:r.height}}', + objectId, + returnByValue: true, + }) - const rect = boundsResult.result?.value + const rect = boundsResult.result?.value as + | { x: number; y: number; w: number; h: number } + | undefined if (!rect) throw new Error('Could not get element bounds.') return { x: rect.x + rect.w / 2, y: rect.y + rect.h / 2 } } export async function scrollIntoView( - cdp: CdpBackend, + session: ProtocolApi, backendNodeId: number, - sessionId: string, ): Promise { try { - await cdp.send('DOM.scrollIntoViewIfNeeded', { backendNodeId }, sessionId) + await session.DOM.scrollIntoViewIfNeeded({ backendNodeId }) } catch { // not critical } } export async function focusElement( - cdp: CdpBackend, + session: ProtocolApi, backendNodeId: number, - sessionId: string, ): Promise { - const pushResult = (await cdp.send( - 'DOM.pushNodesByBackendIdsToFrontend', - { backendNodeIds: [backendNodeId] }, - sessionId, - )) as { nodeIds: number[] } - await cdp.send('DOM.focus', { nodeId: pushResult.nodeIds[0] }, sessionId) + const pushResult = await session.DOM.pushNodesByBackendIdsToFrontend({ + backendNodeIds: [backendNodeId], + }) + await session.DOM.focus({ nodeId: pushResult.nodeIds[0] }) } export async function jsClick( - cdp: CdpBackend, + session: ProtocolApi, backendNodeId: number, - sessionId: string, ): Promise { - const objectId = await resolveObjectId(cdp, backendNodeId, sessionId) - await cdp.send( - 'Runtime.callFunctionOn', - { functionDeclaration: 'function(){this.click()}', objectId }, - sessionId, - ) + const objectId = await resolveObjectId(session, backendNodeId) + await session.Runtime.callFunctionOn({ + functionDeclaration: 'function(){this.click()}', + objectId, + }) } export async function resolveObjectId( - cdp: CdpBackend, + session: ProtocolApi, backendNodeId: number, - sessionId: string, ): Promise { - const resolved = (await cdp.send( - 'DOM.resolveNode', - { backendNodeId }, - sessionId, - )) as { - object?: { objectId?: string } - } + const resolved = await session.DOM.resolveNode({ backendNodeId }) const objectId = resolved.object?.objectId if (!objectId) throw new Error('Element not found in DOM. Take a new snapshot.') @@ -133,25 +95,19 @@ export async function resolveObjectId( } export async function callOnElement( - cdp: CdpBackend, + session: ProtocolApi, backendNodeId: number, - sessionId: string, fn: string, args?: unknown[], ): Promise { - const objectId = await resolveObjectId(cdp, backendNodeId, sessionId) - const params: Record = { + const objectId = await resolveObjectId(session, backendNodeId) + const result = await session.Runtime.callFunctionOn({ functionDeclaration: fn, objectId, returnByValue: true, - } - if (args) params.arguments = args.map((v) => ({ value: v })) - const result = (await cdp.send( - 'Runtime.callFunctionOn', - params, - sessionId, - )) as { - result?: { value?: unknown } - } + ...(args && { + arguments: args.map((v) => ({ value: v })), + }), + }) return result.result?.value } diff --git a/apps/server/src/browser/history.ts b/apps/server/src/browser/history.ts index 093131007..3c312d6fe 100644 --- a/apps/server/src/browser/history.ts +++ b/apps/server/src/browser/history.ts @@ -14,27 +14,25 @@ export async function searchHistory( query: string, maxResults?: number, ): Promise { - const result = await cdp.send('History.search', { + const result = await cdp.History.search({ query, ...(maxResults !== undefined && { maxResults }), }) - const data = result as { entries: HistoryEntry[] } - return data.entries + return result.entries as HistoryEntry[] } export async function getRecentHistory( cdp: CdpBackend, maxResults?: number, ): Promise { - const result = await cdp.send('History.getRecent', { + const result = await cdp.History.getRecent({ ...(maxResults !== undefined && { maxResults }), }) - const data = result as { entries: HistoryEntry[] } - return data.entries + return result.entries as HistoryEntry[] } export async function deleteUrl(cdp: CdpBackend, url: string): Promise { - await cdp.send('History.deleteUrl', { url }) + await cdp.History.deleteUrl({ url }) } export async function deleteRange( @@ -42,5 +40,5 @@ export async function deleteRange( startTime: number, endTime: number, ): Promise { - await cdp.send('History.deleteRange', { startTime, endTime }) + await cdp.History.deleteRange({ startTime, endTime }) } diff --git a/apps/server/src/browser/keyboard.ts b/apps/server/src/browser/keyboard.ts index a84b70a82..f6e47084f 100644 --- a/apps/server/src/browser/keyboard.ts +++ b/apps/server/src/browser/keyboard.ts @@ -1,4 +1,4 @@ -import type { CdpBackend } from './backends/types' +import type { ProtocolApi } from '@browseros/cdp-protocol/protocol-api' type KeyInfo = { code: string; keyCode: number | undefined } @@ -71,119 +71,82 @@ export function modifierBitmask(modifiers: string[]): number { } export async function typeText( - cdp: CdpBackend, - sessionId: string, + session: ProtocolApi, text: string, ): Promise { for (const char of text) { if (char === '\n') { - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyDown', - key: 'Enter', - code: 'Enter', - windowsVirtualKeyCode: 13, - }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { type: 'char', text: '\r', key: 'Enter' }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyUp', - key: 'Enter', - code: 'Enter', - windowsVirtualKeyCode: 13, - }, - sessionId, - ) + await session.Input.dispatchKeyEvent({ + type: 'keyDown', + key: 'Enter', + code: 'Enter', + windowsVirtualKeyCode: 13, + }) + await session.Input.dispatchKeyEvent({ + type: 'char', + text: '\r', + key: 'Enter', + }) + await session.Input.dispatchKeyEvent({ + type: 'keyUp', + key: 'Enter', + code: 'Enter', + windowsVirtualKeyCode: 13, + }) } else { const info = getKeyInfo(char) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyDown', - key: char, - code: info.code, - windowsVirtualKeyCode: info.keyCode, - }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { type: 'char', text: char, key: char }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyUp', - key: char, - code: info.code, - windowsVirtualKeyCode: info.keyCode, - }, - sessionId, - ) + await session.Input.dispatchKeyEvent({ + type: 'keyDown', + key: char, + code: info.code, + windowsVirtualKeyCode: info.keyCode, + }) + await session.Input.dispatchKeyEvent({ + type: 'char', + text: char, + key: char, + }) + await session.Input.dispatchKeyEvent({ + type: 'keyUp', + key: char, + code: info.code, + windowsVirtualKeyCode: info.keyCode, + }) } } } -export async function clearField( - cdp: CdpBackend, - sessionId: string, -): Promise { - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyDown', - key: 'a', - code: 'KeyA', - modifiers: 2, - windowsVirtualKeyCode: 65, - }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyUp', - key: 'a', - code: 'KeyA', - modifiers: 2, - windowsVirtualKeyCode: 65, - }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyDown', - key: 'Delete', - code: 'Delete', - windowsVirtualKeyCode: 46, - }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyUp', - key: 'Delete', - code: 'Delete', - windowsVirtualKeyCode: 46, - }, - sessionId, - ) +export async function clearField(session: ProtocolApi): Promise { + await session.Input.dispatchKeyEvent({ + type: 'keyDown', + key: 'a', + code: 'KeyA', + modifiers: 2, + windowsVirtualKeyCode: 65, + }) + await session.Input.dispatchKeyEvent({ + type: 'keyUp', + key: 'a', + code: 'KeyA', + modifiers: 2, + windowsVirtualKeyCode: 65, + }) + await session.Input.dispatchKeyEvent({ + type: 'keyDown', + key: 'Delete', + code: 'Delete', + windowsVirtualKeyCode: 46, + }) + await session.Input.dispatchKeyEvent({ + type: 'keyUp', + key: 'Delete', + code: 'Delete', + windowsVirtualKeyCode: 46, + }) } export async function pressCombo( - cdp: CdpBackend, - sessionId: string, + session: ProtocolApi, key: string, ): Promise { const parts = key.split('+') @@ -193,53 +156,37 @@ export async function pressCombo( for (const mod of modifiers) { const info = getKeyInfo(mod) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyDown', - key: mod, - code: info.code, - windowsVirtualKeyCode: info.keyCode, - }, - sessionId, - ) + await session.Input.dispatchKeyEvent({ + type: 'keyDown', + key: mod, + code: info.code, + windowsVirtualKeyCode: info.keyCode, + }) } const mainInfo = getKeyInfo(mainKey) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyDown', - key: mainKey, - code: mainInfo.code, - modifiers: modBitmask, - windowsVirtualKeyCode: mainInfo.keyCode, - }, - sessionId, - ) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyUp', - key: mainKey, - code: mainInfo.code, - modifiers: modBitmask, - windowsVirtualKeyCode: mainInfo.keyCode, - }, - sessionId, - ) + await session.Input.dispatchKeyEvent({ + type: 'keyDown', + key: mainKey, + code: mainInfo.code, + modifiers: modBitmask, + windowsVirtualKeyCode: mainInfo.keyCode, + }) + await session.Input.dispatchKeyEvent({ + type: 'keyUp', + key: mainKey, + code: mainInfo.code, + modifiers: modBitmask, + windowsVirtualKeyCode: mainInfo.keyCode, + }) for (const mod of modifiers.reverse()) { const info = getKeyInfo(mod) - await cdp.send( - 'Input.dispatchKeyEvent', - { - type: 'keyUp', - key: mod, - code: info.code, - windowsVirtualKeyCode: info.keyCode, - }, - sessionId, - ) + await session.Input.dispatchKeyEvent({ + type: 'keyUp', + key: mod, + code: info.code, + windowsVirtualKeyCode: info.keyCode, + }) } } diff --git a/apps/server/src/browser/mouse.ts b/apps/server/src/browser/mouse.ts index 571275e94..a749d7efa 100644 --- a/apps/server/src/browser/mouse.ts +++ b/apps/server/src/browser/mouse.ts @@ -1,95 +1,84 @@ -import type { CdpBackend } from './backends/types' +import type { ProtocolApi } from '@browseros/cdp-protocol/protocol-api' export async function dispatchClick( - cdp: CdpBackend, - sessionId: string, + session: ProtocolApi, x: number, y: number, button: string, clickCount: number, modifiers: number, ): Promise { - await cdp.send( - 'Input.dispatchMouseEvent', - { type: 'mouseMoved', x, y }, - sessionId, - ) - await cdp.send( - 'Input.dispatchMouseEvent', - { type: 'mousePressed', x, y, button, clickCount, modifiers }, - sessionId, - ) - await cdp.send( - 'Input.dispatchMouseEvent', - { type: 'mouseReleased', x, y, button, clickCount, modifiers }, - sessionId, - ) + const btn = button as 'left' | 'middle' | 'right' + await session.Input.dispatchMouseEvent({ type: 'mouseMoved', x, y }) + await session.Input.dispatchMouseEvent({ + type: 'mousePressed', + x, + y, + button: btn, + clickCount, + modifiers, + }) + await session.Input.dispatchMouseEvent({ + type: 'mouseReleased', + x, + y, + button: btn, + clickCount, + modifiers, + }) } export async function dispatchHover( - cdp: CdpBackend, - sessionId: string, + session: ProtocolApi, x: number, y: number, ): Promise { - await cdp.send( - 'Input.dispatchMouseEvent', - { type: 'mouseMoved', x, y }, - sessionId, - ) + await session.Input.dispatchMouseEvent({ type: 'mouseMoved', x, y }) } export async function dispatchDrag( - cdp: CdpBackend, - sessionId: string, + session: ProtocolApi, from: { x: number; y: number }, to: { x: number; y: number }, ): Promise { - await cdp.send( - 'Input.dispatchMouseEvent', - { type: 'mouseMoved', x: from.x, y: from.y }, - sessionId, - ) - await cdp.send( - 'Input.dispatchMouseEvent', - { - type: 'mousePressed', - x: from.x, - y: from.y, - button: 'left', - clickCount: 1, - }, - sessionId, - ) - await cdp.send( - 'Input.dispatchMouseEvent', - { type: 'mouseMoved', x: to.x, y: to.y }, - sessionId, - ) - await cdp.send( - 'Input.dispatchMouseEvent', - { - type: 'mouseReleased', - x: to.x, - y: to.y, - button: 'left', - clickCount: 1, - }, - sessionId, - ) + await session.Input.dispatchMouseEvent({ + type: 'mouseMoved', + x: from.x, + y: from.y, + }) + await session.Input.dispatchMouseEvent({ + type: 'mousePressed', + x: from.x, + y: from.y, + button: 'left', + clickCount: 1, + }) + await session.Input.dispatchMouseEvent({ + type: 'mouseMoved', + x: to.x, + y: to.y, + }) + await session.Input.dispatchMouseEvent({ + type: 'mouseReleased', + x: to.x, + y: to.y, + button: 'left', + clickCount: 1, + }) } export async function dispatchScroll( - cdp: CdpBackend, - sessionId: string, + session: ProtocolApi, x: number, y: number, deltaX: number, deltaY: number, ): Promise { - await cdp.send( - 'Input.dispatchMouseEvent', - { type: 'mouseWheel', x, y, deltaX, deltaY }, - sessionId, - ) + await session.Input.dispatchMouseEvent({ + type: 'mouseWheel', + x, + y, + deltaX, + deltaY, + }) } diff --git a/apps/server/src/browser/snapshot.ts b/apps/server/src/browser/snapshot.ts index b39913190..eb407c800 100644 --- a/apps/server/src/browser/snapshot.ts +++ b/apps/server/src/browser/snapshot.ts @@ -1,4 +1,4 @@ -import type { CdpBackend } from './backends/types' +import type { ProtocolApi } from '@browseros/cdp-protocol/protocol-api' interface AXValue { type: string @@ -214,46 +214,32 @@ export interface CursorInteractiveElement { } export async function findCursorInteractiveElements( - cdp: CdpBackend, - sessionId: string, + session: ProtocolApi, ): Promise { - const findResult = (await cdp.send( - 'Runtime.evaluate', - { expression: CURSOR_INTERACTIVE_JS, returnByValue: true }, - sessionId, - )) as { - result?: { - value?: Array<{ - marker: string - text: string - reasons: string[] - }> - } - } + const findResult = await session.Runtime.evaluate({ + expression: CURSOR_INTERACTIVE_JS, + returnByValue: true, + }) - const found = findResult.result?.value + const found = findResult.result?.value as + | Array<{ marker: string; text: string; reasons: string[] }> + | undefined if (!found?.length) return [] const results: CursorInteractiveElement[] = [] for (const el of found) { try { - const queryResult = (await cdp.send( - 'Runtime.evaluate', - { - expression: `document.querySelector('[data-__cid="${el.marker}"]')`, - returnByValue: false, - }, - sessionId, - )) as { result?: { objectId?: string } } + const queryResult = await session.Runtime.evaluate({ + expression: `document.querySelector('[data-__cid="${el.marker}"]')`, + returnByValue: false, + }) if (!queryResult.result?.objectId) continue - const desc = (await cdp.send( - 'DOM.describeNode', - { objectId: queryResult.result.objectId }, - sessionId, - )) as { node?: { backendNodeId?: number } } + const desc = await session.DOM.describeNode({ + objectId: queryResult.result.objectId, + }) if (desc.node?.backendNodeId) { results.push({ @@ -267,14 +253,10 @@ export async function findCursorInteractiveElements( } } - await cdp.send( - 'Runtime.evaluate', - { - expression: `document.querySelectorAll('[data-__cid]').forEach(function(el){el.removeAttribute('data-__cid')})`, - returnByValue: true, - }, - sessionId, - ) + await session.Runtime.evaluate({ + expression: `document.querySelectorAll('[data-__cid]').forEach(function(el){el.removeAttribute('data-__cid')})`, + returnByValue: true, + }) return results } diff --git a/apps/server/src/browser/tab-groups.ts b/apps/server/src/browser/tab-groups.ts index 8c5a6dbe4..e9b2931cc 100644 --- a/apps/server/src/browser/tab-groups.ts +++ b/apps/server/src/browser/tab-groups.ts @@ -10,9 +10,8 @@ export interface TabGroup { } export async function listTabGroups(cdp: CdpBackend): Promise { - const result = await cdp.send('Browser.getTabGroups') - const data = result as { groups: TabGroup[] } - return data.groups + const result = await cdp.Browser.getTabGroups() + return result.groups as TabGroup[] } export async function groupTabs( @@ -21,20 +20,18 @@ export async function groupTabs( opts?: { title?: string; groupId?: string }, ): Promise { if (opts?.groupId) { - const result = await cdp.send('Browser.addTabsToGroup', { + const result = await cdp.Browser.addTabsToGroup({ groupId: opts.groupId, tabIds, }) - const data = result as { group: TabGroup } - return data.group + return result.group as TabGroup } - const result = await cdp.send('Browser.createTabGroup', { + const result = await cdp.Browser.createTabGroup({ tabIds, ...(opts?.title !== undefined && { title: opts.title }), }) - const data = result as { group: TabGroup } - return data.group + return result.group as TabGroup } export async function updateTabGroup( @@ -42,24 +39,20 @@ export async function updateTabGroup( groupId: string, opts: { title?: string; color?: string; collapsed?: boolean }, ): Promise { - const result = await cdp.send('Browser.updateTabGroup', { - groupId, - ...opts, - }) - const data = result as { group: TabGroup } - return data.group + const result = await cdp.Browser.updateTabGroup({ groupId, ...opts }) + return result.group as TabGroup } export async function ungroupTabs( cdp: CdpBackend, tabIds: number[], ): Promise { - await cdp.send('Browser.removeTabsFromGroup', { tabIds }) + await cdp.Browser.removeTabsFromGroup({ tabIds }) } export async function closeTabGroup( cdp: CdpBackend, groupId: string, ): Promise { - await cdp.send('Browser.closeTabGroup', { groupId }) + await cdp.Browser.closeTabGroup({ groupId }) } diff --git a/bun.lock b/bun.lock index 6d463d544..62d67934f 100644 --- a/bun.lock +++ b/bun.lock @@ -7,6 +7,7 @@ "devDependencies": { "@biomejs/biome": "2.3.14", "@sentry/cli": "^2.42.2", + "@types/bun": "^1.3.5", "@types/node": "^24.3.3", "dotenv": "^17.2.3", "globals": "^16.4.0", @@ -152,6 +153,7 @@ "@ai-sdk/openai-compatible": "^2.0.30", "@ai-sdk/provider": "^3.0.8", "@browseros-ai/agent-sdk": "workspace:*", + "@browseros/cdp-protocol": "workspace:*", "@browseros/shared": "workspace:*", "@google/gemini-cli-core": "^0.16.0", "@google/genai": "1.30.0", @@ -209,6 +211,10 @@ "zod": "^3.x", }, }, + "packages/cdp-protocol": { + "name": "@browseros/cdp-protocol", + "version": "0.0.1", + }, "packages/shared": { "name": "@browseros/shared", "version": "0.0.1", @@ -420,6 +426,8 @@ "@browseros/agent": ["@browseros/agent@workspace:apps/agent"], + "@browseros/cdp-protocol": ["@browseros/cdp-protocol@workspace:packages/cdp-protocol"], + "@browseros/server": ["@browseros/server@workspace:apps/server"], "@browseros/shared": ["@browseros/shared@workspace:packages/shared"], diff --git a/package.json b/package.json index c6c5849c6..d08862d13 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "typecheck": "bun run --filter '*' typecheck", "lint": "bunx biome check", "lint:fix": "bunx biome check --write --unsafe", + "gen:cdp": "bun scripts/codegen/cdp-protocol.ts", "clean": "rimraf dist" }, "repository": "browseros-ai/BrowserOS-server", @@ -40,6 +41,7 @@ "devDependencies": { "@biomejs/biome": "2.3.14", "@sentry/cli": "^2.42.2", + "@types/bun": "^1.3.5", "@types/node": "^24.3.3", "dotenv": "^17.2.3", "globals": "^16.4.0", diff --git a/packages/cdp-protocol/package.json b/packages/cdp-protocol/package.json new file mode 100644 index 000000000..700fe9c67 --- /dev/null +++ b/packages/cdp-protocol/package.json @@ -0,0 +1,458 @@ +{ + "name": "@browseros/cdp-protocol", + "version": "0.0.1", + "type": "module", + "scripts": { + "typecheck": "tsc --noEmit" + }, + "exports": { + "./domains/accessibility": { + "types": "./src/generated/domains/accessibility.ts", + "default": "./src/generated/domains/accessibility.ts" + }, + "./domain-apis/accessibility": { + "types": "./src/generated/domain-apis/accessibility.ts", + "default": "./src/generated/domain-apis/accessibility.ts" + }, + "./domains/animation": { + "types": "./src/generated/domains/animation.ts", + "default": "./src/generated/domains/animation.ts" + }, + "./domain-apis/animation": { + "types": "./src/generated/domain-apis/animation.ts", + "default": "./src/generated/domain-apis/animation.ts" + }, + "./domains/audits": { + "types": "./src/generated/domains/audits.ts", + "default": "./src/generated/domains/audits.ts" + }, + "./domain-apis/audits": { + "types": "./src/generated/domain-apis/audits.ts", + "default": "./src/generated/domain-apis/audits.ts" + }, + "./domains/autofill": { + "types": "./src/generated/domains/autofill.ts", + "default": "./src/generated/domains/autofill.ts" + }, + "./domain-apis/autofill": { + "types": "./src/generated/domain-apis/autofill.ts", + "default": "./src/generated/domain-apis/autofill.ts" + }, + "./domains/bookmarks": { + "types": "./src/generated/domains/bookmarks.ts", + "default": "./src/generated/domains/bookmarks.ts" + }, + "./domain-apis/bookmarks": { + "types": "./src/generated/domain-apis/bookmarks.ts", + "default": "./src/generated/domain-apis/bookmarks.ts" + }, + "./domains/background-service": { + "types": "./src/generated/domains/background-service.ts", + "default": "./src/generated/domains/background-service.ts" + }, + "./domain-apis/background-service": { + "types": "./src/generated/domain-apis/background-service.ts", + "default": "./src/generated/domain-apis/background-service.ts" + }, + "./domains/bluetooth-emulation": { + "types": "./src/generated/domains/bluetooth-emulation.ts", + "default": "./src/generated/domains/bluetooth-emulation.ts" + }, + "./domain-apis/bluetooth-emulation": { + "types": "./src/generated/domain-apis/bluetooth-emulation.ts", + "default": "./src/generated/domain-apis/bluetooth-emulation.ts" + }, + "./domains/browser": { + "types": "./src/generated/domains/browser.ts", + "default": "./src/generated/domains/browser.ts" + }, + "./domain-apis/browser": { + "types": "./src/generated/domain-apis/browser.ts", + "default": "./src/generated/domain-apis/browser.ts" + }, + "./domains/css": { + "types": "./src/generated/domains/css.ts", + "default": "./src/generated/domains/css.ts" + }, + "./domain-apis/css": { + "types": "./src/generated/domain-apis/css.ts", + "default": "./src/generated/domain-apis/css.ts" + }, + "./domains/cache-storage": { + "types": "./src/generated/domains/cache-storage.ts", + "default": "./src/generated/domains/cache-storage.ts" + }, + "./domain-apis/cache-storage": { + "types": "./src/generated/domain-apis/cache-storage.ts", + "default": "./src/generated/domain-apis/cache-storage.ts" + }, + "./domains/cast": { + "types": "./src/generated/domains/cast.ts", + "default": "./src/generated/domains/cast.ts" + }, + "./domain-apis/cast": { + "types": "./src/generated/domain-apis/cast.ts", + "default": "./src/generated/domain-apis/cast.ts" + }, + "./domains/dom": { + "types": "./src/generated/domains/dom.ts", + "default": "./src/generated/domains/dom.ts" + }, + "./domain-apis/dom": { + "types": "./src/generated/domain-apis/dom.ts", + "default": "./src/generated/domain-apis/dom.ts" + }, + "./domains/dom-debugger": { + "types": "./src/generated/domains/dom-debugger.ts", + "default": "./src/generated/domains/dom-debugger.ts" + }, + "./domain-apis/dom-debugger": { + "types": "./src/generated/domain-apis/dom-debugger.ts", + "default": "./src/generated/domain-apis/dom-debugger.ts" + }, + "./domains/dom-snapshot": { + "types": "./src/generated/domains/dom-snapshot.ts", + "default": "./src/generated/domains/dom-snapshot.ts" + }, + "./domain-apis/dom-snapshot": { + "types": "./src/generated/domain-apis/dom-snapshot.ts", + "default": "./src/generated/domain-apis/dom-snapshot.ts" + }, + "./domains/dom-storage": { + "types": "./src/generated/domains/dom-storage.ts", + "default": "./src/generated/domains/dom-storage.ts" + }, + "./domain-apis/dom-storage": { + "types": "./src/generated/domain-apis/dom-storage.ts", + "default": "./src/generated/domain-apis/dom-storage.ts" + }, + "./domains/device-access": { + "types": "./src/generated/domains/device-access.ts", + "default": "./src/generated/domains/device-access.ts" + }, + "./domain-apis/device-access": { + "types": "./src/generated/domain-apis/device-access.ts", + "default": "./src/generated/domain-apis/device-access.ts" + }, + "./domains/device-orientation": { + "types": "./src/generated/domains/device-orientation.ts", + "default": "./src/generated/domains/device-orientation.ts" + }, + "./domain-apis/device-orientation": { + "types": "./src/generated/domain-apis/device-orientation.ts", + "default": "./src/generated/domain-apis/device-orientation.ts" + }, + "./domains/emulation": { + "types": "./src/generated/domains/emulation.ts", + "default": "./src/generated/domains/emulation.ts" + }, + "./domain-apis/emulation": { + "types": "./src/generated/domain-apis/emulation.ts", + "default": "./src/generated/domain-apis/emulation.ts" + }, + "./domains/event-breakpoints": { + "types": "./src/generated/domains/event-breakpoints.ts", + "default": "./src/generated/domains/event-breakpoints.ts" + }, + "./domain-apis/event-breakpoints": { + "types": "./src/generated/domain-apis/event-breakpoints.ts", + "default": "./src/generated/domain-apis/event-breakpoints.ts" + }, + "./domains/extensions": { + "types": "./src/generated/domains/extensions.ts", + "default": "./src/generated/domains/extensions.ts" + }, + "./domain-apis/extensions": { + "types": "./src/generated/domain-apis/extensions.ts", + "default": "./src/generated/domain-apis/extensions.ts" + }, + "./domains/fed-cm": { + "types": "./src/generated/domains/fed-cm.ts", + "default": "./src/generated/domains/fed-cm.ts" + }, + "./domain-apis/fed-cm": { + "types": "./src/generated/domain-apis/fed-cm.ts", + "default": "./src/generated/domain-apis/fed-cm.ts" + }, + "./domains/fetch": { + "types": "./src/generated/domains/fetch.ts", + "default": "./src/generated/domains/fetch.ts" + }, + "./domain-apis/fetch": { + "types": "./src/generated/domain-apis/fetch.ts", + "default": "./src/generated/domain-apis/fetch.ts" + }, + "./domains/file-system": { + "types": "./src/generated/domains/file-system.ts", + "default": "./src/generated/domains/file-system.ts" + }, + "./domain-apis/file-system": { + "types": "./src/generated/domain-apis/file-system.ts", + "default": "./src/generated/domain-apis/file-system.ts" + }, + "./domains/headless-experimental": { + "types": "./src/generated/domains/headless-experimental.ts", + "default": "./src/generated/domains/headless-experimental.ts" + }, + "./domain-apis/headless-experimental": { + "types": "./src/generated/domain-apis/headless-experimental.ts", + "default": "./src/generated/domain-apis/headless-experimental.ts" + }, + "./domains/history": { + "types": "./src/generated/domains/history.ts", + "default": "./src/generated/domains/history.ts" + }, + "./domain-apis/history": { + "types": "./src/generated/domain-apis/history.ts", + "default": "./src/generated/domain-apis/history.ts" + }, + "./domains/io": { + "types": "./src/generated/domains/io.ts", + "default": "./src/generated/domains/io.ts" + }, + "./domain-apis/io": { + "types": "./src/generated/domain-apis/io.ts", + "default": "./src/generated/domain-apis/io.ts" + }, + "./domains/indexed-db": { + "types": "./src/generated/domains/indexed-db.ts", + "default": "./src/generated/domains/indexed-db.ts" + }, + "./domain-apis/indexed-db": { + "types": "./src/generated/domain-apis/indexed-db.ts", + "default": "./src/generated/domain-apis/indexed-db.ts" + }, + "./domains/input": { + "types": "./src/generated/domains/input.ts", + "default": "./src/generated/domains/input.ts" + }, + "./domain-apis/input": { + "types": "./src/generated/domain-apis/input.ts", + "default": "./src/generated/domain-apis/input.ts" + }, + "./domains/inspector": { + "types": "./src/generated/domains/inspector.ts", + "default": "./src/generated/domains/inspector.ts" + }, + "./domain-apis/inspector": { + "types": "./src/generated/domain-apis/inspector.ts", + "default": "./src/generated/domain-apis/inspector.ts" + }, + "./domains/layer-tree": { + "types": "./src/generated/domains/layer-tree.ts", + "default": "./src/generated/domains/layer-tree.ts" + }, + "./domain-apis/layer-tree": { + "types": "./src/generated/domain-apis/layer-tree.ts", + "default": "./src/generated/domain-apis/layer-tree.ts" + }, + "./domains/log": { + "types": "./src/generated/domains/log.ts", + "default": "./src/generated/domains/log.ts" + }, + "./domain-apis/log": { + "types": "./src/generated/domain-apis/log.ts", + "default": "./src/generated/domain-apis/log.ts" + }, + "./domains/media": { + "types": "./src/generated/domains/media.ts", + "default": "./src/generated/domains/media.ts" + }, + "./domain-apis/media": { + "types": "./src/generated/domain-apis/media.ts", + "default": "./src/generated/domain-apis/media.ts" + }, + "./domains/memory": { + "types": "./src/generated/domains/memory.ts", + "default": "./src/generated/domains/memory.ts" + }, + "./domain-apis/memory": { + "types": "./src/generated/domain-apis/memory.ts", + "default": "./src/generated/domain-apis/memory.ts" + }, + "./domains/network": { + "types": "./src/generated/domains/network.ts", + "default": "./src/generated/domains/network.ts" + }, + "./domain-apis/network": { + "types": "./src/generated/domain-apis/network.ts", + "default": "./src/generated/domain-apis/network.ts" + }, + "./domains/overlay": { + "types": "./src/generated/domains/overlay.ts", + "default": "./src/generated/domains/overlay.ts" + }, + "./domain-apis/overlay": { + "types": "./src/generated/domain-apis/overlay.ts", + "default": "./src/generated/domain-apis/overlay.ts" + }, + "./domains/pwa": { + "types": "./src/generated/domains/pwa.ts", + "default": "./src/generated/domains/pwa.ts" + }, + "./domain-apis/pwa": { + "types": "./src/generated/domain-apis/pwa.ts", + "default": "./src/generated/domain-apis/pwa.ts" + }, + "./domains/page": { + "types": "./src/generated/domains/page.ts", + "default": "./src/generated/domains/page.ts" + }, + "./domain-apis/page": { + "types": "./src/generated/domain-apis/page.ts", + "default": "./src/generated/domain-apis/page.ts" + }, + "./domains/performance": { + "types": "./src/generated/domains/performance.ts", + "default": "./src/generated/domains/performance.ts" + }, + "./domain-apis/performance": { + "types": "./src/generated/domain-apis/performance.ts", + "default": "./src/generated/domain-apis/performance.ts" + }, + "./domains/performance-timeline": { + "types": "./src/generated/domains/performance-timeline.ts", + "default": "./src/generated/domains/performance-timeline.ts" + }, + "./domain-apis/performance-timeline": { + "types": "./src/generated/domain-apis/performance-timeline.ts", + "default": "./src/generated/domain-apis/performance-timeline.ts" + }, + "./domains/preload": { + "types": "./src/generated/domains/preload.ts", + "default": "./src/generated/domains/preload.ts" + }, + "./domain-apis/preload": { + "types": "./src/generated/domain-apis/preload.ts", + "default": "./src/generated/domain-apis/preload.ts" + }, + "./domains/security": { + "types": "./src/generated/domains/security.ts", + "default": "./src/generated/domains/security.ts" + }, + "./domain-apis/security": { + "types": "./src/generated/domain-apis/security.ts", + "default": "./src/generated/domain-apis/security.ts" + }, + "./domains/service-worker": { + "types": "./src/generated/domains/service-worker.ts", + "default": "./src/generated/domains/service-worker.ts" + }, + "./domain-apis/service-worker": { + "types": "./src/generated/domain-apis/service-worker.ts", + "default": "./src/generated/domain-apis/service-worker.ts" + }, + "./domains/storage": { + "types": "./src/generated/domains/storage.ts", + "default": "./src/generated/domains/storage.ts" + }, + "./domain-apis/storage": { + "types": "./src/generated/domain-apis/storage.ts", + "default": "./src/generated/domain-apis/storage.ts" + }, + "./domains/system-info": { + "types": "./src/generated/domains/system-info.ts", + "default": "./src/generated/domains/system-info.ts" + }, + "./domain-apis/system-info": { + "types": "./src/generated/domain-apis/system-info.ts", + "default": "./src/generated/domain-apis/system-info.ts" + }, + "./domains/target": { + "types": "./src/generated/domains/target.ts", + "default": "./src/generated/domains/target.ts" + }, + "./domain-apis/target": { + "types": "./src/generated/domain-apis/target.ts", + "default": "./src/generated/domain-apis/target.ts" + }, + "./domains/tethering": { + "types": "./src/generated/domains/tethering.ts", + "default": "./src/generated/domains/tethering.ts" + }, + "./domain-apis/tethering": { + "types": "./src/generated/domain-apis/tethering.ts", + "default": "./src/generated/domain-apis/tethering.ts" + }, + "./domains/tracing": { + "types": "./src/generated/domains/tracing.ts", + "default": "./src/generated/domains/tracing.ts" + }, + "./domain-apis/tracing": { + "types": "./src/generated/domain-apis/tracing.ts", + "default": "./src/generated/domain-apis/tracing.ts" + }, + "./domains/web-audio": { + "types": "./src/generated/domains/web-audio.ts", + "default": "./src/generated/domains/web-audio.ts" + }, + "./domain-apis/web-audio": { + "types": "./src/generated/domain-apis/web-audio.ts", + "default": "./src/generated/domain-apis/web-audio.ts" + }, + "./domains/web-authn": { + "types": "./src/generated/domains/web-authn.ts", + "default": "./src/generated/domains/web-authn.ts" + }, + "./domain-apis/web-authn": { + "types": "./src/generated/domain-apis/web-authn.ts", + "default": "./src/generated/domain-apis/web-authn.ts" + }, + "./domains/console": { + "types": "./src/generated/domains/console.ts", + "default": "./src/generated/domains/console.ts" + }, + "./domain-apis/console": { + "types": "./src/generated/domain-apis/console.ts", + "default": "./src/generated/domain-apis/console.ts" + }, + "./domains/debugger": { + "types": "./src/generated/domains/debugger.ts", + "default": "./src/generated/domains/debugger.ts" + }, + "./domain-apis/debugger": { + "types": "./src/generated/domain-apis/debugger.ts", + "default": "./src/generated/domain-apis/debugger.ts" + }, + "./domains/heap-profiler": { + "types": "./src/generated/domains/heap-profiler.ts", + "default": "./src/generated/domains/heap-profiler.ts" + }, + "./domain-apis/heap-profiler": { + "types": "./src/generated/domain-apis/heap-profiler.ts", + "default": "./src/generated/domain-apis/heap-profiler.ts" + }, + "./domains/profiler": { + "types": "./src/generated/domains/profiler.ts", + "default": "./src/generated/domains/profiler.ts" + }, + "./domain-apis/profiler": { + "types": "./src/generated/domain-apis/profiler.ts", + "default": "./src/generated/domain-apis/profiler.ts" + }, + "./domains/runtime": { + "types": "./src/generated/domains/runtime.ts", + "default": "./src/generated/domains/runtime.ts" + }, + "./domain-apis/runtime": { + "types": "./src/generated/domain-apis/runtime.ts", + "default": "./src/generated/domain-apis/runtime.ts" + }, + "./domains/schema": { + "types": "./src/generated/domains/schema.ts", + "default": "./src/generated/domains/schema.ts" + }, + "./domain-apis/schema": { + "types": "./src/generated/domain-apis/schema.ts", + "default": "./src/generated/domain-apis/schema.ts" + }, + "./protocol-api": { + "types": "./src/generated/protocol-api.ts", + "default": "./src/generated/protocol-api.ts" + }, + "./create-api": { + "types": "./src/generated/create-api.ts", + "default": "./src/generated/create-api.ts" + } + } +} diff --git a/packages/cdp-protocol/src/generated/create-api.ts b/packages/cdp-protocol/src/generated/create-api.ts new file mode 100644 index 000000000..817de5d53 --- /dev/null +++ b/packages/cdp-protocol/src/generated/create-api.ts @@ -0,0 +1,86 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { ProtocolApi } from './protocol-api' + +export type RawSend = ( + method: string, + params?: Record, +) => Promise + +export type RawOn = ( + event: string, + handler: (params: unknown) => void, +) => () => void + +function createDomainProxy(domain: string, send: RawSend, on: RawOn): unknown { + return new Proxy(Object.create(null), { + get(_, method: string) { + if (method === 'on') { + return (event: string, handler: (params: unknown) => void) => + on(`${domain}.${event}`, handler) + } + return (params?: Record) => + send(`${domain}.${method}`, params) + }, + }) +} + +export function createProtocolApi(send: RawSend, on: RawOn): ProtocolApi { + return { + Accessibility: createDomainProxy('Accessibility', send, on), + Animation: createDomainProxy('Animation', send, on), + Audits: createDomainProxy('Audits', send, on), + Autofill: createDomainProxy('Autofill', send, on), + Bookmarks: createDomainProxy('Bookmarks', send, on), + BackgroundService: createDomainProxy('BackgroundService', send, on), + BluetoothEmulation: createDomainProxy('BluetoothEmulation', send, on), + Browser: createDomainProxy('Browser', send, on), + CSS: createDomainProxy('CSS', send, on), + CacheStorage: createDomainProxy('CacheStorage', send, on), + Cast: createDomainProxy('Cast', send, on), + DOM: createDomainProxy('DOM', send, on), + DOMDebugger: createDomainProxy('DOMDebugger', send, on), + DOMSnapshot: createDomainProxy('DOMSnapshot', send, on), + DOMStorage: createDomainProxy('DOMStorage', send, on), + DeviceAccess: createDomainProxy('DeviceAccess', send, on), + DeviceOrientation: createDomainProxy('DeviceOrientation', send, on), + Emulation: createDomainProxy('Emulation', send, on), + EventBreakpoints: createDomainProxy('EventBreakpoints', send, on), + Extensions: createDomainProxy('Extensions', send, on), + FedCm: createDomainProxy('FedCm', send, on), + Fetch: createDomainProxy('Fetch', send, on), + FileSystem: createDomainProxy('FileSystem', send, on), + HeadlessExperimental: createDomainProxy('HeadlessExperimental', send, on), + History: createDomainProxy('History', send, on), + IO: createDomainProxy('IO', send, on), + IndexedDB: createDomainProxy('IndexedDB', send, on), + Input: createDomainProxy('Input', send, on), + Inspector: createDomainProxy('Inspector', send, on), + LayerTree: createDomainProxy('LayerTree', send, on), + Log: createDomainProxy('Log', send, on), + Media: createDomainProxy('Media', send, on), + Memory: createDomainProxy('Memory', send, on), + Network: createDomainProxy('Network', send, on), + Overlay: createDomainProxy('Overlay', send, on), + PWA: createDomainProxy('PWA', send, on), + Page: createDomainProxy('Page', send, on), + Performance: createDomainProxy('Performance', send, on), + PerformanceTimeline: createDomainProxy('PerformanceTimeline', send, on), + Preload: createDomainProxy('Preload', send, on), + Security: createDomainProxy('Security', send, on), + ServiceWorker: createDomainProxy('ServiceWorker', send, on), + Storage: createDomainProxy('Storage', send, on), + SystemInfo: createDomainProxy('SystemInfo', send, on), + Target: createDomainProxy('Target', send, on), + Tethering: createDomainProxy('Tethering', send, on), + Tracing: createDomainProxy('Tracing', send, on), + WebAudio: createDomainProxy('WebAudio', send, on), + WebAuthn: createDomainProxy('WebAuthn', send, on), + Console: createDomainProxy('Console', send, on), + Debugger: createDomainProxy('Debugger', send, on), + HeapProfiler: createDomainProxy('HeapProfiler', send, on), + Profiler: createDomainProxy('Profiler', send, on), + Runtime: createDomainProxy('Runtime', send, on), + Schema: createDomainProxy('Schema', send, on), + } as unknown as ProtocolApi +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/accessibility.ts b/packages/cdp-protocol/src/generated/domain-apis/accessibility.ts new file mode 100644 index 000000000..1e8787c34 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/accessibility.ts @@ -0,0 +1,46 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + GetAXNodeAndAncestorsParams, + GetAXNodeAndAncestorsResult, + GetChildAXNodesParams, + GetChildAXNodesResult, + GetFullAXTreeParams, + GetFullAXTreeResult, + GetPartialAXTreeParams, + GetPartialAXTreeResult, + GetRootAXNodeParams, + GetRootAXNodeResult, + LoadCompleteEvent, + NodesUpdatedEvent, + QueryAXTreeParams, + QueryAXTreeResult, +} from '../domains/accessibility' + +export interface AccessibilityApi { + // ── Commands ── + + disable(): Promise + enable(): Promise + getPartialAXTree( + params?: GetPartialAXTreeParams, + ): Promise + getFullAXTree(params?: GetFullAXTreeParams): Promise + getRootAXNode(params?: GetRootAXNodeParams): Promise + getAXNodeAndAncestors( + params?: GetAXNodeAndAncestorsParams, + ): Promise + getChildAXNodes(params: GetChildAXNodesParams): Promise + queryAXTree(params?: QueryAXTreeParams): Promise + + // ── Events ── + + on( + event: 'loadComplete', + handler: (params: LoadCompleteEvent) => void, + ): () => void + on( + event: 'nodesUpdated', + handler: (params: NodesUpdatedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/animation.ts b/packages/cdp-protocol/src/generated/domain-apis/animation.ts new file mode 100644 index 000000000..630699eeb --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/animation.ts @@ -0,0 +1,54 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AnimationCanceledEvent, + AnimationCreatedEvent, + AnimationStartedEvent, + AnimationUpdatedEvent, + GetCurrentTimeParams, + GetCurrentTimeResult, + GetPlaybackRateResult, + ReleaseAnimationsParams, + ResolveAnimationParams, + ResolveAnimationResult, + SeekAnimationsParams, + SetPausedParams, + SetPlaybackRateParams, + SetTimingParams, +} from '../domains/animation' + +export interface AnimationApi { + // ── Commands ── + + disable(): Promise + enable(): Promise + getCurrentTime(params: GetCurrentTimeParams): Promise + getPlaybackRate(): Promise + releaseAnimations(params: ReleaseAnimationsParams): Promise + resolveAnimation( + params: ResolveAnimationParams, + ): Promise + seekAnimations(params: SeekAnimationsParams): Promise + setPaused(params: SetPausedParams): Promise + setPlaybackRate(params: SetPlaybackRateParams): Promise + setTiming(params: SetTimingParams): Promise + + // ── Events ── + + on( + event: 'animationCanceled', + handler: (params: AnimationCanceledEvent) => void, + ): () => void + on( + event: 'animationCreated', + handler: (params: AnimationCreatedEvent) => void, + ): () => void + on( + event: 'animationStarted', + handler: (params: AnimationStartedEvent) => void, + ): () => void + on( + event: 'animationUpdated', + handler: (params: AnimationUpdatedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/audits.ts b/packages/cdp-protocol/src/generated/domain-apis/audits.ts new file mode 100644 index 000000000..9f9608865 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/audits.ts @@ -0,0 +1,28 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CheckContrastParams, + CheckFormsIssuesResult, + GetEncodedResponseParams, + GetEncodedResponseResult, + IssueAddedEvent, +} from '../domains/audits' + +export interface AuditsApi { + // ── Commands ── + + getEncodedResponse( + params: GetEncodedResponseParams, + ): Promise + disable(): Promise + enable(): Promise + checkContrast(params?: CheckContrastParams): Promise + checkFormsIssues(): Promise + + // ── Events ── + + on( + event: 'issueAdded', + handler: (params: IssueAddedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/autofill.ts b/packages/cdp-protocol/src/generated/domain-apis/autofill.ts new file mode 100644 index 000000000..e4ec7b707 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/autofill.ts @@ -0,0 +1,23 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddressFormFilledEvent, + SetAddressesParams, + TriggerParams, +} from '../domains/autofill' + +export interface AutofillApi { + // ── Commands ── + + trigger(params: TriggerParams): Promise + setAddresses(params: SetAddressesParams): Promise + disable(): Promise + enable(): Promise + + // ── Events ── + + on( + event: 'addressFormFilled', + handler: (params: AddressFormFilledEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/background-service.ts b/packages/cdp-protocol/src/generated/domain-apis/background-service.ts new file mode 100644 index 000000000..5a2dcad32 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/background-service.ts @@ -0,0 +1,30 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + BackgroundServiceEventReceivedEvent, + ClearEventsParams, + RecordingStateChangedEvent, + SetRecordingParams, + StartObservingParams, + StopObservingParams, +} from '../domains/background-service' + +export interface BackgroundServiceApi { + // ── Commands ── + + startObserving(params: StartObservingParams): Promise + stopObserving(params: StopObservingParams): Promise + setRecording(params: SetRecordingParams): Promise + clearEvents(params: ClearEventsParams): Promise + + // ── Events ── + + on( + event: 'recordingStateChanged', + handler: (params: RecordingStateChangedEvent) => void, + ): () => void + on( + event: 'backgroundServiceEventReceived', + handler: (params: BackgroundServiceEventReceivedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/bluetooth-emulation.ts b/packages/cdp-protocol/src/generated/domain-apis/bluetooth-emulation.ts new file mode 100644 index 000000000..b7ce5d34f --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/bluetooth-emulation.ts @@ -0,0 +1,73 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddCharacteristicParams, + AddCharacteristicResult, + AddDescriptorParams, + AddDescriptorResult, + AddServiceParams, + AddServiceResult, + CharacteristicOperationReceivedEvent, + DescriptorOperationReceivedEvent, + EnableParams, + GattOperationReceivedEvent, + RemoveCharacteristicParams, + RemoveDescriptorParams, + RemoveServiceParams, + SetSimulatedCentralStateParams, + SimulateAdvertisementParams, + SimulateCharacteristicOperationResponseParams, + SimulateDescriptorOperationResponseParams, + SimulateGATTDisconnectionParams, + SimulateGATTOperationResponseParams, + SimulatePreconnectedPeripheralParams, +} from '../domains/bluetooth-emulation' + +export interface BluetoothEmulationApi { + // ── Commands ── + + enable(params: EnableParams): Promise + setSimulatedCentralState( + params: SetSimulatedCentralStateParams, + ): Promise + disable(): Promise + simulatePreconnectedPeripheral( + params: SimulatePreconnectedPeripheralParams, + ): Promise + simulateAdvertisement(params: SimulateAdvertisementParams): Promise + simulateGATTOperationResponse( + params: SimulateGATTOperationResponseParams, + ): Promise + simulateCharacteristicOperationResponse( + params: SimulateCharacteristicOperationResponseParams, + ): Promise + simulateDescriptorOperationResponse( + params: SimulateDescriptorOperationResponseParams, + ): Promise + addService(params: AddServiceParams): Promise + removeService(params: RemoveServiceParams): Promise + addCharacteristic( + params: AddCharacteristicParams, + ): Promise + removeCharacteristic(params: RemoveCharacteristicParams): Promise + addDescriptor(params: AddDescriptorParams): Promise + removeDescriptor(params: RemoveDescriptorParams): Promise + simulateGATTDisconnection( + params: SimulateGATTDisconnectionParams, + ): Promise + + // ── Events ── + + on( + event: 'gattOperationReceived', + handler: (params: GattOperationReceivedEvent) => void, + ): () => void + on( + event: 'characteristicOperationReceived', + handler: (params: CharacteristicOperationReceivedEvent) => void, + ): () => void + on( + event: 'descriptorOperationReceived', + handler: (params: DescriptorOperationReceivedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/bookmarks.ts b/packages/cdp-protocol/src/generated/domain-apis/bookmarks.ts new file mode 100644 index 000000000..c905416ea --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/bookmarks.ts @@ -0,0 +1,26 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CreateBookmarkParams, + CreateBookmarkResult, + GetBookmarksParams, + GetBookmarksResult, + MoveBookmarkParams, + MoveBookmarkResult, + RemoveBookmarkParams, + SearchBookmarksParams, + SearchBookmarksResult, + UpdateBookmarkParams, + UpdateBookmarkResult, +} from '../domains/bookmarks' + +export interface BookmarksApi { + // ── Commands ── + + getBookmarks(params?: GetBookmarksParams): Promise + searchBookmarks(params: SearchBookmarksParams): Promise + createBookmark(params: CreateBookmarkParams): Promise + updateBookmark(params: UpdateBookmarkParams): Promise + moveBookmark(params: MoveBookmarkParams): Promise + removeBookmark(params: RemoveBookmarkParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/browser.ts b/packages/cdp-protocol/src/generated/domain-apis/browser.ts new file mode 100644 index 000000000..370e47948 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/browser.ts @@ -0,0 +1,145 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ActivateTabParams, + ActivateWindowParams, + AddPrivacySandboxCoordinatorKeyConfigParams, + AddPrivacySandboxEnrollmentOverrideParams, + AddTabsToGroupParams, + AddTabsToGroupResult, + CancelDownloadParams, + CloseTabGroupParams, + CloseTabParams, + CloseWindowParams, + CreateTabGroupParams, + CreateTabGroupResult, + CreateTabParams, + CreateTabResult, + CreateWindowParams, + CreateWindowResult, + DownloadProgressEvent, + DownloadWillBeginEvent, + DuplicateTabParams, + DuplicateTabResult, + ExecuteBrowserCommandParams, + GetActiveTabParams, + GetActiveTabResult, + GetActiveWindowResult, + GetBrowserCommandLineResult, + GetHistogramParams, + GetHistogramResult, + GetHistogramsParams, + GetHistogramsResult, + GetTabForTargetParams, + GetTabForTargetResult, + GetTabGroupsParams, + GetTabGroupsResult, + GetTabInfoParams, + GetTabInfoResult, + GetTabsParams, + GetTabsResult, + GetTargetForTabParams, + GetTargetForTabResult, + GetVersionResult, + GetWindowBoundsParams, + GetWindowBoundsResult, + GetWindowForTargetParams, + GetWindowForTargetResult, + GetWindowsResult, + GrantPermissionsParams, + HideTabParams, + HideTabResult, + HideWindowParams, + MoveTabGroupParams, + MoveTabGroupResult, + MoveTabParams, + MoveTabResult, + PinTabParams, + PinTabResult, + RemoveTabsFromGroupParams, + ResetPermissionsParams, + SetContentsSizeParams, + SetDockTileParams, + SetDownloadBehaviorParams, + SetPermissionParams, + SetWindowBoundsParams, + ShowTabParams, + ShowTabResult, + ShowWindowParams, + UnpinTabParams, + UnpinTabResult, + UpdateTabGroupParams, + UpdateTabGroupResult, +} from '../domains/browser' + +export interface BrowserApi { + // ── Commands ── + + getWindows(): Promise + getActiveWindow(): Promise + createWindow(params?: CreateWindowParams): Promise + closeWindow(params: CloseWindowParams): Promise + activateWindow(params: ActivateWindowParams): Promise + showWindow(params: ShowWindowParams): Promise + hideWindow(params: HideWindowParams): Promise + getTabs(params?: GetTabsParams): Promise + getActiveTab(params?: GetActiveTabParams): Promise + getTabInfo(params?: GetTabInfoParams): Promise + createTab(params?: CreateTabParams): Promise + closeTab(params?: CloseTabParams): Promise + activateTab(params?: ActivateTabParams): Promise + moveTab(params?: MoveTabParams): Promise + duplicateTab(params?: DuplicateTabParams): Promise + pinTab(params?: PinTabParams): Promise + unpinTab(params?: UnpinTabParams): Promise + showTab(params?: ShowTabParams): Promise + hideTab(params?: HideTabParams): Promise + getTabGroups(params?: GetTabGroupsParams): Promise + createTabGroup(params: CreateTabGroupParams): Promise + updateTabGroup(params: UpdateTabGroupParams): Promise + closeTabGroup(params: CloseTabGroupParams): Promise + addTabsToGroup(params: AddTabsToGroupParams): Promise + removeTabsFromGroup(params: RemoveTabsFromGroupParams): Promise + moveTabGroup(params: MoveTabGroupParams): Promise + setPermission(params: SetPermissionParams): Promise + grantPermissions(params: GrantPermissionsParams): Promise + resetPermissions(params?: ResetPermissionsParams): Promise + setDownloadBehavior(params: SetDownloadBehaviorParams): Promise + cancelDownload(params: CancelDownloadParams): Promise + close(): Promise + crash(): Promise + crashGpuProcess(): Promise + getVersion(): Promise + getBrowserCommandLine(): Promise + getHistograms(params?: GetHistogramsParams): Promise + getHistogram(params: GetHistogramParams): Promise + getWindowBounds(params: GetWindowBoundsParams): Promise + getWindowForTarget( + params?: GetWindowForTargetParams, + ): Promise + getTabForTarget( + params?: GetTabForTargetParams, + ): Promise + getTargetForTab(params: GetTargetForTabParams): Promise + setWindowBounds(params: SetWindowBoundsParams): Promise + setContentsSize(params: SetContentsSizeParams): Promise + setDockTile(params?: SetDockTileParams): Promise + executeBrowserCommand(params: ExecuteBrowserCommandParams): Promise + addPrivacySandboxEnrollmentOverride( + params: AddPrivacySandboxEnrollmentOverrideParams, + ): Promise + addPrivacySandboxCoordinatorKeyConfig( + params: AddPrivacySandboxCoordinatorKeyConfigParams, + ): Promise + + // ── Events ── + + on( + event: 'downloadWillBegin', + handler: (params: DownloadWillBeginEvent) => void, + ): () => void + on( + event: 'downloadProgress', + handler: (params: DownloadProgressEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/cache-storage.ts b/packages/cdp-protocol/src/generated/domain-apis/cache-storage.ts new file mode 100644 index 000000000..aa5d46196 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/cache-storage.ts @@ -0,0 +1,26 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + DeleteCacheParams, + DeleteEntryParams, + RequestCachedResponseParams, + RequestCachedResponseResult, + RequestCacheNamesParams, + RequestCacheNamesResult, + RequestEntriesParams, + RequestEntriesResult, +} from '../domains/cache-storage' + +export interface CacheStorageApi { + // ── Commands ── + + deleteCache(params: DeleteCacheParams): Promise + deleteEntry(params: DeleteEntryParams): Promise + requestCacheNames( + params?: RequestCacheNamesParams, + ): Promise + requestCachedResponse( + params: RequestCachedResponseParams, + ): Promise + requestEntries(params: RequestEntriesParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/cast.ts b/packages/cdp-protocol/src/generated/domain-apis/cast.ts new file mode 100644 index 000000000..6c790ec06 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/cast.ts @@ -0,0 +1,33 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + EnableParams, + IssueUpdatedEvent, + SetSinkToUseParams, + SinksUpdatedEvent, + StartDesktopMirroringParams, + StartTabMirroringParams, + StopCastingParams, +} from '../domains/cast' + +export interface CastApi { + // ── Commands ── + + enable(params?: EnableParams): Promise + disable(): Promise + setSinkToUse(params: SetSinkToUseParams): Promise + startDesktopMirroring(params: StartDesktopMirroringParams): Promise + startTabMirroring(params: StartTabMirroringParams): Promise + stopCasting(params: StopCastingParams): Promise + + // ── Events ── + + on( + event: 'sinksUpdated', + handler: (params: SinksUpdatedEvent) => void, + ): () => void + on( + event: 'issueUpdated', + handler: (params: IssueUpdatedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/console.ts b/packages/cdp-protocol/src/generated/domain-apis/console.ts new file mode 100644 index 000000000..3afa0b4c3 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/console.ts @@ -0,0 +1,18 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { MessageAddedEvent } from '../domains/console' + +export interface ConsoleApi { + // ── Commands ── + + clearMessages(): Promise + disable(): Promise + enable(): Promise + + // ── Events ── + + on( + event: 'messageAdded', + handler: (params: MessageAddedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/css.ts b/packages/cdp-protocol/src/generated/domain-apis/css.ts new file mode 100644 index 000000000..09902a987 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/css.ts @@ -0,0 +1,168 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddRuleParams, + AddRuleResult, + CollectClassNamesParams, + CollectClassNamesResult, + ComputedStyleUpdatedEvent, + CreateStyleSheetParams, + CreateStyleSheetResult, + FontsUpdatedEvent, + ForcePseudoStateParams, + ForceStartingStyleParams, + GetAnimatedStylesForNodeParams, + GetAnimatedStylesForNodeResult, + GetBackgroundColorsParams, + GetBackgroundColorsResult, + GetComputedStyleForNodeParams, + GetComputedStyleForNodeResult, + GetEnvironmentVariablesResult, + GetInlineStylesForNodeParams, + GetInlineStylesForNodeResult, + GetLayersForNodeParams, + GetLayersForNodeResult, + GetLocationForSelectorParams, + GetLocationForSelectorResult, + GetLonghandPropertiesParams, + GetLonghandPropertiesResult, + GetMatchedStylesForNodeParams, + GetMatchedStylesForNodeResult, + GetMediaQueriesResult, + GetPlatformFontsForNodeParams, + GetPlatformFontsForNodeResult, + GetStyleSheetTextParams, + GetStyleSheetTextResult, + ResolveValuesParams, + ResolveValuesResult, + SetContainerQueryTextParams, + SetContainerQueryTextResult, + SetEffectivePropertyValueForNodeParams, + SetKeyframeKeyParams, + SetKeyframeKeyResult, + SetLocalFontsEnabledParams, + SetMediaTextParams, + SetMediaTextResult, + SetPropertyRulePropertyNameParams, + SetPropertyRulePropertyNameResult, + SetRuleSelectorParams, + SetRuleSelectorResult, + SetScopeTextParams, + SetScopeTextResult, + SetStyleSheetTextParams, + SetStyleSheetTextResult, + SetStyleTextsParams, + SetStyleTextsResult, + SetSupportsTextParams, + SetSupportsTextResult, + StopRuleUsageTrackingResult, + StyleSheetAddedEvent, + StyleSheetChangedEvent, + StyleSheetRemovedEvent, + TakeComputedStyleUpdatesResult, + TakeCoverageDeltaResult, + TrackComputedStyleUpdatesForNodeParams, + TrackComputedStyleUpdatesParams, +} from '../domains/css' + +export interface CSSApi { + // ── Commands ── + + addRule(params: AddRuleParams): Promise + collectClassNames( + params: CollectClassNamesParams, + ): Promise + createStyleSheet( + params: CreateStyleSheetParams, + ): Promise + disable(): Promise + enable(): Promise + forcePseudoState(params: ForcePseudoStateParams): Promise + forceStartingStyle(params: ForceStartingStyleParams): Promise + getBackgroundColors( + params: GetBackgroundColorsParams, + ): Promise + getComputedStyleForNode( + params: GetComputedStyleForNodeParams, + ): Promise + resolveValues(params: ResolveValuesParams): Promise + getLonghandProperties( + params: GetLonghandPropertiesParams, + ): Promise + getInlineStylesForNode( + params: GetInlineStylesForNodeParams, + ): Promise + getAnimatedStylesForNode( + params: GetAnimatedStylesForNodeParams, + ): Promise + getMatchedStylesForNode( + params: GetMatchedStylesForNodeParams, + ): Promise + getEnvironmentVariables(): Promise + getMediaQueries(): Promise + getPlatformFontsForNode( + params: GetPlatformFontsForNodeParams, + ): Promise + getStyleSheetText( + params: GetStyleSheetTextParams, + ): Promise + getLayersForNode( + params: GetLayersForNodeParams, + ): Promise + getLocationForSelector( + params: GetLocationForSelectorParams, + ): Promise + trackComputedStyleUpdatesForNode( + params?: TrackComputedStyleUpdatesForNodeParams, + ): Promise + trackComputedStyleUpdates( + params: TrackComputedStyleUpdatesParams, + ): Promise + takeComputedStyleUpdates(): Promise + setEffectivePropertyValueForNode( + params: SetEffectivePropertyValueForNodeParams, + ): Promise + setPropertyRulePropertyName( + params: SetPropertyRulePropertyNameParams, + ): Promise + setKeyframeKey(params: SetKeyframeKeyParams): Promise + setMediaText(params: SetMediaTextParams): Promise + setContainerQueryText( + params: SetContainerQueryTextParams, + ): Promise + setSupportsText(params: SetSupportsTextParams): Promise + setScopeText(params: SetScopeTextParams): Promise + setRuleSelector(params: SetRuleSelectorParams): Promise + setStyleSheetText( + params: SetStyleSheetTextParams, + ): Promise + setStyleTexts(params: SetStyleTextsParams): Promise + startRuleUsageTracking(): Promise + stopRuleUsageTracking(): Promise + takeCoverageDelta(): Promise + setLocalFontsEnabled(params: SetLocalFontsEnabledParams): Promise + + // ── Events ── + + on( + event: 'fontsUpdated', + handler: (params: FontsUpdatedEvent) => void, + ): () => void + on(event: 'mediaQueryResultChanged', handler: () => void): () => void + on( + event: 'styleSheetAdded', + handler: (params: StyleSheetAddedEvent) => void, + ): () => void + on( + event: 'styleSheetChanged', + handler: (params: StyleSheetChangedEvent) => void, + ): () => void + on( + event: 'styleSheetRemoved', + handler: (params: StyleSheetRemovedEvent) => void, + ): () => void + on( + event: 'computedStyleUpdated', + handler: (params: ComputedStyleUpdatedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/debugger.ts b/packages/cdp-protocol/src/generated/domain-apis/debugger.ts new file mode 100644 index 000000000..34f856703 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/debugger.ts @@ -0,0 +1,124 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + BreakpointResolvedEvent, + ContinueToLocationParams, + DisassembleWasmModuleParams, + DisassembleWasmModuleResult, + EnableParams, + EnableResult, + EvaluateOnCallFrameParams, + EvaluateOnCallFrameResult, + GetPossibleBreakpointsParams, + GetPossibleBreakpointsResult, + GetScriptSourceParams, + GetScriptSourceResult, + GetStackTraceParams, + GetStackTraceResult, + GetWasmBytecodeParams, + GetWasmBytecodeResult, + NextWasmDisassemblyChunkParams, + NextWasmDisassemblyChunkResult, + PausedEvent, + PauseOnAsyncCallParams, + RemoveBreakpointParams, + RestartFrameParams, + RestartFrameResult, + ResumeParams, + ScriptFailedToParseEvent, + ScriptParsedEvent, + SearchInContentParams, + SearchInContentResult, + SetAsyncCallStackDepthParams, + SetBlackboxExecutionContextsParams, + SetBlackboxedRangesParams, + SetBlackboxPatternsParams, + SetBreakpointByUrlParams, + SetBreakpointByUrlResult, + SetBreakpointOnFunctionCallParams, + SetBreakpointOnFunctionCallResult, + SetBreakpointParams, + SetBreakpointResult, + SetBreakpointsActiveParams, + SetInstrumentationBreakpointParams, + SetInstrumentationBreakpointResult, + SetPauseOnExceptionsParams, + SetReturnValueParams, + SetScriptSourceParams, + SetScriptSourceResult, + SetSkipAllPausesParams, + SetVariableValueParams, + StepIntoParams, + StepOverParams, +} from '../domains/debugger' + +export interface DebuggerApi { + // ── Commands ── + + continueToLocation(params: ContinueToLocationParams): Promise + disable(): Promise + enable(params?: EnableParams): Promise + evaluateOnCallFrame( + params: EvaluateOnCallFrameParams, + ): Promise + getPossibleBreakpoints( + params: GetPossibleBreakpointsParams, + ): Promise + getScriptSource(params: GetScriptSourceParams): Promise + disassembleWasmModule( + params: DisassembleWasmModuleParams, + ): Promise + nextWasmDisassemblyChunk( + params: NextWasmDisassemblyChunkParams, + ): Promise + getWasmBytecode(params: GetWasmBytecodeParams): Promise + getStackTrace(params: GetStackTraceParams): Promise + pause(): Promise + pauseOnAsyncCall(params: PauseOnAsyncCallParams): Promise + removeBreakpoint(params: RemoveBreakpointParams): Promise + restartFrame(params: RestartFrameParams): Promise + resume(params?: ResumeParams): Promise + searchInContent(params: SearchInContentParams): Promise + setAsyncCallStackDepth(params: SetAsyncCallStackDepthParams): Promise + setBlackboxExecutionContexts( + params: SetBlackboxExecutionContextsParams, + ): Promise + setBlackboxPatterns(params: SetBlackboxPatternsParams): Promise + setBlackboxedRanges(params: SetBlackboxedRangesParams): Promise + setBreakpoint(params: SetBreakpointParams): Promise + setInstrumentationBreakpoint( + params: SetInstrumentationBreakpointParams, + ): Promise + setBreakpointByUrl( + params: SetBreakpointByUrlParams, + ): Promise + setBreakpointOnFunctionCall( + params: SetBreakpointOnFunctionCallParams, + ): Promise + setBreakpointsActive(params: SetBreakpointsActiveParams): Promise + setPauseOnExceptions(params: SetPauseOnExceptionsParams): Promise + setReturnValue(params: SetReturnValueParams): Promise + setScriptSource(params: SetScriptSourceParams): Promise + setSkipAllPauses(params: SetSkipAllPausesParams): Promise + setVariableValue(params: SetVariableValueParams): Promise + stepInto(params?: StepIntoParams): Promise + stepOut(): Promise + stepOver(params?: StepOverParams): Promise + + // ── Events ── + + on( + event: 'breakpointResolved', + handler: (params: BreakpointResolvedEvent) => void, + ): () => void + on(event: 'paused', handler: (params: PausedEvent) => void): () => void + on(event: 'resumed', handler: () => void): () => void + on( + event: 'scriptFailedToParse', + handler: (params: ScriptFailedToParseEvent) => void, + ): () => void + on( + event: 'scriptParsed', + handler: (params: ScriptParsedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/device-access.ts b/packages/cdp-protocol/src/generated/domain-apis/device-access.ts new file mode 100644 index 000000000..1c0225da9 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/device-access.ts @@ -0,0 +1,23 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CancelPromptParams, + DeviceRequestPromptedEvent, + SelectPromptParams, +} from '../domains/device-access' + +export interface DeviceAccessApi { + // ── Commands ── + + enable(): Promise + disable(): Promise + selectPrompt(params: SelectPromptParams): Promise + cancelPrompt(params: CancelPromptParams): Promise + + // ── Events ── + + on( + event: 'deviceRequestPrompted', + handler: (params: DeviceRequestPromptedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/device-orientation.ts b/packages/cdp-protocol/src/generated/domain-apis/device-orientation.ts new file mode 100644 index 000000000..33779b7fd --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/device-orientation.ts @@ -0,0 +1,12 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { SetDeviceOrientationOverrideParams } from '../domains/device-orientation' + +export interface DeviceOrientationApi { + // ── Commands ── + + clearDeviceOrientationOverride(): Promise + setDeviceOrientationOverride( + params: SetDeviceOrientationOverrideParams, + ): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/dom-debugger.ts b/packages/cdp-protocol/src/generated/domain-apis/dom-debugger.ts new file mode 100644 index 000000000..ebac8ac91 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/dom-debugger.ts @@ -0,0 +1,40 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + GetEventListenersParams, + GetEventListenersResult, + RemoveDOMBreakpointParams, + RemoveEventListenerBreakpointParams, + RemoveInstrumentationBreakpointParams, + RemoveXHRBreakpointParams, + SetBreakOnCSPViolationParams, + SetDOMBreakpointParams, + SetEventListenerBreakpointParams, + SetInstrumentationBreakpointParams, + SetXHRBreakpointParams, +} from '../domains/dom-debugger' + +export interface DOMDebuggerApi { + // ── Commands ── + + getEventListeners( + params: GetEventListenersParams, + ): Promise + removeDOMBreakpoint(params: RemoveDOMBreakpointParams): Promise + removeEventListenerBreakpoint( + params: RemoveEventListenerBreakpointParams, + ): Promise + removeInstrumentationBreakpoint( + params: RemoveInstrumentationBreakpointParams, + ): Promise + removeXHRBreakpoint(params: RemoveXHRBreakpointParams): Promise + setBreakOnCSPViolation(params: SetBreakOnCSPViolationParams): Promise + setDOMBreakpoint(params: SetDOMBreakpointParams): Promise + setEventListenerBreakpoint( + params: SetEventListenerBreakpointParams, + ): Promise + setInstrumentationBreakpoint( + params: SetInstrumentationBreakpointParams, + ): Promise + setXHRBreakpoint(params: SetXHRBreakpointParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/dom-snapshot.ts b/packages/cdp-protocol/src/generated/domain-apis/dom-snapshot.ts new file mode 100644 index 000000000..28e00f303 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/dom-snapshot.ts @@ -0,0 +1,17 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CaptureSnapshotParams, + CaptureSnapshotResult, + GetSnapshotParams, + GetSnapshotResult, +} from '../domains/dom-snapshot' + +export interface DOMSnapshotApi { + // ── Commands ── + + disable(): Promise + enable(): Promise + getSnapshot(params: GetSnapshotParams): Promise + captureSnapshot(params: CaptureSnapshotParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/dom-storage.ts b/packages/cdp-protocol/src/generated/domain-apis/dom-storage.ts new file mode 100644 index 000000000..7c2d4f267 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/dom-storage.ts @@ -0,0 +1,45 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ClearParams, + DomStorageItemAddedEvent, + DomStorageItemRemovedEvent, + DomStorageItemsClearedEvent, + DomStorageItemUpdatedEvent, + GetDOMStorageItemsParams, + GetDOMStorageItemsResult, + RemoveDOMStorageItemParams, + SetDOMStorageItemParams, +} from '../domains/dom-storage' + +export interface DOMStorageApi { + // ── Commands ── + + clear(params: ClearParams): Promise + disable(): Promise + enable(): Promise + getDOMStorageItems( + params: GetDOMStorageItemsParams, + ): Promise + removeDOMStorageItem(params: RemoveDOMStorageItemParams): Promise + setDOMStorageItem(params: SetDOMStorageItemParams): Promise + + // ── Events ── + + on( + event: 'domStorageItemAdded', + handler: (params: DomStorageItemAddedEvent) => void, + ): () => void + on( + event: 'domStorageItemRemoved', + handler: (params: DomStorageItemRemovedEvent) => void, + ): () => void + on( + event: 'domStorageItemUpdated', + handler: (params: DomStorageItemUpdatedEvent) => void, + ): () => void + on( + event: 'domStorageItemsCleared', + handler: (params: DomStorageItemsClearedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/dom.ts b/packages/cdp-protocol/src/generated/domain-apis/dom.ts new file mode 100644 index 000000000..24e4f2297 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/dom.ts @@ -0,0 +1,257 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AdoptedStyleSheetsModifiedEvent, + AffectedByStartingStylesFlagUpdatedEvent, + AttributeModifiedEvent, + AttributeRemovedEvent, + CharacterDataModifiedEvent, + ChildNodeCountUpdatedEvent, + ChildNodeInsertedEvent, + ChildNodeRemovedEvent, + CollectClassNamesFromSubtreeParams, + CollectClassNamesFromSubtreeResult, + CopyToParams, + CopyToResult, + DescribeNodeParams, + DescribeNodeResult, + DiscardSearchResultsParams, + DistributedNodesUpdatedEvent, + EnableParams, + FocusParams, + ForceShowPopoverParams, + ForceShowPopoverResult, + GetAnchorElementParams, + GetAnchorElementResult, + GetAttributesParams, + GetAttributesResult, + GetBoxModelParams, + GetBoxModelResult, + GetContainerForNodeParams, + GetContainerForNodeResult, + GetContentQuadsParams, + GetContentQuadsResult, + GetDetachedDomNodesResult, + GetDocumentParams, + GetDocumentResult, + GetElementByRelationParams, + GetElementByRelationResult, + GetFileInfoParams, + GetFileInfoResult, + GetFlattenedDocumentParams, + GetFlattenedDocumentResult, + GetFrameOwnerParams, + GetFrameOwnerResult, + GetNodeForLocationParams, + GetNodeForLocationResult, + GetNodeStackTracesParams, + GetNodeStackTracesResult, + GetNodesForSubtreeByStyleParams, + GetNodesForSubtreeByStyleResult, + GetOuterHTMLParams, + GetOuterHTMLResult, + GetQueryingDescendantsForContainerParams, + GetQueryingDescendantsForContainerResult, + GetRelayoutBoundaryParams, + GetRelayoutBoundaryResult, + GetSearchResultsParams, + GetSearchResultsResult, + GetTopLayerElementsResult, + InlineStyleInvalidatedEvent, + MoveToParams, + MoveToResult, + PerformSearchParams, + PerformSearchResult, + PseudoElementAddedEvent, + PseudoElementRemovedEvent, + PushNodeByPathToFrontendParams, + PushNodeByPathToFrontendResult, + PushNodesByBackendIdsToFrontendParams, + PushNodesByBackendIdsToFrontendResult, + QuerySelectorAllParams, + QuerySelectorAllResult, + QuerySelectorParams, + QuerySelectorResult, + RemoveAttributeParams, + RemoveNodeParams, + RequestChildNodesParams, + RequestNodeParams, + RequestNodeResult, + ResolveNodeParams, + ResolveNodeResult, + ScrollableFlagUpdatedEvent, + ScrollIntoViewIfNeededParams, + SetAttributesAsTextParams, + SetAttributeValueParams, + SetChildNodesEvent, + SetFileInputFilesParams, + SetInspectedNodeParams, + SetNodeNameParams, + SetNodeNameResult, + SetNodeStackTracesEnabledParams, + SetNodeValueParams, + SetOuterHTMLParams, + ShadowRootPoppedEvent, + ShadowRootPushedEvent, +} from '../domains/dom' + +export interface DOMApi { + // ── Commands ── + + collectClassNamesFromSubtree( + params: CollectClassNamesFromSubtreeParams, + ): Promise + copyTo(params: CopyToParams): Promise + describeNode(params?: DescribeNodeParams): Promise + scrollIntoViewIfNeeded(params?: ScrollIntoViewIfNeededParams): Promise + disable(): Promise + discardSearchResults(params: DiscardSearchResultsParams): Promise + enable(params?: EnableParams): Promise + focus(params?: FocusParams): Promise + getAttributes(params: GetAttributesParams): Promise + getBoxModel(params?: GetBoxModelParams): Promise + getContentQuads( + params?: GetContentQuadsParams, + ): Promise + getDocument(params?: GetDocumentParams): Promise + getFlattenedDocument( + params?: GetFlattenedDocumentParams, + ): Promise + getNodesForSubtreeByStyle( + params: GetNodesForSubtreeByStyleParams, + ): Promise + getNodeForLocation( + params: GetNodeForLocationParams, + ): Promise + getOuterHTML(params?: GetOuterHTMLParams): Promise + getRelayoutBoundary( + params: GetRelayoutBoundaryParams, + ): Promise + getSearchResults( + params: GetSearchResultsParams, + ): Promise + hideHighlight(): Promise + highlightNode(): Promise + highlightRect(): Promise + markUndoableState(): Promise + moveTo(params: MoveToParams): Promise + performSearch(params: PerformSearchParams): Promise + pushNodeByPathToFrontend( + params: PushNodeByPathToFrontendParams, + ): Promise + pushNodesByBackendIdsToFrontend( + params: PushNodesByBackendIdsToFrontendParams, + ): Promise + querySelector(params: QuerySelectorParams): Promise + querySelectorAll( + params: QuerySelectorAllParams, + ): Promise + getTopLayerElements(): Promise + getElementByRelation( + params: GetElementByRelationParams, + ): Promise + redo(): Promise + removeAttribute(params: RemoveAttributeParams): Promise + removeNode(params: RemoveNodeParams): Promise + requestChildNodes(params: RequestChildNodesParams): Promise + requestNode(params: RequestNodeParams): Promise + resolveNode(params?: ResolveNodeParams): Promise + setAttributeValue(params: SetAttributeValueParams): Promise + setAttributesAsText(params: SetAttributesAsTextParams): Promise + setFileInputFiles(params: SetFileInputFilesParams): Promise + setNodeStackTracesEnabled( + params: SetNodeStackTracesEnabledParams, + ): Promise + getNodeStackTraces( + params: GetNodeStackTracesParams, + ): Promise + getFileInfo(params: GetFileInfoParams): Promise + getDetachedDomNodes(): Promise + setInspectedNode(params: SetInspectedNodeParams): Promise + setNodeName(params: SetNodeNameParams): Promise + setNodeValue(params: SetNodeValueParams): Promise + setOuterHTML(params: SetOuterHTMLParams): Promise + undo(): Promise + getFrameOwner(params: GetFrameOwnerParams): Promise + getContainerForNode( + params: GetContainerForNodeParams, + ): Promise + getQueryingDescendantsForContainer( + params: GetQueryingDescendantsForContainerParams, + ): Promise + getAnchorElement( + params: GetAnchorElementParams, + ): Promise + forceShowPopover( + params: ForceShowPopoverParams, + ): Promise + + // ── Events ── + + on( + event: 'attributeModified', + handler: (params: AttributeModifiedEvent) => void, + ): () => void + on( + event: 'adoptedStyleSheetsModified', + handler: (params: AdoptedStyleSheetsModifiedEvent) => void, + ): () => void + on( + event: 'attributeRemoved', + handler: (params: AttributeRemovedEvent) => void, + ): () => void + on( + event: 'characterDataModified', + handler: (params: CharacterDataModifiedEvent) => void, + ): () => void + on( + event: 'childNodeCountUpdated', + handler: (params: ChildNodeCountUpdatedEvent) => void, + ): () => void + on( + event: 'childNodeInserted', + handler: (params: ChildNodeInsertedEvent) => void, + ): () => void + on( + event: 'childNodeRemoved', + handler: (params: ChildNodeRemovedEvent) => void, + ): () => void + on( + event: 'distributedNodesUpdated', + handler: (params: DistributedNodesUpdatedEvent) => void, + ): () => void + on(event: 'documentUpdated', handler: () => void): () => void + on( + event: 'inlineStyleInvalidated', + handler: (params: InlineStyleInvalidatedEvent) => void, + ): () => void + on( + event: 'pseudoElementAdded', + handler: (params: PseudoElementAddedEvent) => void, + ): () => void + on(event: 'topLayerElementsUpdated', handler: () => void): () => void + on( + event: 'scrollableFlagUpdated', + handler: (params: ScrollableFlagUpdatedEvent) => void, + ): () => void + on( + event: 'affectedByStartingStylesFlagUpdated', + handler: (params: AffectedByStartingStylesFlagUpdatedEvent) => void, + ): () => void + on( + event: 'pseudoElementRemoved', + handler: (params: PseudoElementRemovedEvent) => void, + ): () => void + on( + event: 'setChildNodes', + handler: (params: SetChildNodesEvent) => void, + ): () => void + on( + event: 'shadowRootPopped', + handler: (params: ShadowRootPoppedEvent) => void, + ): () => void + on( + event: 'shadowRootPushed', + handler: (params: ShadowRootPushedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/emulation.ts b/packages/cdp-protocol/src/generated/domain-apis/emulation.ts new file mode 100644 index 000000000..37120aa85 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/emulation.ts @@ -0,0 +1,140 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddScreenParams, + AddScreenResult, + CanEmulateResult, + GetOverriddenSensorInformationParams, + GetOverriddenSensorInformationResult, + GetScreenInfosResult, + RemoveScreenParams, + SetAutoDarkModeOverrideParams, + SetAutomationOverrideParams, + SetCPUThrottlingRateParams, + SetDataSaverOverrideParams, + SetDefaultBackgroundColorOverrideParams, + SetDeviceMetricsOverrideParams, + SetDevicePostureOverrideParams, + SetDisabledImageTypesParams, + SetDisplayFeaturesOverrideParams, + SetDocumentCookieDisabledParams, + SetEmitTouchEventsForMouseParams, + SetEmulatedMediaParams, + SetEmulatedOSTextScaleParams, + SetEmulatedVisionDeficiencyParams, + SetFocusEmulationEnabledParams, + SetGeolocationOverrideParams, + SetHardwareConcurrencyOverrideParams, + SetIdleOverrideParams, + SetLocaleOverrideParams, + SetNavigatorOverridesParams, + SetPageScaleFactorParams, + SetPressureDataOverrideParams, + SetPressureSourceOverrideEnabledParams, + SetPressureStateOverrideParams, + SetSafeAreaInsetsOverrideParams, + SetScriptExecutionDisabledParams, + SetScrollbarsHiddenParams, + SetSensorOverrideEnabledParams, + SetSensorOverrideReadingsParams, + SetSmallViewportHeightDifferenceOverrideParams, + SetTimezoneOverrideParams, + SetTouchEmulationEnabledParams, + SetUserAgentOverrideParams, + SetVirtualTimePolicyParams, + SetVirtualTimePolicyResult, + SetVisibleSizeParams, +} from '../domains/emulation' + +export interface EmulationApi { + // ── Commands ── + + canEmulate(): Promise + clearDeviceMetricsOverride(): Promise + clearGeolocationOverride(): Promise + resetPageScaleFactor(): Promise + setFocusEmulationEnabled( + params: SetFocusEmulationEnabledParams, + ): Promise + setAutoDarkModeOverride(params?: SetAutoDarkModeOverrideParams): Promise + setCPUThrottlingRate(params: SetCPUThrottlingRateParams): Promise + setDefaultBackgroundColorOverride( + params?: SetDefaultBackgroundColorOverrideParams, + ): Promise + setSafeAreaInsetsOverride( + params: SetSafeAreaInsetsOverrideParams, + ): Promise + setDeviceMetricsOverride( + params: SetDeviceMetricsOverrideParams, + ): Promise + setDevicePostureOverride( + params: SetDevicePostureOverrideParams, + ): Promise + clearDevicePostureOverride(): Promise + setDisplayFeaturesOverride( + params: SetDisplayFeaturesOverrideParams, + ): Promise + clearDisplayFeaturesOverride(): Promise + setScrollbarsHidden(params: SetScrollbarsHiddenParams): Promise + setDocumentCookieDisabled( + params: SetDocumentCookieDisabledParams, + ): Promise + setEmitTouchEventsForMouse( + params: SetEmitTouchEventsForMouseParams, + ): Promise + setEmulatedMedia(params?: SetEmulatedMediaParams): Promise + setEmulatedVisionDeficiency( + params: SetEmulatedVisionDeficiencyParams, + ): Promise + setEmulatedOSTextScale(params?: SetEmulatedOSTextScaleParams): Promise + setGeolocationOverride(params?: SetGeolocationOverrideParams): Promise + getOverriddenSensorInformation( + params: GetOverriddenSensorInformationParams, + ): Promise + setSensorOverrideEnabled( + params: SetSensorOverrideEnabledParams, + ): Promise + setSensorOverrideReadings( + params: SetSensorOverrideReadingsParams, + ): Promise + setPressureSourceOverrideEnabled( + params: SetPressureSourceOverrideEnabledParams, + ): Promise + setPressureStateOverride( + params: SetPressureStateOverrideParams, + ): Promise + setPressureDataOverride(params: SetPressureDataOverrideParams): Promise + setIdleOverride(params: SetIdleOverrideParams): Promise + clearIdleOverride(): Promise + setNavigatorOverrides(params: SetNavigatorOverridesParams): Promise + setPageScaleFactor(params: SetPageScaleFactorParams): Promise + setScriptExecutionDisabled( + params: SetScriptExecutionDisabledParams, + ): Promise + setTouchEmulationEnabled( + params: SetTouchEmulationEnabledParams, + ): Promise + setVirtualTimePolicy( + params: SetVirtualTimePolicyParams, + ): Promise + setLocaleOverride(params?: SetLocaleOverrideParams): Promise + setTimezoneOverride(params: SetTimezoneOverrideParams): Promise + setVisibleSize(params: SetVisibleSizeParams): Promise + setDisabledImageTypes(params: SetDisabledImageTypesParams): Promise + setDataSaverOverride(params?: SetDataSaverOverrideParams): Promise + setHardwareConcurrencyOverride( + params: SetHardwareConcurrencyOverrideParams, + ): Promise + setUserAgentOverride(params: SetUserAgentOverrideParams): Promise + setAutomationOverride(params: SetAutomationOverrideParams): Promise + setSmallViewportHeightDifferenceOverride( + params: SetSmallViewportHeightDifferenceOverrideParams, + ): Promise + getScreenInfos(): Promise + addScreen(params: AddScreenParams): Promise + removeScreen(params: RemoveScreenParams): Promise + + // ── Events ── + + on(event: 'virtualTimeBudgetExpired', handler: () => void): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/event-breakpoints.ts b/packages/cdp-protocol/src/generated/domain-apis/event-breakpoints.ts new file mode 100644 index 000000000..6f8351635 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/event-breakpoints.ts @@ -0,0 +1,18 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + RemoveInstrumentationBreakpointParams, + SetInstrumentationBreakpointParams, +} from '../domains/event-breakpoints' + +export interface EventBreakpointsApi { + // ── Commands ── + + setInstrumentationBreakpoint( + params: SetInstrumentationBreakpointParams, + ): Promise + removeInstrumentationBreakpoint( + params: RemoveInstrumentationBreakpointParams, + ): Promise + disable(): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/extensions.ts b/packages/cdp-protocol/src/generated/domain-apis/extensions.ts new file mode 100644 index 000000000..72f4ec56a --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/extensions.ts @@ -0,0 +1,23 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ClearStorageItemsParams, + GetStorageItemsParams, + GetStorageItemsResult, + LoadUnpackedParams, + LoadUnpackedResult, + RemoveStorageItemsParams, + SetStorageItemsParams, + UninstallParams, +} from '../domains/extensions' + +export interface ExtensionsApi { + // ── Commands ── + + loadUnpacked(params: LoadUnpackedParams): Promise + uninstall(params: UninstallParams): Promise + getStorageItems(params: GetStorageItemsParams): Promise + removeStorageItems(params: RemoveStorageItemsParams): Promise + clearStorageItems(params: ClearStorageItemsParams): Promise + setStorageItems(params: SetStorageItemsParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/fed-cm.ts b/packages/cdp-protocol/src/generated/domain-apis/fed-cm.ts new file mode 100644 index 000000000..683e36ff3 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/fed-cm.ts @@ -0,0 +1,34 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ClickDialogButtonParams, + DialogClosedEvent, + DialogShownEvent, + DismissDialogParams, + EnableParams, + OpenUrlParams, + SelectAccountParams, +} from '../domains/fed-cm' + +export interface FedCmApi { + // ── Commands ── + + enable(params?: EnableParams): Promise + disable(): Promise + selectAccount(params: SelectAccountParams): Promise + clickDialogButton(params: ClickDialogButtonParams): Promise + openUrl(params: OpenUrlParams): Promise + dismissDialog(params: DismissDialogParams): Promise + resetCooldown(): Promise + + // ── Events ── + + on( + event: 'dialogShown', + handler: (params: DialogShownEvent) => void, + ): () => void + on( + event: 'dialogClosed', + handler: (params: DialogClosedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/fetch.ts b/packages/cdp-protocol/src/generated/domain-apis/fetch.ts new file mode 100644 index 000000000..a10bd48f4 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/fetch.ts @@ -0,0 +1,43 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AuthRequiredEvent, + ContinueRequestParams, + ContinueResponseParams, + ContinueWithAuthParams, + EnableParams, + FailRequestParams, + FulfillRequestParams, + GetResponseBodyParams, + GetResponseBodyResult, + RequestPausedEvent, + TakeResponseBodyAsStreamParams, + TakeResponseBodyAsStreamResult, +} from '../domains/fetch' + +export interface FetchApi { + // ── Commands ── + + disable(): Promise + enable(params?: EnableParams): Promise + failRequest(params: FailRequestParams): Promise + fulfillRequest(params: FulfillRequestParams): Promise + continueRequest(params: ContinueRequestParams): Promise + continueWithAuth(params: ContinueWithAuthParams): Promise + continueResponse(params: ContinueResponseParams): Promise + getResponseBody(params: GetResponseBodyParams): Promise + takeResponseBodyAsStream( + params: TakeResponseBodyAsStreamParams, + ): Promise + + // ── Events ── + + on( + event: 'requestPaused', + handler: (params: RequestPausedEvent) => void, + ): () => void + on( + event: 'authRequired', + handler: (params: AuthRequiredEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/file-system.ts b/packages/cdp-protocol/src/generated/domain-apis/file-system.ts new file mode 100644 index 000000000..c1e1187f7 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/file-system.ts @@ -0,0 +1,12 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + GetDirectoryParams, + GetDirectoryResult, +} from '../domains/file-system' + +export interface FileSystemApi { + // ── Commands ── + + getDirectory(params: GetDirectoryParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/headless-experimental.ts b/packages/cdp-protocol/src/generated/domain-apis/headless-experimental.ts new file mode 100644 index 000000000..f2e3b877b --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/headless-experimental.ts @@ -0,0 +1,14 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + BeginFrameParams, + BeginFrameResult, +} from '../domains/headless-experimental' + +export interface HeadlessExperimentalApi { + // ── Commands ── + + beginFrame(params?: BeginFrameParams): Promise + disable(): Promise + enable(): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/heap-profiler.ts b/packages/cdp-protocol/src/generated/domain-apis/heap-profiler.ts new file mode 100644 index 000000000..f4236843a --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/heap-profiler.ts @@ -0,0 +1,60 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddHeapSnapshotChunkEvent, + AddInspectedHeapObjectParams, + GetHeapObjectIdParams, + GetHeapObjectIdResult, + GetObjectByHeapObjectIdParams, + GetObjectByHeapObjectIdResult, + GetSamplingProfileResult, + HeapStatsUpdateEvent, + LastSeenObjectIdEvent, + ReportHeapSnapshotProgressEvent, + StartSamplingParams, + StartTrackingHeapObjectsParams, + StopSamplingResult, + StopTrackingHeapObjectsParams, + TakeHeapSnapshotParams, +} from '../domains/heap-profiler' + +export interface HeapProfilerApi { + // ── Commands ── + + addInspectedHeapObject(params: AddInspectedHeapObjectParams): Promise + collectGarbage(): Promise + disable(): Promise + enable(): Promise + getHeapObjectId(params: GetHeapObjectIdParams): Promise + getObjectByHeapObjectId( + params: GetObjectByHeapObjectIdParams, + ): Promise + getSamplingProfile(): Promise + startSampling(params?: StartSamplingParams): Promise + startTrackingHeapObjects( + params?: StartTrackingHeapObjectsParams, + ): Promise + stopSampling(): Promise + stopTrackingHeapObjects(params?: StopTrackingHeapObjectsParams): Promise + takeHeapSnapshot(params?: TakeHeapSnapshotParams): Promise + + // ── Events ── + + on( + event: 'addHeapSnapshotChunk', + handler: (params: AddHeapSnapshotChunkEvent) => void, + ): () => void + on( + event: 'heapStatsUpdate', + handler: (params: HeapStatsUpdateEvent) => void, + ): () => void + on( + event: 'lastSeenObjectId', + handler: (params: LastSeenObjectIdEvent) => void, + ): () => void + on( + event: 'reportHeapSnapshotProgress', + handler: (params: ReportHeapSnapshotProgressEvent) => void, + ): () => void + on(event: 'resetProfiles', handler: () => void): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/history.ts b/packages/cdp-protocol/src/generated/domain-apis/history.ts new file mode 100644 index 000000000..a90b4318c --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/history.ts @@ -0,0 +1,19 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + DeleteRangeParams, + DeleteUrlParams, + GetRecentParams, + GetRecentResult, + SearchParams, + SearchResult, +} from '../domains/history' + +export interface HistoryApi { + // ── Commands ── + + search(params: SearchParams): Promise + getRecent(params?: GetRecentParams): Promise + deleteUrl(params: DeleteUrlParams): Promise + deleteRange(params: DeleteRangeParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/indexed-db.ts b/packages/cdp-protocol/src/generated/domain-apis/indexed-db.ts new file mode 100644 index 000000000..371e601a4 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/indexed-db.ts @@ -0,0 +1,33 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ClearObjectStoreParams, + DeleteDatabaseParams, + DeleteObjectStoreEntriesParams, + GetMetadataParams, + GetMetadataResult, + RequestDatabaseNamesParams, + RequestDatabaseNamesResult, + RequestDatabaseParams, + RequestDatabaseResult, + RequestDataParams, + RequestDataResult, +} from '../domains/indexed-db' + +export interface IndexedDBApi { + // ── Commands ── + + clearObjectStore(params: ClearObjectStoreParams): Promise + deleteDatabase(params: DeleteDatabaseParams): Promise + deleteObjectStoreEntries( + params: DeleteObjectStoreEntriesParams, + ): Promise + disable(): Promise + enable(): Promise + requestData(params: RequestDataParams): Promise + getMetadata(params: GetMetadataParams): Promise + requestDatabase(params: RequestDatabaseParams): Promise + requestDatabaseNames( + params?: RequestDatabaseNamesParams, + ): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/input.ts b/packages/cdp-protocol/src/generated/domain-apis/input.ts new file mode 100644 index 000000000..3f0886088 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/input.ts @@ -0,0 +1,44 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + DispatchDragEventParams, + DispatchKeyEventParams, + DispatchMouseEventParams, + DispatchTouchEventParams, + DragInterceptedEvent, + EmulateTouchFromMouseEventParams, + ImeSetCompositionParams, + InsertTextParams, + SetIgnoreInputEventsParams, + SetInterceptDragsParams, + SynthesizePinchGestureParams, + SynthesizeScrollGestureParams, + SynthesizeTapGestureParams, +} from '../domains/input' + +export interface InputApi { + // ── Commands ── + + dispatchDragEvent(params: DispatchDragEventParams): Promise + dispatchKeyEvent(params: DispatchKeyEventParams): Promise + insertText(params: InsertTextParams): Promise + imeSetComposition(params: ImeSetCompositionParams): Promise + dispatchMouseEvent(params: DispatchMouseEventParams): Promise + dispatchTouchEvent(params: DispatchTouchEventParams): Promise + cancelDragging(): Promise + emulateTouchFromMouseEvent( + params: EmulateTouchFromMouseEventParams, + ): Promise + setIgnoreInputEvents(params: SetIgnoreInputEventsParams): Promise + setInterceptDrags(params: SetInterceptDragsParams): Promise + synthesizePinchGesture(params: SynthesizePinchGestureParams): Promise + synthesizeScrollGesture(params: SynthesizeScrollGestureParams): Promise + synthesizeTapGesture(params: SynthesizeTapGestureParams): Promise + + // ── Events ── + + on( + event: 'dragIntercepted', + handler: (params: DragInterceptedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/inspector.ts b/packages/cdp-protocol/src/generated/domain-apis/inspector.ts new file mode 100644 index 000000000..7a9c87db5 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/inspector.ts @@ -0,0 +1,17 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { DetachedEvent } from '../domains/inspector' + +export interface InspectorApi { + // ── Commands ── + + disable(): Promise + enable(): Promise + + // ── Events ── + + on(event: 'detached', handler: (params: DetachedEvent) => void): () => void + on(event: 'targetCrashed', handler: () => void): () => void + on(event: 'targetReloadedAfterCrash', handler: () => void): () => void + on(event: 'workerScriptLoaded', handler: () => void): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/io.ts b/packages/cdp-protocol/src/generated/domain-apis/io.ts new file mode 100644 index 000000000..f6064a7c9 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/io.ts @@ -0,0 +1,17 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CloseParams, + ReadParams, + ReadResult, + ResolveBlobParams, + ResolveBlobResult, +} from '../domains/io' + +export interface IOApi { + // ── Commands ── + + close(params: CloseParams): Promise + read(params: ReadParams): Promise + resolveBlob(params: ResolveBlobParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/layer-tree.ts b/packages/cdp-protocol/src/generated/domain-apis/layer-tree.ts new file mode 100644 index 000000000..c072292df --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/layer-tree.ts @@ -0,0 +1,48 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CompositingReasonsParams, + CompositingReasonsResult, + LayerPaintedEvent, + LayerTreeDidChangeEvent, + LoadSnapshotParams, + LoadSnapshotResult, + MakeSnapshotParams, + MakeSnapshotResult, + ProfileSnapshotParams, + ProfileSnapshotResult, + ReleaseSnapshotParams, + ReplaySnapshotParams, + ReplaySnapshotResult, + SnapshotCommandLogParams, + SnapshotCommandLogResult, +} from '../domains/layer-tree' + +export interface LayerTreeApi { + // ── Commands ── + + compositingReasons( + params: CompositingReasonsParams, + ): Promise + disable(): Promise + enable(): Promise + loadSnapshot(params: LoadSnapshotParams): Promise + makeSnapshot(params: MakeSnapshotParams): Promise + profileSnapshot(params: ProfileSnapshotParams): Promise + releaseSnapshot(params: ReleaseSnapshotParams): Promise + replaySnapshot(params: ReplaySnapshotParams): Promise + snapshotCommandLog( + params: SnapshotCommandLogParams, + ): Promise + + // ── Events ── + + on( + event: 'layerPainted', + handler: (params: LayerPaintedEvent) => void, + ): () => void + on( + event: 'layerTreeDidChange', + handler: (params: LayerTreeDidChangeEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/log.ts b/packages/cdp-protocol/src/generated/domain-apis/log.ts new file mode 100644 index 000000000..14fe845c5 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/log.ts @@ -0,0 +1,23 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + EntryAddedEvent, + StartViolationsReportParams, +} from '../domains/log' + +export interface LogApi { + // ── Commands ── + + clear(): Promise + disable(): Promise + enable(): Promise + startViolationsReport(params: StartViolationsReportParams): Promise + stopViolationsReport(): Promise + + // ── Events ── + + on( + event: 'entryAdded', + handler: (params: EntryAddedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/media.ts b/packages/cdp-protocol/src/generated/domain-apis/media.ts new file mode 100644 index 000000000..bc8abd07d --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/media.ts @@ -0,0 +1,39 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + PlayerCreatedEvent, + PlayerErrorsRaisedEvent, + PlayerEventsAddedEvent, + PlayerMessagesLoggedEvent, + PlayerPropertiesChangedEvent, +} from '../domains/media' + +export interface MediaApi { + // ── Commands ── + + enable(): Promise + disable(): Promise + + // ── Events ── + + on( + event: 'playerPropertiesChanged', + handler: (params: PlayerPropertiesChangedEvent) => void, + ): () => void + on( + event: 'playerEventsAdded', + handler: (params: PlayerEventsAddedEvent) => void, + ): () => void + on( + event: 'playerMessagesLogged', + handler: (params: PlayerMessagesLoggedEvent) => void, + ): () => void + on( + event: 'playerErrorsRaised', + handler: (params: PlayerErrorsRaisedEvent) => void, + ): () => void + on( + event: 'playerCreated', + handler: (params: PlayerCreatedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/memory.ts b/packages/cdp-protocol/src/generated/domain-apis/memory.ts new file mode 100644 index 000000000..88ed67ce7 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/memory.ts @@ -0,0 +1,32 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + GetAllTimeSamplingProfileResult, + GetBrowserSamplingProfileResult, + GetDOMCountersForLeakDetectionResult, + GetDOMCountersResult, + GetSamplingProfileResult, + SetPressureNotificationsSuppressedParams, + SimulatePressureNotificationParams, + StartSamplingParams, +} from '../domains/memory' + +export interface MemoryApi { + // ── Commands ── + + getDOMCounters(): Promise + getDOMCountersForLeakDetection(): Promise + prepareForLeakDetection(): Promise + forciblyPurgeJavaScriptMemory(): Promise + setPressureNotificationsSuppressed( + params: SetPressureNotificationsSuppressedParams, + ): Promise + simulatePressureNotification( + params: SimulatePressureNotificationParams, + ): Promise + startSampling(params?: StartSamplingParams): Promise + stopSampling(): Promise + getAllTimeSamplingProfile(): Promise + getBrowserSamplingProfile(): Promise + getSamplingProfile(): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/network.ts b/packages/cdp-protocol/src/generated/domain-apis/network.ts new file mode 100644 index 000000000..d5ead66b3 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/network.ts @@ -0,0 +1,343 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CanClearBrowserCacheResult, + CanClearBrowserCookiesResult, + CanEmulateNetworkConditionsResult, + ConfigureDurableMessagesParams, + ContinueInterceptedRequestParams, + DataReceivedEvent, + DeleteCookiesParams, + DeviceBoundSessionEventOccurredEvent, + DeviceBoundSessionsAddedEvent, + DirectTCPSocketAbortedEvent, + DirectTCPSocketChunkReceivedEvent, + DirectTCPSocketChunkSentEvent, + DirectTCPSocketClosedEvent, + DirectTCPSocketCreatedEvent, + DirectTCPSocketOpenedEvent, + DirectUDPSocketAbortedEvent, + DirectUDPSocketChunkReceivedEvent, + DirectUDPSocketChunkSentEvent, + DirectUDPSocketClosedEvent, + DirectUDPSocketCreatedEvent, + DirectUDPSocketJoinedMulticastGroupEvent, + DirectUDPSocketLeftMulticastGroupEvent, + DirectUDPSocketOpenedEvent, + EmulateNetworkConditionsByRuleParams, + EmulateNetworkConditionsByRuleResult, + EmulateNetworkConditionsParams, + EnableDeviceBoundSessionsParams, + EnableParams, + EnableReportingApiParams, + EventSourceMessageReceivedEvent, + FetchSchemefulSiteParams, + FetchSchemefulSiteResult, + GetAllCookiesResult, + GetCertificateParams, + GetCertificateResult, + GetCookiesParams, + GetCookiesResult, + GetRequestPostDataParams, + GetRequestPostDataResult, + GetResponseBodyForInterceptionParams, + GetResponseBodyForInterceptionResult, + GetResponseBodyParams, + GetResponseBodyResult, + GetSecurityIsolationStatusParams, + GetSecurityIsolationStatusResult, + LoadingFailedEvent, + LoadingFinishedEvent, + LoadNetworkResourceParams, + LoadNetworkResourceResult, + OverrideNetworkStateParams, + ReplayXHRParams, + ReportingApiEndpointsChangedForOriginEvent, + ReportingApiReportAddedEvent, + ReportingApiReportUpdatedEvent, + RequestInterceptedEvent, + RequestServedFromCacheEvent, + RequestWillBeSentEvent, + RequestWillBeSentExtraInfoEvent, + ResourceChangedPriorityEvent, + ResponseReceivedEarlyHintsEvent, + ResponseReceivedEvent, + ResponseReceivedExtraInfoEvent, + SearchInResponseBodyParams, + SearchInResponseBodyResult, + SetAcceptedEncodingsParams, + SetAttachDebugStackParams, + SetBlockedURLsParams, + SetBypassServiceWorkerParams, + SetCacheDisabledParams, + SetCookieControlsParams, + SetCookieParams, + SetCookieResult, + SetCookiesParams, + SetExtraHTTPHeadersParams, + SetRequestInterceptionParams, + SetUserAgentOverrideParams, + SignedExchangeReceivedEvent, + StreamResourceContentParams, + StreamResourceContentResult, + TakeResponseBodyForInterceptionAsStreamParams, + TakeResponseBodyForInterceptionAsStreamResult, + TrustTokenOperationDoneEvent, + WebSocketClosedEvent, + WebSocketCreatedEvent, + WebSocketFrameErrorEvent, + WebSocketFrameReceivedEvent, + WebSocketFrameSentEvent, + WebSocketHandshakeResponseReceivedEvent, + WebSocketWillSendHandshakeRequestEvent, + WebTransportClosedEvent, + WebTransportConnectionEstablishedEvent, + WebTransportCreatedEvent, +} from '../domains/network' + +export interface NetworkApi { + // ── Commands ── + + setAcceptedEncodings(params: SetAcceptedEncodingsParams): Promise + clearAcceptedEncodingsOverride(): Promise + canClearBrowserCache(): Promise + canClearBrowserCookies(): Promise + canEmulateNetworkConditions(): Promise + clearBrowserCache(): Promise + clearBrowserCookies(): Promise + continueInterceptedRequest( + params: ContinueInterceptedRequestParams, + ): Promise + deleteCookies(params: DeleteCookiesParams): Promise + disable(): Promise + emulateNetworkConditions( + params: EmulateNetworkConditionsParams, + ): Promise + emulateNetworkConditionsByRule( + params: EmulateNetworkConditionsByRuleParams, + ): Promise + overrideNetworkState(params: OverrideNetworkStateParams): Promise + enable(params?: EnableParams): Promise + configureDurableMessages( + params?: ConfigureDurableMessagesParams, + ): Promise + getAllCookies(): Promise + getCertificate(params: GetCertificateParams): Promise + getCookies(params?: GetCookiesParams): Promise + getResponseBody(params: GetResponseBodyParams): Promise + getRequestPostData( + params: GetRequestPostDataParams, + ): Promise + getResponseBodyForInterception( + params: GetResponseBodyForInterceptionParams, + ): Promise + takeResponseBodyForInterceptionAsStream( + params: TakeResponseBodyForInterceptionAsStreamParams, + ): Promise + replayXHR(params: ReplayXHRParams): Promise + searchInResponseBody( + params: SearchInResponseBodyParams, + ): Promise + setBlockedURLs(params?: SetBlockedURLsParams): Promise + setBypassServiceWorker(params: SetBypassServiceWorkerParams): Promise + setCacheDisabled(params: SetCacheDisabledParams): Promise + setCookie(params: SetCookieParams): Promise + setCookies(params: SetCookiesParams): Promise + setExtraHTTPHeaders(params: SetExtraHTTPHeadersParams): Promise + setAttachDebugStack(params: SetAttachDebugStackParams): Promise + setRequestInterception(params: SetRequestInterceptionParams): Promise + setUserAgentOverride(params: SetUserAgentOverrideParams): Promise + streamResourceContent( + params: StreamResourceContentParams, + ): Promise + getSecurityIsolationStatus( + params?: GetSecurityIsolationStatusParams, + ): Promise + enableReportingApi(params: EnableReportingApiParams): Promise + enableDeviceBoundSessions( + params: EnableDeviceBoundSessionsParams, + ): Promise + fetchSchemefulSite( + params: FetchSchemefulSiteParams, + ): Promise + loadNetworkResource( + params: LoadNetworkResourceParams, + ): Promise + setCookieControls(params: SetCookieControlsParams): Promise + + // ── Events ── + + on( + event: 'dataReceived', + handler: (params: DataReceivedEvent) => void, + ): () => void + on( + event: 'eventSourceMessageReceived', + handler: (params: EventSourceMessageReceivedEvent) => void, + ): () => void + on( + event: 'loadingFailed', + handler: (params: LoadingFailedEvent) => void, + ): () => void + on( + event: 'loadingFinished', + handler: (params: LoadingFinishedEvent) => void, + ): () => void + on( + event: 'requestIntercepted', + handler: (params: RequestInterceptedEvent) => void, + ): () => void + on( + event: 'requestServedFromCache', + handler: (params: RequestServedFromCacheEvent) => void, + ): () => void + on( + event: 'requestWillBeSent', + handler: (params: RequestWillBeSentEvent) => void, + ): () => void + on( + event: 'resourceChangedPriority', + handler: (params: ResourceChangedPriorityEvent) => void, + ): () => void + on( + event: 'signedExchangeReceived', + handler: (params: SignedExchangeReceivedEvent) => void, + ): () => void + on( + event: 'responseReceived', + handler: (params: ResponseReceivedEvent) => void, + ): () => void + on( + event: 'webSocketClosed', + handler: (params: WebSocketClosedEvent) => void, + ): () => void + on( + event: 'webSocketCreated', + handler: (params: WebSocketCreatedEvent) => void, + ): () => void + on( + event: 'webSocketFrameError', + handler: (params: WebSocketFrameErrorEvent) => void, + ): () => void + on( + event: 'webSocketFrameReceived', + handler: (params: WebSocketFrameReceivedEvent) => void, + ): () => void + on( + event: 'webSocketFrameSent', + handler: (params: WebSocketFrameSentEvent) => void, + ): () => void + on( + event: 'webSocketHandshakeResponseReceived', + handler: (params: WebSocketHandshakeResponseReceivedEvent) => void, + ): () => void + on( + event: 'webSocketWillSendHandshakeRequest', + handler: (params: WebSocketWillSendHandshakeRequestEvent) => void, + ): () => void + on( + event: 'webTransportCreated', + handler: (params: WebTransportCreatedEvent) => void, + ): () => void + on( + event: 'webTransportConnectionEstablished', + handler: (params: WebTransportConnectionEstablishedEvent) => void, + ): () => void + on( + event: 'webTransportClosed', + handler: (params: WebTransportClosedEvent) => void, + ): () => void + on( + event: 'directTCPSocketCreated', + handler: (params: DirectTCPSocketCreatedEvent) => void, + ): () => void + on( + event: 'directTCPSocketOpened', + handler: (params: DirectTCPSocketOpenedEvent) => void, + ): () => void + on( + event: 'directTCPSocketAborted', + handler: (params: DirectTCPSocketAbortedEvent) => void, + ): () => void + on( + event: 'directTCPSocketClosed', + handler: (params: DirectTCPSocketClosedEvent) => void, + ): () => void + on( + event: 'directTCPSocketChunkSent', + handler: (params: DirectTCPSocketChunkSentEvent) => void, + ): () => void + on( + event: 'directTCPSocketChunkReceived', + handler: (params: DirectTCPSocketChunkReceivedEvent) => void, + ): () => void + on( + event: 'directUDPSocketJoinedMulticastGroup', + handler: (params: DirectUDPSocketJoinedMulticastGroupEvent) => void, + ): () => void + on( + event: 'directUDPSocketLeftMulticastGroup', + handler: (params: DirectUDPSocketLeftMulticastGroupEvent) => void, + ): () => void + on( + event: 'directUDPSocketCreated', + handler: (params: DirectUDPSocketCreatedEvent) => void, + ): () => void + on( + event: 'directUDPSocketOpened', + handler: (params: DirectUDPSocketOpenedEvent) => void, + ): () => void + on( + event: 'directUDPSocketAborted', + handler: (params: DirectUDPSocketAbortedEvent) => void, + ): () => void + on( + event: 'directUDPSocketClosed', + handler: (params: DirectUDPSocketClosedEvent) => void, + ): () => void + on( + event: 'directUDPSocketChunkSent', + handler: (params: DirectUDPSocketChunkSentEvent) => void, + ): () => void + on( + event: 'directUDPSocketChunkReceived', + handler: (params: DirectUDPSocketChunkReceivedEvent) => void, + ): () => void + on( + event: 'requestWillBeSentExtraInfo', + handler: (params: RequestWillBeSentExtraInfoEvent) => void, + ): () => void + on( + event: 'responseReceivedExtraInfo', + handler: (params: ResponseReceivedExtraInfoEvent) => void, + ): () => void + on( + event: 'responseReceivedEarlyHints', + handler: (params: ResponseReceivedEarlyHintsEvent) => void, + ): () => void + on( + event: 'trustTokenOperationDone', + handler: (params: TrustTokenOperationDoneEvent) => void, + ): () => void + on(event: 'policyUpdated', handler: () => void): () => void + on( + event: 'reportingApiReportAdded', + handler: (params: ReportingApiReportAddedEvent) => void, + ): () => void + on( + event: 'reportingApiReportUpdated', + handler: (params: ReportingApiReportUpdatedEvent) => void, + ): () => void + on( + event: 'reportingApiEndpointsChangedForOrigin', + handler: (params: ReportingApiEndpointsChangedForOriginEvent) => void, + ): () => void + on( + event: 'deviceBoundSessionsAdded', + handler: (params: DeviceBoundSessionsAddedEvent) => void, + ): () => void + on( + event: 'deviceBoundSessionEventOccurred', + handler: (params: DeviceBoundSessionEventOccurredEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/overlay.ts b/packages/cdp-protocol/src/generated/domain-apis/overlay.ts new file mode 100644 index 000000000..6387cb86e --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/overlay.ts @@ -0,0 +1,106 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + GetGridHighlightObjectsForTestParams, + GetGridHighlightObjectsForTestResult, + GetHighlightObjectForTestParams, + GetHighlightObjectForTestResult, + GetSourceOrderHighlightObjectForTestParams, + GetSourceOrderHighlightObjectForTestResult, + HighlightFrameParams, + HighlightNodeParams, + HighlightQuadParams, + HighlightRectParams, + HighlightSourceOrderParams, + InspectNodeRequestedEvent, + NodeHighlightRequestedEvent, + ScreenshotRequestedEvent, + SetInspectModeParams, + SetPausedInDebuggerMessageParams, + SetShowAdHighlightsParams, + SetShowContainerQueryOverlaysParams, + SetShowDebugBordersParams, + SetShowFlexOverlaysParams, + SetShowFPSCounterParams, + SetShowGridOverlaysParams, + SetShowHingeParams, + SetShowHitTestBordersParams, + SetShowIsolatedElementsParams, + SetShowLayoutShiftRegionsParams, + SetShowPaintRectsParams, + SetShowScrollBottleneckRectsParams, + SetShowScrollSnapOverlaysParams, + SetShowViewportSizeOnResizeParams, + SetShowWebVitalsParams, + SetShowWindowControlsOverlayParams, +} from '../domains/overlay' + +export interface OverlayApi { + // ── Commands ── + + disable(): Promise + enable(): Promise + getHighlightObjectForTest( + params: GetHighlightObjectForTestParams, + ): Promise + getGridHighlightObjectsForTest( + params: GetGridHighlightObjectsForTestParams, + ): Promise + getSourceOrderHighlightObjectForTest( + params: GetSourceOrderHighlightObjectForTestParams, + ): Promise + hideHighlight(): Promise + highlightFrame(params: HighlightFrameParams): Promise + highlightNode(params: HighlightNodeParams): Promise + highlightQuad(params: HighlightQuadParams): Promise + highlightRect(params: HighlightRectParams): Promise + highlightSourceOrder(params: HighlightSourceOrderParams): Promise + setInspectMode(params: SetInspectModeParams): Promise + setShowAdHighlights(params: SetShowAdHighlightsParams): Promise + setPausedInDebuggerMessage( + params?: SetPausedInDebuggerMessageParams, + ): Promise + setShowDebugBorders(params: SetShowDebugBordersParams): Promise + setShowFPSCounter(params: SetShowFPSCounterParams): Promise + setShowGridOverlays(params: SetShowGridOverlaysParams): Promise + setShowFlexOverlays(params: SetShowFlexOverlaysParams): Promise + setShowScrollSnapOverlays( + params: SetShowScrollSnapOverlaysParams, + ): Promise + setShowContainerQueryOverlays( + params: SetShowContainerQueryOverlaysParams, + ): Promise + setShowPaintRects(params: SetShowPaintRectsParams): Promise + setShowLayoutShiftRegions( + params: SetShowLayoutShiftRegionsParams, + ): Promise + setShowScrollBottleneckRects( + params: SetShowScrollBottleneckRectsParams, + ): Promise + setShowHitTestBorders(params: SetShowHitTestBordersParams): Promise + setShowWebVitals(params: SetShowWebVitalsParams): Promise + setShowViewportSizeOnResize( + params: SetShowViewportSizeOnResizeParams, + ): Promise + setShowHinge(params?: SetShowHingeParams): Promise + setShowIsolatedElements(params: SetShowIsolatedElementsParams): Promise + setShowWindowControlsOverlay( + params?: SetShowWindowControlsOverlayParams, + ): Promise + + // ── Events ── + + on( + event: 'inspectNodeRequested', + handler: (params: InspectNodeRequestedEvent) => void, + ): () => void + on( + event: 'nodeHighlightRequested', + handler: (params: NodeHighlightRequestedEvent) => void, + ): () => void + on( + event: 'screenshotRequested', + handler: (params: ScreenshotRequestedEvent) => void, + ): () => void + on(event: 'inspectModeCanceled', handler: () => void): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/page.ts b/packages/cdp-protocol/src/generated/domain-apis/page.ts new file mode 100644 index 000000000..83693bf06 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/page.ts @@ -0,0 +1,298 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddCompilationCacheParams, + AddScriptToEvaluateOnLoadParams, + AddScriptToEvaluateOnLoadResult, + AddScriptToEvaluateOnNewDocumentParams, + AddScriptToEvaluateOnNewDocumentResult, + BackForwardCacheNotUsedEvent, + CaptureScreenshotParams, + CaptureScreenshotResult, + CaptureSnapshotParams, + CaptureSnapshotResult, + CompilationCacheProducedEvent, + CreateIsolatedWorldParams, + CreateIsolatedWorldResult, + DeleteCookieParams, + DocumentOpenedEvent, + DomContentEventFiredEvent, + DownloadProgressEvent, + DownloadWillBeginEvent, + EnableParams, + FileChooserOpenedEvent, + FrameAttachedEvent, + FrameClearedScheduledNavigationEvent, + FrameDetachedEvent, + FrameNavigatedEvent, + FrameRequestedNavigationEvent, + FrameScheduledNavigationEvent, + FrameStartedLoadingEvent, + FrameStartedNavigatingEvent, + FrameStoppedLoadingEvent, + FrameSubtreeWillBeDetachedEvent, + GenerateTestReportParams, + GetAdScriptAncestryParams, + GetAdScriptAncestryResult, + GetAnnotatedPageContentParams, + GetAnnotatedPageContentResult, + GetAppIdResult, + GetAppManifestParams, + GetAppManifestResult, + GetFrameTreeResult, + GetInstallabilityErrorsResult, + GetLayoutMetricsResult, + GetManifestIconsResult, + GetNavigationHistoryResult, + GetOriginTrialsParams, + GetOriginTrialsResult, + GetPermissionsPolicyStateParams, + GetPermissionsPolicyStateResult, + GetResourceContentParams, + GetResourceContentResult, + GetResourceTreeResult, + HandleJavaScriptDialogParams, + JavascriptDialogClosedEvent, + JavascriptDialogOpeningEvent, + LifecycleEventEvent, + LoadEventFiredEvent, + NavigatedWithinDocumentEvent, + NavigateParams, + NavigateResult, + NavigateToHistoryEntryParams, + PrintToPDFParams, + PrintToPDFResult, + ProduceCompilationCacheParams, + ReloadParams, + RemoveScriptToEvaluateOnLoadParams, + RemoveScriptToEvaluateOnNewDocumentParams, + ScreencastFrameAckParams, + ScreencastFrameEvent, + ScreencastVisibilityChangedEvent, + SearchInResourceParams, + SearchInResourceResult, + SetAdBlockingEnabledParams, + SetBypassCSPParams, + SetDeviceMetricsOverrideParams, + SetDeviceOrientationOverrideParams, + SetDocumentContentParams, + SetDownloadBehaviorParams, + SetFontFamiliesParams, + SetFontSizesParams, + SetGeolocationOverrideParams, + SetInterceptFileChooserDialogParams, + SetLifecycleEventsEnabledParams, + SetPrerenderingAllowedParams, + SetRPHRegistrationModeParams, + SetSPCTransactionModeParams, + SetTouchEmulationEnabledParams, + SetWebLifecycleStateParams, + StartScreencastParams, + WindowOpenEvent, +} from '../domains/page' + +export interface PageApi { + // ── Commands ── + + addScriptToEvaluateOnLoad( + params: AddScriptToEvaluateOnLoadParams, + ): Promise + addScriptToEvaluateOnNewDocument( + params: AddScriptToEvaluateOnNewDocumentParams, + ): Promise + bringToFront(): Promise + captureScreenshot( + params?: CaptureScreenshotParams, + ): Promise + captureSnapshot( + params?: CaptureSnapshotParams, + ): Promise + clearDeviceMetricsOverride(): Promise + clearDeviceOrientationOverride(): Promise + clearGeolocationOverride(): Promise + createIsolatedWorld( + params: CreateIsolatedWorldParams, + ): Promise + deleteCookie(params: DeleteCookieParams): Promise + disable(): Promise + enable(params?: EnableParams): Promise + getAppManifest(params?: GetAppManifestParams): Promise + getInstallabilityErrors(): Promise + getManifestIcons(): Promise + getAppId(): Promise + getAdScriptAncestry( + params: GetAdScriptAncestryParams, + ): Promise + getFrameTree(): Promise + getLayoutMetrics(): Promise + getNavigationHistory(): Promise + resetNavigationHistory(): Promise + getResourceContent( + params: GetResourceContentParams, + ): Promise + getResourceTree(): Promise + handleJavaScriptDialog(params: HandleJavaScriptDialogParams): Promise + navigate(params: NavigateParams): Promise + navigateToHistoryEntry(params: NavigateToHistoryEntryParams): Promise + printToPDF(params?: PrintToPDFParams): Promise + reload(params?: ReloadParams): Promise + removeScriptToEvaluateOnLoad( + params: RemoveScriptToEvaluateOnLoadParams, + ): Promise + removeScriptToEvaluateOnNewDocument( + params: RemoveScriptToEvaluateOnNewDocumentParams, + ): Promise + screencastFrameAck(params: ScreencastFrameAckParams): Promise + searchInResource( + params: SearchInResourceParams, + ): Promise + setAdBlockingEnabled(params: SetAdBlockingEnabledParams): Promise + setBypassCSP(params: SetBypassCSPParams): Promise + getPermissionsPolicyState( + params: GetPermissionsPolicyStateParams, + ): Promise + getOriginTrials(params: GetOriginTrialsParams): Promise + setDeviceMetricsOverride( + params: SetDeviceMetricsOverrideParams, + ): Promise + setDeviceOrientationOverride( + params: SetDeviceOrientationOverrideParams, + ): Promise + setFontFamilies(params: SetFontFamiliesParams): Promise + setFontSizes(params: SetFontSizesParams): Promise + setDocumentContent(params: SetDocumentContentParams): Promise + setDownloadBehavior(params: SetDownloadBehaviorParams): Promise + setGeolocationOverride(params?: SetGeolocationOverrideParams): Promise + setLifecycleEventsEnabled( + params: SetLifecycleEventsEnabledParams, + ): Promise + setTouchEmulationEnabled( + params: SetTouchEmulationEnabledParams, + ): Promise + startScreencast(params?: StartScreencastParams): Promise + stopLoading(): Promise + crash(): Promise + close(): Promise + setWebLifecycleState(params: SetWebLifecycleStateParams): Promise + stopScreencast(): Promise + produceCompilationCache(params: ProduceCompilationCacheParams): Promise + addCompilationCache(params: AddCompilationCacheParams): Promise + clearCompilationCache(): Promise + setSPCTransactionMode(params: SetSPCTransactionModeParams): Promise + setRPHRegistrationMode(params: SetRPHRegistrationModeParams): Promise + generateTestReport(params: GenerateTestReportParams): Promise + waitForDebugger(): Promise + setInterceptFileChooserDialog( + params: SetInterceptFileChooserDialogParams, + ): Promise + setPrerenderingAllowed(params: SetPrerenderingAllowedParams): Promise + getAnnotatedPageContent( + params?: GetAnnotatedPageContentParams, + ): Promise + + // ── Events ── + + on( + event: 'domContentEventFired', + handler: (params: DomContentEventFiredEvent) => void, + ): () => void + on( + event: 'fileChooserOpened', + handler: (params: FileChooserOpenedEvent) => void, + ): () => void + on( + event: 'frameAttached', + handler: (params: FrameAttachedEvent) => void, + ): () => void + on( + event: 'frameClearedScheduledNavigation', + handler: (params: FrameClearedScheduledNavigationEvent) => void, + ): () => void + on( + event: 'frameDetached', + handler: (params: FrameDetachedEvent) => void, + ): () => void + on( + event: 'frameSubtreeWillBeDetached', + handler: (params: FrameSubtreeWillBeDetachedEvent) => void, + ): () => void + on( + event: 'frameNavigated', + handler: (params: FrameNavigatedEvent) => void, + ): () => void + on( + event: 'documentOpened', + handler: (params: DocumentOpenedEvent) => void, + ): () => void + on(event: 'frameResized', handler: () => void): () => void + on( + event: 'frameStartedNavigating', + handler: (params: FrameStartedNavigatingEvent) => void, + ): () => void + on( + event: 'frameRequestedNavigation', + handler: (params: FrameRequestedNavigationEvent) => void, + ): () => void + on( + event: 'frameScheduledNavigation', + handler: (params: FrameScheduledNavigationEvent) => void, + ): () => void + on( + event: 'frameStartedLoading', + handler: (params: FrameStartedLoadingEvent) => void, + ): () => void + on( + event: 'frameStoppedLoading', + handler: (params: FrameStoppedLoadingEvent) => void, + ): () => void + on( + event: 'downloadWillBegin', + handler: (params: DownloadWillBeginEvent) => void, + ): () => void + on( + event: 'downloadProgress', + handler: (params: DownloadProgressEvent) => void, + ): () => void + on(event: 'interstitialHidden', handler: () => void): () => void + on(event: 'interstitialShown', handler: () => void): () => void + on( + event: 'javascriptDialogClosed', + handler: (params: JavascriptDialogClosedEvent) => void, + ): () => void + on( + event: 'javascriptDialogOpening', + handler: (params: JavascriptDialogOpeningEvent) => void, + ): () => void + on( + event: 'lifecycleEvent', + handler: (params: LifecycleEventEvent) => void, + ): () => void + on( + event: 'backForwardCacheNotUsed', + handler: (params: BackForwardCacheNotUsedEvent) => void, + ): () => void + on( + event: 'loadEventFired', + handler: (params: LoadEventFiredEvent) => void, + ): () => void + on( + event: 'navigatedWithinDocument', + handler: (params: NavigatedWithinDocumentEvent) => void, + ): () => void + on( + event: 'screencastFrame', + handler: (params: ScreencastFrameEvent) => void, + ): () => void + on( + event: 'screencastVisibilityChanged', + handler: (params: ScreencastVisibilityChangedEvent) => void, + ): () => void + on( + event: 'windowOpen', + handler: (params: WindowOpenEvent) => void, + ): () => void + on( + event: 'compilationCacheProduced', + handler: (params: CompilationCacheProducedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/performance-timeline.ts b/packages/cdp-protocol/src/generated/domain-apis/performance-timeline.ts new file mode 100644 index 000000000..965ff814a --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/performance-timeline.ts @@ -0,0 +1,19 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + EnableParams, + TimelineEventAddedEvent, +} from '../domains/performance-timeline' + +export interface PerformanceTimelineApi { + // ── Commands ── + + enable(params: EnableParams): Promise + + // ── Events ── + + on( + event: 'timelineEventAdded', + handler: (params: TimelineEventAddedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/performance.ts b/packages/cdp-protocol/src/generated/domain-apis/performance.ts new file mode 100644 index 000000000..412f0361e --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/performance.ts @@ -0,0 +1,21 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + EnableParams, + GetMetricsResult, + MetricsEvent, + SetTimeDomainParams, +} from '../domains/performance' + +export interface PerformanceApi { + // ── Commands ── + + disable(): Promise + enable(params?: EnableParams): Promise + setTimeDomain(params: SetTimeDomainParams): Promise + getMetrics(): Promise + + // ── Events ── + + on(event: 'metrics', handler: (params: MetricsEvent) => void): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/preload.ts b/packages/cdp-protocol/src/generated/domain-apis/preload.ts new file mode 100644 index 000000000..af9242575 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/preload.ts @@ -0,0 +1,44 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + PrefetchStatusUpdatedEvent, + PreloadEnabledStateUpdatedEvent, + PreloadingAttemptSourcesUpdatedEvent, + PrerenderStatusUpdatedEvent, + RuleSetRemovedEvent, + RuleSetUpdatedEvent, +} from '../domains/preload' + +export interface PreloadApi { + // ── Commands ── + + enable(): Promise + disable(): Promise + + // ── Events ── + + on( + event: 'ruleSetUpdated', + handler: (params: RuleSetUpdatedEvent) => void, + ): () => void + on( + event: 'ruleSetRemoved', + handler: (params: RuleSetRemovedEvent) => void, + ): () => void + on( + event: 'preloadEnabledStateUpdated', + handler: (params: PreloadEnabledStateUpdatedEvent) => void, + ): () => void + on( + event: 'prefetchStatusUpdated', + handler: (params: PrefetchStatusUpdatedEvent) => void, + ): () => void + on( + event: 'prerenderStatusUpdated', + handler: (params: PrerenderStatusUpdatedEvent) => void, + ): () => void + on( + event: 'preloadingAttemptSourcesUpdated', + handler: (params: PreloadingAttemptSourcesUpdatedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/profiler.ts b/packages/cdp-protocol/src/generated/domain-apis/profiler.ts new file mode 100644 index 000000000..90698058a --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/profiler.ts @@ -0,0 +1,44 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ConsoleProfileFinishedEvent, + ConsoleProfileStartedEvent, + GetBestEffortCoverageResult, + PreciseCoverageDeltaUpdateEvent, + SetSamplingIntervalParams, + StartPreciseCoverageParams, + StartPreciseCoverageResult, + StopResult, + TakePreciseCoverageResult, +} from '../domains/profiler' + +export interface ProfilerApi { + // ── Commands ── + + disable(): Promise + enable(): Promise + getBestEffortCoverage(): Promise + setSamplingInterval(params: SetSamplingIntervalParams): Promise + start(): Promise + startPreciseCoverage( + params?: StartPreciseCoverageParams, + ): Promise + stop(): Promise + stopPreciseCoverage(): Promise + takePreciseCoverage(): Promise + + // ── Events ── + + on( + event: 'consoleProfileFinished', + handler: (params: ConsoleProfileFinishedEvent) => void, + ): () => void + on( + event: 'consoleProfileStarted', + handler: (params: ConsoleProfileStartedEvent) => void, + ): () => void + on( + event: 'preciseCoverageDeltaUpdate', + handler: (params: PreciseCoverageDeltaUpdateEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/pwa.ts b/packages/cdp-protocol/src/generated/domain-apis/pwa.ts new file mode 100644 index 000000000..cb7f7a4c6 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/pwa.ts @@ -0,0 +1,28 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ChangeAppUserSettingsParams, + GetOsAppStateParams, + GetOsAppStateResult, + InstallParams, + LaunchFilesInAppParams, + LaunchFilesInAppResult, + LaunchParams, + LaunchResult, + OpenCurrentPageInAppParams, + UninstallParams, +} from '../domains/pwa' + +export interface PWAApi { + // ── Commands ── + + getOsAppState(params: GetOsAppStateParams): Promise + install(params: InstallParams): Promise + uninstall(params: UninstallParams): Promise + launch(params: LaunchParams): Promise + launchFilesInApp( + params: LaunchFilesInAppParams, + ): Promise + openCurrentPageInApp(params: OpenCurrentPageInAppParams): Promise + changeAppUserSettings(params: ChangeAppUserSettingsParams): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/runtime.ts b/packages/cdp-protocol/src/generated/domain-apis/runtime.ts new file mode 100644 index 000000000..66d95fd62 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/runtime.ts @@ -0,0 +1,106 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddBindingParams, + AwaitPromiseParams, + AwaitPromiseResult, + BindingCalledEvent, + CallFunctionOnParams, + CallFunctionOnResult, + CompileScriptParams, + CompileScriptResult, + ConsoleAPICalledEvent, + EvaluateParams, + EvaluateResult, + ExceptionRevokedEvent, + ExceptionThrownEvent, + ExecutionContextCreatedEvent, + ExecutionContextDestroyedEvent, + GetExceptionDetailsParams, + GetExceptionDetailsResult, + GetHeapUsageResult, + GetIsolateIdResult, + GetPropertiesParams, + GetPropertiesResult, + GlobalLexicalScopeNamesParams, + GlobalLexicalScopeNamesResult, + InspectRequestedEvent, + QueryObjectsParams, + QueryObjectsResult, + ReleaseObjectGroupParams, + ReleaseObjectParams, + RemoveBindingParams, + RunScriptParams, + RunScriptResult, + SetAsyncCallStackDepthParams, + SetCustomObjectFormatterEnabledParams, + SetMaxCallStackSizeToCaptureParams, +} from '../domains/runtime' + +export interface RuntimeApi { + // ── Commands ── + + awaitPromise(params: AwaitPromiseParams): Promise + callFunctionOn(params: CallFunctionOnParams): Promise + compileScript(params: CompileScriptParams): Promise + disable(): Promise + discardConsoleEntries(): Promise + enable(): Promise + evaluate(params: EvaluateParams): Promise + getIsolateId(): Promise + getHeapUsage(): Promise + getProperties(params: GetPropertiesParams): Promise + globalLexicalScopeNames( + params?: GlobalLexicalScopeNamesParams, + ): Promise + queryObjects(params: QueryObjectsParams): Promise + releaseObject(params: ReleaseObjectParams): Promise + releaseObjectGroup(params: ReleaseObjectGroupParams): Promise + runIfWaitingForDebugger(): Promise + runScript(params: RunScriptParams): Promise + setAsyncCallStackDepth(params: SetAsyncCallStackDepthParams): Promise + setCustomObjectFormatterEnabled( + params: SetCustomObjectFormatterEnabledParams, + ): Promise + setMaxCallStackSizeToCapture( + params: SetMaxCallStackSizeToCaptureParams, + ): Promise + terminateExecution(): Promise + addBinding(params: AddBindingParams): Promise + removeBinding(params: RemoveBindingParams): Promise + getExceptionDetails( + params: GetExceptionDetailsParams, + ): Promise + + // ── Events ── + + on( + event: 'bindingCalled', + handler: (params: BindingCalledEvent) => void, + ): () => void + on( + event: 'consoleAPICalled', + handler: (params: ConsoleAPICalledEvent) => void, + ): () => void + on( + event: 'exceptionRevoked', + handler: (params: ExceptionRevokedEvent) => void, + ): () => void + on( + event: 'exceptionThrown', + handler: (params: ExceptionThrownEvent) => void, + ): () => void + on( + event: 'executionContextCreated', + handler: (params: ExecutionContextCreatedEvent) => void, + ): () => void + on( + event: 'executionContextDestroyed', + handler: (params: ExecutionContextDestroyedEvent) => void, + ): () => void + on(event: 'executionContextsCleared', handler: () => void): () => void + on( + event: 'inspectRequested', + handler: (params: InspectRequestedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/schema.ts b/packages/cdp-protocol/src/generated/domain-apis/schema.ts new file mode 100644 index 000000000..68b6643de --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/schema.ts @@ -0,0 +1,9 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { GetDomainsResult } from '../domains/schema' + +export interface SchemaApi { + // ── Commands ── + + getDomains(): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/security.ts b/packages/cdp-protocol/src/generated/domain-apis/security.ts new file mode 100644 index 000000000..ac954a9cb --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/security.ts @@ -0,0 +1,39 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CertificateErrorEvent, + HandleCertificateErrorParams, + SecurityStateChangedEvent, + SetIgnoreCertificateErrorsParams, + SetOverrideCertificateErrorsParams, + VisibleSecurityStateChangedEvent, +} from '../domains/security' + +export interface SecurityApi { + // ── Commands ── + + disable(): Promise + enable(): Promise + setIgnoreCertificateErrors( + params: SetIgnoreCertificateErrorsParams, + ): Promise + handleCertificateError(params: HandleCertificateErrorParams): Promise + setOverrideCertificateErrors( + params: SetOverrideCertificateErrorsParams, + ): Promise + + // ── Events ── + + on( + event: 'certificateError', + handler: (params: CertificateErrorEvent) => void, + ): () => void + on( + event: 'visibleSecurityStateChanged', + handler: (params: VisibleSecurityStateChangedEvent) => void, + ): () => void + on( + event: 'securityStateChanged', + handler: (params: SecurityStateChangedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/service-worker.ts b/packages/cdp-protocol/src/generated/domain-apis/service-worker.ts new file mode 100644 index 000000000..edd324739 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/service-worker.ts @@ -0,0 +1,52 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + DeliverPushMessageParams, + DispatchPeriodicSyncEventParams, + DispatchSyncEventParams, + SetForceUpdateOnPageLoadParams, + SkipWaitingParams, + StartWorkerParams, + StopWorkerParams, + UnregisterParams, + UpdateRegistrationParams, + WorkerErrorReportedEvent, + WorkerRegistrationUpdatedEvent, + WorkerVersionUpdatedEvent, +} from '../domains/service-worker' + +export interface ServiceWorkerApi { + // ── Commands ── + + deliverPushMessage(params: DeliverPushMessageParams): Promise + disable(): Promise + dispatchSyncEvent(params: DispatchSyncEventParams): Promise + dispatchPeriodicSyncEvent( + params: DispatchPeriodicSyncEventParams, + ): Promise + enable(): Promise + setForceUpdateOnPageLoad( + params: SetForceUpdateOnPageLoadParams, + ): Promise + skipWaiting(params: SkipWaitingParams): Promise + startWorker(params: StartWorkerParams): Promise + stopAllWorkers(): Promise + stopWorker(params: StopWorkerParams): Promise + unregister(params: UnregisterParams): Promise + updateRegistration(params: UpdateRegistrationParams): Promise + + // ── Events ── + + on( + event: 'workerErrorReported', + handler: (params: WorkerErrorReportedEvent) => void, + ): () => void + on( + event: 'workerRegistrationUpdated', + handler: (params: WorkerRegistrationUpdatedEvent) => void, + ): () => void + on( + event: 'workerVersionUpdated', + handler: (params: WorkerVersionUpdatedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/storage.ts b/packages/cdp-protocol/src/generated/domain-apis/storage.ts new file mode 100644 index 000000000..40dbd1b15 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/storage.ts @@ -0,0 +1,222 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AttributionReportingReportSentEvent, + AttributionReportingSourceRegisteredEvent, + AttributionReportingTriggerRegisteredEvent, + AttributionReportingVerboseDebugReportSentEvent, + CacheStorageContentUpdatedEvent, + CacheStorageListUpdatedEvent, + ClearCookiesParams, + ClearDataForOriginParams, + ClearDataForStorageKeyParams, + ClearSharedStorageEntriesParams, + ClearTrustTokensParams, + ClearTrustTokensResult, + DeleteSharedStorageEntryParams, + DeleteStorageBucketParams, + GetAffectedUrlsForThirdPartyCookieMetadataParams, + GetAffectedUrlsForThirdPartyCookieMetadataResult, + GetCookiesParams, + GetCookiesResult, + GetInterestGroupDetailsParams, + GetInterestGroupDetailsResult, + GetRelatedWebsiteSetsResult, + GetSharedStorageEntriesParams, + GetSharedStorageEntriesResult, + GetSharedStorageMetadataParams, + GetSharedStorageMetadataResult, + GetStorageKeyForFrameParams, + GetStorageKeyForFrameResult, + GetStorageKeyParams, + GetStorageKeyResult, + GetTrustTokensResult, + GetUsageAndQuotaParams, + GetUsageAndQuotaResult, + IndexedDBContentUpdatedEvent, + IndexedDBListUpdatedEvent, + InterestGroupAccessedEvent, + InterestGroupAuctionEventOccurredEvent, + InterestGroupAuctionNetworkRequestCreatedEvent, + OverrideQuotaForOriginParams, + ResetSharedStorageBudgetParams, + RunBounceTrackingMitigationsResult, + SendPendingAttributionReportsResult, + SetAttributionReportingLocalTestingModeParams, + SetAttributionReportingTrackingParams, + SetCookiesParams, + SetInterestGroupAuctionTrackingParams, + SetInterestGroupTrackingParams, + SetProtectedAudienceKAnonymityParams, + SetSharedStorageEntryParams, + SetSharedStorageTrackingParams, + SetStorageBucketTrackingParams, + SharedStorageAccessedEvent, + SharedStorageWorkletOperationExecutionFinishedEvent, + StorageBucketCreatedOrUpdatedEvent, + StorageBucketDeletedEvent, + TrackCacheStorageForOriginParams, + TrackCacheStorageForStorageKeyParams, + TrackIndexedDBForOriginParams, + TrackIndexedDBForStorageKeyParams, + UntrackCacheStorageForOriginParams, + UntrackCacheStorageForStorageKeyParams, + UntrackIndexedDBForOriginParams, + UntrackIndexedDBForStorageKeyParams, +} from '../domains/storage' + +export interface StorageApi { + // ── Commands ── + + getStorageKeyForFrame( + params: GetStorageKeyForFrameParams, + ): Promise + getStorageKey(params?: GetStorageKeyParams): Promise + clearDataForOrigin(params: ClearDataForOriginParams): Promise + clearDataForStorageKey(params: ClearDataForStorageKeyParams): Promise + getCookies(params?: GetCookiesParams): Promise + setCookies(params: SetCookiesParams): Promise + clearCookies(params?: ClearCookiesParams): Promise + getUsageAndQuota( + params: GetUsageAndQuotaParams, + ): Promise + overrideQuotaForOrigin(params: OverrideQuotaForOriginParams): Promise + trackCacheStorageForOrigin( + params: TrackCacheStorageForOriginParams, + ): Promise + trackCacheStorageForStorageKey( + params: TrackCacheStorageForStorageKeyParams, + ): Promise + trackIndexedDBForOrigin(params: TrackIndexedDBForOriginParams): Promise + trackIndexedDBForStorageKey( + params: TrackIndexedDBForStorageKeyParams, + ): Promise + untrackCacheStorageForOrigin( + params: UntrackCacheStorageForOriginParams, + ): Promise + untrackCacheStorageForStorageKey( + params: UntrackCacheStorageForStorageKeyParams, + ): Promise + untrackIndexedDBForOrigin( + params: UntrackIndexedDBForOriginParams, + ): Promise + untrackIndexedDBForStorageKey( + params: UntrackIndexedDBForStorageKeyParams, + ): Promise + getTrustTokens(): Promise + clearTrustTokens( + params: ClearTrustTokensParams, + ): Promise + getInterestGroupDetails( + params: GetInterestGroupDetailsParams, + ): Promise + setInterestGroupTracking( + params: SetInterestGroupTrackingParams, + ): Promise + setInterestGroupAuctionTracking( + params: SetInterestGroupAuctionTrackingParams, + ): Promise + getSharedStorageMetadata( + params: GetSharedStorageMetadataParams, + ): Promise + getSharedStorageEntries( + params: GetSharedStorageEntriesParams, + ): Promise + setSharedStorageEntry(params: SetSharedStorageEntryParams): Promise + deleteSharedStorageEntry( + params: DeleteSharedStorageEntryParams, + ): Promise + clearSharedStorageEntries( + params: ClearSharedStorageEntriesParams, + ): Promise + resetSharedStorageBudget( + params: ResetSharedStorageBudgetParams, + ): Promise + setSharedStorageTracking( + params: SetSharedStorageTrackingParams, + ): Promise + setStorageBucketTracking( + params: SetStorageBucketTrackingParams, + ): Promise + deleteStorageBucket(params: DeleteStorageBucketParams): Promise + runBounceTrackingMitigations(): Promise + setAttributionReportingLocalTestingMode( + params: SetAttributionReportingLocalTestingModeParams, + ): Promise + setAttributionReportingTracking( + params: SetAttributionReportingTrackingParams, + ): Promise + sendPendingAttributionReports(): Promise + getRelatedWebsiteSets(): Promise + getAffectedUrlsForThirdPartyCookieMetadata( + params: GetAffectedUrlsForThirdPartyCookieMetadataParams, + ): Promise + setProtectedAudienceKAnonymity( + params: SetProtectedAudienceKAnonymityParams, + ): Promise + + // ── Events ── + + on( + event: 'cacheStorageContentUpdated', + handler: (params: CacheStorageContentUpdatedEvent) => void, + ): () => void + on( + event: 'cacheStorageListUpdated', + handler: (params: CacheStorageListUpdatedEvent) => void, + ): () => void + on( + event: 'indexedDBContentUpdated', + handler: (params: IndexedDBContentUpdatedEvent) => void, + ): () => void + on( + event: 'indexedDBListUpdated', + handler: (params: IndexedDBListUpdatedEvent) => void, + ): () => void + on( + event: 'interestGroupAccessed', + handler: (params: InterestGroupAccessedEvent) => void, + ): () => void + on( + event: 'interestGroupAuctionEventOccurred', + handler: (params: InterestGroupAuctionEventOccurredEvent) => void, + ): () => void + on( + event: 'interestGroupAuctionNetworkRequestCreated', + handler: (params: InterestGroupAuctionNetworkRequestCreatedEvent) => void, + ): () => void + on( + event: 'sharedStorageAccessed', + handler: (params: SharedStorageAccessedEvent) => void, + ): () => void + on( + event: 'sharedStorageWorkletOperationExecutionFinished', + handler: ( + params: SharedStorageWorkletOperationExecutionFinishedEvent, + ) => void, + ): () => void + on( + event: 'storageBucketCreatedOrUpdated', + handler: (params: StorageBucketCreatedOrUpdatedEvent) => void, + ): () => void + on( + event: 'storageBucketDeleted', + handler: (params: StorageBucketDeletedEvent) => void, + ): () => void + on( + event: 'attributionReportingSourceRegistered', + handler: (params: AttributionReportingSourceRegisteredEvent) => void, + ): () => void + on( + event: 'attributionReportingTriggerRegistered', + handler: (params: AttributionReportingTriggerRegisteredEvent) => void, + ): () => void + on( + event: 'attributionReportingReportSent', + handler: (params: AttributionReportingReportSentEvent) => void, + ): () => void + on( + event: 'attributionReportingVerboseDebugReportSent', + handler: (params: AttributionReportingVerboseDebugReportSentEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/system-info.ts b/packages/cdp-protocol/src/generated/domain-apis/system-info.ts new file mode 100644 index 000000000..dbc689542 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/system-info.ts @@ -0,0 +1,16 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + GetFeatureStateParams, + GetFeatureStateResult, + GetInfoResult, + GetProcessInfoResult, +} from '../domains/system-info' + +export interface SystemInfoApi { + // ── Commands ── + + getInfo(): Promise + getFeatureState(params: GetFeatureStateParams): Promise + getProcessInfo(): Promise +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/target.ts b/packages/cdp-protocol/src/generated/domain-apis/target.ts new file mode 100644 index 000000000..11643f75f --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/target.ts @@ -0,0 +1,97 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + ActivateTargetParams, + AttachedToTargetEvent, + AttachToBrowserTargetResult, + AttachToTargetParams, + AttachToTargetResult, + AutoAttachRelatedParams, + CloseTargetParams, + CloseTargetResult, + CreateBrowserContextParams, + CreateBrowserContextResult, + CreateTargetParams, + CreateTargetResult, + DetachedFromTargetEvent, + DetachFromTargetParams, + DisposeBrowserContextParams, + ExposeDevToolsProtocolParams, + GetBrowserContextsResult, + GetDevToolsTargetParams, + GetDevToolsTargetResult, + GetTargetInfoParams, + GetTargetInfoResult, + GetTargetsParams, + GetTargetsResult, + OpenDevToolsParams, + OpenDevToolsResult, + ReceivedMessageFromTargetEvent, + SendMessageToTargetParams, + SetAutoAttachParams, + SetDiscoverTargetsParams, + SetRemoteLocationsParams, + TargetCrashedEvent, + TargetCreatedEvent, + TargetDestroyedEvent, + TargetInfoChangedEvent, +} from '../domains/target' + +export interface TargetApi { + // ── Commands ── + + activateTarget(params: ActivateTargetParams): Promise + attachToTarget(params: AttachToTargetParams): Promise + attachToBrowserTarget(): Promise + closeTarget(params: CloseTargetParams): Promise + exposeDevToolsProtocol(params: ExposeDevToolsProtocolParams): Promise + createBrowserContext( + params?: CreateBrowserContextParams, + ): Promise + getBrowserContexts(): Promise + createTarget(params: CreateTargetParams): Promise + detachFromTarget(params?: DetachFromTargetParams): Promise + disposeBrowserContext(params: DisposeBrowserContextParams): Promise + getTargetInfo(params?: GetTargetInfoParams): Promise + getTargets(params?: GetTargetsParams): Promise + sendMessageToTarget(params: SendMessageToTargetParams): Promise + setAutoAttach(params: SetAutoAttachParams): Promise + autoAttachRelated(params: AutoAttachRelatedParams): Promise + setDiscoverTargets(params: SetDiscoverTargetsParams): Promise + setRemoteLocations(params: SetRemoteLocationsParams): Promise + getDevToolsTarget( + params: GetDevToolsTargetParams, + ): Promise + openDevTools(params: OpenDevToolsParams): Promise + + // ── Events ── + + on( + event: 'attachedToTarget', + handler: (params: AttachedToTargetEvent) => void, + ): () => void + on( + event: 'detachedFromTarget', + handler: (params: DetachedFromTargetEvent) => void, + ): () => void + on( + event: 'receivedMessageFromTarget', + handler: (params: ReceivedMessageFromTargetEvent) => void, + ): () => void + on( + event: 'targetCreated', + handler: (params: TargetCreatedEvent) => void, + ): () => void + on( + event: 'targetDestroyed', + handler: (params: TargetDestroyedEvent) => void, + ): () => void + on( + event: 'targetCrashed', + handler: (params: TargetCrashedEvent) => void, + ): () => void + on( + event: 'targetInfoChanged', + handler: (params: TargetInfoChangedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/tethering.ts b/packages/cdp-protocol/src/generated/domain-apis/tethering.ts new file mode 100644 index 000000000..9ba3d503a --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/tethering.ts @@ -0,0 +1,18 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AcceptedEvent, + BindParams, + UnbindParams, +} from '../domains/tethering' + +export interface TetheringApi { + // ── Commands ── + + bind(params: BindParams): Promise + unbind(params: UnbindParams): Promise + + // ── Events ── + + on(event: 'accepted', handler: (params: AcceptedEvent) => void): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/tracing.ts b/packages/cdp-protocol/src/generated/domain-apis/tracing.ts new file mode 100644 index 000000000..ccbe67bd2 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/tracing.ts @@ -0,0 +1,41 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + BufferUsageEvent, + DataCollectedEvent, + GetCategoriesResult, + GetTrackEventDescriptorResult, + RecordClockSyncMarkerParams, + RequestMemoryDumpParams, + RequestMemoryDumpResult, + StartParams, + TracingCompleteEvent, +} from '../domains/tracing' + +export interface TracingApi { + // ── Commands ── + + end(): Promise + getCategories(): Promise + getTrackEventDescriptor(): Promise + recordClockSyncMarker(params: RecordClockSyncMarkerParams): Promise + requestMemoryDump( + params?: RequestMemoryDumpParams, + ): Promise + start(params?: StartParams): Promise + + // ── Events ── + + on( + event: 'bufferUsage', + handler: (params: BufferUsageEvent) => void, + ): () => void + on( + event: 'dataCollected', + handler: (params: DataCollectedEvent) => void, + ): () => void + on( + event: 'tracingComplete', + handler: (params: TracingCompleteEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/web-audio.ts b/packages/cdp-protocol/src/generated/domain-apis/web-audio.ts new file mode 100644 index 000000000..d1d20d6e9 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/web-audio.ts @@ -0,0 +1,82 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AudioListenerCreatedEvent, + AudioListenerWillBeDestroyedEvent, + AudioNodeCreatedEvent, + AudioNodeWillBeDestroyedEvent, + AudioParamCreatedEvent, + AudioParamWillBeDestroyedEvent, + ContextChangedEvent, + ContextCreatedEvent, + ContextWillBeDestroyedEvent, + GetRealtimeDataParams, + GetRealtimeDataResult, + NodeParamConnectedEvent, + NodeParamDisconnectedEvent, + NodesConnectedEvent, + NodesDisconnectedEvent, +} from '../domains/web-audio' + +export interface WebAudioApi { + // ── Commands ── + + enable(): Promise + disable(): Promise + getRealtimeData(params: GetRealtimeDataParams): Promise + + // ── Events ── + + on( + event: 'contextCreated', + handler: (params: ContextCreatedEvent) => void, + ): () => void + on( + event: 'contextWillBeDestroyed', + handler: (params: ContextWillBeDestroyedEvent) => void, + ): () => void + on( + event: 'contextChanged', + handler: (params: ContextChangedEvent) => void, + ): () => void + on( + event: 'audioListenerCreated', + handler: (params: AudioListenerCreatedEvent) => void, + ): () => void + on( + event: 'audioListenerWillBeDestroyed', + handler: (params: AudioListenerWillBeDestroyedEvent) => void, + ): () => void + on( + event: 'audioNodeCreated', + handler: (params: AudioNodeCreatedEvent) => void, + ): () => void + on( + event: 'audioNodeWillBeDestroyed', + handler: (params: AudioNodeWillBeDestroyedEvent) => void, + ): () => void + on( + event: 'audioParamCreated', + handler: (params: AudioParamCreatedEvent) => void, + ): () => void + on( + event: 'audioParamWillBeDestroyed', + handler: (params: AudioParamWillBeDestroyedEvent) => void, + ): () => void + on( + event: 'nodesConnected', + handler: (params: NodesConnectedEvent) => void, + ): () => void + on( + event: 'nodesDisconnected', + handler: (params: NodesDisconnectedEvent) => void, + ): () => void + on( + event: 'nodeParamConnected', + handler: (params: NodeParamConnectedEvent) => void, + ): () => void + on( + event: 'nodeParamDisconnected', + handler: (params: NodeParamDisconnectedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domain-apis/web-authn.ts b/packages/cdp-protocol/src/generated/domain-apis/web-authn.ts new file mode 100644 index 000000000..8b534dc57 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domain-apis/web-authn.ts @@ -0,0 +1,66 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + AddCredentialParams, + AddVirtualAuthenticatorParams, + AddVirtualAuthenticatorResult, + ClearCredentialsParams, + CredentialAddedEvent, + CredentialAssertedEvent, + CredentialDeletedEvent, + CredentialUpdatedEvent, + EnableParams, + GetCredentialParams, + GetCredentialResult, + GetCredentialsParams, + GetCredentialsResult, + RemoveCredentialParams, + RemoveVirtualAuthenticatorParams, + SetAutomaticPresenceSimulationParams, + SetCredentialPropertiesParams, + SetResponseOverrideBitsParams, + SetUserVerifiedParams, +} from '../domains/web-authn' + +export interface WebAuthnApi { + // ── Commands ── + + enable(params?: EnableParams): Promise + disable(): Promise + addVirtualAuthenticator( + params: AddVirtualAuthenticatorParams, + ): Promise + setResponseOverrideBits(params: SetResponseOverrideBitsParams): Promise + removeVirtualAuthenticator( + params: RemoveVirtualAuthenticatorParams, + ): Promise + addCredential(params: AddCredentialParams): Promise + getCredential(params: GetCredentialParams): Promise + getCredentials(params: GetCredentialsParams): Promise + removeCredential(params: RemoveCredentialParams): Promise + clearCredentials(params: ClearCredentialsParams): Promise + setUserVerified(params: SetUserVerifiedParams): Promise + setAutomaticPresenceSimulation( + params: SetAutomaticPresenceSimulationParams, + ): Promise + setCredentialProperties(params: SetCredentialPropertiesParams): Promise + + // ── Events ── + + on( + event: 'credentialAdded', + handler: (params: CredentialAddedEvent) => void, + ): () => void + on( + event: 'credentialDeleted', + handler: (params: CredentialDeletedEvent) => void, + ): () => void + on( + event: 'credentialUpdated', + handler: (params: CredentialUpdatedEvent) => void, + ): () => void + on( + event: 'credentialAsserted', + handler: (params: CredentialAssertedEvent) => void, + ): () => void +} diff --git a/packages/cdp-protocol/src/generated/domains/accessibility.ts b/packages/cdp-protocol/src/generated/domains/accessibility.ts new file mode 100644 index 000000000..925f18fc1 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/accessibility.ts @@ -0,0 +1,225 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId, NodeId } from './dom' +import type { FrameId } from './page' +import type { RemoteObjectId } from './runtime' + +// ══ Types ══ + +export type AXNodeId = string + +export type AXValueType = + | 'boolean' + | 'tristate' + | 'booleanOrUndefined' + | 'idref' + | 'idrefList' + | 'integer' + | 'node' + | 'nodeList' + | 'number' + | 'string' + | 'computedString' + | 'token' + | 'tokenList' + | 'domRelation' + | 'role' + | 'internalRole' + | 'valueUndefined' + +export type AXValueSourceType = + | 'attribute' + | 'implicit' + | 'style' + | 'contents' + | 'placeholder' + | 'relatedElement' + +export type AXValueNativeSourceType = + | 'description' + | 'figcaption' + | 'label' + | 'labelfor' + | 'labelwrapped' + | 'legend' + | 'rubyannotation' + | 'tablecaption' + | 'title' + | 'other' + +export interface AXValueSource { + type: AXValueSourceType + value?: AXValue + attribute?: string + attributeValue?: AXValue + superseded?: boolean + nativeSource?: AXValueNativeSourceType + nativeSourceValue?: AXValue + invalid?: boolean + invalidReason?: string +} + +export interface AXRelatedNode { + backendDOMNodeId: BackendNodeId + idref?: string + text?: string +} + +export interface AXProperty { + name: AXPropertyName + value: AXValue +} + +export interface AXValue { + type: AXValueType + value?: unknown + relatedNodes?: AXRelatedNode[] + sources?: AXValueSource[] +} + +export type AXPropertyName = + | 'actions' + | 'busy' + | 'disabled' + | 'editable' + | 'focusable' + | 'focused' + | 'hidden' + | 'hiddenRoot' + | 'invalid' + | 'keyshortcuts' + | 'settable' + | 'roledescription' + | 'live' + | 'atomic' + | 'relevant' + | 'root' + | 'autocomplete' + | 'hasPopup' + | 'level' + | 'multiselectable' + | 'orientation' + | 'multiline' + | 'readonly' + | 'required' + | 'valuemin' + | 'valuemax' + | 'valuetext' + | 'checked' + | 'expanded' + | 'modal' + | 'pressed' + | 'selected' + | 'activedescendant' + | 'controls' + | 'describedby' + | 'details' + | 'errormessage' + | 'flowto' + | 'labelledby' + | 'owns' + | 'url' + | 'activeFullscreenElement' + | 'activeModalDialog' + | 'activeAriaModalDialog' + | 'ariaHiddenElement' + | 'ariaHiddenSubtree' + | 'emptyAlt' + | 'emptyText' + | 'inertElement' + | 'inertSubtree' + | 'labelContainer' + | 'labelFor' + | 'notRendered' + | 'notVisible' + | 'presentationalRole' + | 'probablyPresentational' + | 'inactiveCarouselTabContent' + | 'uninteresting' + +export interface AXNode { + nodeId: AXNodeId + ignored: boolean + ignoredReasons?: AXProperty[] + role?: AXValue + chromeRole?: AXValue + name?: AXValue + description?: AXValue + value?: AXValue + properties?: AXProperty[] + parentId?: AXNodeId + childIds?: AXNodeId[] + backendDOMNodeId?: BackendNodeId + frameId?: FrameId +} + +// ══ Commands ══ + +export interface GetPartialAXTreeParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId + fetchRelatives?: boolean +} + +export interface GetPartialAXTreeResult { + nodes: AXNode[] +} + +export interface GetFullAXTreeParams { + depth?: number + frameId?: FrameId +} + +export interface GetFullAXTreeResult { + nodes: AXNode[] +} + +export interface GetRootAXNodeParams { + frameId?: FrameId +} + +export interface GetRootAXNodeResult { + node: AXNode +} + +export interface GetAXNodeAndAncestorsParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId +} + +export interface GetAXNodeAndAncestorsResult { + nodes: AXNode[] +} + +export interface GetChildAXNodesParams { + id: AXNodeId + frameId?: FrameId +} + +export interface GetChildAXNodesResult { + nodes: AXNode[] +} + +export interface QueryAXTreeParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId + accessibleName?: string + role?: string +} + +export interface QueryAXTreeResult { + nodes: AXNode[] +} + +// ══ Events ══ + +export interface LoadCompleteEvent { + root: AXNode +} + +export interface NodesUpdatedEvent { + nodes: AXNode[] +} diff --git a/packages/cdp-protocol/src/generated/domains/animation.ts b/packages/cdp-protocol/src/generated/domains/animation.ts new file mode 100644 index 000000000..33827c1b9 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/animation.ts @@ -0,0 +1,115 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId, ScrollOrientation } from './dom' +import type { RemoteObject } from './runtime' + +// ══ Types ══ + +export interface Animation { + id: string + name: string + pausedState: boolean + playState: string + playbackRate: number + startTime: number + currentTime: number + type: 'CSSTransition' | 'CSSAnimation' | 'WebAnimation' + source?: AnimationEffect + cssId?: string + viewOrScrollTimeline?: ViewOrScrollTimeline +} + +export interface ViewOrScrollTimeline { + sourceNodeId?: BackendNodeId + startOffset?: number + endOffset?: number + subjectNodeId?: BackendNodeId + axis: ScrollOrientation +} + +export interface AnimationEffect { + delay: number + endDelay: number + iterationStart: number + iterations?: number + duration: number + direction: string + fill: string + backendNodeId?: BackendNodeId + keyframesRule?: KeyframesRule + easing: string +} + +export interface KeyframesRule { + name?: string + keyframes: KeyframeStyle[] +} + +export interface KeyframeStyle { + offset: string + easing: string +} + +// ══ Commands ══ + +export interface GetCurrentTimeParams { + id: string +} + +export interface GetCurrentTimeResult { + currentTime: number +} + +export interface GetPlaybackRateResult { + playbackRate: number +} + +export interface ReleaseAnimationsParams { + animations: string[] +} + +export interface ResolveAnimationParams { + animationId: string +} + +export interface ResolveAnimationResult { + remoteObject: RemoteObject +} + +export interface SeekAnimationsParams { + animations: string[] + currentTime: number +} + +export interface SetPausedParams { + animations: string[] + paused: boolean +} + +export interface SetPlaybackRateParams { + playbackRate: number +} + +export interface SetTimingParams { + animationId: string + duration: number + delay: number +} + +// ══ Events ══ + +export interface AnimationCanceledEvent { + id: string +} + +export interface AnimationCreatedEvent { + id: string +} + +export interface AnimationStartedEvent { + animation: Animation +} + +export interface AnimationUpdatedEvent { + animation: Animation +} diff --git a/packages/cdp-protocol/src/generated/domains/audits.ts b/packages/cdp-protocol/src/generated/domains/audits.ts new file mode 100644 index 000000000..9270e499c --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/audits.ts @@ -0,0 +1,634 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId } from './dom' +import type { + ClientSecurityState, + CorsErrorStatus, + IPAddressSpace, + LoaderId, + RequestId, +} from './network' +import type { FrameId } from './page' +import type { ScriptId } from './runtime' + +// ══ Types ══ + +export interface AffectedCookie { + name: string + path: string + domain: string +} + +export interface AffectedRequest { + requestId?: RequestId + url: string +} + +export interface AffectedFrame { + frameId: FrameId +} + +export type CookieExclusionReason = + | 'ExcludeSameSiteUnspecifiedTreatedAsLax' + | 'ExcludeSameSiteNoneInsecure' + | 'ExcludeSameSiteLax' + | 'ExcludeSameSiteStrict' + | 'ExcludeInvalidSameParty' + | 'ExcludeSamePartyCrossPartyContext' + | 'ExcludeDomainNonASCII' + | 'ExcludeThirdPartyCookieBlockedInFirstPartySet' + | 'ExcludeThirdPartyPhaseout' + | 'ExcludePortMismatch' + | 'ExcludeSchemeMismatch' + +export type CookieWarningReason = + | 'WarnSameSiteUnspecifiedCrossSiteContext' + | 'WarnSameSiteNoneInsecure' + | 'WarnSameSiteUnspecifiedLaxAllowUnsafe' + | 'WarnSameSiteStrictLaxDowngradeStrict' + | 'WarnSameSiteStrictCrossDowngradeStrict' + | 'WarnSameSiteStrictCrossDowngradeLax' + | 'WarnSameSiteLaxCrossDowngradeStrict' + | 'WarnSameSiteLaxCrossDowngradeLax' + | 'WarnAttributeValueExceedsMaxSize' + | 'WarnDomainNonASCII' + | 'WarnThirdPartyPhaseout' + | 'WarnCrossSiteRedirectDowngradeChangesInclusion' + | 'WarnDeprecationTrialMetadata' + | 'WarnThirdPartyCookieHeuristic' + +export type CookieOperation = 'SetCookie' | 'ReadCookie' + +export type InsightType = 'GitHubResource' | 'GracePeriod' | 'Heuristics' + +export interface CookieIssueInsight { + type: InsightType + tableEntryUrl?: string +} + +export interface CookieIssueDetails { + cookie?: AffectedCookie + rawCookieLine?: string + cookieWarningReasons: CookieWarningReason[] + cookieExclusionReasons: CookieExclusionReason[] + operation: CookieOperation + siteForCookies?: string + cookieUrl?: string + request?: AffectedRequest + insight?: CookieIssueInsight +} + +export type MixedContentResolutionStatus = + | 'MixedContentBlocked' + | 'MixedContentAutomaticallyUpgraded' + | 'MixedContentWarning' + +export type MixedContentResourceType = + | 'AttributionSrc' + | 'Audio' + | 'Beacon' + | 'CSPReport' + | 'Download' + | 'EventSource' + | 'Favicon' + | 'Font' + | 'Form' + | 'Frame' + | 'Image' + | 'Import' + | 'JSON' + | 'Manifest' + | 'Ping' + | 'PluginData' + | 'PluginResource' + | 'Prefetch' + | 'Resource' + | 'Script' + | 'ServiceWorker' + | 'SharedWorker' + | 'SpeculationRules' + | 'Stylesheet' + | 'Track' + | 'Video' + | 'Worker' + | 'XMLHttpRequest' + | 'XSLT' + +export interface MixedContentIssueDetails { + resourceType?: MixedContentResourceType + resolutionStatus: MixedContentResolutionStatus + insecureURL: string + mainResourceURL: string + request?: AffectedRequest + frame?: AffectedFrame +} + +export type BlockedByResponseReason = + | 'CoepFrameResourceNeedsCoepHeader' + | 'CoopSandboxedIFrameCannotNavigateToCoopPage' + | 'CorpNotSameOrigin' + | 'CorpNotSameOriginAfterDefaultedToSameOriginByCoep' + | 'CorpNotSameOriginAfterDefaultedToSameOriginByDip' + | 'CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip' + | 'CorpNotSameSite' + | 'SRIMessageSignatureMismatch' + +export interface BlockedByResponseIssueDetails { + request: AffectedRequest + parentFrame?: AffectedFrame + blockedFrame?: AffectedFrame + reason: BlockedByResponseReason +} + +export type HeavyAdResolutionStatus = 'HeavyAdBlocked' | 'HeavyAdWarning' + +export type HeavyAdReason = + | 'NetworkTotalLimit' + | 'CpuTotalLimit' + | 'CpuPeakLimit' + +export interface HeavyAdIssueDetails { + resolution: HeavyAdResolutionStatus + reason: HeavyAdReason + frame: AffectedFrame +} + +export type ContentSecurityPolicyViolationType = + | 'kInlineViolation' + | 'kEvalViolation' + | 'kURLViolation' + | 'kSRIViolation' + | 'kTrustedTypesSinkViolation' + | 'kTrustedTypesPolicyViolation' + | 'kWasmEvalViolation' + +export interface SourceCodeLocation { + scriptId?: ScriptId + url: string + lineNumber: number + columnNumber: number +} + +export interface ContentSecurityPolicyIssueDetails { + blockedURL?: string + violatedDirective: string + isReportOnly: boolean + contentSecurityPolicyViolationType: ContentSecurityPolicyViolationType + frameAncestor?: AffectedFrame + sourceCodeLocation?: SourceCodeLocation + violatingNodeId?: BackendNodeId +} + +export type SharedArrayBufferIssueType = 'TransferIssue' | 'CreationIssue' + +export interface SharedArrayBufferIssueDetails { + sourceCodeLocation: SourceCodeLocation + isWarning: boolean + type: SharedArrayBufferIssueType +} + +export interface LowTextContrastIssueDetails { + violatingNodeId: BackendNodeId + violatingNodeSelector: string + contrastRatio: number + thresholdAA: number + thresholdAAA: number + fontSize: string + fontWeight: string +} + +export interface CorsIssueDetails { + corsErrorStatus: CorsErrorStatus + isWarning: boolean + request: AffectedRequest + location?: SourceCodeLocation + initiatorOrigin?: string + resourceIPAddressSpace?: IPAddressSpace + clientSecurityState?: ClientSecurityState +} + +export type AttributionReportingIssueType = + | 'PermissionPolicyDisabled' + | 'UntrustworthyReportingOrigin' + | 'InsecureContext' + | 'InvalidHeader' + | 'InvalidRegisterTriggerHeader' + | 'SourceAndTriggerHeaders' + | 'SourceIgnored' + | 'TriggerIgnored' + | 'OsSourceIgnored' + | 'OsTriggerIgnored' + | 'InvalidRegisterOsSourceHeader' + | 'InvalidRegisterOsTriggerHeader' + | 'WebAndOsHeaders' + | 'NoWebOrOsSupport' + | 'NavigationRegistrationWithoutTransientUserActivation' + | 'InvalidInfoHeader' + | 'NoRegisterSourceHeader' + | 'NoRegisterTriggerHeader' + | 'NoRegisterOsSourceHeader' + | 'NoRegisterOsTriggerHeader' + | 'NavigationRegistrationUniqueScopeAlreadySet' + +export type SharedDictionaryError = + | 'UseErrorCrossOriginNoCorsRequest' + | 'UseErrorDictionaryLoadFailure' + | 'UseErrorMatchingDictionaryNotUsed' + | 'UseErrorUnexpectedContentDictionaryHeader' + | 'WriteErrorCossOriginNoCorsRequest' + | 'WriteErrorDisallowedBySettings' + | 'WriteErrorExpiredResponse' + | 'WriteErrorFeatureDisabled' + | 'WriteErrorInsufficientResources' + | 'WriteErrorInvalidMatchField' + | 'WriteErrorInvalidStructuredHeader' + | 'WriteErrorInvalidTTLField' + | 'WriteErrorNavigationRequest' + | 'WriteErrorNoMatchField' + | 'WriteErrorNonIntegerTTLField' + | 'WriteErrorNonListMatchDestField' + | 'WriteErrorNonSecureContext' + | 'WriteErrorNonStringIdField' + | 'WriteErrorNonStringInMatchDestList' + | 'WriteErrorNonStringMatchField' + | 'WriteErrorNonTokenTypeField' + | 'WriteErrorRequestAborted' + | 'WriteErrorShuttingDown' + | 'WriteErrorTooLongIdField' + | 'WriteErrorUnsupportedType' + +export type SRIMessageSignatureError = + | 'MissingSignatureHeader' + | 'MissingSignatureInputHeader' + | 'InvalidSignatureHeader' + | 'InvalidSignatureInputHeader' + | 'SignatureHeaderValueIsNotByteSequence' + | 'SignatureHeaderValueIsParameterized' + | 'SignatureHeaderValueIsIncorrectLength' + | 'SignatureInputHeaderMissingLabel' + | 'SignatureInputHeaderValueNotInnerList' + | 'SignatureInputHeaderValueMissingComponents' + | 'SignatureInputHeaderInvalidComponentType' + | 'SignatureInputHeaderInvalidComponentName' + | 'SignatureInputHeaderInvalidHeaderComponentParameter' + | 'SignatureInputHeaderInvalidDerivedComponentParameter' + | 'SignatureInputHeaderKeyIdLength' + | 'SignatureInputHeaderInvalidParameter' + | 'SignatureInputHeaderMissingRequiredParameters' + | 'ValidationFailedSignatureExpired' + | 'ValidationFailedInvalidLength' + | 'ValidationFailedSignatureMismatch' + | 'ValidationFailedIntegrityMismatch' + +export type UnencodedDigestError = + | 'MalformedDictionary' + | 'UnknownAlgorithm' + | 'IncorrectDigestType' + | 'IncorrectDigestLength' + +export interface AttributionReportingIssueDetails { + violationType: AttributionReportingIssueType + request?: AffectedRequest + violatingNodeId?: BackendNodeId + invalidParameter?: string +} + +export interface QuirksModeIssueDetails { + isLimitedQuirksMode: boolean + documentNodeId: BackendNodeId + url: string + frameId: FrameId + loaderId: LoaderId +} + +export interface NavigatorUserAgentIssueDetails { + url: string + location?: SourceCodeLocation +} + +export interface SharedDictionaryIssueDetails { + sharedDictionaryError: SharedDictionaryError + request: AffectedRequest +} + +export interface SRIMessageSignatureIssueDetails { + error: SRIMessageSignatureError + signatureBase: string + integrityAssertions: string[] + request: AffectedRequest +} + +export interface UnencodedDigestIssueDetails { + error: UnencodedDigestError + request: AffectedRequest +} + +export type GenericIssueErrorType = + | 'FormLabelForNameError' + | 'FormDuplicateIdForInputError' + | 'FormInputWithNoLabelError' + | 'FormAutocompleteAttributeEmptyError' + | 'FormEmptyIdAndNameAttributesForInputError' + | 'FormAriaLabelledByToNonExistingIdError' + | 'FormInputAssignedAutocompleteValueToIdOrNameAttributeError' + | 'FormLabelHasNeitherForNorNestedInputError' + | 'FormLabelForMatchesNonExistingIdError' + | 'FormInputHasWrongButWellIntendedAutocompleteValueError' + | 'ResponseWasBlockedByORB' + | 'NavigationEntryMarkedSkippable' + | 'AutofillAndManualTextPolicyControlledFeaturesInfo' + | 'AutofillPolicyControlledFeatureInfo' + | 'ManualTextPolicyControlledFeatureInfo' + +export interface GenericIssueDetails { + errorType: GenericIssueErrorType + frameId?: FrameId + violatingNodeId?: BackendNodeId + violatingNodeAttribute?: string + request?: AffectedRequest +} + +export interface DeprecationIssueDetails { + affectedFrame?: AffectedFrame + sourceCodeLocation: SourceCodeLocation + type: string +} + +export interface BounceTrackingIssueDetails { + trackingSites: string[] +} + +export interface CookieDeprecationMetadataIssueDetails { + allowedSites: string[] + optOutPercentage: number + isOptOutTopLevel: boolean + operation: CookieOperation +} + +export type ClientHintIssueReason = + | 'MetaTagAllowListInvalidOrigin' + | 'MetaTagModifiedHTML' + +export interface FederatedAuthRequestIssueDetails { + federatedAuthRequestIssueReason: FederatedAuthRequestIssueReason +} + +export type FederatedAuthRequestIssueReason = + | 'ShouldEmbargo' + | 'TooManyRequests' + | 'WellKnownHttpNotFound' + | 'WellKnownNoResponse' + | 'WellKnownInvalidResponse' + | 'WellKnownListEmpty' + | 'WellKnownInvalidContentType' + | 'ConfigNotInWellKnown' + | 'WellKnownTooBig' + | 'ConfigHttpNotFound' + | 'ConfigNoResponse' + | 'ConfigInvalidResponse' + | 'ConfigInvalidContentType' + | 'ClientMetadataHttpNotFound' + | 'ClientMetadataNoResponse' + | 'ClientMetadataInvalidResponse' + | 'ClientMetadataInvalidContentType' + | 'IdpNotPotentiallyTrustworthy' + | 'DisabledInSettings' + | 'DisabledInFlags' + | 'ErrorFetchingSignin' + | 'InvalidSigninResponse' + | 'AccountsHttpNotFound' + | 'AccountsNoResponse' + | 'AccountsInvalidResponse' + | 'AccountsListEmpty' + | 'AccountsInvalidContentType' + | 'IdTokenHttpNotFound' + | 'IdTokenNoResponse' + | 'IdTokenInvalidResponse' + | 'IdTokenIdpErrorResponse' + | 'IdTokenCrossSiteIdpErrorResponse' + | 'IdTokenInvalidRequest' + | 'IdTokenInvalidContentType' + | 'ErrorIdToken' + | 'Canceled' + | 'RpPageNotVisible' + | 'SilentMediationFailure' + | 'ThirdPartyCookiesBlocked' + | 'NotSignedInWithIdp' + | 'MissingTransientUserActivation' + | 'ReplacedByActiveMode' + | 'InvalidFieldsSpecified' + | 'RelyingPartyOriginIsOpaque' + | 'TypeNotMatching' + | 'UiDismissedNoEmbargo' + | 'CorsError' + | 'SuppressedBySegmentationPlatform' + +export interface FederatedAuthUserInfoRequestIssueDetails { + federatedAuthUserInfoRequestIssueReason: FederatedAuthUserInfoRequestIssueReason +} + +export type FederatedAuthUserInfoRequestIssueReason = + | 'NotSameOrigin' + | 'NotIframe' + | 'NotPotentiallyTrustworthy' + | 'NoApiPermission' + | 'NotSignedInWithIdp' + | 'NoAccountSharingPermission' + | 'InvalidConfigOrWellKnown' + | 'InvalidAccountsResponse' + | 'NoReturningUserFromFetchedAccounts' + +export interface ClientHintIssueDetails { + sourceCodeLocation: SourceCodeLocation + clientHintIssueReason: ClientHintIssueReason +} + +export interface FailedRequestInfo { + url: string + failureMessage: string + requestId?: RequestId +} + +export type PartitioningBlobURLInfo = + | 'BlockedCrossPartitionFetching' + | 'EnforceNoopenerForNavigation' + +export interface PartitioningBlobURLIssueDetails { + url: string + partitioningBlobURLInfo: PartitioningBlobURLInfo +} + +export type ElementAccessibilityIssueReason = + | 'DisallowedSelectChild' + | 'DisallowedOptGroupChild' + | 'NonPhrasingContentOptionChild' + | 'InteractiveContentOptionChild' + | 'InteractiveContentLegendChild' + | 'InteractiveContentSummaryDescendant' + +export interface ElementAccessibilityIssueDetails { + nodeId: BackendNodeId + elementAccessibilityIssueReason: ElementAccessibilityIssueReason + hasDisallowedAttributes: boolean +} + +export type StyleSheetLoadingIssueReason = 'LateImportRule' | 'RequestFailed' + +export interface StylesheetLoadingIssueDetails { + sourceCodeLocation: SourceCodeLocation + styleSheetLoadingIssueReason: StyleSheetLoadingIssueReason + failedRequestInfo?: FailedRequestInfo +} + +export type PropertyRuleIssueReason = + | 'InvalidSyntax' + | 'InvalidInitialValue' + | 'InvalidInherits' + | 'InvalidName' + +export interface PropertyRuleIssueDetails { + sourceCodeLocation: SourceCodeLocation + propertyRuleIssueReason: PropertyRuleIssueReason + propertyValue?: string +} + +export type UserReidentificationIssueType = + | 'BlockedFrameNavigation' + | 'BlockedSubresource' + | 'NoisedCanvasReadback' + +export interface UserReidentificationIssueDetails { + type: UserReidentificationIssueType + request?: AffectedRequest + sourceCodeLocation?: SourceCodeLocation +} + +export type PermissionElementIssueType = + | 'InvalidType' + | 'FencedFrameDisallowed' + | 'CspFrameAncestorsMissing' + | 'PermissionsPolicyBlocked' + | 'PaddingRightUnsupported' + | 'PaddingBottomUnsupported' + | 'InsetBoxShadowUnsupported' + | 'RequestInProgress' + | 'UntrustedEvent' + | 'RegistrationFailed' + | 'TypeNotSupported' + | 'InvalidTypeActivation' + | 'SecurityChecksFailed' + | 'ActivationDisabled' + | 'GeolocationDeprecated' + | 'InvalidDisplayStyle' + | 'NonOpaqueColor' + | 'LowContrast' + | 'FontSizeTooSmall' + | 'FontSizeTooLarge' + | 'InvalidSizeValue' + +export interface PermissionElementIssueDetails { + issueType: PermissionElementIssueType + type?: string + nodeId?: BackendNodeId + isWarning?: boolean + permissionName?: string + occluderNodeInfo?: string + occluderParentNodeInfo?: string + disableReason?: string +} + +export type InspectorIssueCode = + | 'CookieIssue' + | 'MixedContentIssue' + | 'BlockedByResponseIssue' + | 'HeavyAdIssue' + | 'ContentSecurityPolicyIssue' + | 'SharedArrayBufferIssue' + | 'LowTextContrastIssue' + | 'CorsIssue' + | 'AttributionReportingIssue' + | 'QuirksModeIssue' + | 'PartitioningBlobURLIssue' + | 'NavigatorUserAgentIssue' + | 'GenericIssue' + | 'DeprecationIssue' + | 'ClientHintIssue' + | 'FederatedAuthRequestIssue' + | 'BounceTrackingIssue' + | 'CookieDeprecationMetadataIssue' + | 'StylesheetLoadingIssue' + | 'FederatedAuthUserInfoRequestIssue' + | 'PropertyRuleIssue' + | 'SharedDictionaryIssue' + | 'ElementAccessibilityIssue' + | 'SRIMessageSignatureIssue' + | 'UnencodedDigestIssue' + | 'UserReidentificationIssue' + | 'PermissionElementIssue' + +export interface InspectorIssueDetails { + cookieIssueDetails?: CookieIssueDetails + mixedContentIssueDetails?: MixedContentIssueDetails + blockedByResponseIssueDetails?: BlockedByResponseIssueDetails + heavyAdIssueDetails?: HeavyAdIssueDetails + contentSecurityPolicyIssueDetails?: ContentSecurityPolicyIssueDetails + sharedArrayBufferIssueDetails?: SharedArrayBufferIssueDetails + lowTextContrastIssueDetails?: LowTextContrastIssueDetails + corsIssueDetails?: CorsIssueDetails + attributionReportingIssueDetails?: AttributionReportingIssueDetails + quirksModeIssueDetails?: QuirksModeIssueDetails + partitioningBlobURLIssueDetails?: PartitioningBlobURLIssueDetails + navigatorUserAgentIssueDetails?: NavigatorUserAgentIssueDetails + genericIssueDetails?: GenericIssueDetails + deprecationIssueDetails?: DeprecationIssueDetails + clientHintIssueDetails?: ClientHintIssueDetails + federatedAuthRequestIssueDetails?: FederatedAuthRequestIssueDetails + bounceTrackingIssueDetails?: BounceTrackingIssueDetails + cookieDeprecationMetadataIssueDetails?: CookieDeprecationMetadataIssueDetails + stylesheetLoadingIssueDetails?: StylesheetLoadingIssueDetails + propertyRuleIssueDetails?: PropertyRuleIssueDetails + federatedAuthUserInfoRequestIssueDetails?: FederatedAuthUserInfoRequestIssueDetails + sharedDictionaryIssueDetails?: SharedDictionaryIssueDetails + elementAccessibilityIssueDetails?: ElementAccessibilityIssueDetails + sriMessageSignatureIssueDetails?: SRIMessageSignatureIssueDetails + unencodedDigestIssueDetails?: UnencodedDigestIssueDetails + userReidentificationIssueDetails?: UserReidentificationIssueDetails + permissionElementIssueDetails?: PermissionElementIssueDetails +} + +export type IssueId = string + +export interface InspectorIssue { + code: InspectorIssueCode + details: InspectorIssueDetails + issueId?: IssueId +} + +// ══ Commands ══ + +export interface GetEncodedResponseParams { + requestId: RequestId + encoding: 'webp' | 'jpeg' | 'png' + quality?: number + sizeOnly?: boolean +} + +export interface GetEncodedResponseResult { + body?: string + originalSize: number + encodedSize: number +} + +export interface CheckContrastParams { + reportAAA?: boolean +} + +export interface CheckFormsIssuesResult { + formIssues: GenericIssueDetails[] +} + +// ══ Events ══ + +export interface IssueAddedEvent { + issue: InspectorIssue +} diff --git a/packages/cdp-protocol/src/generated/domains/autofill.ts b/packages/cdp-protocol/src/generated/domains/autofill.ts new file mode 100644 index 000000000..4dd75de5f --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/autofill.ts @@ -0,0 +1,64 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId } from './dom' +import type { FrameId } from './page' + +// ══ Types ══ + +export interface CreditCard { + number: string + name: string + expiryMonth: string + expiryYear: string + cvc: string +} + +export interface AddressField { + name: string + value: string +} + +export interface AddressFields { + fields: AddressField[] +} + +export interface Address { + fields: AddressField[] +} + +export interface AddressUI { + addressFields: AddressFields[] +} + +export type FillingStrategy = 'autocompleteAttribute' | 'autofillInferred' + +export interface FilledField { + htmlType: string + id: string + name: string + value: string + autofillType: string + fillingStrategy: FillingStrategy + frameId: FrameId + fieldId: BackendNodeId +} + +// ══ Commands ══ + +export interface TriggerParams { + fieldId: BackendNodeId + frameId?: FrameId + card?: CreditCard + address?: Address +} + +export interface SetAddressesParams { + addresses: Address[] +} + +// ══ Events ══ + +export interface AddressFormFilledEvent { + filledFields: FilledField[] + addressUi: AddressUI +} diff --git a/packages/cdp-protocol/src/generated/domains/background-service.ts b/packages/cdp-protocol/src/generated/domains/background-service.ts new file mode 100644 index 000000000..c364ddf3b --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/background-service.ts @@ -0,0 +1,60 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { TimeSinceEpoch } from './network' +import type { RegistrationID } from './service-worker' + +// ══ Types ══ + +export type ServiceName = + | 'backgroundFetch' + | 'backgroundSync' + | 'pushMessaging' + | 'notifications' + | 'paymentHandler' + | 'periodicBackgroundSync' + +export interface EventMetadata { + key: string + value: string +} + +export interface BackgroundServiceEvent { + timestamp: TimeSinceEpoch + origin: string + serviceWorkerRegistrationId: RegistrationID + service: ServiceName + eventName: string + instanceId: string + eventMetadata: EventMetadata[] + storageKey: string +} + +// ══ Commands ══ + +export interface StartObservingParams { + service: ServiceName +} + +export interface StopObservingParams { + service: ServiceName +} + +export interface SetRecordingParams { + shouldRecord: boolean + service: ServiceName +} + +export interface ClearEventsParams { + service: ServiceName +} + +// ══ Events ══ + +export interface RecordingStateChangedEvent { + isRecording: boolean + service: ServiceName +} + +export interface BackgroundServiceEventReceivedEvent { + backgroundServiceEvent: BackgroundServiceEvent +} diff --git a/packages/cdp-protocol/src/generated/domains/bluetooth-emulation.ts b/packages/cdp-protocol/src/generated/domains/bluetooth-emulation.ts new file mode 100644 index 000000000..fc59a9d18 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/bluetooth-emulation.ts @@ -0,0 +1,156 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type CentralState = 'absent' | 'powered-off' | 'powered-on' + +export type GATTOperationType = 'connection' | 'discovery' + +export type CharacteristicWriteType = + | 'write-default-deprecated' + | 'write-with-response' + | 'write-without-response' + +export type CharacteristicOperationType = + | 'read' + | 'write' + | 'subscribe-to-notifications' + | 'unsubscribe-from-notifications' + +export type DescriptorOperationType = 'read' | 'write' + +export interface ManufacturerData { + key: number + data: string +} + +export interface ScanRecord { + name?: string + uuids?: string[] + appearance?: number + txPower?: number + manufacturerData?: ManufacturerData[] +} + +export interface ScanEntry { + deviceAddress: string + rssi: number + scanRecord: ScanRecord +} + +export interface CharacteristicProperties { + broadcast?: boolean + read?: boolean + writeWithoutResponse?: boolean + write?: boolean + notify?: boolean + indicate?: boolean + authenticatedSignedWrites?: boolean + extendedProperties?: boolean +} + +// ══ Commands ══ + +export interface EnableParams { + state: CentralState + leSupported: boolean +} + +export interface SetSimulatedCentralStateParams { + state: CentralState +} + +export interface SimulatePreconnectedPeripheralParams { + address: string + name: string + manufacturerData: ManufacturerData[] + knownServiceUuids: string[] +} + +export interface SimulateAdvertisementParams { + entry: ScanEntry +} + +export interface SimulateGATTOperationResponseParams { + address: string + type: GATTOperationType + code: number +} + +export interface SimulateCharacteristicOperationResponseParams { + characteristicId: string + type: CharacteristicOperationType + code: number + data?: string +} + +export interface SimulateDescriptorOperationResponseParams { + descriptorId: string + type: DescriptorOperationType + code: number + data?: string +} + +export interface AddServiceParams { + address: string + serviceUuid: string +} + +export interface AddServiceResult { + serviceId: string +} + +export interface RemoveServiceParams { + serviceId: string +} + +export interface AddCharacteristicParams { + serviceId: string + characteristicUuid: string + properties: CharacteristicProperties +} + +export interface AddCharacteristicResult { + characteristicId: string +} + +export interface RemoveCharacteristicParams { + characteristicId: string +} + +export interface AddDescriptorParams { + characteristicId: string + descriptorUuid: string +} + +export interface AddDescriptorResult { + descriptorId: string +} + +export interface RemoveDescriptorParams { + descriptorId: string +} + +export interface SimulateGATTDisconnectionParams { + address: string +} + +// ══ Events ══ + +export interface GattOperationReceivedEvent { + address: string + type: GATTOperationType +} + +export interface CharacteristicOperationReceivedEvent { + characteristicId: string + type: CharacteristicOperationType + data?: string + writeType?: CharacteristicWriteType +} + +export interface DescriptorOperationReceivedEvent { + descriptorId: string + type: DescriptorOperationType + data?: string +} diff --git a/packages/cdp-protocol/src/generated/domains/bookmarks.ts b/packages/cdp-protocol/src/generated/domains/bookmarks.ts new file mode 100644 index 000000000..09d40d913 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/bookmarks.ts @@ -0,0 +1,72 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type BookmarkID = string + +export type BookmarkNodeType = 'url' | 'folder' + +export interface BookmarkNode { + id: BookmarkID + parentId?: BookmarkID + index?: number + title: string + url?: string + type: BookmarkNodeType + dateAdded: number + dateLastUsed?: number +} + +// ══ Commands ══ + +export interface GetBookmarksParams { + folderId?: BookmarkID +} + +export interface GetBookmarksResult { + nodes: BookmarkNode[] +} + +export interface SearchBookmarksParams { + query: string + maxResults?: number +} + +export interface SearchBookmarksResult { + results: BookmarkNode[] +} + +export interface CreateBookmarkParams { + title: string + url?: string + parentId?: BookmarkID + index?: number +} + +export interface CreateBookmarkResult { + node: BookmarkNode +} + +export interface UpdateBookmarkParams { + id: BookmarkID + title?: string + url?: string +} + +export interface UpdateBookmarkResult { + node: BookmarkNode +} + +export interface MoveBookmarkParams { + id: BookmarkID + parentId?: BookmarkID + index?: number +} + +export interface MoveBookmarkResult { + node: BookmarkNode +} + +export interface RemoveBookmarkParams { + id: BookmarkID +} diff --git a/packages/cdp-protocol/src/generated/domains/browser.ts b/packages/cdp-protocol/src/generated/domains/browser.ts new file mode 100644 index 000000000..9725ac789 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/browser.ts @@ -0,0 +1,482 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { FrameId } from './page' +import type { TargetID } from './target' + +// ══ Types ══ + +export type BrowserContextID = string + +export type WindowID = number + +export type TabID = number + +export type WindowType = + | 'normal' + | 'popup' + | 'app' + | 'devtools' + | 'app_popup' + | 'picture_in_picture' + +export type WindowState = 'normal' | 'minimized' | 'maximized' | 'fullscreen' + +export interface Bounds { + left?: number + top?: number + width?: number + height?: number + windowState?: WindowState +} + +export interface WindowInfo { + windowId: WindowID + windowType: WindowType + bounds: Bounds + isActive: boolean + isVisible: boolean + tabCount: number + activeTabId?: TabID + browserContextId?: BrowserContextID +} + +export interface TabInfo { + tabId: TabID + targetId: TargetID + url: string + title: string + isActive: boolean + isLoading: boolean + loadProgress: number + isPinned: boolean + isHidden: boolean + windowId?: WindowID + index?: number + browserContextId?: BrowserContextID + groupId?: TabGroupID +} + +export type TabGroupID = string + +export interface TabGroupInfo { + groupId: TabGroupID + windowId: WindowID + title: string + color: string + collapsed: boolean + tabIds: TabID[] +} + +export type PermissionType = + | 'ar' + | 'audioCapture' + | 'automaticFullscreen' + | 'backgroundFetch' + | 'backgroundSync' + | 'cameraPanTiltZoom' + | 'capturedSurfaceControl' + | 'clipboardReadWrite' + | 'clipboardSanitizedWrite' + | 'displayCapture' + | 'durableStorage' + | 'geolocation' + | 'handTracking' + | 'idleDetection' + | 'keyboardLock' + | 'localFonts' + | 'localNetwork' + | 'localNetworkAccess' + | 'loopbackNetwork' + | 'midi' + | 'midiSysex' + | 'nfc' + | 'notifications' + | 'paymentHandler' + | 'periodicBackgroundSync' + | 'pointerLock' + | 'protectedMediaIdentifier' + | 'sensors' + | 'smartCard' + | 'speakerSelection' + | 'storageAccess' + | 'topLevelStorageAccess' + | 'videoCapture' + | 'vr' + | 'wakeLockScreen' + | 'wakeLockSystem' + | 'webAppInstallation' + | 'webPrinting' + | 'windowManagement' + +export type PermissionSetting = 'granted' | 'denied' | 'prompt' + +export interface PermissionDescriptor { + name: string + sysex?: boolean + userVisibleOnly?: boolean + allowWithoutSanitization?: boolean + allowWithoutGesture?: boolean + panTiltZoom?: boolean +} + +export type BrowserCommandId = 'openTabSearch' | 'closeTabSearch' | 'openGlic' + +export interface Bucket { + low: number + high: number + count: number +} + +export interface Histogram { + name: string + sum: number + count: number + buckets: Bucket[] +} + +export type PrivacySandboxAPI = 'BiddingAndAuctionServices' | 'TrustedKeyValue' + +// ══ Commands ══ + +export interface GetWindowsResult { + windows: WindowInfo[] +} + +export interface GetActiveWindowResult { + window?: WindowInfo +} + +export interface CreateWindowParams { + url?: string + bounds?: Bounds + windowType?: WindowType + hidden?: boolean + browserContextId?: BrowserContextID +} + +export interface CreateWindowResult { + window: WindowInfo +} + +export interface CloseWindowParams { + windowId: WindowID +} + +export interface ActivateWindowParams { + windowId: WindowID +} + +export interface ShowWindowParams { + windowId: WindowID +} + +export interface HideWindowParams { + windowId: WindowID +} + +export interface GetTabsParams { + windowId?: WindowID + includeHidden?: boolean +} + +export interface GetTabsResult { + tabs: TabInfo[] +} + +export interface GetActiveTabParams { + windowId?: WindowID +} + +export interface GetActiveTabResult { + tab?: TabInfo +} + +export interface GetTabInfoParams { + targetId?: TargetID + tabId?: TabID +} + +export interface GetTabInfoResult { + tab: TabInfo +} + +export interface CreateTabParams { + url?: string + windowId?: WindowID + index?: number + background?: boolean + pinned?: boolean + hidden?: boolean + browserContextId?: BrowserContextID +} + +export interface CreateTabResult { + tab: TabInfo +} + +export interface CloseTabParams { + targetId?: TargetID + tabId?: TabID +} + +export interface ActivateTabParams { + targetId?: TargetID + tabId?: TabID +} + +export interface MoveTabParams { + targetId?: TargetID + tabId?: TabID + windowId?: WindowID + index?: number +} + +export interface MoveTabResult { + tab: TabInfo +} + +export interface DuplicateTabParams { + targetId?: TargetID + tabId?: TabID +} + +export interface DuplicateTabResult { + tab: TabInfo +} + +export interface PinTabParams { + targetId?: TargetID + tabId?: TabID +} + +export interface PinTabResult { + tab: TabInfo +} + +export interface UnpinTabParams { + targetId?: TargetID + tabId?: TabID +} + +export interface UnpinTabResult { + tab: TabInfo +} + +export interface ShowTabParams { + targetId?: TargetID + tabId?: TabID + windowId?: WindowID + index?: number + activate?: boolean +} + +export interface ShowTabResult { + tab: TabInfo +} + +export interface HideTabParams { + targetId?: TargetID + tabId?: TabID +} + +export interface HideTabResult { + tab: TabInfo +} + +export interface GetTabGroupsParams { + windowId?: WindowID +} + +export interface GetTabGroupsResult { + groups: TabGroupInfo[] +} + +export interface CreateTabGroupParams { + tabIds: TabID[] + title?: string +} + +export interface CreateTabGroupResult { + group: TabGroupInfo +} + +export interface UpdateTabGroupParams { + groupId: TabGroupID + title?: string + color?: string + collapsed?: boolean +} + +export interface UpdateTabGroupResult { + group: TabGroupInfo +} + +export interface CloseTabGroupParams { + groupId: TabGroupID +} + +export interface AddTabsToGroupParams { + groupId: TabGroupID + tabIds: TabID[] +} + +export interface AddTabsToGroupResult { + group: TabGroupInfo +} + +export interface RemoveTabsFromGroupParams { + tabIds: TabID[] +} + +export interface MoveTabGroupParams { + groupId: TabGroupID + windowId?: WindowID + index?: number +} + +export interface MoveTabGroupResult { + group: TabGroupInfo +} + +export interface SetPermissionParams { + permission: PermissionDescriptor + setting: PermissionSetting + origin?: string + embeddedOrigin?: string + browserContextId?: BrowserContextID +} + +export interface GrantPermissionsParams { + permissions: PermissionType[] + origin?: string + browserContextId?: BrowserContextID +} + +export interface ResetPermissionsParams { + browserContextId?: BrowserContextID +} + +export interface SetDownloadBehaviorParams { + behavior: 'deny' | 'allow' | 'allowAndName' | 'default' + browserContextId?: BrowserContextID + downloadPath?: string + eventsEnabled?: boolean +} + +export interface CancelDownloadParams { + guid: string + browserContextId?: BrowserContextID +} + +export interface GetVersionResult { + protocolVersion: string + product: string + revision: string + userAgent: string + jsVersion: string +} + +export interface GetBrowserCommandLineResult { + arguments: string[] +} + +export interface GetHistogramsParams { + query?: string + delta?: boolean +} + +export interface GetHistogramsResult { + histograms: Histogram[] +} + +export interface GetHistogramParams { + name: string + delta?: boolean +} + +export interface GetHistogramResult { + histogram: Histogram +} + +export interface GetWindowBoundsParams { + windowId: WindowID +} + +export interface GetWindowBoundsResult { + bounds: Bounds +} + +export interface GetWindowForTargetParams { + targetId?: TargetID +} + +export interface GetWindowForTargetResult { + windowId: WindowID + bounds: Bounds +} + +export interface GetTabForTargetParams { + targetId?: TargetID +} + +export interface GetTabForTargetResult { + tabId: TabID + windowId: WindowID +} + +export interface GetTargetForTabParams { + tabId: TabID +} + +export interface GetTargetForTabResult { + targetId: TargetID + windowId: WindowID +} + +export interface SetWindowBoundsParams { + windowId: WindowID + bounds: Bounds +} + +export interface SetContentsSizeParams { + windowId: WindowID + width?: number + height?: number +} + +export interface SetDockTileParams { + badgeLabel?: string + image?: string +} + +export interface ExecuteBrowserCommandParams { + commandId: BrowserCommandId +} + +export interface AddPrivacySandboxEnrollmentOverrideParams { + url: string +} + +export interface AddPrivacySandboxCoordinatorKeyConfigParams { + api: PrivacySandboxAPI + coordinatorOrigin: string + keyConfig: string + browserContextId?: BrowserContextID +} + +// ══ Events ══ + +export interface DownloadWillBeginEvent { + frameId: FrameId + guid: string + url: string + suggestedFilename: string +} + +export interface DownloadProgressEvent { + guid: string + totalBytes: number + receivedBytes: number + state: 'inProgress' | 'completed' | 'canceled' + filePath?: string +} diff --git a/packages/cdp-protocol/src/generated/domains/cache-storage.ts b/packages/cdp-protocol/src/generated/domains/cache-storage.ts new file mode 100644 index 000000000..ee4eac8f1 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/cache-storage.ts @@ -0,0 +1,86 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { StorageBucket } from './storage' + +// ══ Types ══ + +export type CacheId = string + +export type CachedResponseType = + | 'basic' + | 'cors' + | 'default' + | 'error' + | 'opaqueResponse' + | 'opaqueRedirect' + +export interface DataEntry { + requestURL: string + requestMethod: string + requestHeaders: Header[] + responseTime: number + responseStatus: number + responseStatusText: string + responseType: CachedResponseType + responseHeaders: Header[] +} + +export interface Cache { + cacheId: CacheId + securityOrigin: string + storageKey: string + storageBucket?: StorageBucket + cacheName: string +} + +export interface Header { + name: string + value: string +} + +export interface CachedResponse { + body: string +} + +// ══ Commands ══ + +export interface DeleteCacheParams { + cacheId: CacheId +} + +export interface DeleteEntryParams { + cacheId: CacheId + request: string +} + +export interface RequestCacheNamesParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket +} + +export interface RequestCacheNamesResult { + caches: Cache[] +} + +export interface RequestCachedResponseParams { + cacheId: CacheId + requestURL: string + requestHeaders: Header[] +} + +export interface RequestCachedResponseResult { + response: CachedResponse +} + +export interface RequestEntriesParams { + cacheId: CacheId + skipCount?: number + pageSize?: number + pathFilter?: string +} + +export interface RequestEntriesResult { + cacheDataEntries: DataEntry[] + returnCount: number +} diff --git a/packages/cdp-protocol/src/generated/domains/cast.ts b/packages/cdp-protocol/src/generated/domains/cast.ts new file mode 100644 index 000000000..3eae09daa --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/cast.ts @@ -0,0 +1,41 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export interface Sink { + name: string + id: string + session?: string +} + +// ══ Commands ══ + +export interface EnableParams { + presentationUrl?: string +} + +export interface SetSinkToUseParams { + sinkName: string +} + +export interface StartDesktopMirroringParams { + sinkName: string +} + +export interface StartTabMirroringParams { + sinkName: string +} + +export interface StopCastingParams { + sinkName: string +} + +// ══ Events ══ + +export interface SinksUpdatedEvent { + sinks: Sink[] +} + +export interface IssueUpdatedEvent { + issueMessage: string +} diff --git a/packages/cdp-protocol/src/generated/domains/console.ts b/packages/cdp-protocol/src/generated/domains/console.ts new file mode 100644 index 000000000..9bccf4e86 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/console.ts @@ -0,0 +1,31 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export interface ConsoleMessage { + source: + | 'xml' + | 'javascript' + | 'network' + | 'console-api' + | 'storage' + | 'appcache' + | 'rendering' + | 'security' + | 'other' + | 'deprecation' + | 'worker' + level: 'log' | 'warning' | 'error' | 'debug' | 'info' + text: string + url?: string + line?: number + column?: number +} + +// ══ Commands ══ + +// ══ Events ══ + +export interface MessageAddedEvent { + message: ConsoleMessage +} diff --git a/packages/cdp-protocol/src/generated/domains/css.ts b/packages/cdp-protocol/src/generated/domains/css.ts new file mode 100644 index 000000000..c399ee3e1 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/css.ts @@ -0,0 +1,641 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + BackendNodeId, + LogicalAxes, + NodeId, + PhysicalAxes, + PseudoType, + StyleSheetId, +} from './dom' +import type { FrameId } from './page' + +// ══ Types ══ + +export type StyleSheetOrigin = + | 'injected' + | 'user-agent' + | 'inspector' + | 'regular' + +export interface PseudoElementMatches { + pseudoType: PseudoType + pseudoIdentifier?: string + matches: RuleMatch[] +} + +export interface CSSAnimationStyle { + name?: string + style: CSSStyle +} + +export interface InheritedStyleEntry { + inlineStyle?: CSSStyle + matchedCSSRules: RuleMatch[] +} + +export interface InheritedAnimatedStyleEntry { + animationStyles?: CSSAnimationStyle[] + transitionsStyle?: CSSStyle +} + +export interface InheritedPseudoElementMatches { + pseudoElements: PseudoElementMatches[] +} + +export interface RuleMatch { + rule: CSSRule + matchingSelectors: number[] +} + +export interface Value { + text: string + range?: SourceRange + specificity?: Specificity +} + +export interface Specificity { + a: number + b: number + c: number +} + +export interface SelectorList { + selectors: Value[] + text: string +} + +export interface CSSStyleSheetHeader { + styleSheetId: StyleSheetId + frameId: FrameId + sourceURL: string + sourceMapURL?: string + origin: StyleSheetOrigin + title: string + ownerNode?: BackendNodeId + disabled: boolean + hasSourceURL?: boolean + isInline: boolean + isMutable: boolean + isConstructed: boolean + startLine: number + startColumn: number + length: number + endLine: number + endColumn: number + loadingFailed?: boolean +} + +export interface CSSRule { + styleSheetId?: StyleSheetId + selectorList: SelectorList + nestingSelectors?: string[] + origin: StyleSheetOrigin + style: CSSStyle + originTreeScopeNodeId?: BackendNodeId + media?: CSSMedia[] + containerQueries?: CSSContainerQuery[] + supports?: CSSSupports[] + layers?: CSSLayer[] + scopes?: CSSScope[] + ruleTypes?: CSSRuleType[] + startingStyles?: CSSStartingStyle[] +} + +export type CSSRuleType = + | 'MediaRule' + | 'SupportsRule' + | 'ContainerRule' + | 'LayerRule' + | 'ScopeRule' + | 'StyleRule' + | 'StartingStyleRule' + +export interface RuleUsage { + styleSheetId: StyleSheetId + startOffset: number + endOffset: number + used: boolean +} + +export interface SourceRange { + startLine: number + startColumn: number + endLine: number + endColumn: number +} + +export interface ShorthandEntry { + name: string + value: string + important?: boolean +} + +export interface CSSComputedStyleProperty { + name: string + value: string +} + +export interface ComputedStyleExtraFields { + isAppearanceBase: boolean +} + +export interface CSSStyle { + styleSheetId?: StyleSheetId + cssProperties: CSSProperty[] + shorthandEntries: ShorthandEntry[] + cssText?: string + range?: SourceRange +} + +export interface CSSProperty { + name: string + value: string + important?: boolean + implicit?: boolean + text?: string + parsedOk?: boolean + disabled?: boolean + range?: SourceRange + longhandProperties?: CSSProperty[] +} + +export interface CSSMedia { + text: string + source: 'mediaRule' | 'importRule' | 'linkedSheet' | 'inlineSheet' + sourceURL?: string + range?: SourceRange + styleSheetId?: StyleSheetId + mediaList?: MediaQuery[] +} + +export interface MediaQuery { + expressions: MediaQueryExpression[] + active: boolean +} + +export interface MediaQueryExpression { + value: number + unit: string + feature: string + valueRange?: SourceRange + computedLength?: number +} + +export interface CSSContainerQuery { + text: string + range?: SourceRange + styleSheetId?: StyleSheetId + name?: string + physicalAxes?: PhysicalAxes + logicalAxes?: LogicalAxes + queriesScrollState?: boolean + queriesAnchored?: boolean +} + +export interface CSSSupports { + text: string + active: boolean + range?: SourceRange + styleSheetId?: StyleSheetId +} + +export interface CSSScope { + text: string + range?: SourceRange + styleSheetId?: StyleSheetId +} + +export interface CSSLayer { + text: string + range?: SourceRange + styleSheetId?: StyleSheetId +} + +export interface CSSStartingStyle { + range?: SourceRange + styleSheetId?: StyleSheetId +} + +export interface CSSLayerData { + name: string + subLayers?: CSSLayerData[] + order: number +} + +export interface PlatformFontUsage { + familyName: string + postScriptName: string + isCustomFont: boolean + glyphCount: number +} + +export interface FontVariationAxis { + tag: string + name: string + minValue: number + maxValue: number + defaultValue: number +} + +export interface FontFace { + fontFamily: string + fontStyle: string + fontVariant: string + fontWeight: string + fontStretch: string + fontDisplay: string + unicodeRange: string + src: string + platformFontFamily: string + fontVariationAxes?: FontVariationAxis[] +} + +export interface CSSTryRule { + styleSheetId?: StyleSheetId + origin: StyleSheetOrigin + style: CSSStyle +} + +export interface CSSPositionTryRule { + name: Value + styleSheetId?: StyleSheetId + origin: StyleSheetOrigin + style: CSSStyle + active: boolean +} + +export interface CSSKeyframesRule { + animationName: Value + keyframes: CSSKeyframeRule[] +} + +export interface CSSPropertyRegistration { + propertyName: string + initialValue?: Value + inherits: boolean + syntax: string +} + +export interface CSSAtRule { + type: 'font-face' | 'font-feature-values' | 'font-palette-values' + subsection?: + | 'swash' + | 'annotation' + | 'ornaments' + | 'stylistic' + | 'styleset' + | 'character-variant' + name?: Value + styleSheetId?: StyleSheetId + origin: StyleSheetOrigin + style: CSSStyle +} + +export interface CSSPropertyRule { + styleSheetId?: StyleSheetId + origin: StyleSheetOrigin + propertyName: Value + style: CSSStyle +} + +export interface CSSFunctionParameter { + name: string + type: string +} + +export interface CSSFunctionConditionNode { + media?: CSSMedia + containerQueries?: CSSContainerQuery + supports?: CSSSupports + children: CSSFunctionNode[] + conditionText: string +} + +export interface CSSFunctionNode { + condition?: CSSFunctionConditionNode + style?: CSSStyle +} + +export interface CSSFunctionRule { + name: Value + styleSheetId?: StyleSheetId + origin: StyleSheetOrigin + parameters: CSSFunctionParameter[] + children: CSSFunctionNode[] +} + +export interface CSSKeyframeRule { + styleSheetId?: StyleSheetId + origin: StyleSheetOrigin + keyText: Value + style: CSSStyle +} + +export interface StyleDeclarationEdit { + styleSheetId: StyleSheetId + range: SourceRange + text: string +} + +// ══ Commands ══ + +export interface AddRuleParams { + styleSheetId: StyleSheetId + ruleText: string + location: SourceRange + nodeForPropertySyntaxValidation?: NodeId +} + +export interface AddRuleResult { + rule: CSSRule +} + +export interface CollectClassNamesParams { + styleSheetId: StyleSheetId +} + +export interface CollectClassNamesResult { + classNames: string[] +} + +export interface CreateStyleSheetParams { + frameId: FrameId + force?: boolean +} + +export interface CreateStyleSheetResult { + styleSheetId: StyleSheetId +} + +export interface ForcePseudoStateParams { + nodeId: NodeId + forcedPseudoClasses: string[] +} + +export interface ForceStartingStyleParams { + nodeId: NodeId + forced: boolean +} + +export interface GetBackgroundColorsParams { + nodeId: NodeId +} + +export interface GetBackgroundColorsResult { + backgroundColors?: string[] + computedFontSize?: string + computedFontWeight?: string +} + +export interface GetComputedStyleForNodeParams { + nodeId: NodeId +} + +export interface GetComputedStyleForNodeResult { + computedStyle: CSSComputedStyleProperty[] + extraFields: ComputedStyleExtraFields +} + +export interface ResolveValuesParams { + values: string[] + nodeId: NodeId + propertyName?: string + pseudoType?: PseudoType + pseudoIdentifier?: string +} + +export interface ResolveValuesResult { + results: string[] +} + +export interface GetLonghandPropertiesParams { + shorthandName: string + value: string +} + +export interface GetLonghandPropertiesResult { + longhandProperties: CSSProperty[] +} + +export interface GetInlineStylesForNodeParams { + nodeId: NodeId +} + +export interface GetInlineStylesForNodeResult { + inlineStyle?: CSSStyle + attributesStyle?: CSSStyle +} + +export interface GetAnimatedStylesForNodeParams { + nodeId: NodeId +} + +export interface GetAnimatedStylesForNodeResult { + animationStyles?: CSSAnimationStyle[] + transitionsStyle?: CSSStyle + inherited?: InheritedAnimatedStyleEntry[] +} + +export interface GetMatchedStylesForNodeParams { + nodeId: NodeId +} + +export interface GetMatchedStylesForNodeResult { + inlineStyle?: CSSStyle + attributesStyle?: CSSStyle + matchedCSSRules?: RuleMatch[] + pseudoElements?: PseudoElementMatches[] + inherited?: InheritedStyleEntry[] + inheritedPseudoElements?: InheritedPseudoElementMatches[] + cssKeyframesRules?: CSSKeyframesRule[] + cssPositionTryRules?: CSSPositionTryRule[] + activePositionFallbackIndex?: number + cssPropertyRules?: CSSPropertyRule[] + cssPropertyRegistrations?: CSSPropertyRegistration[] + cssAtRules?: CSSAtRule[] + parentLayoutNodeId?: NodeId + cssFunctionRules?: CSSFunctionRule[] +} + +export interface GetEnvironmentVariablesResult { + environmentVariables: Record +} + +export interface GetMediaQueriesResult { + medias: CSSMedia[] +} + +export interface GetPlatformFontsForNodeParams { + nodeId: NodeId +} + +export interface GetPlatformFontsForNodeResult { + fonts: PlatformFontUsage[] +} + +export interface GetStyleSheetTextParams { + styleSheetId: StyleSheetId +} + +export interface GetStyleSheetTextResult { + text: string +} + +export interface GetLayersForNodeParams { + nodeId: NodeId +} + +export interface GetLayersForNodeResult { + rootLayer: CSSLayerData +} + +export interface GetLocationForSelectorParams { + styleSheetId: StyleSheetId + selectorText: string +} + +export interface GetLocationForSelectorResult { + ranges: SourceRange[] +} + +export interface TrackComputedStyleUpdatesForNodeParams { + nodeId?: NodeId +} + +export interface TrackComputedStyleUpdatesParams { + propertiesToTrack: CSSComputedStyleProperty[] +} + +export interface TakeComputedStyleUpdatesResult { + nodeIds: NodeId[] +} + +export interface SetEffectivePropertyValueForNodeParams { + nodeId: NodeId + propertyName: string + value: string +} + +export interface SetPropertyRulePropertyNameParams { + styleSheetId: StyleSheetId + range: SourceRange + propertyName: string +} + +export interface SetPropertyRulePropertyNameResult { + propertyName: Value +} + +export interface SetKeyframeKeyParams { + styleSheetId: StyleSheetId + range: SourceRange + keyText: string +} + +export interface SetKeyframeKeyResult { + keyText: Value +} + +export interface SetMediaTextParams { + styleSheetId: StyleSheetId + range: SourceRange + text: string +} + +export interface SetMediaTextResult { + media: CSSMedia +} + +export interface SetContainerQueryTextParams { + styleSheetId: StyleSheetId + range: SourceRange + text: string +} + +export interface SetContainerQueryTextResult { + containerQuery: CSSContainerQuery +} + +export interface SetSupportsTextParams { + styleSheetId: StyleSheetId + range: SourceRange + text: string +} + +export interface SetSupportsTextResult { + supports: CSSSupports +} + +export interface SetScopeTextParams { + styleSheetId: StyleSheetId + range: SourceRange + text: string +} + +export interface SetScopeTextResult { + scope: CSSScope +} + +export interface SetRuleSelectorParams { + styleSheetId: StyleSheetId + range: SourceRange + selector: string +} + +export interface SetRuleSelectorResult { + selectorList: SelectorList +} + +export interface SetStyleSheetTextParams { + styleSheetId: StyleSheetId + text: string +} + +export interface SetStyleSheetTextResult { + sourceMapURL?: string +} + +export interface SetStyleTextsParams { + edits: StyleDeclarationEdit[] + nodeForPropertySyntaxValidation?: NodeId +} + +export interface SetStyleTextsResult { + styles: CSSStyle[] +} + +export interface StopRuleUsageTrackingResult { + ruleUsage: RuleUsage[] +} + +export interface TakeCoverageDeltaResult { + coverage: RuleUsage[] + timestamp: number +} + +export interface SetLocalFontsEnabledParams { + enabled: boolean +} + +// ══ Events ══ + +export interface FontsUpdatedEvent { + font?: FontFace +} + +export interface StyleSheetAddedEvent { + header: CSSStyleSheetHeader +} + +export interface StyleSheetChangedEvent { + styleSheetId: StyleSheetId +} + +export interface StyleSheetRemovedEvent { + styleSheetId: StyleSheetId +} + +export interface ComputedStyleUpdatedEvent { + nodeId: NodeId +} diff --git a/packages/cdp-protocol/src/generated/domains/debugger.ts b/packages/cdp-protocol/src/generated/domains/debugger.ts new file mode 100644 index 000000000..cd220b740 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/debugger.ts @@ -0,0 +1,405 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { + CallArgument, + ExceptionDetails, + ExecutionContextId, + RemoteObject, + RemoteObjectId, + ScriptId, + StackTrace, + StackTraceId, + TimeDelta, + UniqueDebuggerId, +} from './runtime' + +// ══ Types ══ + +export type BreakpointId = string + +export type CallFrameId = string + +export interface Location { + scriptId: ScriptId + lineNumber: number + columnNumber?: number +} + +export interface ScriptPosition { + lineNumber: number + columnNumber: number +} + +export interface LocationRange { + scriptId: ScriptId + start: ScriptPosition + end: ScriptPosition +} + +export interface CallFrame { + callFrameId: CallFrameId + functionName: string + functionLocation?: Location + location: Location + url: string + scopeChain: Scope[] + this: RemoteObject + returnValue?: RemoteObject + canBeRestarted?: boolean +} + +export interface Scope { + type: + | 'global' + | 'local' + | 'with' + | 'closure' + | 'catch' + | 'block' + | 'script' + | 'eval' + | 'module' + | 'wasm-expression-stack' + object: RemoteObject + name?: string + startLocation?: Location + endLocation?: Location +} + +export interface SearchMatch { + lineNumber: number + lineContent: string +} + +export interface BreakLocation { + scriptId: ScriptId + lineNumber: number + columnNumber?: number + type?: 'debuggerStatement' | 'call' | 'return' +} + +export interface WasmDisassemblyChunk { + lines: string[] + bytecodeOffsets: number[] +} + +export type ScriptLanguage = 'JavaScript' | 'WebAssembly' + +export interface DebugSymbols { + type: 'SourceMap' | 'EmbeddedDWARF' | 'ExternalDWARF' + externalURL?: string +} + +export interface ResolvedBreakpoint { + breakpointId: BreakpointId + location: Location +} + +// ══ Commands ══ + +export interface ContinueToLocationParams { + location: Location + targetCallFrames?: 'any' | 'current' +} + +export interface EnableParams { + maxScriptsCacheSize?: number +} + +export interface EnableResult { + debuggerId: UniqueDebuggerId +} + +export interface EvaluateOnCallFrameParams { + callFrameId: CallFrameId + expression: string + objectGroup?: string + includeCommandLineAPI?: boolean + silent?: boolean + returnByValue?: boolean + generatePreview?: boolean + throwOnSideEffect?: boolean + timeout?: TimeDelta +} + +export interface EvaluateOnCallFrameResult { + result: RemoteObject + exceptionDetails?: ExceptionDetails +} + +export interface GetPossibleBreakpointsParams { + start: Location + end?: Location + restrictToFunction?: boolean +} + +export interface GetPossibleBreakpointsResult { + locations: BreakLocation[] +} + +export interface GetScriptSourceParams { + scriptId: ScriptId +} + +export interface GetScriptSourceResult { + scriptSource: string + bytecode?: string +} + +export interface DisassembleWasmModuleParams { + scriptId: ScriptId +} + +export interface DisassembleWasmModuleResult { + streamId?: string + totalNumberOfLines: number + functionBodyOffsets: number[] + chunk: WasmDisassemblyChunk +} + +export interface NextWasmDisassemblyChunkParams { + streamId: string +} + +export interface NextWasmDisassemblyChunkResult { + chunk: WasmDisassemblyChunk +} + +export interface GetWasmBytecodeParams { + scriptId: ScriptId +} + +export interface GetWasmBytecodeResult { + bytecode: string +} + +export interface GetStackTraceParams { + stackTraceId: StackTraceId +} + +export interface GetStackTraceResult { + stackTrace: StackTrace +} + +export interface PauseOnAsyncCallParams { + parentStackTraceId: StackTraceId +} + +export interface RemoveBreakpointParams { + breakpointId: BreakpointId +} + +export interface RestartFrameParams { + callFrameId: CallFrameId + mode?: 'StepInto' +} + +export interface RestartFrameResult { + callFrames: CallFrame[] + asyncStackTrace?: StackTrace + asyncStackTraceId?: StackTraceId +} + +export interface ResumeParams { + terminateOnResume?: boolean +} + +export interface SearchInContentParams { + scriptId: ScriptId + query: string + caseSensitive?: boolean + isRegex?: boolean +} + +export interface SearchInContentResult { + result: SearchMatch[] +} + +export interface SetAsyncCallStackDepthParams { + maxDepth: number +} + +export interface SetBlackboxExecutionContextsParams { + uniqueIds: string[] +} + +export interface SetBlackboxPatternsParams { + patterns: string[] + skipAnonymous?: boolean +} + +export interface SetBlackboxedRangesParams { + scriptId: ScriptId + positions: ScriptPosition[] +} + +export interface SetBreakpointParams { + location: Location + condition?: string +} + +export interface SetBreakpointResult { + breakpointId: BreakpointId + actualLocation: Location +} + +export interface SetInstrumentationBreakpointParams { + instrumentation: + | 'beforeScriptExecution' + | 'beforeScriptWithSourceMapExecution' +} + +export interface SetInstrumentationBreakpointResult { + breakpointId: BreakpointId +} + +export interface SetBreakpointByUrlParams { + lineNumber: number + url?: string + urlRegex?: string + scriptHash?: string + columnNumber?: number + condition?: string +} + +export interface SetBreakpointByUrlResult { + breakpointId: BreakpointId + locations: Location[] +} + +export interface SetBreakpointOnFunctionCallParams { + objectId: RemoteObjectId + condition?: string +} + +export interface SetBreakpointOnFunctionCallResult { + breakpointId: BreakpointId +} + +export interface SetBreakpointsActiveParams { + active: boolean +} + +export interface SetPauseOnExceptionsParams { + state: 'none' | 'caught' | 'uncaught' | 'all' +} + +export interface SetReturnValueParams { + newValue: CallArgument +} + +export interface SetScriptSourceParams { + scriptId: ScriptId + scriptSource: string + dryRun?: boolean + allowTopFrameEditing?: boolean +} + +export interface SetScriptSourceResult { + callFrames?: CallFrame[] + stackChanged?: boolean + asyncStackTrace?: StackTrace + asyncStackTraceId?: StackTraceId + status: + | 'Ok' + | 'CompileError' + | 'BlockedByActiveGenerator' + | 'BlockedByActiveFunction' + | 'BlockedByTopLevelEsModuleChange' + exceptionDetails?: ExceptionDetails +} + +export interface SetSkipAllPausesParams { + skip: boolean +} + +export interface SetVariableValueParams { + scopeNumber: number + variableName: string + newValue: CallArgument + callFrameId: CallFrameId +} + +export interface StepIntoParams { + breakOnAsyncCall?: boolean + skipList?: LocationRange[] +} + +export interface StepOverParams { + skipList?: LocationRange[] +} + +// ══ Events ══ + +export interface BreakpointResolvedEvent { + breakpointId: BreakpointId + location: Location +} + +export interface PausedEvent { + callFrames: CallFrame[] + reason: + | 'ambiguous' + | 'assert' + | 'CSPViolation' + | 'debugCommand' + | 'DOM' + | 'EventListener' + | 'exception' + | 'instrumentation' + | 'OOM' + | 'other' + | 'promiseRejection' + | 'XHR' + | 'step' + data?: Record + hitBreakpoints?: string[] + asyncStackTrace?: StackTrace + asyncStackTraceId?: StackTraceId + asyncCallStackTraceId?: StackTraceId +} + +export interface ScriptFailedToParseEvent { + scriptId: ScriptId + url: string + startLine: number + startColumn: number + endLine: number + endColumn: number + executionContextId: ExecutionContextId + hash: string + buildId: string + executionContextAuxData?: Record + sourceMapURL?: string + hasSourceURL?: boolean + isModule?: boolean + length?: number + stackTrace?: StackTrace + codeOffset?: number + scriptLanguage?: ScriptLanguage + embedderName?: string +} + +export interface ScriptParsedEvent { + scriptId: ScriptId + url: string + startLine: number + startColumn: number + endLine: number + endColumn: number + executionContextId: ExecutionContextId + hash: string + buildId: string + executionContextAuxData?: Record + isLiveEdit?: boolean + sourceMapURL?: string + hasSourceURL?: boolean + isModule?: boolean + length?: number + stackTrace?: StackTrace + codeOffset?: number + scriptLanguage?: ScriptLanguage + debugSymbols?: DebugSymbols[] + embedderName?: string + resolvedBreakpoints?: ResolvedBreakpoint[] +} diff --git a/packages/cdp-protocol/src/generated/domains/device-access.ts b/packages/cdp-protocol/src/generated/domains/device-access.ts new file mode 100644 index 000000000..45c4a49a9 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/device-access.ts @@ -0,0 +1,30 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type RequestId = string + +export type DeviceId = string + +export interface PromptDevice { + id: DeviceId + name: string +} + +// ══ Commands ══ + +export interface SelectPromptParams { + id: RequestId + deviceId: DeviceId +} + +export interface CancelPromptParams { + id: RequestId +} + +// ══ Events ══ + +export interface DeviceRequestPromptedEvent { + id: RequestId + devices: PromptDevice[] +} diff --git a/packages/cdp-protocol/src/generated/domains/device-orientation.ts b/packages/cdp-protocol/src/generated/domains/device-orientation.ts new file mode 100644 index 000000000..ed536e300 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/device-orientation.ts @@ -0,0 +1,9 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Commands ══ + +export interface SetDeviceOrientationOverrideParams { + alpha: number + beta: number + gamma: number +} diff --git a/packages/cdp-protocol/src/generated/domains/dom-debugger.ts b/packages/cdp-protocol/src/generated/domains/dom-debugger.ts new file mode 100644 index 000000000..3e759035f --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/dom-debugger.ts @@ -0,0 +1,80 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId, NodeId } from './dom' +import type { RemoteObject, RemoteObjectId, ScriptId } from './runtime' + +// ══ Types ══ + +export type DOMBreakpointType = + | 'subtree-modified' + | 'attribute-modified' + | 'node-removed' + +export type CSPViolationType = + | 'trustedtype-sink-violation' + | 'trustedtype-policy-violation' + +export interface EventListener { + type: string + useCapture: boolean + passive: boolean + once: boolean + scriptId: ScriptId + lineNumber: number + columnNumber: number + handler?: RemoteObject + originalHandler?: RemoteObject + backendNodeId?: BackendNodeId +} + +// ══ Commands ══ + +export interface GetEventListenersParams { + objectId: RemoteObjectId + depth?: number + pierce?: boolean +} + +export interface GetEventListenersResult { + listeners: EventListener[] +} + +export interface RemoveDOMBreakpointParams { + nodeId: NodeId + type: DOMBreakpointType +} + +export interface RemoveEventListenerBreakpointParams { + eventName: string + targetName?: string +} + +export interface RemoveInstrumentationBreakpointParams { + eventName: string +} + +export interface RemoveXHRBreakpointParams { + url: string +} + +export interface SetBreakOnCSPViolationParams { + violationTypes: CSPViolationType[] +} + +export interface SetDOMBreakpointParams { + nodeId: NodeId + type: DOMBreakpointType +} + +export interface SetEventListenerBreakpointParams { + eventName: string + targetName?: string +} + +export interface SetInstrumentationBreakpointParams { + eventName: string +} + +export interface SetXHRBreakpointParams { + url: string +} diff --git a/packages/cdp-protocol/src/generated/domains/dom-snapshot.ts b/packages/cdp-protocol/src/generated/domains/dom-snapshot.ts new file mode 100644 index 000000000..4f8d46bf6 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/dom-snapshot.ts @@ -0,0 +1,170 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId, PseudoType, Rect, ShadowRootType } from './dom' +import type { EventListener } from './dom-debugger' +import type { FrameId } from './page' + +// ══ Types ══ + +export interface DOMNode { + nodeType: number + nodeName: string + nodeValue: string + textValue?: string + inputValue?: string + inputChecked?: boolean + optionSelected?: boolean + backendNodeId: BackendNodeId + childNodeIndexes?: number[] + attributes?: NameValue[] + pseudoElementIndexes?: number[] + layoutNodeIndex?: number + documentURL?: string + baseURL?: string + contentLanguage?: string + documentEncoding?: string + publicId?: string + systemId?: string + frameId?: FrameId + contentDocumentIndex?: number + pseudoType?: PseudoType + shadowRootType?: ShadowRootType + isClickable?: boolean + eventListeners?: EventListener[] + currentSourceURL?: string + originURL?: string + scrollOffsetX?: number + scrollOffsetY?: number +} + +export interface InlineTextBox { + boundingBox: Rect + startCharacterIndex: number + numCharacters: number +} + +export interface LayoutTreeNode { + domNodeIndex: number + boundingBox: Rect + layoutText?: string + inlineTextNodes?: InlineTextBox[] + styleIndex?: number + paintOrder?: number + isStackingContext?: boolean +} + +export interface ComputedStyle { + properties: NameValue[] +} + +export interface NameValue { + name: string + value: string +} + +export type StringIndex = number + +export type ArrayOfStrings = StringIndex[] + +export interface RareStringData { + index: number[] + value: StringIndex[] +} + +export interface RareBooleanData { + index: number[] +} + +export interface RareIntegerData { + index: number[] + value: number[] +} + +export type Rectangle = number[] + +export interface DocumentSnapshot { + documentURL: StringIndex + title: StringIndex + baseURL: StringIndex + contentLanguage: StringIndex + encodingName: StringIndex + publicId: StringIndex + systemId: StringIndex + frameId: StringIndex + nodes: NodeTreeSnapshot + layout: LayoutTreeSnapshot + textBoxes: TextBoxSnapshot + scrollOffsetX?: number + scrollOffsetY?: number + contentWidth?: number + contentHeight?: number +} + +export interface NodeTreeSnapshot { + parentIndex?: number[] + nodeType?: number[] + shadowRootType?: RareStringData + nodeName?: StringIndex[] + nodeValue?: StringIndex[] + backendNodeId?: BackendNodeId[] + attributes?: ArrayOfStrings[] + textValue?: RareStringData + inputValue?: RareStringData + inputChecked?: RareBooleanData + optionSelected?: RareBooleanData + contentDocumentIndex?: RareIntegerData + pseudoType?: RareStringData + pseudoIdentifier?: RareStringData + isClickable?: RareBooleanData + currentSourceURL?: RareStringData + originURL?: RareStringData +} + +export interface LayoutTreeSnapshot { + nodeIndex: number[] + styles: ArrayOfStrings[] + bounds: Rectangle[] + text: StringIndex[] + stackingContexts: RareBooleanData + paintOrders?: number[] + offsetRects?: Rectangle[] + scrollRects?: Rectangle[] + clientRects?: Rectangle[] + blendedBackgroundColors?: StringIndex[] + textColorOpacities?: number[] +} + +export interface TextBoxSnapshot { + layoutIndex: number[] + bounds: Rectangle[] + start: number[] + length: number[] +} + +// ══ Commands ══ + +export interface GetSnapshotParams { + computedStyleWhitelist: string[] + includeEventListeners?: boolean + includePaintOrder?: boolean + includeUserAgentShadowTree?: boolean +} + +export interface GetSnapshotResult { + domNodes: DOMNode[] + layoutTreeNodes: LayoutTreeNode[] + computedStyles: ComputedStyle[] +} + +export interface CaptureSnapshotParams { + computedStyles: string[] + includePaintOrder?: boolean + includeDOMRects?: boolean + includeBlendedBackgroundColors?: boolean + includeTextColorOpacities?: boolean +} + +export interface CaptureSnapshotResult { + documents: DocumentSnapshot[] + strings: string[] +} diff --git a/packages/cdp-protocol/src/generated/domains/dom-storage.ts b/packages/cdp-protocol/src/generated/domains/dom-storage.ts new file mode 100644 index 000000000..1d8944a2b --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/dom-storage.ts @@ -0,0 +1,62 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type SerializedStorageKey = string + +export interface StorageId { + securityOrigin?: string + storageKey?: SerializedStorageKey + isLocalStorage: boolean +} + +export type Item = string[] + +// ══ Commands ══ + +export interface ClearParams { + storageId: StorageId +} + +export interface GetDOMStorageItemsParams { + storageId: StorageId +} + +export interface GetDOMStorageItemsResult { + entries: Item[] +} + +export interface RemoveDOMStorageItemParams { + storageId: StorageId + key: string +} + +export interface SetDOMStorageItemParams { + storageId: StorageId + key: string + value: string +} + +// ══ Events ══ + +export interface DomStorageItemAddedEvent { + storageId: StorageId + key: string + newValue: string +} + +export interface DomStorageItemRemovedEvent { + storageId: StorageId + key: string +} + +export interface DomStorageItemUpdatedEvent { + storageId: StorageId + key: string + oldValue: string + newValue: string +} + +export interface DomStorageItemsClearedEvent { + storageId: StorageId +} diff --git a/packages/cdp-protocol/src/generated/domains/dom.ts b/packages/cdp-protocol/src/generated/domains/dom.ts new file mode 100644 index 000000000..49e053de4 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/dom.ts @@ -0,0 +1,606 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { FrameId } from './page' +import type { + ExecutionContextId, + RemoteObject, + RemoteObjectId, + StackTrace, +} from './runtime' + +// ══ Types ══ + +export type NodeId = number + +export type BackendNodeId = number + +export type StyleSheetId = string + +export interface BackendNode { + nodeType: number + nodeName: string + backendNodeId: BackendNodeId +} + +export type PseudoType = + | 'first-line' + | 'first-letter' + | 'checkmark' + | 'before' + | 'after' + | 'picker-icon' + | 'interest-hint' + | 'marker' + | 'backdrop' + | 'column' + | 'selection' + | 'search-text' + | 'target-text' + | 'spelling-error' + | 'grammar-error' + | 'highlight' + | 'first-line-inherited' + | 'scroll-marker' + | 'scroll-marker-group' + | 'scroll-button' + | 'scrollbar' + | 'scrollbar-thumb' + | 'scrollbar-button' + | 'scrollbar-track' + | 'scrollbar-track-piece' + | 'scrollbar-corner' + | 'resizer' + | 'input-list-button' + | 'view-transition' + | 'view-transition-group' + | 'view-transition-image-pair' + | 'view-transition-group-children' + | 'view-transition-old' + | 'view-transition-new' + | 'placeholder' + | 'file-selector-button' + | 'details-content' + | 'picker' + | 'permission-icon' + | 'overscroll-area-parent' + +export type ShadowRootType = 'user-agent' | 'open' | 'closed' + +export type CompatibilityMode = + | 'QuirksMode' + | 'LimitedQuirksMode' + | 'NoQuirksMode' + +export type PhysicalAxes = 'Horizontal' | 'Vertical' | 'Both' + +export type LogicalAxes = 'Inline' | 'Block' | 'Both' + +export type ScrollOrientation = 'horizontal' | 'vertical' + +export interface Node { + nodeId: NodeId + parentId?: NodeId + backendNodeId: BackendNodeId + nodeType: number + nodeName: string + localName: string + nodeValue: string + childNodeCount?: number + children?: Node[] + attributes?: string[] + documentURL?: string + baseURL?: string + publicId?: string + systemId?: string + internalSubset?: string + xmlVersion?: string + name?: string + value?: string + pseudoType?: PseudoType + pseudoIdentifier?: string + shadowRootType?: ShadowRootType + frameId?: FrameId + contentDocument?: Node + shadowRoots?: Node[] + templateContent?: Node + pseudoElements?: Node[] + importedDocument?: Node + distributedNodes?: BackendNode[] + isSVG?: boolean + compatibilityMode?: CompatibilityMode + assignedSlot?: BackendNode + isScrollable?: boolean + affectedByStartingStyles?: boolean + adoptedStyleSheets?: StyleSheetId[] +} + +export interface DetachedElementInfo { + treeNode: Node + retainedNodeIds: NodeId[] +} + +export interface RGBA { + r: number + g: number + b: number + a?: number +} + +export type Quad = number[] + +export interface BoxModel { + content: Quad + padding: Quad + border: Quad + margin: Quad + width: number + height: number + shapeOutside?: ShapeOutsideInfo +} + +export interface ShapeOutsideInfo { + bounds: Quad + shape: unknown[] + marginShape: unknown[] +} + +export interface Rect { + x: number + y: number + width: number + height: number +} + +export interface CSSComputedStyleProperty { + name: string + value: string +} + +// ══ Commands ══ + +export interface CollectClassNamesFromSubtreeParams { + nodeId: NodeId +} + +export interface CollectClassNamesFromSubtreeResult { + classNames: string[] +} + +export interface CopyToParams { + nodeId: NodeId + targetNodeId: NodeId + insertBeforeNodeId?: NodeId +} + +export interface CopyToResult { + nodeId: NodeId +} + +export interface DescribeNodeParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId + depth?: number + pierce?: boolean +} + +export interface DescribeNodeResult { + node: Node +} + +export interface ScrollIntoViewIfNeededParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId + rect?: Rect +} + +export interface DiscardSearchResultsParams { + searchId: string +} + +export interface EnableParams { + includeWhitespace?: 'none' | 'all' +} + +export interface FocusParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId +} + +export interface GetAttributesParams { + nodeId: NodeId +} + +export interface GetAttributesResult { + attributes: string[] +} + +export interface GetBoxModelParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId +} + +export interface GetBoxModelResult { + model: BoxModel +} + +export interface GetContentQuadsParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId +} + +export interface GetContentQuadsResult { + quads: Quad[] +} + +export interface GetDocumentParams { + depth?: number + pierce?: boolean +} + +export interface GetDocumentResult { + root: Node +} + +export interface GetFlattenedDocumentParams { + depth?: number + pierce?: boolean +} + +export interface GetFlattenedDocumentResult { + nodes: Node[] +} + +export interface GetNodesForSubtreeByStyleParams { + nodeId: NodeId + computedStyles: CSSComputedStyleProperty[] + pierce?: boolean +} + +export interface GetNodesForSubtreeByStyleResult { + nodeIds: NodeId[] +} + +export interface GetNodeForLocationParams { + x: number + y: number + includeUserAgentShadowDOM?: boolean + ignorePointerEventsNone?: boolean +} + +export interface GetNodeForLocationResult { + backendNodeId: BackendNodeId + frameId: FrameId + nodeId?: NodeId +} + +export interface GetOuterHTMLParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId + includeShadowDOM?: boolean +} + +export interface GetOuterHTMLResult { + outerHTML: string +} + +export interface GetRelayoutBoundaryParams { + nodeId: NodeId +} + +export interface GetRelayoutBoundaryResult { + nodeId: NodeId +} + +export interface GetSearchResultsParams { + searchId: string + fromIndex: number + toIndex: number +} + +export interface GetSearchResultsResult { + nodeIds: NodeId[] +} + +export interface MoveToParams { + nodeId: NodeId + targetNodeId: NodeId + insertBeforeNodeId?: NodeId +} + +export interface MoveToResult { + nodeId: NodeId +} + +export interface PerformSearchParams { + query: string + includeUserAgentShadowDOM?: boolean +} + +export interface PerformSearchResult { + searchId: string + resultCount: number +} + +export interface PushNodeByPathToFrontendParams { + path: string +} + +export interface PushNodeByPathToFrontendResult { + nodeId: NodeId +} + +export interface PushNodesByBackendIdsToFrontendParams { + backendNodeIds: BackendNodeId[] +} + +export interface PushNodesByBackendIdsToFrontendResult { + nodeIds: NodeId[] +} + +export interface QuerySelectorParams { + nodeId: NodeId + selector: string +} + +export interface QuerySelectorResult { + nodeId: NodeId +} + +export interface QuerySelectorAllParams { + nodeId: NodeId + selector: string +} + +export interface QuerySelectorAllResult { + nodeIds: NodeId[] +} + +export interface GetTopLayerElementsResult { + nodeIds: NodeId[] +} + +export interface GetElementByRelationParams { + nodeId: NodeId + relation: 'PopoverTarget' | 'InterestTarget' | 'CommandFor' +} + +export interface GetElementByRelationResult { + nodeId: NodeId +} + +export interface RemoveAttributeParams { + nodeId: NodeId + name: string +} + +export interface RemoveNodeParams { + nodeId: NodeId +} + +export interface RequestChildNodesParams { + nodeId: NodeId + depth?: number + pierce?: boolean +} + +export interface RequestNodeParams { + objectId: RemoteObjectId +} + +export interface RequestNodeResult { + nodeId: NodeId +} + +export interface ResolveNodeParams { + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectGroup?: string + executionContextId?: ExecutionContextId +} + +export interface ResolveNodeResult { + object: RemoteObject +} + +export interface SetAttributeValueParams { + nodeId: NodeId + name: string + value: string +} + +export interface SetAttributesAsTextParams { + nodeId: NodeId + text: string + name?: string +} + +export interface SetFileInputFilesParams { + files: string[] + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId +} + +export interface SetNodeStackTracesEnabledParams { + enable: boolean +} + +export interface GetNodeStackTracesParams { + nodeId: NodeId +} + +export interface GetNodeStackTracesResult { + creation?: StackTrace +} + +export interface GetFileInfoParams { + objectId: RemoteObjectId +} + +export interface GetFileInfoResult { + path: string +} + +export interface GetDetachedDomNodesResult { + detachedNodes: DetachedElementInfo[] +} + +export interface SetInspectedNodeParams { + nodeId: NodeId +} + +export interface SetNodeNameParams { + nodeId: NodeId + name: string +} + +export interface SetNodeNameResult { + nodeId: NodeId +} + +export interface SetNodeValueParams { + nodeId: NodeId + value: string +} + +export interface SetOuterHTMLParams { + nodeId: NodeId + outerHTML: string +} + +export interface GetFrameOwnerParams { + frameId: FrameId +} + +export interface GetFrameOwnerResult { + backendNodeId: BackendNodeId + nodeId?: NodeId +} + +export interface GetContainerForNodeParams { + nodeId: NodeId + containerName?: string + physicalAxes?: PhysicalAxes + logicalAxes?: LogicalAxes + queriesScrollState?: boolean + queriesAnchored?: boolean +} + +export interface GetContainerForNodeResult { + nodeId?: NodeId +} + +export interface GetQueryingDescendantsForContainerParams { + nodeId: NodeId +} + +export interface GetQueryingDescendantsForContainerResult { + nodeIds: NodeId[] +} + +export interface GetAnchorElementParams { + nodeId: NodeId + anchorSpecifier?: string +} + +export interface GetAnchorElementResult { + nodeId: NodeId +} + +export interface ForceShowPopoverParams { + nodeId: NodeId + enable: boolean +} + +export interface ForceShowPopoverResult { + nodeIds: NodeId[] +} + +// ══ Events ══ + +export interface AttributeModifiedEvent { + nodeId: NodeId + name: string + value: string +} + +export interface AdoptedStyleSheetsModifiedEvent { + nodeId: NodeId + adoptedStyleSheets: StyleSheetId[] +} + +export interface AttributeRemovedEvent { + nodeId: NodeId + name: string +} + +export interface CharacterDataModifiedEvent { + nodeId: NodeId + characterData: string +} + +export interface ChildNodeCountUpdatedEvent { + nodeId: NodeId + childNodeCount: number +} + +export interface ChildNodeInsertedEvent { + parentNodeId: NodeId + previousNodeId: NodeId + node: Node +} + +export interface ChildNodeRemovedEvent { + parentNodeId: NodeId + nodeId: NodeId +} + +export interface DistributedNodesUpdatedEvent { + insertionPointId: NodeId + distributedNodes: BackendNode[] +} + +export interface InlineStyleInvalidatedEvent { + nodeIds: NodeId[] +} + +export interface PseudoElementAddedEvent { + parentId: NodeId + pseudoElement: Node +} + +export interface ScrollableFlagUpdatedEvent { + nodeId: NodeId + isScrollable: boolean +} + +export interface AffectedByStartingStylesFlagUpdatedEvent { + nodeId: NodeId + affectedByStartingStyles: boolean +} + +export interface PseudoElementRemovedEvent { + parentId: NodeId + pseudoElementId: NodeId +} + +export interface SetChildNodesEvent { + parentId: NodeId + nodes: Node[] +} + +export interface ShadowRootPoppedEvent { + hostId: NodeId + rootId: NodeId +} + +export interface ShadowRootPushedEvent { + hostId: NodeId + root: Node +} diff --git a/packages/cdp-protocol/src/generated/domains/emulation.ts b/packages/cdp-protocol/src/generated/domains/emulation.ts new file mode 100644 index 000000000..9c2fd786e --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/emulation.ts @@ -0,0 +1,373 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { RGBA } from './dom' +import type { TimeSinceEpoch } from './network' +import type { Viewport } from './page' + +// ══ Types ══ + +export interface SafeAreaInsets { + top?: number + topMax?: number + left?: number + leftMax?: number + bottom?: number + bottomMax?: number + right?: number + rightMax?: number +} + +export interface ScreenOrientation { + type: + | 'portraitPrimary' + | 'portraitSecondary' + | 'landscapePrimary' + | 'landscapeSecondary' + angle: number +} + +export interface DisplayFeature { + orientation: 'vertical' | 'horizontal' + offset: number + maskLength: number +} + +export interface DevicePosture { + type: 'continuous' | 'folded' +} + +export interface MediaFeature { + name: string + value: string +} + +export type VirtualTimePolicy = + | 'advance' + | 'pause' + | 'pauseIfNetworkFetchesPending' + +export interface UserAgentBrandVersion { + brand: string + version: string +} + +export interface UserAgentMetadata { + brands?: UserAgentBrandVersion[] + fullVersionList?: UserAgentBrandVersion[] + fullVersion?: string + platform: string + platformVersion: string + architecture: string + model: string + mobile: boolean + bitness?: string + wow64?: boolean + formFactors?: string[] +} + +export type SensorType = + | 'absolute-orientation' + | 'accelerometer' + | 'ambient-light' + | 'gravity' + | 'gyroscope' + | 'linear-acceleration' + | 'magnetometer' + | 'relative-orientation' + +export interface SensorMetadata { + available?: boolean + minimumFrequency?: number + maximumFrequency?: number +} + +export interface SensorReadingSingle { + value: number +} + +export interface SensorReadingXYZ { + x: number + y: number + z: number +} + +export interface SensorReadingQuaternion { + x: number + y: number + z: number + w: number +} + +export interface SensorReading { + single?: SensorReadingSingle + xyz?: SensorReadingXYZ + quaternion?: SensorReadingQuaternion +} + +export type PressureSource = 'cpu' + +export type PressureState = 'nominal' | 'fair' | 'serious' | 'critical' + +export interface PressureMetadata { + available?: boolean +} + +export interface WorkAreaInsets { + top?: number + left?: number + bottom?: number + right?: number +} + +export type ScreenId = string + +export interface ScreenInfo { + left: number + top: number + width: number + height: number + availLeft: number + availTop: number + availWidth: number + availHeight: number + devicePixelRatio: number + orientation: ScreenOrientation + colorDepth: number + isExtended: boolean + isInternal: boolean + isPrimary: boolean + label: string + id: ScreenId +} + +export type DisabledImageType = 'avif' | 'webp' + +// ══ Commands ══ + +export interface CanEmulateResult { + result: boolean +} + +export interface SetFocusEmulationEnabledParams { + enabled: boolean +} + +export interface SetAutoDarkModeOverrideParams { + enabled?: boolean +} + +export interface SetCPUThrottlingRateParams { + rate: number +} + +export interface SetDefaultBackgroundColorOverrideParams { + color?: RGBA +} + +export interface SetSafeAreaInsetsOverrideParams { + insets: SafeAreaInsets +} + +export interface SetDeviceMetricsOverrideParams { + width: number + height: number + deviceScaleFactor: number + mobile: boolean + scale?: number + screenWidth?: number + screenHeight?: number + positionX?: number + positionY?: number + dontSetVisibleSize?: boolean + screenOrientation?: ScreenOrientation + viewport?: Viewport + displayFeature?: DisplayFeature + devicePosture?: DevicePosture +} + +export interface SetDevicePostureOverrideParams { + posture: DevicePosture +} + +export interface SetDisplayFeaturesOverrideParams { + features: DisplayFeature[] +} + +export interface SetScrollbarsHiddenParams { + hidden: boolean +} + +export interface SetDocumentCookieDisabledParams { + disabled: boolean +} + +export interface SetEmitTouchEventsForMouseParams { + enabled: boolean + configuration?: 'mobile' | 'desktop' +} + +export interface SetEmulatedMediaParams { + media?: string + features?: MediaFeature[] +} + +export interface SetEmulatedVisionDeficiencyParams { + type: + | 'none' + | 'blurredVision' + | 'reducedContrast' + | 'achromatopsia' + | 'deuteranopia' + | 'protanopia' + | 'tritanopia' +} + +export interface SetEmulatedOSTextScaleParams { + scale?: number +} + +export interface SetGeolocationOverrideParams { + latitude?: number + longitude?: number + accuracy?: number + altitude?: number + altitudeAccuracy?: number + heading?: number + speed?: number +} + +export interface GetOverriddenSensorInformationParams { + type: SensorType +} + +export interface GetOverriddenSensorInformationResult { + requestedSamplingFrequency: number +} + +export interface SetSensorOverrideEnabledParams { + enabled: boolean + type: SensorType + metadata?: SensorMetadata +} + +export interface SetSensorOverrideReadingsParams { + type: SensorType + reading: SensorReading +} + +export interface SetPressureSourceOverrideEnabledParams { + enabled: boolean + source: PressureSource + metadata?: PressureMetadata +} + +export interface SetPressureStateOverrideParams { + source: PressureSource + state: PressureState +} + +export interface SetPressureDataOverrideParams { + source: PressureSource + state: PressureState + ownContributionEstimate?: number +} + +export interface SetIdleOverrideParams { + isUserActive: boolean + isScreenUnlocked: boolean +} + +export interface SetNavigatorOverridesParams { + platform: string +} + +export interface SetPageScaleFactorParams { + pageScaleFactor: number +} + +export interface SetScriptExecutionDisabledParams { + value: boolean +} + +export interface SetTouchEmulationEnabledParams { + enabled: boolean + maxTouchPoints?: number +} + +export interface SetVirtualTimePolicyParams { + policy: VirtualTimePolicy + budget?: number + maxVirtualTimeTaskStarvationCount?: number + initialVirtualTime?: TimeSinceEpoch +} + +export interface SetVirtualTimePolicyResult { + virtualTimeTicksBase: number +} + +export interface SetLocaleOverrideParams { + locale?: string +} + +export interface SetTimezoneOverrideParams { + timezoneId: string +} + +export interface SetVisibleSizeParams { + width: number + height: number +} + +export interface SetDisabledImageTypesParams { + imageTypes: DisabledImageType[] +} + +export interface SetDataSaverOverrideParams { + dataSaverEnabled?: boolean +} + +export interface SetHardwareConcurrencyOverrideParams { + hardwareConcurrency: number +} + +export interface SetUserAgentOverrideParams { + userAgent: string + acceptLanguage?: string + platform?: string + userAgentMetadata?: UserAgentMetadata +} + +export interface SetAutomationOverrideParams { + enabled: boolean +} + +export interface SetSmallViewportHeightDifferenceOverrideParams { + difference: number +} + +export interface GetScreenInfosResult { + screenInfos: ScreenInfo[] +} + +export interface AddScreenParams { + left: number + top: number + width: number + height: number + workAreaInsets?: WorkAreaInsets + devicePixelRatio?: number + rotation?: number + colorDepth?: number + label?: string + isInternal?: boolean +} + +export interface AddScreenResult { + screenInfo: ScreenInfo +} + +export interface RemoveScreenParams { + screenId: ScreenId +} + +// ══ Events ══ diff --git a/packages/cdp-protocol/src/generated/domains/event-breakpoints.ts b/packages/cdp-protocol/src/generated/domains/event-breakpoints.ts new file mode 100644 index 000000000..cdf70fded --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/event-breakpoints.ts @@ -0,0 +1,11 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Commands ══ + +export interface SetInstrumentationBreakpointParams { + eventName: string +} + +export interface RemoveInstrumentationBreakpointParams { + eventName: string +} diff --git a/packages/cdp-protocol/src/generated/domains/extensions.ts b/packages/cdp-protocol/src/generated/domains/extensions.ts new file mode 100644 index 000000000..a687684ae --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/extensions.ts @@ -0,0 +1,46 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type StorageArea = 'session' | 'local' | 'sync' | 'managed' + +// ══ Commands ══ + +export interface LoadUnpackedParams { + path: string +} + +export interface LoadUnpackedResult { + id: string +} + +export interface UninstallParams { + id: string +} + +export interface GetStorageItemsParams { + id: string + storageArea: StorageArea + keys?: string[] +} + +export interface GetStorageItemsResult { + data: Record +} + +export interface RemoveStorageItemsParams { + id: string + storageArea: StorageArea + keys: string[] +} + +export interface ClearStorageItemsParams { + id: string + storageArea: StorageArea +} + +export interface SetStorageItemsParams { + id: string + storageArea: StorageArea + values: Record +} diff --git a/packages/cdp-protocol/src/generated/domains/fed-cm.ts b/packages/cdp-protocol/src/generated/domains/fed-cm.ts new file mode 100644 index 000000000..8b0d1d906 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/fed-cm.ts @@ -0,0 +1,72 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type LoginState = 'SignIn' | 'SignUp' + +export type DialogType = + | 'AccountChooser' + | 'AutoReauthn' + | 'ConfirmIdpLogin' + | 'Error' + +export type DialogButton = + | 'ConfirmIdpLoginContinue' + | 'ErrorGotIt' + | 'ErrorMoreDetails' + +export type AccountUrlType = 'TermsOfService' | 'PrivacyPolicy' + +export interface Account { + accountId: string + email: string + name: string + givenName: string + pictureUrl: string + idpConfigUrl: string + idpLoginUrl: string + loginState: LoginState + termsOfServiceUrl?: string + privacyPolicyUrl?: string +} + +// ══ Commands ══ + +export interface EnableParams { + disableRejectionDelay?: boolean +} + +export interface SelectAccountParams { + dialogId: string + accountIndex: number +} + +export interface ClickDialogButtonParams { + dialogId: string + dialogButton: DialogButton +} + +export interface OpenUrlParams { + dialogId: string + accountIndex: number + accountUrlType: AccountUrlType +} + +export interface DismissDialogParams { + dialogId: string + triggerCooldown?: boolean +} + +// ══ Events ══ + +export interface DialogShownEvent { + dialogId: string + dialogType: DialogType + accounts: Account[] + title: string + subtitle?: string +} + +export interface DialogClosedEvent { + dialogId: string +} diff --git a/packages/cdp-protocol/src/generated/domains/fetch.ts b/packages/cdp-protocol/src/generated/domains/fetch.ts new file mode 100644 index 000000000..5f9c5ebfb --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/fetch.ts @@ -0,0 +1,123 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { StreamHandle } from './io' +import type { + ErrorReason, + RequestId as NetworkRequestId, + Request, + ResourceType, +} from './network' +import type { FrameId } from './page' + +// ══ Types ══ + +export type RequestId = string + +export type RequestStage = 'Request' | 'Response' + +export interface RequestPattern { + urlPattern?: string + resourceType?: ResourceType + requestStage?: RequestStage +} + +export interface HeaderEntry { + name: string + value: string +} + +export interface AuthChallenge { + source?: 'Server' | 'Proxy' + origin: string + scheme: string + realm: string +} + +export interface AuthChallengeResponse { + response: 'Default' | 'CancelAuth' | 'ProvideCredentials' + username?: string + password?: string +} + +// ══ Commands ══ + +export interface EnableParams { + patterns?: RequestPattern[] + handleAuthRequests?: boolean +} + +export interface FailRequestParams { + requestId: RequestId + errorReason: ErrorReason +} + +export interface FulfillRequestParams { + requestId: RequestId + responseCode: number + responseHeaders?: HeaderEntry[] + binaryResponseHeaders?: string + body?: string + responsePhrase?: string +} + +export interface ContinueRequestParams { + requestId: RequestId + url?: string + method?: string + postData?: string + headers?: HeaderEntry[] + interceptResponse?: boolean +} + +export interface ContinueWithAuthParams { + requestId: RequestId + authChallengeResponse: AuthChallengeResponse +} + +export interface ContinueResponseParams { + requestId: RequestId + responseCode?: number + responsePhrase?: string + responseHeaders?: HeaderEntry[] + binaryResponseHeaders?: string +} + +export interface GetResponseBodyParams { + requestId: RequestId +} + +export interface GetResponseBodyResult { + body: string + base64Encoded: boolean +} + +export interface TakeResponseBodyAsStreamParams { + requestId: RequestId +} + +export interface TakeResponseBodyAsStreamResult { + stream: StreamHandle +} + +// ══ Events ══ + +export interface RequestPausedEvent { + requestId: RequestId + request: Request + frameId: FrameId + resourceType: ResourceType + responseErrorReason?: ErrorReason + responseStatusCode?: number + responseStatusText?: string + responseHeaders?: HeaderEntry[] + networkId?: NetworkRequestId + redirectedRequestId?: RequestId +} + +export interface AuthRequiredEvent { + requestId: RequestId + request: Request + frameId: FrameId + resourceType: ResourceType + authChallenge: AuthChallenge +} diff --git a/packages/cdp-protocol/src/generated/domains/file-system.ts b/packages/cdp-protocol/src/generated/domains/file-system.ts new file mode 100644 index 000000000..d6c7f7f23 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/file-system.ts @@ -0,0 +1,35 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { TimeSinceEpoch } from './network' +import type { SerializedStorageKey } from './storage' + +// ══ Types ══ + +export interface File { + name: string + lastModified: TimeSinceEpoch + size: number + type: string +} + +export interface Directory { + name: string + nestedDirectories: string[] + nestedFiles: File[] +} + +export interface BucketFileSystemLocator { + storageKey: SerializedStorageKey + bucketName?: string + pathComponents: string[] +} + +// ══ Commands ══ + +export interface GetDirectoryParams { + bucketFileSystemLocator: BucketFileSystemLocator +} + +export interface GetDirectoryResult { + directory: Directory +} diff --git a/packages/cdp-protocol/src/generated/domains/headless-experimental.ts b/packages/cdp-protocol/src/generated/domains/headless-experimental.ts new file mode 100644 index 000000000..c4bc8269b --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/headless-experimental.ts @@ -0,0 +1,23 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export interface ScreenshotParams { + format?: 'jpeg' | 'png' | 'webp' + quality?: number + optimizeForSpeed?: boolean +} + +// ══ Commands ══ + +export interface BeginFrameParams { + frameTimeTicks?: number + interval?: number + noDisplayUpdates?: boolean + screenshot?: ScreenshotParams +} + +export interface BeginFrameResult { + hasDamage: boolean + screenshotData?: string +} diff --git a/packages/cdp-protocol/src/generated/domains/heap-profiler.ts b/packages/cdp-protocol/src/generated/domains/heap-profiler.ts new file mode 100644 index 000000000..cf1d6f8b7 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/heap-profiler.ts @@ -0,0 +1,102 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { CallFrame, RemoteObject, RemoteObjectId } from './runtime' + +// ══ Types ══ + +export type HeapSnapshotObjectId = string + +export interface SamplingHeapProfileNode { + callFrame: CallFrame + selfSize: number + id: number + children: SamplingHeapProfileNode[] +} + +export interface SamplingHeapProfileSample { + size: number + nodeId: number + ordinal: number +} + +export interface SamplingHeapProfile { + head: SamplingHeapProfileNode + samples: SamplingHeapProfileSample[] +} + +// ══ Commands ══ + +export interface AddInspectedHeapObjectParams { + heapObjectId: HeapSnapshotObjectId +} + +export interface GetHeapObjectIdParams { + objectId: RemoteObjectId +} + +export interface GetHeapObjectIdResult { + heapSnapshotObjectId: HeapSnapshotObjectId +} + +export interface GetObjectByHeapObjectIdParams { + objectId: HeapSnapshotObjectId + objectGroup?: string +} + +export interface GetObjectByHeapObjectIdResult { + result: RemoteObject +} + +export interface GetSamplingProfileResult { + profile: SamplingHeapProfile +} + +export interface StartSamplingParams { + samplingInterval?: number + stackDepth?: number + includeObjectsCollectedByMajorGC?: boolean + includeObjectsCollectedByMinorGC?: boolean +} + +export interface StartTrackingHeapObjectsParams { + trackAllocations?: boolean +} + +export interface StopSamplingResult { + profile: SamplingHeapProfile +} + +export interface StopTrackingHeapObjectsParams { + reportProgress?: boolean + treatGlobalObjectsAsRoots?: boolean + captureNumericValue?: boolean + exposeInternals?: boolean +} + +export interface TakeHeapSnapshotParams { + reportProgress?: boolean + treatGlobalObjectsAsRoots?: boolean + captureNumericValue?: boolean + exposeInternals?: boolean +} + +// ══ Events ══ + +export interface AddHeapSnapshotChunkEvent { + chunk: string +} + +export interface HeapStatsUpdateEvent { + statsUpdate: number[] +} + +export interface LastSeenObjectIdEvent { + lastSeenObjectId: number + timestamp: number +} + +export interface ReportHeapSnapshotProgressEvent { + done: number + total: number + finished?: boolean +} diff --git a/packages/cdp-protocol/src/generated/domains/history.ts b/packages/cdp-protocol/src/generated/domains/history.ts new file mode 100644 index 000000000..95d085bf1 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/history.ts @@ -0,0 +1,44 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type HistoryEntryID = string + +export interface HistoryEntry { + id: HistoryEntryID + url: string + title: string + lastVisitTime: number + visitCount: number + typedCount: number +} + +// ══ Commands ══ + +export interface SearchParams { + query: string + maxResults?: number + startTime?: number + endTime?: number +} + +export interface SearchResult { + entries: HistoryEntry[] +} + +export interface GetRecentParams { + maxResults?: number +} + +export interface GetRecentResult { + entries: HistoryEntry[] +} + +export interface DeleteUrlParams { + url: string +} + +export interface DeleteRangeParams { + startTime: number + endTime: number +} diff --git a/packages/cdp-protocol/src/generated/domains/indexed-db.ts b/packages/cdp-protocol/src/generated/domains/indexed-db.ts new file mode 100644 index 000000000..15e4a6ad4 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/indexed-db.ts @@ -0,0 +1,130 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { RemoteObject } from './runtime' +import type { StorageBucket } from './storage' + +// ══ Types ══ + +export interface DatabaseWithObjectStores { + name: string + version: number + objectStores: ObjectStore[] +} + +export interface ObjectStore { + name: string + keyPath: KeyPath + autoIncrement: boolean + indexes: ObjectStoreIndex[] +} + +export interface ObjectStoreIndex { + name: string + keyPath: KeyPath + unique: boolean + multiEntry: boolean +} + +export interface Key { + type: 'number' | 'string' | 'date' | 'array' + number?: number + string?: string + date?: number + array?: Key[] +} + +export interface KeyRange { + lower?: Key + upper?: Key + lowerOpen: boolean + upperOpen: boolean +} + +export interface DataEntry { + key: RemoteObject + primaryKey: RemoteObject + value: RemoteObject +} + +export interface KeyPath { + type: 'null' | 'string' | 'array' + string?: string + array?: string[] +} + +// ══ Commands ══ + +export interface ClearObjectStoreParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket + databaseName: string + objectStoreName: string +} + +export interface DeleteDatabaseParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket + databaseName: string +} + +export interface DeleteObjectStoreEntriesParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket + databaseName: string + objectStoreName: string + keyRange: KeyRange +} + +export interface RequestDataParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket + databaseName: string + objectStoreName: string + indexName?: string + skipCount: number + pageSize: number + keyRange?: KeyRange +} + +export interface RequestDataResult { + objectStoreDataEntries: DataEntry[] + hasMore: boolean +} + +export interface GetMetadataParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket + databaseName: string + objectStoreName: string +} + +export interface GetMetadataResult { + entriesCount: number + keyGeneratorValue: number +} + +export interface RequestDatabaseParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket + databaseName: string +} + +export interface RequestDatabaseResult { + databaseWithObjectStores: DatabaseWithObjectStores +} + +export interface RequestDatabaseNamesParams { + securityOrigin?: string + storageKey?: string + storageBucket?: StorageBucket +} + +export interface RequestDatabaseNamesResult { + databaseNames: string[] +} diff --git a/packages/cdp-protocol/src/generated/domains/input.ts b/packages/cdp-protocol/src/generated/domains/input.ts new file mode 100644 index 000000000..dd2fbb5e8 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/input.ts @@ -0,0 +1,165 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export interface TouchPoint { + x: number + y: number + radiusX?: number + radiusY?: number + rotationAngle?: number + force?: number + tangentialPressure?: number + tiltX?: number + tiltY?: number + twist?: number + id?: number +} + +export type GestureSourceType = 'default' | 'touch' | 'mouse' + +export type MouseButton = + | 'none' + | 'left' + | 'middle' + | 'right' + | 'back' + | 'forward' + +export type TimeSinceEpoch = number + +export interface DragDataItem { + mimeType: string + data: string + title?: string + baseURL?: string +} + +export interface DragData { + items: DragDataItem[] + files?: string[] + dragOperationsMask: number +} + +// ══ Commands ══ + +export interface DispatchDragEventParams { + type: 'dragEnter' | 'dragOver' | 'drop' | 'dragCancel' + x: number + y: number + data: DragData + modifiers?: number +} + +export interface DispatchKeyEventParams { + type: 'keyDown' | 'keyUp' | 'rawKeyDown' | 'char' + modifiers?: number + timestamp?: TimeSinceEpoch + text?: string + unmodifiedText?: string + keyIdentifier?: string + code?: string + key?: string + windowsVirtualKeyCode?: number + nativeVirtualKeyCode?: number + autoRepeat?: boolean + isKeypad?: boolean + isSystemKey?: boolean + location?: number + commands?: string[] +} + +export interface InsertTextParams { + text: string +} + +export interface ImeSetCompositionParams { + text: string + selectionStart: number + selectionEnd: number + replacementStart?: number + replacementEnd?: number +} + +export interface DispatchMouseEventParams { + type: 'mousePressed' | 'mouseReleased' | 'mouseMoved' | 'mouseWheel' + x: number + y: number + modifiers?: number + timestamp?: TimeSinceEpoch + button?: MouseButton + buttons?: number + clickCount?: number + force?: number + tangentialPressure?: number + tiltX?: number + tiltY?: number + twist?: number + deltaX?: number + deltaY?: number + pointerType?: 'mouse' | 'pen' +} + +export interface DispatchTouchEventParams { + type: 'touchStart' | 'touchEnd' | 'touchMove' | 'touchCancel' + touchPoints: TouchPoint[] + modifiers?: number + timestamp?: TimeSinceEpoch +} + +export interface EmulateTouchFromMouseEventParams { + type: 'mousePressed' | 'mouseReleased' | 'mouseMoved' | 'mouseWheel' + x: number + y: number + button: MouseButton + timestamp?: TimeSinceEpoch + deltaX?: number + deltaY?: number + modifiers?: number + clickCount?: number +} + +export interface SetIgnoreInputEventsParams { + ignore: boolean +} + +export interface SetInterceptDragsParams { + enabled: boolean +} + +export interface SynthesizePinchGestureParams { + x: number + y: number + scaleFactor: number + relativeSpeed?: number + gestureSourceType?: GestureSourceType +} + +export interface SynthesizeScrollGestureParams { + x: number + y: number + xDistance?: number + yDistance?: number + xOverscroll?: number + yOverscroll?: number + preventFling?: boolean + speed?: number + gestureSourceType?: GestureSourceType + repeatCount?: number + repeatDelayMs?: number + interactionMarkerName?: string +} + +export interface SynthesizeTapGestureParams { + x: number + y: number + duration?: number + tapCount?: number + gestureSourceType?: GestureSourceType +} + +// ══ Events ══ + +export interface DragInterceptedEvent { + data: DragData +} diff --git a/packages/cdp-protocol/src/generated/domains/inspector.ts b/packages/cdp-protocol/src/generated/domains/inspector.ts new file mode 100644 index 000000000..db75604ce --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/inspector.ts @@ -0,0 +1,9 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Commands ══ + +// ══ Events ══ + +export interface DetachedEvent { + reason: string +} diff --git a/packages/cdp-protocol/src/generated/domains/io.ts b/packages/cdp-protocol/src/generated/domains/io.ts new file mode 100644 index 000000000..6324e4009 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/io.ts @@ -0,0 +1,33 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { RemoteObjectId } from './runtime' + +// ══ Types ══ + +export type StreamHandle = string + +// ══ Commands ══ + +export interface CloseParams { + handle: StreamHandle +} + +export interface ReadParams { + handle: StreamHandle + offset?: number + size?: number +} + +export interface ReadResult { + base64Encoded?: boolean + data: string + eof: boolean +} + +export interface ResolveBlobParams { + objectId: RemoteObjectId +} + +export interface ResolveBlobResult { + uuid: string +} diff --git a/packages/cdp-protocol/src/generated/domains/layer-tree.ts b/packages/cdp-protocol/src/generated/domains/layer-tree.ts new file mode 100644 index 000000000..8c136284a --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/layer-tree.ts @@ -0,0 +1,120 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId, Rect } from './dom' + +// ══ Types ══ + +export type LayerId = string + +export type SnapshotId = string + +export interface ScrollRect { + rect: Rect + type: 'RepaintsOnScroll' | 'TouchEventHandler' | 'WheelEventHandler' +} + +export interface StickyPositionConstraint { + stickyBoxRect: Rect + containingBlockRect: Rect + nearestLayerShiftingStickyBox?: LayerId + nearestLayerShiftingContainingBlock?: LayerId +} + +export interface PictureTile { + x: number + y: number + picture: string +} + +export interface Layer { + layerId: LayerId + parentLayerId?: LayerId + backendNodeId?: BackendNodeId + offsetX: number + offsetY: number + width: number + height: number + transform?: number[] + anchorX?: number + anchorY?: number + anchorZ?: number + paintCount: number + drawsContent: boolean + invisible?: boolean + scrollRects?: ScrollRect[] + stickyPositionConstraint?: StickyPositionConstraint +} + +export type PaintProfile = number[] + +// ══ Commands ══ + +export interface CompositingReasonsParams { + layerId: LayerId +} + +export interface CompositingReasonsResult { + compositingReasons: string[] + compositingReasonIds: string[] +} + +export interface LoadSnapshotParams { + tiles: PictureTile[] +} + +export interface LoadSnapshotResult { + snapshotId: SnapshotId +} + +export interface MakeSnapshotParams { + layerId: LayerId +} + +export interface MakeSnapshotResult { + snapshotId: SnapshotId +} + +export interface ProfileSnapshotParams { + snapshotId: SnapshotId + minRepeatCount?: number + minDuration?: number + clipRect?: Rect +} + +export interface ProfileSnapshotResult { + timings: PaintProfile[] +} + +export interface ReleaseSnapshotParams { + snapshotId: SnapshotId +} + +export interface ReplaySnapshotParams { + snapshotId: SnapshotId + fromStep?: number + toStep?: number + scale?: number +} + +export interface ReplaySnapshotResult { + dataURL: string +} + +export interface SnapshotCommandLogParams { + snapshotId: SnapshotId +} + +export interface SnapshotCommandLogResult { + commandLog: Record[] +} + +// ══ Events ══ + +export interface LayerPaintedEvent { + layerId: LayerId + clip: Rect +} + +export interface LayerTreeDidChangeEvent { + layers?: Layer[] +} diff --git a/packages/cdp-protocol/src/generated/domains/log.ts b/packages/cdp-protocol/src/generated/domains/log.ts new file mode 100644 index 000000000..785bd6242 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/log.ts @@ -0,0 +1,57 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { RequestId } from './network' +import type { RemoteObject, StackTrace, Timestamp } from './runtime' + +// ══ Types ══ + +export interface LogEntry { + source: + | 'xml' + | 'javascript' + | 'network' + | 'storage' + | 'appcache' + | 'rendering' + | 'security' + | 'deprecation' + | 'worker' + | 'violation' + | 'intervention' + | 'recommendation' + | 'other' + level: 'verbose' | 'info' | 'warning' | 'error' + text: string + category?: 'cors' + timestamp: Timestamp + url?: string + lineNumber?: number + stackTrace?: StackTrace + networkRequestId?: RequestId + workerId?: string + args?: RemoteObject[] +} + +export interface ViolationSetting { + name: + | 'longTask' + | 'longLayout' + | 'blockedEvent' + | 'blockedParser' + | 'discouragedAPIUse' + | 'handler' + | 'recurringHandler' + threshold: number +} + +// ══ Commands ══ + +export interface StartViolationsReportParams { + config: ViolationSetting[] +} + +// ══ Events ══ + +export interface EntryAddedEvent { + entry: LogEntry +} diff --git a/packages/cdp-protocol/src/generated/domains/media.ts b/packages/cdp-protocol/src/generated/domains/media.ts new file mode 100644 index 000000000..4d7163110 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/media.ts @@ -0,0 +1,70 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId } from './dom' + +// ══ Types ══ + +export type PlayerId = string + +export type Timestamp = number + +export interface PlayerMessage { + level: 'error' | 'warning' | 'info' | 'debug' + message: string +} + +export interface PlayerProperty { + name: string + value: string +} + +export interface PlayerEvent { + timestamp: Timestamp + value: string +} + +export interface PlayerErrorSourceLocation { + file: string + line: number +} + +export interface PlayerError { + errorType: string + code: number + stack: PlayerErrorSourceLocation[] + cause: PlayerError[] + data: Record +} + +export interface Player { + playerId: PlayerId + domNodeId?: BackendNodeId +} + +// ══ Commands ══ + +// ══ Events ══ + +export interface PlayerPropertiesChangedEvent { + playerId: PlayerId + properties: PlayerProperty[] +} + +export interface PlayerEventsAddedEvent { + playerId: PlayerId + events: PlayerEvent[] +} + +export interface PlayerMessagesLoggedEvent { + playerId: PlayerId + messages: PlayerMessage[] +} + +export interface PlayerErrorsRaisedEvent { + playerId: PlayerId + errors: PlayerError[] +} + +export interface PlayerCreatedEvent { + player: Player +} diff --git a/packages/cdp-protocol/src/generated/domains/memory.ts b/packages/cdp-protocol/src/generated/domains/memory.ts new file mode 100644 index 000000000..51fede076 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/memory.ts @@ -0,0 +1,65 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type PressureLevel = 'moderate' | 'critical' + +export interface SamplingProfileNode { + size: number + total: number + stack: string[] +} + +export interface SamplingProfile { + samples: SamplingProfileNode[] + modules: Module[] +} + +export interface Module { + name: string + uuid: string + baseAddress: string + size: number +} + +export interface DOMCounter { + name: string + count: number +} + +// ══ Commands ══ + +export interface GetDOMCountersResult { + documents: number + nodes: number + jsEventListeners: number +} + +export interface GetDOMCountersForLeakDetectionResult { + counters: DOMCounter[] +} + +export interface SetPressureNotificationsSuppressedParams { + suppressed: boolean +} + +export interface SimulatePressureNotificationParams { + level: PressureLevel +} + +export interface StartSamplingParams { + samplingInterval?: number + suppressRandomness?: boolean +} + +export interface GetAllTimeSamplingProfileResult { + profile: SamplingProfile +} + +export interface GetBrowserSamplingProfileResult { + profile: SamplingProfile +} + +export interface GetSamplingProfileResult { + profile: SamplingProfile +} diff --git a/packages/cdp-protocol/src/generated/domains/network.ts b/packages/cdp-protocol/src/generated/domains/network.ts new file mode 100644 index 000000000..f130e1b8f --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/network.ts @@ -0,0 +1,1386 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { SearchMatch } from './debugger' +import type { UserAgentMetadata } from './emulation' +import type { StreamHandle } from './io' +import type { FrameId } from './page' +import type { StackTrace } from './runtime' +import type { CertificateId, MixedContentType, SecurityState } from './security' + +// ══ Types ══ + +export type ResourceType = + | 'Document' + | 'Stylesheet' + | 'Image' + | 'Media' + | 'Font' + | 'Script' + | 'TextTrack' + | 'XHR' + | 'Fetch' + | 'Prefetch' + | 'EventSource' + | 'WebSocket' + | 'Manifest' + | 'SignedExchange' + | 'Ping' + | 'CSPViolationReport' + | 'Preflight' + | 'FedCM' + | 'Other' + +export type LoaderId = string + +export type RequestId = string + +export type InterceptionId = string + +export type ErrorReason = + | 'Failed' + | 'Aborted' + | 'TimedOut' + | 'AccessDenied' + | 'ConnectionClosed' + | 'ConnectionReset' + | 'ConnectionRefused' + | 'ConnectionAborted' + | 'ConnectionFailed' + | 'NameNotResolved' + | 'InternetDisconnected' + | 'AddressUnreachable' + | 'BlockedByClient' + | 'BlockedByResponse' + +export type TimeSinceEpoch = number + +export type MonotonicTime = number + +export type Headers = Record + +export type ConnectionType = + | 'none' + | 'cellular2g' + | 'cellular3g' + | 'cellular4g' + | 'bluetooth' + | 'ethernet' + | 'wifi' + | 'wimax' + | 'other' + +export type CookieSameSite = 'Strict' | 'Lax' | 'None' + +export type CookiePriority = 'Low' | 'Medium' | 'High' + +export type CookieSourceScheme = 'Unset' | 'NonSecure' | 'Secure' + +export interface ResourceTiming { + requestTime: number + proxyStart: number + proxyEnd: number + dnsStart: number + dnsEnd: number + connectStart: number + connectEnd: number + sslStart: number + sslEnd: number + workerStart: number + workerReady: number + workerFetchStart: number + workerRespondWithSettled: number + workerRouterEvaluationStart?: number + workerCacheLookupStart?: number + sendStart: number + sendEnd: number + pushStart: number + pushEnd: number + receiveHeadersStart: number + receiveHeadersEnd: number +} + +export type ResourcePriority = + | 'VeryLow' + | 'Low' + | 'Medium' + | 'High' + | 'VeryHigh' + +export type RenderBlockingBehavior = + | 'Blocking' + | 'InBodyParserBlocking' + | 'NonBlocking' + | 'NonBlockingDynamic' + | 'PotentiallyBlocking' + +export interface PostDataEntry { + bytes?: string +} + +export interface Request { + url: string + urlFragment?: string + method: string + headers: Headers + postData?: string + hasPostData?: boolean + postDataEntries?: PostDataEntry[] + mixedContentType?: MixedContentType + initialPriority: ResourcePriority + referrerPolicy: + | 'unsafe-url' + | 'no-referrer-when-downgrade' + | 'no-referrer' + | 'origin' + | 'origin-when-cross-origin' + | 'same-origin' + | 'strict-origin' + | 'strict-origin-when-cross-origin' + isLinkPreload?: boolean + trustTokenParams?: TrustTokenParams + isSameSite?: boolean + isAdRelated?: boolean +} + +export interface SignedCertificateTimestamp { + status: string + origin: string + logDescription: string + logId: string + timestamp: number + hashAlgorithm: string + signatureAlgorithm: string + signatureData: string +} + +export interface SecurityDetails { + protocol: string + keyExchange: string + keyExchangeGroup?: string + cipher: string + mac?: string + certificateId: CertificateId + subjectName: string + sanList: string[] + issuer: string + validFrom: TimeSinceEpoch + validTo: TimeSinceEpoch + signedCertificateTimestampList: SignedCertificateTimestamp[] + certificateTransparencyCompliance: CertificateTransparencyCompliance + serverSignatureAlgorithm?: number + encryptedClientHello: boolean +} + +export type CertificateTransparencyCompliance = + | 'unknown' + | 'not-compliant' + | 'compliant' + +export type BlockedReason = + | 'other' + | 'csp' + | 'mixed-content' + | 'origin' + | 'inspector' + | 'integrity' + | 'subresource-filter' + | 'content-type' + | 'coep-frame-resource-needs-coep-header' + | 'coop-sandboxed-iframe-cannot-navigate-to-coop-page' + | 'corp-not-same-origin' + | 'corp-not-same-origin-after-defaulted-to-same-origin-by-coep' + | 'corp-not-same-origin-after-defaulted-to-same-origin-by-dip' + | 'corp-not-same-origin-after-defaulted-to-same-origin-by-coep-and-dip' + | 'corp-not-same-site' + | 'sri-message-signature-mismatch' + +export type CorsError = + | 'DisallowedByMode' + | 'InvalidResponse' + | 'WildcardOriginNotAllowed' + | 'MissingAllowOriginHeader' + | 'MultipleAllowOriginValues' + | 'InvalidAllowOriginValue' + | 'AllowOriginMismatch' + | 'InvalidAllowCredentials' + | 'CorsDisabledScheme' + | 'PreflightInvalidStatus' + | 'PreflightDisallowedRedirect' + | 'PreflightWildcardOriginNotAllowed' + | 'PreflightMissingAllowOriginHeader' + | 'PreflightMultipleAllowOriginValues' + | 'PreflightInvalidAllowOriginValue' + | 'PreflightAllowOriginMismatch' + | 'PreflightInvalidAllowCredentials' + | 'PreflightMissingAllowExternal' + | 'PreflightInvalidAllowExternal' + | 'PreflightMissingAllowPrivateNetwork' + | 'PreflightInvalidAllowPrivateNetwork' + | 'InvalidAllowMethodsPreflightResponse' + | 'InvalidAllowHeadersPreflightResponse' + | 'MethodDisallowedByPreflightResponse' + | 'HeaderDisallowedByPreflightResponse' + | 'RedirectContainsCredentials' + | 'InsecurePrivateNetwork' + | 'InvalidPrivateNetworkAccess' + | 'UnexpectedPrivateNetworkAccess' + | 'NoCorsRedirectModeNotFollow' + | 'PreflightMissingPrivateNetworkAccessId' + | 'PreflightMissingPrivateNetworkAccessName' + | 'PrivateNetworkAccessPermissionUnavailable' + | 'PrivateNetworkAccessPermissionDenied' + | 'LocalNetworkAccessPermissionDenied' + +export interface CorsErrorStatus { + corsError: CorsError + failedParameter: string +} + +export type ServiceWorkerResponseSource = + | 'cache-storage' + | 'http-cache' + | 'fallback-code' + | 'network' + +export interface TrustTokenParams { + operation: TrustTokenOperationType + refreshPolicy: 'UseCached' | 'Refresh' + issuers?: string[] +} + +export type TrustTokenOperationType = 'Issuance' | 'Redemption' | 'Signing' + +export type AlternateProtocolUsage = + | 'alternativeJobWonWithoutRace' + | 'alternativeJobWonRace' + | 'mainJobWonRace' + | 'mappingMissing' + | 'broken' + | 'dnsAlpnH3JobWonWithoutRace' + | 'dnsAlpnH3JobWonRace' + | 'unspecifiedReason' + +export type ServiceWorkerRouterSource = + | 'network' + | 'cache' + | 'fetch-event' + | 'race-network-and-fetch-handler' + | 'race-network-and-cache' + +export interface ServiceWorkerRouterInfo { + ruleIdMatched?: number + matchedSourceType?: ServiceWorkerRouterSource + actualSourceType?: ServiceWorkerRouterSource +} + +export interface Response { + url: string + status: number + statusText: string + headers: Headers + headersText?: string + mimeType: string + charset: string + requestHeaders?: Headers + requestHeadersText?: string + connectionReused: boolean + connectionId: number + remoteIPAddress?: string + remotePort?: number + fromDiskCache?: boolean + fromServiceWorker?: boolean + fromPrefetchCache?: boolean + fromEarlyHints?: boolean + serviceWorkerRouterInfo?: ServiceWorkerRouterInfo + encodedDataLength: number + timing?: ResourceTiming + serviceWorkerResponseSource?: ServiceWorkerResponseSource + responseTime?: TimeSinceEpoch + cacheStorageCacheName?: string + protocol?: string + alternateProtocolUsage?: AlternateProtocolUsage + securityState: SecurityState + securityDetails?: SecurityDetails +} + +export interface WebSocketRequest { + headers: Headers +} + +export interface WebSocketResponse { + status: number + statusText: string + headers: Headers + headersText?: string + requestHeaders?: Headers + requestHeadersText?: string +} + +export interface WebSocketFrame { + opcode: number + mask: boolean + payloadData: string +} + +export interface CachedResource { + url: string + type: ResourceType + response?: Response + bodySize: number +} + +export interface Initiator { + type: + | 'parser' + | 'script' + | 'preload' + | 'SignedExchange' + | 'preflight' + | 'FedCM' + | 'other' + stack?: StackTrace + url?: string + lineNumber?: number + columnNumber?: number + requestId?: RequestId +} + +export interface CookiePartitionKey { + topLevelSite: string + hasCrossSiteAncestor: boolean +} + +export interface Cookie { + name: string + value: string + domain: string + path: string + expires: number + size: number + httpOnly: boolean + secure: boolean + session: boolean + sameSite?: CookieSameSite + priority: CookiePriority + sameParty: boolean + sourceScheme: CookieSourceScheme + sourcePort: number + partitionKey?: CookiePartitionKey + partitionKeyOpaque?: boolean +} + +export type SetCookieBlockedReason = + | 'SecureOnly' + | 'SameSiteStrict' + | 'SameSiteLax' + | 'SameSiteUnspecifiedTreatedAsLax' + | 'SameSiteNoneInsecure' + | 'UserPreferences' + | 'ThirdPartyPhaseout' + | 'ThirdPartyBlockedInFirstPartySet' + | 'SyntaxError' + | 'SchemeNotSupported' + | 'OverwriteSecure' + | 'InvalidDomain' + | 'InvalidPrefix' + | 'UnknownError' + | 'SchemefulSameSiteStrict' + | 'SchemefulSameSiteLax' + | 'SchemefulSameSiteUnspecifiedTreatedAsLax' + | 'SamePartyFromCrossPartyContext' + | 'SamePartyConflictsWithOtherAttributes' + | 'NameValuePairExceedsMaxSize' + | 'DisallowedCharacter' + | 'NoCookieContent' + +export type CookieBlockedReason = + | 'SecureOnly' + | 'NotOnPath' + | 'DomainMismatch' + | 'SameSiteStrict' + | 'SameSiteLax' + | 'SameSiteUnspecifiedTreatedAsLax' + | 'SameSiteNoneInsecure' + | 'UserPreferences' + | 'ThirdPartyPhaseout' + | 'ThirdPartyBlockedInFirstPartySet' + | 'UnknownError' + | 'SchemefulSameSiteStrict' + | 'SchemefulSameSiteLax' + | 'SchemefulSameSiteUnspecifiedTreatedAsLax' + | 'SamePartyFromCrossPartyContext' + | 'NameValuePairExceedsMaxSize' + | 'PortMismatch' + | 'SchemeMismatch' + | 'AnonymousContext' + +export type CookieExemptionReason = + | 'None' + | 'UserSetting' + | 'TPCDMetadata' + | 'TPCDDeprecationTrial' + | 'TopLevelTPCDDeprecationTrial' + | 'TPCDHeuristics' + | 'EnterprisePolicy' + | 'StorageAccess' + | 'TopLevelStorageAccess' + | 'Scheme' + | 'SameSiteNoneCookiesInSandbox' + +export interface BlockedSetCookieWithReason { + blockedReasons: SetCookieBlockedReason[] + cookieLine: string + cookie?: Cookie +} + +export interface ExemptedSetCookieWithReason { + exemptionReason: CookieExemptionReason + cookieLine: string + cookie: Cookie +} + +export interface AssociatedCookie { + cookie: Cookie + blockedReasons: CookieBlockedReason[] + exemptionReason?: CookieExemptionReason +} + +export interface CookieParam { + name: string + value: string + url?: string + domain?: string + path?: string + secure?: boolean + httpOnly?: boolean + sameSite?: CookieSameSite + expires?: TimeSinceEpoch + priority?: CookiePriority + sameParty?: boolean + sourceScheme?: CookieSourceScheme + sourcePort?: number + partitionKey?: CookiePartitionKey +} + +export interface AuthChallenge { + source?: 'Server' | 'Proxy' + origin: string + scheme: string + realm: string +} + +export interface AuthChallengeResponse { + response: 'Default' | 'CancelAuth' | 'ProvideCredentials' + username?: string + password?: string +} + +export type InterceptionStage = 'Request' | 'HeadersReceived' + +export interface RequestPattern { + urlPattern?: string + resourceType?: ResourceType + interceptionStage?: InterceptionStage +} + +export interface SignedExchangeSignature { + label: string + signature: string + integrity: string + certUrl?: string + certSha256?: string + validityUrl: string + date: number + expires: number + certificates?: string[] +} + +export interface SignedExchangeHeader { + requestUrl: string + responseCode: number + responseHeaders: Headers + signatures: SignedExchangeSignature[] + headerIntegrity: string +} + +export type SignedExchangeErrorField = + | 'signatureSig' + | 'signatureIntegrity' + | 'signatureCertUrl' + | 'signatureCertSha256' + | 'signatureValidityUrl' + | 'signatureTimestamps' + +export interface SignedExchangeError { + message: string + signatureIndex?: number + errorField?: SignedExchangeErrorField +} + +export interface SignedExchangeInfo { + outerResponse: Response + hasExtraInfo: boolean + header?: SignedExchangeHeader + securityDetails?: SecurityDetails + errors?: SignedExchangeError[] +} + +export type ContentEncoding = 'deflate' | 'gzip' | 'br' | 'zstd' + +export interface NetworkConditions { + urlPattern: string + latency: number + downloadThroughput: number + uploadThroughput: number + connectionType?: ConnectionType + packetLoss?: number + packetQueueLength?: number + packetReordering?: boolean +} + +export interface BlockPattern { + urlPattern: string + block: boolean +} + +export type DirectSocketDnsQueryType = 'ipv4' | 'ipv6' + +export interface DirectTCPSocketOptions { + noDelay: boolean + keepAliveDelay?: number + sendBufferSize?: number + receiveBufferSize?: number + dnsQueryType?: DirectSocketDnsQueryType +} + +export interface DirectUDPSocketOptions { + remoteAddr?: string + remotePort?: number + localAddr?: string + localPort?: number + dnsQueryType?: DirectSocketDnsQueryType + sendBufferSize?: number + receiveBufferSize?: number + multicastLoopback?: boolean + multicastTimeToLive?: number + multicastAllowAddressSharing?: boolean +} + +export interface DirectUDPMessage { + data: string + remoteAddr?: string + remotePort?: number +} + +export type PrivateNetworkRequestPolicy = + | 'Allow' + | 'BlockFromInsecureToMorePrivate' + | 'WarnFromInsecureToMorePrivate' + | 'PermissionBlock' + | 'PermissionWarn' + +export type IPAddressSpace = 'Loopback' | 'Local' | 'Public' | 'Unknown' + +export interface ConnectTiming { + requestTime: number +} + +export interface ClientSecurityState { + initiatorIsSecureContext: boolean + initiatorIPAddressSpace: IPAddressSpace + privateNetworkRequestPolicy: PrivateNetworkRequestPolicy +} + +export type CrossOriginOpenerPolicyValue = + | 'SameOrigin' + | 'SameOriginAllowPopups' + | 'RestrictProperties' + | 'UnsafeNone' + | 'SameOriginPlusCoep' + | 'RestrictPropertiesPlusCoep' + | 'NoopenerAllowPopups' + +export interface CrossOriginOpenerPolicyStatus { + value: CrossOriginOpenerPolicyValue + reportOnlyValue: CrossOriginOpenerPolicyValue + reportingEndpoint?: string + reportOnlyReportingEndpoint?: string +} + +export type CrossOriginEmbedderPolicyValue = + | 'None' + | 'Credentialless' + | 'RequireCorp' + +export interface CrossOriginEmbedderPolicyStatus { + value: CrossOriginEmbedderPolicyValue + reportOnlyValue: CrossOriginEmbedderPolicyValue + reportingEndpoint?: string + reportOnlyReportingEndpoint?: string +} + +export type ContentSecurityPolicySource = 'HTTP' | 'Meta' + +export interface ContentSecurityPolicyStatus { + effectiveDirectives: string + isEnforced: boolean + source: ContentSecurityPolicySource +} + +export interface SecurityIsolationStatus { + coop?: CrossOriginOpenerPolicyStatus + coep?: CrossOriginEmbedderPolicyStatus + csp?: ContentSecurityPolicyStatus[] +} + +export type ReportStatus = 'Queued' | 'Pending' | 'MarkedForRemoval' | 'Success' + +export type ReportId = string + +export interface ReportingApiReport { + id: ReportId + initiatorUrl: string + destination: string + type: string + timestamp: TimeSinceEpoch + depth: number + completedAttempts: number + body: Record + status: ReportStatus +} + +export interface ReportingApiEndpoint { + url: string + groupName: string +} + +export interface DeviceBoundSessionKey { + site: string + id: string +} + +export interface DeviceBoundSessionCookieCraving { + name: string + domain: string + path: string + secure: boolean + httpOnly: boolean + sameSite?: CookieSameSite +} + +export interface DeviceBoundSessionUrlRule { + ruleType: 'Exclude' | 'Include' + hostPattern: string + pathPrefix: string +} + +export interface DeviceBoundSessionInclusionRules { + origin: string + includeSite: boolean + urlRules: DeviceBoundSessionUrlRule[] +} + +export interface DeviceBoundSession { + key: DeviceBoundSessionKey + refreshUrl: string + inclusionRules: DeviceBoundSessionInclusionRules + cookieCravings: DeviceBoundSessionCookieCraving[] + expiryDate: TimeSinceEpoch + cachedChallenge?: string + allowedRefreshInitiators: string[] +} + +export type DeviceBoundSessionEventId = string + +export type DeviceBoundSessionFetchResult = + | 'Success' + | 'KeyError' + | 'SigningError' + | 'ServerRequestedTermination' + | 'InvalidSessionId' + | 'InvalidChallenge' + | 'TooManyChallenges' + | 'InvalidFetcherUrl' + | 'InvalidRefreshUrl' + | 'TransientHttpError' + | 'ScopeOriginSameSiteMismatch' + | 'RefreshUrlSameSiteMismatch' + | 'MismatchedSessionId' + | 'MissingScope' + | 'NoCredentials' + | 'SubdomainRegistrationWellKnownUnavailable' + | 'SubdomainRegistrationUnauthorized' + | 'SubdomainRegistrationWellKnownMalformed' + | 'SessionProviderWellKnownUnavailable' + | 'RelyingPartyWellKnownUnavailable' + | 'FederatedKeyThumbprintMismatch' + | 'InvalidFederatedSessionUrl' + | 'InvalidFederatedKey' + | 'TooManyRelyingOriginLabels' + | 'BoundCookieSetForbidden' + | 'NetError' + | 'ProxyError' + | 'EmptySessionConfig' + | 'InvalidCredentialsConfig' + | 'InvalidCredentialsType' + | 'InvalidCredentialsEmptyName' + | 'InvalidCredentialsCookie' + | 'PersistentHttpError' + | 'RegistrationAttemptedChallenge' + | 'InvalidScopeOrigin' + | 'ScopeOriginContainsPath' + | 'RefreshInitiatorNotString' + | 'RefreshInitiatorInvalidHostPattern' + | 'InvalidScopeSpecification' + | 'MissingScopeSpecificationType' + | 'EmptyScopeSpecificationDomain' + | 'EmptyScopeSpecificationPath' + | 'InvalidScopeSpecificationType' + | 'InvalidScopeIncludeSite' + | 'MissingScopeIncludeSite' + | 'FederatedNotAuthorizedByProvider' + | 'FederatedNotAuthorizedByRelyingParty' + | 'SessionProviderWellKnownMalformed' + | 'SessionProviderWellKnownHasProviderOrigin' + | 'RelyingPartyWellKnownMalformed' + | 'RelyingPartyWellKnownHasRelyingOrigins' + | 'InvalidFederatedSessionProviderSessionMissing' + | 'InvalidFederatedSessionWrongProviderOrigin' + | 'InvalidCredentialsCookieCreationTime' + | 'InvalidCredentialsCookieName' + | 'InvalidCredentialsCookieParsing' + | 'InvalidCredentialsCookieUnpermittedAttribute' + | 'InvalidCredentialsCookieInvalidDomain' + | 'InvalidCredentialsCookiePrefix' + | 'InvalidScopeRulePath' + | 'InvalidScopeRuleHostPattern' + | 'ScopeRuleOriginScopedHostPatternMismatch' + | 'ScopeRuleSiteScopedHostPatternMismatch' + | 'SigningQuotaExceeded' + | 'InvalidConfigJson' + | 'InvalidFederatedSessionProviderFailedToRestoreKey' + | 'FailedToUnwrapKey' + | 'SessionDeletedDuringRefresh' + +export interface CreationEventDetails { + fetchResult: DeviceBoundSessionFetchResult + newSession?: DeviceBoundSession +} + +export interface RefreshEventDetails { + refreshResult: + | 'Refreshed' + | 'InitializedService' + | 'Unreachable' + | 'ServerError' + | 'RefreshQuotaExceeded' + | 'FatalError' + | 'SigningQuotaExceeded' + fetchResult?: DeviceBoundSessionFetchResult + newSession?: DeviceBoundSession + wasFullyProactiveRefresh: boolean +} + +export interface TerminationEventDetails { + deletionReason: + | 'Expired' + | 'FailedToRestoreKey' + | 'FailedToUnwrapKey' + | 'StoragePartitionCleared' + | 'ClearBrowsingData' + | 'ServerRequested' + | 'InvalidSessionParams' + | 'RefreshFatalError' +} + +export interface ChallengeEventDetails { + challengeResult: + | 'Success' + | 'NoSessionId' + | 'NoSessionMatch' + | 'CantSetBoundCookie' + challenge: string +} + +export interface LoadNetworkResourcePageResult { + success: boolean + netError?: number + netErrorName?: string + httpStatusCode?: number + stream?: StreamHandle + headers?: Headers +} + +export interface LoadNetworkResourceOptions { + disableCache: boolean + includeCredentials: boolean +} + +// ══ Commands ══ + +export interface SetAcceptedEncodingsParams { + encodings: ContentEncoding[] +} + +export interface CanClearBrowserCacheResult { + result: boolean +} + +export interface CanClearBrowserCookiesResult { + result: boolean +} + +export interface CanEmulateNetworkConditionsResult { + result: boolean +} + +export interface ContinueInterceptedRequestParams { + interceptionId: InterceptionId + errorReason?: ErrorReason + rawResponse?: string + url?: string + method?: string + postData?: string + headers?: Headers + authChallengeResponse?: AuthChallengeResponse +} + +export interface DeleteCookiesParams { + name: string + url?: string + domain?: string + path?: string + partitionKey?: CookiePartitionKey +} + +export interface EmulateNetworkConditionsParams { + offline: boolean + latency: number + downloadThroughput: number + uploadThroughput: number + connectionType?: ConnectionType + packetLoss?: number + packetQueueLength?: number + packetReordering?: boolean +} + +export interface EmulateNetworkConditionsByRuleParams { + offline: boolean + matchedNetworkConditions: NetworkConditions[] +} + +export interface EmulateNetworkConditionsByRuleResult { + ruleIds: string[] +} + +export interface OverrideNetworkStateParams { + offline: boolean + latency: number + downloadThroughput: number + uploadThroughput: number + connectionType?: ConnectionType +} + +export interface EnableParams { + maxTotalBufferSize?: number + maxResourceBufferSize?: number + maxPostDataSize?: number + reportDirectSocketTraffic?: boolean + enableDurableMessages?: boolean +} + +export interface ConfigureDurableMessagesParams { + maxTotalBufferSize?: number + maxResourceBufferSize?: number +} + +export interface GetAllCookiesResult { + cookies: Cookie[] +} + +export interface GetCertificateParams { + origin: string +} + +export interface GetCertificateResult { + tableNames: string[] +} + +export interface GetCookiesParams { + urls?: string[] +} + +export interface GetCookiesResult { + cookies: Cookie[] +} + +export interface GetResponseBodyParams { + requestId: RequestId +} + +export interface GetResponseBodyResult { + body: string + base64Encoded: boolean +} + +export interface GetRequestPostDataParams { + requestId: RequestId +} + +export interface GetRequestPostDataResult { + postData: string + base64Encoded: boolean +} + +export interface GetResponseBodyForInterceptionParams { + interceptionId: InterceptionId +} + +export interface GetResponseBodyForInterceptionResult { + body: string + base64Encoded: boolean +} + +export interface TakeResponseBodyForInterceptionAsStreamParams { + interceptionId: InterceptionId +} + +export interface TakeResponseBodyForInterceptionAsStreamResult { + stream: StreamHandle +} + +export interface ReplayXHRParams { + requestId: RequestId +} + +export interface SearchInResponseBodyParams { + requestId: RequestId + query: string + caseSensitive?: boolean + isRegex?: boolean +} + +export interface SearchInResponseBodyResult { + result: SearchMatch[] +} + +export interface SetBlockedURLsParams { + urlPatterns?: BlockPattern[] + urls?: string[] +} + +export interface SetBypassServiceWorkerParams { + bypass: boolean +} + +export interface SetCacheDisabledParams { + cacheDisabled: boolean +} + +export interface SetCookieParams { + name: string + value: string + url?: string + domain?: string + path?: string + secure?: boolean + httpOnly?: boolean + sameSite?: CookieSameSite + expires?: TimeSinceEpoch + priority?: CookiePriority + sameParty?: boolean + sourceScheme?: CookieSourceScheme + sourcePort?: number + partitionKey?: CookiePartitionKey +} + +export interface SetCookieResult { + success: boolean +} + +export interface SetCookiesParams { + cookies: CookieParam[] +} + +export interface SetExtraHTTPHeadersParams { + headers: Headers +} + +export interface SetAttachDebugStackParams { + enabled: boolean +} + +export interface SetRequestInterceptionParams { + patterns: RequestPattern[] +} + +export interface SetUserAgentOverrideParams { + userAgent: string + acceptLanguage?: string + platform?: string + userAgentMetadata?: UserAgentMetadata +} + +export interface StreamResourceContentParams { + requestId: RequestId +} + +export interface StreamResourceContentResult { + bufferedData: string +} + +export interface GetSecurityIsolationStatusParams { + frameId?: FrameId +} + +export interface GetSecurityIsolationStatusResult { + status: SecurityIsolationStatus +} + +export interface EnableReportingApiParams { + enable: boolean +} + +export interface EnableDeviceBoundSessionsParams { + enable: boolean +} + +export interface FetchSchemefulSiteParams { + origin: string +} + +export interface FetchSchemefulSiteResult { + schemefulSite: string +} + +export interface LoadNetworkResourceParams { + frameId?: FrameId + url: string + options: LoadNetworkResourceOptions +} + +export interface LoadNetworkResourceResult { + resource: LoadNetworkResourcePageResult +} + +export interface SetCookieControlsParams { + enableThirdPartyCookieRestriction: boolean + disableThirdPartyCookieMetadata: boolean + disableThirdPartyCookieHeuristics: boolean +} + +// ══ Events ══ + +export interface DataReceivedEvent { + requestId: RequestId + timestamp: MonotonicTime + dataLength: number + encodedDataLength: number + data?: string +} + +export interface EventSourceMessageReceivedEvent { + requestId: RequestId + timestamp: MonotonicTime + eventName: string + eventId: string + data: string +} + +export interface LoadingFailedEvent { + requestId: RequestId + timestamp: MonotonicTime + type: ResourceType + errorText: string + canceled?: boolean + blockedReason?: BlockedReason + corsErrorStatus?: CorsErrorStatus +} + +export interface LoadingFinishedEvent { + requestId: RequestId + timestamp: MonotonicTime + encodedDataLength: number +} + +export interface RequestInterceptedEvent { + interceptionId: InterceptionId + request: Request + frameId: FrameId + resourceType: ResourceType + isNavigationRequest: boolean + isDownload?: boolean + redirectUrl?: string + authChallenge?: AuthChallenge + responseErrorReason?: ErrorReason + responseStatusCode?: number + responseHeaders?: Headers + requestId?: RequestId +} + +export interface RequestServedFromCacheEvent { + requestId: RequestId +} + +export interface RequestWillBeSentEvent { + requestId: RequestId + loaderId: LoaderId + documentURL: string + request: Request + timestamp: MonotonicTime + wallTime: TimeSinceEpoch + initiator: Initiator + redirectHasExtraInfo: boolean + redirectResponse?: Response + type?: ResourceType + frameId?: FrameId + hasUserGesture?: boolean + renderBlockingBehavior?: RenderBlockingBehavior +} + +export interface ResourceChangedPriorityEvent { + requestId: RequestId + newPriority: ResourcePriority + timestamp: MonotonicTime +} + +export interface SignedExchangeReceivedEvent { + requestId: RequestId + info: SignedExchangeInfo +} + +export interface ResponseReceivedEvent { + requestId: RequestId + loaderId: LoaderId + timestamp: MonotonicTime + type: ResourceType + response: Response + hasExtraInfo: boolean + frameId?: FrameId +} + +export interface WebSocketClosedEvent { + requestId: RequestId + timestamp: MonotonicTime +} + +export interface WebSocketCreatedEvent { + requestId: RequestId + url: string + initiator?: Initiator +} + +export interface WebSocketFrameErrorEvent { + requestId: RequestId + timestamp: MonotonicTime + errorMessage: string +} + +export interface WebSocketFrameReceivedEvent { + requestId: RequestId + timestamp: MonotonicTime + response: WebSocketFrame +} + +export interface WebSocketFrameSentEvent { + requestId: RequestId + timestamp: MonotonicTime + response: WebSocketFrame +} + +export interface WebSocketHandshakeResponseReceivedEvent { + requestId: RequestId + timestamp: MonotonicTime + response: WebSocketResponse +} + +export interface WebSocketWillSendHandshakeRequestEvent { + requestId: RequestId + timestamp: MonotonicTime + wallTime: TimeSinceEpoch + request: WebSocketRequest +} + +export interface WebTransportCreatedEvent { + transportId: RequestId + url: string + timestamp: MonotonicTime + initiator?: Initiator +} + +export interface WebTransportConnectionEstablishedEvent { + transportId: RequestId + timestamp: MonotonicTime +} + +export interface WebTransportClosedEvent { + transportId: RequestId + timestamp: MonotonicTime +} + +export interface DirectTCPSocketCreatedEvent { + identifier: RequestId + remoteAddr: string + remotePort: number + options: DirectTCPSocketOptions + timestamp: MonotonicTime + initiator?: Initiator +} + +export interface DirectTCPSocketOpenedEvent { + identifier: RequestId + remoteAddr: string + remotePort: number + timestamp: MonotonicTime + localAddr?: string + localPort?: number +} + +export interface DirectTCPSocketAbortedEvent { + identifier: RequestId + errorMessage: string + timestamp: MonotonicTime +} + +export interface DirectTCPSocketClosedEvent { + identifier: RequestId + timestamp: MonotonicTime +} + +export interface DirectTCPSocketChunkSentEvent { + identifier: RequestId + data: string + timestamp: MonotonicTime +} + +export interface DirectTCPSocketChunkReceivedEvent { + identifier: RequestId + data: string + timestamp: MonotonicTime +} + +export interface DirectUDPSocketJoinedMulticastGroupEvent { + identifier: RequestId + IPAddress: string +} + +export interface DirectUDPSocketLeftMulticastGroupEvent { + identifier: RequestId + IPAddress: string +} + +export interface DirectUDPSocketCreatedEvent { + identifier: RequestId + options: DirectUDPSocketOptions + timestamp: MonotonicTime + initiator?: Initiator +} + +export interface DirectUDPSocketOpenedEvent { + identifier: RequestId + localAddr: string + localPort: number + timestamp: MonotonicTime + remoteAddr?: string + remotePort?: number +} + +export interface DirectUDPSocketAbortedEvent { + identifier: RequestId + errorMessage: string + timestamp: MonotonicTime +} + +export interface DirectUDPSocketClosedEvent { + identifier: RequestId + timestamp: MonotonicTime +} + +export interface DirectUDPSocketChunkSentEvent { + identifier: RequestId + message: DirectUDPMessage + timestamp: MonotonicTime +} + +export interface DirectUDPSocketChunkReceivedEvent { + identifier: RequestId + message: DirectUDPMessage + timestamp: MonotonicTime +} + +export interface RequestWillBeSentExtraInfoEvent { + requestId: RequestId + associatedCookies: AssociatedCookie[] + headers: Headers + connectTiming: ConnectTiming + clientSecurityState?: ClientSecurityState + siteHasCookieInOtherPartition?: boolean + appliedNetworkConditionsId?: string +} + +export interface ResponseReceivedExtraInfoEvent { + requestId: RequestId + blockedCookies: BlockedSetCookieWithReason[] + headers: Headers + resourceIPAddressSpace: IPAddressSpace + statusCode: number + headersText?: string + cookiePartitionKey?: CookiePartitionKey + cookiePartitionKeyOpaque?: boolean + exemptedCookies?: ExemptedSetCookieWithReason[] +} + +export interface ResponseReceivedEarlyHintsEvent { + requestId: RequestId + headers: Headers +} + +export interface TrustTokenOperationDoneEvent { + status: + | 'Ok' + | 'InvalidArgument' + | 'MissingIssuerKeys' + | 'FailedPrecondition' + | 'ResourceExhausted' + | 'AlreadyExists' + | 'ResourceLimited' + | 'Unauthorized' + | 'BadResponse' + | 'InternalError' + | 'UnknownError' + | 'FulfilledLocally' + | 'SiteIssuerLimit' + type: TrustTokenOperationType + requestId: RequestId + topLevelOrigin?: string + issuerOrigin?: string + issuedTokenCount?: number +} + +export interface ReportingApiReportAddedEvent { + report: ReportingApiReport +} + +export interface ReportingApiReportUpdatedEvent { + report: ReportingApiReport +} + +export interface ReportingApiEndpointsChangedForOriginEvent { + origin: string + endpoints: ReportingApiEndpoint[] +} + +export interface DeviceBoundSessionsAddedEvent { + sessions: DeviceBoundSession[] +} + +export interface DeviceBoundSessionEventOccurredEvent { + eventId: DeviceBoundSessionEventId + site: string + succeeded: boolean + sessionId?: string + creationEventDetails?: CreationEventDetails + refreshEventDetails?: RefreshEventDetails + terminationEventDetails?: TerminationEventDetails + challengeEventDetails?: ChallengeEventDetails +} diff --git a/packages/cdp-protocol/src/generated/domains/overlay.ts b/packages/cdp-protocol/src/generated/domains/overlay.ts new file mode 100644 index 000000000..140706180 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/overlay.ts @@ -0,0 +1,302 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId, NodeId, Quad, Rect, RGBA } from './dom' +import type { FrameId, Viewport } from './page' +import type { RemoteObjectId } from './runtime' + +// ══ Types ══ + +export interface SourceOrderConfig { + parentOutlineColor: RGBA + childOutlineColor: RGBA +} + +export interface GridHighlightConfig { + showGridExtensionLines?: boolean + showPositiveLineNumbers?: boolean + showNegativeLineNumbers?: boolean + showAreaNames?: boolean + showLineNames?: boolean + showTrackSizes?: boolean + gridBorderColor?: RGBA + cellBorderColor?: RGBA + rowLineColor?: RGBA + columnLineColor?: RGBA + gridBorderDash?: boolean + cellBorderDash?: boolean + rowLineDash?: boolean + columnLineDash?: boolean + rowGapColor?: RGBA + rowHatchColor?: RGBA + columnGapColor?: RGBA + columnHatchColor?: RGBA + areaBorderColor?: RGBA + gridBackgroundColor?: RGBA +} + +export interface FlexContainerHighlightConfig { + containerBorder?: LineStyle + lineSeparator?: LineStyle + itemSeparator?: LineStyle + mainDistributedSpace?: BoxStyle + crossDistributedSpace?: BoxStyle + rowGapSpace?: BoxStyle + columnGapSpace?: BoxStyle + crossAlignment?: LineStyle +} + +export interface FlexItemHighlightConfig { + baseSizeBox?: BoxStyle + baseSizeBorder?: LineStyle + flexibilityArrow?: LineStyle +} + +export interface LineStyle { + color?: RGBA + pattern?: 'dashed' | 'dotted' +} + +export interface BoxStyle { + fillColor?: RGBA + hatchColor?: RGBA +} + +export type ContrastAlgorithm = 'aa' | 'aaa' | 'apca' + +export interface HighlightConfig { + showInfo?: boolean + showStyles?: boolean + showRulers?: boolean + showAccessibilityInfo?: boolean + showExtensionLines?: boolean + contentColor?: RGBA + paddingColor?: RGBA + borderColor?: RGBA + marginColor?: RGBA + eventTargetColor?: RGBA + shapeColor?: RGBA + shapeMarginColor?: RGBA + cssGridColor?: RGBA + colorFormat?: ColorFormat + gridHighlightConfig?: GridHighlightConfig + flexContainerHighlightConfig?: FlexContainerHighlightConfig + flexItemHighlightConfig?: FlexItemHighlightConfig + contrastAlgorithm?: ContrastAlgorithm + containerQueryContainerHighlightConfig?: ContainerQueryContainerHighlightConfig +} + +export type ColorFormat = 'rgb' | 'hsl' | 'hwb' | 'hex' + +export interface GridNodeHighlightConfig { + gridHighlightConfig: GridHighlightConfig + nodeId: NodeId +} + +export interface FlexNodeHighlightConfig { + flexContainerHighlightConfig: FlexContainerHighlightConfig + nodeId: NodeId +} + +export interface ScrollSnapContainerHighlightConfig { + snapportBorder?: LineStyle + snapAreaBorder?: LineStyle + scrollMarginColor?: RGBA + scrollPaddingColor?: RGBA +} + +export interface ScrollSnapHighlightConfig { + scrollSnapContainerHighlightConfig: ScrollSnapContainerHighlightConfig + nodeId: NodeId +} + +export interface HingeConfig { + rect: Rect + contentColor?: RGBA + outlineColor?: RGBA +} + +export interface WindowControlsOverlayConfig { + showCSS: boolean + selectedPlatform: string + themeColor: string +} + +export interface ContainerQueryHighlightConfig { + containerQueryContainerHighlightConfig: ContainerQueryContainerHighlightConfig + nodeId: NodeId +} + +export interface ContainerQueryContainerHighlightConfig { + containerBorder?: LineStyle + descendantBorder?: LineStyle +} + +export interface IsolatedElementHighlightConfig { + isolationModeHighlightConfig: IsolationModeHighlightConfig + nodeId: NodeId +} + +export interface IsolationModeHighlightConfig { + resizerColor?: RGBA + resizerHandleColor?: RGBA + maskColor?: RGBA +} + +export type InspectMode = + | 'searchForNode' + | 'searchForUAShadowDOM' + | 'captureAreaScreenshot' + | 'none' + +// ══ Commands ══ + +export interface GetHighlightObjectForTestParams { + nodeId: NodeId + includeDistance?: boolean + includeStyle?: boolean + colorFormat?: ColorFormat + showAccessibilityInfo?: boolean +} + +export interface GetHighlightObjectForTestResult { + highlight: Record +} + +export interface GetGridHighlightObjectsForTestParams { + nodeIds: NodeId[] +} + +export interface GetGridHighlightObjectsForTestResult { + highlights: Record +} + +export interface GetSourceOrderHighlightObjectForTestParams { + nodeId: NodeId +} + +export interface GetSourceOrderHighlightObjectForTestResult { + highlight: Record +} + +export interface HighlightFrameParams { + frameId: FrameId + contentColor?: RGBA + contentOutlineColor?: RGBA +} + +export interface HighlightNodeParams { + highlightConfig: HighlightConfig + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId + selector?: string +} + +export interface HighlightQuadParams { + quad: Quad + color?: RGBA + outlineColor?: RGBA +} + +export interface HighlightRectParams { + x: number + y: number + width: number + height: number + color?: RGBA + outlineColor?: RGBA +} + +export interface HighlightSourceOrderParams { + sourceOrderConfig: SourceOrderConfig + nodeId?: NodeId + backendNodeId?: BackendNodeId + objectId?: RemoteObjectId +} + +export interface SetInspectModeParams { + mode: InspectMode + highlightConfig?: HighlightConfig +} + +export interface SetShowAdHighlightsParams { + show: boolean +} + +export interface SetPausedInDebuggerMessageParams { + message?: string +} + +export interface SetShowDebugBordersParams { + show: boolean +} + +export interface SetShowFPSCounterParams { + show: boolean +} + +export interface SetShowGridOverlaysParams { + gridNodeHighlightConfigs: GridNodeHighlightConfig[] +} + +export interface SetShowFlexOverlaysParams { + flexNodeHighlightConfigs: FlexNodeHighlightConfig[] +} + +export interface SetShowScrollSnapOverlaysParams { + scrollSnapHighlightConfigs: ScrollSnapHighlightConfig[] +} + +export interface SetShowContainerQueryOverlaysParams { + containerQueryHighlightConfigs: ContainerQueryHighlightConfig[] +} + +export interface SetShowPaintRectsParams { + result: boolean +} + +export interface SetShowLayoutShiftRegionsParams { + result: boolean +} + +export interface SetShowScrollBottleneckRectsParams { + show: boolean +} + +export interface SetShowHitTestBordersParams { + show: boolean +} + +export interface SetShowWebVitalsParams { + show: boolean +} + +export interface SetShowViewportSizeOnResizeParams { + show: boolean +} + +export interface SetShowHingeParams { + hingeConfig?: HingeConfig +} + +export interface SetShowIsolatedElementsParams { + isolatedElementHighlightConfigs: IsolatedElementHighlightConfig[] +} + +export interface SetShowWindowControlsOverlayParams { + windowControlsOverlayConfig?: WindowControlsOverlayConfig +} + +// ══ Events ══ + +export interface InspectNodeRequestedEvent { + backendNodeId: BackendNodeId +} + +export interface NodeHighlightRequestedEvent { + nodeId: NodeId +} + +export interface ScreenshotRequestedEvent { + viewport: Viewport +} diff --git a/packages/cdp-protocol/src/generated/domains/page.ts b/packages/cdp-protocol/src/generated/domains/page.ts new file mode 100644 index 000000000..b0edbc149 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/page.ts @@ -0,0 +1,1164 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { SearchMatch } from './debugger' +import type { BackendNodeId, Rect } from './dom' +import type { ScreenOrientation } from './emulation' +import type { StreamHandle } from './io' +import type { + LoaderId, + MonotonicTime, + ResourceType, + TimeSinceEpoch, +} from './network' +import type { + ExecutionContextId, + ScriptId, + StackTrace, + UniqueDebuggerId, +} from './runtime' + +// ══ Types ══ + +export type FrameId = string + +export type AdFrameType = 'none' | 'child' | 'root' + +export type AdFrameExplanation = + | 'ParentIsAd' + | 'CreatedByAdScript' + | 'MatchedBlockingRule' + +export interface AdFrameStatus { + adFrameType: AdFrameType + explanations?: AdFrameExplanation[] +} + +export interface AdScriptId { + scriptId: ScriptId + debuggerId: UniqueDebuggerId +} + +export interface AdScriptAncestry { + ancestryChain: AdScriptId[] + rootScriptFilterlistRule?: string +} + +export type SecureContextType = + | 'Secure' + | 'SecureLocalhost' + | 'InsecureScheme' + | 'InsecureAncestor' + +export type CrossOriginIsolatedContextType = + | 'Isolated' + | 'NotIsolated' + | 'NotIsolatedFeatureDisabled' + +export type GatedAPIFeatures = + | 'SharedArrayBuffers' + | 'SharedArrayBuffersTransferAllowed' + | 'PerformanceMeasureMemory' + | 'PerformanceProfile' + +export type PermissionsPolicyFeature = + | 'accelerometer' + | 'all-screens-capture' + | 'ambient-light-sensor' + | 'aria-notify' + | 'attribution-reporting' + | 'autofill' + | 'autoplay' + | 'bluetooth' + | 'browsing-topics' + | 'camera' + | 'captured-surface-control' + | 'ch-dpr' + | 'ch-device-memory' + | 'ch-downlink' + | 'ch-ect' + | 'ch-prefers-color-scheme' + | 'ch-prefers-reduced-motion' + | 'ch-prefers-reduced-transparency' + | 'ch-rtt' + | 'ch-save-data' + | 'ch-ua' + | 'ch-ua-arch' + | 'ch-ua-bitness' + | 'ch-ua-high-entropy-values' + | 'ch-ua-platform' + | 'ch-ua-model' + | 'ch-ua-mobile' + | 'ch-ua-form-factors' + | 'ch-ua-full-version' + | 'ch-ua-full-version-list' + | 'ch-ua-platform-version' + | 'ch-ua-wow64' + | 'ch-viewport-height' + | 'ch-viewport-width' + | 'ch-width' + | 'clipboard-read' + | 'clipboard-write' + | 'compute-pressure' + | 'controlled-frame' + | 'cross-origin-isolated' + | 'deferred-fetch' + | 'deferred-fetch-minimal' + | 'device-attributes' + | 'digital-credentials-create' + | 'digital-credentials-get' + | 'direct-sockets' + | 'direct-sockets-multicast' + | 'direct-sockets-private' + | 'display-capture' + | 'document-domain' + | 'encrypted-media' + | 'execution-while-out-of-viewport' + | 'execution-while-not-rendered' + | 'fenced-unpartitioned-storage-read' + | 'focus-without-user-activation' + | 'fullscreen' + | 'frobulate' + | 'gamepad' + | 'geolocation' + | 'gyroscope' + | 'hid' + | 'identity-credentials-get' + | 'idle-detection' + | 'interest-cohort' + | 'join-ad-interest-group' + | 'keyboard-map' + | 'language-detector' + | 'language-model' + | 'local-fonts' + | 'local-network' + | 'local-network-access' + | 'loopback-network' + | 'magnetometer' + | 'manual-text' + | 'media-playback-while-not-visible' + | 'microphone' + | 'midi' + | 'on-device-speech-recognition' + | 'otp-credentials' + | 'payment' + | 'picture-in-picture' + | 'private-aggregation' + | 'private-state-token-issuance' + | 'private-state-token-redemption' + | 'publickey-credentials-create' + | 'publickey-credentials-get' + | 'record-ad-auction-events' + | 'rewriter' + | 'run-ad-auction' + | 'screen-wake-lock' + | 'serial' + | 'shared-storage' + | 'shared-storage-select-url' + | 'smart-card' + | 'speaker-selection' + | 'storage-access' + | 'sub-apps' + | 'summarizer' + | 'sync-xhr' + | 'translator' + | 'unload' + | 'usb' + | 'usb-unrestricted' + | 'vertical-scroll' + | 'web-app-installation' + | 'web-printing' + | 'web-share' + | 'window-management' + | 'writer' + | 'xr-spatial-tracking' + +export type PermissionsPolicyBlockReason = + | 'Header' + | 'IframeAttribute' + | 'InFencedFrameTree' + | 'InIsolatedApp' + +export interface PermissionsPolicyBlockLocator { + frameId: FrameId + blockReason: PermissionsPolicyBlockReason +} + +export interface PermissionsPolicyFeatureState { + feature: PermissionsPolicyFeature + allowed: boolean + locator?: PermissionsPolicyBlockLocator +} + +export type OriginTrialTokenStatus = + | 'Success' + | 'NotSupported' + | 'Insecure' + | 'Expired' + | 'WrongOrigin' + | 'InvalidSignature' + | 'Malformed' + | 'WrongVersion' + | 'FeatureDisabled' + | 'TokenDisabled' + | 'FeatureDisabledForUser' + | 'UnknownTrial' + +export type OriginTrialStatus = + | 'Enabled' + | 'ValidTokenNotProvided' + | 'OSNotSupported' + | 'TrialNotAllowed' + +export type OriginTrialUsageRestriction = 'None' | 'Subset' + +export interface OriginTrialToken { + origin: string + matchSubDomains: boolean + trialName: string + expiryTime: TimeSinceEpoch + isThirdParty: boolean + usageRestriction: OriginTrialUsageRestriction +} + +export interface OriginTrialTokenWithStatus { + rawTokenText: string + parsedToken?: OriginTrialToken + status: OriginTrialTokenStatus +} + +export interface OriginTrial { + trialName: string + status: OriginTrialStatus + tokensWithStatus: OriginTrialTokenWithStatus[] +} + +export interface SecurityOriginDetails { + isLocalhost: boolean +} + +export interface Frame { + id: FrameId + parentId?: FrameId + loaderId: LoaderId + name?: string + url: string + urlFragment?: string + domainAndRegistry: string + securityOrigin: string + securityOriginDetails?: SecurityOriginDetails + mimeType: string + unreachableUrl?: string + adFrameStatus?: AdFrameStatus + secureContextType: SecureContextType + crossOriginIsolatedContextType: CrossOriginIsolatedContextType + gatedAPIFeatures: GatedAPIFeatures[] +} + +export interface FrameResource { + url: string + type: ResourceType + mimeType: string + lastModified?: TimeSinceEpoch + contentSize?: number + failed?: boolean + canceled?: boolean +} + +export interface FrameResourceTree { + frame: Frame + childFrames?: FrameResourceTree[] + resources: FrameResource[] +} + +export interface FrameTree { + frame: Frame + childFrames?: FrameTree[] +} + +export type ScriptIdentifier = string + +export type TransitionType = + | 'link' + | 'typed' + | 'address_bar' + | 'auto_bookmark' + | 'auto_subframe' + | 'manual_subframe' + | 'generated' + | 'auto_toplevel' + | 'form_submit' + | 'reload' + | 'keyword' + | 'keyword_generated' + | 'other' + +export interface NavigationEntry { + id: number + url: string + userTypedURL: string + title: string + transitionType: TransitionType +} + +export interface ScreencastFrameMetadata { + offsetTop: number + pageScaleFactor: number + deviceWidth: number + deviceHeight: number + scrollOffsetX: number + scrollOffsetY: number + timestamp?: TimeSinceEpoch +} + +export type DialogType = 'alert' | 'confirm' | 'prompt' | 'beforeunload' + +export interface AppManifestError { + message: string + critical: number + line: number + column: number +} + +export interface AppManifestParsedProperties { + scope: string +} + +export interface LayoutViewport { + pageX: number + pageY: number + clientWidth: number + clientHeight: number +} + +export interface VisualViewport { + offsetX: number + offsetY: number + pageX: number + pageY: number + clientWidth: number + clientHeight: number + scale: number + zoom?: number +} + +export interface Viewport { + x: number + y: number + width: number + height: number + scale: number +} + +export interface FontFamilies { + standard?: string + fixed?: string + serif?: string + sansSerif?: string + cursive?: string + fantasy?: string + math?: string +} + +export interface ScriptFontFamilies { + script: string + fontFamilies: FontFamilies +} + +export interface FontSizes { + standard?: number + fixed?: number +} + +export type ClientNavigationReason = + | 'anchorClick' + | 'formSubmissionGet' + | 'formSubmissionPost' + | 'httpHeaderRefresh' + | 'initialFrameNavigation' + | 'metaTagRefresh' + | 'other' + | 'pageBlockInterstitial' + | 'reload' + | 'scriptInitiated' + +export type ClientNavigationDisposition = + | 'currentTab' + | 'newTab' + | 'newWindow' + | 'download' + +export interface InstallabilityErrorArgument { + name: string + value: string +} + +export interface InstallabilityError { + errorId: string + errorArguments: InstallabilityErrorArgument[] +} + +export type ReferrerPolicy = + | 'noReferrer' + | 'noReferrerWhenDowngrade' + | 'origin' + | 'originWhenCrossOrigin' + | 'sameOrigin' + | 'strictOrigin' + | 'strictOriginWhenCrossOrigin' + | 'unsafeUrl' + +export interface CompilationCacheParams { + url: string + eager?: boolean +} + +export interface FileFilter { + name?: string + accepts?: string[] +} + +export interface FileHandler { + action: string + name: string + icons?: ImageResource[] + accepts?: FileFilter[] + launchType: string +} + +export interface ImageResource { + url: string + sizes?: string + type?: string +} + +export interface LaunchHandler { + clientMode: string +} + +export interface ProtocolHandler { + protocol: string + url: string +} + +export interface RelatedApplication { + id?: string + url: string +} + +export interface ScopeExtension { + origin: string + hasOriginWildcard: boolean +} + +export interface Screenshot { + image: ImageResource + formFactor: string + label?: string +} + +export interface ShareTarget { + action: string + method: string + enctype: string + title?: string + text?: string + url?: string + files?: FileFilter[] +} + +export interface Shortcut { + name: string + url: string +} + +export interface WebAppManifest { + backgroundColor?: string + description?: string + dir?: string + display?: string + displayOverrides?: string[] + fileHandlers?: FileHandler[] + icons?: ImageResource[] + id?: string + lang?: string + launchHandler?: LaunchHandler + name?: string + orientation?: string + preferRelatedApplications?: boolean + protocolHandlers?: ProtocolHandler[] + relatedApplications?: RelatedApplication[] + scope?: string + scopeExtensions?: ScopeExtension[] + screenshots?: Screenshot[] + shareTarget?: ShareTarget + shortName?: string + shortcuts?: Shortcut[] + startUrl?: string + themeColor?: string +} + +export type NavigationType = 'Navigation' | 'BackForwardCacheRestore' + +export type BackForwardCacheNotRestoredReason = + | 'NotPrimaryMainFrame' + | 'BackForwardCacheDisabled' + | 'RelatedActiveContentsExist' + | 'HTTPStatusNotOK' + | 'SchemeNotHTTPOrHTTPS' + | 'Loading' + | 'WasGrantedMediaAccess' + | 'DisableForRenderFrameHostCalled' + | 'DomainNotAllowed' + | 'HTTPMethodNotGET' + | 'SubframeIsNavigating' + | 'Timeout' + | 'CacheLimit' + | 'JavaScriptExecution' + | 'RendererProcessKilled' + | 'RendererProcessCrashed' + | 'SchedulerTrackedFeatureUsed' + | 'ConflictingBrowsingInstance' + | 'CacheFlushed' + | 'ServiceWorkerVersionActivation' + | 'SessionRestored' + | 'ServiceWorkerPostMessage' + | 'EnteredBackForwardCacheBeforeServiceWorkerHostAdded' + | 'RenderFrameHostReused_SameSite' + | 'RenderFrameHostReused_CrossSite' + | 'ServiceWorkerClaim' + | 'IgnoreEventAndEvict' + | 'HaveInnerContents' + | 'TimeoutPuttingInCache' + | 'BackForwardCacheDisabledByLowMemory' + | 'BackForwardCacheDisabledByCommandLine' + | 'NetworkRequestDatapipeDrainedAsBytesConsumer' + | 'NetworkRequestRedirected' + | 'NetworkRequestTimeout' + | 'NetworkExceedsBufferLimit' + | 'NavigationCancelledWhileRestoring' + | 'NotMostRecentNavigationEntry' + | 'BackForwardCacheDisabledForPrerender' + | 'UserAgentOverrideDiffers' + | 'ForegroundCacheLimit' + | 'BrowsingInstanceNotSwapped' + | 'BackForwardCacheDisabledForDelegate' + | 'UnloadHandlerExistsInMainFrame' + | 'UnloadHandlerExistsInSubFrame' + | 'ServiceWorkerUnregistration' + | 'CacheControlNoStore' + | 'CacheControlNoStoreCookieModified' + | 'CacheControlNoStoreHTTPOnlyCookieModified' + | 'NoResponseHead' + | 'Unknown' + | 'ActivationNavigationsDisallowedForBug1234857' + | 'ErrorDocument' + | 'FencedFramesEmbedder' + | 'CookieDisabled' + | 'HTTPAuthRequired' + | 'CookieFlushed' + | 'BroadcastChannelOnMessage' + | 'WebViewSettingsChanged' + | 'WebViewJavaScriptObjectChanged' + | 'WebViewMessageListenerInjected' + | 'WebViewSafeBrowsingAllowlistChanged' + | 'WebViewDocumentStartJavascriptChanged' + | 'WebSocket' + | 'WebTransport' + | 'WebRTC' + | 'MainResourceHasCacheControlNoStore' + | 'MainResourceHasCacheControlNoCache' + | 'SubresourceHasCacheControlNoStore' + | 'SubresourceHasCacheControlNoCache' + | 'ContainsPlugins' + | 'DocumentLoaded' + | 'OutstandingNetworkRequestOthers' + | 'RequestedMIDIPermission' + | 'RequestedAudioCapturePermission' + | 'RequestedVideoCapturePermission' + | 'RequestedBackForwardCacheBlockedSensors' + | 'RequestedBackgroundWorkPermission' + | 'BroadcastChannel' + | 'WebXR' + | 'SharedWorker' + | 'SharedWorkerMessage' + | 'SharedWorkerWithNoActiveClient' + | 'WebLocks' + | 'WebHID' + | 'WebBluetooth' + | 'WebShare' + | 'RequestedStorageAccessGrant' + | 'WebNfc' + | 'OutstandingNetworkRequestFetch' + | 'OutstandingNetworkRequestXHR' + | 'AppBanner' + | 'Printing' + | 'WebDatabase' + | 'PictureInPicture' + | 'SpeechRecognizer' + | 'IdleManager' + | 'PaymentManager' + | 'SpeechSynthesis' + | 'KeyboardLock' + | 'WebOTPService' + | 'OutstandingNetworkRequestDirectSocket' + | 'InjectedJavascript' + | 'InjectedStyleSheet' + | 'KeepaliveRequest' + | 'IndexedDBEvent' + | 'Dummy' + | 'JsNetworkRequestReceivedCacheControlNoStoreResource' + | 'WebRTCUsedWithCCNS' + | 'WebTransportUsedWithCCNS' + | 'WebSocketUsedWithCCNS' + | 'SmartCard' + | 'LiveMediaStreamTrack' + | 'UnloadHandler' + | 'ParserAborted' + | 'ContentSecurityHandler' + | 'ContentWebAuthenticationAPI' + | 'ContentFileChooser' + | 'ContentSerial' + | 'ContentFileSystemAccess' + | 'ContentMediaDevicesDispatcherHost' + | 'ContentWebBluetooth' + | 'ContentWebUSB' + | 'ContentMediaSessionService' + | 'ContentScreenReader' + | 'ContentDiscarded' + | 'EmbedderPopupBlockerTabHelper' + | 'EmbedderSafeBrowsingTriggeredPopupBlocker' + | 'EmbedderSafeBrowsingThreatDetails' + | 'EmbedderAppBannerManager' + | 'EmbedderDomDistillerViewerSource' + | 'EmbedderDomDistillerSelfDeletingRequestDelegate' + | 'EmbedderOomInterventionTabHelper' + | 'EmbedderOfflinePage' + | 'EmbedderChromePasswordManagerClientBindCredentialManager' + | 'EmbedderPermissionRequestManager' + | 'EmbedderModalDialog' + | 'EmbedderExtensions' + | 'EmbedderExtensionMessaging' + | 'EmbedderExtensionMessagingForOpenPort' + | 'EmbedderExtensionSentMessageToCachedFrame' + | 'RequestedByWebViewClient' + | 'PostMessageByWebViewClient' + | 'CacheControlNoStoreDeviceBoundSessionTerminated' + | 'CacheLimitPrunedOnModerateMemoryPressure' + | 'CacheLimitPrunedOnCriticalMemoryPressure' + +export type BackForwardCacheNotRestoredReasonType = + | 'SupportPending' + | 'PageSupportNeeded' + | 'Circumstantial' + +export interface BackForwardCacheBlockingDetails { + url?: string + function?: string + lineNumber: number + columnNumber: number +} + +export interface BackForwardCacheNotRestoredExplanation { + type: BackForwardCacheNotRestoredReasonType + reason: BackForwardCacheNotRestoredReason + context?: string + details?: BackForwardCacheBlockingDetails[] +} + +export interface BackForwardCacheNotRestoredExplanationTree { + url: string + explanations: BackForwardCacheNotRestoredExplanation[] + children: BackForwardCacheNotRestoredExplanationTree[] +} + +// ══ Commands ══ + +export interface AddScriptToEvaluateOnLoadParams { + scriptSource: string +} + +export interface AddScriptToEvaluateOnLoadResult { + identifier: ScriptIdentifier +} + +export interface AddScriptToEvaluateOnNewDocumentParams { + source: string + worldName?: string + includeCommandLineAPI?: boolean + runImmediately?: boolean +} + +export interface AddScriptToEvaluateOnNewDocumentResult { + identifier: ScriptIdentifier +} + +export interface CaptureScreenshotParams { + format?: 'jpeg' | 'png' | 'webp' + quality?: number + clip?: Viewport + fromSurface?: boolean + captureBeyondViewport?: boolean + optimizeForSpeed?: boolean +} + +export interface CaptureScreenshotResult { + data: string +} + +export interface CaptureSnapshotParams { + format?: 'mhtml' +} + +export interface CaptureSnapshotResult { + data: string +} + +export interface CreateIsolatedWorldParams { + frameId: FrameId + worldName?: string + grantUniveralAccess?: boolean +} + +export interface CreateIsolatedWorldResult { + executionContextId: ExecutionContextId +} + +export interface DeleteCookieParams { + cookieName: string + url: string +} + +export interface EnableParams { + enableFileChooserOpenedEvent?: boolean +} + +export interface GetAppManifestParams { + manifestId?: string +} + +export interface GetAppManifestResult { + url: string + errors: AppManifestError[] + data?: string + parsed?: AppManifestParsedProperties + manifest: WebAppManifest +} + +export interface GetInstallabilityErrorsResult { + installabilityErrors: InstallabilityError[] +} + +export interface GetManifestIconsResult { + primaryIcon?: string +} + +export interface GetAppIdResult { + appId?: string + recommendedId?: string +} + +export interface GetAdScriptAncestryParams { + frameId: FrameId +} + +export interface GetAdScriptAncestryResult { + adScriptAncestry?: AdScriptAncestry +} + +export interface GetFrameTreeResult { + frameTree: FrameTree +} + +export interface GetLayoutMetricsResult { + layoutViewport: LayoutViewport + visualViewport: VisualViewport + contentSize: Rect + cssLayoutViewport: LayoutViewport + cssVisualViewport: VisualViewport + cssContentSize: Rect +} + +export interface GetNavigationHistoryResult { + currentIndex: number + entries: NavigationEntry[] +} + +export interface GetResourceContentParams { + frameId: FrameId + url: string +} + +export interface GetResourceContentResult { + content: string + base64Encoded: boolean +} + +export interface GetResourceTreeResult { + frameTree: FrameResourceTree +} + +export interface HandleJavaScriptDialogParams { + accept: boolean + promptText?: string +} + +export interface NavigateParams { + url: string + referrer?: string + transitionType?: TransitionType + frameId?: FrameId + referrerPolicy?: ReferrerPolicy +} + +export interface NavigateResult { + frameId: FrameId + loaderId?: LoaderId + errorText?: string + isDownload?: boolean +} + +export interface NavigateToHistoryEntryParams { + entryId: number +} + +export interface PrintToPDFParams { + landscape?: boolean + displayHeaderFooter?: boolean + printBackground?: boolean + scale?: number + paperWidth?: number + paperHeight?: number + marginTop?: number + marginBottom?: number + marginLeft?: number + marginRight?: number + pageRanges?: string + headerTemplate?: string + footerTemplate?: string + preferCSSPageSize?: boolean + transferMode?: 'ReturnAsBase64' | 'ReturnAsStream' + generateTaggedPDF?: boolean + generateDocumentOutline?: boolean +} + +export interface PrintToPDFResult { + data: string + stream?: StreamHandle +} + +export interface ReloadParams { + ignoreCache?: boolean + scriptToEvaluateOnLoad?: string + loaderId?: LoaderId +} + +export interface RemoveScriptToEvaluateOnLoadParams { + identifier: ScriptIdentifier +} + +export interface RemoveScriptToEvaluateOnNewDocumentParams { + identifier: ScriptIdentifier +} + +export interface ScreencastFrameAckParams { + sessionId: number +} + +export interface SearchInResourceParams { + frameId: FrameId + url: string + query: string + caseSensitive?: boolean + isRegex?: boolean +} + +export interface SearchInResourceResult { + result: SearchMatch[] +} + +export interface SetAdBlockingEnabledParams { + enabled: boolean +} + +export interface SetBypassCSPParams { + enabled: boolean +} + +export interface GetPermissionsPolicyStateParams { + frameId: FrameId +} + +export interface GetPermissionsPolicyStateResult { + states: PermissionsPolicyFeatureState[] +} + +export interface GetOriginTrialsParams { + frameId: FrameId +} + +export interface GetOriginTrialsResult { + originTrials: OriginTrial[] +} + +export interface SetDeviceMetricsOverrideParams { + width: number + height: number + deviceScaleFactor: number + mobile: boolean + scale?: number + screenWidth?: number + screenHeight?: number + positionX?: number + positionY?: number + dontSetVisibleSize?: boolean + screenOrientation?: ScreenOrientation + viewport?: Viewport +} + +export interface SetDeviceOrientationOverrideParams { + alpha: number + beta: number + gamma: number +} + +export interface SetFontFamiliesParams { + fontFamilies: FontFamilies + forScripts?: ScriptFontFamilies[] +} + +export interface SetFontSizesParams { + fontSizes: FontSizes +} + +export interface SetDocumentContentParams { + frameId: FrameId + html: string +} + +export interface SetDownloadBehaviorParams { + behavior: 'deny' | 'allow' | 'default' + downloadPath?: string +} + +export interface SetGeolocationOverrideParams { + latitude?: number + longitude?: number + accuracy?: number +} + +export interface SetLifecycleEventsEnabledParams { + enabled: boolean +} + +export interface SetTouchEmulationEnabledParams { + enabled: boolean + configuration?: 'mobile' | 'desktop' +} + +export interface StartScreencastParams { + format?: 'jpeg' | 'png' + quality?: number + maxWidth?: number + maxHeight?: number + everyNthFrame?: number +} + +export interface SetWebLifecycleStateParams { + state: 'frozen' | 'active' +} + +export interface ProduceCompilationCacheParams { + scripts: CompilationCacheParams[] +} + +export interface AddCompilationCacheParams { + url: string + data: string +} + +export interface SetSPCTransactionModeParams { + mode: + | 'none' + | 'autoAccept' + | 'autoChooseToAuthAnotherWay' + | 'autoReject' + | 'autoOptOut' +} + +export interface SetRPHRegistrationModeParams { + mode: 'none' | 'autoAccept' | 'autoReject' +} + +export interface GenerateTestReportParams { + message: string + group?: string +} + +export interface SetInterceptFileChooserDialogParams { + enabled: boolean + cancel?: boolean +} + +export interface SetPrerenderingAllowedParams { + isAllowed: boolean +} + +export interface GetAnnotatedPageContentParams { + includeActionableInformation?: boolean +} + +export interface GetAnnotatedPageContentResult { + content: string +} + +// ══ Events ══ + +export interface DomContentEventFiredEvent { + timestamp: MonotonicTime +} + +export interface FileChooserOpenedEvent { + frameId: FrameId + mode: 'selectSingle' | 'selectMultiple' + backendNodeId?: BackendNodeId +} + +export interface FrameAttachedEvent { + frameId: FrameId + parentFrameId: FrameId + stack?: StackTrace +} + +export interface FrameClearedScheduledNavigationEvent { + frameId: FrameId +} + +export interface FrameDetachedEvent { + frameId: FrameId + reason: 'remove' | 'swap' +} + +export interface FrameSubtreeWillBeDetachedEvent { + frameId: FrameId +} + +export interface FrameNavigatedEvent { + frame: Frame + type: NavigationType +} + +export interface DocumentOpenedEvent { + frame: Frame +} + +export interface FrameStartedNavigatingEvent { + frameId: FrameId + url: string + loaderId: LoaderId + navigationType: + | 'reload' + | 'reloadBypassingCache' + | 'restore' + | 'restoreWithPost' + | 'historySameDocument' + | 'historyDifferentDocument' + | 'sameDocument' + | 'differentDocument' +} + +export interface FrameRequestedNavigationEvent { + frameId: FrameId + reason: ClientNavigationReason + url: string + disposition: ClientNavigationDisposition +} + +export interface FrameScheduledNavigationEvent { + frameId: FrameId + delay: number + reason: ClientNavigationReason + url: string +} + +export interface FrameStartedLoadingEvent { + frameId: FrameId +} + +export interface FrameStoppedLoadingEvent { + frameId: FrameId +} + +export interface DownloadWillBeginEvent { + frameId: FrameId + guid: string + url: string + suggestedFilename: string +} + +export interface DownloadProgressEvent { + guid: string + totalBytes: number + receivedBytes: number + state: 'inProgress' | 'completed' | 'canceled' +} + +export interface JavascriptDialogClosedEvent { + frameId: FrameId + result: boolean + userInput: string +} + +export interface JavascriptDialogOpeningEvent { + url: string + frameId: FrameId + message: string + type: DialogType + hasBrowserHandler: boolean + defaultPrompt?: string +} + +export interface LifecycleEventEvent { + frameId: FrameId + loaderId: LoaderId + name: string + timestamp: MonotonicTime +} + +export interface BackForwardCacheNotUsedEvent { + loaderId: LoaderId + frameId: FrameId + notRestoredExplanations: BackForwardCacheNotRestoredExplanation[] + notRestoredExplanationsTree?: BackForwardCacheNotRestoredExplanationTree +} + +export interface LoadEventFiredEvent { + timestamp: MonotonicTime +} + +export interface NavigatedWithinDocumentEvent { + frameId: FrameId + url: string + navigationType: 'fragment' | 'historyApi' | 'other' +} + +export interface ScreencastFrameEvent { + data: string + metadata: ScreencastFrameMetadata + sessionId: number +} + +export interface ScreencastVisibilityChangedEvent { + visible: boolean +} + +export interface WindowOpenEvent { + url: string + windowName: string + windowFeatures: string[] + userGesture: boolean +} + +export interface CompilationCacheProducedEvent { + url: string + data: string +} diff --git a/packages/cdp-protocol/src/generated/domains/performance-timeline.ts b/packages/cdp-protocol/src/generated/domains/performance-timeline.ts new file mode 100644 index 000000000..6bed107e0 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/performance-timeline.ts @@ -0,0 +1,51 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId, Rect } from './dom' +import type { TimeSinceEpoch } from './network' +import type { FrameId } from './page' + +// ══ Types ══ + +export interface LargestContentfulPaint { + renderTime: TimeSinceEpoch + loadTime: TimeSinceEpoch + size: number + elementId?: string + url?: string + nodeId?: BackendNodeId +} + +export interface LayoutShiftAttribution { + previousRect: Rect + currentRect: Rect + nodeId?: BackendNodeId +} + +export interface LayoutShift { + value: number + hadRecentInput: boolean + lastInputTime: TimeSinceEpoch + sources: LayoutShiftAttribution[] +} + +export interface TimelineEvent { + frameId: FrameId + type: string + name: string + time: TimeSinceEpoch + duration?: number + lcpDetails?: LargestContentfulPaint + layoutShiftDetails?: LayoutShift +} + +// ══ Commands ══ + +export interface EnableParams { + eventTypes: string[] +} + +// ══ Events ══ + +export interface TimelineEventAddedEvent { + event: TimelineEvent +} diff --git a/packages/cdp-protocol/src/generated/domains/performance.ts b/packages/cdp-protocol/src/generated/domains/performance.ts new file mode 100644 index 000000000..36e66e286 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/performance.ts @@ -0,0 +1,29 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export interface Metric { + name: string + value: number +} + +// ══ Commands ══ + +export interface EnableParams { + timeDomain?: 'timeTicks' | 'threadTicks' +} + +export interface SetTimeDomainParams { + timeDomain: 'timeTicks' | 'threadTicks' +} + +export interface GetMetricsResult { + metrics: Metric[] +} + +// ══ Events ══ + +export interface MetricsEvent { + metrics: Metric[] + title: string +} diff --git a/packages/cdp-protocol/src/generated/domains/preload.ts b/packages/cdp-protocol/src/generated/domains/preload.ts new file mode 100644 index 000000000..ac0c323a9 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/preload.ts @@ -0,0 +1,218 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BackendNodeId } from './dom' +import type { LoaderId, RequestId } from './network' +import type { FrameId } from './page' + +// ══ Types ══ + +export type RuleSetId = string + +export interface RuleSet { + id: RuleSetId + loaderId: LoaderId + sourceText: string + backendNodeId?: BackendNodeId + url?: string + requestId?: RequestId + errorType?: RuleSetErrorType + errorMessage?: string + tag?: string +} + +export type RuleSetErrorType = + | 'SourceIsNotJsonObject' + | 'InvalidRulesSkipped' + | 'InvalidRulesetLevelTag' + +export type SpeculationAction = + | 'Prefetch' + | 'Prerender' + | 'PrerenderUntilScript' + +export type SpeculationTargetHint = 'Blank' | 'Self' + +export interface PreloadingAttemptKey { + loaderId: LoaderId + action: SpeculationAction + url: string + targetHint?: SpeculationTargetHint +} + +export interface PreloadingAttemptSource { + key: PreloadingAttemptKey + ruleSetIds: RuleSetId[] + nodeIds: BackendNodeId[] +} + +export type PreloadPipelineId = string + +export type PrerenderFinalStatus = + | 'Activated' + | 'Destroyed' + | 'LowEndDevice' + | 'InvalidSchemeRedirect' + | 'InvalidSchemeNavigation' + | 'NavigationRequestBlockedByCsp' + | 'MojoBinderPolicy' + | 'RendererProcessCrashed' + | 'RendererProcessKilled' + | 'Download' + | 'TriggerDestroyed' + | 'NavigationNotCommitted' + | 'NavigationBadHttpStatus' + | 'ClientCertRequested' + | 'NavigationRequestNetworkError' + | 'CancelAllHostsForTesting' + | 'DidFailLoad' + | 'Stop' + | 'SslCertificateError' + | 'LoginAuthRequested' + | 'UaChangeRequiresReload' + | 'BlockedByClient' + | 'AudioOutputDeviceRequested' + | 'MixedContent' + | 'TriggerBackgrounded' + | 'MemoryLimitExceeded' + | 'DataSaverEnabled' + | 'TriggerUrlHasEffectiveUrl' + | 'ActivatedBeforeStarted' + | 'InactivePageRestriction' + | 'StartFailed' + | 'TimeoutBackgrounded' + | 'CrossSiteRedirectInInitialNavigation' + | 'CrossSiteNavigationInInitialNavigation' + | 'SameSiteCrossOriginRedirectNotOptInInInitialNavigation' + | 'SameSiteCrossOriginNavigationNotOptInInInitialNavigation' + | 'ActivationNavigationParameterMismatch' + | 'ActivatedInBackground' + | 'EmbedderHostDisallowed' + | 'ActivationNavigationDestroyedBeforeSuccess' + | 'TabClosedByUserGesture' + | 'TabClosedWithoutUserGesture' + | 'PrimaryMainFrameRendererProcessCrashed' + | 'PrimaryMainFrameRendererProcessKilled' + | 'ActivationFramePolicyNotCompatible' + | 'PreloadingDisabled' + | 'BatterySaverEnabled' + | 'ActivatedDuringMainFrameNavigation' + | 'PreloadingUnsupportedByWebContents' + | 'CrossSiteRedirectInMainFrameNavigation' + | 'CrossSiteNavigationInMainFrameNavigation' + | 'SameSiteCrossOriginRedirectNotOptInInMainFrameNavigation' + | 'SameSiteCrossOriginNavigationNotOptInInMainFrameNavigation' + | 'MemoryPressureOnTrigger' + | 'MemoryPressureAfterTriggered' + | 'PrerenderingDisabledByDevTools' + | 'SpeculationRuleRemoved' + | 'ActivatedWithAuxiliaryBrowsingContexts' + | 'MaxNumOfRunningEagerPrerendersExceeded' + | 'MaxNumOfRunningNonEagerPrerendersExceeded' + | 'MaxNumOfRunningEmbedderPrerendersExceeded' + | 'PrerenderingUrlHasEffectiveUrl' + | 'RedirectedPrerenderingUrlHasEffectiveUrl' + | 'ActivationUrlHasEffectiveUrl' + | 'JavaScriptInterfaceAdded' + | 'JavaScriptInterfaceRemoved' + | 'AllPrerenderingCanceled' + | 'WindowClosed' + | 'SlowNetwork' + | 'OtherPrerenderedPageActivated' + | 'V8OptimizerDisabled' + | 'PrerenderFailedDuringPrefetch' + | 'BrowsingDataRemoved' + | 'PrerenderHostReused' + +export type PreloadingStatus = + | 'Pending' + | 'Running' + | 'Ready' + | 'Success' + | 'Failure' + | 'NotSupported' + +export type PrefetchStatus = + | 'PrefetchAllowed' + | 'PrefetchFailedIneligibleRedirect' + | 'PrefetchFailedInvalidRedirect' + | 'PrefetchFailedMIMENotSupported' + | 'PrefetchFailedNetError' + | 'PrefetchFailedNon2XX' + | 'PrefetchEvictedAfterBrowsingDataRemoved' + | 'PrefetchEvictedAfterCandidateRemoved' + | 'PrefetchEvictedForNewerPrefetch' + | 'PrefetchHeldback' + | 'PrefetchIneligibleRetryAfter' + | 'PrefetchIsPrivacyDecoy' + | 'PrefetchIsStale' + | 'PrefetchNotEligibleBrowserContextOffTheRecord' + | 'PrefetchNotEligibleDataSaverEnabled' + | 'PrefetchNotEligibleExistingProxy' + | 'PrefetchNotEligibleHostIsNonUnique' + | 'PrefetchNotEligibleNonDefaultStoragePartition' + | 'PrefetchNotEligibleSameSiteCrossOriginPrefetchRequiredProxy' + | 'PrefetchNotEligibleSchemeIsNotHttps' + | 'PrefetchNotEligibleUserHasCookies' + | 'PrefetchNotEligibleUserHasServiceWorker' + | 'PrefetchNotEligibleUserHasServiceWorkerNoFetchHandler' + | 'PrefetchNotEligibleRedirectFromServiceWorker' + | 'PrefetchNotEligibleRedirectToServiceWorker' + | 'PrefetchNotEligibleBatterySaverEnabled' + | 'PrefetchNotEligiblePreloadingDisabled' + | 'PrefetchNotFinishedInTime' + | 'PrefetchNotStarted' + | 'PrefetchNotUsedCookiesChanged' + | 'PrefetchProxyNotAvailable' + | 'PrefetchResponseUsed' + | 'PrefetchSuccessfulButNotUsed' + | 'PrefetchNotUsedProbeFailed' + +export interface PrerenderMismatchedHeaders { + headerName: string + initialValue?: string + activationValue?: string +} + +// ══ Commands ══ + +// ══ Events ══ + +export interface RuleSetUpdatedEvent { + ruleSet: RuleSet +} + +export interface RuleSetRemovedEvent { + id: RuleSetId +} + +export interface PreloadEnabledStateUpdatedEvent { + disabledByPreference: boolean + disabledByDataSaver: boolean + disabledByBatterySaver: boolean + disabledByHoldbackPrefetchSpeculationRules: boolean + disabledByHoldbackPrerenderSpeculationRules: boolean +} + +export interface PrefetchStatusUpdatedEvent { + key: PreloadingAttemptKey + pipelineId: PreloadPipelineId + initiatingFrameId: FrameId + prefetchUrl: string + status: PreloadingStatus + prefetchStatus: PrefetchStatus + requestId: RequestId +} + +export interface PrerenderStatusUpdatedEvent { + key: PreloadingAttemptKey + pipelineId: PreloadPipelineId + status: PreloadingStatus + prerenderStatus?: PrerenderFinalStatus + disallowedMojoInterface?: string + mismatchedHeaders?: PrerenderMismatchedHeaders[] +} + +export interface PreloadingAttemptSourcesUpdatedEvent { + loaderId: LoaderId + preloadingAttemptSources: PreloadingAttemptSource[] +} diff --git a/packages/cdp-protocol/src/generated/domains/profiler.ts b/packages/cdp-protocol/src/generated/domains/profiler.ts new file mode 100644 index 000000000..1763f613f --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/profiler.ts @@ -0,0 +1,96 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { Location } from './debugger' +import type { CallFrame, ScriptId } from './runtime' + +// ══ Types ══ + +export interface ProfileNode { + id: number + callFrame: CallFrame + hitCount?: number + children?: number[] + deoptReason?: string + positionTicks?: PositionTickInfo[] +} + +export interface Profile { + nodes: ProfileNode[] + startTime: number + endTime: number + samples?: number[] + timeDeltas?: number[] +} + +export interface PositionTickInfo { + line: number + ticks: number +} + +export interface CoverageRange { + startOffset: number + endOffset: number + count: number +} + +export interface FunctionCoverage { + functionName: string + ranges: CoverageRange[] + isBlockCoverage: boolean +} + +export interface ScriptCoverage { + scriptId: ScriptId + url: string + functions: FunctionCoverage[] +} + +// ══ Commands ══ + +export interface GetBestEffortCoverageResult { + result: ScriptCoverage[] +} + +export interface SetSamplingIntervalParams { + interval: number +} + +export interface StartPreciseCoverageParams { + callCount?: boolean + detailed?: boolean + allowTriggeredUpdates?: boolean +} + +export interface StartPreciseCoverageResult { + timestamp: number +} + +export interface StopResult { + profile: Profile +} + +export interface TakePreciseCoverageResult { + result: ScriptCoverage[] + timestamp: number +} + +// ══ Events ══ + +export interface ConsoleProfileFinishedEvent { + id: string + location: Location + profile: Profile + title?: string +} + +export interface ConsoleProfileStartedEvent { + id: string + location: Location + title?: string +} + +export interface PreciseCoverageDeltaUpdateEvent { + timestamp: number + occasion: string + result: ScriptCoverage[] +} diff --git a/packages/cdp-protocol/src/generated/domains/pwa.ts b/packages/cdp-protocol/src/generated/domains/pwa.ts new file mode 100644 index 000000000..152f6b396 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/pwa.ts @@ -0,0 +1,66 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { TargetID } from './target' + +// ══ Types ══ + +export interface FileHandlerAccept { + mediaType: string + fileExtensions: string[] +} + +export interface FileHandler { + action: string + accepts: FileHandlerAccept[] + displayName: string +} + +export type DisplayMode = 'standalone' | 'browser' + +// ══ Commands ══ + +export interface GetOsAppStateParams { + manifestId: string +} + +export interface GetOsAppStateResult { + badgeCount: number + fileHandlers: FileHandler[] +} + +export interface InstallParams { + manifestId: string + installUrlOrBundleUrl?: string +} + +export interface UninstallParams { + manifestId: string +} + +export interface LaunchParams { + manifestId: string + url?: string +} + +export interface LaunchResult { + targetId: TargetID +} + +export interface LaunchFilesInAppParams { + manifestId: string + files: string[] +} + +export interface LaunchFilesInAppResult { + targetIds: TargetID[] +} + +export interface OpenCurrentPageInAppParams { + manifestId: string +} + +export interface ChangeAppUserSettingsParams { + manifestId: string + linkCapturing?: boolean + displayMode?: DisplayMode +} diff --git a/packages/cdp-protocol/src/generated/domains/runtime.ts b/packages/cdp-protocol/src/generated/domains/runtime.ts new file mode 100644 index 000000000..6729619df --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/runtime.ts @@ -0,0 +1,478 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type ScriptId = string + +export interface SerializationOptions { + serialization: 'deep' | 'json' | 'idOnly' + maxDepth?: number + additionalParameters?: Record +} + +export interface DeepSerializedValue { + type: + | 'undefined' + | 'null' + | 'string' + | 'number' + | 'boolean' + | 'bigint' + | 'regexp' + | 'date' + | 'symbol' + | 'array' + | 'object' + | 'function' + | 'map' + | 'set' + | 'weakmap' + | 'weakset' + | 'error' + | 'proxy' + | 'promise' + | 'typedarray' + | 'arraybuffer' + | 'node' + | 'window' + | 'generator' + value?: unknown + objectId?: string + weakLocalObjectReference?: number +} + +export type RemoteObjectId = string + +export type UnserializableValue = string + +export interface RemoteObject { + type: + | 'object' + | 'function' + | 'undefined' + | 'string' + | 'number' + | 'boolean' + | 'symbol' + | 'bigint' + subtype?: + | 'array' + | 'null' + | 'node' + | 'regexp' + | 'date' + | 'map' + | 'set' + | 'weakmap' + | 'weakset' + | 'iterator' + | 'generator' + | 'error' + | 'proxy' + | 'promise' + | 'typedarray' + | 'arraybuffer' + | 'dataview' + | 'webassemblymemory' + | 'wasmvalue' + | 'trustedtype' + className?: string + value?: unknown + unserializableValue?: UnserializableValue + description?: string + deepSerializedValue?: DeepSerializedValue + objectId?: RemoteObjectId + preview?: ObjectPreview + customPreview?: CustomPreview +} + +export interface CustomPreview { + header: string + bodyGetterId?: RemoteObjectId +} + +export interface ObjectPreview { + type: + | 'object' + | 'function' + | 'undefined' + | 'string' + | 'number' + | 'boolean' + | 'symbol' + | 'bigint' + subtype?: + | 'array' + | 'null' + | 'node' + | 'regexp' + | 'date' + | 'map' + | 'set' + | 'weakmap' + | 'weakset' + | 'iterator' + | 'generator' + | 'error' + | 'proxy' + | 'promise' + | 'typedarray' + | 'arraybuffer' + | 'dataview' + | 'webassemblymemory' + | 'wasmvalue' + | 'trustedtype' + description?: string + overflow: boolean + properties: PropertyPreview[] + entries?: EntryPreview[] +} + +export interface PropertyPreview { + name: string + type: + | 'object' + | 'function' + | 'undefined' + | 'string' + | 'number' + | 'boolean' + | 'symbol' + | 'accessor' + | 'bigint' + value?: string + valuePreview?: ObjectPreview + subtype?: + | 'array' + | 'null' + | 'node' + | 'regexp' + | 'date' + | 'map' + | 'set' + | 'weakmap' + | 'weakset' + | 'iterator' + | 'generator' + | 'error' + | 'proxy' + | 'promise' + | 'typedarray' + | 'arraybuffer' + | 'dataview' + | 'webassemblymemory' + | 'wasmvalue' + | 'trustedtype' +} + +export interface EntryPreview { + key?: ObjectPreview + value: ObjectPreview +} + +export interface PropertyDescriptor { + name: string + value?: RemoteObject + writable?: boolean + get?: RemoteObject + set?: RemoteObject + configurable: boolean + enumerable: boolean + wasThrown?: boolean + isOwn?: boolean + symbol?: RemoteObject +} + +export interface InternalPropertyDescriptor { + name: string + value?: RemoteObject +} + +export interface PrivatePropertyDescriptor { + name: string + value?: RemoteObject + get?: RemoteObject + set?: RemoteObject +} + +export interface CallArgument { + value?: unknown + unserializableValue?: UnserializableValue + objectId?: RemoteObjectId +} + +export type ExecutionContextId = number + +export interface ExecutionContextDescription { + id: ExecutionContextId + origin: string + name: string + uniqueId: string + auxData?: Record +} + +export interface ExceptionDetails { + exceptionId: number + text: string + lineNumber: number + columnNumber: number + scriptId?: ScriptId + url?: string + stackTrace?: StackTrace + exception?: RemoteObject + executionContextId?: ExecutionContextId + exceptionMetaData?: Record +} + +export type Timestamp = number + +export type TimeDelta = number + +export interface CallFrame { + functionName: string + scriptId: ScriptId + url: string + lineNumber: number + columnNumber: number +} + +export interface StackTrace { + description?: string + callFrames: CallFrame[] + parent?: StackTrace + parentId?: StackTraceId +} + +export type UniqueDebuggerId = string + +export interface StackTraceId { + id: string + debuggerId?: UniqueDebuggerId +} + +// ══ Commands ══ + +export interface AwaitPromiseParams { + promiseObjectId: RemoteObjectId + returnByValue?: boolean + generatePreview?: boolean +} + +export interface AwaitPromiseResult { + result: RemoteObject + exceptionDetails?: ExceptionDetails +} + +export interface CallFunctionOnParams { + functionDeclaration: string + objectId?: RemoteObjectId + arguments?: CallArgument[] + silent?: boolean + returnByValue?: boolean + generatePreview?: boolean + userGesture?: boolean + awaitPromise?: boolean + executionContextId?: ExecutionContextId + objectGroup?: string + throwOnSideEffect?: boolean + uniqueContextId?: string + serializationOptions?: SerializationOptions +} + +export interface CallFunctionOnResult { + result: RemoteObject + exceptionDetails?: ExceptionDetails +} + +export interface CompileScriptParams { + expression: string + sourceURL: string + persistScript: boolean + executionContextId?: ExecutionContextId +} + +export interface CompileScriptResult { + scriptId?: ScriptId + exceptionDetails?: ExceptionDetails +} + +export interface EvaluateParams { + expression: string + objectGroup?: string + includeCommandLineAPI?: boolean + silent?: boolean + contextId?: ExecutionContextId + returnByValue?: boolean + generatePreview?: boolean + userGesture?: boolean + awaitPromise?: boolean + throwOnSideEffect?: boolean + timeout?: TimeDelta + disableBreaks?: boolean + replMode?: boolean + allowUnsafeEvalBlockedByCSP?: boolean + uniqueContextId?: string + serializationOptions?: SerializationOptions +} + +export interface EvaluateResult { + result: RemoteObject + exceptionDetails?: ExceptionDetails +} + +export interface GetIsolateIdResult { + id: string +} + +export interface GetHeapUsageResult { + usedSize: number + totalSize: number + embedderHeapUsedSize: number + backingStorageSize: number +} + +export interface GetPropertiesParams { + objectId: RemoteObjectId + ownProperties?: boolean + accessorPropertiesOnly?: boolean + generatePreview?: boolean + nonIndexedPropertiesOnly?: boolean +} + +export interface GetPropertiesResult { + result: PropertyDescriptor[] + internalProperties?: InternalPropertyDescriptor[] + privateProperties?: PrivatePropertyDescriptor[] + exceptionDetails?: ExceptionDetails +} + +export interface GlobalLexicalScopeNamesParams { + executionContextId?: ExecutionContextId +} + +export interface GlobalLexicalScopeNamesResult { + names: string[] +} + +export interface QueryObjectsParams { + prototypeObjectId: RemoteObjectId + objectGroup?: string +} + +export interface QueryObjectsResult { + objects: RemoteObject +} + +export interface ReleaseObjectParams { + objectId: RemoteObjectId +} + +export interface ReleaseObjectGroupParams { + objectGroup: string +} + +export interface RunScriptParams { + scriptId: ScriptId + executionContextId?: ExecutionContextId + objectGroup?: string + silent?: boolean + includeCommandLineAPI?: boolean + returnByValue?: boolean + generatePreview?: boolean + awaitPromise?: boolean +} + +export interface RunScriptResult { + result: RemoteObject + exceptionDetails?: ExceptionDetails +} + +export interface SetAsyncCallStackDepthParams { + maxDepth: number +} + +export interface SetCustomObjectFormatterEnabledParams { + enabled: boolean +} + +export interface SetMaxCallStackSizeToCaptureParams { + size: number +} + +export interface AddBindingParams { + name: string + executionContextId?: ExecutionContextId + executionContextName?: string +} + +export interface RemoveBindingParams { + name: string +} + +export interface GetExceptionDetailsParams { + errorObjectId: RemoteObjectId +} + +export interface GetExceptionDetailsResult { + exceptionDetails?: ExceptionDetails +} + +// ══ Events ══ + +export interface BindingCalledEvent { + name: string + payload: string + executionContextId: ExecutionContextId +} + +export interface ConsoleAPICalledEvent { + type: + | 'log' + | 'debug' + | 'info' + | 'error' + | 'warning' + | 'dir' + | 'dirxml' + | 'table' + | 'trace' + | 'clear' + | 'startGroup' + | 'startGroupCollapsed' + | 'endGroup' + | 'assert' + | 'profile' + | 'profileEnd' + | 'count' + | 'timeEnd' + args: RemoteObject[] + executionContextId: ExecutionContextId + timestamp: Timestamp + stackTrace?: StackTrace + context?: string +} + +export interface ExceptionRevokedEvent { + reason: string + exceptionId: number +} + +export interface ExceptionThrownEvent { + timestamp: Timestamp + exceptionDetails: ExceptionDetails +} + +export interface ExecutionContextCreatedEvent { + context: ExecutionContextDescription +} + +export interface ExecutionContextDestroyedEvent { + executionContextId: ExecutionContextId + executionContextUniqueId: string +} + +export interface InspectRequestedEvent { + object: RemoteObject + hints: Record + executionContextId?: ExecutionContextId +} diff --git a/packages/cdp-protocol/src/generated/domains/schema.ts b/packages/cdp-protocol/src/generated/domains/schema.ts new file mode 100644 index 000000000..1c6450b84 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/schema.ts @@ -0,0 +1,14 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export interface Domain { + name: string + version: string +} + +// ══ Commands ══ + +export interface GetDomainsResult { + domains: Domain[] +} diff --git a/packages/cdp-protocol/src/generated/domains/security.ts b/packages/cdp-protocol/src/generated/domains/security.ts new file mode 100644 index 000000000..d52ddb9de --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/security.ts @@ -0,0 +1,109 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { TimeSinceEpoch } from './network' + +// ══ Types ══ + +export type CertificateId = number + +export type MixedContentType = 'blockable' | 'optionally-blockable' | 'none' + +export type SecurityState = + | 'unknown' + | 'neutral' + | 'insecure' + | 'secure' + | 'info' + | 'insecure-broken' + +export interface CertificateSecurityState { + protocol: string + keyExchange: string + keyExchangeGroup?: string + cipher: string + mac?: string + certificate: string[] + subjectName: string + issuer: string + validFrom: TimeSinceEpoch + validTo: TimeSinceEpoch + certificateNetworkError?: string + certificateHasWeakSignature: boolean + certificateHasSha1Signature: boolean + modernSSL: boolean + obsoleteSslProtocol: boolean + obsoleteSslKeyExchange: boolean + obsoleteSslCipher: boolean + obsoleteSslSignature: boolean +} + +export type SafetyTipStatus = 'badReputation' | 'lookalike' + +export interface SafetyTipInfo { + safetyTipStatus: SafetyTipStatus + safeUrl?: string +} + +export interface VisibleSecurityState { + securityState: SecurityState + certificateSecurityState?: CertificateSecurityState + safetyTipInfo?: SafetyTipInfo + securityStateIssueIds: string[] +} + +export interface SecurityStateExplanation { + securityState: SecurityState + title: string + summary: string + description: string + mixedContentType: MixedContentType + certificate: string[] + recommendations?: string[] +} + +export interface InsecureContentStatus { + ranMixedContent: boolean + displayedMixedContent: boolean + containedMixedForm: boolean + ranContentWithCertErrors: boolean + displayedContentWithCertErrors: boolean + ranInsecureContentStyle: SecurityState + displayedInsecureContentStyle: SecurityState +} + +export type CertificateErrorAction = 'continue' | 'cancel' + +// ══ Commands ══ + +export interface SetIgnoreCertificateErrorsParams { + ignore: boolean +} + +export interface HandleCertificateErrorParams { + eventId: number + action: CertificateErrorAction +} + +export interface SetOverrideCertificateErrorsParams { + override: boolean +} + +// ══ Events ══ + +export interface CertificateErrorEvent { + eventId: number + errorType: string + requestURL: string +} + +export interface VisibleSecurityStateChangedEvent { + visibleSecurityState: VisibleSecurityState +} + +export interface SecurityStateChangedEvent { + securityState: SecurityState + schemeIsCryptographic: boolean + explanations: SecurityStateExplanation[] + insecureContentStatus: InsecureContentStatus + summary?: string +} diff --git a/packages/cdp-protocol/src/generated/domains/service-worker.ts b/packages/cdp-protocol/src/generated/domains/service-worker.ts new file mode 100644 index 000000000..43bdd1444 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/service-worker.ts @@ -0,0 +1,108 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { TargetID } from './target' + +// ══ Types ══ + +export type RegistrationID = string + +export interface ServiceWorkerRegistration { + registrationId: RegistrationID + scopeURL: string + isDeleted: boolean +} + +export type ServiceWorkerVersionRunningStatus = + | 'stopped' + | 'starting' + | 'running' + | 'stopping' + +export type ServiceWorkerVersionStatus = + | 'new' + | 'installing' + | 'installed' + | 'activating' + | 'activated' + | 'redundant' + +export interface ServiceWorkerVersion { + versionId: string + registrationId: RegistrationID + scriptURL: string + runningStatus: ServiceWorkerVersionRunningStatus + status: ServiceWorkerVersionStatus + scriptLastModified?: number + scriptResponseTime?: number + controlledClients?: TargetID[] + targetId?: TargetID + routerRules?: string +} + +export interface ServiceWorkerErrorMessage { + errorMessage: string + registrationId: RegistrationID + versionId: string + sourceURL: string + lineNumber: number + columnNumber: number +} + +// ══ Commands ══ + +export interface DeliverPushMessageParams { + origin: string + registrationId: RegistrationID + data: string +} + +export interface DispatchSyncEventParams { + origin: string + registrationId: RegistrationID + tag: string + lastChance: boolean +} + +export interface DispatchPeriodicSyncEventParams { + origin: string + registrationId: RegistrationID + tag: string +} + +export interface SetForceUpdateOnPageLoadParams { + forceUpdateOnPageLoad: boolean +} + +export interface SkipWaitingParams { + scopeURL: string +} + +export interface StartWorkerParams { + scopeURL: string +} + +export interface StopWorkerParams { + versionId: string +} + +export interface UnregisterParams { + scopeURL: string +} + +export interface UpdateRegistrationParams { + scopeURL: string +} + +// ══ Events ══ + +export interface WorkerErrorReportedEvent { + errorMessage: ServiceWorkerErrorMessage +} + +export interface WorkerRegistrationUpdatedEvent { + registrations: ServiceWorkerRegistration[] +} + +export interface WorkerVersionUpdatedEvent { + versions: ServiceWorkerVersion[] +} diff --git a/packages/cdp-protocol/src/generated/domains/storage.ts b/packages/cdp-protocol/src/generated/domains/storage.ts new file mode 100644 index 000000000..13319cec7 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/storage.ts @@ -0,0 +1,670 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BrowserContextID } from './browser' +import type { Cookie, CookieParam, RequestId, TimeSinceEpoch } from './network' +import type { FrameId } from './page' +import type { TargetID } from './target' + +// ══ Types ══ + +export type SerializedStorageKey = string + +export type StorageType = + | 'cookies' + | 'file_systems' + | 'indexeddb' + | 'local_storage' + | 'shader_cache' + | 'websql' + | 'service_workers' + | 'cache_storage' + | 'interest_groups' + | 'shared_storage' + | 'storage_buckets' + | 'all' + | 'other' + +export interface UsageForType { + storageType: StorageType + usage: number +} + +export interface TrustTokens { + issuerOrigin: string + count: number +} + +export type InterestGroupAuctionId = string + +export type InterestGroupAccessType = + | 'join' + | 'leave' + | 'update' + | 'loaded' + | 'bid' + | 'win' + | 'additionalBid' + | 'additionalBidWin' + | 'topLevelBid' + | 'topLevelAdditionalBid' + | 'clear' + +export type InterestGroupAuctionEventType = 'started' | 'configResolved' + +export type InterestGroupAuctionFetchType = + | 'bidderJs' + | 'bidderWasm' + | 'sellerJs' + | 'bidderTrustedSignals' + | 'sellerTrustedSignals' + +export type SharedStorageAccessScope = + | 'window' + | 'sharedStorageWorklet' + | 'protectedAudienceWorklet' + | 'header' + +export type SharedStorageAccessMethod = + | 'addModule' + | 'createWorklet' + | 'selectURL' + | 'run' + | 'batchUpdate' + | 'set' + | 'append' + | 'delete' + | 'clear' + | 'get' + | 'keys' + | 'values' + | 'entries' + | 'length' + | 'remainingBudget' + +export interface SharedStorageEntry { + key: string + value: string +} + +export interface SharedStorageMetadata { + creationTime: TimeSinceEpoch + length: number + remainingBudget: number + bytesUsed: number +} + +export interface SharedStoragePrivateAggregationConfig { + aggregationCoordinatorOrigin?: string + contextId?: string + filteringIdMaxBytes: number + maxContributions?: number +} + +export interface SharedStorageReportingMetadata { + eventType: string + reportingUrl: string +} + +export interface SharedStorageUrlWithMetadata { + url: string + reportingMetadata: SharedStorageReportingMetadata[] +} + +export interface SharedStorageAccessParams { + scriptSourceUrl?: string + dataOrigin?: string + operationName?: string + operationId?: string + keepAlive?: boolean + privateAggregationConfig?: SharedStoragePrivateAggregationConfig + serializedData?: string + urlsWithMetadata?: SharedStorageUrlWithMetadata[] + urnUuid?: string + key?: string + value?: string + ignoreIfPresent?: boolean + workletOrdinal?: number + workletTargetId?: TargetID + withLock?: string + batchUpdateId?: string + batchSize?: number +} + +export type StorageBucketsDurability = 'relaxed' | 'strict' + +export interface StorageBucket { + storageKey: SerializedStorageKey + name?: string +} + +export interface StorageBucketInfo { + bucket: StorageBucket + id: string + expiration: TimeSinceEpoch + quota: number + persistent: boolean + durability: StorageBucketsDurability +} + +export type AttributionReportingSourceType = 'navigation' | 'event' + +export type UnsignedInt64AsBase10 = string + +export type UnsignedInt128AsBase16 = string + +export type SignedInt64AsBase10 = string + +export interface AttributionReportingFilterDataEntry { + key: string + values: string[] +} + +export interface AttributionReportingFilterConfig { + filterValues: AttributionReportingFilterDataEntry[] + lookbackWindow?: number +} + +export interface AttributionReportingFilterPair { + filters: AttributionReportingFilterConfig[] + notFilters: AttributionReportingFilterConfig[] +} + +export interface AttributionReportingAggregationKeysEntry { + key: string + value: UnsignedInt128AsBase16 +} + +export interface AttributionReportingEventReportWindows { + start: number + ends: number[] +} + +export type AttributionReportingTriggerDataMatching = 'exact' | 'modulus' + +export interface AttributionReportingAggregatableDebugReportingData { + keyPiece: UnsignedInt128AsBase16 + value: number + types: string[] +} + +export interface AttributionReportingAggregatableDebugReportingConfig { + budget?: number + keyPiece: UnsignedInt128AsBase16 + debugData: AttributionReportingAggregatableDebugReportingData[] + aggregationCoordinatorOrigin?: string +} + +export interface AttributionScopesData { + values: string[] + limit: number + maxEventStates: number +} + +export interface AttributionReportingNamedBudgetDef { + name: string + budget: number +} + +export interface AttributionReportingSourceRegistration { + time: TimeSinceEpoch + expiry: number + triggerData: number[] + eventReportWindows: AttributionReportingEventReportWindows + aggregatableReportWindow: number + type: AttributionReportingSourceType + sourceOrigin: string + reportingOrigin: string + destinationSites: string[] + eventId: UnsignedInt64AsBase10 + priority: SignedInt64AsBase10 + filterData: AttributionReportingFilterDataEntry[] + aggregationKeys: AttributionReportingAggregationKeysEntry[] + debugKey?: UnsignedInt64AsBase10 + triggerDataMatching: AttributionReportingTriggerDataMatching + destinationLimitPriority: SignedInt64AsBase10 + aggregatableDebugReportingConfig: AttributionReportingAggregatableDebugReportingConfig + scopesData?: AttributionScopesData + maxEventLevelReports: number + namedBudgets: AttributionReportingNamedBudgetDef[] + debugReporting: boolean + eventLevelEpsilon: number +} + +export type AttributionReportingSourceRegistrationResult = + | 'success' + | 'internalError' + | 'insufficientSourceCapacity' + | 'insufficientUniqueDestinationCapacity' + | 'excessiveReportingOrigins' + | 'prohibitedByBrowserPolicy' + | 'successNoised' + | 'destinationReportingLimitReached' + | 'destinationGlobalLimitReached' + | 'destinationBothLimitsReached' + | 'reportingOriginsPerSiteLimitReached' + | 'exceedsMaxChannelCapacity' + | 'exceedsMaxScopesChannelCapacity' + | 'exceedsMaxTriggerStateCardinality' + | 'exceedsMaxEventStatesLimit' + | 'destinationPerDayReportingLimitReached' + +export type AttributionReportingSourceRegistrationTimeConfig = + | 'include' + | 'exclude' + +export interface AttributionReportingAggregatableValueDictEntry { + key: string + value: number + filteringId: UnsignedInt64AsBase10 +} + +export interface AttributionReportingAggregatableValueEntry { + values: AttributionReportingAggregatableValueDictEntry[] + filters: AttributionReportingFilterPair +} + +export interface AttributionReportingEventTriggerData { + data: UnsignedInt64AsBase10 + priority: SignedInt64AsBase10 + dedupKey?: UnsignedInt64AsBase10 + filters: AttributionReportingFilterPair +} + +export interface AttributionReportingAggregatableTriggerData { + keyPiece: UnsignedInt128AsBase16 + sourceKeys: string[] + filters: AttributionReportingFilterPair +} + +export interface AttributionReportingAggregatableDedupKey { + dedupKey?: UnsignedInt64AsBase10 + filters: AttributionReportingFilterPair +} + +export interface AttributionReportingNamedBudgetCandidate { + name?: string + filters: AttributionReportingFilterPair +} + +export interface AttributionReportingTriggerRegistration { + filters: AttributionReportingFilterPair + debugKey?: UnsignedInt64AsBase10 + aggregatableDedupKeys: AttributionReportingAggregatableDedupKey[] + eventTriggerData: AttributionReportingEventTriggerData[] + aggregatableTriggerData: AttributionReportingAggregatableTriggerData[] + aggregatableValues: AttributionReportingAggregatableValueEntry[] + aggregatableFilteringIdMaxBytes: number + debugReporting: boolean + aggregationCoordinatorOrigin?: string + sourceRegistrationTimeConfig: AttributionReportingSourceRegistrationTimeConfig + triggerContextId?: string + aggregatableDebugReportingConfig: AttributionReportingAggregatableDebugReportingConfig + scopes: string[] + namedBudgets: AttributionReportingNamedBudgetCandidate[] +} + +export type AttributionReportingEventLevelResult = + | 'success' + | 'successDroppedLowerPriority' + | 'internalError' + | 'noCapacityForAttributionDestination' + | 'noMatchingSources' + | 'deduplicated' + | 'excessiveAttributions' + | 'priorityTooLow' + | 'neverAttributedSource' + | 'excessiveReportingOrigins' + | 'noMatchingSourceFilterData' + | 'prohibitedByBrowserPolicy' + | 'noMatchingConfigurations' + | 'excessiveReports' + | 'falselyAttributedSource' + | 'reportWindowPassed' + | 'notRegistered' + | 'reportWindowNotStarted' + | 'noMatchingTriggerData' + +export type AttributionReportingAggregatableResult = + | 'success' + | 'internalError' + | 'noCapacityForAttributionDestination' + | 'noMatchingSources' + | 'excessiveAttributions' + | 'excessiveReportingOrigins' + | 'noHistograms' + | 'insufficientBudget' + | 'insufficientNamedBudget' + | 'noMatchingSourceFilterData' + | 'notRegistered' + | 'prohibitedByBrowserPolicy' + | 'deduplicated' + | 'reportWindowPassed' + | 'excessiveReports' + +export type AttributionReportingReportResult = + | 'sent' + | 'prohibited' + | 'failedToAssemble' + | 'expired' + +export interface RelatedWebsiteSet { + primarySites: string[] + associatedSites: string[] + serviceSites: string[] +} + +// ══ Commands ══ + +export interface GetStorageKeyForFrameParams { + frameId: FrameId +} + +export interface GetStorageKeyForFrameResult { + storageKey: SerializedStorageKey +} + +export interface GetStorageKeyParams { + frameId?: FrameId +} + +export interface GetStorageKeyResult { + storageKey: SerializedStorageKey +} + +export interface ClearDataForOriginParams { + origin: string + storageTypes: string +} + +export interface ClearDataForStorageKeyParams { + storageKey: string + storageTypes: string +} + +export interface GetCookiesParams { + browserContextId?: BrowserContextID +} + +export interface GetCookiesResult { + cookies: Cookie[] +} + +export interface SetCookiesParams { + cookies: CookieParam[] + browserContextId?: BrowserContextID +} + +export interface ClearCookiesParams { + browserContextId?: BrowserContextID +} + +export interface GetUsageAndQuotaParams { + origin: string +} + +export interface GetUsageAndQuotaResult { + usage: number + quota: number + overrideActive: boolean + usageBreakdown: UsageForType[] +} + +export interface OverrideQuotaForOriginParams { + origin: string + quotaSize?: number +} + +export interface TrackCacheStorageForOriginParams { + origin: string +} + +export interface TrackCacheStorageForStorageKeyParams { + storageKey: string +} + +export interface TrackIndexedDBForOriginParams { + origin: string +} + +export interface TrackIndexedDBForStorageKeyParams { + storageKey: string +} + +export interface UntrackCacheStorageForOriginParams { + origin: string +} + +export interface UntrackCacheStorageForStorageKeyParams { + storageKey: string +} + +export interface UntrackIndexedDBForOriginParams { + origin: string +} + +export interface UntrackIndexedDBForStorageKeyParams { + storageKey: string +} + +export interface GetTrustTokensResult { + tokens: TrustTokens[] +} + +export interface ClearTrustTokensParams { + issuerOrigin: string +} + +export interface ClearTrustTokensResult { + didDeleteTokens: boolean +} + +export interface GetInterestGroupDetailsParams { + ownerOrigin: string + name: string +} + +export interface GetInterestGroupDetailsResult { + details: Record +} + +export interface SetInterestGroupTrackingParams { + enable: boolean +} + +export interface SetInterestGroupAuctionTrackingParams { + enable: boolean +} + +export interface GetSharedStorageMetadataParams { + ownerOrigin: string +} + +export interface GetSharedStorageMetadataResult { + metadata: SharedStorageMetadata +} + +export interface GetSharedStorageEntriesParams { + ownerOrigin: string +} + +export interface GetSharedStorageEntriesResult { + entries: SharedStorageEntry[] +} + +export interface SetSharedStorageEntryParams { + ownerOrigin: string + key: string + value: string + ignoreIfPresent?: boolean +} + +export interface DeleteSharedStorageEntryParams { + ownerOrigin: string + key: string +} + +export interface ClearSharedStorageEntriesParams { + ownerOrigin: string +} + +export interface ResetSharedStorageBudgetParams { + ownerOrigin: string +} + +export interface SetSharedStorageTrackingParams { + enable: boolean +} + +export interface SetStorageBucketTrackingParams { + storageKey: string + enable: boolean +} + +export interface DeleteStorageBucketParams { + bucket: StorageBucket +} + +export interface RunBounceTrackingMitigationsResult { + deletedSites: string[] +} + +export interface SetAttributionReportingLocalTestingModeParams { + enabled: boolean +} + +export interface SetAttributionReportingTrackingParams { + enable: boolean +} + +export interface SendPendingAttributionReportsResult { + numSent: number +} + +export interface GetRelatedWebsiteSetsResult { + sets: RelatedWebsiteSet[] +} + +export interface GetAffectedUrlsForThirdPartyCookieMetadataParams { + firstPartyUrl: string + thirdPartyUrls: string[] +} + +export interface GetAffectedUrlsForThirdPartyCookieMetadataResult { + matchedUrls: string[] +} + +export interface SetProtectedAudienceKAnonymityParams { + owner: string + name: string + hashes: string[] +} + +// ══ Events ══ + +export interface CacheStorageContentUpdatedEvent { + origin: string + storageKey: string + bucketId: string + cacheName: string +} + +export interface CacheStorageListUpdatedEvent { + origin: string + storageKey: string + bucketId: string +} + +export interface IndexedDBContentUpdatedEvent { + origin: string + storageKey: string + bucketId: string + databaseName: string + objectStoreName: string +} + +export interface IndexedDBListUpdatedEvent { + origin: string + storageKey: string + bucketId: string +} + +export interface InterestGroupAccessedEvent { + accessTime: TimeSinceEpoch + type: InterestGroupAccessType + ownerOrigin: string + name: string + componentSellerOrigin?: string + bid?: number + bidCurrency?: string + uniqueAuctionId?: InterestGroupAuctionId +} + +export interface InterestGroupAuctionEventOccurredEvent { + eventTime: TimeSinceEpoch + type: InterestGroupAuctionEventType + uniqueAuctionId: InterestGroupAuctionId + parentAuctionId?: InterestGroupAuctionId + auctionConfig?: Record +} + +export interface InterestGroupAuctionNetworkRequestCreatedEvent { + type: InterestGroupAuctionFetchType + requestId: RequestId + auctions: InterestGroupAuctionId[] +} + +export interface SharedStorageAccessedEvent { + accessTime: TimeSinceEpoch + scope: SharedStorageAccessScope + method: SharedStorageAccessMethod + mainFrameId: FrameId + ownerOrigin: string + ownerSite: string + params: SharedStorageAccessParams +} + +export interface SharedStorageWorkletOperationExecutionFinishedEvent { + finishedTime: TimeSinceEpoch + executionTime: number + method: SharedStorageAccessMethod + operationId: string + workletTargetId: TargetID + mainFrameId: FrameId + ownerOrigin: string +} + +export interface StorageBucketCreatedOrUpdatedEvent { + bucketInfo: StorageBucketInfo +} + +export interface StorageBucketDeletedEvent { + bucketId: string +} + +export interface AttributionReportingSourceRegisteredEvent { + registration: AttributionReportingSourceRegistration + result: AttributionReportingSourceRegistrationResult +} + +export interface AttributionReportingTriggerRegisteredEvent { + registration: AttributionReportingTriggerRegistration + eventLevel: AttributionReportingEventLevelResult + aggregatable: AttributionReportingAggregatableResult +} + +export interface AttributionReportingReportSentEvent { + url: string + body: Record + result: AttributionReportingReportResult + netError?: number + netErrorName?: string + httpStatusCode?: number +} + +export interface AttributionReportingVerboseDebugReportSentEvent { + url: string + body?: Record[] + netError?: number + netErrorName?: string + httpStatusCode?: number +} diff --git a/packages/cdp-protocol/src/generated/domains/system-info.ts b/packages/cdp-protocol/src/generated/domains/system-info.ts new file mode 100644 index 000000000..735f2b4cf --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/system-info.ts @@ -0,0 +1,72 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export interface GPUDevice { + vendorId: number + deviceId: number + subSysId?: number + revision?: number + vendorString: string + deviceString: string + driverVendor: string + driverVersion: string +} + +export interface Size { + width: number + height: number +} + +export interface VideoDecodeAcceleratorCapability { + profile: string + maxResolution: Size + minResolution: Size +} + +export interface VideoEncodeAcceleratorCapability { + profile: string + maxResolution: Size + maxFramerateNumerator: number + maxFramerateDenominator: number +} + +export type SubsamplingFormat = 'yuv420' | 'yuv422' | 'yuv444' + +export type ImageType = 'jpeg' | 'webp' | 'unknown' + +export interface GPUInfo { + devices: GPUDevice[] + auxAttributes?: Record + featureStatus?: Record + driverBugWorkarounds: string[] + videoDecoding: VideoDecodeAcceleratorCapability[] + videoEncoding: VideoEncodeAcceleratorCapability[] +} + +export interface ProcessInfo { + type: string + id: number + cpuTime: number +} + +// ══ Commands ══ + +export interface GetInfoResult { + gpu: GPUInfo + modelName: string + modelVersion: string + commandLine: string +} + +export interface GetFeatureStateParams { + featureState: string +} + +export interface GetFeatureStateResult { + featureEnabled: boolean +} + +export interface GetProcessInfoResult { + processInfo: ProcessInfo[] +} diff --git a/packages/cdp-protocol/src/generated/domains/target.ts b/packages/cdp-protocol/src/generated/domains/target.ts new file mode 100644 index 000000000..fb9afe070 --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/target.ts @@ -0,0 +1,215 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { BrowserContextID, TabID, WindowID } from './browser' +import type { FrameId } from './page' + +// ══ Types ══ + +export type TargetID = string + +export type SessionID = string + +export interface TargetInfo { + targetId: TargetID + type: string + title: string + url: string + attached: boolean + openerId?: TargetID + canAccessOpener: boolean + openerFrameId?: FrameId + parentFrameId?: FrameId + browserContextId?: BrowserContextID + subtype?: string + tabId?: TabID + windowId?: WindowID +} + +export interface FilterEntry { + exclude?: boolean + type?: string +} + +export type TargetFilter = FilterEntry[] + +export interface RemoteLocation { + host: string + port: number +} + +export type WindowState = 'normal' | 'minimized' | 'maximized' | 'fullscreen' + +// ══ Commands ══ + +export interface ActivateTargetParams { + targetId: TargetID +} + +export interface AttachToTargetParams { + targetId: TargetID + flatten?: boolean +} + +export interface AttachToTargetResult { + sessionId: SessionID +} + +export interface AttachToBrowserTargetResult { + sessionId: SessionID +} + +export interface CloseTargetParams { + targetId: TargetID +} + +export interface CloseTargetResult { + success: boolean +} + +export interface ExposeDevToolsProtocolParams { + targetId: TargetID + bindingName?: string + inheritPermissions?: boolean +} + +export interface CreateBrowserContextParams { + disposeOnDetach?: boolean + proxyServer?: string + proxyBypassList?: string + originsWithUniversalNetworkAccess?: string[] +} + +export interface CreateBrowserContextResult { + browserContextId: BrowserContextID +} + +export interface GetBrowserContextsResult { + browserContextIds: BrowserContextID[] + defaultBrowserContextId?: BrowserContextID +} + +export interface CreateTargetParams { + url: string + left?: number + top?: number + width?: number + height?: number + windowState?: WindowState + browserContextId?: BrowserContextID + enableBeginFrameControl?: boolean + newWindow?: boolean + background?: boolean + forTab?: boolean + hidden?: boolean +} + +export interface CreateTargetResult { + targetId: TargetID +} + +export interface DetachFromTargetParams { + sessionId?: SessionID + targetId?: TargetID +} + +export interface DisposeBrowserContextParams { + browserContextId: BrowserContextID +} + +export interface GetTargetInfoParams { + targetId?: TargetID +} + +export interface GetTargetInfoResult { + targetInfo: TargetInfo +} + +export interface GetTargetsParams { + filter?: TargetFilter +} + +export interface GetTargetsResult { + targetInfos: TargetInfo[] +} + +export interface SendMessageToTargetParams { + message: string + sessionId?: SessionID + targetId?: TargetID +} + +export interface SetAutoAttachParams { + autoAttach: boolean + waitForDebuggerOnStart: boolean + flatten?: boolean + filter?: TargetFilter +} + +export interface AutoAttachRelatedParams { + targetId: TargetID + waitForDebuggerOnStart: boolean + filter?: TargetFilter +} + +export interface SetDiscoverTargetsParams { + discover: boolean + filter?: TargetFilter +} + +export interface SetRemoteLocationsParams { + locations: RemoteLocation[] +} + +export interface GetDevToolsTargetParams { + targetId: TargetID +} + +export interface GetDevToolsTargetResult { + targetId?: TargetID +} + +export interface OpenDevToolsParams { + targetId: TargetID + panelId?: string +} + +export interface OpenDevToolsResult { + targetId: TargetID +} + +// ══ Events ══ + +export interface AttachedToTargetEvent { + sessionId: SessionID + targetInfo: TargetInfo + waitingForDebugger: boolean +} + +export interface DetachedFromTargetEvent { + sessionId: SessionID + targetId?: TargetID +} + +export interface ReceivedMessageFromTargetEvent { + sessionId: SessionID + message: string + targetId?: TargetID +} + +export interface TargetCreatedEvent { + targetInfo: TargetInfo +} + +export interface TargetDestroyedEvent { + targetId: TargetID +} + +export interface TargetCrashedEvent { + targetId: TargetID + status: string + errorCode: number +} + +export interface TargetInfoChangedEvent { + targetInfo: TargetInfo +} diff --git a/packages/cdp-protocol/src/generated/domains/tethering.ts b/packages/cdp-protocol/src/generated/domains/tethering.ts new file mode 100644 index 000000000..f30e9437b --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/tethering.ts @@ -0,0 +1,18 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Commands ══ + +export interface BindParams { + port: number +} + +export interface UnbindParams { + port: number +} + +// ══ Events ══ + +export interface AcceptedEvent { + port: number + connectionId: string +} diff --git a/packages/cdp-protocol/src/generated/domains/tracing.ts b/packages/cdp-protocol/src/generated/domains/tracing.ts new file mode 100644 index 000000000..32f08873d --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/tracing.ts @@ -0,0 +1,86 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { StreamHandle } from './io' + +// ══ Types ══ + +export type MemoryDumpConfig = Record + +export interface TraceConfig { + recordMode?: + | 'recordUntilFull' + | 'recordContinuously' + | 'recordAsMuchAsPossible' + | 'echoToConsole' + traceBufferSizeInKb?: number + enableSampling?: boolean + enableSystrace?: boolean + enableArgumentFilter?: boolean + includedCategories?: string[] + excludedCategories?: string[] + syntheticDelays?: string[] + memoryDumpConfig?: MemoryDumpConfig +} + +export type StreamFormat = 'json' | 'proto' + +export type StreamCompression = 'none' | 'gzip' + +export type MemoryDumpLevelOfDetail = 'background' | 'light' | 'detailed' + +export type TracingBackend = 'auto' | 'chrome' | 'system' + +// ══ Commands ══ + +export interface GetCategoriesResult { + categories: string[] +} + +export interface GetTrackEventDescriptorResult { + descriptor: string +} + +export interface RecordClockSyncMarkerParams { + syncId: string +} + +export interface RequestMemoryDumpParams { + deterministic?: boolean + levelOfDetail?: MemoryDumpLevelOfDetail +} + +export interface RequestMemoryDumpResult { + dumpGuid: string + success: boolean +} + +export interface StartParams { + categories?: string + options?: string + bufferUsageReportingInterval?: number + transferMode?: 'ReportEvents' | 'ReturnAsStream' + streamFormat?: StreamFormat + streamCompression?: StreamCompression + traceConfig?: TraceConfig + perfettoConfig?: string + tracingBackend?: TracingBackend +} + +// ══ Events ══ + +export interface BufferUsageEvent { + percentFull?: number + eventCount?: number + value?: number +} + +export interface DataCollectedEvent { + value: Record[] +} + +export interface TracingCompleteEvent { + dataLossOccurred: boolean + stream?: StreamHandle + traceFormat?: StreamFormat + streamCompression?: StreamCompression +} diff --git a/packages/cdp-protocol/src/generated/domains/web-audio.ts b/packages/cdp-protocol/src/generated/domains/web-audio.ts new file mode 100644 index 000000000..f2b74bd1e --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/web-audio.ts @@ -0,0 +1,145 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type GraphObjectId = string + +export type ContextType = 'realtime' | 'offline' + +export type ContextState = 'suspended' | 'running' | 'closed' | 'interrupted' + +export type NodeType = string + +export type ChannelCountMode = 'clamped-max' | 'explicit' | 'max' + +export type ChannelInterpretation = 'discrete' | 'speakers' + +export type ParamType = string + +export type AutomationRate = 'a-rate' | 'k-rate' + +export interface ContextRealtimeData { + currentTime: number + renderCapacity: number + callbackIntervalMean: number + callbackIntervalVariance: number +} + +export interface BaseAudioContext { + contextId: GraphObjectId + contextType: ContextType + contextState: ContextState + realtimeData?: ContextRealtimeData + callbackBufferSize: number + maxOutputChannelCount: number + sampleRate: number +} + +export interface AudioListener { + listenerId: GraphObjectId + contextId: GraphObjectId +} + +export interface AudioNode { + nodeId: GraphObjectId + contextId: GraphObjectId + nodeType: NodeType + numberOfInputs: number + numberOfOutputs: number + channelCount: number + channelCountMode: ChannelCountMode + channelInterpretation: ChannelInterpretation +} + +export interface AudioParam { + paramId: GraphObjectId + nodeId: GraphObjectId + contextId: GraphObjectId + paramType: ParamType + rate: AutomationRate + defaultValue: number + minValue: number + maxValue: number +} + +// ══ Commands ══ + +export interface GetRealtimeDataParams { + contextId: GraphObjectId +} + +export interface GetRealtimeDataResult { + realtimeData: ContextRealtimeData +} + +// ══ Events ══ + +export interface ContextCreatedEvent { + context: BaseAudioContext +} + +export interface ContextWillBeDestroyedEvent { + contextId: GraphObjectId +} + +export interface ContextChangedEvent { + context: BaseAudioContext +} + +export interface AudioListenerCreatedEvent { + listener: AudioListener +} + +export interface AudioListenerWillBeDestroyedEvent { + contextId: GraphObjectId + listenerId: GraphObjectId +} + +export interface AudioNodeCreatedEvent { + node: AudioNode +} + +export interface AudioNodeWillBeDestroyedEvent { + contextId: GraphObjectId + nodeId: GraphObjectId +} + +export interface AudioParamCreatedEvent { + param: AudioParam +} + +export interface AudioParamWillBeDestroyedEvent { + contextId: GraphObjectId + nodeId: GraphObjectId + paramId: GraphObjectId +} + +export interface NodesConnectedEvent { + contextId: GraphObjectId + sourceId: GraphObjectId + destinationId: GraphObjectId + sourceOutputIndex?: number + destinationInputIndex?: number +} + +export interface NodesDisconnectedEvent { + contextId: GraphObjectId + sourceId: GraphObjectId + destinationId: GraphObjectId + sourceOutputIndex?: number + destinationInputIndex?: number +} + +export interface NodeParamConnectedEvent { + contextId: GraphObjectId + sourceId: GraphObjectId + destinationId: GraphObjectId + sourceOutputIndex?: number +} + +export interface NodeParamDisconnectedEvent { + contextId: GraphObjectId + sourceId: GraphObjectId + destinationId: GraphObjectId + sourceOutputIndex?: number +} diff --git a/packages/cdp-protocol/src/generated/domains/web-authn.ts b/packages/cdp-protocol/src/generated/domains/web-authn.ts new file mode 100644 index 000000000..2e684006c --- /dev/null +++ b/packages/cdp-protocol/src/generated/domains/web-authn.ts @@ -0,0 +1,141 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +// ══ Types ══ + +export type AuthenticatorId = string + +export type AuthenticatorProtocol = 'u2f' | 'ctap2' + +export type Ctap2Version = 'ctap2_0' | 'ctap2_1' + +export type AuthenticatorTransport = + | 'usb' + | 'nfc' + | 'ble' + | 'cable' + | 'internal' + +export interface VirtualAuthenticatorOptions { + protocol: AuthenticatorProtocol + ctap2Version?: Ctap2Version + transport: AuthenticatorTransport + hasResidentKey?: boolean + hasUserVerification?: boolean + hasLargeBlob?: boolean + hasCredBlob?: boolean + hasMinPinLength?: boolean + hasPrf?: boolean + automaticPresenceSimulation?: boolean + isUserVerified?: boolean + defaultBackupEligibility?: boolean + defaultBackupState?: boolean +} + +export interface Credential { + credentialId: string + isResidentCredential: boolean + rpId?: string + privateKey: string + userHandle?: string + signCount: number + largeBlob?: string + backupEligibility?: boolean + backupState?: boolean + userName?: string + userDisplayName?: string +} + +// ══ Commands ══ + +export interface EnableParams { + enableUI?: boolean +} + +export interface AddVirtualAuthenticatorParams { + options: VirtualAuthenticatorOptions +} + +export interface AddVirtualAuthenticatorResult { + authenticatorId: AuthenticatorId +} + +export interface SetResponseOverrideBitsParams { + authenticatorId: AuthenticatorId + isBogusSignature?: boolean + isBadUV?: boolean + isBadUP?: boolean +} + +export interface RemoveVirtualAuthenticatorParams { + authenticatorId: AuthenticatorId +} + +export interface AddCredentialParams { + authenticatorId: AuthenticatorId + credential: Credential +} + +export interface GetCredentialParams { + authenticatorId: AuthenticatorId + credentialId: string +} + +export interface GetCredentialResult { + credential: Credential +} + +export interface GetCredentialsParams { + authenticatorId: AuthenticatorId +} + +export interface GetCredentialsResult { + credentials: Credential[] +} + +export interface RemoveCredentialParams { + authenticatorId: AuthenticatorId + credentialId: string +} + +export interface ClearCredentialsParams { + authenticatorId: AuthenticatorId +} + +export interface SetUserVerifiedParams { + authenticatorId: AuthenticatorId + isUserVerified: boolean +} + +export interface SetAutomaticPresenceSimulationParams { + authenticatorId: AuthenticatorId + enabled: boolean +} + +export interface SetCredentialPropertiesParams { + authenticatorId: AuthenticatorId + credentialId: string + backupEligibility?: boolean + backupState?: boolean +} + +// ══ Events ══ + +export interface CredentialAddedEvent { + authenticatorId: AuthenticatorId + credential: Credential +} + +export interface CredentialDeletedEvent { + authenticatorId: AuthenticatorId + credentialId: string +} + +export interface CredentialUpdatedEvent { + authenticatorId: AuthenticatorId + credential: Credential +} + +export interface CredentialAssertedEvent { + authenticatorId: AuthenticatorId + credential: Credential +} diff --git a/packages/cdp-protocol/src/generated/protocol-api.ts b/packages/cdp-protocol/src/generated/protocol-api.ts new file mode 100644 index 000000000..a8c31b793 --- /dev/null +++ b/packages/cdp-protocol/src/generated/protocol-api.ts @@ -0,0 +1,115 @@ +// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ── + +import type { AccessibilityApi } from './domain-apis/accessibility' +import type { AnimationApi } from './domain-apis/animation' +import type { AuditsApi } from './domain-apis/audits' +import type { AutofillApi } from './domain-apis/autofill' +import type { BackgroundServiceApi } from './domain-apis/background-service' +import type { BluetoothEmulationApi } from './domain-apis/bluetooth-emulation' +import type { BookmarksApi } from './domain-apis/bookmarks' +import type { BrowserApi } from './domain-apis/browser' +import type { CacheStorageApi } from './domain-apis/cache-storage' +import type { CastApi } from './domain-apis/cast' +import type { ConsoleApi } from './domain-apis/console' +import type { CSSApi } from './domain-apis/css' +import type { DebuggerApi } from './domain-apis/debugger' +import type { DeviceAccessApi } from './domain-apis/device-access' +import type { DeviceOrientationApi } from './domain-apis/device-orientation' +import type { DOMApi } from './domain-apis/dom' +import type { DOMDebuggerApi } from './domain-apis/dom-debugger' +import type { DOMSnapshotApi } from './domain-apis/dom-snapshot' +import type { DOMStorageApi } from './domain-apis/dom-storage' +import type { EmulationApi } from './domain-apis/emulation' +import type { EventBreakpointsApi } from './domain-apis/event-breakpoints' +import type { ExtensionsApi } from './domain-apis/extensions' +import type { FedCmApi } from './domain-apis/fed-cm' +import type { FetchApi } from './domain-apis/fetch' +import type { FileSystemApi } from './domain-apis/file-system' +import type { HeadlessExperimentalApi } from './domain-apis/headless-experimental' +import type { HeapProfilerApi } from './domain-apis/heap-profiler' +import type { HistoryApi } from './domain-apis/history' +import type { IndexedDBApi } from './domain-apis/indexed-db' +import type { InputApi } from './domain-apis/input' +import type { InspectorApi } from './domain-apis/inspector' +import type { IOApi } from './domain-apis/io' +import type { LayerTreeApi } from './domain-apis/layer-tree' +import type { LogApi } from './domain-apis/log' +import type { MediaApi } from './domain-apis/media' +import type { MemoryApi } from './domain-apis/memory' +import type { NetworkApi } from './domain-apis/network' +import type { OverlayApi } from './domain-apis/overlay' +import type { PageApi } from './domain-apis/page' +import type { PerformanceApi } from './domain-apis/performance' +import type { PerformanceTimelineApi } from './domain-apis/performance-timeline' +import type { PreloadApi } from './domain-apis/preload' +import type { ProfilerApi } from './domain-apis/profiler' +import type { PWAApi } from './domain-apis/pwa' +import type { RuntimeApi } from './domain-apis/runtime' +import type { SchemaApi } from './domain-apis/schema' +import type { SecurityApi } from './domain-apis/security' +import type { ServiceWorkerApi } from './domain-apis/service-worker' +import type { StorageApi } from './domain-apis/storage' +import type { SystemInfoApi } from './domain-apis/system-info' +import type { TargetApi } from './domain-apis/target' +import type { TetheringApi } from './domain-apis/tethering' +import type { TracingApi } from './domain-apis/tracing' +import type { WebAudioApi } from './domain-apis/web-audio' +import type { WebAuthnApi } from './domain-apis/web-authn' + +export interface ProtocolApi { + readonly Accessibility: AccessibilityApi + readonly Animation: AnimationApi + readonly Audits: AuditsApi + readonly Autofill: AutofillApi + readonly Bookmarks: BookmarksApi + readonly BackgroundService: BackgroundServiceApi + readonly BluetoothEmulation: BluetoothEmulationApi + readonly Browser: BrowserApi + readonly CSS: CSSApi + readonly CacheStorage: CacheStorageApi + readonly Cast: CastApi + readonly DOM: DOMApi + readonly DOMDebugger: DOMDebuggerApi + readonly DOMSnapshot: DOMSnapshotApi + readonly DOMStorage: DOMStorageApi + readonly DeviceAccess: DeviceAccessApi + readonly DeviceOrientation: DeviceOrientationApi + readonly Emulation: EmulationApi + readonly EventBreakpoints: EventBreakpointsApi + readonly Extensions: ExtensionsApi + readonly FedCm: FedCmApi + readonly Fetch: FetchApi + readonly FileSystem: FileSystemApi + readonly HeadlessExperimental: HeadlessExperimentalApi + readonly History: HistoryApi + readonly IO: IOApi + readonly IndexedDB: IndexedDBApi + readonly Input: InputApi + readonly Inspector: InspectorApi + readonly LayerTree: LayerTreeApi + readonly Log: LogApi + readonly Media: MediaApi + readonly Memory: MemoryApi + readonly Network: NetworkApi + readonly Overlay: OverlayApi + readonly PWA: PWAApi + readonly Page: PageApi + readonly Performance: PerformanceApi + readonly PerformanceTimeline: PerformanceTimelineApi + readonly Preload: PreloadApi + readonly Security: SecurityApi + readonly ServiceWorker: ServiceWorkerApi + readonly Storage: StorageApi + readonly SystemInfo: SystemInfoApi + readonly Target: TargetApi + readonly Tethering: TetheringApi + readonly Tracing: TracingApi + readonly WebAudio: WebAudioApi + readonly WebAuthn: WebAuthnApi + readonly Console: ConsoleApi + readonly Debugger: DebuggerApi + readonly HeapProfiler: HeapProfilerApi + readonly Profiler: ProfilerApi + readonly Runtime: RuntimeApi + readonly Schema: SchemaApi +} diff --git a/packages/cdp-protocol/tsconfig.json b/packages/cdp-protocol/tsconfig.json new file mode 100644 index 000000000..db7391936 --- /dev/null +++ b/packages/cdp-protocol/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "src" + }, + "include": ["src/**/*"] +} diff --git a/scripts/codegen/cdp-protocol.ts b/scripts/codegen/cdp-protocol.ts new file mode 100644 index 000000000..395c427cf --- /dev/null +++ b/scripts/codegen/cdp-protocol.ts @@ -0,0 +1,107 @@ +import { mkdirSync, rmSync } from 'node:fs' +import { join } from 'node:path' +import { emitDomainApiFile } from './lib/domain-api-emitter' +import { emitDomainFile } from './lib/domain-emitter' +import { domainToKebab } from './lib/naming' +import { + emitCreateApiFile, + emitProtocolApiFile, +} from './lib/protocol-api-emitter' +import { parseProtocol } from './lib/protocol-parser' + +const PROTOCOL_PATH = process.env.CDP_PROTOCOL_JSON +if (!PROTOCOL_PATH) { + console.error('Set CDP_PROTOCOL_JSON to the path of browser_protocol.json') + process.exit(1) +} +const OUT_DIR = join(import.meta.dir, '../../packages/cdp-protocol') +const GEN_DIR = join(OUT_DIR, 'src/generated') +const DOMAINS_DIR = join(GEN_DIR, 'domains') +const DOMAIN_APIS_DIR = join(GEN_DIR, 'domain-apis') + +async function main() { + console.log('Parsing protocol...') + const protocol = await parseProtocol(PROTOCOL_PATH) + console.log( + `Found ${protocol.domains.length} domains (v${protocol.version.major}.${protocol.version.minor})`, + ) + + rmSync(GEN_DIR, { recursive: true, force: true }) + mkdirSync(DOMAINS_DIR, { recursive: true }) + mkdirSync(DOMAIN_APIS_DIR, { recursive: true }) + + console.log('Generating domain type files...') + for (const domain of protocol.domains) { + const fileName = `${domainToKebab(domain.domain)}.ts` + const content = emitDomainFile(domain) + await Bun.write(join(DOMAINS_DIR, fileName), content) + } + + console.log('Generating domain API files...') + for (const domain of protocol.domains) { + const fileName = `${domainToKebab(domain.domain)}.ts` + const content = emitDomainApiFile(domain) + await Bun.write(join(DOMAIN_APIS_DIR, fileName), content) + } + + console.log('Generating protocol-api.ts...') + await Bun.write( + join(GEN_DIR, 'protocol-api.ts'), + emitProtocolApiFile(protocol.domains), + ) + + console.log('Generating create-api.ts...') + await Bun.write( + join(GEN_DIR, 'create-api.ts'), + emitCreateApiFile(protocol.domains), + ) + + console.log('Generating package.json exports...') + await writePackageJson(protocol) + + console.log('Done!') +} + +async function writePackageJson( + protocol: Awaited>, +) { + const exports: Record = {} + + for (const domain of protocol.domains) { + const kebab = domainToKebab(domain.domain) + const domainPath = `./src/generated/domains/${kebab}.ts` + exports[`./domains/${kebab}`] = { types: domainPath, default: domainPath } + + const apiPath = `./src/generated/domain-apis/${kebab}.ts` + exports[`./domain-apis/${kebab}`] = { types: apiPath, default: apiPath } + } + + exports['./protocol-api'] = { + types: './src/generated/protocol-api.ts', + default: './src/generated/protocol-api.ts', + } + exports['./create-api'] = { + types: './src/generated/create-api.ts', + default: './src/generated/create-api.ts', + } + + const pkg = { + name: '@browseros/cdp-protocol', + version: '0.0.1', + type: 'module', + scripts: { + typecheck: 'tsc --noEmit', + }, + exports, + } + + await Bun.write( + join(OUT_DIR, 'package.json'), + `${JSON.stringify(pkg, null, 2)}\n`, + ) +} + +main().catch((err) => { + console.error('Codegen failed:', err) + process.exit(1) +}) diff --git a/scripts/codegen/lib/domain-api-emitter.ts b/scripts/codegen/lib/domain-api-emitter.ts new file mode 100644 index 000000000..e8a53540a --- /dev/null +++ b/scripts/codegen/lib/domain-api-emitter.ts @@ -0,0 +1,92 @@ +import { domainToKebab, toPascalCase } from './naming' +import type { ProtocolCommand, ProtocolDomain } from './protocol-parser' + +function allParamsOptional(cmd: ProtocolCommand): boolean { + if (!cmd.parameters || cmd.parameters.length === 0) return false + return cmd.parameters.every((p) => p.optional === true) +} + +// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: codegen — linear iteration over commands/events +export function emitDomainApiFile(domain: ProtocolDomain): string { + const lines: string[] = [] + const imports = new Set() + const commands = domain.commands ?? [] + const events = domain.events ?? [] + + for (const cmd of commands) { + const pascal = toPascalCase(cmd.name) + if (cmd.parameters && cmd.parameters.length > 0) { + imports.add(`${pascal}Params`) + } + if (cmd.returns && cmd.returns.length > 0) { + imports.add(`${pascal}Result`) + } + } + + for (const event of events) { + if (event.parameters && event.parameters.length > 0) { + imports.add(`${toPascalCase(event.name)}Event`) + } + } + + lines.push('// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ──') + lines.push('') + + if (imports.size > 0) { + const kebab = domainToKebab(domain.domain) + const sorted = [...imports].sort() + lines.push('import type {') + for (const imp of sorted) { + lines.push(` ${imp},`) + } + lines.push(`} from '../domains/${kebab}'`) + lines.push('') + } + + lines.push(`export interface ${domain.domain}Api {`) + + if (commands.length > 0) { + lines.push(' // ── Commands ──') + lines.push('') + for (const cmd of commands) { + const pascal = toPascalCase(cmd.name) + const hasParams = cmd.parameters && cmd.parameters.length > 0 + const hasReturns = cmd.returns && cmd.returns.length > 0 + const returnType = hasReturns + ? `Promise<${pascal}Result>` + : 'Promise' + + if (!hasParams) { + lines.push(` ${cmd.name}(): ${returnType}`) + } else if (allParamsOptional(cmd)) { + lines.push(` ${cmd.name}(params?: ${pascal}Params): ${returnType}`) + } else { + lines.push(` ${cmd.name}(params: ${pascal}Params): ${returnType}`) + } + } + } + + if (events.length > 0) { + if (commands.length > 0) lines.push('') + lines.push(' // ── Events ──') + lines.push('') + for (const event of events) { + const hasParams = event.parameters && event.parameters.length > 0 + if (hasParams) { + const pascal = toPascalCase(event.name) + lines.push( + ` on(event: '${event.name}', handler: (params: ${pascal}Event) => void): () => void`, + ) + } else { + lines.push( + ` on(event: '${event.name}', handler: () => void): () => void`, + ) + } + } + } + + lines.push('}') + lines.push('') + + return lines.join('\n') +} diff --git a/scripts/codegen/lib/domain-emitter.ts b/scripts/codegen/lib/domain-emitter.ts new file mode 100644 index 000000000..92cc424d2 --- /dev/null +++ b/scripts/codegen/lib/domain-emitter.ts @@ -0,0 +1,105 @@ +import { domainToKebab, resolveRef, toPascalCase } from './naming' +import type { ProtocolDomain } from './protocol-parser' +import { + collectImports, + emitInterface, + emitType, + type RefResolver, +} from './type-emitter' + +// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: codegen — linear iteration over types/commands/events +export function emitDomainFile(domain: ProtocolDomain): string { + const lines: string[] = [] + const localTypeNames = new Set((domain.types ?? []).map((t) => t.id)) + const allImports = new Map>() + + const allRefSources = [ + ...(domain.types ?? []).flatMap((t) => [ + ...(t.properties ?? []), + ...(t.items ? [t] : []), + ]), + ...(domain.commands ?? []).flatMap((c) => [ + ...(c.parameters ?? []), + ...(c.returns ?? []), + ]), + ...(domain.events ?? []).flatMap((e) => e.parameters ?? []), + ] + + const imports = collectImports(allRefSources, domain.domain) + for (const ref of imports) { + const existing = allImports.get(ref.domain) ?? new Set() + existing.add(ref.typeName) + allImports.set(ref.domain, existing) + } + + const aliases = new Map() + for (const [depDomain, types] of allImports) { + for (const typeName of types) { + if (localTypeNames.has(typeName)) { + aliases.set(`${depDomain}.${typeName}`, `${depDomain}${typeName}`) + } + } + } + + const resolve: RefResolver = (ref: string) => { + const r = resolveRef(ref) + if (!r.domain || r.domain === domain.domain) return r.typeName + return aliases.get(ref) ?? r.typeName + } + + lines.push(`// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ──`) + lines.push('') + + if (allImports.size > 0) { + const sortedDomains = [...allImports.keys()].sort() + for (const dep of sortedDomains) { + const types = [...(allImports.get(dep) ?? [])].sort() + const file = domainToKebab(dep) + const specs = types.map((t) => { + const alias = aliases.get(`${dep}.${t}`) + return alias ? `${t} as ${alias}` : t + }) + lines.push(`import type { ${specs.join(', ')} } from './${file}'`) + } + lines.push('') + } + + if (domain.types && domain.types.length > 0) { + lines.push('// ══ Types ══') + lines.push('') + for (const type of domain.types) { + lines.push(emitType(type, resolve)) + } + } + + const commands = domain.commands ?? [] + if (commands.length > 0) { + lines.push('// ══ Commands ══') + lines.push('') + for (const cmd of commands) { + const pascal = toPascalCase(cmd.name) + + if (cmd.parameters && cmd.parameters.length > 0) { + lines.push(emitInterface(`${pascal}Params`, cmd.parameters, resolve)) + } + + if (cmd.returns && cmd.returns.length > 0) { + lines.push(emitInterface(`${pascal}Result`, cmd.returns, resolve)) + } + } + } + + const events = domain.events ?? [] + if (events.length > 0) { + lines.push('// ══ Events ══') + lines.push('') + for (const event of events) { + if (event.parameters && event.parameters.length > 0) { + const pascal = toPascalCase(event.name) + lines.push(emitInterface(`${pascal}Event`, event.parameters, resolve)) + } + } + } + + return lines.join('\n') +} diff --git a/scripts/codegen/lib/naming.ts b/scripts/codegen/lib/naming.ts new file mode 100644 index 000000000..22e6160d0 --- /dev/null +++ b/scripts/codegen/lib/naming.ts @@ -0,0 +1,16 @@ +export function domainToKebab(domain: string): string { + return domain + .replace(/(?<=[a-z0-9])(?=[A-Z])/g, '-') + .replace(/(?<=[A-Z])(?=[A-Z][a-z])/g, '-') + .toLowerCase() +} + +export function toPascalCase(name: string): string { + return name.charAt(0).toUpperCase() + name.slice(1) +} + +export function resolveRef(ref: string): { domain?: string; typeName: string } { + const dot = ref.indexOf('.') + if (dot === -1) return { typeName: ref } + return { domain: ref.slice(0, dot), typeName: ref.slice(dot + 1) } +} diff --git a/scripts/codegen/lib/protocol-api-emitter.ts b/scripts/codegen/lib/protocol-api-emitter.ts new file mode 100644 index 000000000..29f1e7425 --- /dev/null +++ b/scripts/codegen/lib/protocol-api-emitter.ts @@ -0,0 +1,88 @@ +import { domainToKebab } from './naming' +import type { ProtocolDomain } from './protocol-parser' + +export function emitProtocolApiFile(domains: ProtocolDomain[]): string { + const lines: string[] = [] + + const sorted = [...domains].sort((a, b) => { + const aPath = domainToKebab(a.domain) + const bPath = domainToKebab(b.domain) + return aPath.localeCompare(bPath) + }) + + lines.push('// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ──') + lines.push('') + + for (const domain of sorted) { + const kebab = domainToKebab(domain.domain) + lines.push( + `import type { ${domain.domain}Api } from './domain-apis/${kebab}'`, + ) + } + + lines.push('') + lines.push('export interface ProtocolApi {') + + for (const domain of domains) { + lines.push(` readonly ${domain.domain}: ${domain.domain}Api`) + } + + lines.push('}') + lines.push('') + + return lines.join('\n') +} + +export function emitCreateApiFile(domains: ProtocolDomain[]): string { + const lines: string[] = [] + + lines.push('// ── AUTO-GENERATED from CDP protocol. DO NOT EDIT. ──') + lines.push('') + lines.push("import type { ProtocolApi } from './protocol-api'") + lines.push('') + lines.push('export type RawSend = (') + lines.push(' method: string,') + lines.push(' params?: Record,') + lines.push(') => Promise') + lines.push('') + lines.push('export type RawOn = (') + lines.push(' event: string,') + lines.push(' handler: (params: unknown) => void,') + lines.push(') => () => void') + lines.push('') + lines.push( + 'function createDomainProxy(domain: string, send: RawSend, on: RawOn): unknown {', + ) + lines.push(' return new Proxy(Object.create(null), {') + lines.push(' get(_, method: string) {') + lines.push(" if (method === 'on') {") + lines.push( + ' return (event: string, handler: (params: unknown) => void) =>', + ) + // biome-ignore lint/suspicious/noTemplateCurlyInString: emitting template literal source code + lines.push(' on(`${domain}.${event}`, handler)') + lines.push(' }') + lines.push(' return (params?: Record) =>') + // biome-ignore lint/suspicious/noTemplateCurlyInString: emitting template literal source code + lines.push(' send(`${domain}.${method}`, params)') + lines.push(' },') + lines.push(' })') + lines.push('}') + lines.push('') + lines.push( + 'export function createProtocolApi(send: RawSend, on: RawOn): ProtocolApi {', + ) + lines.push(' return {') + + for (const domain of domains) { + lines.push( + ` ${domain.domain}: createDomainProxy('${domain.domain}', send, on),`, + ) + } + + lines.push(' } as unknown as ProtocolApi') + lines.push('}') + lines.push('') + + return lines.join('\n') +} diff --git a/scripts/codegen/lib/protocol-parser.ts b/scripts/codegen/lib/protocol-parser.ts new file mode 100644 index 000000000..b03fb700f --- /dev/null +++ b/scripts/codegen/lib/protocol-parser.ts @@ -0,0 +1,57 @@ +export interface ProtocolProperty { + name: string + description?: string + optional?: boolean + type?: string + $ref?: string + enum?: string[] + items?: { type?: string; $ref?: string } + properties?: ProtocolProperty[] +} + +export interface ProtocolType { + id: string + description?: string + type: string + enum?: string[] + properties?: ProtocolProperty[] + items?: { type?: string; $ref?: string } +} + +export interface ProtocolCommand { + name: string + description?: string + parameters?: ProtocolProperty[] + returns?: ProtocolProperty[] +} + +export interface ProtocolEvent { + name: string + description?: string + parameters?: ProtocolProperty[] +} + +export interface ProtocolDomain { + domain: string + description?: string + dependencies?: string[] + types?: ProtocolType[] + commands?: ProtocolCommand[] + events?: ProtocolEvent[] +} + +export interface Protocol { + version: { major: string; minor: string } + domains: ProtocolDomain[] +} + +export async function parseProtocol(path: string): Promise { + const file = Bun.file(path) + const data = (await file.json()) as Protocol + + if (!data.version || !Array.isArray(data.domains)) { + throw new Error(`Invalid protocol JSON: missing version or domains`) + } + + return data +} diff --git a/scripts/codegen/lib/type-emitter.ts b/scripts/codegen/lib/type-emitter.ts new file mode 100644 index 000000000..64416220e --- /dev/null +++ b/scripts/codegen/lib/type-emitter.ts @@ -0,0 +1,126 @@ +import { resolveRef } from './naming' +import type { ProtocolProperty, ProtocolType } from './protocol-parser' + +const PRIMITIVE_MAP: Record = { + string: 'string', + integer: 'number', + number: 'number', + boolean: 'boolean', + any: 'unknown', + binary: 'string', + object: 'Record', +} + +export interface ImportRef { + domain: string + typeName: string +} + +export type RefResolver = (ref: string) => string + +export function collectImports( + items: Array<{ + $ref?: string + items?: { $ref?: string } + properties?: ProtocolProperty[] + }>, + currentDomain: string, +): ImportRef[] { + const refs: ImportRef[] = [] + + for (const item of items) { + if (item.$ref) { + const resolved = resolveRef(item.$ref) + if (resolved.domain && resolved.domain !== currentDomain) { + refs.push({ domain: resolved.domain, typeName: resolved.typeName }) + } + } + if (item.items?.$ref) { + const resolved = resolveRef(item.items.$ref) + if (resolved.domain && resolved.domain !== currentDomain) { + refs.push({ domain: resolved.domain, typeName: resolved.typeName }) + } + } + if (item.properties) { + refs.push(...collectImports(item.properties, currentDomain)) + } + } + + return refs +} + +export function resolveTypeExpression( + prop: { + type?: string + $ref?: string + enum?: string[] + items?: { type?: string; $ref?: string } + properties?: ProtocolProperty[] + }, + resolve: RefResolver, +): string { + if (prop.$ref) return resolve(prop.$ref) + + if (prop.type === 'string' && prop.enum) { + return prop.enum.map((v) => `'${v}'`).join(' | ') + } + + if (prop.type === 'array') { + if (prop.items) { + const inner = resolveTypeExpression(prop.items, resolve) + return inner.includes('|') ? `(${inner})[]` : `${inner}[]` + } + return 'unknown[]' + } + + if (prop.type === 'object' && prop.properties && prop.properties.length > 0) { + const fields = prop.properties.map((p) => { + const opt = p.optional ? '?' : '' + const ts = resolveTypeExpression(p, resolve) + return ` ${p.name}${opt}: ${ts}` + }) + return `{\n${fields.join('\n')}\n }` + } + + if (prop.type && PRIMITIVE_MAP[prop.type]) { + return PRIMITIVE_MAP[prop.type] + } + + return 'unknown' +} + +export function emitType(type: ProtocolType, resolve: RefResolver): string { + if (type.type === 'object' && type.properties && type.properties.length > 0) { + return emitInterface(type.id, type.properties, resolve) + } + + if (type.type === 'string' && type.enum) { + const members = type.enum.map((v) => ` | '${v}'`).join('\n') + return `export type ${type.id} =\n${members}\n` + } + + if (type.type === 'array' && type.items) { + const inner = resolveTypeExpression(type.items, resolve) + return `export type ${type.id} = ${inner}[]\n` + } + + const ts = PRIMITIVE_MAP[type.type] ?? 'unknown' + return `export type ${type.id} = ${ts}\n` +} + +export function emitInterface( + name: string, + properties: ProtocolProperty[], + resolve: RefResolver, +): string { + const lines: string[] = [`export interface ${name} {`] + + for (const prop of properties) { + const opt = prop.optional ? '?' : '' + const ts = resolveTypeExpression(prop, resolve) + lines.push(` ${prop.name}${opt}: ${ts}`) + } + + lines.push('}\n') + return lines.join('\n') +} diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 199f9e994..6a713cfb8 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -1,21 +1,9 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "target": "esnext", - "module": "nodenext", - "moduleResolution": "nodenext", "outDir": "./ignored", "rootDir": ".", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "noImplicitReturns": true, - "noImplicitOverride": true, - "noFallthroughCasesInSwitch": true, - "incremental": true, - "allowJs": true, - "useUnknownInCatchVariables": false + "types": ["bun"] }, "include": ["./**/*.ts", "./**/*.js"] }