Skip to content
Merged
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
10 changes: 5 additions & 5 deletions crates/next-core/src/next_server/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ use crate::{
get_invalid_styled_jsx_resolve_plugin,
},
transforms::{
emotion::get_emotion_transform_rule, get_ecma_transform_rule,
EcmascriptTransformStage, emotion::get_emotion_transform_rule, get_ecma_transform_rule,
next_react_server_components::get_next_react_server_components_transform_rule,
react_remove_properties::get_react_remove_properties_transform_rule,
relay::get_relay_transform_rule, remove_console::get_remove_console_transform_rule,
Expand Down Expand Up @@ -768,7 +768,7 @@ pub async fn get_server_module_options_context(
ecmascript_client_reference_transition_name,
)),
enable_mdx_rs.is_some(),
true,
EcmascriptTransformStage::Preprocess,
));
}

Expand Down Expand Up @@ -844,7 +844,7 @@ pub async fn get_server_module_options_context(
ecmascript_client_reference_transition_name,
)),
enable_mdx_rs.is_some(),
true,
EcmascriptTransformStage::Preprocess,
));
}

Expand Down Expand Up @@ -922,15 +922,15 @@ pub async fn get_server_module_options_context(
ecmascript_client_reference_transition_name,
)),
enable_mdx_rs.is_some(),
true,
EcmascriptTransformStage::Preprocess,
));
} else {
custom_source_transform_rules.push(get_ecma_transform_rule(
Box::new(ClientDisallowedDirectiveTransformer::new(
"next/dist/client/use-client-disallowed.js".to_string(),
)),
enable_mdx_rs.is_some(),
true,
EcmascriptTransformStage::Preprocess,
));
}

Expand Down
5 changes: 3 additions & 2 deletions crates/next-core/src/next_shared/transforms/debug_fn_name.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ pub fn get_debug_fn_name_rule(enable_mdx_rs: bool) -> ModuleRule {
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![debug_fn_name_transform]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![debug_fn_name_transform]),
}],
)
}
Expand Down
13 changes: 11 additions & 2 deletions crates/next-core/src/next_shared/transforms/emotion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ use turbopack::module_options::ModuleRule;
use turbopack_ecmascript_plugins::transform::emotion::EmotionTransformer;

use super::get_ecma_transform_rule;
use crate::next_config::{EmotionTransformOptionsOrBoolean, NextConfig};
use crate::{
next_config::{EmotionTransformOptionsOrBoolean, NextConfig},
next_shared::transforms::EcmascriptTransformStage,
};

pub async fn get_emotion_transform_rule(next_config: Vc<NextConfig>) -> Result<Option<ModuleRule>> {
let enable_mdx_rs = next_config.mdx_rs().await?.is_some();
Expand All @@ -20,7 +23,13 @@ pub async fn get_emotion_transform_rule(next_config: Vc<NextConfig>) -> Result<O
EmotionTransformOptionsOrBoolean::Options(value) => EmotionTransformer::new(value),
_ => None,
})
.map(|transformer| get_ecma_transform_rule(Box::new(transformer), enable_mdx_rs, true));
.map(|transformer| {
get_ecma_transform_rule(
Box::new(transformer),
enable_mdx_rs,
EcmascriptTransformStage::Main,
)
});

Ok(module_rule)
}
28 changes: 16 additions & 12 deletions crates/next-core/src/next_shared/transforms/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -134,28 +134,32 @@ pub(crate) fn module_rule_match_pages_page_file(
])
}

pub(crate) enum EcmascriptTransformStage {
Preprocess,
Main,
Postprocess,
}

