diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-09-23 14:46:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-23 18:46:50 +0000 |
commit | e1c8d2755e23182875b8fefeb558e603dd981418 (patch) | |
tree | 0202f2aeea0038f8ac3c7d48553fc6cb264b073c /cli/lsp | |
parent | 1287739ddfa659c0b2bd88930eb10e9469b59099 (diff) |
BREAKING: remove support for remote import maps in deno.json (#25836)
This is for security reasons for the time being for Deno 2. Details to
follow post Deno 2.0 release.
Remote import maps seem incredibly rare (only 2 usages on GitHub from
what I can tell), so we'll add this back with more permissions if
there's enough demand for it:
https://github.com/search?type=code&q=%2F%22importMap%22%3A+%22http%2F
In the meantime, use the `--import-map` flag and `"deno.importMap"`
config in the LSP for remote import maps.
Diffstat (limited to 'cli/lsp')
-rw-r--r-- | cli/lsp/config.rs | 71 |
1 files changed, 27 insertions, 44 deletions
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index 94fdff167..e55e7b734 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{}", |