summaryrefslogtreecommitdiff
path: root/cli/graph_util.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-09-29 09:26:25 -0400
committerGitHub <noreply@github.com>2023-09-29 09:26:25 -0400
commit5edd102f3f912a53c7bcad3b0fa4feb672ada323 (patch)
tree2402b64e527bd859f3a2c71d3e96a89992002aa2 /cli/graph_util.rs
parentd43e48c4e96b02289d505cd2558ba85d7d6cb57b (diff)
refactor(cli): make `CliNpmResolver` a trait (#20732)
This makes `CliNpmResolver` a trait. The terminology used is: - **managed** - Deno manages the node_modules folder and does an auto-install (ex. `ManagedCliNpmResolver`) - **byonm** - "Bring your own node_modules" (ex. `ByonmCliNpmResolver`, which is in this PR, but unimplemented at the moment) Part of #18967
Diffstat (limited to 'cli/graph_util.rs')
-rw-r--r--cli/graph_util.rs33
1 files changed, 17 insertions, 16 deletions
diff --git a/cli/graph_util.rs b/cli/graph_util.rs
index e567bebb5..a4a5dcab1 100644
--- a/cli/graph_util.rs
+++ b/cli/graph_util.rs
@@ -171,7 +171,7 @@ pub fn graph_lock_or_exit(graph: &ModuleGraph, lockfile: &mut Lockfile) {
pub struct ModuleGraphBuilder {
options: Arc<CliOptions>,
resolver: Arc<CliGraphResolver>,
- npm_resolver: Arc<CliNpmResolver>,
+ npm_resolver: Arc<dyn CliNpmResolver>,
parsed_source_cache: Arc<ParsedSourceCache>,
lockfile: Option<Arc<Mutex<Lockfile>>>,
maybe_file_watcher_reporter: Option<FileWatcherReporter>,
@@ -186,7 +186,7 @@ impl ModuleGraphBuilder {
pub fn new(
options: Arc<CliOptions>,
resolver: Arc<CliGraphResolver>,
- npm_resolver: Arc<CliNpmResolver>,
+ npm_resolver: Arc<dyn CliNpmResolver>,
parsed_source_cache: Arc<ParsedSourceCache>,
lockfile: Option<Arc<Mutex<Lockfile>>>,
maybe_file_watcher_reporter: Option<FileWatcherReporter>,
@@ -245,11 +245,10 @@ impl ModuleGraphBuilder {
)
.await?;
- if graph.has_node_specifier && self.options.type_check_mode().is_true() {
- self
- .npm_resolver
- .inject_synthetic_types_node_package()
- .await?;
+ if let Some(npm_resolver) = self.npm_resolver.as_managed() {
+ if graph.has_node_specifier && self.options.type_check_mode().is_true() {
+ npm_resolver.inject_synthetic_types_node_package().await?;
+ }
}
Ok(graph)
@@ -391,16 +390,18 @@ impl ModuleGraphBuilder {
}
}
- // ensure that the top level package.json is installed if a
- // specifier was matched in the package.json
- self
- .resolver
- .top_level_package_json_install_if_necessary()
- .await?;
+ if let Some(npm_resolver) = self.npm_resolver.as_managed() {
+ // ensure that the top level package.json is installed if a
+ // specifier was matched in the package.json
+ self
+ .resolver
+ .top_level_package_json_install_if_necessary()
+ .await?;
- // resolve the dependencies of any pending dependencies
- // that were inserted by building the graph
- self.npm_resolver.resolve_pending().await?;
+ // resolve the dependencies of any pending dependencies
+ // that were inserted by building the graph
+ npm_resolver.resolve_pending().await?;
+ }
Ok(())
}