webdriverbidi 0.2.2

WebDriver BiDi client implementation in Rust.
Documentation
use serde::{Deserialize, Serialize};

use crate::model::common::JsUint;
use crate::model::script::{RemoteValue, Source, StackTrace};

#[derive(Serialize, Deserialize, Debug)]
#[serde(untagged)]
pub enum LogEvent {
    EntryAdded(EntryAdded),
}

#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "lowercase")]
pub enum Level {
    Debug,
    Info,
    Warn,
    Error,
}

#[derive(Serialize, Deserialize, Debug)]
#[serde(untagged)]
pub enum Entry {
    GenericLogEntry(GenericLogEntry),
    ConsoleLogEntry(ConsoleLogEntry),
    JavascriptLogEntry(JavascriptLogEntry),
}

#[derive(Serialize, Deserialize, Debug)]
pub struct BaseLogEntry {
    pub level: Level,
    pub source: Source,
    pub text: Option<String>,
    pub timestamp: JsUint,
    #[serde(rename = "stackTrace", skip_serializing_if = "Option::is_none")]
    pub stack_trace: Option<StackTrace>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct GenericLogEntry {
    #[serde(flatten)]
    pub base: BaseLogEntry,
    #[serde(rename = "type")]
    pub log_type: String,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct ConsoleLogEntry {
    #[serde(flatten)]
    pub base: BaseLogEntry,
    #[serde(rename = "type")]
    pub log_type: String,
    pub method: String,
    pub args: Vec<RemoteValue>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct JavascriptLogEntry {
    #[serde(flatten)]
    pub base: BaseLogEntry,
    #[serde(rename = "type")]
    pub log_type: String,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct EntryAdded {
    pub method: String,
    pub params: Entry,
}