diff options
Diffstat (limited to 'cli/lsp')
| -rw-r--r-- | cli/lsp/config.rs | 27 | ||||
| -rw-r--r-- | cli/lsp/language_server.rs | 2 | ||||
| -rw-r--r-- | cli/lsp/resolver.rs | 12 |
3 files changed, 16 insertions, 25 deletions
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index da5af0c2d..4f96d45a4 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -1520,25 +1520,20 @@ impl ConfigData { }) }); - let is_workspace_root = config_file + let workspace = config_file .as_ref() - .is_some_and(|c| !c.json.workspaces.is_empty()); - let workspace_members = if is_workspace_root { + .and_then(|c| c.json.workspace.as_ref().map(|w| (c, w))); + let is_workspace_root = workspace.is_some(); + let workspace_members = if let Some((config, workspace)) = workspace { Arc::new( - config_file - .as_ref() - .map(|c| { - c.json - .workspaces - .iter() - .flat_map(|p| { - let dir_specifier = c.specifier.join(p).ok()?; - let dir_path = specifier_to_file_path(&dir_specifier).ok()?; - Url::from_directory_path(normalize_path(dir_path)).ok() - }) - .collect() + workspace + .iter() + .flat_map(|p| { + let dir_specifier = config.specifier.join(p).ok()?; + let dir_path = specifier_to_file_path(&dir_specifier).ok()?; + Url::from_directory_path(normalize_path(dir_path)).ok() }) - .unwrap_or_default(), + .collect(), ) } else if let Some(workspace_data) = workspace_root { workspace_data.workspace_members.clone() diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index be1b27cda..a921584c2 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -3496,7 +3496,7 @@ impl Inner { self.initial_cwd.clone(), config_data.and_then(|d| d.config_file.as_deref().cloned()), config_data.and_then(|d| d.lockfile.clone()), - config_data.and_then(|d| d.package_json.as_deref().cloned()), + config_data.and_then(|d| d.package_json.clone()), config_data .and_then(|d| d.npmrc.clone()) .unwrap_or_else(create_default_npmrc), diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs index c4c66f114..45d44032f 100644 --- a/cli/lsp/resolver.rs +++ b/cli/lsp/resolver.rs @@ -48,7 +48,6 @@ use std::collections::BTreeMap; use std::collections::BTreeSet; use std::collections::HashMap; use std::collections::HashSet; -use std::rc::Rc; use std::sync::Arc; use super::cache::LspCache; @@ -359,15 +358,12 @@ impl LspResolver { pub fn get_closest_package_json( &self, referrer: &ModuleSpecifier, - ) -> Result<Option<Rc<PackageJson>>, AnyError> { + ) -> Result<Option<Arc<PackageJson>>, AnyError> { let resolver = self.get_scope_resolver(Some(referrer)); let Some(node_resolver) = resolver.node_resolver.as_ref() else { return Ok(None); }; - node_resolver.get_closest_package_json( - referrer, - &mut deno_runtime::deno_node::AllowAllNodePermissions, - ) + node_resolver.get_closest_package_json(referrer) } pub fn resolve_redirects( @@ -462,7 +458,7 @@ async fn create_npm_resolver( config_data .and_then(|d| d.package_json.as_ref()) .map(|package_json| { - package_json::get_local_package_json_version_reqs(package_json) + package_json.resolve_local_package_json_version_reqs() }), )), npmrc: config_data @@ -506,7 +502,7 @@ fn create_graph_resolver( config_data .and_then(|d| d.package_json.as_ref()) .map(|package_json| { - package_json::get_local_package_json_version_reqs(package_json) + package_json.resolve_local_package_json_version_reqs() }), )), maybe_jsx_import_source_config: config_file |
