From 3ff62ef2897243b14f99fcd7a3e25194ffc7ae24 Mon Sep 17 00:00:00 2001 From: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com> Date: Tue, 27 May 2025 14:02:16 +0300 Subject: [PATCH] debugger beta: Update Javascript's DAP to allow passing in url instead of program (#31494) Closes #31375 Release Notes: - debugger beta: Allow passing in URL instead of program for Javascript launch request --- crates/dap_adapters/src/javascript.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/crates/dap_adapters/src/javascript.rs b/crates/dap_adapters/src/javascript.rs index d921abd94801dc20b211396f56725ea8c27d27c5..086bb84b6546562a80e24592c252f97292aa26ec 100644 --- a/crates/dap_adapters/src/javascript.rs +++ b/crates/dap_adapters/src/javascript.rs @@ -113,8 +113,10 @@ impl DebugAdapter for JsDebugAdapter { ) -> Result { match config.get("request") { Some(val) if val == "launch" => { - if config.get("program").is_none() { - return Err(anyhow!("program is required")); + if config.get("program").is_none() && config.get("url").is_none() { + return Err(anyhow!( + "either program or url is required for launch request" + )); } Ok(StartDebuggingRequestArgumentsRequest::Launch) } @@ -143,7 +145,11 @@ impl DebugAdapter for JsDebugAdapter { map.insert("processId".into(), attach.process_id.into()); } DebugRequest::Launch(launch) => { - map.insert("program".into(), launch.program.clone().into()); + if launch.program.starts_with("http://") { + map.insert("url".into(), launch.program.clone().into()); + } else { + map.insert("program".into(), launch.program.clone().into()); + } if !launch.args.is_empty() { map.insert("args".into(), launch.args.clone().into()); @@ -311,7 +317,10 @@ impl DebugAdapter for JsDebugAdapter { } } }, - "required": ["program"] + "oneOf": [ + { "required": ["program"] }, + { "required": ["url"] } + ] } ] },