/// Create a new module rule for the given ecmatransform, runs against
/// any ecmascript (with mdx if enabled) except url reference type
pub(crate) fn get_ecma_transform_rule(
transformer: Box<dyn CustomTransformer + Send + Sync>,
enable_mdx_rs: bool,
prepend: bool,
stage: EcmascriptTransformStage,
) -> ModuleRule {
let transformer = EcmascriptInputTransform::Plugin(ResolvedVc::cell(transformer as _));
let (prepend, append) = if prepend {
(
ResolvedVc::cell(vec![transformer]),
ResolvedVc::cell(vec![]),
)
} else {
(
ResolvedVc::cell(vec![]),
ResolvedVc::cell(vec![transformer]),
)
let (preprocess, main, postprocess) = match stage {
EcmascriptTransformStage::Preprocess => (vec![transformer], vec![], vec![]),
EcmascriptTransformStage::Main => (vec![], vec![transformer], vec![]),
EcmascriptTransformStage::Postprocess => (vec![], vec![], vec![transformer]),
};

ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms { prepend, append }],
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
preprocess: ResolvedVc::cell(preprocess),
main: ResolvedVc::cell(main),
postprocess: ResolvedVc::cell(postprocess),
}],
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,9 @@ pub fn get_next_modularize_imports_rule(
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ pub fn get_next_amp_attr_rule(enable_mdx_rs: bool) -> ModuleRule {
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![transformer]),
postprocess: ResolvedVc::cell(vec![]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@ pub fn get_next_cjs_optimizer_rule(enable_mdx_rs: bool) -> ModuleRule {
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ pub fn get_next_disallow_export_all_in_page_rule(
ModuleRule::new(
module_rule_match_pages_page_file(enable_mdx_rs, pages_dir),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
5 changes: 3 additions & 2 deletions crates/next-core/src/next_shared/transforms/next_dynamic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ pub async fn get_next_dynamic_transform_rule(
Ok(ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![dynamic_transform]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![dynamic_transform]),
}],
))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ pub fn next_edge_node_api_assert(
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
5 changes: 3 additions & 2 deletions crates/next-core/src/next_shared/transforms/next_font.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ pub fn get_next_font_transform_rule(enable_mdx_rs: bool) -> ModuleRule {
// TODO: Only match in pages (not pages/api), app/, etc.
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
7 changes: 6 additions & 1 deletion crates/next-core/src/next_shared/transforms/next_lint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@ use turbopack::module_options::ModuleRule;
use turbopack_ecmascript::{CustomTransformer, TransformContext};

use super::get_ecma_transform_rule;
use crate::next_shared::transforms::EcmascriptTransformStage;

pub fn get_next_lint_transform_rule(enable_mdx_rs: bool) -> ModuleRule {
get_ecma_transform_rule(Box::new(LintTransformer {}), enable_mdx_rs, true)
get_ecma_transform_rule(
Box::new(LintTransformer {}),
enable_mdx_rs,
EcmascriptTransformStage::Preprocess,
)
}

#[derive(Debug)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ pub fn get_middleware_dynamic_assert_rule(enable_mdx_rs: bool) -> ModuleRule {
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ pub fn get_next_optimize_server_react_rule(
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ pub fn get_next_page_config_rule(enable_mdx_rs: bool, pages_dir: FileSystemPath)
ModuleRule::new(
module_rule_match_pages_page_file(enable_mdx_rs, pages_dir),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ pub fn get_next_page_static_info_assert_rule(
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![transformer]),
append: ResolvedVc::cell(vec![]),
preprocess: ResolvedVc::cell(vec![transformer]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![]),
}],
)
}
Expand Down
5 changes: 3 additions & 2 deletions crates/next-core/src/next_shared/transforms/next_pure.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ pub fn get_next_pure_rule(enable_mdx_rs: bool) -> ModuleRule {
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use turbopack::module_options::ModuleRule;
use turbopack_ecmascript::{CustomTransformer, TransformContext};

use super::get_ecma_transform_rule;
use crate::next_config::NextConfig;
use crate::{next_config::NextConfig, next_shared::transforms::EcmascriptTransformStage};

/// Returns a rule which applies the Next.js react server components transform.
/// This transform owns responsibility to assert various import / usage
Expand Down Expand Up @@ -44,7 +44,7 @@ pub async fn get_next_react_server_components_transform_rule(
app_dir,
)),
enable_mdx_rs,
true,
EcmascriptTransformStage::Preprocess,
))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ pub fn get_next_shake_exports_rule(enable_mdx_rs: bool, ignore: Vec<String>) ->
ModuleRule::new(
module_rule_match_js_no_url(enable_mdx_rs),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![transformer]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![transformer]),
}],
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ pub async fn get_next_pages_transforms_rule(
module_rule_match_js_no_url(enable_mdx_rs),
]),
vec![ModuleRuleEffect::ExtendEcmascriptTransforms {
prepend: ResolvedVc::cell(vec![]),
append: ResolvedVc::cell(vec![strip_transform]),
preprocess: ResolvedVc::cell(vec![]),
main: ResolvedVc::cell(vec![]),
postprocess: ResolvedVc::cell(vec![strip_transform]),
}],
))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@ use turbopack::module_options::ModuleRule;
use turbopack_ecmascript::{CustomTransformer, TransformContext};

use super::get_ecma_transform_rule;
use crate::next_shared::transforms::EcmascriptTransformStage;

pub fn get_next_track_dynamic_imports_transform_rule(mdx_rs: bool) -> ModuleRule {
get_ecma_transform_rule(Box::new(NextTrackDynamicImports {}), mdx_rs, false)
get_ecma_transform_rule(
Box::new(NextTrackDynamicImports {}),
mdx_rs,
EcmascriptTransformStage::Postprocess,
)
}

#[derive(Debug)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ use turbopack::module_options::ModuleRule;
use turbopack_ecmascript::{CustomTransformer, TransformContext};

use super::get_ecma_transform_rule;
use crate::next_config::{NextConfig, ReactRemoveProperties};
use crate::{
next_config::{NextConfig, ReactRemoveProperties},
next_shared::transforms::EcmascriptTransformStage,
};

/// Returns a rule which applies the react_remove_properties transform.
pub async fn get_react_remove_properties_transform_rule(
Expand Down Expand Up @@ -34,7 +37,7 @@ pub async fn get_react_remove_properties_transform_rule(
get_ecma_transform_rule(
Box::new(ReactRemovePropertiesTransformer { config }),
enable_mdx_rs,
true,
EcmascriptTransformStage::Preprocess,
)
});

Expand Down
4 changes: 2 additions & 2 deletions crates/next-core/src/next_shared/transforms/relay.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use turbopack::module_options::ModuleRule;
use turbopack_ecmascript_plugins::transform::relay::RelayTransformer;

use super::get_ecma_transform_rule;
use crate::next_config::NextConfig;
use crate::{next_config::NextConfig, next_shared::transforms::EcmascriptTransformStage};

/// Returns a transform rule for the relay graphql transform.
pub async fn get_relay_transform_rule(
Expand All @@ -17,7 +17,7 @@ pub async fn get_relay_transform_rule(
get_ecma_transform_rule(
Box::new(RelayTransformer::new(config, &project_path)),
enable_mdx_rs,
true,
EcmascriptTransformStage::Preprocess,
)
});

Expand Down
Loading
Loading