From 5edd102f3f912a53c7bcad3b0fa4feb672ada323 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Fri, 29 Sep 2023 09:26:25 -0400 Subject: 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 --- cli/tools/repl/session.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'cli/tools/repl') 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, + npm_resolver: Arc, resolver: Arc, pub worker: MainWorker, session: LocalInspectorSession, @@ -136,7 +136,7 @@ pub struct ReplSession { impl ReplSession { pub async fn initialize( cli_options: &CliOptions, - npm_resolver: Arc, + npm_resolver: Arc, resolver: Arc, mut worker: MainWorker, ) -> Result { @@ -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(()) -- cgit v1.2.3