Skip to content

AzzoDude/js-protocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

js-protocol

Crates.io Documentation License: MIT

A high-performance, fully type-safe Rust representation of the Chrome DevTools JavaScript Protocol (js_protocol), automatically generated from the official protocol definitions.

🚀 Key Features

  • Automated Type Generation: Derived from official V8/Chrome protocol definitions.
  • Intelligent Integer Mapping:
    • i32: Used for coordinates, offsets, and line/column numbers.
    • u64: Used for identifiers, counts, sizes, and ordinals.
    • i64: Default for general integer values.
  • Recursive Type Safety: Handles recursive structures via Box<T> indirection.
  • Optimized Serialization:
    • Uses serde with camelCase renaming to match the protocol exactly.
    • Optional fields are omitted from JSON if None to reduce network overhead.
  • Full Documentation: Protocol descriptions included as Rustdoc comments.

📦 Installation

Add this to your Cargo.toml:

[dependencies]
js-protocol = { version = "0.1.1", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

🛠 Usage Example

use js_protocol::runtime::{EvaluateParams, RemoteObject};

fn main() {
    // Example: Constructing a 'Runtime.evaluate' request
    let params = EvaluateParams {
        expression: "console.log('Hello from Rust!')".to_string(),
        ..Default::default()
    };

    println!("Serialized request: {:?}", serde_json::to_string(&params));
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors