From 0d4e280937fc26af7517dd201348d2e8cdd5f333 Mon Sep 17 00:00:00 2001 From: OJ Kwon <1210596+kwonoj@users.noreply.github.com> Date: Fri, 21 Apr 2023 07:53:56 -0700 Subject: [PATCH] refactor(next-swc): turbopack_ecmascript_plugins --- packages/next-swc/crates/next-core/Cargo.toml | 1 + packages/next-swc/crates/next-core/src/lib.rs | 2 ++ .../next-swc/crates/next-core/src/next_config.rs | 3 ++- .../crates/next-core/src/next_shared/transforms.rs | 12 ++++++------ .../crates/next-core/src/transform_options.rs | 8 +++++--- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/next-swc/crates/next-core/Cargo.toml b/packages/next-swc/crates/next-core/Cargo.toml index 3e2e6ca01dc9..49f05b5ac78c 100644 --- a/packages/next-swc/crates/next-core/Cargo.toml +++ b/packages/next-swc/crates/next-core/Cargo.toml @@ -35,6 +35,7 @@ turbo-binding = { workspace = true, features = [ "__turbopack_dev", "__turbopack_dev_server", "__turbopack_ecmascript", + "__turbopack_ecmascript_plugin", "__turbopack_env", "__turbopack_static", "__turbopack_image", diff --git a/packages/next-swc/crates/next-core/src/lib.rs b/packages/next-swc/crates/next-core/src/lib.rs index b6c3890e0b53..fa249e39fd22 100644 --- a/packages/next-swc/crates/next-core/src/lib.rs +++ b/packages/next-swc/crates/next-core/src/lib.rs @@ -47,5 +47,7 @@ pub fn register() { turbopack::node::register(); turbopack::turbopack::register(); turbopack::image::register(); + turbopack::ecmascript::register(); + turbopack::ecmascript_plugin::register(); include!(concat!(env!("OUT_DIR"), "/register.rs")); } diff --git a/packages/next-swc/crates/next-core/src/next_config.rs b/packages/next-swc/crates/next-core/src/next_config.rs index 3b4b65d3701f..46428b25a61e 100644 --- a/packages/next-swc/crates/next-core/src/next_config.rs +++ b/packages/next-swc/crates/next-core/src/next_config.rs @@ -23,6 +23,7 @@ use turbo_binding::{ ecmascript::{ EcmascriptInputTransformsVc, EcmascriptModuleAssetType, EcmascriptModuleAssetVc, }, + ecmascript_plugin::transform::emotion::EmotionTransformConfig, node::{ evaluate::evaluate, execution_context::{ExecutionContext, ExecutionContextVc}, @@ -30,7 +31,7 @@ use turbo_binding::{ }, turbopack::{ evaluate_context::node_evaluate_asset_context, - module_options::{EmotionTransformConfig, StyledComponentsTransformConfig}, + module_options::StyledComponentsTransformConfig, }, }, }; diff --git a/packages/next-swc/crates/next-core/src/next_shared/transforms.rs b/packages/next-swc/crates/next-core/src/next_shared/transforms.rs index 021f6dd0dbd9..00233c6f70ea 100644 --- a/packages/next-swc/crates/next-core/src/next_shared/transforms.rs +++ b/packages/next-swc/crates/next-core/src/next_shared/transforms.rs @@ -19,8 +19,8 @@ use turbo_binding::{ turbopack::{ core::reference_type::{ReferenceType, UrlReferenceSubType}, ecmascript::{ - CustomTransformVc, CustomTransformer, EcmascriptInputTransform, - EcmascriptInputTransformsVc, TransformContext, + CustomTransformer, EcmascriptInputTransform, EcmascriptInputTransformsVc, + TransformContext, TransformPluginVc, }, turbopack::module_options::{ ModuleRule, ModuleRuleCondition, ModuleRuleEffect, ModuleType, @@ -38,7 +38,7 @@ pub async fn get_next_pages_transforms_rule( ) -> Result { // Apply the Next SSG transform to all pages. let strip_transform = - EcmascriptInputTransform::Custom(CustomTransformVc::cell(box NextJsStripPageExports { + EcmascriptInputTransform::Plugin(TransformPluginVc::cell(box NextJsStripPageExports { export_filter, })); Ok(ModuleRule::new( @@ -110,7 +110,7 @@ pub async fn get_next_dynamic_transform_rule( pages_dir: Option, ) -> Result { let dynamic_transform = - EcmascriptInputTransform::Custom(CustomTransformVc::cell(box NextJsDynamic { + EcmascriptInputTransform::Plugin(TransformPluginVc::cell(box NextJsDynamic { is_development, is_server, is_server_components, @@ -159,7 +159,7 @@ pub fn get_next_font_transform_rule() -> ModuleRule { ]; let transformer = - EcmascriptInputTransform::Custom(CustomTransformVc::cell(box NextJsFont { font_loaders })); + EcmascriptInputTransform::Plugin(TransformPluginVc::cell(box NextJsFont { font_loaders })); ModuleRule::new( // TODO: Only match in pages (not pages/api), app/, etc. module_rule_match_js_no_url(), @@ -229,7 +229,7 @@ pub struct ModularizeImportPackageConfig { pub fn get_next_modularize_imports_rule( modularize_imports_config: &IndexMap, ) -> ModuleRule { - let transformer = EcmascriptInputTransform::Custom(CustomTransformVc::cell(Box::new( + let transformer = EcmascriptInputTransform::Plugin(TransformPluginVc::cell(Box::new( ModularizeImportsTransformer::new(modularize_imports_config), ))); ModuleRule::new( diff --git a/packages/next-swc/crates/next-core/src/transform_options.rs b/packages/next-swc/crates/next-core/src/transform_options.rs index 01f689f38fac..88bc9b660094 100644 --- a/packages/next-swc/crates/next-core/src/transform_options.rs +++ b/packages/next-swc/crates/next-core/src/transform_options.rs @@ -6,10 +6,12 @@ use turbo_binding::turbopack::{ source_asset::SourceAssetVc, }, ecmascript::typescript::resolve::{read_from_tsconfigs, read_tsconfigs, tsconfig}, + ecmascript_plugin::transform::emotion::{ + EmotionTransformConfig, EmotionTransformConfigVc, OptionEmotionTransformConfigVc, + }, turbopack::module_options::{ - DecoratorsKind, DecoratorsOptions, DecoratorsOptionsVc, EmotionTransformConfig, - EmotionTransformConfigVc, JsxTransformOptions, JsxTransformOptionsVc, - OptionEmotionTransformConfigVc, OptionStyledComponentsTransformConfigVc, + DecoratorsKind, DecoratorsOptions, DecoratorsOptionsVc, JsxTransformOptions, + JsxTransformOptionsVc, OptionStyledComponentsTransformConfigVc, StyledComponentsTransformConfig, TypescriptTransformOptions, TypescriptTransformOptionsVc, }, };