summaryrefslogtreecommitdiff
path: root/cli/npm/resolution.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-07-01 21:07:57 -0400
committerGitHub <noreply@github.com>2023-07-02 01:07:57 +0000
commitcfbc9b471f9ae0a00639b69623068021a6cfcbbd (patch)
tree6609ee07363f0e5b415b9a12706dd72fa93d41c7 /cli/npm/resolution.rs
parente746b6d80654ba4e4e26370fe6e4f784ce841d92 (diff)
feat(lsp): basic support of auto-imports for npm specifiers (#19675)
Closes #19625 Closes https://github.com/denoland/vscode_deno/issues/857
Diffstat (limited to 'cli/npm/resolution.rs')
-rw-r--r--cli/npm/resolution.rs29
1 files changed, 28 insertions, 1 deletions
diff --git a/cli/npm/resolution.rs b/cli/npm/resolution.rs
index 37c8aa08c..95d9fd4c9 100644
--- a/cli/npm/resolution.rs
+++ b/cli/npm/resolution.rs
@@ -16,6 +16,7 @@ use deno_npm::resolution::NpmResolutionError;
use deno_npm::resolution::NpmResolutionSnapshot;
use deno_npm::resolution::NpmResolutionSnapshotPendingResolver;
use deno_npm::resolution::NpmResolutionSnapshotPendingResolverOptions;
+use deno_npm::resolution::PackageCacheFolderIdNotFoundError;
use deno_npm::resolution::PackageNotFoundFromReferrerError;
use deno_npm::resolution::PackageNvNotFoundError;
use deno_npm::resolution::PackageReqNotFoundError;
@@ -145,7 +146,7 @@ impl NpmResolution {
Ok(())
}
- pub fn resolve_package_cache_folder_id_from_id(
+ pub fn resolve_pkg_cache_folder_id_from_pkg_id(
&self,
id: &NpmPackageId,
) -> Option<NpmPackageCacheFolderId> {
@@ -156,6 +157,17 @@ impl NpmResolution {
.map(|p| p.get_package_cache_folder_id())
}
+ pub fn resolve_pkg_id_from_pkg_cache_folder_id(
+ &self,
+ id: &NpmPackageCacheFolderId,
+ ) -> Result<NpmPackageId, PackageCacheFolderIdNotFoundError> {
+ self
+ .snapshot
+ .read()
+ .resolve_pkg_from_pkg_cache_folder_id(id)
+ .map(|pkg| pkg.id.clone())
+ }
+
pub fn resolve_package_from_package(
&self,
name: &str,
@@ -180,6 +192,21 @@ impl NpmResolution {
.map(|pkg| pkg.id.clone())
}
+ pub fn resolve_pkg_reqs_from_pkg_id(
+ &self,
+ id: &NpmPackageId,
+ ) -> Vec<NpmPackageReq> {
+ let snapshot = self.snapshot.read();
+ let mut pkg_reqs = snapshot
+ .package_reqs()
+ .iter()
+ .filter(|(_, nv)| *nv == &id.nv)
+ .map(|(req, _)| req.clone())
+ .collect::<Vec<_>>();
+ pkg_reqs.sort(); // be deterministic
+ pkg_reqs
+ }
+
pub fn resolve_pkg_id_from_deno_module(
&self,
id: &NpmPackageNv,