Skip to main content
Module

x/deno/cli/cdp.rs

A modern runtime for JavaScript and TypeScript.
Latest
File
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
/// <https://chromedevtools.github.io/devtools-protocol/tot/>use deno_core::serde_json;use deno_core::serde_json::Value;use serde::Deserialize;use serde::Deserializer;use serde::Serialize;
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-awaitPromise>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct AwaitPromiseArgs { pub promise_object_id: RemoteObjectId, #[serde(skip_serializing_if = "Option::is_none")] pub return_by_value: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub generate_preview: Option<bool>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-awaitPromise>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct AwaitPromiseResponse { pub result: RemoteObject, pub exception_details: Option<ExceptionDetails>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-callFunctionOn>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct CallFunctionOnArgs { pub function_declaration: String, #[serde(skip_serializing_if = "Option::is_none")] pub object_id: Option<RemoteObjectId>, #[serde(skip_serializing_if = "Option::is_none")] pub arguments: Option<Vec<CallArgument>>, #[serde(skip_serializing_if = "Option::is_none")] pub silent: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub return_by_value: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub generate_preview: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub user_gesture: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub await_promise: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub execution_context_id: Option<ExecutionContextId>, #[serde(skip_serializing_if = "Option::is_none")] pub object_group: Option<String>, #[serde(skip_serializing_if = "Option::is_none")] pub throw_on_side_effect: Option<bool>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-callFunctionOn>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct CallFunctionOnResponse { pub result: RemoteObject, pub exception_details: Option<ExceptionDetails>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-compileScript>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct CompileScriptArgs { pub expression: String, #[serde(rename = "sourceURL")] pub source_url: String, #[serde(skip_serializing_if = "Option::is_none")] pub execution_context_id: Option<ExecutionContextId>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-compileScript>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct CompileScriptResponse { pub script_id: Option<ScriptId>, pub exception_details: Option<ExceptionDetails>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-evaluate>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct EvaluateArgs { pub expression: String, #[serde(skip_serializing_if = "Option::is_none")] pub object_group: Option<String>, #[serde( rename = "includeCommandLineAPI", skip_serializing_if = "Option::is_none" )] pub include_command_line_api: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub silent: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub context_id: Option<ExecutionContextId>, #[serde(skip_serializing_if = "Option::is_none")] pub return_by_value: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub generate_preview: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub user_gesture: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub await_promise: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub throw_on_side_effect: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub timeout: Option<TimeDelta>, #[serde(skip_serializing_if = "Option::is_none")] pub disable_breaks: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub repl_mode: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(rename = "allowUnsafeEvalBlockedByCSP")] pub allow_unsafe_eval_blocked_by_csp: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub unique_context_id: Option<String>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-evaluate>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct EvaluateResponse { pub result: RemoteObject, pub exception_details: Option<ExceptionDetails>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-getProperties>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct GetPropertiesArgs { pub object_id: RemoteObjectId, #[serde(skip_serializing_if = "Option::is_none")] pub own_properties: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub accessor_properties_only: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub generate_preview: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub non_indexed_properties_only: Option<bool>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-getProperties>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct GetPropertiesResponse { pub result: Vec<PropertyDescriptor>, pub internal_properties: Option<Vec<InternalPropertyDescriptor>>, pub private_properties: Option<Vec<PrivatePropertyDescriptor>>, pub exception_details: Option<ExceptionDetails>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-globalLexicalScopeNames>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct GlobalLexicalScopeNamesArgs { #[serde(skip_serializing_if = "Option::is_none")] pub execution_context_id: Option<ExecutionContextId>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-globalLexicalScopeNames>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct GlobalLexicalScopeNamesResponse { pub names: Vec<String>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-queryObjects>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct QueryObjectsArgs { pub prototype_object_id: RemoteObjectId, #[serde(skip_serializing_if = "Option::is_none")] pub object_group: Option<String>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-queryObjects>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct QueryObjectsResponse { pub objects: RemoteObject,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-releaseObject>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct ReleaseObjectArgs { pub object_id: RemoteObjectId,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-releaseObjectGroup>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct ReleaseObjectGroupArgs { pub object_group: String,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-runScript>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct RunScriptArgs { pub script_id: ScriptId, #[serde(skip_serializing_if = "Option::is_none")] pub execution_context_id: Option<ExecutionContextId>, #[serde(skip_serializing_if = "Option::is_none")] pub object_group: Option<String>, #[serde(skip_serializing_if = "Option::is_none")] pub silent: Option<bool>, #[serde( rename = "includeCommandLineAPI", skip_serializing_if = "Option::is_none" )] pub include_command_line_api: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub return_by_value: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub generate_preview: Option<bool>, #[serde(skip_serializing_if = "Option::is_none")] pub await_promise: Option<bool>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-runScript>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct RunScriptResponse { pub result: RemoteObject, pub exception_details: Option<ExceptionDetails>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#method-setAsyncCallStackDepth>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct SetAsyncCallStackDepthArgs { pub max_depth: u64,}
// types
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-RemoteObject>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct RemoteObject { #[serde(rename = "type")] pub kind: String, pub subtype: Option<String>, pub class_name: Option<String>, #[serde(default, deserialize_with = "deserialize_some")] pub value: Option<Value>, pub unserializable_value: Option<UnserializableValue>, pub description: Option<String>, pub object_id: Option<RemoteObjectId>, pub preview: Option<ObjectPreview>, pub custom_preview: Option<CustomPreview>,}
// Any value that is present is considered Some value, including null.// ref: https://github.com/serde-rs/serde/issues/984#issuecomment-314143738fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error>where T: Deserialize<'de>, D: Deserializer<'de>,{ Deserialize::deserialize(deserializer).map(Some)}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-ObjectPreview>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct ObjectPreview { #[serde(rename = "type")] pub kind: String, pub subtype: Option<String>, pub description: Option<String>, pub overflow: bool, pub properties: Vec<PropertyPreview>, pub entries: Option<Vec<EntryPreview>>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-PropertyPreview>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct PropertyPreview { pub name: String, #[serde(rename = "type")] pub kind: String, pub value: Option<String>, pub value_preview: Option<ObjectPreview>, pub subtype: Option<String>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-EntryPreview>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct EntryPreview { pub key: Option<ObjectPreview>, pub value: ObjectPreview,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-CustomPreview>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct CustomPreview { pub header: String, pub body_getter_id: RemoteObjectId,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-ExceptionDetails>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct ExceptionDetails { pub exception_id: u64, pub text: String, pub line_number: u64, pub column_number: u64, pub script_id: Option<ScriptId>, pub url: Option<String>, pub stack_trace: Option<StackTrace>, pub exception: Option<RemoteObject>, pub execution_context_id: Option<ExecutionContextId>, pub exception_meta_data: Option<serde_json::Map<String, Value>>,}
impl ExceptionDetails { pub fn get_message_and_description(&self) -> (String, String) { let description = self .exception .clone() .and_then(|ex| ex.description) .unwrap_or_else(|| "undefined".to_string()); (self.text.to_string(), description) }}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-StackTrace>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct StackTrace { pub description: Option<String>, pub call_frames: Vec<CallFrame>, pub parent: Option<Box<StackTrace>>, pub parent_id: Option<StackTraceId>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-CallFrame>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct CallFrame { pub function_name: String, pub script_id: ScriptId, pub url: String, pub line_number: u64, pub column_number: u64,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-StackTraceId>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct StackTraceId { pub id: String, pub debugger_id: Option<UniqueDebuggerId>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-CallArgument>#[derive(Debug, Clone, Serialize)]#[serde(rename_all = "camelCase")]pub struct CallArgument { #[serde(skip_serializing_if = "Option::is_none")] pub value: Option<Value>, #[serde(skip_serializing_if = "Option::is_none")] pub unserializable_value: Option<UnserializableValue>, #[serde(skip_serializing_if = "Option::is_none")] pub object_id: Option<RemoteObjectId>,}
impl From<&RemoteObject> for CallArgument { fn from(obj: &RemoteObject) -> Self { Self { value: obj.value.clone(), unserializable_value: obj.unserializable_value.clone(), object_id: obj.object_id.clone(), } }}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-InternalPropertyDescriptor>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct PropertyDescriptor { pub name: String, pub value: Option<RemoteObject>, pub writable: Option<bool>, pub get: Option<RemoteObject>, pub set: Option<RemoteObject>, pub configurable: bool, pub enumerable: bool, pub was_thrown: Option<bool>, pub is_own: Option<bool>, pub symbol: Option<RemoteObject>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-InternalPropertyDescriptor>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct InternalPropertyDescriptor { pub name: String, pub value: Option<RemoteObject>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-PrivatePropertyDescriptor>#[derive(Debug, Clone, Deserialize)]#[serde(rename_all = "camelCase")]pub struct PrivatePropertyDescriptor { pub name: String, pub value: Option<RemoteObject>, pub get: Option<RemoteObject>, pub set: Option<RemoteObject>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-RemoteObjectId>pub type RemoteObjectId = String;
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-ExecutionContextId>pub type ExecutionContextId = u64;
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-ScriptId>pub type ScriptId = String;
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-TimeDelta>pub type TimeDelta = u64;
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-UnserializableValue>pub type UnserializableValue = String;
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-UniqueDebuggerId>pub type UniqueDebuggerId = String;
/// <https://chromedevtools.github.io/devtools-protocol/tot/Debugger/#method-setScriptSource>#[derive(Debug, Deserialize)]pub struct SetScriptSourceResponse { pub status: Status,}
#[derive(Debug, Deserialize)]pub enum Status { Ok, CompileError, BlockedByActiveGenerator, BlockedByActiveFunction, BlockedByTopLevelEsModuleChange,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Debugger/#event-scriptParsed>#[derive(Debug, Deserialize)]#[serde(rename_all = "camelCase")]pub struct ScriptParsed { pub script_id: String, pub url: String,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Profiler/#type-CoverageRange>#[derive(Debug, Eq, PartialEq, Serialize, Deserialize, Clone)]#[serde(rename_all = "camelCase")]pub struct CoverageRange { /// Start character index. #[serde(rename = "startOffset")] pub start_char_offset: usize, /// End character index. #[serde(rename = "endOffset")] pub end_char_offset: usize, pub count: i64,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Profiler/#type-FunctionCoverage>#[derive(Debug, Eq, PartialEq, Serialize, Deserialize, Clone)]#[serde(rename_all = "camelCase")]pub struct FunctionCoverage { pub function_name: String, pub ranges: Vec<CoverageRange>, pub is_block_coverage: bool,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Profiler/#type-ScriptCoverage>#[derive(Debug, Eq, PartialEq, Serialize, Deserialize, Clone)]#[serde(rename_all = "camelCase")]pub struct ScriptCoverage { pub script_id: String, pub url: String, pub functions: Vec<FunctionCoverage>,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Profiler/#method-startPreciseCoverage>#[derive(Debug, Serialize, Deserialize)]#[serde(rename_all = "camelCase")]pub struct StartPreciseCoverageArgs { pub call_count: bool, pub detailed: bool, pub allow_triggered_updates: bool,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Profiler/#method-startPreciseCoverage>#[derive(Debug, Serialize, Deserialize)]#[serde(rename_all = "camelCase")]pub struct StartPreciseCoverageResponse { pub timestamp: f64,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Profiler/#method-takePreciseCoverage>#[derive(Debug, Serialize, Deserialize)]#[serde(rename_all = "camelCase")]pub struct TakePreciseCoverageResponse { pub result: Vec<ScriptCoverage>, pub timestamp: f64,}
#[derive(Debug, Deserialize)]pub struct Notification { pub method: String, pub params: Value,}/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#event-exceptionThrown>#[derive(Debug, Deserialize)]#[serde(rename_all = "camelCase")]pub struct ExceptionThrown { pub timestamp: f64, pub exception_details: ExceptionDetails,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#event-executionContextCreated>#[derive(Debug, Deserialize)]#[serde(rename_all = "camelCase")]pub struct ExecutionContextCreated { pub context: ExecutionContextDescription,}
/// <https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-ExecutionContextDescription>#[derive(Debug, Deserialize)]#[serde(rename_all = "camelCase")]pub struct ExecutionContextDescription { pub id: ExecutionContextId, pub origin: String, pub name: String, pub unique_id: String, pub aux_data: Value,}