diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2021-11-09 12:26:39 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-09 12:26:39 +1100 |
commit | f5eb177f50a0bf37bc6bd9d87b447c73a53b6ea5 (patch) | |
tree | 1990dadf311de59b45c677e234219a161f3ebf9d /cli/tools | |
parent | 45425c114610516287c8e5831c9b6f023dfc8180 (diff) |
feat(cli): support React 17 JSX transforms (#12631)
Closes #8440
Diffstat (limited to 'cli/tools')
-rw-r--r-- | cli/tools/doc.rs | 2 | ||||
-rw-r--r-- | cli/tools/repl.rs | 3 | ||||
-rw-r--r-- | cli/tools/test.rs | 31 |
3 files changed, 29 insertions, 7 deletions
diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs index aa9d913a0..cc37df06d 100644 --- a/cli/tools/doc.rs +++ b/cli/tools/doc.rs @@ -38,7 +38,7 @@ impl Loader for StubDocLoader { #[derive(Debug)] struct DocResolver { - import_map: Option<ImportMap>, + import_map: Option<Arc<ImportMap>>, } impl Resolver for DocResolver { diff --git a/cli/tools/repl.rs b/cli/tools/repl.rs index f3ba626af..b6874f574 100644 --- a/cli/tools/repl.rs +++ b/cli/tools/repl.rs @@ -668,8 +668,11 @@ impl ReplSession { imports_not_used_as_values: ImportsNotUsedAsValues::Preserve, // JSX is not supported in the REPL transform_jsx: false, + jsx_automatic: false, + jsx_development: false, jsx_factory: "React.createElement".into(), jsx_fragment_factory: "React.Fragment".into(), + jsx_import_source: None, repl_imports: true, }, )? diff --git a/cli/tools/test.rs b/cli/tools/test.rs index d883f18a3..fba178202 100644 --- a/cli/tools/test.rs +++ b/cli/tools/test.rs @@ -18,6 +18,7 @@ use crate::lockfile; use crate::ops; use crate::proc_state::ProcState; use crate::resolver::ImportMapResolver; +use crate::resolver::JsxResolver; use crate::tools::coverage::CoverageCollector; use deno_ast::swc::common::comments::CommentKind; @@ -1053,14 +1054,21 @@ pub async fn run_tests_with_watch( let paths_to_watch = paths_to_watch.clone(); let paths_to_watch_clone = paths_to_watch.clone(); - let maybe_resolver = - ps.maybe_import_map.as_ref().map(ImportMapResolver::new); + let maybe_import_map_resolver = + ps.maybe_import_map.clone().map(ImportMapResolver::new); + let maybe_jsx_resolver = ps + .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_locker = lockfile::as_maybe_locker(ps.lockfile.clone()); let maybe_imports = ps .maybe_config_file .as_ref() - .map(|cf| cf.to_maybe_imports()) - .flatten(); + .map(|cf| cf.to_maybe_imports()); let files_changed = changed.is_some(); let include = include.clone(); let ignore = ignore.clone(); @@ -1081,13 +1089,24 @@ pub async fn run_tests_with_watch( .filter_map(|url| deno_core::resolve_url(url.as_str()).ok()) .collect() }; - + let maybe_imports = if let Some(result) = maybe_imports { + result? + } else { + None + }; + 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 graph = deno_graph::create_graph( test_modules.clone(), false, maybe_imports, cache.as_mut_loader(), - maybe_resolver.as_ref().map(|r| r.as_resolver()), + maybe_resolver, maybe_locker, None, ) |