cdp-toolkit 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,782 @@
1
+ /**
2
+ * WebDriver BiDi wire protocol types, for the Firefox backend.
3
+ *
4
+ * Derived directly from the spec's own CDDL (w3c/webdriver-bidi@6a2835c,
5
+ * index.bs). Pure types file: no runtime code, zero imports.
6
+ *
7
+ * Scope: session (5 commands), browsingContext (15 commands, 14 events),
8
+ * script (6 commands, 3 events), input (3 commands, 1 event), network
9
+ * (13 commands, 5 events), log (1 event), storage (3 commands), emulation
10
+ * (13 commands). browser and webExtension modules are out of scope, except
11
+ * for two leaf types (BrowserUserContext, BrowserClientWindow) that in-scope
12
+ * modules reference by value.
13
+ *
14
+ * Naming: CDDL `module.Name` becomes `ModuleName` (PascalCase, no dot), this
15
+ * file's flat-export house style rather than TS namespaces.
16
+ *
17
+ * Nine commands are not implemented by Firefox 153. They are still typed in
18
+ * full (these types describe the spec, not one browser); each carries a
19
+ * one-line "Firefox 153: not implemented" comment.
20
+ */
21
+
22
+ // --- Envelope (spec: "Definition", "Commands", "Events") -------------------
23
+
24
+ /** CDDL: js-uint = 0..9007199254740991 */
25
+ export type BidiJsUint = number;
26
+ /** CDDL: js-int = -9007199254740991..9007199254740991 */
27
+ export type BidiJsInt = number;
28
+
29
+ /** CDDL: Extensible = (*text => any). Additional impl-defined properties, typed unknown (not any). */
30
+ export interface BidiExtensible {
31
+ [key: string]: unknown;
32
+ }
33
+
34
+ export interface BidiCommandMessage<M extends BidiMethod = BidiMethod> {
35
+ id: BidiJsUint;
36
+ method: M;
37
+ params: BidiCommands[M]["params"];
38
+ }
39
+ /** CommandResponse = { type: "success", id, result: ResultData, Extensible } */
40
+ export interface BidiSuccessResponse<M extends BidiMethod = BidiMethod> extends BidiExtensible {
41
+ type: "success";
42
+ id: BidiJsUint;
43
+ result: BidiCommands[M]["result"];
44
+ }
45
+ /** ErrorResponse = { type: "error", id: js-uint / null, error, message, ?stacktrace, Extensible } */
46
+ export interface BidiErrorResponse extends BidiExtensible {
47
+ type: "error";
48
+ id: BidiJsUint | null;
49
+ error: BidiErrorCode;
50
+ message: string;
51
+ stacktrace?: string;
52
+ }
53
+ /** Event = { type: "event", EventData, Extensible } */
54
+ export interface BidiEvent<E extends BidiEventName = BidiEventName> extends BidiExtensible {
55
+ type: "event";
56
+ method: E;
57
+ params: BidiEvents[E];
58
+ }
59
+ /** Message = CommandResponse / ErrorResponse / Event. Discriminate on `type`. */
60
+ export type BidiMessage = BidiSuccessResponse | BidiErrorResponse | BidiEvent;
61
+
62
+ /** CDDL: ErrorCode enumeration (spec section "Errors"). */
63
+ export type BidiErrorCode =
64
+ | "invalid argument" | "invalid selector" | "invalid session id" | "invalid web extension"
65
+ | "move target out of bounds" | "no such alert" | "no such network collector" | "no such element"
66
+ | "no such frame" | "no such handle" | "no such history entry" | "no such intercept"
67
+ | "no such network data" | "no such node" | "no such request" | "no such screencast"
68
+ | "no such script" | "no such storage partition" | "no such user context" | "no such web extension"
69
+ | "session not created" | "unable to capture screen" | "unable to close browser" | "unable to set cookie"
70
+ | "unable to set file input" | "unavailable network data" | "underspecified storage partition"
71
+ | "unknown command" | "unknown error" | "unsupported operation";
72
+
73
+ /** CDDL: EmptyParams = { Extensible } */
74
+ export type BidiEmptyParams = BidiExtensible;
75
+ /** CDDL: EmptyResult = { Extensible } */
76
+ export type BidiEmptyResult = BidiExtensible;
77
+
78
+ // --- browser module leaf types (module out of scope; values referenced) ----
79
+
80
+ /** CDDL: browser.UserContext = text */
81
+ export type BrowserUserContext = string;
82
+ /** CDDL: browser.ClientWindow = text */
83
+ export type BrowserClientWindow = string;
84
+
85
+ // --- session module ----------------------------------------------------
86
+
87
+ export interface SessionCapabilitiesRequest { alwaysMatch?: SessionCapabilityRequest; firstMatch?: SessionCapabilityRequest[] }
88
+ export interface SessionCapabilityRequest extends BidiExtensible {
89
+ acceptInsecureCerts?: boolean; browserName?: string; browserVersion?: string; platformName?: string;
90
+ proxy?: SessionProxyConfiguration; unhandledPromptBehavior?: SessionUserPromptHandler;
91
+ }
92
+ export type SessionProxyConfiguration =
93
+ | SessionAutodetectProxyConfiguration | SessionDirectProxyConfiguration
94
+ | SessionManualProxyConfiguration | SessionPacProxyConfiguration | SessionSystemProxyConfiguration;
95
+ export interface SessionAutodetectProxyConfiguration extends BidiExtensible { proxyType: "autodetect" }
96
+ export interface SessionDirectProxyConfiguration extends BidiExtensible { proxyType: "direct" }
97
+ export interface SessionManualProxyConfiguration extends BidiExtensible {
98
+ proxyType: "manual"; httpProxy?: string; sslProxy?: string; socksProxy?: string; socksVersion?: number; noProxy?: string[];
99
+ }
100
+ export interface SessionPacProxyConfiguration extends BidiExtensible { proxyType: "pac"; proxyAutoconfigUrl: string }
101
+ export interface SessionSystemProxyConfiguration extends BidiExtensible { proxyType: "system" }
102
+
103
+ export interface SessionUserPromptHandler {
104
+ alert?: SessionUserPromptHandlerType; beforeUnload?: SessionUserPromptHandlerType; confirm?: SessionUserPromptHandlerType;
105
+ default?: SessionUserPromptHandlerType; file?: SessionUserPromptHandlerType; prompt?: SessionUserPromptHandlerType;
106
+ }
107
+ export type SessionUserPromptHandlerType = "accept" | "dismiss" | "ignore";
108
+
109
+ /** CDDL: session.Subscription = text (a subscription id) */
110
+ export type SessionSubscription = string;
111
+ export interface SessionSubscribeParameters { events: string[]; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
112
+ export interface SessionUnsubscribeByIDRequest { subscriptions: SessionSubscription[] }
113
+ export interface SessionUnsubscribeByAttributesRequest { events: string[] }
114
+ export type SessionUnsubscribeParameters = SessionUnsubscribeByAttributesRequest | SessionUnsubscribeByIDRequest;
115
+
116
+ export interface SessionStatusResult { ready: boolean; message: string }
117
+ export interface SessionNewParameters { capabilities: SessionCapabilitiesRequest }
118
+ export interface SessionNewResult {
119
+ sessionId: string;
120
+ capabilities: {
121
+ acceptInsecureCerts: boolean; browserName: string; browserVersion: string; platformName: string;
122
+ setWindowRect: boolean; userAgent: string; proxy?: SessionProxyConfiguration;
123
+ unhandledPromptBehavior?: SessionUserPromptHandler; webSocketUrl?: string;
124
+ } & BidiExtensible;
125
+ }
126
+ export interface SessionSubscribeResult { subscription: SessionSubscription }
127
+
128
+ // --- browsingContext module ---------------------------------------------
129
+
130
+ /** CDDL: browsingContext.BrowsingContext = text */
131
+ export type BrowsingContextId = string;
132
+ /** CDDL: browsingContext.Navigation = text */
133
+ export type BrowsingContextNavigation = string;
134
+ /** CDDL: browsingContext.Download = text */
135
+ export type BrowsingContextDownload = string;
136
+ /** CDDL: browsingContext.Screencast = text */
137
+ export type BrowsingContextScreencast = string;
138
+ export type BrowsingContextReadinessState = "none" | "interactive" | "complete";
139
+ export type BrowsingContextUserPromptType = "alert" | "beforeunload" | "confirm" | "prompt";
140
+
141
+ export interface BrowsingContextInfo {
142
+ children: BrowsingContextInfo[] | null; clientWindow: BrowserClientWindow; context: BrowsingContextId;
143
+ originalOpener: BrowsingContextId | null; url: string; userContext: BrowserUserContext; parent?: BrowsingContextId | null;
144
+ }
145
+ export type BrowsingContextInfoList = BrowsingContextInfo[];
146
+
147
+ export type BrowsingContextLocator =
148
+ | BrowsingContextAccessibilityLocator | BrowsingContextCssLocator | BrowsingContextContextLocator
149
+ | BrowsingContextInnerTextLocator | BrowsingContextXPathLocator;
150
+ export interface BrowsingContextAccessibilityLocator { type: "accessibility"; value: { name?: string; role?: string } }
151
+ export interface BrowsingContextCssLocator { type: "css"; value: string }
152
+ export interface BrowsingContextContextLocator { type: "context"; value: { context: BrowsingContextId } }
153
+ export interface BrowsingContextInnerTextLocator {
154
+ type: "innerText"; value: string; ignoreCase?: boolean; matchType?: "full" | "partial"; maxDepth?: BidiJsUint;
155
+ }
156
+ export interface BrowsingContextXPathLocator { type: "xpath"; value: string }
157
+
158
+ export interface BrowsingContextBaseNavigationInfo {
159
+ context: BrowsingContextId; navigation: BrowsingContextNavigation | null; timestamp: BidiJsUint;
160
+ url: string; userContext?: BrowserUserContext;
161
+ }
162
+ export type BrowsingContextNavigationInfo = BrowsingContextBaseNavigationInfo;
163
+
164
+ export interface BrowsingContextActivateParameters { context: BrowsingContextId }
165
+ export type BrowsingContextActivateResult = BidiEmptyResult;
166
+
167
+ export interface BrowsingContextCaptureScreenshotParameters {
168
+ context: BrowsingContextId; origin?: "viewport" | "document" /* default "viewport" */;
169
+ format?: BrowsingContextImageFormat; clip?: BrowsingContextClipRectangle;
170
+ }
171
+ /** Spec types `type` as bare `text` (e.g. "image/png"), not an enumerated literal. */
172
+ export interface BrowsingContextImageFormat { type: string; quality?: number }
173
+ export type BrowsingContextClipRectangle = BrowsingContextBoxClipRectangle | BrowsingContextElementClipRectangle;
174
+ export interface BrowsingContextElementClipRectangle { type: "element"; element: ScriptSharedReference }
175
+ export interface BrowsingContextBoxClipRectangle { type: "box"; x: number; y: number; width: number; height: number }
176
+ export interface BrowsingContextCaptureScreenshotResult { data: string }
177
+
178
+ export interface BrowsingContextCloseParameters { context: BrowsingContextId; promptUnload?: boolean /* default false */ }
179
+ export type BrowsingContextCloseResult = BidiEmptyResult;
180
+
181
+ export type BrowsingContextCreateType = "tab" | "window";
182
+ export interface BrowsingContextCreateParameters {
183
+ type: BrowsingContextCreateType; referenceContext?: BrowsingContextId; background?: boolean; userContext?: BrowserUserContext;
184
+ }
185
+ export interface BrowsingContextCreateResult { context: BrowsingContextId; userContext?: BrowserUserContext }
186
+
187
+ export interface BrowsingContextGetTreeParameters { maxDepth?: BidiJsUint; root?: BrowsingContextId }
188
+ export interface BrowsingContextGetTreeResult { contexts: BrowsingContextInfoList }
189
+
190
+ export interface BrowsingContextHandleUserPromptParameters { context: BrowsingContextId; accept?: boolean; userText?: string }
191
+ export type BrowsingContextHandleUserPromptResult = BidiEmptyResult;
192
+
193
+ export interface BrowsingContextLocateNodesParameters {
194
+ context: BrowsingContextId; locator: BrowsingContextLocator; maxNodeCount?: BidiJsUint /* .ge 1 */;
195
+ serializationOptions?: ScriptSerializationOptions; startNodes?: [ScriptSharedReference, ...ScriptSharedReference[]];
196
+ }
197
+ export interface BrowsingContextLocateNodesResult { nodes: ScriptNodeRemoteValue[] }
198
+
199
+ export interface BrowsingContextNavigateParameters { context: BrowsingContextId; url: string; wait?: BrowsingContextReadinessState }
200
+ export interface BrowsingContextNavigateResult { navigation: BrowsingContextNavigation | null; url: string }
201
+
202
+ export interface BrowsingContextPrintParameters {
203
+ context: BrowsingContextId; background?: boolean; margin?: BrowsingContextPrintMarginParameters;
204
+ orientation?: "portrait" | "landscape"; page?: BrowsingContextPrintPageParameters;
205
+ pageRanges?: Array<BidiJsUint | string>; scale?: number /* 0.1..2.0 default 1.0 */; shrinkToFit?: boolean;
206
+ }
207
+ export interface BrowsingContextPrintMarginParameters { bottom?: number; left?: number; right?: number; top?: number }
208
+ export interface BrowsingContextPrintPageParameters { height?: number; width?: number }
209
+ export interface BrowsingContextPrintResult { data: string }
210
+
211
+ export interface BrowsingContextReloadParameters { context: BrowsingContextId; ignoreCache?: boolean; wait?: BrowsingContextReadinessState }
212
+ export type BrowsingContextReloadResult = BrowsingContextNavigateResult;
213
+
214
+ /** Firefox 153: not implemented. */
215
+ export interface BrowsingContextSetBypassCSPParameters { bypass: true | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
216
+ export type BrowsingContextSetBypassCSPResult = BidiEmptyResult;
217
+
218
+ export interface BrowsingContextViewport { width: BidiJsUint; height: BidiJsUint }
219
+ export interface BrowsingContextSetViewportParameters {
220
+ context?: BrowsingContextId; viewport?: BrowsingContextViewport | null;
221
+ devicePixelRatio?: number | null /* .gt 0.0 */; userContexts?: BrowserUserContext[];
222
+ }
223
+ export type BrowsingContextSetViewportResult = BidiEmptyResult;
224
+
225
+ /** Firefox 153: not implemented. */
226
+ export interface BrowsingContextStartScreencastParameters {
227
+ context: BrowsingContextId; mimeType?: string; video?: BrowsingContextMediaTrackConstraints; audio?: boolean /* default false */;
228
+ }
229
+ export interface BrowsingContextMediaTrackConstraints { width?: BidiJsUint; height?: BidiJsUint; frameRate?: BidiJsUint }
230
+ export interface BrowsingContextStartScreencastResult { screencast: BrowsingContextScreencast; path: string }
231
+
232
+ /** Firefox 153: not implemented. */
233
+ export interface BrowsingContextStopScreencastParameters { screencast: BrowsingContextScreencast }
234
+ export interface BrowsingContextStopScreencastResult { path: string; error?: string }
235
+
236
+ export interface BrowsingContextTraverseHistoryParameters { context: BrowsingContextId; delta: BidiJsInt }
237
+ export type BrowsingContextTraverseHistoryResult = BidiEmptyResult;
238
+
239
+ export interface BrowsingContextHistoryUpdatedParameters {
240
+ context: BrowsingContextId; timestamp: BidiJsUint; url: string; userContext?: BrowserUserContext;
241
+ }
242
+ export interface BrowsingContextDownloadWillBeginParams extends BrowsingContextBaseNavigationInfo {
243
+ download: BrowsingContextDownload; suggestedFilename: string;
244
+ }
245
+ /** Discriminated on `status`; each variant also carries BrowsingContextBaseNavigationInfo fields. */
246
+ export type BrowsingContextDownloadEndParams = BrowsingContextDownloadCanceledParams | BrowsingContextDownloadCompleteParams;
247
+ export interface BrowsingContextDownloadCanceledParams extends BrowsingContextBaseNavigationInfo { status: "canceled"; download: BrowsingContextDownload }
248
+ export interface BrowsingContextDownloadCompleteParams extends BrowsingContextBaseNavigationInfo {
249
+ status: "complete"; download: BrowsingContextDownload; filepath: string | null;
250
+ }
251
+ export interface BrowsingContextUserPromptClosedParameters {
252
+ context: BrowsingContextId; accepted: boolean; type: BrowsingContextUserPromptType; userContext?: BrowserUserContext; userText?: string;
253
+ }
254
+ export interface BrowsingContextUserPromptOpenedParameters {
255
+ context: BrowsingContextId; handler: SessionUserPromptHandlerType; message: string; type: BrowsingContextUserPromptType;
256
+ userContext?: BrowserUserContext; defaultValue?: string;
257
+ }
258
+
259
+ // --- script module -------------------------------------------------------
260
+
261
+ /** CDDL: script.Channel = text */
262
+ export type ScriptChannel = string;
263
+ /** CDDL: script.Handle = text */
264
+ export type ScriptHandle = string;
265
+ /** CDDL: script.InternalId = text */
266
+ export type ScriptInternalId = string;
267
+ /** CDDL: script.PreloadScript = text */
268
+ export type ScriptPreloadScript = string;
269
+ /** CDDL: script.Realm = text */
270
+ export type ScriptRealm = string;
271
+ /** CDDL: script.SharedId = text */
272
+ export type ScriptSharedId = string;
273
+ export type ScriptResultOwnership = "root" | "none";
274
+
275
+ export interface ScriptSerializationOptions {
276
+ maxDomDepth?: BidiJsUint | null; maxObjectDepth?: BidiJsUint | null; includeShadowTree?: "none" | "open" | "all";
277
+ }
278
+ export interface ScriptChannelProperties { channel: ScriptChannel; serializationOptions?: ScriptSerializationOptions; ownership?: ScriptResultOwnership }
279
+ export interface ScriptChannelValue { type: "channel"; value: ScriptChannelProperties }
280
+
281
+ /** script.Target: a realm, or a context (optionally scoped to a preload-script sandbox). */
282
+ export type ScriptTarget = ScriptContextTarget | ScriptRealmTarget;
283
+ export interface ScriptContextTarget { context: BrowsingContextId; sandbox?: string }
284
+ export interface ScriptRealmTarget { realm: ScriptRealm }
285
+
286
+ /**
287
+ * script.RemoteReference: a SharedReference (DOM node, by sharedId) or a
288
+ * RemoteObjectReference (any JS object, by handle). Spec notes CDDL match
289
+ * order matters here because the shapes overlap; SharedReference tried first.
290
+ */
291
+ export type ScriptRemoteReference = ScriptSharedReference | ScriptRemoteObjectReference;
292
+ export interface ScriptSharedReference extends BidiExtensible { sharedId: ScriptSharedId; handle?: ScriptHandle }
293
+ export interface ScriptRemoteObjectReference extends BidiExtensible { handle: ScriptHandle; sharedId?: ScriptSharedId }
294
+
295
+ export type ScriptSpecialNumber = "NaN" | "-0" | "Infinity" | "-Infinity";
296
+ export type ScriptPrimitiveProtocolValue =
297
+ | { type: "undefined" } | { type: "null" } | { type: "string"; value: string }
298
+ | { type: "number"; value: number | ScriptSpecialNumber } | { type: "boolean"; value: boolean } | { type: "bigint"; value: string };
299
+
300
+ export interface ScriptRegExpValue { pattern: string; flags?: string }
301
+ export type ScriptRegExpLocalValue = { type: "regexp"; value: ScriptRegExpValue };
302
+ export type ScriptDateLocalValue = { type: "date"; value: string };
303
+ export type ScriptMappingLocalValue = Array<[ScriptLocalValue | string, ScriptLocalValue]>;
304
+ export type ScriptListLocalValue = ScriptLocalValue[];
305
+ export interface ScriptArrayLocalValue { type: "array"; value: ScriptListLocalValue }
306
+ export interface ScriptMapLocalValue { type: "map"; value: ScriptMappingLocalValue }
307
+ export interface ScriptObjectLocalValue { type: "object"; value: ScriptMappingLocalValue }
308
+ export interface ScriptSetLocalValue { type: "set"; value: ScriptListLocalValue }
309
+ export type ScriptLocalValue =
310
+ | ScriptRemoteReference | ScriptPrimitiveProtocolValue | ScriptChannelValue | ScriptArrayLocalValue
311
+ | ScriptDateLocalValue | ScriptMapLocalValue | ScriptObjectLocalValue | ScriptRegExpLocalValue | ScriptSetLocalValue;
312
+
313
+ export type ScriptListRemoteValue = ScriptRemoteValue[];
314
+ export type ScriptMappingRemoteValue = Array<[ScriptRemoteValue | string, ScriptRemoteValue]>;
315
+ interface ScriptRemoteValueBase { handle?: ScriptHandle; internalId?: ScriptInternalId }
316
+ export interface ScriptSymbolRemoteValue extends ScriptRemoteValueBase { type: "symbol" }
317
+ export interface ScriptArrayRemoteValue extends ScriptRemoteValueBase { type: "array"; value?: ScriptListRemoteValue }
318
+ export interface ScriptObjectRemoteValue extends ScriptRemoteValueBase { type: "object"; value?: ScriptMappingRemoteValue }
319
+ export interface ScriptFunctionRemoteValue extends ScriptRemoteValueBase { type: "function" }
320
+ export interface ScriptRegExpRemoteValue extends ScriptRemoteValueBase { type: "regexp"; value: ScriptRegExpValue }
321
+ export interface ScriptDateRemoteValue extends ScriptRemoteValueBase { type: "date"; value: string }
322
+ export interface ScriptMapRemoteValue extends ScriptRemoteValueBase { type: "map"; value?: ScriptMappingRemoteValue }
323
+ export interface ScriptSetRemoteValue extends ScriptRemoteValueBase { type: "set"; value?: ScriptListRemoteValue }
324
+ export interface ScriptWeakMapRemoteValue extends ScriptRemoteValueBase { type: "weakmap" }
325
+ export interface ScriptWeakSetRemoteValue extends ScriptRemoteValueBase { type: "weakset" }
326
+ export interface ScriptGeneratorRemoteValue extends ScriptRemoteValueBase { type: "generator" }
327
+ export interface ScriptErrorRemoteValue extends ScriptRemoteValueBase { type: "error" }
328
+ export interface ScriptProxyRemoteValue extends ScriptRemoteValueBase { type: "proxy" }
329
+ export interface ScriptPromiseRemoteValue extends ScriptRemoteValueBase { type: "promise" }
330
+ export interface ScriptTypedArrayRemoteValue extends ScriptRemoteValueBase { type: "typedarray" }
331
+ export interface ScriptArrayBufferRemoteValue extends ScriptRemoteValueBase { type: "arraybuffer" }
332
+ export interface ScriptNodeListRemoteValue extends ScriptRemoteValueBase { type: "nodelist"; value?: ScriptListRemoteValue }
333
+ export interface ScriptHTMLCollectionRemoteValue extends ScriptRemoteValueBase { type: "htmlcollection"; value?: ScriptListRemoteValue }
334
+ export interface ScriptNodeProperties {
335
+ nodeType: BidiJsUint; childNodeCount: BidiJsUint; attributes?: Record<string, string>; children?: ScriptNodeRemoteValue[];
336
+ localName?: string; mode?: "open" | "closed"; namespaceURI?: string; nodeValue?: string; shadowRoot?: ScriptNodeRemoteValue | null;
337
+ }
338
+ /** The variant carrying `sharedId`, so a DOM node result can be resolved back into a SharedReference. */
339
+ export interface ScriptNodeRemoteValue extends ScriptRemoteValueBase { type: "node"; sharedId?: ScriptSharedId; value?: ScriptNodeProperties }
340
+ export interface ScriptWindowProxyRemoteValue extends ScriptRemoteValueBase { type: "window"; value: { context: BrowsingContextId } }
341
+ export type ScriptRemoteValue =
342
+ | ScriptPrimitiveProtocolValue | ScriptSymbolRemoteValue | ScriptArrayRemoteValue | ScriptObjectRemoteValue
343
+ | ScriptFunctionRemoteValue | ScriptRegExpRemoteValue | ScriptDateRemoteValue | ScriptMapRemoteValue
344
+ | ScriptSetRemoteValue | ScriptWeakMapRemoteValue | ScriptWeakSetRemoteValue | ScriptGeneratorRemoteValue
345
+ | ScriptErrorRemoteValue | ScriptProxyRemoteValue | ScriptPromiseRemoteValue | ScriptTypedArrayRemoteValue
346
+ | ScriptArrayBufferRemoteValue | ScriptNodeListRemoteValue | ScriptHTMLCollectionRemoteValue
347
+ | ScriptNodeRemoteValue | ScriptWindowProxyRemoteValue;
348
+
349
+ export interface ScriptStackFrame { columnNumber: BidiJsUint; functionName: string; lineNumber: BidiJsUint; url: string }
350
+ export interface ScriptStackTrace { callFrames: ScriptStackFrame[] }
351
+ export interface ScriptExceptionDetails {
352
+ columnNumber: BidiJsUint; exception: ScriptRemoteValue; lineNumber: BidiJsUint; stackTrace: ScriptStackTrace; text: string;
353
+ }
354
+ export type ScriptEvaluateResult = ScriptEvaluateResultSuccess | ScriptEvaluateResultException;
355
+ export interface ScriptEvaluateResultSuccess { type: "success"; result: ScriptRemoteValue; realm: ScriptRealm }
356
+ export interface ScriptEvaluateResultException { type: "exception"; exceptionDetails: ScriptExceptionDetails; realm: ScriptRealm }
357
+
358
+ export type ScriptRealmType =
359
+ | "window" | "dedicated-worker" | "shared-worker" | "service-worker" | "worker" | "paint-worklet" | "audio-worklet" | "worklet";
360
+ interface ScriptBaseRealmInfo { realm: ScriptRealm; origin: string }
361
+ export interface ScriptWindowRealmInfo extends ScriptBaseRealmInfo {
362
+ type: "window"; context: BrowsingContextId; userContext?: BrowserUserContext; sandbox?: string;
363
+ }
364
+ export interface ScriptDedicatedWorkerRealmInfo extends ScriptBaseRealmInfo { type: "dedicated-worker"; owners: ScriptRealm[] }
365
+ export interface ScriptSharedWorkerRealmInfo extends ScriptBaseRealmInfo { type: "shared-worker" }
366
+ export interface ScriptServiceWorkerRealmInfo extends ScriptBaseRealmInfo { type: "service-worker" }
367
+ export interface ScriptWorkerRealmInfo extends ScriptBaseRealmInfo { type: "worker" }
368
+ export interface ScriptPaintWorkletRealmInfo extends ScriptBaseRealmInfo { type: "paint-worklet" }
369
+ export interface ScriptAudioWorkletRealmInfo extends ScriptBaseRealmInfo { type: "audio-worklet" }
370
+ export interface ScriptWorkletRealmInfo extends ScriptBaseRealmInfo { type: "worklet" }
371
+ export type ScriptRealmInfo =
372
+ | ScriptWindowRealmInfo | ScriptDedicatedWorkerRealmInfo | ScriptSharedWorkerRealmInfo | ScriptServiceWorkerRealmInfo
373
+ | ScriptWorkerRealmInfo | ScriptPaintWorkletRealmInfo | ScriptAudioWorkletRealmInfo | ScriptWorkletRealmInfo;
374
+
375
+ export interface ScriptSource { realm: ScriptRealm; context?: BrowsingContextId; userContext?: BrowserUserContext }
376
+
377
+ export interface ScriptAddPreloadScriptParameters {
378
+ functionDeclaration: string; arguments?: ScriptChannelValue[]; contexts?: BrowsingContextId[];
379
+ userContexts?: BrowserUserContext[]; sandbox?: string;
380
+ }
381
+ export interface ScriptAddPreloadScriptResult { script: ScriptPreloadScript }
382
+ export interface ScriptDisownParameters { handles: ScriptHandle[]; target: ScriptTarget }
383
+ export type ScriptDisownResult = BidiEmptyResult;
384
+ export interface ScriptCallFunctionParameters {
385
+ functionDeclaration: string; awaitPromise: boolean; target: ScriptTarget; arguments?: ScriptLocalValue[];
386
+ resultOwnership?: ScriptResultOwnership; serializationOptions?: ScriptSerializationOptions;
387
+ this?: ScriptLocalValue; userActivation?: boolean /* default false */;
388
+ }
389
+ export type ScriptCallFunctionResult = ScriptEvaluateResult;
390
+ export interface ScriptEvaluateParameters {
391
+ expression: string; target: ScriptTarget; awaitPromise: boolean; resultOwnership?: ScriptResultOwnership;
392
+ serializationOptions?: ScriptSerializationOptions; userActivation?: boolean;
393
+ }
394
+ export interface ScriptGetRealmsParameters { context?: BrowsingContextId; type?: ScriptRealmType }
395
+ export interface ScriptGetRealmsResult { realms: ScriptRealmInfo[] }
396
+ export interface ScriptRemovePreloadScriptParameters { script: ScriptPreloadScript }
397
+ export type ScriptRemovePreloadScriptResult = BidiEmptyResult;
398
+ export interface ScriptMessageParameters { channel: ScriptChannel; data: ScriptRemoteValue; source: ScriptSource }
399
+ export interface ScriptRealmDestroyedParameters { realm: ScriptRealm }
400
+
401
+ // --- input module ----------------------------------------------------------
402
+
403
+ export interface InputElementOrigin { type: "element"; element: ScriptSharedReference }
404
+ export type InputOrigin = "viewport" | "pointer" | InputElementOrigin;
405
+ export type InputPointerType = "mouse" | "pen" | "touch";
406
+
407
+ export interface InputPauseAction { type: "pause"; duration?: BidiJsUint }
408
+ export interface InputKeyDownAction { type: "keyDown"; value: string }
409
+ export interface InputKeyUpAction { type: "keyUp"; value: string }
410
+ export interface InputPointerCommonProperties {
411
+ width?: BidiJsUint; height?: BidiJsUint; pressure?: number /* 0.0..1.0 */; tangentialPressure?: number /* -1.0..1.0 */;
412
+ twist?: number /* 0..359 */; altitudeAngle?: number /* 0..Math.PI/2 */; azimuthAngle?: number /* 0..2*Math.PI */;
413
+ }
414
+ export interface InputPointerUpAction { type: "pointerUp"; button: BidiJsUint }
415
+ export interface InputPointerDownAction extends InputPointerCommonProperties { type: "pointerDown"; button: BidiJsUint }
416
+ export interface InputPointerMoveAction extends InputPointerCommonProperties {
417
+ type: "pointerMove"; x: number; y: number; duration?: BidiJsUint; origin?: InputOrigin;
418
+ }
419
+ export interface InputWheelScrollAction {
420
+ type: "scroll"; x: BidiJsInt; y: BidiJsInt; deltaX: BidiJsInt; deltaY: BidiJsInt;
421
+ duration?: BidiJsUint; origin?: InputOrigin /* default "viewport" */;
422
+ }
423
+ export type InputNoneSourceAction = InputPauseAction;
424
+ export type InputKeySourceAction = InputPauseAction | InputKeyDownAction | InputKeyUpAction;
425
+ export type InputPointerSourceAction = InputPauseAction | InputPointerDownAction | InputPointerUpAction | InputPointerMoveAction;
426
+ export type InputWheelSourceAction = InputPauseAction | InputWheelScrollAction;
427
+
428
+ export interface InputNoneSourceActions { type: "none"; id: string; actions: InputNoneSourceAction[] }
429
+ export interface InputPointerParameters { pointerType?: InputPointerType /* default "mouse" */ }
430
+ export interface InputKeySourceActions { type: "key"; id: string; actions: InputKeySourceAction[] }
431
+ export interface InputPointerSourceActions { type: "pointer"; id: string; parameters?: InputPointerParameters; actions: InputPointerSourceAction[] }
432
+ export interface InputWheelSourceActions { type: "wheel"; id: string; actions: InputWheelSourceAction[] }
433
+ export type InputSourceActions = InputNoneSourceActions | InputKeySourceActions | InputPointerSourceActions | InputWheelSourceActions;
434
+
435
+ export interface InputPerformActionsParameters { context: BrowsingContextId; actions: InputSourceActions[] }
436
+ export type InputPerformActionsResult = BidiEmptyResult;
437
+ export interface InputReleaseActionsParameters { context: BrowsingContextId }
438
+ export type InputReleaseActionsResult = BidiEmptyResult;
439
+ export interface InputSetFilesParameters { context: BrowsingContextId; element: ScriptSharedReference; files: string[] }
440
+ export type InputSetFilesResult = BidiEmptyResult;
441
+ export interface InputFileDialogInfo {
442
+ context: BrowsingContextId; userContext?: BrowserUserContext; element?: ScriptSharedReference; multiple: boolean;
443
+ }
444
+
445
+ // --- network module ----------------------------------------------------
446
+
447
+ /** CDDL: network.Request = text (a request id) */
448
+ export type NetworkRequest = string;
449
+ /** CDDL: network.Intercept = text */
450
+ export type NetworkIntercept = string;
451
+ /** CDDL: network.Collector = text */
452
+ export type NetworkCollector = string;
453
+ export type NetworkCollectorType = "blob";
454
+ export type NetworkDataType = "request" | "response";
455
+ export type NetworkSameSite = "strict" | "lax" | "none" | "default";
456
+
457
+ export type NetworkBytesValue = NetworkStringValue | NetworkBase64Value;
458
+ export interface NetworkStringValue { type: "string"; value: string }
459
+ export interface NetworkBase64Value { type: "base64"; value: string }
460
+ export interface NetworkHeader { name: string; value: NetworkBytesValue }
461
+ export interface NetworkCookieHeader { name: string; value: NetworkBytesValue }
462
+ export interface NetworkAuthChallenge { scheme: string; realm: string }
463
+ export interface NetworkAuthCredentials { type: "password"; username: string; password: string }
464
+
465
+ export interface NetworkCookie extends BidiExtensible {
466
+ name: string; value: NetworkBytesValue; domain: string; path: string; size: BidiJsUint;
467
+ httpOnly: boolean; secure: boolean; sameSite: NetworkSameSite; expiry?: BidiJsUint;
468
+ }
469
+ export interface NetworkSetCookieHeader {
470
+ name: string; value: NetworkBytesValue; domain?: string; httpOnly?: boolean;
471
+ /** Spec types this as `text`, not js-uint: an HTTP-date string, not a timestamp. */
472
+ expiry?: string; maxAge?: BidiJsInt; path?: string; sameSite?: NetworkSameSite; secure?: boolean;
473
+ }
474
+ export interface NetworkFetchTimingInfo {
475
+ timeOrigin: number; requestTime: number; redirectStart: number; redirectEnd: number; fetchStart: number;
476
+ dnsStart: number; dnsEnd: number; connectStart: number; connectEnd: number; tlsStart: number;
477
+ requestStart: number; responseStart: number; responseEnd: number;
478
+ }
479
+ export interface NetworkInitiator {
480
+ columnNumber?: BidiJsUint; lineNumber?: BidiJsUint; request?: NetworkRequest; stackTrace?: ScriptStackTrace;
481
+ type?: "parser" | "script" | "preflight" | "other";
482
+ }
483
+ export interface NetworkRequestData {
484
+ request: NetworkRequest; url: string; method: string; headers: NetworkHeader[]; cookies: NetworkCookie[];
485
+ headersSize: BidiJsUint; bodySize: BidiJsUint | null; destination: string; initiatorType: string | null;
486
+ timings: NetworkFetchTimingInfo;
487
+ }
488
+ export interface NetworkResponseContent { size: BidiJsUint }
489
+ export interface NetworkResponseData {
490
+ url: string; protocol: string; status: BidiJsUint; statusText: string; fromCache: boolean; headers: NetworkHeader[];
491
+ mimeType: string; bytesReceived: BidiJsUint; headersSize: BidiJsUint | null; bodySize: BidiJsUint | null;
492
+ content: NetworkResponseContent; authChallenges?: NetworkAuthChallenge[];
493
+ }
494
+ export type NetworkUrlPattern = NetworkUrlPatternPattern | NetworkUrlPatternString;
495
+ export interface NetworkUrlPatternPattern { type: "pattern"; protocol?: string; hostname?: string; port?: string; pathname?: string; search?: string }
496
+ export interface NetworkUrlPatternString { type: "string"; pattern: string }
497
+
498
+ /** Spread into every network event's params (network.BaseParameters is a CDDL group, not a standalone map). */
499
+ export interface NetworkBaseParameters {
500
+ context: BrowsingContextId | null; isBlocked: boolean; navigation: BrowsingContextNavigation | null;
501
+ redirectCount: BidiJsUint; request: NetworkRequestData; timestamp: BidiJsUint;
502
+ userContext?: BrowserUserContext | null; intercepts?: NetworkIntercept[];
503
+ }
504
+ export type NetworkInterceptPhase = "beforeRequestSent" | "responseStarted" | "authRequired";
505
+
506
+ export interface NetworkAddDataCollectorParameters {
507
+ dataTypes: NetworkDataType[]; maxEncodedDataSize: BidiJsUint; collectorType?: NetworkCollectorType /* default "blob" */;
508
+ contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
509
+ }
510
+ export interface NetworkAddDataCollectorResult { collector: NetworkCollector }
511
+ export interface NetworkAddInterceptParameters { phases: NetworkInterceptPhase[]; contexts?: BrowsingContextId[]; urlPatterns?: NetworkUrlPattern[] }
512
+ export interface NetworkAddInterceptResult { intercept: NetworkIntercept }
513
+ export interface NetworkContinueRequestParameters {
514
+ request: NetworkRequest; body?: NetworkBytesValue; cookies?: NetworkCookieHeader[]; headers?: NetworkHeader[]; method?: string; url?: string;
515
+ }
516
+ export type NetworkContinueRequestResult = BidiEmptyResult;
517
+ export interface NetworkContinueResponseParameters {
518
+ request: NetworkRequest; cookies?: NetworkSetCookieHeader[]; credentials?: NetworkAuthCredentials;
519
+ headers?: NetworkHeader[]; reasonPhrase?: string; statusCode?: BidiJsUint;
520
+ }
521
+ export type NetworkContinueResponseResult = BidiEmptyResult;
522
+ /**
523
+ * Spec comment flags the "provideCredentials" action literal as unsettled
524
+ * ("or 'provide credentials' or 'providecredentials' or something else").
525
+ * Typed to the primary spelling used in the CDDL production itself.
526
+ */
527
+ export type NetworkContinueWithAuthParameters = { request: NetworkRequest } & (
528
+ | { action: "provideCredentials"; credentials: NetworkAuthCredentials } | { action: "default" | "cancel" }
529
+ );
530
+ export type NetworkContinueWithAuthResult = BidiEmptyResult;
531
+ export interface NetworkDisownDataParameters { dataType: NetworkDataType; collector: NetworkCollector; request: NetworkRequest }
532
+ export type NetworkDisownDataResult = BidiEmptyResult;
533
+ export interface NetworkFailRequestParameters { request: NetworkRequest }
534
+ export type NetworkFailRequestResult = BidiEmptyResult;
535
+ export interface NetworkGetDataParameters {
536
+ dataType: NetworkDataType; collector?: NetworkCollector; disown?: boolean /* default false */; request: NetworkRequest;
537
+ }
538
+ export interface NetworkGetDataResult { bytes: NetworkBytesValue }
539
+ export interface NetworkProvideResponseParameters {
540
+ request: NetworkRequest; body?: NetworkBytesValue; cookies?: NetworkSetCookieHeader[];
541
+ headers?: NetworkHeader[]; reasonPhrase?: string; statusCode?: BidiJsUint;
542
+ }
543
+ export type NetworkProvideResponseResult = BidiEmptyResult;
544
+ export interface NetworkRemoveDataCollectorParameters { collector: NetworkCollector }
545
+ export type NetworkRemoveDataCollectorResult = BidiEmptyResult;
546
+ export interface NetworkRemoveInterceptParameters { intercept: NetworkIntercept }
547
+ export type NetworkRemoveInterceptResult = BidiEmptyResult;
548
+ export interface NetworkSetCacheBehaviorParameters { cacheBehavior: "default" | "bypass"; contexts?: BrowsingContextId[] }
549
+ export type NetworkSetCacheBehaviorResult = BidiEmptyResult;
550
+ export interface NetworkSetExtraHeadersParameters { headers: NetworkHeader[]; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
551
+ export type NetworkSetExtraHeadersResult = BidiEmptyResult;
552
+
553
+ export interface NetworkAuthRequiredParameters extends NetworkBaseParameters { response: NetworkResponseData }
554
+ export interface NetworkBeforeRequestSentParameters extends NetworkBaseParameters { initiator?: NetworkInitiator }
555
+ export interface NetworkFetchErrorParameters extends NetworkBaseParameters { errorText: string }
556
+ export interface NetworkResponseCompletedParameters extends NetworkBaseParameters { response: NetworkResponseData }
557
+ export interface NetworkResponseStartedParameters extends NetworkBaseParameters { response: NetworkResponseData }
558
+
559
+ // --- storage module ------------------------------------------------------
560
+
561
+ export interface StoragePartitionKey extends BidiExtensible { userContext?: string; sourceOrigin?: string }
562
+ export interface StorageCookieFilter extends BidiExtensible {
563
+ name?: string; value?: NetworkBytesValue; domain?: string; path?: string; size?: BidiJsUint;
564
+ httpOnly?: boolean; secure?: boolean; sameSite?: NetworkSameSite; expiry?: BidiJsUint;
565
+ }
566
+ export interface StorageBrowsingContextPartitionDescriptor { type: "context"; context: BrowsingContextId }
567
+ export interface StorageStorageKeyPartitionDescriptor extends BidiExtensible { type: "storageKey"; userContext?: string; sourceOrigin?: string }
568
+ export type StoragePartitionDescriptor = StorageBrowsingContextPartitionDescriptor | StorageStorageKeyPartitionDescriptor;
569
+
570
+ export interface StorageGetCookiesParameters { filter?: StorageCookieFilter; partition?: StoragePartitionDescriptor }
571
+ export interface StorageGetCookiesResult { cookies: NetworkCookie[]; partitionKey: StoragePartitionKey }
572
+ export interface StoragePartialCookie extends BidiExtensible {
573
+ name: string; value: NetworkBytesValue; domain: string; path?: string; httpOnly?: boolean;
574
+ secure?: boolean; sameSite?: NetworkSameSite; expiry?: BidiJsUint;
575
+ }
576
+ export interface StorageSetCookieParameters { cookie: StoragePartialCookie; partition?: StoragePartitionDescriptor }
577
+ export interface StorageSetCookieResult { partitionKey: StoragePartitionKey }
578
+ export interface StorageDeleteCookiesParameters { filter?: StorageCookieFilter; partition?: StoragePartitionDescriptor }
579
+ export interface StorageDeleteCookiesResult { partitionKey: StoragePartitionKey }
580
+
581
+ // --- log module ------------------------------------------------------------
582
+
583
+ export type LogLevel = "debug" | "info" | "warn" | "error";
584
+ interface LogBaseLogEntry { level: LogLevel; source: ScriptSource; text: string | null; timestamp: BidiJsUint; stackTrace?: ScriptStackTrace }
585
+ export interface LogGenericLogEntry extends LogBaseLogEntry { type: string }
586
+ export interface LogConsoleLogEntry extends LogBaseLogEntry { type: "console"; method: string; args: ScriptRemoteValue[] }
587
+ export interface LogJavascriptLogEntry extends LogBaseLogEntry { type: "javascript" }
588
+ export type LogEntry = LogGenericLogEntry | LogConsoleLogEntry | LogJavascriptLogEntry;
589
+
590
+ // --- emulation module ----------------------------------------------------
591
+
592
+ export type EmulationForcedColorsModeTheme = "light" | "dark";
593
+ /** Firefox 153: not implemented. */
594
+ export interface EmulationSetForcedColorsModeThemeOverrideParameters {
595
+ theme: EmulationForcedColorsModeTheme | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
596
+ }
597
+ export type EmulationSetForcedColorsModeThemeOverrideResult = BidiEmptyResult;
598
+
599
+ export interface EmulationGeolocationCoordinates {
600
+ latitude: number /* -90.0..90.0 */; longitude: number /* -180.0..180.0 */; accuracy?: number /* .ge 0.0 default 1.0 */;
601
+ altitude?: number | null; altitudeAccuracy?: number | null; heading?: number | null /* 0.0..360.0 */; speed?: number | null;
602
+ }
603
+ export interface EmulationGeolocationPositionError { type: "positionUnavailable" }
604
+ /**
605
+ * The params group is `(coordinates / error)`, an untagged either-or (no
606
+ * literal discriminant field), not a discriminated union in the usual sense.
607
+ */
608
+ export type EmulationSetGeolocationOverrideParameters = { contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] } & (
609
+ | { coordinates: EmulationGeolocationCoordinates | null } | { error: EmulationGeolocationPositionError }
610
+ );
611
+ export type EmulationSetGeolocationOverrideResult = BidiEmptyResult;
612
+
613
+ export interface EmulationSetLocaleOverrideParameters { locale: string | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
614
+ export type EmulationSetLocaleOverrideResult = BidiEmptyResult;
615
+
616
+ export interface EmulationMediaFeature { name: string; value: string }
617
+ /** Firefox 153: not implemented. */
618
+ export interface EmulationSetMediaFeaturesOverrideParameters {
619
+ features: EmulationMediaFeature[] | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
620
+ }
621
+ export type EmulationSetMediaFeaturesOverrideResult = BidiEmptyResult;
622
+
623
+ /** Spec currently defines only the "offline" variant; kept as its own tagged shape for future growth. */
624
+ export interface EmulationNetworkConditionsOffline { type: "offline" }
625
+ export type EmulationNetworkConditions = EmulationNetworkConditionsOffline;
626
+ export interface EmulationSetNetworkConditionsParameters {
627
+ networkConditions: EmulationNetworkConditions | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
628
+ }
629
+ export type EmulationSetNetworkConditionsResult = BidiEmptyResult;
630
+
631
+ export interface EmulationScreenArea { width: BidiJsUint; height: BidiJsUint }
632
+ export interface EmulationSetScreenSettingsOverrideParameters {
633
+ screenArea: EmulationScreenArea | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
634
+ }
635
+ export type EmulationSetScreenSettingsOverrideResult = BidiEmptyResult;
636
+
637
+ export type EmulationScreenOrientationNatural = "portrait" | "landscape";
638
+ export type EmulationScreenOrientationType = "portrait-primary" | "portrait-secondary" | "landscape-primary" | "landscape-secondary";
639
+ export interface EmulationScreenOrientation { natural: EmulationScreenOrientationNatural; type: EmulationScreenOrientationType }
640
+ export interface EmulationSetScreenOrientationOverrideParameters {
641
+ screenOrientation: EmulationScreenOrientation | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
642
+ }
643
+ export type EmulationSetScreenOrientationOverrideResult = BidiEmptyResult;
644
+
645
+ export interface EmulationSetUserAgentOverrideParameters { userAgent: string | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
646
+ export type EmulationSetUserAgentOverrideResult = BidiEmptyResult;
647
+
648
+ /** Firefox 153: not implemented. */
649
+ export interface EmulationSetViewportMetaOverrideParameters { viewportMeta: true | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
650
+ export type EmulationSetViewportMetaOverrideResult = BidiEmptyResult;
651
+
652
+ /** Firefox 153: not implemented. */
653
+ export interface EmulationSetScriptingEnabledParameters { enabled: false | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
654
+ export type EmulationSetScriptingEnabledResult = BidiEmptyResult;
655
+
656
+ /** Firefox 153: not implemented. */
657
+ export interface EmulationSetScrollbarTypeOverrideParameters {
658
+ scrollbarType: "classic" | "overlay" | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
659
+ }
660
+ export type EmulationSetScrollbarTypeOverrideResult = BidiEmptyResult;
661
+
662
+ export interface EmulationSetTimezoneOverrideParameters { timezone: string | null; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[] }
663
+ export type EmulationSetTimezoneOverrideResult = BidiEmptyResult;
664
+
665
+ /** Firefox 153: not implemented. */
666
+ export interface EmulationSetTouchOverrideParameters {
667
+ maxTouchPoints: BidiJsUint | null /* .ge 1 */; contexts?: BrowsingContextId[]; userContexts?: BrowserUserContext[];
668
+ }
669
+ export type EmulationSetTouchOverrideResult = BidiEmptyResult;
670
+
671
+ // --- BidiCommands: method name -> {params, result}. The transport's generic hook.
672
+
673
+ export interface BidiCommands {
674
+ "session.status": { params: BidiEmptyParams; result: SessionStatusResult };
675
+ "session.new": { params: SessionNewParameters; result: SessionNewResult };
676
+ "session.end": { params: BidiEmptyParams; result: BidiEmptyResult };
677
+ "session.subscribe": { params: SessionSubscribeParameters; result: SessionSubscribeResult };
678
+ "session.unsubscribe": { params: SessionUnsubscribeParameters; result: BidiEmptyResult };
679
+
680
+ "browsingContext.activate": { params: BrowsingContextActivateParameters; result: BrowsingContextActivateResult };
681
+ "browsingContext.captureScreenshot": { params: BrowsingContextCaptureScreenshotParameters; result: BrowsingContextCaptureScreenshotResult };
682
+ "browsingContext.close": { params: BrowsingContextCloseParameters; result: BrowsingContextCloseResult };
683
+ "browsingContext.create": { params: BrowsingContextCreateParameters; result: BrowsingContextCreateResult };
684
+ "browsingContext.getTree": { params: BrowsingContextGetTreeParameters; result: BrowsingContextGetTreeResult };
685
+ "browsingContext.handleUserPrompt": { params: BrowsingContextHandleUserPromptParameters; result: BrowsingContextHandleUserPromptResult };
686
+ "browsingContext.locateNodes": { params: BrowsingContextLocateNodesParameters; result: BrowsingContextLocateNodesResult };
687
+ "browsingContext.navigate": { params: BrowsingContextNavigateParameters; result: BrowsingContextNavigateResult };
688
+ "browsingContext.print": { params: BrowsingContextPrintParameters; result: BrowsingContextPrintResult };
689
+ "browsingContext.reload": { params: BrowsingContextReloadParameters; result: BrowsingContextReloadResult };
690
+ /** Firefox 153: not implemented. */
691
+ "browsingContext.setBypassCSP": { params: BrowsingContextSetBypassCSPParameters; result: BrowsingContextSetBypassCSPResult };
692
+ "browsingContext.setViewport": { params: BrowsingContextSetViewportParameters; result: BrowsingContextSetViewportResult };
693
+ /** Firefox 153: not implemented. */
694
+ "browsingContext.startScreencast": { params: BrowsingContextStartScreencastParameters; result: BrowsingContextStartScreencastResult };
695
+ /** Firefox 153: not implemented. */
696
+ "browsingContext.stopScreencast": { params: BrowsingContextStopScreencastParameters; result: BrowsingContextStopScreencastResult };
697
+ "browsingContext.traverseHistory": { params: BrowsingContextTraverseHistoryParameters; result: BrowsingContextTraverseHistoryResult };
698
+
699
+ "script.addPreloadScript": { params: ScriptAddPreloadScriptParameters; result: ScriptAddPreloadScriptResult };
700
+ "script.callFunction": { params: ScriptCallFunctionParameters; result: ScriptCallFunctionResult };
701
+ "script.disown": { params: ScriptDisownParameters; result: ScriptDisownResult };
702
+ "script.evaluate": { params: ScriptEvaluateParameters; result: ScriptEvaluateResult };
703
+ "script.getRealms": { params: ScriptGetRealmsParameters; result: ScriptGetRealmsResult };
704
+ "script.removePreloadScript": { params: ScriptRemovePreloadScriptParameters; result: ScriptRemovePreloadScriptResult };
705
+
706
+ "input.performActions": { params: InputPerformActionsParameters; result: InputPerformActionsResult };
707
+ "input.releaseActions": { params: InputReleaseActionsParameters; result: InputReleaseActionsResult };
708
+ "input.setFiles": { params: InputSetFilesParameters; result: InputSetFilesResult };
709
+
710
+ "network.addDataCollector": { params: NetworkAddDataCollectorParameters; result: NetworkAddDataCollectorResult };
711
+ "network.addIntercept": { params: NetworkAddInterceptParameters; result: NetworkAddInterceptResult };
712
+ "network.continueRequest": { params: NetworkContinueRequestParameters; result: NetworkContinueRequestResult };
713
+ "network.continueResponse": { params: NetworkContinueResponseParameters; result: NetworkContinueResponseResult };
714
+ "network.continueWithAuth": { params: NetworkContinueWithAuthParameters; result: NetworkContinueWithAuthResult };
715
+ "network.disownData": { params: NetworkDisownDataParameters; result: NetworkDisownDataResult };
716
+ "network.failRequest": { params: NetworkFailRequestParameters; result: NetworkFailRequestResult };
717
+ "network.getData": { params: NetworkGetDataParameters; result: NetworkGetDataResult };
718
+ "network.provideResponse": { params: NetworkProvideResponseParameters; result: NetworkProvideResponseResult };
719
+ "network.removeDataCollector": { params: NetworkRemoveDataCollectorParameters; result: NetworkRemoveDataCollectorResult };
720
+ "network.removeIntercept": { params: NetworkRemoveInterceptParameters; result: NetworkRemoveInterceptResult };
721
+ "network.setCacheBehavior": { params: NetworkSetCacheBehaviorParameters; result: NetworkSetCacheBehaviorResult };
722
+ "network.setExtraHeaders": { params: NetworkSetExtraHeadersParameters; result: NetworkSetExtraHeadersResult };
723
+
724
+ "storage.deleteCookies": { params: StorageDeleteCookiesParameters; result: StorageDeleteCookiesResult };
725
+ "storage.getCookies": { params: StorageGetCookiesParameters; result: StorageGetCookiesResult };
726
+ "storage.setCookie": { params: StorageSetCookieParameters; result: StorageSetCookieResult };
727
+
728
+ /** Firefox 153: not implemented. */
729
+ "emulation.setForcedColorsModeThemeOverride": { params: EmulationSetForcedColorsModeThemeOverrideParameters; result: EmulationSetForcedColorsModeThemeOverrideResult };
730
+ "emulation.setGeolocationOverride": { params: EmulationSetGeolocationOverrideParameters; result: EmulationSetGeolocationOverrideResult };
731
+ "emulation.setLocaleOverride": { params: EmulationSetLocaleOverrideParameters; result: EmulationSetLocaleOverrideResult };
732
+ /** Firefox 153: not implemented. */
733
+ "emulation.setMediaFeaturesOverride": { params: EmulationSetMediaFeaturesOverrideParameters; result: EmulationSetMediaFeaturesOverrideResult };
734
+ "emulation.setNetworkConditions": { params: EmulationSetNetworkConditionsParameters; result: EmulationSetNetworkConditionsResult };
735
+ "emulation.setScreenOrientationOverride": { params: EmulationSetScreenOrientationOverrideParameters; result: EmulationSetScreenOrientationOverrideResult };
736
+ "emulation.setScreenSettingsOverride": { params: EmulationSetScreenSettingsOverrideParameters; result: EmulationSetScreenSettingsOverrideResult };
737
+ /** Firefox 153: not implemented. */
738
+ "emulation.setScriptingEnabled": { params: EmulationSetScriptingEnabledParameters; result: EmulationSetScriptingEnabledResult };
739
+ /** Firefox 153: not implemented. */
740
+ "emulation.setScrollbarTypeOverride": { params: EmulationSetScrollbarTypeOverrideParameters; result: EmulationSetScrollbarTypeOverrideResult };
741
+ "emulation.setTimezoneOverride": { params: EmulationSetTimezoneOverrideParameters; result: EmulationSetTimezoneOverrideResult };
742
+ /** Firefox 153: not implemented. */
743
+ "emulation.setTouchOverride": { params: EmulationSetTouchOverrideParameters; result: EmulationSetTouchOverrideResult };
744
+ "emulation.setUserAgentOverride": { params: EmulationSetUserAgentOverrideParameters; result: EmulationSetUserAgentOverrideResult };
745
+ /** Firefox 153: not implemented. */
746
+ "emulation.setViewportMetaOverride": { params: EmulationSetViewportMetaOverrideParameters; result: EmulationSetViewportMetaOverrideResult };
747
+ }
748
+ export type BidiMethod = keyof BidiCommands;
749
+
750
+ // --- BidiEvents: event name -> params. The subscribe side's generic hook.
751
+
752
+ export interface BidiEvents {
753
+ "browsingContext.contextCreated": BrowsingContextInfo;
754
+ "browsingContext.contextDestroyed": BrowsingContextInfo;
755
+ "browsingContext.navigationStarted": BrowsingContextNavigationInfo;
756
+ "browsingContext.fragmentNavigated": BrowsingContextNavigationInfo;
757
+ "browsingContext.historyUpdated": BrowsingContextHistoryUpdatedParameters;
758
+ "browsingContext.domContentLoaded": BrowsingContextNavigationInfo;
759
+ "browsingContext.load": BrowsingContextNavigationInfo;
760
+ "browsingContext.downloadWillBegin": BrowsingContextDownloadWillBeginParams;
761
+ "browsingContext.downloadEnd": BrowsingContextDownloadEndParams;
762
+ "browsingContext.navigationAborted": BrowsingContextNavigationInfo;
763
+ "browsingContext.navigationCommitted": BrowsingContextNavigationInfo;
764
+ "browsingContext.navigationFailed": BrowsingContextNavigationInfo;
765
+ "browsingContext.userPromptClosed": BrowsingContextUserPromptClosedParameters;
766
+ "browsingContext.userPromptOpened": BrowsingContextUserPromptOpenedParameters;
767
+
768
+ "script.message": ScriptMessageParameters;
769
+ "script.realmCreated": ScriptRealmInfo;
770
+ "script.realmDestroyed": ScriptRealmDestroyedParameters;
771
+
772
+ "input.fileDialogOpened": InputFileDialogInfo;
773
+
774
+ "network.authRequired": NetworkAuthRequiredParameters;
775
+ "network.beforeRequestSent": NetworkBeforeRequestSentParameters;
776
+ "network.fetchError": NetworkFetchErrorParameters;
777
+ "network.responseCompleted": NetworkResponseCompletedParameters;
778
+ "network.responseStarted": NetworkResponseStartedParameters;
779
+
780
+ "log.entryAdded": LogEntry;
781
+ }
782
+ export type BidiEventName = keyof BidiEvents;