diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-09-29 09:26:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-29 09:26:25 -0400 |
commit | 5edd102f3f912a53c7bcad3b0fa4feb672ada323 (patch) | |
tree | 2402b64e527bd859f3a2c71d3e96a89992002aa2 /cli/tools/repl/session.rs | |
parent | d43e48c4e96b02289d505cd2558ba85d7d6cb57b (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/tools/repl/session.rs')
-rw-r--r-- | cli/tools/repl/session.rs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs index a1b602b4b..f833fbf5d 100644 --- a/cli/tools/repl/session.rs +++ b/cli/tools/repl/session.rs @@ -123,7 +123,7 @@ pub struct TsEvaluateResponse { } pub struct ReplSession { - npm_resolver: Arc<CliNpmResolver>, + npm_resolver: Arc<dyn CliNpmResolver>, resolver: Arc<CliGraphResolver>, pub worker: MainWorker, session: LocalInspectorSession, @@ -136,7 +136,7 @@ pub struct ReplSession { impl ReplSession { pub async fn initialize( cli_options: &CliOptions, - npm_resolver: Arc<CliNpmResolver>, + npm_resolver: Arc<dyn CliNpmResolver>, resolver: Arc<CliGraphResolver>, mut worker: MainWorker, ) -> Result<Self, AnyError> { @@ -508,6 +508,10 @@ impl ReplSession { &mut self, program: &swc_ast::Program, ) -> Result<(), AnyError> { + let Some(npm_resolver) = self.npm_resolver.as_managed() else { + return Ok(()); // don't auto-install for byonm + }; + let mut collector = ImportCollector::new(); program.visit_with(&mut collector); @@ -531,14 +535,11 @@ impl ReplSession { let has_node_specifier = resolved_imports.iter().any(|url| url.scheme() == "node"); if !npm_imports.is_empty() || has_node_specifier { - self.npm_resolver.add_package_reqs(&npm_imports).await?; + npm_resolver.add_package_reqs(&npm_imports).await?; // prevent messages in the repl about @types/node not being cached if has_node_specifier { - self - .npm_resolver - .inject_synthetic_types_node_package() - .await?; + npm_resolver.inject_synthetic_types_node_package().await?; } } Ok(()) |