diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-06-08 20:05:28 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-08 20:05:28 -0400 |
commit | 31154ff95899166a2535fc859c1fca2cbf19d422 (patch) | |
tree | 1497c08b1c88e271c48d19539b6d619b4db82cb9 /cli/npm/managed | |
parent | 32f5b4808ef7591401b46ea5bb3d680c18dedf20 (diff) |
fix(check): attempt to resolve types from pkg before `@types` pkg (#24152)
I've been meaning to fix this for ages, but I finally ran into it here:
https://github.com/dsherret/ts-ast-viewer/actions/runs/9432038675/job/25981325408
We need to resolve the `@types` package as a fallback instead of eagerly
resolving it.
Diffstat (limited to 'cli/npm/managed')
-rw-r--r-- | cli/npm/managed/mod.rs | 4 | ||||
-rw-r--r-- | cli/npm/managed/resolvers/common.rs | 2 | ||||
-rw-r--r-- | cli/npm/managed/resolvers/global.rs | 32 | ||||
-rw-r--r-- | cli/npm/managed/resolvers/local.rs | 12 |
4 files changed, 4 insertions, 46 deletions
diff --git a/cli/npm/managed/mod.rs b/cli/npm/managed/mod.rs index 2298ea9bd..d3045a1c9 100644 --- a/cli/npm/managed/mod.rs +++ b/cli/npm/managed/mod.rs @@ -23,7 +23,6 @@ use deno_npm::NpmResolutionPackage; use deno_npm::NpmSystemInfo; 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::package::PackageNv; use deno_semver::package::PackageReq; @@ -531,11 +530,10 @@ impl NpmResolver for ManagedCliNpmResolver { &self, name: &str, referrer: &ModuleSpecifier, - mode: NodeResolutionMode, ) -> Result<PathBuf, AnyError> { let path = self .fs_resolver - .resolve_package_folder_from_package(name, referrer, mode)?; + .resolve_package_folder_from_package(name, referrer)?; let path = canonicalize_path_maybe_not_exists_with_fs(&path, self.fs.as_ref())?; log::debug!("Resolved {} from {} to {}", name, referrer, path.display()); diff --git a/cli/npm/managed/resolvers/common.rs b/cli/npm/managed/resolvers/common.rs index 767b3f9c6..35f368cb5 100644 --- a/cli/npm/managed/resolvers/common.rs +++ b/cli/npm/managed/resolvers/common.rs @@ -19,7 +19,6 @@ use deno_npm::NpmPackageId; use deno_npm::NpmResolutionPackage; use deno_runtime::deno_fs::FileSystem; use deno_runtime::deno_node::NodePermissions; -use deno_runtime::deno_node::NodeResolutionMode; use crate::npm::managed::cache::TarballCache; @@ -41,7 +40,6 @@ pub trait NpmPackageFsResolver: Send + Sync { &self, name: &str, referrer: &ModuleSpecifier, - mode: NodeResolutionMode, ) -> Result<PathBuf, AnyError>; fn resolve_package_cache_folder_id_from_specifier( diff --git a/cli/npm/managed/resolvers/global.rs b/cli/npm/managed/resolvers/global.rs index bfd2f4de3..d10b33e7d 100644 --- a/cli/npm/managed/resolvers/global.rs +++ b/cli/npm/managed/resolvers/global.rs @@ -11,16 +11,12 @@ use deno_ast::ModuleSpecifier; use deno_core::anyhow::bail; use deno_core::error::AnyError; use deno_core::url::Url; -use deno_npm::resolution::PackageNotFoundFromReferrerError; use deno_npm::NpmPackageCacheFolderId; use deno_npm::NpmPackageId; -use deno_npm::NpmResolutionPackage; use deno_npm::NpmSystemInfo; use deno_runtime::deno_fs::FileSystem; use deno_runtime::deno_node::NodePermissions; -use deno_runtime::deno_node::NodeResolutionMode; -use super::super::super::common::types_package_name; use super::super::cache::NpmCache; use super::super::cache::TarballCache; use super::super::resolution::NpmResolution; @@ -57,17 +53,6 @@ impl GlobalNpmPackageResolver { system_info, } } - - fn resolve_types_package( - &self, - package_name: &str, - referrer_pkg_id: &NpmPackageCacheFolderId, - ) -> Result<NpmResolutionPackage, Box<PackageNotFoundFromReferrerError>> { - let types_name = types_package_name(package_name); - self - .resolution - .resolve_package_from_package(&types_name, referrer_pkg_id) - } } #[async_trait(?Send)] @@ -92,7 +77,6 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver { &self, name: &str, referrer: &ModuleSpecifier, - mode: NodeResolutionMode, ) -> Result<PathBuf, AnyError> { let Some(referrer_pkg_id) = self .cache @@ -100,19 +84,9 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver { else { bail!("could not find npm package for '{}'", referrer); }; - let pkg = if mode.is_types() && !name.starts_with("@types/") { - // attempt to resolve the types package first, then fallback to the regular package - match self.resolve_types_package(name, &referrer_pkg_id) { - Ok(pkg) => pkg, - Err(_) => self - .resolution - .resolve_package_from_package(name, &referrer_pkg_id)?, - } - } else { - self - .resolution - .resolve_package_from_package(name, &referrer_pkg_id)? - }; + let pkg = self + .resolution + .resolve_package_from_package(name, &referrer_pkg_id)?; self.package_folder(&pkg.id) } diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs index e93d400e1..d338720b6 100644 --- a/cli/npm/managed/resolvers/local.rs +++ b/cli/npm/managed/resolvers/local.rs @@ -39,14 +39,12 @@ use deno_npm::NpmResolutionPackage; use deno_npm::NpmSystemInfo; use deno_runtime::deno_fs; use deno_runtime::deno_node::NodePermissions; -use deno_runtime::deno_node::NodeResolutionMode; use deno_semver::package::PackageNv; use serde::Deserialize; use serde::Serialize; use crate::npm::cache_dir::mixed_case_package_name_encode; -use super::super::super::common::types_package_name; use super::super::cache::NpmCache; use super::super::cache::TarballCache; use super::super::resolution::NpmResolution; @@ -175,7 +173,6 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver { &self, name: &str, referrer: &ModuleSpecifier, - mode: NodeResolutionMode, ) -> Result<PathBuf, AnyError> { let Some(local_path) = self.resolve_folder_for_specifier(referrer)? else { bail!("could not find npm package for '{}'", referrer); @@ -190,15 +187,6 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver { Cow::Owned(current_folder.join("node_modules")) }; - // attempt to resolve the types package first, then fallback to the regular package - if mode.is_types() && !name.starts_with("@types/") { - let sub_dir = - join_package_name(&node_modules_folder, &types_package_name(name)); - if self.fs.is_dir_sync(&sub_dir) { - return Ok(sub_dir); - } - } - let sub_dir = join_package_name(&node_modules_folder, name); if self.fs.is_dir_sync(&sub_dir) { return Ok(sub_dir); |