From 65281befde669ab633b49e6440d0416fc9ea2ebd Mon Sep 17 00:00:00 2001 From: jserfeng <1114550440@qq.com> Date: Wed, 2 Aug 2023 12:43:01 +0800 Subject: [PATCH 1/2] feat: avoid visit types --- .github/workflows/release.yml | 1 + Cargo.toml | 2 +- crates/plugin_import/src/lib.rs | 59 ++++++++++++------- crates/plugin_lock_corejs_version/src/lib.rs | 6 +- crates/plugin_lodash/src/lib.rs | 8 ++- .../plugin_react_utils/src/remove_effect.rs | 4 +- .../src/remove_prop_types.rs | 10 +++- crates/plugin_ssr_loader_id/src/lib.rs | 2 +- 8 files changed, 61 insertions(+), 31 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7c6cc70..bcb091c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,7 @@ env: DEBUG: napi:* APP_NAME: swc-plugins MACOSX_DEPLOYMENT_TARGET: "10.13" + CARGO_PROFILE_RELEASE_LTO: "fat" "on": workflow_dispatch: null diff --git a/Cargo.toml b/Cargo.toml index 8140f40..d7f1383 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ exclude = ["crates/plugin_modernjs_ssr_loader_id/wasm"] members = ["crates/*"] [profile.release] -lto = false +# lto = false strip = "symbols" [workspace.dependencies] diff --git a/crates/plugin_import/src/lib.rs b/crates/plugin_import/src/lib.rs index 45ec376..a465125 100644 --- a/crates/plugin_import/src/lib.rs +++ b/crates/plugin_import/src/lib.rs @@ -12,7 +12,7 @@ use swc_core::{ ModuleDecl, ModuleExportName, ModuleItem, Str, }, atoms::JsWord, - visit::{as_folder, Fold, VisitMut, VisitWith}, + visit::{as_folder, noop_visit_mut_type, Fold, VisitMut, VisitWith}, }, }; @@ -74,7 +74,7 @@ const CUSTOM_JS: &str = "CUSTOM_JS_NAME"; const CUSTOM_STYLE: &str = "CUSTOM_STYLE"; const CUSTOM_STYLE_NAME: &str = "CUSTOM_STYLE_NAME"; -pub fn plugin_import(config: &Vec) -> impl Fold + '_ { +pub fn plugin_import(config: &Vec) -> impl Fold + VisitMut + '_ { let mut renderer = handlebars::Handlebars::new(); renderer.register_helper( @@ -374,7 +374,7 @@ impl<'a> VisitMut for ImportPlugin<'a> { } } - module.body = module + let other_imports: Vec<_> = module .body .take() .into_iter() @@ -382,9 +382,24 @@ impl<'a> VisitMut for ImportPlugin<'a> { .filter_map(|(idx, stmt)| (!specifiers_rm_es.contains(&idx)).then_some(stmt)) .collect(); - let body = &mut module.body; + let mut imports = vec![]; - for js_source in specifiers_es { + for css_source in specifiers_css.iter().rev() { + let dec = ModuleItem::ModuleDecl(ModuleDecl::Import(ImportDecl { + span: DUMMY_SP, + specifiers: vec![], + src: Box::new(Str { + span: DUMMY_SP, + value: JsWord::from(css_source.as_str()), + raw: None, + }), + type_only: false, + asserts: None, + })); + imports.push(dec); + } + + for js_source in specifiers_es.iter().rev() { let js_source_ref = js_source.source.as_str(); let dec = ModuleItem::ModuleDecl(ModuleDecl::Import(ImportDecl { span: DUMMY_SP, @@ -397,7 +412,13 @@ impl<'a> VisitMut for ImportPlugin<'a> { BytePos::DUMMY, SyntaxContext::from_u32(js_source.mark), ), - sym: JsWord::from(js_source.as_name.unwrap_or(js_source.default_spec).as_str()), + sym: JsWord::from( + js_source + .as_name + .clone() + .unwrap_or(js_source.default_spec.clone()) + .as_str(), + ), optional: false, }, })] @@ -419,7 +440,13 @@ impl<'a> VisitMut for ImportPlugin<'a> { BytePos::DUMMY, SyntaxContext::from_u32(js_source.mark), ), - sym: JsWord::from(js_source.as_name.unwrap_or(js_source.default_spec).as_str()), + sym: JsWord::from( + js_source + .as_name + .clone() + .unwrap_or(js_source.default_spec.clone()) + .as_str(), + ), optional: false, }, is_type_only: false, @@ -433,23 +460,11 @@ impl<'a> VisitMut for ImportPlugin<'a> { type_only: false, asserts: None, })); - body.insert(0, dec); + imports.push(dec); } - for css_source in specifiers_css { - let dec = ModuleItem::ModuleDecl(ModuleDecl::Import(ImportDecl { - span: DUMMY_SP, - specifiers: vec![], - src: Box::new(Str { - span: DUMMY_SP, - value: JsWord::from(css_source), - raw: None, - }), - type_only: false, - asserts: None, - })); - body.insert(0, dec); - } + imports.extend(other_imports.into_iter()); + module.body = imports; } } diff --git a/crates/plugin_lock_corejs_version/src/lib.rs b/crates/plugin_lock_corejs_version/src/lib.rs index d4d3491..af402e8 100644 --- a/crates/plugin_lock_corejs_version/src/lib.rs +++ b/crates/plugin_lock_corejs_version/src/lib.rs @@ -4,7 +4,7 @@ use swc_core::{ ecma::{ ast::{CallExpr, Callee, ImportDecl, Lit, Str}, atoms::JsWord, - visit::{as_folder, Fold, VisitMut}, + visit::{as_folder, Fold, VisitMut, noop_visit_mut_type}, }, }; @@ -31,6 +31,8 @@ impl LockCoreJsVersion { } impl VisitMut for LockCoreJsVersion { + noop_visit_mut_type!(); + fn visit_mut_import_decl(&mut self, decl: &mut ImportDecl) { if let Some(value) = self.need_replace(&decl.src.value) { decl.src = Box::new(Str { @@ -76,7 +78,7 @@ impl VisitMut for LockCoreJsVersion { } } -pub fn lock_corejs_version(corejs: String, swc_helpers: String) -> impl Fold { +pub fn lock_corejs_version(corejs: String, swc_helpers: String) -> impl Fold + VisitMut { as_folder(LockCoreJsVersion { corejs, swc_helpers, diff --git a/crates/plugin_lodash/src/lib.rs b/crates/plugin_lodash/src/lib.rs index a2b77da..b56e83a 100644 --- a/crates/plugin_lodash/src/lib.rs +++ b/crates/plugin_lodash/src/lib.rs @@ -15,7 +15,7 @@ use swc_core::{ }, atoms::JsWord, utils::undefined, - visit::{as_folder, Fold, VisitMut, VisitMutWith}, + visit::{as_folder, Fold, VisitMut, VisitMutWith, noop_visit_mut_type}, }, quote, }; @@ -39,7 +39,7 @@ pub struct PluginLodashConfig { pub fn plugin_lodash( config: &PluginLodashConfig, plugin_context: Arc, -) -> impl Fold + '_ { +) -> impl Fold + VisitMut + '_ { let mut ids = vec!["lodash".into(), "lodash-es".into()]; config.ids.iter().for_each(|id| { if !ids.contains(id) { @@ -142,6 +142,8 @@ impl PluginLodash { } impl VisitMut for PluginLodash { + noop_visit_mut_type!(); + // Clear states fn visit_mut_module(&mut self, module: &mut Module) { // First check all import decl, this can collect namespaces identifier, @@ -332,6 +334,8 @@ impl<'a> PostProcess<'a> { } impl<'a> VisitMut for PostProcess<'a> { + noop_visit_mut_type!(); + fn visit_mut_module(&mut self, module: &mut Module) { let mut removed = vec![]; diff --git a/crates/plugin_react_utils/src/remove_effect.rs b/crates/plugin_react_utils/src/remove_effect.rs index 30b89cb..abd352f 100644 --- a/crates/plugin_react_utils/src/remove_effect.rs +++ b/crates/plugin_react_utils/src/remove_effect.rs @@ -4,7 +4,7 @@ use swc_core::{ common::util::take::Take, ecma::{ ast::{BlockStmt, Expr, Id, ImportSpecifier, Module, ModuleDecl, ModuleExportName, ModuleItem}, - visit::{as_folder, Fold, VisitMut, VisitMutWith}, + visit::{as_folder, Fold, VisitMut, VisitMutWith, noop_visit_mut_type}, }, }; use swc_plugins_utils::ClearMark; @@ -17,6 +17,8 @@ struct RmUseEffect { const USE_EFFECT_STR: &str = "useEffect"; impl VisitMut for RmUseEffect { + noop_visit_mut_type!(); + fn visit_mut_block_stmt(&mut self, n: &mut BlockStmt) { let mut rm_idx_set = HashSet::new(); for (idx, stmt) in n.stmts.iter().enumerate() { diff --git a/crates/plugin_react_utils/src/remove_prop_types.rs b/crates/plugin_react_utils/src/remove_prop_types.rs index 923982a..638e458 100644 --- a/crates/plugin_react_utils/src/remove_prop_types.rs +++ b/crates/plugin_react_utils/src/remove_prop_types.rs @@ -13,7 +13,7 @@ use swc_core::{ Ident, ImportDecl, ImportSpecifier, Module, ModuleDecl, ModuleItem, PropName, Stmt, VarDecl, }, atoms::JsWord, - visit::{as_folder, Fold, Visit, VisitMut, VisitMutWith, VisitWith}, + visit::{as_folder, Fold, Visit, VisitMut, VisitMutWith, VisitWith, noop_visit_mut_type, noop_visit_type}, }, quote, }; @@ -26,7 +26,7 @@ use swc_plugins_utils::{ pub fn react_remove_prop_types( config: &ReactRemovePropTypeConfig, plugin_context: Arc, -) -> impl Fold + '_ { +) -> impl Fold + VisitMut + '_ { if config.remove_import && !matches!(config.mode, Mode::Removal) { panic!( r#"react-remove-prop-type: removeImport = true and mode != "remove" can not be used at the same time."# @@ -305,6 +305,8 @@ impl<'a, C> VisitMut for ReactRemovePropTypes<'a, C> where C: Comments, { + noop_visit_mut_type!(); + fn visit_mut_module(&mut self, module: &mut Module) { self.bindings = collect_bindings(module); @@ -468,6 +470,8 @@ impl<'a> CollectReactComponent<'a> { } impl<'a> Visit for CollectReactComponent<'a> { + noop_visit_type!(); + fn visit_import_decl(&mut self, import_decl: &ImportDecl) { if !self.config.is_match_library(&import_decl.src.value) { return; @@ -629,6 +633,8 @@ struct RemoveImports<'a> { } impl<'a> VisitMut for RemoveImports<'a> { + noop_visit_mut_type!(); + fn visit_mut_module(&mut self, module: &mut Module) { module.visit_mut_children_with(self); diff --git a/crates/plugin_ssr_loader_id/src/lib.rs b/crates/plugin_ssr_loader_id/src/lib.rs index 4c88985..ee18493 100644 --- a/crates/plugin_ssr_loader_id/src/lib.rs +++ b/crates/plugin_ssr_loader_id/src/lib.rs @@ -295,7 +295,7 @@ struct SSRLoaderIdState { pub fn plugin_ssr_loader_id( config: &SSRLoaderIdConfig, plugin_ctx: Arc, -) -> impl Fold { +) -> impl Fold + VisitMut { let (filename, cwd) = ( plugin_ctx.filename.clone(), plugin_ctx From cfa8e87ff5c4e99d634ad190ef0e5e94265217a4 Mon Sep 17 00:00:00 2001 From: jserfeng <1114550440@qq.com> Date: Thu, 3 Aug 2023 18:48:42 +0800 Subject: [PATCH 2/2] chore: upgrade rust, optimize binary size --- .changeset/healthy-ants-pretend.md | 5 + .github/workflows/release.yml | 2 + Cargo.lock | 13 +- Cargo.toml | 6 +- crates/plugin_import/Cargo.toml | 1 + crates/plugin_import/src/lib.rs | 169 ++++++++---------- crates/plugin_import/tests/main.rs | 26 ++- crates/plugin_lock_corejs_version/src/lib.rs | 2 +- crates/plugin_lodash/src/lib.rs | 2 +- crates/plugin_lodash/src/mappings.rs | 2 +- .../plugin_react_utils/src/remove_effect.rs | 2 +- .../src/remove_prop_types.rs | 5 +- crates/plugin_ssr_loader_id/src/lib.rs | 5 +- crates/swc_plugins_core/src/transform.rs | 2 + rust-toolchain | 2 +- 15 files changed, 132 insertions(+), 112 deletions(-) create mode 100644 .changeset/healthy-ants-pretend.md diff --git a/.changeset/healthy-ants-pretend.md b/.changeset/healthy-ants-pretend.md new file mode 100644 index 0000000..51c9c5c --- /dev/null +++ b/.changeset/healthy-ants-pretend.md @@ -0,0 +1,5 @@ +--- +"@modern-js/swc-plugins": patch +--- + +chore: upgrade rust, optimize binary size diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bcb091c..a87f885 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,6 +4,8 @@ env: APP_NAME: swc-plugins MACOSX_DEPLOYMENT_TARGET: "10.13" CARGO_PROFILE_RELEASE_LTO: "fat" + CARGO_PROFILE_RELEASE_CODEGEN_UNITS: 1 + "on": workflow_dispatch: null diff --git a/Cargo.lock b/Cargo.lock index 4d23f5f..9a3cc14 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1188,6 +1188,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -3907,6 +3913,7 @@ name = "swc_plugin_import" version = "0.1.8" dependencies = [ "handlebars", + "heck 0.4.1", "regex", "rustc-hash", "serde", @@ -4691,7 +4698,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19bc05e8380515c4337c40ef03b2ff233e391315b178a320de8640703d522efe" dependencies = [ - "heck", + "heck 0.3.3", "wai-bindgen-gen-core", ] @@ -4701,7 +4708,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6f35ce5e74086fac87f3a7bd50f643f00fe3559adb75c88521ecaa01c8a6199" dependencies = [ - "heck", + "heck 0.3.3", "wai-bindgen-gen-core", "wai-bindgen-gen-rust", ] @@ -4712,7 +4719,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f61484185d8c520a86d5a7f7f8265f446617c2f9774b2e20a52de19b6e53432" dependencies = [ - "heck", + "heck 0.3.3", "wai-bindgen-gen-core", "wai-bindgen-gen-rust", ] diff --git a/Cargo.toml b/Cargo.toml index d7f1383..b7f051d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,11 +3,15 @@ cargo-features = ["strip"] [workspace] exclude = ["crates/plugin_modernjs_ssr_loader_id/wasm"] members = ["crates/*"] +resolver = "2" [profile.release] -# lto = false strip = "symbols" +# Enable following optimization on CI, based on env variable +# lto = true +# codegen-units = 1 + [workspace.dependencies] rustc-hash = { version = "1.1.0" } anyhow = { version = "1.0.69" } diff --git a/crates/plugin_import/Cargo.toml b/crates/plugin_import/Cargo.toml index 6f3f8a6..8e1aef2 100644 --- a/crates/plugin_import/Cargo.toml +++ b/crates/plugin_import/Cargo.toml @@ -11,6 +11,7 @@ regex = "1.6.0" serde = { workspace = true } rustc-hash = { workspace = true } swc_core = { workspace = true, features = ["common", "ecma_ast", "ecma_visit"] } +heck = "0.4.1" [dev-dependencies] test_plugins = { path = "../test_plugins" } diff --git a/crates/plugin_import/src/lib.rs b/crates/plugin_import/src/lib.rs index a465125..511c951 100644 --- a/crates/plugin_import/src/lib.rs +++ b/crates/plugin_import/src/lib.rs @@ -1,80 +1,25 @@ mod visit; use std::fmt::Debug; -use handlebars::{Context, Helper, HelperResult, Output, RenderContext, Template}; +use handlebars::{Context, Handlebars, Helper, HelperResult, Output, RenderContext, Template}; +use heck::ToKebabCase; use rustc_hash::{FxHashMap as HashMap, FxHashSet as HashSet}; use serde::Deserialize; use swc_core::{ - common::{util::take::Take, BytePos, Span, SyntaxContext, DUMMY_SP}, + common::{sync::Lazy, util::take::Take, BytePos, Span, SyntaxContext, DUMMY_SP}, ecma::{ ast::{ Ident, ImportDecl, ImportDefaultSpecifier, ImportNamedSpecifier, ImportSpecifier, Module, ModuleDecl, ModuleExportName, ModuleItem, Str, }, atoms::JsWord, - visit::{as_folder, noop_visit_mut_type, Fold, VisitMut, VisitWith}, + visit::{as_folder, Fold, VisitMut, VisitWith}, }, }; use crate::visit::IdentComponent; -#[derive(Debug, Deserialize, Clone)] -pub enum StyleConfig { - StyleLibraryDirectory(String), - #[serde(skip)] - Custom(CustomTransform), - Css, - Bool(bool), - None, -} - -#[derive(Deserialize)] -pub enum CustomTransform { - #[serde(skip)] - Fn(Box Option>), - Tpl(String), -} - -impl Clone for CustomTransform { - fn clone(&self) -> Self { - match self { - Self::Fn(_) => panic!("Function cannot be cloned"), - Self::Tpl(s) => Self::Tpl(s.clone()), - } - } -} - -impl Debug for CustomTransform { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - CustomTransform::Fn(_) => f.write_str("Function"), - CustomTransform::Tpl(t) => f.write_str(t), - } - } -} - -#[derive(Debug, Deserialize, Default, Clone)] -pub struct PluginImportConfig { - pub library_name: String, - pub library_directory: Option, // default to `lib` - #[serde(skip)] - pub custom_name: Option, - #[serde(skip)] - pub custom_style_name: Option, // If this is set, `style` option will be ignored - pub style: Option, - - pub camel_to_dash_component_name: Option, // default to true - pub transform_to_default_import: Option, - - pub ignore_es_component: Option>, - pub ignore_style_component: Option>, -} - -const CUSTOM_JS: &str = "CUSTOM_JS_NAME"; -const CUSTOM_STYLE: &str = "CUSTOM_STYLE"; -const CUSTOM_STYLE_NAME: &str = "CUSTOM_STYLE_NAME"; - -pub fn plugin_import(config: &Vec) -> impl Fold + VisitMut + '_ { +static RENDERER: Lazy = Lazy::new(|| { let mut renderer = handlebars::Handlebars::new(); renderer.register_helper( @@ -90,7 +35,7 @@ pub fn plugin_import(config: &Vec) -> impl Fold + VisitMut + .param(0) .and_then(|v| v.value().as_str()) .unwrap_or(""); - out.write(param.camel_to_kebab().as_ref())?; + out.write(param.to_kebab_case().as_ref())?; Ok(()) }, ), @@ -134,6 +79,68 @@ pub fn plugin_import(config: &Vec) -> impl Fold + VisitMut + ), ); + renderer +}); + +#[derive(Debug, Deserialize, Clone)] +pub enum StyleConfig { + StyleLibraryDirectory(String), + #[serde(skip)] + Custom(CustomTransform), + Css, + Bool(bool), + None, +} + +#[derive(Deserialize)] +pub enum CustomTransform { + #[serde(skip)] + Fn(Box Option>), + Tpl(String), +} + +impl Clone for CustomTransform { + fn clone(&self) -> Self { + match self { + Self::Fn(_) => panic!("Function cannot be cloned"), + Self::Tpl(s) => Self::Tpl(s.clone()), + } + } +} + +impl Debug for CustomTransform { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + CustomTransform::Fn(_) => f.write_str("Function"), + CustomTransform::Tpl(t) => f.write_str(t), + } + } +} + +#[derive(Debug, Deserialize, Default, Clone)] +pub struct PluginImportConfig { + pub library_name: String, + pub library_directory: Option, // default to `lib` + #[serde(skip)] + pub custom_name: Option, + #[serde(skip)] + pub custom_style_name: Option, // If this is set, `style` option will be ignored + pub style: Option, + + pub camel_to_dash_component_name: Option, // default to true + pub transform_to_default_import: Option, + + pub ignore_es_component: Option>, + pub ignore_style_component: Option>, +} + +const CUSTOM_JS: &str = "CUSTOM_JS_NAME"; +const CUSTOM_STYLE: &str = "CUSTOM_STYLE"; +const CUSTOM_STYLE_NAME: &str = "CUSTOM_STYLE_NAME"; + +pub fn plugin_import(config: &Vec) -> impl Fold + VisitMut + '_ { + let mut renderer = RENDERER.clone(); + config.iter().for_each(|cfg| { if let Some(CustomTransform::Tpl(tpl)) = &cfg.custom_name { renderer.register_template( @@ -198,7 +205,7 @@ impl<'a> ImportPlugin<'a> { .unwrap_or(false); let transformed_name = if config.camel_to_dash_component_name.unwrap_or(true) { - name.camel_to_kebab() + name.to_kebab_case() } else { name.clone() }; @@ -463,7 +470,7 @@ impl<'a> VisitMut for ImportPlugin<'a> { imports.push(dec); } - imports.extend(other_imports.into_iter()); + imports.extend(other_imports); module.body = imports; } } @@ -473,39 +480,3 @@ fn render_context(s: String) -> HashMap<&'static str, String> { ctx.insert("member", s); ctx } - -trait KebabCase { - fn camel_to_kebab(&self) -> String; -} - -impl KebabCase for T -where - T: AsRef, -{ - fn camel_to_kebab(&self) -> String { - let s: &str = self.as_ref(); - let mut output = String::with_capacity(s.len()); - - s.chars().enumerate().for_each(|(idx, c)| { - if c.is_uppercase() { - if idx > 0 { - output.push('-'); - } - output.push_str(c.to_lowercase().to_string().as_str()); - } else { - output.push(c); - } - }); - - output - } -} - -#[test] -fn test_kebab_case() { - assert_eq!("ABCD".camel_to_kebab(), "a-b-c-d"); - assert_eq!("AbCd".camel_to_kebab(), "ab-cd"); - assert_eq!("Aaaa".camel_to_kebab(), "aaaa"); - assert_eq!("A".camel_to_kebab(), "a"); - assert_eq!("".camel_to_kebab(), ""); -} diff --git a/crates/plugin_import/tests/main.rs b/crates/plugin_import/tests/main.rs index 28f88d5..1eb5917 100644 --- a/crates/plugin_import/tests/main.rs +++ b/crates/plugin_import/tests/main.rs @@ -1 +1,25 @@ -// All test logic is in {project root}/tests/index.test.ts +use swc_core::ecma::parser::Syntax; +use swc_plugin_import::{plugin_import, PluginImportConfig}; + +#[test] +fn plugin_import_test() { + let config = vec![PluginImportConfig { + library_name: "foo".into(), + library_directory: None, + custom_name: None, + custom_style_name: None, + style: None, + camel_to_dash_component_name: None, + transform_to_default_import: None, + ignore_es_component: None, + ignore_style_component: None, + }]; + + test_plugins::testing::test_transform( + Syntax::Es(Default::default()), + |_| plugin_import(&config), + "import {Button} from 'foo';console.log(Button)", + "import Button from \"foo/lib/button\";console.log(Button);", + true, + ); +} diff --git a/crates/plugin_lock_corejs_version/src/lib.rs b/crates/plugin_lock_corejs_version/src/lib.rs index af402e8..8489f99 100644 --- a/crates/plugin_lock_corejs_version/src/lib.rs +++ b/crates/plugin_lock_corejs_version/src/lib.rs @@ -4,7 +4,7 @@ use swc_core::{ ecma::{ ast::{CallExpr, Callee, ImportDecl, Lit, Str}, atoms::JsWord, - visit::{as_folder, Fold, VisitMut, noop_visit_mut_type}, + visit::{as_folder, noop_visit_mut_type, Fold, VisitMut}, }, }; diff --git a/crates/plugin_lodash/src/lib.rs b/crates/plugin_lodash/src/lib.rs index b56e83a..2cd359c 100644 --- a/crates/plugin_lodash/src/lib.rs +++ b/crates/plugin_lodash/src/lib.rs @@ -15,7 +15,7 @@ use swc_core::{ }, atoms::JsWord, utils::undefined, - visit::{as_folder, Fold, VisitMut, VisitMutWith, noop_visit_mut_type}, + visit::{as_folder, noop_visit_mut_type, Fold, VisitMut, VisitMutWith}, }, quote, }; diff --git a/crates/plugin_lodash/src/mappings.rs b/crates/plugin_lodash/src/mappings.rs index 1e6efe7..f6ca60b 100644 --- a/crates/plugin_lodash/src/mappings.rs +++ b/crates/plugin_lodash/src/mappings.rs @@ -104,7 +104,7 @@ pub fn build_mappings<'a>( } let pkg_root = get_pkg_root(module_root.unwrap()); - if matches!(pkg_root, None) { + if pkg_root.is_none() { println!("Module {id} not found. Skipped"); continue; } diff --git a/crates/plugin_react_utils/src/remove_effect.rs b/crates/plugin_react_utils/src/remove_effect.rs index abd352f..e4e01a8 100644 --- a/crates/plugin_react_utils/src/remove_effect.rs +++ b/crates/plugin_react_utils/src/remove_effect.rs @@ -4,7 +4,7 @@ use swc_core::{ common::util::take::Take, ecma::{ ast::{BlockStmt, Expr, Id, ImportSpecifier, Module, ModuleDecl, ModuleExportName, ModuleItem}, - visit::{as_folder, Fold, VisitMut, VisitMutWith, noop_visit_mut_type}, + visit::{as_folder, noop_visit_mut_type, Fold, VisitMut, VisitMutWith}, }, }; use swc_plugins_utils::ClearMark; diff --git a/crates/plugin_react_utils/src/remove_prop_types.rs b/crates/plugin_react_utils/src/remove_prop_types.rs index 638e458..38e2a61 100644 --- a/crates/plugin_react_utils/src/remove_prop_types.rs +++ b/crates/plugin_react_utils/src/remove_prop_types.rs @@ -13,7 +13,10 @@ use swc_core::{ Ident, ImportDecl, ImportSpecifier, Module, ModuleDecl, ModuleItem, PropName, Stmt, VarDecl, }, atoms::JsWord, - visit::{as_folder, Fold, Visit, VisitMut, VisitMutWith, VisitWith, noop_visit_mut_type, noop_visit_type}, + visit::{ + as_folder, noop_visit_mut_type, noop_visit_type, Fold, Visit, VisitMut, VisitMutWith, + VisitWith, + }, }, quote, }; diff --git a/crates/plugin_ssr_loader_id/src/lib.rs b/crates/plugin_ssr_loader_id/src/lib.rs index ee18493..3138988 100644 --- a/crates/plugin_ssr_loader_id/src/lib.rs +++ b/crates/plugin_ssr_loader_id/src/lib.rs @@ -1,4 +1,5 @@ #![feature(let_chains)] +#![allow(clippy::arc_with_non_send_sync)] use std::sync::Arc; use serde::Deserialize; @@ -100,7 +101,7 @@ impl<'a> PluginSSRLoaderId { import_func_name: &Option, ) -> Option<()> { let Some(func_name) = import_func_name else { - return None; + return None; }; let loader_name = func_name.0.to_lowercase(); @@ -139,7 +140,7 @@ impl<'a> PluginSSRLoaderId { use swc_core::ecma::ast::Prop; let Some(func_name) = import_func_name else { - return None; + return None; }; let callee = call_expr diff --git a/crates/swc_plugins_core/src/transform.rs b/crates/swc_plugins_core/src/transform.rs index 5916c6c..892520d 100644 --- a/crates/swc_plugins_core/src/transform.rs +++ b/crates/swc_plugins_core/src/transform.rs @@ -1,3 +1,5 @@ +#![allow(clippy::arc_with_non_send_sync)] + use std::{path::PathBuf, sync::Arc}; use anyhow::Result; diff --git a/rust-toolchain b/rust-toolchain index efc107d..cf53f1c 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2022-12-15 \ No newline at end of file +nightly-2023-07-03 \ No newline at end of file