From f5eb177f50a0bf37bc6bd9d87b447c73a53b6ea5 Mon Sep 17 00:00:00 2001 From: Kitson Kelly Date: Tue, 9 Nov 2021 12:26:39 +1100 Subject: feat(cli): support React 17 JSX transforms (#12631) Closes #8440 --- cli/lsp/cache.rs | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'cli/lsp/cache.rs') diff --git a/cli/lsp/cache.rs b/cli/lsp/cache.rs index 1ea317240..b7bdb90c5 100644 --- a/cli/lsp/cache.rs +++ b/cli/lsp/cache.rs @@ -2,9 +2,11 @@ use crate::cache::CacherLoader; use crate::cache::FetchCacher; +use crate::config_file::ConfigFile; use crate::flags::Flags; use crate::proc_state::ProcState; use crate::resolver::ImportMapResolver; +use crate::resolver::JsxResolver; use deno_core::error::anyhow; use deno_core::error::AnyError; @@ -13,6 +15,7 @@ use deno_runtime::permissions::Permissions; use deno_runtime::tokio_util::create_basic_runtime; use import_map::ImportMap; use std::path::PathBuf; +use std::sync::Arc; use std::thread; use tokio::sync::mpsc; use tokio::sync::oneshot; @@ -27,7 +30,8 @@ pub(crate) struct CacheServer(mpsc::UnboundedSender); impl CacheServer { pub async fn new( maybe_cache_path: Option, - maybe_import_map: Option, + maybe_import_map: Option>, + maybe_config_file: Option, ) -> Self { let (tx, mut rx) = mpsc::unbounded_channel::(); let _join_handle = thread::spawn(move || { @@ -39,8 +43,26 @@ impl CacheServer { }) .await .unwrap(); - let maybe_resolver = - maybe_import_map.as_ref().map(ImportMapResolver::new); + let maybe_import_map_resolver = + maybe_import_map.map(ImportMapResolver::new); + let maybe_jsx_resolver = maybe_config_file + .as_ref() + .map(|cf| { + cf.to_maybe_jsx_import_source_module() + .map(|im| JsxResolver::new(im, maybe_import_map_resolver.clone())) + }) + .flatten(); + let maybe_resolver = if maybe_jsx_resolver.is_some() { + maybe_jsx_resolver.as_ref().map(|jr| jr.as_resolver()) + } else { + maybe_import_map_resolver + .as_ref() + .map(|im| im.as_resolver()) + }; + let maybe_imports = maybe_config_file + .map(|cf| cf.to_maybe_imports().ok()) + .flatten() + .flatten(); let mut cache = FetchCacher::new( ps.dir.gen_cache.clone(), ps.file_fetcher.clone(), @@ -52,9 +74,9 @@ impl CacheServer { let graph = deno_graph::create_graph( roots, false, - None, + maybe_imports.clone(), cache.as_mut_loader(), - maybe_resolver.as_ref().map(|r| r.as_resolver()), + maybe_resolver, None, None, ) -- cgit v1.2.3