diff options
Diffstat (limited to 'cli/npm')
-rw-r--r-- | cli/npm/installer.rs | 2 | ||||
-rw-r--r-- | cli/npm/resolution.rs | 6 | ||||
-rw-r--r-- | cli/npm/resolvers/mod.rs | 53 |
3 files changed, 39 insertions, 22 deletions
diff --git a/cli/npm/installer.rs b/cli/npm/installer.rs index 9e7b413b4..8f3db0531 100644 --- a/cli/npm/installer.rs +++ b/cli/npm/installer.rs @@ -105,7 +105,7 @@ impl PackageJsonDepsInstaller { let (req, info) = result?; let result = inner .npm_resolution - .resolve_package_req_as_pending_with_info(req, &info); + .resolve_pkg_req_as_pending_with_info(req, &info); if let Err(err) = result { if inner.npm_registry_api.mark_force_reload() { log::debug!("Failed to resolve package. Retrying. Error: {err:#}"); diff --git a/cli/npm/resolution.rs b/cli/npm/resolution.rs index 5595a71ef..3e76d5e85 100644 --- a/cli/npm/resolution.rs +++ b/cli/npm/resolution.rs @@ -224,19 +224,19 @@ impl NpmResolution { /// Resolves a package requirement for deno graph. This should only be /// called by deno_graph's NpmResolver or for resolving packages in /// a package.json - pub fn resolve_package_req_as_pending( + pub fn resolve_pkg_req_as_pending( &self, pkg_req: &PackageReq, ) -> Result<PackageNv, NpmPackageVersionResolutionError> { // we should always have this because it should have been cached before here let package_info = self.api.get_cached_package_info(&pkg_req.name).unwrap(); - self.resolve_package_req_as_pending_with_info(pkg_req, &package_info) + self.resolve_pkg_req_as_pending_with_info(pkg_req, &package_info) } /// Resolves a package requirement for deno graph. This should only be /// called by deno_graph's NpmResolver or for resolving packages in /// a package.json - pub fn resolve_package_req_as_pending_with_info( + pub fn resolve_pkg_req_as_pending_with_info( &self, pkg_req: &PackageReq, package_info: &NpmPackageInfo, diff --git a/cli/npm/resolvers/mod.rs b/cli/npm/resolvers/mod.rs index 19dd726f5..efaad93ee 100644 --- a/cli/npm/resolvers/mod.rs +++ b/cli/npm/resolvers/mod.rs @@ -23,7 +23,10 @@ use deno_runtime::deno_fs::FileSystem; use deno_runtime::deno_node::NodePermissions; use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NpmResolver; +use deno_semver::npm::NpmPackageNvReference; +use deno_semver::npm::NpmPackageReqReference; use deno_semver::package::PackageNv; +use deno_semver::package::PackageNvReference; use deno_semver::package::PackageReq; use global::GlobalNpmPackageResolver; use serde::Deserialize; @@ -98,6 +101,19 @@ impl CliNpmResolver { .unwrap_or(false) } + pub fn resolve_pkg_nv_ref_from_pkg_req_ref( + &self, + req_ref: &NpmPackageReqReference, + ) -> Result<NpmPackageNvReference, PackageReqNotFoundError> { + let pkg_nv = self + .resolve_pkg_id_from_pkg_req(req_ref.req()) + .map(|id| id.nv)?; + Ok(NpmPackageNvReference::new(PackageNvReference { + nv: pkg_nv, + sub_path: req_ref.sub_path().map(|s| s.to_string()), + })) + } + pub fn resolve_pkg_id_from_pkg_req( &self, req: &PackageReq, @@ -127,7 +143,7 @@ impl CliNpmResolver { /// Resolve the root folder of the package the provided specifier is in. /// /// This will error when the provided specifier is not in an npm package. - pub fn resolve_package_folder_from_specifier( + pub fn resolve_pkg_folder_from_specifier( &self, specifier: &ModuleSpecifier, ) -> Result<Option<PathBuf>, AnyError> { @@ -145,8 +161,24 @@ impl CliNpmResolver { Ok(Some(path)) } + pub fn resolve_pkg_folder_from_deno_module_req( + &self, + req: &PackageReq, + ) -> Result<PathBuf, AnyError> { + let pkg_id = self.resolve_pkg_id_from_pkg_req(req)?; + self.resolve_pkg_folder_from_pkg_id(&pkg_id) + } + + pub fn resolve_pkg_folder_from_deno_module( + &self, + nv: &PackageNv, + ) -> Result<PathBuf, AnyError> { + let pkg_id = self.resolution.resolve_pkg_id_from_deno_module(nv)?; + self.resolve_pkg_folder_from_pkg_id(&pkg_id) + } + /// Resolves the package nv from the provided specifier. - pub fn resolve_package_id_from_specifier( + pub fn resolve_pkg_id_from_specifier( &self, specifier: &ModuleSpecifier, ) -> Result<Option<NpmPackageId>, AnyError> { @@ -266,22 +298,7 @@ impl NpmResolver for CliNpmResolver { &self, specifier: &ModuleSpecifier, ) -> Result<Option<PathBuf>, AnyError> { - self.resolve_package_folder_from_specifier(specifier) - } - - fn resolve_package_folder_from_deno_module( - &self, - pkg_nv: &PackageNv, - ) -> Result<PathBuf, AnyError> { - let pkg_id = self.resolution.resolve_pkg_id_from_deno_module(pkg_nv)?; - self.resolve_pkg_folder_from_pkg_id(&pkg_id) - } - - fn resolve_pkg_id_from_pkg_req( - &self, - req: &PackageReq, - ) -> Result<NpmPackageId, PackageReqNotFoundError> { - self.resolution.resolve_pkg_id_from_pkg_req(req) + self.resolve_pkg_folder_from_specifier(specifier) } fn in_npm_package(&self, specifier: &ModuleSpecifier) -> bool { |