summaryrefslogtreecommitdiff
path: root/cli/tools
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2021-11-09 12:26:39 +1100
committerGitHub <noreply@github.com>2021-11-09 12:26:39 +1100
commitf5eb177f50a0bf37bc6bd9d87b447c73a53b6ea5 (patch)
tree1990dadf311de59b45c677e234219a161f3ebf9d /cli/tools
parent45425c114610516287c8e5831c9b6f023dfc8180 (diff)
feat(cli): support React 17 JSX transforms (#12631)
Closes #8440
Diffstat (limited to 'cli/tools')
-rw-r--r--cli/tools/doc.rs2
-rw-r--r--cli/tools/repl.rs3
-rw-r--r--cli/tools/test.rs31
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,
)