summaryrefslogtreecommitdiff
path: root/cli/lsp
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-09-23 14:46:50 -0400
committerGitHub <noreply@github.com>2024-09-23 18:46:50 +0000
commite1c8d2755e23182875b8fefeb558e603dd981418 (patch)
tree0202f2aeea0038f8ac3c7d48553fc6cb264b073c /cli/lsp
parent1287739ddfa659c0b2bd88930eb10e9469b59099 (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.rs71
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{}",