summaryrefslogtreecommitdiff
path: root/cli/tools/repl
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-11-05 23:58:59 +0100
committerGitHub <noreply@github.com>2023-11-05 22:58:59 +0000
commitfdb4953ea460d5c09ac73f3f37dd570d44893155 (patch)
tree72c0e9dd7dc7b2677eea474d7e443e8a66ba0cc7 /cli/tools/repl
parent68a964346d1b4f0509d244c7b13e54146817238f (diff)
refactor: unify CDP types in a single module (#21094)
This commit moves all Chrome Devtools Protocol messages to `cli/cdp.rs` and refactors all places using these types to pull them from a common place. No functional changes.
Diffstat (limited to 'cli/tools/repl')
-rw-r--r--cli/tools/repl/cdp.rs426
-rw-r--r--cli/tools/repl/editor.rs2
-rw-r--r--cli/tools/repl/mod.rs1
-rw-r--r--cli/tools/repl/session.rs3
4 files changed, 2 insertions, 430 deletions
diff --git a/cli/tools/repl/cdp.rs b/cli/tools/repl/cdp.rs
deleted file mode 100644
index f90a1875e..000000000
--- a/cli/tools/repl/cdp.rs
+++ /dev/null
@@ -1,426 +0,0 @@
-// Copyright 2018-2023 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-314143738
-fn 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>>,
-}
-
-/// <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;
diff --git a/cli/tools/repl/editor.rs b/cli/tools/repl/editor.rs
index 52fad4759..0bf2da7c8 100644
--- a/cli/tools/repl/editor.rs
+++ b/cli/tools/repl/editor.rs
@@ -1,5 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+use crate::cdp;
use crate::colors;
use deno_ast::swc::parser::error::SyntaxError;
use deno_ast::swc::parser::token::BinOpToken;
@@ -37,7 +38,6 @@ use std::sync::atomic::AtomicBool;
use std::sync::atomic::Ordering::Relaxed;
use std::sync::Arc;
-use super::cdp;
use super::channel::RustylineSyncMessageSender;
use super::session::REPL_INTERNALS_NAME;
diff --git a/cli/tools/repl/mod.rs b/cli/tools/repl/mod.rs
index c25dc00c6..3700911d6 100644
--- a/cli/tools/repl/mod.rs
+++ b/cli/tools/repl/mod.rs
@@ -14,7 +14,6 @@ use deno_runtime::permissions::PermissionsContainer;
use rustyline::error::ReadlineError;
use tokio::sync::mpsc::unbounded_channel;
-pub(crate) mod cdp;
mod channel;
mod editor;
mod session;
diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs
index df9a63772..b46f73d5a 100644
--- a/cli/tools/repl/session.rs
+++ b/cli/tools/repl/session.rs
@@ -5,6 +5,7 @@ use std::rc::Rc;
use std::sync::Arc;
use crate::args::CliOptions;
+use crate::cdp;
use crate::colors;
use crate::lsp::ReplLanguageServer;
use crate::npm::CliNpmResolver;
@@ -48,8 +49,6 @@ use once_cell::sync::Lazy;
use regex::Match;
use regex::Regex;
-use super::cdp;
-
fn comment_source_to_position_range(
comment_start: SourcePos,
m: &Match,