diff options
Diffstat (limited to 'cli/lsp/documents.rs')
-rw-r--r-- | cli/lsp/documents.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs index 81f978be1..dc5b0f004 100644 --- a/cli/lsp/documents.rs +++ b/cli/lsp/documents.rs @@ -263,6 +263,13 @@ impl Document { self.maybe_lsp_version.is_some() } + fn maybe_types_dependency(&self) -> deno_graph::Resolved { + let module_result = self.maybe_module.as_ref()?; + let module = module_result.as_ref().ok()?; + let (_, maybe_dep) = module.maybe_types_dependency.as_ref()?; + maybe_dep.clone() + } + fn media_type(&self) -> MediaType { if let Some(Ok(module)) = &self.maybe_module { module.media_type @@ -597,6 +604,16 @@ impl Inner { }) } + fn get_maybe_types_for_dependency( + &mut self, + dependency: &deno_graph::Dependency, + ) -> deno_graph::Resolved { + let code_dep = dependency.maybe_code.as_ref()?; + let (specifier, _) = code_dep.as_ref().ok()?; + let doc = self.get(specifier)?; + doc.maybe_types_dependency() + } + fn get_navigation_tree( &mut self, specifier: &ModuleSpecifier, @@ -952,6 +969,16 @@ impl Documents { self.0.lock().get_maybe_dependency(specifier, position) } + /// For a given dependency, try to resolve the maybe_types_dependency for the + /// dependency. This covers modules that assert their own types, like via the + /// triple-slash reference, or the `X-TypeScript-Types` header. + pub fn get_maybe_types_for_dependency( + &self, + dependency: &deno_graph::Dependency, + ) -> deno_graph::Resolved { + self.0.lock().get_maybe_types_for_dependency(dependency) + } + /// Get a reference to the navigation tree stored for a given specifier, if /// any. pub fn get_navigation_tree( |