diff options
Diffstat (limited to 'cli/args/config_file.rs')
-rw-r--r-- | cli/args/config_file.rs | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/cli/args/config_file.rs b/cli/args/config_file.rs index 1739309ff..ab6e57cb1 100644 --- a/cli/args/config_file.rs +++ b/cli/args/config_file.rs @@ -11,7 +11,6 @@ use crate::fs_util::specifier_to_file_path; use deno_core::anyhow::anyhow; use deno_core::anyhow::bail; use deno_core::anyhow::Context; -use deno_core::error::custom_error; use deno_core::error::AnyError; use deno_core::serde::Deserialize; use deno_core::serde::Serialize; @@ -30,6 +29,11 @@ use std::path::PathBuf; pub type MaybeImportsResult = Result<Option<Vec<(ModuleSpecifier, Vec<String>)>>, AnyError>; +pub struct JsxImportSourceConfig { + pub default_specifier: Option<String>, + pub module: String, +} + /// The transpile options that are significant out of a user provided tsconfig /// file, that we want to deserialize out of the final config for a transpile. #[derive(Debug, Deserialize)] @@ -680,17 +684,6 @@ impl ConfigFile { if let Some(types) = compiler_options.types { imports.extend(types); } - if compiler_options.jsx == Some("react-jsx".to_string()) { - imports.push(format!( - "{}/jsx-runtime", - compiler_options.jsx_import_source.ok_or_else(|| custom_error("TypeError", "Compiler option 'jsx' set to 'react-jsx', but no 'jsxImportSource' defined."))? - )); - } else if compiler_options.jsx == Some("react-jsxdev".to_string()) { - imports.push(format!( - "{}/jsx-dev-runtime", - compiler_options.jsx_import_source.ok_or_else(|| custom_error("TypeError", "Compiler option 'jsx' set to 'react-jsxdev', but no 'jsxImportSource' defined."))? - )); - } if !imports.is_empty() { let referrer = self.specifier.clone(); Ok(Some(vec![(referrer, imports)])) @@ -700,16 +693,22 @@ impl ConfigFile { } /// Based on the compiler options in the configuration file, return the - /// implied JSX import source module. - pub fn to_maybe_jsx_import_source_module(&self) -> Option<String> { + /// JSX import source configuration. + pub fn to_maybe_jsx_import_source_config( + &self, + ) -> Option<JsxImportSourceConfig> { let compiler_options_value = self.json.compiler_options.as_ref()?; let compiler_options: CompilerOptions = serde_json::from_value(compiler_options_value.clone()).ok()?; - match compiler_options.jsx.as_deref() { + let module = match compiler_options.jsx.as_deref() { Some("react-jsx") => Some("jsx-runtime".to_string()), Some("react-jsxdev") => Some("jsx-dev-runtime".to_string()), _ => None, - } + }; + module.map(|module| JsxImportSourceConfig { + default_specifier: compiler_options.jsx_import_source, + module, + }) } pub fn to_fmt_config(&self) -> Result<Option<FmtConfig>, AnyError> { |