diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-08-20 10:11:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-20 14:11:43 +0000 |
commit | f1c58ec041a05276d9f33562a5843c0bb7fb95b3 (patch) | |
tree | dc4bca4eab617e75474e19a7491ed88d5ee64fef /cli/resolver.rs | |
parent | 19bcb40059f6ba730b6d05d8edf005c6b40f6ff8 (diff) |
feat(unstable): ability to use a local copy of jsr packages (#25068)
Diffstat (limited to 'cli/resolver.rs')
-rw-r--r-- | cli/resolver.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/cli/resolver.rs b/cli/resolver.rs index b72fcd322..a62828b6e 100644 --- a/cli/resolver.rs +++ b/cli/resolver.rs @@ -5,6 +5,7 @@ use dashmap::DashMap; use dashmap::DashSet; use deno_ast::MediaType; use deno_config::workspace::MappedResolution; +use deno_config::workspace::MappedResolutionDiagnostic; use deno_config::workspace::MappedResolutionError; use deno_config::workspace::WorkspaceResolver; use deno_core::anyhow::anyhow; @@ -21,6 +22,7 @@ use deno_graph::NpmLoadError; use deno_graph::NpmResolvePkgReqsResult; use deno_npm::resolution::NpmResolutionError; use deno_package_json::PackageJsonDepValue; +use deno_runtime::colors; use deno_runtime::deno_fs; use deno_runtime::deno_fs::FileSystem; use deno_runtime::deno_node::is_builtin_node_module; @@ -434,6 +436,7 @@ pub struct CliGraphResolver { maybe_vendor_specifier: Option<ModuleSpecifier>, found_package_json_dep_flag: AtomicFlag, bare_node_builtins_enabled: bool, + warned_pkgs: DashSet<PackageReq>, } pub struct CliGraphResolverOptions<'a> { @@ -469,6 +472,7 @@ impl CliGraphResolver { .and_then(|v| ModuleSpecifier::from_directory_path(v).ok()), found_package_json_dep_flag: Default::default(), bare_node_builtins_enabled: options.bare_node_builtins_enabled, + warned_pkgs: Default::default(), } } @@ -541,8 +545,23 @@ impl Resolver for CliGraphResolver { }); let result = match result { Ok(resolution) => match resolution { - MappedResolution::Normal(specifier) - | MappedResolution::ImportMap(specifier) => { + MappedResolution::Normal { + specifier, + maybe_diagnostic, + } + | MappedResolution::ImportMap { + specifier, + maybe_diagnostic, + } => { + if let Some(diagnostic) = maybe_diagnostic { + match &*diagnostic { + MappedResolutionDiagnostic::ConstraintNotMatchedLocalVersion { reference, .. } => { + if self.warned_pkgs.insert(reference.req().clone()) { + log::warn!("{} {}\n at {}", colors::yellow("Warning"), diagnostic, referrer_range); + } + } + } + } // do sloppy imports resolution if enabled if let Some(sloppy_imports_resolver) = &self.sloppy_imports_resolver { Ok( |