Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/soft-ways-greet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@atlaspack/integration-tests': minor
'@atlaspack/rust': minor
'@atlaspack/transformer-js': minor
---

Add Atlaspack V3 config parsing for `typeof_replacer`, `global_aliaser`, `lazy_loading_transformer`, `react_hooks_remover`, `react_async_import_lift`, `static_prevaluator`, `dead_returns_remover`, `unused_bindings_remover`
46 changes: 46 additions & 0 deletions crates/atlaspack_plugin_transformer_js/src/js_transformer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,42 @@ impl TransformerPlugin for AtlaspackJsTransformerPlugin {

let env_vars = self.env_variables(&asset);

let enable_ssr_typeof_replacement = env_vars
.get(&Atom::from("NATIVE_SSR_TYPEOF_REPLACEMENT"))
.is_some_and(|v| v == "true");
let global_aliasing_config = match env_vars.get(&Atom::from("NATIVE_GLOBAL_ALIASING")) {
Some(value) => match serde_json::from_str::<HashMap<String, String>>(value) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to cache this value so it's not parsed on every file?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's probably not worth the effort and extra maintenance given the efficiency of Serde and the miniscule scale of the configs

Ok(config) => Some(config),
Err(err) => {
eprintln!(
"Failed to parse NATIVE_GLOBAL_ALIASING JSON: {}. Config will not be applied.",
err
);
None
}
},
None => None,
};
let enable_lazy_loading =
env_vars.get(&Atom::from("NATIVE_LAZY_LOADING")) == Some(&Atom::from("true"));
let enable_react_hooks_removal =
env_vars.get(&Atom::from("NATIVE_REACT_HOOKS_REMOVAL")) == Some(&Atom::from("true"));
let enable_react_async_import_lift =
env_vars.get(&Atom::from("NATIVE_REACT_ASYNC_IMPORT_LIFT")) == Some(&Atom::from("true"));
let react_async_lift_by_default = env_vars
.get(&Atom::from("REACT_ASYNC_IMPORT_LIFTING_BY_DEFAULT"))
== Some(&Atom::from("true"));
let react_async_lift_report_level = env_vars
.get(&Atom::from("REACT_ASYNC_LIFT_REPORT_LEVEL"))
.cloned()
.unwrap_or_else(|| Atom::from("none"))
.to_string();
let enable_static_prevaluation =
env_vars.get(&Atom::from("NATIVE_PREVALUATION")) == Some(&Atom::from("true"));
let enable_dead_returns_removal =
env_vars.get(&Atom::from("NATIVE_DEAD_RETURNS_REMOVAL")) == Some(&Atom::from("true"));
let enable_unused_bindings_removal =
env_vars.get(&Atom::from("NATIVE_UNUSED_BINDINGS_REMOVAL")) == Some(&Atom::from("true"));
let sync_dynamic_import_config = if env.context.is_tesseract() {
self.sync_dynamic_import_config()
} else {
Expand Down Expand Up @@ -489,6 +525,16 @@ impl TransformerPlugin for AtlaspackJsTransformerPlugin {
.options
.feature_flags
.bool_enabled("nestedPromiseImportFix"),
enable_ssr_typeof_replacement,
global_aliasing_config,
enable_lazy_loading,
enable_react_hooks_removal,
enable_react_async_import_lift,
react_async_lift_by_default,
react_async_lift_report_level,
enable_static_prevaluation,
enable_dead_returns_removal,
enable_unused_bindings_removal,
sync_dynamic_import_config,
..atlaspack_js_swc_core::Config::default()
};
Expand Down
Loading
Loading