summaryrefslogtreecommitdiff
path: root/cli/resolver.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-08-20 10:11:43 -0400
committerGitHub <noreply@github.com>2024-08-20 14:11:43 +0000
commitf1c58ec041a05276d9f33562a5843c0bb7fb95b3 (patch)
treedc4bca4eab617e75474e19a7491ed88d5ee64fef /cli/resolver.rs
parent19bcb40059f6ba730b6d05d8edf005c6b40f6ff8 (diff)
feat(unstable): ability to use a local copy of jsr packages (#25068)
Diffstat (limited to 'cli/resolver.rs')
-rw-r--r--cli/resolver.rs23
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(