diff options
Diffstat (limited to 'cli/tools/repl/editor.rs')
-rw-r--r-- | cli/tools/repl/editor.rs | 81 |
1 files changed, 37 insertions, 44 deletions
diff --git a/cli/tools/repl/editor.rs b/cli/tools/repl/editor.rs index 8a327f624..30b9fba87 100644 --- a/cli/tools/repl/editor.rs +++ b/cli/tools/repl/editor.rs @@ -1,13 +1,13 @@ // Copyright 2018-2022 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::Token; use deno_ast::swc::parser::token::Word; use deno_core::error::AnyError; use deno_core::parking_lot::Mutex; -use deno_core::serde_json; +use deno_core::serde_json::json; +use deno_core::serde_json::Value; use rustyline::completion::Completer; use rustyline::error::ReadlineError; use rustyline::highlight::Highlighter; @@ -39,14 +39,20 @@ impl EditorHelper { .sync_sender .post_message( "Runtime.globalLexicalScopeNames", - Some(cdp::GlobalLexicalScopeNamesArgs { - execution_context_id: Some(self.context_id), - }), + Some(json!({ + "executionContextId": self.context_id, + })), ) .unwrap(); - let evaluate_response: cdp::GlobalLexicalScopeNamesResponse = - serde_json::from_value(evaluate_response).unwrap(); - evaluate_response.names + + evaluate_response + .get("names") + .unwrap() + .as_array() + .unwrap() + .iter() + .map(|n| n.as_str().unwrap().to_string()) + .collect() } pub fn get_expression_property_names(&self, expr: &str) -> Vec<String> { @@ -75,8 +81,11 @@ impl EditorHelper { fn get_expression_type(&self, expr: &str) -> Option<String> { self - .evaluate_expression(expr) - .map(|res| res.result.kind.to_string()) + .evaluate_expression(expr)? + .get("result")? + .get("type")? + .as_str() + .map(|s| s.to_string()) } fn get_object_expr_properties( @@ -84,60 +93,44 @@ impl EditorHelper { object_expr: &str, ) -> Option<Vec<String>> { let evaluate_result = self.evaluate_expression(object_expr)?; - let object_id = evaluate_result.result.object_id?; + let object_id = evaluate_result.get("result")?.get("objectId")?; let get_properties_response = self .sync_sender .post_message( "Runtime.getProperties", - Some(cdp::GetPropertiesArgs { - object_id, - own_properties: None, - accessor_properties_only: None, - generate_preview: None, - non_indexed_properties_only: None, - }), + Some(json!({ + "objectId": object_id, + })), ) .ok()?; - let get_properties_response: cdp::GetPropertiesResponse = - serde_json::from_value(get_properties_response).ok()?; + Some( get_properties_response - .result - .into_iter() - .map(|prop| prop.name) + .get("result")? + .as_array() + .unwrap() + .iter() + .map(|r| r.get("name").unwrap().as_str().unwrap().to_string()) .collect(), ) } - fn evaluate_expression(&self, expr: &str) -> Option<cdp::EvaluateResponse> { + fn evaluate_expression(&self, expr: &str) -> Option<Value> { let evaluate_response = self .sync_sender .post_message( "Runtime.evaluate", - Some(cdp::EvaluateArgs { - expression: expr.to_string(), - object_group: None, - include_command_line_api: None, - silent: None, - context_id: Some(self.context_id), - return_by_value: None, - generate_preview: None, - user_gesture: None, - await_promise: None, - throw_on_side_effect: Some(true), - timeout: Some(200), - disable_breaks: None, - repl_mode: None, - allow_unsafe_eval_blocked_by_csp: None, - unique_context_id: None, - }), + Some(json!({ + "contextId": self.context_id, + "expression": expr, + "throwOnSideEffect": true, + "timeout": 200, + })), ) .ok()?; - let evaluate_response: cdp::EvaluateResponse = - serde_json::from_value(evaluate_response).ok()?; - if evaluate_response.exception_details.is_some() { + if evaluate_response.get("exceptionDetails").is_some() { None } else { Some(evaluate_response) |