browser-commander 0.14.0

Universal browser automation library that supports multiple browser engines with a unified API
Documentation
// @generated by scripts/generate-puppeteer-bindings.mjs from
// rust/protocol/puppeteer/api.json. Do not edit by hand.

#![allow(clippy::all, missing_docs, unused_imports, non_snake_case)]

use serde_json::Value;

use super::*;
use crate::puppeteer::bridge::{binary, remote_type, BridgeError, JsFunction, Remote};

remote_type!(
    /// Puppeteer's `Connection` (puppeteer-core 25.10.0), a remote object
    /// served by `browser-commander serve --stdio`.
    ///
    /// Extends [`EventEmitter`]; the inherited methods are repeated here.
    Connection
);

impl Connection {
    /// `EventEmitter.on`
    ///
    /// ```text
    /// on<Key extends keyof EventsWithWildcard<Events>>(type: Key, handler: Handler<EventsWithWildcard<Events>[Key]>): this
    /// ```
    pub async fn on(&self, type_: Value, handler: impl Into<JsFunction>) -> Result<Connection, BridgeError> {
        self.remote.call("on", vec![Some(type_), Some(handler.into().to_wire())]).await
    }

    /// `EventEmitter.off`
    ///
    /// ```text
    /// off<Key extends keyof EventsWithWildcard<Events>>(type: Key, handler?: Handler<EventsWithWildcard<Events>[Key]>): this
    /// ```
    pub async fn off(&self, type_: Value, handler: Option<JsFunction>) -> Result<Connection, BridgeError> {
        self.remote.call("off", vec![Some(type_), handler.map(|x| x.to_wire())]).await
    }

    /// `EventEmitter.emit`
    ///
    /// ```text
    /// emit<Key extends keyof EventsWithWildcard<Events>>(type: Key, event: EventsWithWildcard<Events>[Key]): boolean
    /// ```
    pub async fn emit(&self, type_: Value, event: Value) -> Result<bool, BridgeError> {
        self.remote.call("emit", vec![Some(type_), Some(event)]).await
    }

    /// `EventEmitter.once`
    ///
    /// ```text
    /// once<Key extends keyof EventsWithWildcard<Events>>(type: Key, handler: Handler<EventsWithWildcard<Events>[Key]>): this
    /// ```
    pub async fn once(&self, type_: Value, handler: impl Into<JsFunction>) -> Result<Connection, BridgeError> {
        self.remote.call("once", vec![Some(type_), Some(handler.into().to_wire())]).await
    }

    /// `EventEmitter.listenerCount`
    ///
    /// ```text
    /// listenerCount(type: keyof EventsWithWildcard<Events>): number
    /// ```
    pub async fn listener_count(&self, type_: Value) -> Result<f64, BridgeError> {
        self.remote.call("listenerCount", vec![Some(type_)]).await
    }

    /// `EventEmitter.removeAllListeners`
    ///
    /// ```text
    /// removeAllListeners(type?: keyof EventsWithWildcard<Events>): this
    /// ```
    pub async fn remove_all_listeners(&self, type_: Option<Value>) -> Result<Connection, BridgeError> {
        self.remote.call("removeAllListeners", vec![type_]).await
    }

    /// `Connection.timeout`
    ///
    /// ```text
    /// get timeout(): number
    /// ```
    pub async fn timeout(&self) -> Result<f64, BridgeError> {
        self.remote.get("timeout").await
    }

    /// `Connection.session`
    ///
    /// ```text
    /// session(sessionId: string): CDPSession | null
    /// ```
    pub async fn session(&self, session_id: &str) -> Result<Option<CDPSession>, BridgeError> {
        self.remote.call("session", vec![Some(Value::from(session_id))]).await
    }

    /// `Connection.url`
    ///
    /// ```text
    /// url(): string
    /// ```
    pub async fn url(&self) -> Result<String, BridgeError> {
        self.remote.call("url", vec![]).await
    }

    /// `Connection.send`
    ///
    /// ```text
    /// send<T extends keyof ProtocolMapping.Commands>(method: T, params?: ProtocolMapping.Commands[T]['paramsType'][0], options?: CommandOptions): Promise<ProtocolMapping.Commands[T]['returnType']>
    /// ```
    pub async fn send(&self, method: Value, params: Option<Value>, options: Option<Value>) -> Result<Value, BridgeError> {
        self.remote.call("send", vec![Some(method), params, options]).await
    }

    /// `Connection.dispose`
    ///
    /// ```text
    /// dispose(): void
    /// ```
    pub async fn dispose(&self) -> Result<(), BridgeError> {
        self.remote.call("dispose", vec![]).await
    }

    /// `Connection.createSession`
    ///
    /// ```text
    /// createSession(targetInfo: Protocol.Target.TargetInfo): Promise<CDPSession>
    /// ```
    pub async fn create_session(&self, target_info: Value) -> Result<CDPSession, BridgeError> {
        self.remote.call("createSession", vec![Some(target_info)]).await
    }
}