From 5f7a1a8d23241f5399a189c7e71a051f8e615072 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 23 Sep 2024 14:10:46 -0400 Subject: [PATCH] BREAKING: remove support for remote import maps in deno.json --- Cargo.lock | 4 +- cli/Cargo.toml | 2 +- cli/args/mod.rs | 28 ++++---------- cli/lsp/config.rs | 71 +++++++++++++--------------------- tests/integration/lsp_tests.rs | 7 ---- 5 files changed, 37 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f514abb1a688b9..d06b23bed1341a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1375,9 +1375,9 @@ dependencies = [ [[package]] name = "deno_config" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187d7dd888a49bfda396632371139e940c5cf47b15bfcaeeb2ba50f82f6940ec" +checksum = "105864a9e0a7fbc22f1106784b2d263f402f157be1c3e1a9905f53d182700c9f" dependencies = [ "anyhow", "deno_package_json", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index ad0a840fdde9b7..d1f1dc5d53be77 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -65,7 +65,7 @@ winres.workspace = true [dependencies] deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] } deno_cache_dir = { workspace = true } -deno_config = { version = "=0.34.3", features = ["workspace", "sync"] } +deno_config = { version = "=0.35.0", features = ["workspace", "sync"] } deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] } deno_doc = { version = "0.148.0", features = ["html", "syntect"] } deno_graph = { version = "=0.82.1" } diff --git a/cli/args/mod.rs b/cli/args/mod.rs index c4dda95ce4868c..19126d4af5bfcb 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1071,27 +1071,13 @@ impl CliOptions { None => None, } }; - Ok( - self - .workspace() - .create_resolver( - CreateResolverOptions { - pkg_json_dep_resolution, - specified_import_map: cli_arg_specified_import_map, - }, - |specifier| { - let specifier = specifier.clone(); - async move { - let file = file_fetcher - .fetch_bypass_permissions(&specifier) - .await? - .into_text_decoded()?; - Ok(file.source.to_string()) - } - }, - ) - .await?, - ) + Ok(self.workspace().create_resolver( + CreateResolverOptions { + pkg_json_dep_resolution, + specified_import_map: cli_arg_specified_import_map, + }, + |path| Ok(std::fs::read_to_string(path)?), + )?) } pub fn node_ipc_fd(&self) -> Option { diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index 94fdff1674fac7..e55e7b734d59fa 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -1451,9 +1451,10 @@ impl ConfigData { // Mark the import map as a watched file if let Some(import_map_specifier) = member_dir .workspace - .to_import_map_specifier() + .to_import_map_path() .ok() .flatten() + .and_then(|path| Url::from_file_path(path).ok()) { add_watched_file( import_map_specifier.clone(), @@ -1542,50 +1543,32 @@ impl ConfigData { None } }; - let resolver = deno_core::unsync::spawn({ - let workspace = member_dir.workspace.clone(); - let file_fetcher = file_fetcher.cloned(); - async move { - workspace - .create_resolver( - CreateResolverOptions { - pkg_json_dep_resolution, - specified_import_map, - }, - move |specifier| { - let specifier = specifier.clone(); - let file_fetcher = file_fetcher.clone().unwrap(); - async move { - let file = file_fetcher - .fetch_bypass_permissions(&specifier) - .await? - .into_text_decoded()?; - Ok(file.source.to_string()) - } - }, - ) - .await - .inspect_err(|err| { - lsp_warn!( - " Failed to load resolver: {}", - err // will contain the specifier - ); - }) - .ok() - } - }) - .await - .unwrap() - .unwrap_or_else(|| { - // create a dummy resolver - WorkspaceResolver::new_raw( - scope.clone(), - None, - member_dir.workspace.resolver_jsr_pkgs().collect(), - member_dir.workspace.package_jsons().cloned().collect(), - pkg_json_dep_resolution, + let resolver = member_dir + .workspace + .create_resolver( + CreateResolverOptions { + pkg_json_dep_resolution, + specified_import_map, + }, + |path| Ok(std::fs::read_to_string(path)?), ) - }); + .inspect_err(|err| { + lsp_warn!( + " Failed to load resolver: {}", + err // will contain the specifier + ); + }) + .ok() + .unwrap_or_else(|| { + // create a dummy resolver + WorkspaceResolver::new_raw( + scope.clone(), + None, + member_dir.workspace.resolver_jsr_pkgs().collect(), + member_dir.workspace.package_jsons().cloned().collect(), + pkg_json_dep_resolution, + ) + }); if !resolver.diagnostics().is_empty() { lsp_warn!( " Import map diagnostics:\n{}", diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs index f2c40f8ea680de..5ea35a0343b41c 100644 --- a/tests/integration/lsp_tests.rs +++ b/tests/integration/lsp_tests.rs @@ -363,13 +363,6 @@ fn lsp_import_map_remote() { .use_temp_cwd() .build(); let temp_dir = context.temp_dir(); - temp_dir.write( - "deno.json", - json!({ - "importMap": "http://localhost:4545/import_maps/import_map_remote.json", - }) - .to_string(), - ); temp_dir.write( "file.ts", r#"