From fefb27fdc3f156697b21e1b45437dd9c315dda3c Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Wed, 27 Sep 2023 11:54:09 +0200 Subject: [PATCH] Revert "Update `swc_core` to `v0.83.26` (#55780)" This reverts commit 81d2926e198dd355f296a42aaa91bc7582c104c9. --- Cargo.lock | 197 ++++++++---------- Cargo.toml | 8 +- packages/next-swc/crates/core/Cargo.toml | 2 - packages/next-swc/crates/core/src/lib.rs | 10 +- .../core/src/react_remove_properties.rs | 72 +++++++ .../crates/core/src/remove_console.rs | 131 ++++++++++++ .../core/src/top_level_binding_collector.rs | 131 ++++++++++++ .../next-swc/crates/core/tests/fixture.rs | 44 ++++ .../custom/simple/input.js | 9 + .../custom/simple/output.js | 11 + .../default/simple/input.js | 11 + .../default/simple/output.js | 15 ++ .../remove-console/all/simple/input.js | 42 ++++ .../remove-console/all/simple/output.js | 34 +++ .../all/toplevel-override/input.js | 9 + .../all/toplevel-override/output.js | 7 + .../next-swc/crates/next-core/js/package.json | 4 +- packages/next/package.json | 2 +- .../terser-webpack-plugin/src/index.ts | 6 +- pnpm-lock.yaml | 23 +- 20 files changed, 626 insertions(+), 142 deletions(-) create mode 100644 packages/next-swc/crates/core/src/react_remove_properties.rs create mode 100644 packages/next-swc/crates/core/src/remove_console.rs create mode 100644 packages/next-swc/crates/core/src/top_level_binding_collector.rs create mode 100644 packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/input.js create mode 100644 packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/output.js create mode 100644 packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/input.js create mode 100644 packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/output.js create mode 100644 packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/input.js create mode 100644 packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/output.js create mode 100644 packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/input.js create mode 100644 packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/output.js diff --git a/Cargo.lock b/Cargo.lock index 7add65cf516a4..c7e086c604fbd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -321,7 +321,7 @@ dependencies = [ [[package]] name = "auto-hash-map" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "serde", ] @@ -520,9 +520,9 @@ dependencies = [ [[package]] name = "binding_macros" -version = "0.57.24" +version = "0.57.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a712c12f6fa487f99e0ab7e2b6c7ae97179190285bd47520045acb8577350a7a" +checksum = "61acaf6fac14755e101ed1fb231eeaf785c1a0a2c60c80e0070957b214320318" dependencies = [ "anyhow", "console_error_panic_hook", @@ -3015,9 +3015,9 @@ dependencies = [ [[package]] name = "markdown" -version = "1.0.0-alpha.14" +version = "1.0.0-alpha.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a51befc5a2b4a052c473ffbc9ad462e358de59dcc2fde4997fd2a16403dcbd" +checksum = "92e9ce98969bb1391c8d6fdac320897ea7e86c4d356e8f220a5abd28b142e512" dependencies = [ "unicode-id", ] @@ -3070,9 +3070,9 @@ dependencies = [ [[package]] name = "mdxjs" -version = "0.1.17" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c73de74452171e35ed9d82961e403b8b197dcf752b45a51072d83e4813d42d53" +checksum = "4c5f502ce56278409815ddb3ac1490095746fc8cc6f88517450c7806e33d3381" dependencies = [ "markdown", "serde", @@ -3269,9 +3269,9 @@ dependencies = [ [[package]] name = "modularize_imports" -version = "0.48.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1070d9027b5d1eb4e54d81c86dfd26fd1e1370916ce5881c498361799e9a14" +checksum = "f2f4c10c90a90a3ebbcbeafcd9881b094f7c7ba49bbb32ba1698de0070dfa000" dependencies = [ "convert_case 0.5.0", "handlebars", @@ -3503,9 +3503,7 @@ dependencies = [ "next-transform-font", "once_cell", "pathdiff", - "react_remove_properties", "regex", - "remove_console", "rustc-hash", "serde", "serde_json", @@ -3576,7 +3574,7 @@ dependencies = [ [[package]] name = "node-file-trace" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "serde", @@ -4488,20 +4486,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "react_remove_properties" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dc14dca06a6d0f4796dde331bf9ae17fcb93b9f2d8c8fca8bdc0bd28ff2bd07" -dependencies = [ - "serde", - "swc_atoms", - "swc_cached", - "swc_common", - "swc_ecma_ast", - "swc_ecma_visit", -] - [[package]] name = "redox_syscall" version = "0.1.57" @@ -4611,20 +4595,6 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" -[[package]] -name = "remove_console" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b0da70a7bee5f2d9cdb94977225dac1d64946ec65aa2b30386a0a1f5bc5006" -dependencies = [ - "serde", - "swc_atoms", - "swc_cached", - "swc_common", - "swc_ecma_ast", - "swc_ecma_visit", -] - [[package]] name = "rend" version = "0.4.0" @@ -5606,9 +5576,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "styled_components" -version = "0.75.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93b77bf37c113d7401b11d87ec48d264b6200c8167e647c9f2bf5f7368d2abf" +checksum = "e9b017573078eed07792b404714c8686cf472f6f8f5b08c81ef13c6bd0ed2c4e" dependencies = [ "Inflector", "once_cell", @@ -5624,9 +5594,9 @@ dependencies = [ [[package]] name = "styled_jsx" -version = "0.52.0" +version = "0.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786d784207110496555ca76ee3a29bfea8fd24c2e8a7669ae1796bddd7f50e2b" +checksum = "0390065d279e650a8c39d5cd8a3c21e17091310f488bab4f0658af299f21cd75" dependencies = [ "easy-error", "lightningcss", @@ -5684,9 +5654,9 @@ dependencies = [ [[package]] name = "swc" -version = "0.266.24" +version = "0.266.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4ba1e83ac3ca75f906ea9d2cd524332cced02d2cd6ff5a1a410152165202b3" +checksum = "a92afb6ff917b0e441c3316902f5934d28df1de6d37aa7fa16875b15de54b104" dependencies = [ "anyhow", "base64 0.13.1", @@ -5751,9 +5721,9 @@ dependencies = [ [[package]] name = "swc_bundler" -version = "0.220.18" +version = "0.220.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e313a709779165e80f5449a690d2487f66f951d2c37efebb9eabeaded813246f" +checksum = "8d5abf3447a6fa02fad8942fbe2a891ce5f37b9352df4a058507feb783bd8adc" dependencies = [ "anyhow", "crc", @@ -5856,9 +5826,9 @@ dependencies = [ [[package]] name = "swc_core" -version = "0.83.26" +version = "0.83.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a2ba5d99b35d287fb9c82da645e501be618395ed4a44e990a90d58d8d454218" +checksum = "e81555309ae4e8e0ad4562e1a9105bb2e4a08721a543e3a1bbb85e6cfe57b6e5" dependencies = [ "binding_macros", "swc", @@ -6065,9 +6035,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.145.5" +version = "0.145.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "547ed57b827ea4df3e2c27cea153482f8b2ce2d271ae30c456fbb2d5a5ecc19d" +checksum = "815ffa630baae41acb9cae372684b772e65e7395954f20162ba4e9ea238f4d16" dependencies = [ "memchr", "num-bigint", @@ -6111,9 +6081,9 @@ dependencies = [ [[package]] name = "swc_ecma_lints" -version = "0.88.6" +version = "0.88.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300ae29c0fc98ed0364aa2fd4aa7702d6dc67d411dd4894e7e60d40e99c4ef19" +checksum = "036241d56880c4b0e1d5f1299071ec03e2ea334edf527336e391d7d501ee99c3" dependencies = [ "auto_impl", "dashmap", @@ -6152,9 +6122,9 @@ dependencies = [ [[package]] name = "swc_ecma_minifier" -version = "0.187.18" +version = "0.187.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b06445dc20a4092b9fe99a4c5c34394bda57acd6ebe7ae753378459ab5a8b9" +checksum = "f9a37d741274a102e24c9ab5ca0b6294ee23b4a80825aa198428e7014e9f0aa5" dependencies = [ "arrayvec", "indexmap 1.9.3", @@ -6207,9 +6177,9 @@ dependencies = [ [[package]] name = "swc_ecma_preset_env" -version = "0.201.19" +version = "0.201.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0494a77962a2e2c3279d8325dfb3e5a5a48221dd774144fdcc2887af478b5c69" +checksum = "815c3d4601b5cf8403b29e9edfaf9bbfbf2e528a67bc43e391a70b91a9b657f5" dependencies = [ "anyhow", "dashmap", @@ -6263,9 +6233,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms" -version = "0.224.17" +version = "0.224.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0826e3628dd3a0d99a8cd7d30c5a0046f7a17395352d450633d78f55919d286" +checksum = "fbd9002b451fd64bc04869a7b0848851440f9d2ccfe0546bfd74fd42b827c300" dependencies = [ "swc_atoms", "swc_common", @@ -6283,9 +6253,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.133.5" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "496e3957e19c22e61cd7ff020a87e1fe94c9334f4fa11267f08614fd5f85ba67" +checksum = "bd570349c3be938eff1214bba74f2d4d8dafc2e433eedb69e8ae220d425569d7" dependencies = [ "better_scoped_tls", "bitflags 2.4.0", @@ -6307,9 +6277,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.122.5" +version = "0.122.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "519ffccc874b8bb39db0fceec06c172b1d7a6e812ac6f4b0a000e5d3c295e495" +checksum = "04d7d4c89d164b8721e54eade3fbd3bcf60e479ca8adace0cbf8a1be693d8b94" dependencies = [ "swc_atoms", "swc_common", @@ -6321,9 +6291,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_compat" -version = "0.159.11" +version = "0.159.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bf11f8c486856ea9c8d24d84e5e8629afbd49919be519fddda67d3d440a9be" +checksum = "ac438b5cf8958038731f10ce4b8349b402a01d08192ddacdf73b3d1bdc9ec120" dependencies = [ "arrayvec", "indexmap 1.9.3", @@ -6360,9 +6330,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_module" -version = "0.176.14" +version = "0.176.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5239cdd86eb8a99d04473dfaceb778ec080be9644ae9d53bc92b6967a3eea60b" +checksum = "85b65556a3e53d03ea163cfa5e650629ace85fa23f24cd1861dfeed968ab7663" dependencies = [ "Inflector", "anyhow", @@ -6387,9 +6357,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_optimization" -version = "0.193.17" +version = "0.193.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd47a3cc8065d3ecf1ed283ba47623594f73457ebecba11eb1824c8bc2c40b4" +checksum = "3cb2e920fe64368d45f7f7c97a22c8ad8b3bada94fcd2d852059df434bb3c49d" dependencies = [ "dashmap", "indexmap 1.9.3", @@ -6412,9 +6382,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "0.167.12" +version = "0.167.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ded55481c7028bee20ee933328b5174dfe2a5095a27ea3ae6ae39661c753a8" +checksum = "4c6b9112a170b3aced968cb33fc4a6581d00565ac2e2dd04a362df893b08fc9a" dependencies = [ "either", "rustc-hash", @@ -6432,9 +6402,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.179.14" +version = "0.179.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eff59ce7151b51e5eaf0c961cf3a264258f179abe5ca1de6d0c5843020784d" +checksum = "db082cb6f34bebcacbe7a044feabd0d753510be594bba3ddd529f18a470d695a" dependencies = [ "base64 0.13.1", "dashmap", @@ -6457,9 +6427,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_testing" -version = "0.136.5" +version = "0.136.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef0636ec69f3de36ed0155a05e338b6ee294b115fafa15e13996f1ca7f2af6c3" +checksum = "03348a53dcfa46d3dae52691affc1538eaddb19036dd0b448fe08f69a25db18d" dependencies = [ "ansi_term", "anyhow", @@ -6483,11 +6453,10 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.183.16" +version = "0.183.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475d3ad2cc232f2c3e5e6e6da344cfe4d6a5bafe2560d2520288e27493de2b26" +checksum = "96475940e7677260d05c9ad20762ca11d576586b74ea9f929ae46a646ef43a50" dependencies = [ - "ryu-js", "serde", "swc_atoms", "swc_common", @@ -6551,9 +6520,9 @@ dependencies = [ [[package]] name = "swc_emotion" -version = "0.51.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1a13c3241b2812f15e751687924b0458b55ca7c3576a752b939e954cb4b0ba" +checksum = "ce0716c6622a1fd174f2c090dc06d5a860f0530bdd0b4a6e62a10f2d7f59339d" dependencies = [ "base64 0.13.1", "byteorder", @@ -6711,9 +6680,9 @@ dependencies = [ [[package]] name = "swc_relay" -version = "0.23.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b74826cb88703713c9c081f5968324490eed925217813ffa1de22da711a80a9" +checksum = "08242ad95d08026d0e92cb068de8c03ae12822be82da6a25411d4538f3ddab1d" dependencies = [ "once_cell", "regex", @@ -7412,7 +7381,7 @@ dependencies = [ [[package]] name = "turbo-tasks" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-trait", @@ -7444,7 +7413,7 @@ dependencies = [ [[package]] name = "turbo-tasks-build" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "cargo-lock", @@ -7456,7 +7425,7 @@ dependencies = [ [[package]] name = "turbo-tasks-bytes" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "bytes", @@ -7471,7 +7440,7 @@ dependencies = [ [[package]] name = "turbo-tasks-env" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "dotenvs", @@ -7485,7 +7454,7 @@ dependencies = [ [[package]] name = "turbo-tasks-fetch" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "indexmap 1.9.3", @@ -7502,7 +7471,7 @@ dependencies = [ [[package]] name = "turbo-tasks-fs" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "auto-hash-map", @@ -7532,7 +7501,7 @@ dependencies = [ [[package]] name = "turbo-tasks-hash" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "base16", "hex", @@ -7544,7 +7513,7 @@ dependencies = [ [[package]] name = "turbo-tasks-macros" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -7558,7 +7527,7 @@ dependencies = [ [[package]] name = "turbo-tasks-macros-shared" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "proc-macro2", "quote", @@ -7568,7 +7537,7 @@ dependencies = [ [[package]] name = "turbo-tasks-malloc" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "mimalloc", ] @@ -7576,7 +7545,7 @@ dependencies = [ [[package]] name = "turbo-tasks-memory" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "auto-hash-map", @@ -7599,7 +7568,7 @@ dependencies = [ [[package]] name = "turbopack" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-recursion", @@ -7630,7 +7599,7 @@ dependencies = [ [[package]] name = "turbopack-binding" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "auto-hash-map", "mdxjs", @@ -7670,7 +7639,7 @@ dependencies = [ [[package]] name = "turbopack-build" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "indexmap 1.9.3", @@ -7692,7 +7661,7 @@ dependencies = [ [[package]] name = "turbopack-cli-utils" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "clap 4.4.2", @@ -7716,7 +7685,7 @@ dependencies = [ [[package]] name = "turbopack-core" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-recursion", @@ -7745,7 +7714,7 @@ dependencies = [ [[package]] name = "turbopack-css" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-trait", @@ -7767,7 +7736,7 @@ dependencies = [ [[package]] name = "turbopack-dev" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "indexmap 1.9.3", @@ -7791,7 +7760,7 @@ dependencies = [ [[package]] name = "turbopack-dev-server" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-compression", @@ -7828,7 +7797,7 @@ dependencies = [ [[package]] name = "turbopack-ecmascript" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-trait", @@ -7862,7 +7831,7 @@ dependencies = [ [[package]] name = "turbopack-ecmascript-hmr-protocol" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "serde", "serde_json", @@ -7873,7 +7842,7 @@ dependencies = [ [[package]] name = "turbopack-ecmascript-plugins" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-trait", @@ -7896,7 +7865,7 @@ dependencies = [ [[package]] name = "turbopack-ecmascript-runtime" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "indoc", @@ -7913,7 +7882,7 @@ dependencies = [ [[package]] name = "turbopack-env" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "indexmap 1.9.3", @@ -7929,7 +7898,7 @@ dependencies = [ [[package]] name = "turbopack-image" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "base64 0.21.4", @@ -7949,7 +7918,7 @@ dependencies = [ [[package]] name = "turbopack-json" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "serde", @@ -7964,7 +7933,7 @@ dependencies = [ [[package]] name = "turbopack-mdx" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "mdxjs", @@ -7979,7 +7948,7 @@ dependencies = [ [[package]] name = "turbopack-node" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "async-stream", @@ -8014,7 +7983,7 @@ dependencies = [ [[package]] name = "turbopack-static" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "serde", @@ -8030,7 +7999,7 @@ dependencies = [ [[package]] name = "turbopack-swc-utils" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "swc_core", "turbo-tasks", @@ -8041,7 +8010,7 @@ dependencies = [ [[package]] name = "turbopack-wasm" version = "0.1.0" -source = "git+https://github.com/vercel/turbo.git?branch=kdy1/swc-transforms#34130e7b0f810176aaa6442773db2737d05a773d" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75" dependencies = [ "anyhow", "indexmap 1.9.3", diff --git a/Cargo.toml b/Cargo.toml index 893a631587b54..0e915ed219bcc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,18 +32,18 @@ next-transform-dynamic = { path = "packages/next-swc/crates/next-transform-dynam next-transform-strip-page-exports = { path = "packages/next-swc/crates/next-transform-strip-page-exports" } # SWC crates -swc_core = { version = "0.83.26", features = [ +swc_core = { version = "0.83.12", features = [ "ecma_loader_lru", "ecma_loader_parking_lot", ] } testing = { version = "0.34.1" } # Turbo crates -turbopack-binding = { git = "https://github.com/vercel/turbo.git", branch = "kdy1/swc-transforms" } # last tag: "turbopack-230922.3" +turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230922.3" } # [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros.. -turbo-tasks = { git = "https://github.com/vercel/turbo.git", branch = "kdy1/swc-transforms" } # last tag: "turbopack-230922.3" +turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230922.3" } # [TODO]: need to refactor embed_directory! macro usage in next-core -turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", branch = "kdy1/swc-transforms" } # last tag: "turbopack-230922.3" +turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230922.3" } # General Deps diff --git a/packages/next-swc/crates/core/Cargo.toml b/packages/next-swc/crates/core/Cargo.toml index de1f102f2115f..9ee942057cb29 100644 --- a/packages/next-swc/crates/core/Cargo.toml +++ b/packages/next-swc/crates/core/Cargo.toml @@ -33,8 +33,6 @@ turbopack-binding = { workspace = true, features = [ "__swc_transform_modularize_imports", "__swc_transform_relay", ] } -react_remove_properties = "0.3.0" -remove_console = "0.4.0" [dev-dependencies] turbopack-binding = { workspace = true, features = [ diff --git a/packages/next-swc/crates/core/src/lib.rs b/packages/next-swc/crates/core/src/lib.rs index 82bf191047d80..3e8cd7dd85ba7 100644 --- a/packages/next-swc/crates/core/src/lib.rs +++ b/packages/next-swc/crates/core/src/lib.rs @@ -63,9 +63,12 @@ pub mod next_ssg; pub mod optimize_barrel; pub mod optimize_server_react; pub mod page_config; +pub mod react_remove_properties; pub mod react_server_components; +pub mod remove_console; pub mod server_actions; pub mod shake_exports; +mod top_level_binding_collector; #[derive(Clone, Debug, Deserialize)] #[serde(rename_all = "camelCase")] @@ -248,15 +251,12 @@ where relay_plugin, match &opts.remove_console { Some(config) if config.truthy() => - Either::Left(remove_console::remove_console( - config.clone(), - SyntaxContext::empty().apply_mark(unresolved_mark) - )), + Either::Left(remove_console::remove_console(config.clone())), _ => Either::Right(noop()), }, match &opts.react_remove_properties { Some(config) if config.truthy() => - Either::Left(react_remove_properties::react_remove_properties(config.clone())), + Either::Left(react_remove_properties::remove_properties(config.clone())), _ => Either::Right(noop()), }, match &opts.shake_exports { diff --git a/packages/next-swc/crates/core/src/react_remove_properties.rs b/packages/next-swc/crates/core/src/react_remove_properties.rs new file mode 100644 index 0000000000000..449d4e4f06e22 --- /dev/null +++ b/packages/next-swc/crates/core/src/react_remove_properties.rs @@ -0,0 +1,72 @@ +use regex::Regex; +use serde::Deserialize; +use turbopack_binding::swc::core::ecma::{ + ast::*, + visit::{noop_fold_type, Fold, FoldWith}, +}; + +#[derive(Clone, Debug, Deserialize)] +#[serde(untagged)] +pub enum Config { + All(bool), + WithOptions(Options), +} + +impl Config { + pub fn truthy(&self) -> bool { + match self { + Config::All(b) => *b, + Config::WithOptions(_) => true, + } + } +} + +#[derive(Clone, Debug, Deserialize)] +pub struct Options { + #[serde(default)] + pub properties: Vec, +} + +struct RemoveProperties { + properties: Vec, +} + +impl RemoveProperties { + fn should_remove_property(&self, name: &str) -> bool { + self.properties.iter().any(|p| p.is_match(name)) + } +} + +impl Fold for RemoveProperties { + noop_fold_type!(); + + fn fold_jsx_opening_element(&mut self, mut el: JSXOpeningElement) -> JSXOpeningElement { + el.attrs.retain(|attr| { + !matches!(attr, JSXAttrOrSpread::JSXAttr(JSXAttr { + name: JSXAttrName::Ident(ident), + .. + }) if self.should_remove_property(ident.sym.as_ref())) + }); + el.fold_children_with(self) + } +} + +pub fn remove_properties(config: Config) -> impl Fold { + let mut properties: Vec = match config { + Config::WithOptions(x) => x + .properties + .iter() + .map(|pattern| { + Regex::new(pattern).unwrap_or_else(|e| { + panic!("error compiling property regex `{}`: {}", pattern, e); + }) + }) + .collect(), + _ => vec![], + }; + if properties.is_empty() { + // Keep the default regex identical to `babel-plugin-react-remove-properties`. + properties.push(Regex::new(r"^data-test").unwrap()); + } + RemoveProperties { properties } +} diff --git a/packages/next-swc/crates/core/src/remove_console.rs b/packages/next-swc/crates/core/src/remove_console.rs new file mode 100644 index 0000000000000..3fdb4498d810c --- /dev/null +++ b/packages/next-swc/crates/core/src/remove_console.rs @@ -0,0 +1,131 @@ +use serde::Deserialize; +use turbopack_binding::swc::core::{ + common::{collections::AHashSet, DUMMY_SP}, + ecma::{ + ast::*, + atoms::JsWord, + visit::{noop_fold_type, Fold, FoldWith}, + }, +}; + +use crate::top_level_binding_collector::collect_top_level_decls; + +#[derive(Clone, Debug, Deserialize)] +#[serde(untagged)] +pub enum Config { + All(bool), + WithOptions(Options), +} + +impl Config { + pub fn truthy(&self) -> bool { + match self { + Config::All(b) => *b, + Config::WithOptions(_) => true, + } + } +} + +#[derive(Clone, Debug, Deserialize)] +pub struct Options { + #[serde(default)] + pub exclude: Vec, +} + +struct RemoveConsole { + exclude: Vec, + bindings: Vec>, +} + +impl RemoveConsole { + fn is_global_console(&self, ident: &Ident) -> bool { + &ident.sym == "console" && !self.bindings.iter().any(|x| x.contains(&ident.to_id())) + } + + fn should_remove_call(&mut self, n: &CallExpr) -> bool { + let callee = &n.callee; + let member_expr = match callee { + Callee::Expr(e) => match &**e { + Expr::Member(m) => m, + _ => return false, + }, + _ => return false, + }; + + // Don't attempt to evaluate computed properties. + + if matches!(&member_expr.prop, MemberProp::Computed(..)) { + return false; + } + + // Only proceed if the object is the global `console` object. + match &*member_expr.obj { + Expr::Ident(i) if self.is_global_console(i) => {} + _ => return false, + } + + // Check if the property is requested to be excluded. + // Here we do an O(n) search on the list of excluded properties because the size + // should be small. + match &member_expr.prop { + MemberProp::Ident(i) if !self.exclude.iter().any(|x| *x == i.sym) => {} + _ => return false, + } + + true + } +} + +impl Fold for RemoveConsole { + noop_fold_type!(); + + fn fold_stmt(&mut self, stmt: Stmt) -> Stmt { + if let Stmt::Expr(e) = &stmt { + if let Expr::Call(c) = &*e.expr { + if self.should_remove_call(c) { + return Stmt::Empty(EmptyStmt { span: DUMMY_SP }); + } + } + } + stmt.fold_children_with(self) + } + + fn fold_function(&mut self, mut func: Function) -> Function { + let mut new_params: AHashSet = AHashSet::default(); + for param in &func.params { + new_params.extend(collect_top_level_decls(param)); + } + + self.bindings.push(new_params); + self.bindings.push(collect_top_level_decls(&func)); + func.body = func.body.fold_with(self); + self.bindings.pop().unwrap(); + self.bindings.pop().unwrap(); + func + } + + fn fold_module(&mut self, module: Module) -> Module { + self.bindings.push(collect_top_level_decls(&module)); + let m = module.fold_children_with(self); + self.bindings.pop().unwrap(); + m + } + + fn fold_script(&mut self, script: Script) -> Script { + self.bindings.push(collect_top_level_decls(&script)); + let s = script.fold_with(self); + self.bindings.pop().unwrap(); + s + } +} + +pub fn remove_console(config: Config) -> impl Fold { + let exclude = match config { + Config::WithOptions(x) => x.exclude, + _ => vec![], + }; + RemoveConsole { + exclude, + bindings: Default::default(), + } +} diff --git a/packages/next-swc/crates/core/src/top_level_binding_collector.rs b/packages/next-swc/crates/core/src/top_level_binding_collector.rs new file mode 100644 index 0000000000000..d315c97e053e7 --- /dev/null +++ b/packages/next-swc/crates/core/src/top_level_binding_collector.rs @@ -0,0 +1,131 @@ +use std::hash::Hash; + +use turbopack_binding::swc::core::{ + common::{collections::AHashSet, SyntaxContext}, + ecma::{ + ast::{ + ClassDecl, FnDecl, Ident, ImportDefaultSpecifier, ImportNamedSpecifier, + ImportStarAsSpecifier, ModuleItem, ObjectPatProp, Param, Pat, Stmt, VarDeclarator, + }, + utils::ident::IdentLike, + visit::{noop_visit_type, Visit, VisitWith}, + }, +}; + +// Modified from swc_ecma_utils/src/lib.rs:BindingCollector. +pub struct TopLevelBindingCollector +where + I: IdentLike + Eq + Hash + Send + Sync, +{ + only: Option, + bindings: AHashSet, + is_pat_decl: bool, +} + +impl TopLevelBindingCollector +where + I: IdentLike + Eq + Hash + Send + Sync, +{ + fn add(&mut self, i: &Ident) { + if let Some(only) = self.only { + if only != i.span.ctxt { + return; + } + } + + self.bindings.insert(I::from_ident(i)); + } +} + +impl Visit for TopLevelBindingCollector +where + I: IdentLike + Eq + Hash + Send + Sync, +{ + noop_visit_type!(); + + fn visit_class_decl(&mut self, node: &ClassDecl) { + self.add(&node.ident); + } + + fn visit_fn_decl(&mut self, node: &FnDecl) { + self.add(&node.ident); + } + + fn visit_pat(&mut self, node: &Pat) { + if self.is_pat_decl { + match node { + Pat::Ident(i) => self.add(&i.id), + Pat::Object(o) => { + for prop in o.props.iter() { + match prop { + ObjectPatProp::Assign(a) => self.add(&a.key), + ObjectPatProp::KeyValue(k) => k.value.visit_with(self), + ObjectPatProp::Rest(_) => {} + } + } + } + Pat::Array(a) => { + for elem in a.elems.iter() { + elem.visit_with(self); + } + } + _ => {} + } + } + } + + fn visit_param(&mut self, node: &Param) { + let old = self.is_pat_decl; + self.is_pat_decl = true; + node.visit_children_with(self); + self.is_pat_decl = old; + } + + fn visit_import_default_specifier(&mut self, node: &ImportDefaultSpecifier) { + self.add(&node.local); + } + + fn visit_import_named_specifier(&mut self, node: &ImportNamedSpecifier) { + self.add(&node.local); + } + + fn visit_import_star_as_specifier(&mut self, node: &ImportStarAsSpecifier) { + self.add(&node.local); + } + + fn visit_module_items(&mut self, nodes: &[ModuleItem]) { + for node in nodes { + node.visit_children_with(self) + } + } + + fn visit_stmts(&mut self, nodes: &[Stmt]) { + for node in nodes { + node.visit_children_with(self) + } + } + + fn visit_var_declarator(&mut self, node: &VarDeclarator) { + let old = self.is_pat_decl; + self.is_pat_decl = true; + node.name.visit_with(self); + + self.is_pat_decl = false; + node.init.visit_with(self); + self.is_pat_decl = old; + } +} + +pub fn collect_top_level_decls(n: &N) -> AHashSet +where + I: IdentLike + Eq + Hash + Send + Sync, + N: VisitWith>, +{ + let mut v = TopLevelBindingCollector { + only: None, + bindings: Default::default(), + is_pat_decl: false, + }; + n.visit_with(&mut v); + v.bindings +} diff --git a/packages/next-swc/crates/core/tests/fixture.rs b/packages/next-swc/crates/core/tests/fixture.rs index b4b3ccdce78ff..2c68b6485425a 100644 --- a/packages/next-swc/crates/core/tests/fixture.rs +++ b/packages/next-swc/crates/core/tests/fixture.rs @@ -9,7 +9,9 @@ use next_swc::{ optimize_barrel::optimize_barrel, optimize_server_react::optimize_server_react, page_config::page_config_test, + react_remove_properties::remove_properties, react_server_components::server_components, + remove_console::remove_console, server_actions::{ server_actions, {self}, }, @@ -230,6 +232,48 @@ fn relay_no_artifact_dir_fixture(input: PathBuf) { ); } +#[fixture("tests/fixture/remove-console/**/input.js")] +fn remove_console_fixture(input: PathBuf) { + let output = input.parent().unwrap().join("output.js"); + test_fixture( + syntax(), + &|_tr| remove_console(next_swc::remove_console::Config::All(true)), + &input, + &output, + Default::default(), + ); +} + +#[fixture("tests/fixture/react-remove-properties/default/**/input.js")] +fn react_remove_properties_default_fixture(input: PathBuf) { + let output = input.parent().unwrap().join("output.js"); + test_fixture( + syntax(), + &|_tr| remove_properties(next_swc::react_remove_properties::Config::All(true)), + &input, + &output, + Default::default(), + ); +} + +#[fixture("tests/fixture/react-remove-properties/custom/**/input.js")] +fn react_remove_properties_custom_fixture(input: PathBuf) { + let output = input.parent().unwrap().join("output.js"); + test_fixture( + syntax(), + &|_tr| { + remove_properties(next_swc::react_remove_properties::Config::WithOptions( + next_swc::react_remove_properties::Options { + properties: vec!["^data-custom$".into()], + }, + )) + }, + &input, + &output, + Default::default(), + ); +} + #[fixture("tests/fixture/shake-exports/most-usecases/input.js")] fn shake_exports_fixture(input: PathBuf) { let output = input.parent().unwrap().join("output.js"); diff --git a/packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/input.js b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/input.js new file mode 100644 index 0000000000000..aea9309cdfa5d --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/input.js @@ -0,0 +1,9 @@ +export default function Home() { + return ( +
+
+

Hello World!

+
+
+ ) +} diff --git a/packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/output.js b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/output.js new file mode 100644 index 0000000000000..d2224111fc27e --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/custom/simple/output.js @@ -0,0 +1,11 @@ +export default function Home() { + return
+ +
+ +

Hello World!

+ +
+ +
; +} diff --git a/packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/input.js b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/input.js new file mode 100644 index 0000000000000..ee99569746a77 --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/input.js @@ -0,0 +1,11 @@ +export default function Home() { + return ( +
+
+

nested
}> + Hello World! +

+
+
+ ) +} diff --git a/packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/output.js b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/output.js new file mode 100644 index 0000000000000..03621e62b010b --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/react-remove-properties/default/simple/output.js @@ -0,0 +1,15 @@ +export default function Home() { + return
+ +
+ +

nested
}> + + Hello World! + +

+ +
+ +
; +} diff --git a/packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/input.js b/packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/input.js new file mode 100644 index 0000000000000..0ea98b439db91 --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/input.js @@ -0,0 +1,42 @@ +console.log('remove console test at top level') + +export function shouldRemove() { + console.log('remove console test in function') + console.error('remove console test in function / error') +} + +export function locallyDefinedConsole() { + let console = { + log: () => {}, + } + console.log() +} + +export function capturedConsole() { + let console = { + log: () => {}, + } + function innerFunc() { + console.log() + } +} + +export function overrideInParam(console) { + console.log('') +} + +export function overrideInParamObjectPatPropAssign({ console }) { + console.log('') +} + +export function overrideInParamObjectPatPropKeyValue({ c: console }) { + console.log('') +} + +export function overrideInParamObjectPatPropKeyValueNested({ c: { console } }) { + console.log('') +} + +export function overrideInParamArray([console]) { + console.log('') +} diff --git a/packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/output.js b/packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/output.js new file mode 100644 index 0000000000000..cc53ab3a58a93 --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/remove-console/all/simple/output.js @@ -0,0 +1,34 @@ +; +export function shouldRemove() { + ; + ; +} +export function locallyDefinedConsole() { + let console = { + log: ()=>{} + }; + console.log(); +} +export function capturedConsole() { + let console = { + log: ()=>{} + }; + function innerFunc() { + console.log(); + } +} +export function overrideInParam(console) { + console.log(''); +} +export function overrideInParamObjectPatPropAssign({ console }) { + console.log(''); +} +export function overrideInParamObjectPatPropKeyValue({ c: console }) { + console.log(''); +} +export function overrideInParamObjectPatPropKeyValueNested({ c: { console } }) { + console.log(''); +} +export function overrideInParamArray([console]) { + console.log(''); +} diff --git a/packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/input.js b/packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/input.js new file mode 100644 index 0000000000000..8d87289d5e2e6 --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/input.js @@ -0,0 +1,9 @@ +let console = { + log: (msg) => {}, +} + +function func1() { + console.log('remove console test in function') +} + +console.log('remove console test at top level') diff --git a/packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/output.js b/packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/output.js new file mode 100644 index 0000000000000..6f50e127c79b2 --- /dev/null +++ b/packages/next-swc/crates/core/tests/fixture/remove-console/all/toplevel-override/output.js @@ -0,0 +1,7 @@ +let console = { + log: (msg)=>{} +}; +function func1() { + console.log('remove console test in function'); +} +console.log('remove console test at top level'); diff --git a/packages/next-swc/crates/next-core/js/package.json b/packages/next-swc/crates/next-core/js/package.json index dba9009428727..9797057d45161 100644 --- a/packages/next-swc/crates/next-core/js/package.json +++ b/packages/next-swc/crates/next-core/js/package.json @@ -10,8 +10,8 @@ "check": "tsc --noEmit" }, "dependencies": { - "@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d", - "@vercel/turbopack-node": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?34130e7b0f810176aaa6442773db2737d05a773d", + "@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2", + "@vercel/turbopack-node": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230922.2", "anser": "^2.1.1", "css.escape": "^1.5.1", "next": "*", diff --git a/packages/next/package.json b/packages/next/package.json index d2ae13abd9b9e..7b4bf037bf396 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -193,7 +193,7 @@ "@types/ws": "8.2.0", "@vercel/ncc": "0.34.0", "@vercel/nft": "0.22.6", - "@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d", + "@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2", "acorn": "8.5.0", "ajv": "8.11.0", "amphtml-validator": "1.0.35", diff --git a/packages/next/src/build/webpack/plugins/terser-webpack-plugin/src/index.ts b/packages/next/src/build/webpack/plugins/terser-webpack-plugin/src/index.ts index 5112b9cc503e7..db5b8671e0bce 100644 --- a/packages/next/src/build/webpack/plugins/terser-webpack-plugin/src/index.ts +++ b/packages/next/src/build/webpack/plugins/terser-webpack-plugin/src/index.ts @@ -128,11 +128,11 @@ export class TerserPlugin { } if (debugMinify && debugMinify === '1') { - console.log( - JSON.stringify({ + console.dir( + { name, source: source.source().toString(), - }), + }, { breakLength: Infinity, maxStringLength: Infinity, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3405a79d0e3a5..4e96612f29737 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1061,8 +1061,8 @@ importers: specifier: 0.22.6 version: 0.22.6 '@vercel/turbopack-ecmascript-runtime': - specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d - version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d(react-refresh@0.12.0)(webpack@5.86.0)' + specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2 + version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2(react-refresh@0.12.0)(webpack@5.86.0)' acorn: specifier: 8.5.0 version: 8.5.0 @@ -1527,11 +1527,11 @@ importers: packages/next-swc/crates/next-core/js: dependencies: '@vercel/turbopack-ecmascript-runtime': - specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d - version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d(react-refresh@0.12.0)(webpack@5.86.0)' + specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2 + version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2(react-refresh@0.12.0)(webpack@5.86.0)' '@vercel/turbopack-node': - specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?34130e7b0f810176aaa6442773db2737d05a773d - version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?34130e7b0f810176aaa6442773db2737d05a773d' + specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230922.2 + version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230922.2' anser: specifier: ^2.1.1 version: 2.1.1 @@ -23707,6 +23707,7 @@ packages: dependencies: klona: 2.0.4 neo-async: 2.6.2 + sass: 1.54.0 webpack: 5.86.0(@swc/core@1.3.85) dev: true @@ -26966,9 +26967,9 @@ packages: /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d(react-refresh@0.12.0)(webpack@5.86.0)': - resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d} - id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?34130e7b0f810176aaa6442773db2737d05a773d' + '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2(react-refresh@0.12.0)(webpack@5.86.0)': + resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2} + id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2' name: '@vercel/turbopack-ecmascript-runtime' version: 0.0.0 dependencies: @@ -26978,8 +26979,8 @@ packages: - react-refresh - webpack - '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?34130e7b0f810176aaa6442773db2737d05a773d': - resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?34130e7b0f810176aaa6442773db2737d05a773d} + '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230922.2': + resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230922.2} name: '@vercel/turbopack-node' version: 0.0.0 dependencies: