diff --git a/.eslintignore b/.eslintignore index 1f567252c7..ced4b53392 100644 --- a/.eslintignore +++ b/.eslintignore @@ -26,6 +26,6 @@ packages/create-next-app/templates/** test/integration/eslint/** test/development/basic/legacy-decorators/**/* test-timings.json -packages/next/build/swc/tests/** +packages/next/build/swc/crates/** bench/nested-deps/pages/** bench/nested-deps/components/** diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index 0a3d7b02dc..011df24325 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -1129,3 +1129,73 @@ jobs: with: name: next-swc-binaries path: packages/next/native/next-swc.android-arm64.node + + build-wasm: + needs: build + strategy: + matrix: + target: [web, nodejs] + runs-on: ubuntu-latest + steps: + - uses: actions/cache@v2 + id: restore-build + with: + path: ./* + key: ${{ github.sha }} + + - name: Setup node + uses: actions/setup-node@v2 + with: + node-version: 14 + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly-2021-08-12 + override: true + target: wasm32-unknown-unknown + + - name: Cache + uses: actions/cache@v2 + with: + path: | + ~/.cargo/ + **/target/ + key: ${{ runner.os }}-publish-integration + + - name: Install wasm-pack + run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + + - name: Build + run: (wasm-pack build packages/next/build/swc/crates/wasm --release --scope=next --target ${{ matrix.target }}) + + - name: Add target to folder name + run: mv packages/next/build/swc/crates/wasm/pkg packages/next/build/swc/crates/wasm/pkg-${{ matrix.target }} + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: wasm-binaries + path: packages/next/build/swc/crates/wasm/pkg-* + + - run: ls packages/next/build/swc/crates/wasm + + # - name: Publish + # run: | + # echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc + # (cd crates/wasm/pkg && npm publish --access public) + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + practice: + needs: build-wasm + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v2 + with: + name: wasm-binaries + path: packages/next/build/swc/crates/wasm + + - run: ls packages/next/build/swc/crates/wasm diff --git a/.prettierignore b/.prettierignore index f9128cee0c..2aaa01cc47 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,7 +10,7 @@ packages/react-dev-overlay/lib/** **/__tmp__/** lerna.json .github/actions/next-stats-action/.work -packages/next/build/swc/tests/**/* +packages/next/build/swc/crates/**/* packages/next-codemod/transforms/__testfixtures__/**/* packages/next-codemod/transforms/__tests__/**/* packages/next-codemod/**/*.js diff --git a/.prettierignore_staged b/.prettierignore_staged index d84fe951e5..77a06f9e39 100644 --- a/.prettierignore_staged +++ b/.prettierignore_staged @@ -1,7 +1,7 @@ **/.next/** **/_next/** **/dist/** -packages/next/build/swc/tests/** +packages/next/build/swc/crates/** packages/next/compiled/**/* packages/next/bundles/webpack/packages/*.runtime.js lerna.json diff --git a/packages/next/build/swc/Cargo.lock b/packages/next/build/swc/Cargo.lock index 0a675fe7f1..b59f41e191 100644 --- a/packages/next/build/swc/Cargo.lock +++ b/packages/next/build/swc/Cargo.lock @@ -177,6 +177,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" +[[package]] +name = "bumpalo" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" + [[package]] name = "byteorder" version = "1.4.3" @@ -223,6 +229,25 @@ dependencies = [ "bitflags", ] +[[package]] +name = "cloudabi" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" +dependencies = [ + "bitflags", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen", +] + [[package]] name = "cpufeatures" version = "0.2.1" @@ -571,6 +596,15 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +[[package]] +name = "js-sys" +version = "0.3.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc15e39392125075f60c95ba416f5381ff6c3a948ff02ab12464715adf56c821" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -754,27 +788,16 @@ checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" name = "next-swc" version = "0.0.0" dependencies = [ - "anyhow", - "backtrace", "chrono", "easy-error", "either", "fxhash", - "napi", - "napi-build", - "napi-derive", - "once_cell", - "path-clean", "pathdiff", - "regex", - "retain_mut", - "rustc-hash", "serde", "serde_json", "styled_components", "swc", "swc_atoms", - "swc_bundler", "swc_common", "swc_css", "swc_ecma_loader", @@ -788,6 +811,29 @@ dependencies = [ "walkdir", ] +[[package]] +name = "next-swc-napi" +version = "0.0.0" +dependencies = [ + "anyhow", + "backtrace", + "fxhash", + "napi", + "napi-build", + "napi-derive", + "next-swc", + "once_cell", + "serde", + "serde_json", + "swc", + "swc_atoms", + "swc_bundler", + "swc_common", + "swc_ecma_loader", + "swc_ecmascript", + "swc_node_base", +] + [[package]] name = "normpath" version = "0.2.0" @@ -898,13 +944,13 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.11.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" dependencies = [ "instant", "lock_api 0.4.5", - "parking_lot_core 0.8.5", + "parking_lot_core 0.8.0", ] [[package]] @@ -922,14 +968,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", + "cloudabi 0.1.0", "instant", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "smallvec 1.7.0", "winapi", ] @@ -1262,7 +1309,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi", + "cloudabi 0.0.3", "fuchsia-cprng", "libc", "rand_core 0.4.2", @@ -1332,6 +1379,12 @@ dependencies = [ "rand_core 0.3.1", ] +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + [[package]] name = "redox_syscall" version = "0.2.10" @@ -1600,7 +1653,7 @@ checksum = "923f0f39b6267d37d23ce71ae7235602134b250ace715dd2c90421998ddac0c6" dependencies = [ "lazy_static", "new_debug_unreachable", - "parking_lot 0.11.2", + "parking_lot 0.11.1", "phf_shared", "precomputed-hash", "serde", @@ -1715,7 +1768,7 @@ dependencies = [ "indexmap", "is-macro", "once_cell", - "parking_lot 0.11.2", + "parking_lot 0.11.1", "petgraph", "radix_fmt", "rayon", @@ -2393,7 +2446,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "rand 0.8.4", - "redox_syscall", + "redox_syscall 0.2.10", "remove_dir_all", "winapi", ] @@ -2629,6 +2682,104 @@ version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +[[package]] +name = "wasm" +version = "0.0.0" +dependencies = [ + "anyhow", + "console_error_panic_hook", + "next-swc", + "once_cell", + "parking_lot_core 0.8.0", + "path-clean", + "serde", + "serde_json", + "swc", + "swc_common", + "swc_ecmascript", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fe8f61dba8e5d645a4d8132dc7a0a66861ed5e1045d2c0ed940fab33bac0fbe" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046ceba58ff062da072c7cb4ba5b22a37f00a302483f7e2a6cdc18fedbdc1fd3" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73157efb9af26fb564bb59a009afd1c7c334a44db171d280690d0c3faaec3468" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef9aa01d36cda046f797c57959ff5f3c615c9cc63997a8d545831ec7976819b" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96eb45c1b2ee33545a813a92dbb53856418bf7eb54ab34f7f7ff1448a5b3735d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7148f4696fb4960a346eaa60bbfb42a1ac4ebba21f750f75fc1375b098d5ffa" + +[[package]] +name = "web-sys" +version = "0.3.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fe19d70f5dacc03f6e46777213facae5ac3801575d56ca6cbd4c93dcd12310" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/packages/next/build/swc/Cargo.toml b/packages/next/build/swc/Cargo.toml index b34972a65b..3594053c8a 100644 --- a/packages/next/build/swc/Cargo.toml +++ b/packages/next/build/swc/Cargo.toml @@ -1,48 +1,10 @@ -[package] -edition = "2018" -name = "next-swc" -version = "0.0.0" +[workspace] -[lib] -crate-type = ["cdylib", "rlib"] - -[dependencies] -anyhow = "1.0" -backtrace = "0.3" -chrono = "0.4" -easy-error = "1.0.0" -either = "1" -fxhash = "0.2.1" -napi = {version = "1", features = ["serde-json"]} -napi-derive = "1" -once_cell = "1.8.0" -path-clean = "0.1" -pathdiff = "0.2.0" -regex = "1.5" -retain_mut = "0.1.3" -rustc-hash = "1.1.0" -serde = "1" -serde_json = "1" -styled_components = "0.2.0" -swc = "0.85.0" -swc_atoms = "0.2.7" -swc_bundler = { version = "0.82.0", features = ["concurrent"] } -swc_common = {version = "0.14.2", features = ["concurrent", "sourcemap"]} -swc_css = "0.31.0" -swc_ecma_loader = { version = "0.24.2", features = ["node", "lru"] } -swc_ecma_preset_env = "0.66.0" -swc_ecmascript = { version = "0.87.0", features = ["codegen", "minifier", "optimization", "parser", "react", "transforms", "typescript", "utils", "visit"] } -swc_node_base = "0.5.1" -swc_stylis = "0.28.0" -tracing = {version = "0.1.28", features = ["release_max_level_off"]} - -[build-dependencies] -napi-build = "1" - -[dev-dependencies] -swc_ecma_transforms_testing = "0.45.0" -testing = "0.15.1" -walkdir = "2.3.2" +members = [ + "crates/core", + "crates/napi", + "crates/wasm" +] [profile.release] -lto = true +lto = true \ No newline at end of file diff --git a/packages/next/build/swc/crates/core/Cargo.toml b/packages/next/build/swc/crates/core/Cargo.toml new file mode 100644 index 0000000000..0875186ae3 --- /dev/null +++ b/packages/next/build/swc/crates/core/Cargo.toml @@ -0,0 +1,34 @@ +[package] +edition = "2018" +name = "next-swc" +version = "0.0.0" + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +chrono = "0.4" +easy-error = "1.0.0" +either = "1" +fxhash = "0.2.1" +pathdiff = "0.2.0" +serde = "1" +serde_json = "1" +styled_components = "0.2.0" +swc = "0.85.0" +swc_atoms = "0.2.7" +swc_common = {version = "0.14.2", features = ["concurrent", "sourcemap"]} +swc_css = "0.31.0" +swc_ecma_loader = { version = "0.24.2", features = ["node", "lru"] } +swc_ecma_preset_env = "0.66.0" +swc_ecmascript = { version = "0.87.0", features = ["codegen", "minifier", "optimization", "parser", "react", "transforms", "typescript", "utils", "visit"] } +swc_node_base = "0.5.1" +swc_stylis = "0.28.0" +tracing = {version = "0.1.28", features = ["release_max_level_off"]} + +[dev-dependencies] +swc_ecma_transforms_testing = "0.45.0" +testing = "0.15.1" +walkdir = "2.3.2" + + diff --git a/packages/next/build/swc/src/amp_attributes.rs b/packages/next/build/swc/crates/core/src/amp_attributes.rs similarity index 100% rename from packages/next/build/swc/src/amp_attributes.rs rename to packages/next/build/swc/crates/core/src/amp_attributes.rs diff --git a/packages/next/build/swc/src/auto_cjs/mod.rs b/packages/next/build/swc/crates/core/src/auto_cjs/mod.rs similarity index 100% rename from packages/next/build/swc/src/auto_cjs/mod.rs rename to packages/next/build/swc/crates/core/src/auto_cjs/mod.rs diff --git a/packages/next/build/swc/src/hook_optimizer.rs b/packages/next/build/swc/crates/core/src/hook_optimizer.rs similarity index 100% rename from packages/next/build/swc/src/hook_optimizer.rs rename to packages/next/build/swc/crates/core/src/hook_optimizer.rs diff --git a/packages/next/build/swc/src/lib.rs b/packages/next/build/swc/crates/core/src/lib.rs similarity index 71% rename from packages/next/build/swc/src/lib.rs rename to packages/next/build/swc/crates/core/src/lib.rs index ba091950fb..01dfa65492 100644 --- a/packages/next/build/swc/src/lib.rs +++ b/packages/next/build/swc/crates/core/src/lib.rs @@ -29,22 +29,15 @@ DEALINGS IN THE SOFTWARE. #![recursion_limit = "2048"] //#![deny(clippy::all)] -#[macro_use] -extern crate napi_derive; -/// Explicit extern crate to use allocator. -extern crate swc_node_base; - use auto_cjs::contains_cjs; -use backtrace::Backtrace; use either::Either; -use napi::{CallContext, Env, JsObject, JsUndefined}; use serde::Deserialize; use std::cell::RefCell; use std::rc::Rc; -use std::{env, panic::set_hook, path::PathBuf, sync::Arc}; -use swc::{config::ModuleConfig, Compiler, TransformOutput}; +use std::{path::PathBuf, sync::Arc}; +use swc::config::ModuleConfig; use swc_common::SourceFile; -use swc_common::{self, chain, pass::Optional, sync::Lazy, FilePathMapping, SourceMap}; +use swc_common::{self, chain, pass::Optional}; use swc_ecmascript::ast::EsVersion; use swc_ecmascript::transforms::pass::noop; use swc_ecmascript::{ @@ -54,17 +47,13 @@ use swc_ecmascript::{ pub mod amp_attributes; mod auto_cjs; -mod bundle; pub mod hook_optimizer; -pub mod minify; pub mod next_dynamic; pub mod next_ssg; pub mod page_config; pub mod remove_console; pub mod styled_jsx; mod top_level_binding_collector; -mod transform; -mod util; #[derive(Clone, Debug, Deserialize)] #[serde(rename_all = "camelCase")] @@ -127,46 +116,6 @@ pub fn custom_before_pass(file: Arc, opts: &TransformOptions) -> imp ) } -static COMPILER: Lazy> = Lazy::new(|| { - let cm = Arc::new(SourceMap::new(FilePathMapping::empty())); - - Arc::new(Compiler::new(cm.clone())) -}); - -#[module_exports] -fn init(mut exports: JsObject) -> napi::Result<()> { - if cfg!(debug_assertions) || env::var("SWC_DEBUG").unwrap_or_default() == "1" { - set_hook(Box::new(|panic_info| { - let backtrace = Backtrace::new(); - println!("Panic: {:?}\nBacktrace: {:?}", panic_info, backtrace); - })); - } - - exports.create_named_method("bundle", bundle::bundle)?; - - exports.create_named_method("transform", transform::transform)?; - exports.create_named_method("transformSync", transform::transform_sync)?; - - exports.create_named_method("minify", minify::minify)?; - exports.create_named_method("minifySync", minify::minify_sync)?; - - Ok(()) -} - -fn get_compiler(_ctx: &CallContext) -> Arc { - COMPILER.clone() -} - -#[js_function] -fn construct_compiler(ctx: CallContext) -> napi::Result { - // TODO: Assign swc::Compiler - ctx.env.get_undefined() -} - -pub fn complete_output(env: &Env, output: TransformOutput) -> napi::Result { - env.to_js_value(&output)?.coerce_to_object() -} - impl TransformOptions { pub fn patch(mut self, fm: &SourceFile) -> Self { self.swc.swcrc = false; @@ -189,5 +138,3 @@ impl TransformOptions { self } } - -pub type ArcCompiler = Arc; diff --git a/packages/next/build/swc/src/next_dynamic.rs b/packages/next/build/swc/crates/core/src/next_dynamic.rs similarity index 100% rename from packages/next/build/swc/src/next_dynamic.rs rename to packages/next/build/swc/crates/core/src/next_dynamic.rs diff --git a/packages/next/build/swc/src/next_ssg.rs b/packages/next/build/swc/crates/core/src/next_ssg.rs similarity index 100% rename from packages/next/build/swc/src/next_ssg.rs rename to packages/next/build/swc/crates/core/src/next_ssg.rs diff --git a/packages/next/build/swc/src/page_config.rs b/packages/next/build/swc/crates/core/src/page_config.rs similarity index 100% rename from packages/next/build/swc/src/page_config.rs rename to packages/next/build/swc/crates/core/src/page_config.rs diff --git a/packages/next/build/swc/src/remove_console.rs b/packages/next/build/swc/crates/core/src/remove_console.rs similarity index 100% rename from packages/next/build/swc/src/remove_console.rs rename to packages/next/build/swc/crates/core/src/remove_console.rs diff --git a/packages/next/build/swc/src/styled_jsx/mod.rs b/packages/next/build/swc/crates/core/src/styled_jsx/mod.rs similarity index 100% rename from packages/next/build/swc/src/styled_jsx/mod.rs rename to packages/next/build/swc/crates/core/src/styled_jsx/mod.rs diff --git a/packages/next/build/swc/src/styled_jsx/transform_css.rs b/packages/next/build/swc/crates/core/src/styled_jsx/transform_css.rs similarity index 100% rename from packages/next/build/swc/src/styled_jsx/transform_css.rs rename to packages/next/build/swc/crates/core/src/styled_jsx/transform_css.rs diff --git a/packages/next/build/swc/src/styled_jsx/utils.rs b/packages/next/build/swc/crates/core/src/styled_jsx/utils.rs similarity index 100% rename from packages/next/build/swc/src/styled_jsx/utils.rs rename to packages/next/build/swc/crates/core/src/styled_jsx/utils.rs diff --git a/packages/next/build/swc/src/top_level_binding_collector.rs b/packages/next/build/swc/crates/core/src/top_level_binding_collector.rs similarity index 100% rename from packages/next/build/swc/src/top_level_binding_collector.rs rename to packages/next/build/swc/crates/core/src/top_level_binding_collector.rs diff --git a/packages/next/build/swc/tests/fixture.rs b/packages/next/build/swc/crates/core/tests/fixture.rs similarity index 100% rename from packages/next/build/swc/tests/fixture.rs rename to packages/next/build/swc/crates/core/tests/fixture.rs diff --git a/packages/next/build/swc/tests/fixture/amp/amp-classname/input.js b/packages/next/build/swc/crates/core/tests/fixture/amp/amp-classname/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/amp/amp-classname/input.js rename to packages/next/build/swc/crates/core/tests/fixture/amp/amp-classname/input.js diff --git a/packages/next/build/swc/tests/fixture/amp/amp-classname/output.js b/packages/next/build/swc/crates/core/tests/fixture/amp/amp-classname/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/amp/amp-classname/output.js rename to packages/next/build/swc/crates/core/tests/fixture/amp/amp-classname/output.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/duplicated-imports/input.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/duplicated-imports/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/duplicated-imports/input.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/duplicated-imports/input.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/duplicated-imports/output.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/duplicated-imports/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/duplicated-imports/output.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/duplicated-imports/output.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/member-with-same-name/input.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/member-with-same-name/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/member-with-same-name/input.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/member-with-same-name/input.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/member-with-same-name/output.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/member-with-same-name/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/member-with-same-name/output.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/member-with-same-name/output.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/no-options/input.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/no-options/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/no-options/input.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/no-options/input.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/no-options/output.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/no-options/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/no-options/output.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/no-options/output.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/with-options/input.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/with-options/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/with-options/input.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/with-options/input.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/with-options/output.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/with-options/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/with-options/output.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/with-options/output.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/wrapped-import/input.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/wrapped-import/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/wrapped-import/input.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/wrapped-import/input.js diff --git a/packages/next/build/swc/tests/fixture/next-dynamic/wrapped-import/output.js b/packages/next/build/swc/crates/core/tests/fixture/next-dynamic/wrapped-import/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/next-dynamic/wrapped-import/output.js rename to packages/next/build/swc/crates/core/tests/fixture/next-dynamic/wrapped-import/output.js diff --git a/packages/next/build/swc/tests/fixture/page-config/amp-hybrid/input.js b/packages/next/build/swc/crates/core/tests/fixture/page-config/amp-hybrid/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/page-config/amp-hybrid/input.js rename to packages/next/build/swc/crates/core/tests/fixture/page-config/amp-hybrid/input.js diff --git a/packages/next/build/swc/tests/fixture/page-config/amp-hybrid/output.js b/packages/next/build/swc/crates/core/tests/fixture/page-config/amp-hybrid/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/page-config/amp-hybrid/output.js rename to packages/next/build/swc/crates/core/tests/fixture/page-config/amp-hybrid/output.js diff --git a/packages/next/build/swc/tests/fixture/page-config/amp-true/input.js b/packages/next/build/swc/crates/core/tests/fixture/page-config/amp-true/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/page-config/amp-true/input.js rename to packages/next/build/swc/crates/core/tests/fixture/page-config/amp-true/input.js diff --git a/packages/next/build/swc/tests/fixture/page-config/amp-true/output.js b/packages/next/build/swc/crates/core/tests/fixture/page-config/amp-true/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/page-config/amp-true/output.js rename to packages/next/build/swc/crates/core/tests/fixture/page-config/amp-true/output.js diff --git a/packages/next/build/swc/tests/fixture/remove-console/all/simple/input.js b/packages/next/build/swc/crates/core/tests/fixture/remove-console/all/simple/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/remove-console/all/simple/input.js rename to packages/next/build/swc/crates/core/tests/fixture/remove-console/all/simple/input.js diff --git a/packages/next/build/swc/tests/fixture/remove-console/all/simple/output.js b/packages/next/build/swc/crates/core/tests/fixture/remove-console/all/simple/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/remove-console/all/simple/output.js rename to packages/next/build/swc/crates/core/tests/fixture/remove-console/all/simple/output.js diff --git a/packages/next/build/swc/tests/fixture/remove-console/all/toplevel-override/input.js b/packages/next/build/swc/crates/core/tests/fixture/remove-console/all/toplevel-override/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/remove-console/all/toplevel-override/input.js rename to packages/next/build/swc/crates/core/tests/fixture/remove-console/all/toplevel-override/input.js diff --git a/packages/next/build/swc/tests/fixture/remove-console/all/toplevel-override/output.js b/packages/next/build/swc/crates/core/tests/fixture/remove-console/all/toplevel-override/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/remove-console/all/toplevel-override/output.js rename to packages/next/build/swc/crates/core/tests/fixture/remove-console/all/toplevel-override/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/destructuring-assignment-array/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getServerSideProps/query-usage/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/query-usage/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getServerSideProps/query-usage/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/query-usage/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getServerSideProps/query-usage/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/query-usage/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getServerSideProps/query-usage/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getServerSideProps/query-usage/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-array/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/destructuring-assignment-object/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/issue-30091/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/issue-30091/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/issue-30091/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/issue-30091/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/issue-30091/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/issue-30091/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/issue-30091/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/issue-30091/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/no-props/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/no-props/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/no-props/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/no-props/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/no-props/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/no-props/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/no-props/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/no-props/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-crash-for-class-declarations/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-mix-up-bindings/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-function-declarations/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-not-remove-extra-named-export-variable-declarations/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-combined-named-export-specifiers/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-extra-named-export-speicifers/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations-async/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-function-declarations/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations-async/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-named-export-variable-declarations/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations-dependents-variables-functions-imports/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-function-declarations/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations-safe/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-re-exported-variable-declarations/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-remove-separate-named-export-specifiers/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-babel-style-memoized-function/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports-2/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-class-exports/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-class-exports/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-a-class/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-export-named-as-default-with-other-specifiers/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-full-re-export/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-full-re-export/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-full-re-export/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-full-re-export/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-full-re-export/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-full-re-export/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-full-re-export/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-full-re-export/output.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/input.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/input.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/input.js diff --git a/packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/output.js b/packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/output.js rename to packages/next/build/swc/crates/core/tests/fixture/ssg/getStaticProps/should-support-named-export-as-default/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/absent/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/absent/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/absent/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/absent/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/absent/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/absent/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/absent/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/absent/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-classname-rewriting/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-modes/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-modes/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-modes/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-modes/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-modes/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-modes/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/attribute-generation-modes/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/attribute-generation-modes/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/class/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/class/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/class/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/class/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/class/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/class/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/class/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/class/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/comments/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/comments/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/comments/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/comments/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/comments/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/comments/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/comments/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/comments/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/component-attribute/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/component-attribute/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/component-attribute/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/component-attribute/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/component-attribute/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/component-attribute/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/component-attribute/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/component-attribute/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/conflicts/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/conflicts/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/conflicts/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/conflicts/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/conflicts/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/conflicts/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/conflicts/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/conflicts/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/css-selector-after-pseudo/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-selector-after-pseudo/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/css-selector-after-pseudo/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-selector-after-pseudo/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/css-selector-after-pseudo/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-selector-after-pseudo/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/css-selector-after-pseudo/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-selector-after-pseudo/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/css-tag-same-file/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-tag-same-file/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/css-tag-same-file/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-tag-same-file/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/css-tag-same-file/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-tag-same-file/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/css-tag-same-file/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/css-tag-same-file/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/different-jsx-ids/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/different-jsx-ids/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/different-jsx-ids/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/different-jsx-ids/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/different-jsx-ids/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/different-jsx-ids/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/different-jsx-ids/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/different-jsx-ids/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-class/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-class/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-class/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-class/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-class/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-class/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-class/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-class/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-external/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-external/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-external/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-external/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-external/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-external/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element-external/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element-external/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-element/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-element/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-this-in-arrow/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-this-in-arrow/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-this-in-arrow/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-this-in-arrow/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/dynamic-this-in-arrow/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-this-in-arrow/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/dynamic-this-in-arrow/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/dynamic-this-in-arrow/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/exported-jsx-style/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-jsx-style/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/exported-jsx-style/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-jsx-style/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/exported-jsx-style/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-jsx-style/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/exported-jsx-style/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-jsx-style/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/exported-non-jsx-style/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-non-jsx-style/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/exported-non-jsx-style/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-non-jsx-style/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/exported-non-jsx-style/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-non-jsx-style/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/exported-non-jsx-style/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/exported-non-jsx-style/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/expressions/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/expressions/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/expressions/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/expressions/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/expressions/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/expressions/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/expressions/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/expressions/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-nested-scope/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-nested-scope/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-nested-scope/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-nested-scope/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-nested-scope/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-nested-scope/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-nested-scope/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-nested-scope/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-global/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-global/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-global/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-global/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-global/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-global/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-global/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-global/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-multi-line/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-multi-line/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-multi-line/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-multi-line/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-multi-line/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-multi-line/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet-multi-line/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet-multi-line/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/external-stylesheet/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/external-stylesheet/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/fragment/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/fragment/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/fragment/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/fragment/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/fragment/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/fragment/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/fragment/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/fragment/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/global-child-selector/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-child-selector/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/global-child-selector/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-child-selector/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/global-child-selector/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-child-selector/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/global-child-selector/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-child-selector/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/global-redundant/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-redundant/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/global-redundant/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-redundant/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/global-redundant/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-redundant/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/global-redundant/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global-redundant/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/global/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/global/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/global/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/global/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/global/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/issue-30480/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30480/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/issue-30480/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30480/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/issue-30480/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30480/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/issue-30480/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30480/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/issue-30570/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30570/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/issue-30570/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30570/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/issue-30570/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30570/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/issue-30570/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/issue-30570/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/mixed-global-scoped/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/mixed-global-scoped/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/mixed-global-scoped/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/mixed-global-scoped/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/mixed-global-scoped/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/mixed-global-scoped/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/mixed-global-scoped/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/mixed-global-scoped/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/multiple-jsx/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/multiple-jsx/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/multiple-jsx/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/multiple-jsx/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/multiple-jsx/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/multiple-jsx/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/multiple-jsx/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/multiple-jsx/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/nested-style-tags/index.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/nested-style-tags/index.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/nested-style-tags/index.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/nested-style-tags/index.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/nested-style-tags/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/nested-style-tags/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/nested-style-tags/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/nested-style-tags/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/non-styled-jsx-style/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/non-styled-jsx-style/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/non-styled-jsx-style/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/non-styled-jsx-style/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/non-styled-jsx-style/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/non-styled-jsx-style/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/non-styled-jsx-style/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/non-styled-jsx-style/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/not-styled-jsx-tagged-templates/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/number-after-placeholder/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/number-after-placeholder/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/number-after-placeholder/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/number-after-placeholder/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/number-after-placeholder/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/number-after-placeholder/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/number-after-placeholder/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/number-after-placeholder/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/one-off-global-selectors/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/one-off-global-selectors/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/one-off-global-selectors/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/one-off-global-selectors/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/one-off-global-selectors/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/one-off-global-selectors/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/one-off-global-selectors/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/one-off-global-selectors/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/source-maps/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/source-maps/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/source-maps/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/source-maps/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/stateless/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/stateless/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/stateless/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/stateless/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/stateless/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/stateless/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/stateless/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/stateless/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/styles-external-invalid/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles-external-invalid/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/styles-external-invalid/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles-external-invalid/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/styles-external-invalid2/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles-external-invalid2/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/styles-external-invalid2/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles-external-invalid2/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/styles/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/styles/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/styles/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/styles/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/styles2/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles2/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/styles2/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/styles2/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/too-many/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/too-many/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/too-many/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/too-many/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/too-many/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/too-many/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/too-many/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/too-many/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-1/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-1/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-1/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-1/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-1/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-1/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-1/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-1/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-2/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-2/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-2/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-2/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-2/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-2/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-escape-2/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-escape-2/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-1-as-property/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-2-as-part-of-value/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-3-as-value/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-4-as-part-of-value-in-multiple/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/tpl-placeholder-5-values-of-multiple-properties/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/transform-css/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/transform-css/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/transform-css/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/transform-css/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/transform-css/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/transform-css/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/transform-css/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/transform-css/output.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/whitespace/input.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/whitespace/input.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/whitespace/input.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/whitespace/input.js diff --git a/packages/next/build/swc/tests/fixture/styled-jsx/whitespace/output.js b/packages/next/build/swc/crates/core/tests/fixture/styled-jsx/whitespace/output.js similarity index 100% rename from packages/next/build/swc/tests/fixture/styled-jsx/whitespace/output.js rename to packages/next/build/swc/crates/core/tests/fixture/styled-jsx/whitespace/output.js diff --git a/packages/next/build/swc/tests/full.rs b/packages/next/build/swc/crates/core/tests/full.rs similarity index 100% rename from packages/next/build/swc/tests/full.rs rename to packages/next/build/swc/crates/core/tests/full.rs diff --git a/packages/next/build/swc/tests/full/auto-cjs/1/input.js b/packages/next/build/swc/crates/core/tests/full/auto-cjs/1/input.js similarity index 100% rename from packages/next/build/swc/tests/full/auto-cjs/1/input.js rename to packages/next/build/swc/crates/core/tests/full/auto-cjs/1/input.js diff --git a/packages/next/build/swc/tests/full/auto-cjs/1/output.js b/packages/next/build/swc/crates/core/tests/full/auto-cjs/1/output.js similarity index 100% rename from packages/next/build/swc/tests/full/auto-cjs/1/output.js rename to packages/next/build/swc/crates/core/tests/full/auto-cjs/1/output.js diff --git a/packages/next/build/swc/tests/full/example/input.js b/packages/next/build/swc/crates/core/tests/full/example/input.js similarity index 100% rename from packages/next/build/swc/tests/full/example/input.js rename to packages/next/build/swc/crates/core/tests/full/example/input.js diff --git a/packages/next/build/swc/tests/full/example/output.js b/packages/next/build/swc/crates/core/tests/full/example/output.js similarity index 100% rename from packages/next/build/swc/tests/full/example/output.js rename to packages/next/build/swc/crates/core/tests/full/example/output.js diff --git a/packages/next/build/swc/tests/loader/css-hygiene-1/input.js b/packages/next/build/swc/crates/core/tests/loader/css-hygiene-1/input.js similarity index 100% rename from packages/next/build/swc/tests/loader/css-hygiene-1/input.js rename to packages/next/build/swc/crates/core/tests/loader/css-hygiene-1/input.js diff --git a/packages/next/build/swc/tests/loader/css-hygiene-1/output.js b/packages/next/build/swc/crates/core/tests/loader/css-hygiene-1/output.js similarity index 100% rename from packages/next/build/swc/tests/loader/css-hygiene-1/output.js rename to packages/next/build/swc/crates/core/tests/loader/css-hygiene-1/output.js diff --git a/packages/next/build/swc/tests/loader/example/input.js b/packages/next/build/swc/crates/core/tests/loader/example/input.js similarity index 100% rename from packages/next/build/swc/tests/loader/example/input.js rename to packages/next/build/swc/crates/core/tests/loader/example/input.js diff --git a/packages/next/build/swc/tests/loader/example/output.js b/packages/next/build/swc/crates/core/tests/loader/example/output.js similarity index 100% rename from packages/next/build/swc/tests/loader/example/output.js rename to packages/next/build/swc/crates/core/tests/loader/example/output.js diff --git a/packages/next/build/swc/tests/loader/front/attr-1/input.js b/packages/next/build/swc/crates/core/tests/loader/front/attr-1/input.js similarity index 100% rename from packages/next/build/swc/tests/loader/front/attr-1/input.js rename to packages/next/build/swc/crates/core/tests/loader/front/attr-1/input.js diff --git a/packages/next/build/swc/tests/loader/front/attr-1/output.js b/packages/next/build/swc/crates/core/tests/loader/front/attr-1/output.js similarity index 100% rename from packages/next/build/swc/tests/loader/front/attr-1/output.js rename to packages/next/build/swc/crates/core/tests/loader/front/attr-1/output.js diff --git a/packages/next/build/swc/tests/loader/styled-components/1/input.js b/packages/next/build/swc/crates/core/tests/loader/styled-components/1/input.js similarity index 100% rename from packages/next/build/swc/tests/loader/styled-components/1/input.js rename to packages/next/build/swc/crates/core/tests/loader/styled-components/1/input.js diff --git a/packages/next/build/swc/tests/loader/styled-components/1/output.js b/packages/next/build/swc/crates/core/tests/loader/styled-components/1/output.js similarity index 100% rename from packages/next/build/swc/tests/loader/styled-components/1/output.js rename to packages/next/build/swc/crates/core/tests/loader/styled-components/1/output.js diff --git a/packages/next/build/swc/crates/napi/Cargo.toml b/packages/next/build/swc/crates/napi/Cargo.toml new file mode 100644 index 0000000000..b75cd08271 --- /dev/null +++ b/packages/next/build/swc/crates/napi/Cargo.toml @@ -0,0 +1,28 @@ +[package] +edition = "2018" +name = "next-swc-napi" +version = "0.0.0" + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +anyhow = "1.0" +backtrace = "0.3" +fxhash = "0.2.1" +napi = {version = "1", features = ["serde-json"]} +napi-derive = "1" +once_cell = "1.8.0" +serde = "1" +serde_json = "1" +next-swc = { version = "0.0.0", path = "../core" } +swc = "0.85.0" +swc_atoms = "0.2.7" +swc_bundler = { version = "0.82.0", features = ["concurrent"] } +swc_common = {version = "0.14.2", features = ["concurrent", "sourcemap"]} +swc_ecma_loader = { version = "0.24.2", features = ["node", "lru"] } +swc_ecmascript = { version = "0.87.0", features = ["codegen", "minifier", "optimization", "parser", "react", "transforms", "typescript", "utils", "visit"] } +swc_node_base = "0.5.1" + +[build-dependencies] +napi-build = "1" diff --git a/packages/next/build/swc/build.rs b/packages/next/build/swc/crates/napi/build.rs similarity index 100% rename from packages/next/build/swc/build.rs rename to packages/next/build/swc/crates/napi/build.rs diff --git a/packages/next/build/swc/crates/napi/npm/android-arm64/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/android-arm64/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/android-arm64/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/crates/napi/npm/darwin-arm64/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/darwin-arm64/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/darwin-arm64/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/crates/napi/npm/linux-arm-gnueabihf/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/linux-arm-gnueabihf/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/linux-arm-gnueabihf/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/crates/napi/npm/linux-arm64-gnu/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/linux-arm64-gnu/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/linux-arm64-gnu/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/crates/napi/npm/linux-arm64-musl/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/linux-arm64-musl/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/linux-arm64-musl/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/crates/napi/npm/linux-x64-musl/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/linux-x64-musl/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/linux-x64-musl/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/crates/napi/npm/win32-arm64-msvc/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/win32-arm64-msvc/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/win32-arm64-msvc/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/crates/napi/npm/win32-ia32-msvc/next-swc.darwin-arm64.node b/packages/next/build/swc/crates/napi/npm/win32-ia32-msvc/next-swc.darwin-arm64.node new file mode 100755 index 0000000000..b9e269e52d Binary files /dev/null and b/packages/next/build/swc/crates/napi/npm/win32-ia32-msvc/next-swc.darwin-arm64.node differ diff --git a/packages/next/build/swc/src/bundle/mod.rs b/packages/next/build/swc/crates/napi/src/bundle/mod.rs similarity index 100% rename from packages/next/build/swc/src/bundle/mod.rs rename to packages/next/build/swc/crates/napi/src/bundle/mod.rs diff --git a/packages/next/build/swc/crates/napi/src/lib.rs b/packages/next/build/swc/crates/napi/src/lib.rs new file mode 100644 index 0000000000..4d097014d1 --- /dev/null +++ b/packages/next/build/swc/crates/napi/src/lib.rs @@ -0,0 +1,89 @@ +/* +Copyright (c) 2017 The swc Project Developers + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + +#![recursion_limit = "2048"] +//#![deny(clippy::all)] + +#[macro_use] +extern crate napi_derive; +/// Explicit extern crate to use allocator. +extern crate swc_node_base; + +use backtrace::Backtrace; +use napi::{CallContext, Env, JsObject, JsUndefined}; +use std::{env, panic::set_hook, sync::Arc}; +use swc::{ Compiler, TransformOutput}; +use swc_common::{self, sync::Lazy, FilePathMapping, SourceMap}; + +mod bundle; +mod minify; +mod transform; +mod util; + + +static COMPILER: Lazy> = Lazy::new(|| { + let cm = Arc::new(SourceMap::new(FilePathMapping::empty())); + + Arc::new(Compiler::new(cm.clone())) +}); + +#[module_exports] +fn init(mut exports: JsObject) -> napi::Result<()> { + if cfg!(debug_assertions) || env::var("SWC_DEBUG").unwrap_or_default() == "1" { + set_hook(Box::new(|panic_info| { + let backtrace = Backtrace::new(); + println!("Panic: {:?}\nBacktrace: {:?}", panic_info, backtrace); + })); + } + + exports.create_named_method("bundle", bundle::bundle)?; + + exports.create_named_method("transform", transform::transform)?; + exports.create_named_method("transformSync", transform::transform_sync)?; + + exports.create_named_method("minify", minify::minify)?; + exports.create_named_method("minifySync", minify::minify_sync)?; + + Ok(()) +} + +fn get_compiler(_ctx: &CallContext) -> Arc { + COMPILER.clone() +} + +#[js_function] +fn construct_compiler(ctx: CallContext) -> napi::Result { + // TODO: Assign swc::Compiler + ctx.env.get_undefined() +} + +pub fn complete_output(env: &Env, output: TransformOutput) -> napi::Result { + env.to_js_value(&output)?.coerce_to_object() +} + +pub type ArcCompiler = Arc; diff --git a/packages/next/build/swc/src/minify.rs b/packages/next/build/swc/crates/napi/src/minify.rs similarity index 100% rename from packages/next/build/swc/src/minify.rs rename to packages/next/build/swc/crates/napi/src/minify.rs diff --git a/packages/next/build/swc/src/transform.rs b/packages/next/build/swc/crates/napi/src/transform.rs similarity index 98% rename from packages/next/build/swc/src/transform.rs rename to packages/next/build/swc/crates/napi/src/transform.rs index cb0fc79328..a4a2bd3a71 100644 --- a/packages/next/build/swc/src/transform.rs +++ b/packages/next/build/swc/crates/napi/src/transform.rs @@ -27,10 +27,10 @@ DEALINGS IN THE SOFTWARE. */ use crate::{ - complete_output, custom_before_pass, get_compiler, + complete_output, get_compiler, util::{deserialize_json, CtxtExt, MapErr}, - TransformOptions, }; +use next_swc::{custom_before_pass, TransformOptions}; use anyhow::{anyhow, Context as _, Error}; use napi::{CallContext, Env, JsBoolean, JsBuffer, JsObject, JsString, JsUnknown, Status, Task}; use std::{ diff --git a/packages/next/build/swc/src/util.rs b/packages/next/build/swc/crates/napi/src/util.rs similarity index 100% rename from packages/next/build/swc/src/util.rs rename to packages/next/build/swc/crates/napi/src/util.rs diff --git a/packages/next/build/swc/crates/wasm/Cargo.toml b/packages/next/build/swc/crates/wasm/Cargo.toml new file mode 100644 index 0000000000..6007e8f32e --- /dev/null +++ b/packages/next/build/swc/crates/wasm/Cargo.toml @@ -0,0 +1,24 @@ +[package] +edition = "2018" +name = "wasm" +publish = false +version = "0.0.0" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +anyhow = "1.0.42" +console_error_panic_hook = "0.1.6" +once_cell = "1.3.1" +parking_lot_core = "=0.8.0" +path-clean = "0.1" +serde = {version = "1", features = ["derive"]} +serde_json = "1" +next-swc = { version = "0.0.0", path = "../core" } +swc = "0.85.0" +swc_common = {version = "0.14.2", features = ["concurrent", "sourcemap"]} +swc_ecmascript = { version = "0.87.0", features = ["codegen", "minifier", "optimization", "parser", "react", "transforms", "typescript", "utils", "visit"] } +tracing = {version = "0.1.28", features = ["release_max_level_off"]} +wasm-bindgen = {version = "0.2", features = ["serde-serialize"]} +wasm-bindgen-futures = "0.4.8" diff --git a/packages/next/build/swc/crates/wasm/src/lib.rs b/packages/next/build/swc/crates/wasm/src/lib.rs new file mode 100644 index 0000000000..c1359a27a9 --- /dev/null +++ b/packages/next/build/swc/crates/wasm/src/lib.rs @@ -0,0 +1,69 @@ +use anyhow::{Context, Error}; +use next_swc::{custom_before_pass, TransformOptions}; +use once_cell::sync::Lazy; +use std::sync::Arc; +use swc::{config::JsMinifyOptions, try_with_handler, Compiler}; +use swc_common::{FileName, FilePathMapping, SourceMap}; +use swc_ecmascript::transforms::pass::noop; +use wasm_bindgen::prelude::*; + +fn convert_err(err: Error) -> JsValue { + format!("{:?}", err).into() +} + +#[wasm_bindgen(js_name = "minifySync")] +pub fn minify_sync(s: &str, opts: JsValue) -> Result { + console_error_panic_hook::set_once(); + + let c = compiler(); + + try_with_handler(c.cm.clone(), false, |handler| { + let opts: JsMinifyOptions = opts.into_serde().context("failed to parse options")?; + + let fm = c.cm.new_source_file(FileName::Anon, s.into()); + let program = c + .minify(fm, &handler, &opts) + .context("failed to minify file")?; + + Ok(JsValue::from_serde(&program).context("failed to serialize json")?) + }) + .map_err(convert_err) +} + +#[wasm_bindgen(js_name = "transformSync")] +pub fn transform_sync(s: &str, opts: JsValue) -> Result { + console_error_panic_hook::set_once(); + + let c = compiler(); + + try_with_handler(c.cm.clone(), false, |handler| { + let opts: TransformOptions = opts.into_serde().context("failed to parse options")?; + + let fm = c.cm.new_source_file( + if opts.swc.filename == "" { + FileName::Anon + } else { + FileName::Real(opts.swc.filename.clone().into()) + }, + s.into(), + ); + let before_pass = custom_before_pass(fm.clone(), &opts); + let out = c + .process_js_with_custom_pass(fm, None, &handler, &opts.swc, |_| before_pass, |_| noop()) + .context("failed to process js file")?; + + Ok(JsValue::from_serde(&out).context("failed to serialize json")?) + }) + .map_err(convert_err) +} + +/// Get global sourcemap +fn compiler() -> Arc { + static C: Lazy> = Lazy::new(|| { + let cm = Arc::new(SourceMap::new(FilePathMapping::empty())); + + Arc::new(Compiler::new(cm)) + }); + + C.clone() +} diff --git a/packages/next/build/swc/index.js b/packages/next/build/swc/index.js index 5e33950268..1a1e7d8d93 100644 --- a/packages/next/build/swc/index.js +++ b/packages/next/build/swc/index.js @@ -7,36 +7,51 @@ const Log = require('../output/log') const ArchName = arch() const PlatformName = platform() -let bindings -let loadError -const triples = platformArchTriples[PlatformName][ArchName] -for (const triple of triples) { - const localFilePath = path.join( - __dirname, - '../../../native', - `next-swc.${triple.platformArchABI}.node` - ) - if (fs.existsSync(localFilePath)) { - Log.info('Using locally built binary of next-swc') +let bindings = loadBindings() +let isWasm = false + +function loadBindings() { + let loadError + + // Try to load wasm bindings + for (let specifier of ['@next/swc-wasm-web', '@next/swc-wasm-nodejs']) { try { - bindings = require(localFilePath) + bindings = require(specifier) + isWasm = true + return bindings } catch (e) { - loadError = e - } - break - } - - try { - bindings = require(`@next/swc-${triple.platformArchABI}`) - break - } catch (e) { - if (e?.code !== 'MODULE_NOT_FOUND') { - loadError = e + if (e?.code !== 'MODULE_NOT_FOUND') { + loadError = e + } + } + } + + // Try to load native bindings + const triples = platformArchTriples[PlatformName][ArchName] + for (const triple of triples) { + const localFilePath = path.join( + __dirname, + '../../../native', + `next-swc.${triple.platformArchABI}.node` + ) + if (fs.existsSync(localFilePath)) { + Log.info('Using locally built binary of next-swc') + try { + return require(localFilePath) + } catch (e) { + loadError = e + } + } + + try { + return require(`@next/swc-${triple.platformArchABI}`) + } catch (e) { + if (e?.code !== 'MODULE_NOT_FOUND') { + loadError = e + } } } -} -if (!bindings) { if (loadError) { console.error(loadError) } @@ -45,8 +60,6 @@ if (!bindings) { `Failed to load SWC binary, see more info here: https://nextjs.org/docs/messages/failed-loading-swc` ) process.exit(1) -} else { - loadError = null } async function transform(src, options) { @@ -57,11 +70,12 @@ async function transform(src, options) { options.jsc.parser.syntax = options.jsc.parser.syntax ?? 'ecmascript' } - return bindings.transform( + const result = bindings.transform( isModule ? JSON.stringify(src) : src, isModule, toBuffer(options) ) + return isWasm ? Promise.resolve(result) : result } function transformSync(src, options) { @@ -84,7 +98,8 @@ function toBuffer(t) { } export async function minify(src, opts) { - return bindings.minify(toBuffer(src), toBuffer(opts ?? {})) + const result = bindings.minify(toBuffer(src), toBuffer(opts ?? {})) + return isWasm ? Promise.resolve(result) : result } export function minifySync(src, opts) { @@ -92,6 +107,10 @@ export function minifySync(src, opts) { } export async function bundle(options) { + if (isWasm) { + Log.error(`SWC bundle() method is not supported in wasm environments yet.`) + process.exit(1) + } return bindings.bundle(toBuffer(options)) } diff --git a/packages/next/build/swc/npm/.gitignore b/packages/next/build/swc/npm/.gitignore deleted file mode 100644 index b193075caa..0000000000 --- a/packages/next/build/swc/npm/.gitignore +++ /dev/null @@ -1 +0,0 @@ -next-swc.*.node \ No newline at end of file diff --git a/packages/next/build/swc/npm/android-arm64/README.md b/packages/next/build/swc/npm/android-arm64/README.md deleted file mode 100644 index 4b20457835..0000000000 --- a/packages/next/build/swc/npm/android-arm64/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-android-arm64` - -This is the **android-arm64** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/android-arm64/package.json b/packages/next/build/swc/npm/android-arm64/package.json deleted file mode 100644 index e251bb0d78..0000000000 --- a/packages/next/build/swc/npm/android-arm64/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-android-arm64", - "version": "0.0.0", - "os": [ - "android" - ], - "cpu": [ - "arm64" - ], - "main": "next-swc.android-arm64.node", - "files": [ - "next-swc.android-arm64.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/darwin-arm64/README.md b/packages/next/build/swc/npm/darwin-arm64/README.md deleted file mode 100644 index 10a0ca93e0..0000000000 --- a/packages/next/build/swc/npm/darwin-arm64/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-darwin-arm64` - -This is the **aarch64-apple-darwin** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/darwin-arm64/package.json b/packages/next/build/swc/npm/darwin-arm64/package.json deleted file mode 100644 index afdf49e474..0000000000 --- a/packages/next/build/swc/npm/darwin-arm64/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-darwin-arm64", - "version": "0.0.0", - "os": [ - "darwin" - ], - "cpu": [ - "arm64" - ], - "main": "next-swc.darwin-arm64.node", - "files": [ - "next-swc.darwin-arm64.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/darwin-x64/README.md b/packages/next/build/swc/npm/darwin-x64/README.md deleted file mode 100644 index a0d630ddda..0000000000 --- a/packages/next/build/swc/npm/darwin-x64/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-darwin-x64` - -This is the **x86_64-apple-darwin** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/darwin-x64/package.json b/packages/next/build/swc/npm/darwin-x64/package.json deleted file mode 100644 index fea96c76f2..0000000000 --- a/packages/next/build/swc/npm/darwin-x64/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-darwin-x64", - "version": "0.0.0", - "os": [ - "darwin" - ], - "cpu": [ - "x64" - ], - "main": "next-swc.darwin-x64.node", - "files": [ - "next-swc.darwin-x64.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/linux-arm-gnueabihf/README.md b/packages/next/build/swc/npm/linux-arm-gnueabihf/README.md deleted file mode 100644 index 499a9b7984..0000000000 --- a/packages/next/build/swc/npm/linux-arm-gnueabihf/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-linux-arm-gnueabihf` - -This is the **linux-arm-gnueabihf** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/linux-arm-gnueabihf/package.json b/packages/next/build/swc/npm/linux-arm-gnueabihf/package.json deleted file mode 100644 index 3049a54a6d..0000000000 --- a/packages/next/build/swc/npm/linux-arm-gnueabihf/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-linux-arm-gnueabihf", - "version": "0.0.0", - "os": [ - "linux" - ], - "cpu": [ - "arm" - ], - "main": "next-swc.linux-arm-gnueabihf.node", - "files": [ - "next-swc.linux-arm-gnueabihf.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/linux-arm64-gnu/README.md b/packages/next/build/swc/npm/linux-arm64-gnu/README.md deleted file mode 100644 index 240f5f63cb..0000000000 --- a/packages/next/build/swc/npm/linux-arm64-gnu/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-linux-arm64-gnu` - -This is the **linux-arm64-gnu** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/linux-arm64-gnu/package.json b/packages/next/build/swc/npm/linux-arm64-gnu/package.json deleted file mode 100644 index eb097c5a75..0000000000 --- a/packages/next/build/swc/npm/linux-arm64-gnu/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-linux-arm64-gnu", - "version": "0.0.0", - "os": [ - "linux" - ], - "cpu": [ - "arm64" - ], - "main": "next-swc.linux-arm64-gnu.node", - "files": [ - "next-swc.linux-arm64-gnu.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/linux-arm64-musl/README.md b/packages/next/build/swc/npm/linux-arm64-musl/README.md deleted file mode 100644 index 698bb30249..0000000000 --- a/packages/next/build/swc/npm/linux-arm64-musl/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-linux-arm64-musl` - -This is the **linux-arm64-musl** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/linux-arm64-musl/package.json b/packages/next/build/swc/npm/linux-arm64-musl/package.json deleted file mode 100644 index ac0d638a6e..0000000000 --- a/packages/next/build/swc/npm/linux-arm64-musl/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-linux-arm64-musl", - "version": "0.0.0", - "os": [ - "linux" - ], - "cpu": [ - "arm64" - ], - "main": "next-swc.linux-arm64-musl.node", - "files": [ - "next-swc.linux-arm64-musl.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/linux-x64-gnu/README.md b/packages/next/build/swc/npm/linux-x64-gnu/README.md deleted file mode 100644 index f85ed88cf6..0000000000 --- a/packages/next/build/swc/npm/linux-x64-gnu/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-linux-x64-gnu` - -This is the **x86_64-unknown-linux-gnu** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/linux-x64-gnu/package.json b/packages/next/build/swc/npm/linux-x64-gnu/package.json deleted file mode 100644 index 07f4f9f039..0000000000 --- a/packages/next/build/swc/npm/linux-x64-gnu/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-linux-x64-gnu", - "version": "0.0.0", - "os": [ - "linux" - ], - "cpu": [ - "x64" - ], - "main": "next-swc.linux-x64-gnu.node", - "files": [ - "next-swc.linux-x64-gnu.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/linux-x64-musl/README.md b/packages/next/build/swc/npm/linux-x64-musl/README.md deleted file mode 100644 index b0539af01d..0000000000 --- a/packages/next/build/swc/npm/linux-x64-musl/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-linux-x64-musl` - -This is the **linux-x64-musl** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/linux-x64-musl/package.json b/packages/next/build/swc/npm/linux-x64-musl/package.json deleted file mode 100644 index 031a573ed3..0000000000 --- a/packages/next/build/swc/npm/linux-x64-musl/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-linux-x64-musl", - "version": "0.0.0", - "os": [ - "linux" - ], - "cpu": [ - "x64" - ], - "main": "next-swc.linux-x64-musl.node", - "files": [ - "next-swc.linux-x64-musl.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/win32-arm64-msvc/README.md b/packages/next/build/swc/npm/win32-arm64-msvc/README.md deleted file mode 100644 index 0b52c876cd..0000000000 --- a/packages/next/build/swc/npm/win32-arm64-msvc/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-win32-arm64-msvc` - -This is the **win32-arm64-msvc** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/win32-arm64-msvc/package.json b/packages/next/build/swc/npm/win32-arm64-msvc/package.json deleted file mode 100644 index cdbbd44893..0000000000 --- a/packages/next/build/swc/npm/win32-arm64-msvc/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-win32-arm64-msvc", - "version": "0.0.0", - "os": [ - "win32" - ], - "cpu": [ - "arm64" - ], - "main": "next-swc.win32-arm64-msvc.node", - "files": [ - "next-swc.win32-arm64-msvc.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/win32-ia32-msvc/README.md b/packages/next/build/swc/npm/win32-ia32-msvc/README.md deleted file mode 100644 index 5c784edce7..0000000000 --- a/packages/next/build/swc/npm/win32-ia32-msvc/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-win32-ia32-msvc` - -This is the **win32-ia32-msvc** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/win32-ia32-msvc/package.json b/packages/next/build/swc/npm/win32-ia32-msvc/package.json deleted file mode 100644 index d906f84ac5..0000000000 --- a/packages/next/build/swc/npm/win32-ia32-msvc/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-win32-ia32-msvc", - "version": "0.0.0", - "os": [ - "win32" - ], - "cpu": [ - "ia32" - ], - "main": "next-swc.win32-ia32-msvc.node", - "files": [ - "next-swc.win32-ia32-msvc.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/build/swc/npm/win32-x64-msvc/README.md b/packages/next/build/swc/npm/win32-x64-msvc/README.md deleted file mode 100644 index 04e5bcab51..0000000000 --- a/packages/next/build/swc/npm/win32-x64-msvc/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@next/swc-win32-x64-msvc` - -This is the **x86_64-pc-windows-msvc** binary for `@next/swc` diff --git a/packages/next/build/swc/npm/win32-x64-msvc/package.json b/packages/next/build/swc/npm/win32-x64-msvc/package.json deleted file mode 100644 index a569a2a876..0000000000 --- a/packages/next/build/swc/npm/win32-x64-msvc/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@next/swc-win32-x64-msvc", - "version": "0.0.0", - "os": [ - "win32" - ], - "cpu": [ - "x64" - ], - "main": "next-swc.win32-x64-msvc.node", - "files": [ - "next-swc.win32-x64-msvc.node" - ], - "license": "MIT", - "engines": { - "node": ">= 10" - } -} diff --git a/packages/next/package.json b/packages/next/package.json index 87a50e03b4..c86331121f 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -58,7 +58,7 @@ "types": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "typescript": "tsc --noEmit --declaration", "ncc-compiled": "ncc cache clean && taskr ncc", - "build-native": "napi build --platform --cargo-cwd build/swc native" + "build-native": "napi build --platform --cargo-cwd build/swc --cargo-name next_swc_napi native" }, "taskr": { "requires": [ diff --git a/scripts/publish-native.js b/scripts/publish-native.js index 23bde83bd7..3adb209dff 100755 --- a/scripts/publish-native.js +++ b/scripts/publish-native.js @@ -15,7 +15,10 @@ const cwd = process.cwd() let gitref = process.argv.slice(2)[0] // Copy binaries to package folders, update version, and publish - let nativePackagesDir = path.join(cwd, 'packages/next/build/swc/npm') + let nativePackagesDir = path.join( + cwd, + 'packages/next/build/swc/crates/napi/npm' + ) let platforms = (await readdir(nativePackagesDir)).filter( (name) => !name.startsWith('.') ) @@ -58,6 +61,22 @@ const cwd = process.cwd() ) } + // Update name/version of wasm packages and publish + let wasmDir = path.join(cwd, 'packages/next/build/swc/crates/wasm') + for (let wasmTarget of ['web', 'nodejs']) { + let wasmPkg = JSON.parse( + await readFile(path.join(wasmDir, `pkg-${wasmTarget}/package.json`)) + ) + wasmPkg.name = `@next/swc-wasm-${wasmTarget}` + wasmPkg.version = version + execSync( + `npm publish ${path.join( + wasmDir, + `pkg-${wasmTarget}` + )} --access public ${gitref.includes('canary') ? ' --tag canary' : ''}` + ) + } + // Update optional dependencies versions let nextPkg = JSON.parse( await readFile(path.join(cwd, 'packages/next/package.json'))