Skip to content

Commit 558ca40

Browse files
authoredMay 22, 2023
fix(swc_core): Correctly expose plugin with host (#7427)
**Description:** Following up #7422, `swc_core::plugin` itself is not exposed to `__plugin_transform_host`, so still not able to access the inner plugin proxy.
1 parent 7964e1c commit 558ca40

File tree

2 files changed

+69
-9
lines changed

2 files changed

+69
-9
lines changed
 

‎crates/swc_core/src/lib.rs

+12-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,18 @@ pub mod quote;
1212
pub extern crate swc_ecma_quote_macros;
1313

1414
// Plugins
15-
#[cfg(feature = "__common_plugin_transform")]
16-
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
15+
#[cfg(any(
16+
docsrs,
17+
feature = "__common_plugin_transform",
18+
feature = "__plugin_transform_host"
19+
))]
20+
#[cfg_attr(
21+
docsrs,
22+
doc(cfg(any(
23+
feature = "__common_plugin_transform",
24+
feature = "__plugin_transform_host"
25+
)))
26+
)]
1727
pub mod plugin;
1828

1929
#[cfg(feature = "__ecma")]

‎crates/swc_core/src/plugin.rs

+57-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,32 @@
11
// #[plugin_transform] macro
2-
#[cfg(any(docsrs, feature = "__common_plugin_transform"))]
3-
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
4-
pub use swc_plugin_macro::{css_plugin_transform, plugin_transform};
2+
#[cfg(any(
3+
docsrs,
4+
feature = "__common_plugin_transform",
5+
feature = "__css_plugin_transform",
6+
))]
7+
#[cfg_attr(
8+
docsrs,
9+
doc(cfg(any(
10+
feature = "__common_plugin_transform",
11+
feature = "__css_plugin_transform"
12+
)))
13+
)]
14+
pub use swc_plugin_macro::css_plugin_transform;
15+
#[cfg(any(
16+
docsrs,
17+
feature = "__common_plugin_transform",
18+
feature = "__css_plugin_transform",
19+
feature = "__ecma_plugin_transform"
20+
))]
21+
#[cfg_attr(
22+
docsrs,
23+
doc(cfg(any(
24+
feature = "__common_plugin_transform",
25+
feature = "__css_plugin_transform",
26+
feature = "__ecma_plugin_transform"
27+
)))
28+
)]
29+
pub use swc_plugin_macro::plugin_transform;
530

631
/// exported __alloc / __free fn for the guest (plugin)
732
/// allows to allocate memory from the host side.
@@ -13,8 +38,20 @@ pub mod memory {
1338

1439
/// Global HANDLER implementation for the plugin
1540
/// for error reporting.
16-
#[cfg(any(docsrs, feature = "__common_plugin_transform"))]
17-
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
41+
#[cfg(any(
42+
docsrs,
43+
feature = "__common_plugin_transform",
44+
feature = "__css_plugin_transform",
45+
feature = "__ecma_plugin_transform"
46+
))]
47+
#[cfg_attr(
48+
docsrs,
49+
doc(cfg(any(
50+
feature = "__common_plugin_transform",
51+
feature = "__css_plugin_transform",
52+
feature = "__ecma_plugin_transform"
53+
)))
54+
)]
1855
pub mod errors {
1956
/// global context HANDLER in plugin's transform function.
2057
pub static HANDLER: swc_plugin::pseudo_scoped_key::PseudoScopedKey<
@@ -25,14 +62,27 @@ pub mod errors {
2562
}
2663

2764
/// Plugin's environment metadata context.
28-
#[cfg(any(docsrs, feature = "__common_plugin_transform"))]
29-
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
65+
#[cfg(any(
66+
docsrs,
67+
feature = "__common_plugin_transform",
68+
feature = "__css_plugin_transform",
69+
feature = "__ecma_plugin_transform"
70+
))]
71+
#[cfg_attr(
72+
docsrs,
73+
doc(cfg(any(
74+
feature = "__common_plugin_transform",
75+
feature = "__css_plugin_transform",
76+
feature = "__ecma_plugin_transform"
77+
)))
78+
)]
3079
pub mod metadata {
3180
pub use swc_common::plugin::metadata::TransformPluginMetadataContextKind;
3281
pub use swc_plugin_proxy::TransformPluginProgramMetadata;
3382
}
3483

3584
/// Proxy to the host's data not attached to the AST, like sourcemap / comments.
85+
/// Or interfaces to setup the plugin's environment from the host.
3686
#[cfg(any(
3787
docsrs,
3888
feature = "__common_plugin_transform",

1 commit comments

Comments
 (1)

github-actions[bot] commented on May 22, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 558ca40 Previous: cfdd407 Ratio
es/full/bugs-1 320654 ns/iter (± 29888) 248404 ns/iter (± 8722) 1.29
es/full/minify/libraries/antd 1726931603 ns/iter (± 46173552) 1202190787 ns/iter (± 7707390) 1.44
es/full/minify/libraries/d3 325282756 ns/iter (± 16332066) 246075649 ns/iter (± 4405849) 1.32
es/full/minify/libraries/echarts 1352971112 ns/iter (± 82923360) 959374212 ns/iter (± 16833344) 1.41
es/full/minify/libraries/jquery 92158602 ns/iter (± 1314897) 77589797 ns/iter (± 576625) 1.19
es/full/minify/libraries/lodash 107666512 ns/iter (± 1042651) 87127878 ns/iter (± 200905) 1.24
es/full/minify/libraries/moment 53580968 ns/iter (± 258267) 44986290 ns/iter (± 155467) 1.19
es/full/minify/libraries/react 19753027 ns/iter (± 266289) 16321436 ns/iter (± 32553) 1.21
es/full/minify/libraries/terser 260203504 ns/iter (± 5331751) 200579176 ns/iter (± 1839658) 1.30
es/full/minify/libraries/three 463063533 ns/iter (± 9481667) 340529280 ns/iter (± 2497665) 1.36
es/full/minify/libraries/typescript 3259356095 ns/iter (± 71448964) 2415167106 ns/iter (± 16731851) 1.35
es/full/minify/libraries/victory 687075828 ns/iter (± 14043679) 508213266 ns/iter (± 3422960) 1.35
es/full/minify/libraries/vue 147978330 ns/iter (± 5704575) 109870002 ns/iter (± 839103) 1.35
es/full/codegen/es3 33816 ns/iter (± 73) 31116 ns/iter (± 74) 1.09
es/full/codegen/es5 33977 ns/iter (± 58) 31181 ns/iter (± 100) 1.09
es/full/codegen/es2015 33880 ns/iter (± 41) 31053 ns/iter (± 67) 1.09
es/full/codegen/es2016 33869 ns/iter (± 56) 31146 ns/iter (± 77) 1.09
es/full/codegen/es2017 33889 ns/iter (± 55) 31086 ns/iter (± 38) 1.09
es/full/codegen/es2018 33897 ns/iter (± 52) 31130 ns/iter (± 98) 1.09
es/full/codegen/es2019 33913 ns/iter (± 44) 31101 ns/iter (± 97) 1.09
es/full/codegen/es2020 33939 ns/iter (± 59) 31129 ns/iter (± 72) 1.09
es/full/all/es3 182523785 ns/iter (± 3071956) 155145003 ns/iter (± 903883) 1.18
es/full/all/es5 176029261 ns/iter (± 2924067) 148490395 ns/iter (± 1472844) 1.19
es/full/all/es2015 137657442 ns/iter (± 1889625) 109819779 ns/iter (± 531788) 1.25
es/full/all/es2016 136449116 ns/iter (± 1702888) 109356049 ns/iter (± 401253) 1.25
es/full/all/es2017 136426330 ns/iter (± 2518026) 108454233 ns/iter (± 653085) 1.26
es/full/all/es2018 132097905 ns/iter (± 1731706) 106778809 ns/iter (± 667433) 1.24
es/full/all/es2019 129574302 ns/iter (± 1649040) 106259886 ns/iter (± 948181) 1.22
es/full/all/es2020 120035912 ns/iter (± 558837) 100453799 ns/iter (± 341931) 1.19
es/full/parser 520677 ns/iter (± 7947) 455530 ns/iter (± 6001) 1.14
es/full/base/fixer 22664 ns/iter (± 29) 18858 ns/iter (± 113) 1.20
es/full/base/resolver_and_hygiene 86611 ns/iter (± 99) 74306 ns/iter (± 154) 1.17
serialization of serde 123 ns/iter (± 1) 127 ns/iter (± 0) 0.97
css/minify/libraries/bootstrap 27218415 ns/iter (± 215032) 23456196 ns/iter (± 27172) 1.16
css/visitor/compare/clone 2130001 ns/iter (± 10068) 1666553 ns/iter (± 3393) 1.28
css/visitor/compare/visit_mut_span 2331151 ns/iter (± 4652) 1792286 ns/iter (± 4762) 1.30
css/visitor/compare/visit_mut_span_panic 2373736 ns/iter (± 6781) 1868486 ns/iter (± 7779) 1.27
css/visitor/compare/fold_span 3095300 ns/iter (± 25719) 2577551 ns/iter (± 8689) 1.20
css/visitor/compare/fold_span_panic 3231481 ns/iter (± 24118) 2764081 ns/iter (± 8542) 1.17
css/lexer/bootstrap_5_1_3 5156480 ns/iter (± 11131) 4514664 ns/iter (± 2634) 1.14
css/lexer/foundation_6_7_4 4345266 ns/iter (± 2082) 3781133 ns/iter (± 1806) 1.15
css/lexer/tailwind_3_1_1 825929 ns/iter (± 492) 718750 ns/iter (± 262) 1.15
css/parser/bootstrap_5_1_3 20981142 ns/iter (± 46832) 17917834 ns/iter (± 13475) 1.17
css/parser/foundation_6_7_4 16868380 ns/iter (± 74546) 14393535 ns/iter (± 12979) 1.17
css/parser/tailwind_3_1_1 3241380 ns/iter (± 2859) 2775030 ns/iter (± 4764) 1.17
es/codegen/colors 730922 ns/iter (± 395750) 736053 ns/iter (± 401726) 0.99
es/codegen/large 3133300 ns/iter (± 1656124) 2969701 ns/iter (± 1577670) 1.06
es/codegen/with-parser/colors 48562 ns/iter (± 273) 42470 ns/iter (± 513) 1.14
es/codegen/with-parser/large 519063 ns/iter (± 1038) 465052 ns/iter (± 887) 1.12
es/minify/libraries/antd 1445262570 ns/iter (± 25035411) 1055342116 ns/iter (± 4563928) 1.37
es/minify/libraries/d3 264029164 ns/iter (± 4425712) 213129515 ns/iter (± 2409065) 1.24
es/minify/libraries/echarts 1092941528 ns/iter (± 8917704) 837109095 ns/iter (± 16707198) 1.31
es/minify/libraries/jquery 81634619 ns/iter (± 355428) 68569351 ns/iter (± 114443) 1.19
es/minify/libraries/lodash 97282463 ns/iter (± 528573) 79279416 ns/iter (± 204899) 1.23
es/minify/libraries/moment 47564672 ns/iter (± 329547) 40259983 ns/iter (± 108928) 1.18
es/minify/libraries/react 17462498 ns/iter (± 99511) 14856552 ns/iter (± 49021) 1.18
es/minify/libraries/terser 217371037 ns/iter (± 1722576) 174491121 ns/iter (± 322093) 1.25
es/minify/libraries/three 379971686 ns/iter (± 5342044) 289424128 ns/iter (± 916281) 1.31
es/minify/libraries/typescript 2672396144 ns/iter (± 13951306) 2098070333 ns/iter (± 8006055) 1.27
es/minify/libraries/victory 594414895 ns/iter (± 9763427) 443625371 ns/iter (± 11109168) 1.34
es/minify/libraries/vue 122389242 ns/iter (± 1092783) 99419830 ns/iter (± 301465) 1.23
es/visitor/compare/clone 2342275 ns/iter (± 4399) 2000070 ns/iter (± 5326) 1.17
es/visitor/compare/visit_mut_span 2713533 ns/iter (± 80290) 2336931 ns/iter (± 9166) 1.16
es/visitor/compare/visit_mut_span_panic 2741286 ns/iter (± 9238) 2374516 ns/iter (± 8623) 1.15
es/visitor/compare/fold_span 3833391 ns/iter (± 7516) 3413920 ns/iter (± 10710) 1.12
es/visitor/compare/fold_span_panic 3949699 ns/iter (± 7617) 3556246 ns/iter (± 10554) 1.11
es/lexer/colors 13141 ns/iter (± 8) 11266 ns/iter (± 17) 1.17
es/lexer/angular 6427383 ns/iter (± 2812) 5573210 ns/iter (± 2791) 1.15
es/lexer/backbone 795271 ns/iter (± 904) 720804 ns/iter (± 1206) 1.10
es/lexer/jquery 4474268 ns/iter (± 3981) 4078502 ns/iter (± 3693) 1.10
es/lexer/jquery mobile 6947302 ns/iter (± 7386) 6338462 ns/iter (± 3869) 1.10
es/lexer/mootools 3499668 ns/iter (± 2394) 3220245 ns/iter (± 2357) 1.09
es/lexer/underscore 657445 ns/iter (± 513) 593436 ns/iter (± 667) 1.11
es/lexer/three 21049042 ns/iter (± 16633) 19265042 ns/iter (± 23466) 1.09
es/lexer/yui 3911745 ns/iter (± 3380) 3550559 ns/iter (± 3016) 1.10
es/parser/colors 28744 ns/iter (± 60) 25442 ns/iter (± 140) 1.13
es/parser/angular 15082611 ns/iter (± 133805) 13052246 ns/iter (± 55214) 1.16
es/parser/backbone 2186051 ns/iter (± 15695) 1932193 ns/iter (± 7585) 1.13
es/parser/jquery 11875436 ns/iter (± 116103) 10496622 ns/iter (± 52819) 1.13
es/parser/jquery mobile 18484827 ns/iter (± 148301) 16121785 ns/iter (± 41414) 1.15
es/parser/mootools 9039963 ns/iter (± 23180) 8066262 ns/iter (± 13861) 1.12
es/parser/underscore 1848090 ns/iter (± 11962) 1665356 ns/iter (± 6538) 1.11
es/parser/three 55103536 ns/iter (± 242364) 45238816 ns/iter (± 498569) 1.22
es/parser/yui 9122632 ns/iter (± 52525) 7987696 ns/iter (± 33445) 1.14
es/preset-env/usage/builtin_type 142426 ns/iter (± 34844) 146982 ns/iter (± 39693) 0.97
es/preset-env/usage/property 19875 ns/iter (± 77) 15362 ns/iter (± 54) 1.29
es/resolver/typescript 121107258 ns/iter (± 1979892) 87297561 ns/iter (± 737528) 1.39
es/fixer/typescript 84485398 ns/iter (± 751479) 64264804 ns/iter (± 1004628) 1.31
es/hygiene/typescript 185324248 ns/iter (± 2771922) 129105826 ns/iter (± 902118) 1.44
es/resolver_with_hygiene/typescript 322547162 ns/iter (± 4163996) 231254506 ns/iter (± 1093522) 1.39
es/visitor/base-perf/module_clone 81011 ns/iter (± 536) 59271 ns/iter (± 374) 1.37
es/visitor/base-perf/fold_empty 91088 ns/iter (± 536) 62537 ns/iter (± 210) 1.46
es/visitor/base-perf/fold_noop_impl_all 90734 ns/iter (± 485) 62769 ns/iter (± 133) 1.45
es/visitor/base-perf/fold_noop_impl_vec 91049 ns/iter (± 316) 63375 ns/iter (± 318) 1.44
es/visitor/base-perf/boxing_boxed_clone 58 ns/iter (± 0) 53 ns/iter (± 0) 1.09
es/visitor/base-perf/boxing_unboxed_clone 41 ns/iter (± 0) 36 ns/iter (± 0) 1.14
es/visitor/base-perf/boxing_boxed 102 ns/iter (± 0) 110 ns/iter (± 0) 0.93
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 76 ns/iter (± 0) 1.03
es/visitor/base-perf/visit_contains_this 3493 ns/iter (± 54) 2736 ns/iter (± 41) 1.28
es/base/parallel/resolver/typescript 6483833751 ns/iter (± 654363046) 3607065940 ns/iter (± 273960871) 1.80
es/base/parallel/hygiene/typescript 2242688275 ns/iter (± 33502290) 1432965389 ns/iter (± 10081015) 1.57
misc/visitors/time-complexity/time 5 102 ns/iter (± 0) 107 ns/iter (± 0) 0.95
misc/visitors/time-complexity/time 10 318 ns/iter (± 6) 313 ns/iter (± 2) 1.02
misc/visitors/time-complexity/time 15 626 ns/iter (± 7) 718 ns/iter (± 72) 0.87
misc/visitors/time-complexity/time 20 1162 ns/iter (± 14) 1163 ns/iter (± 75) 1.00
misc/visitors/time-complexity/time 40 6062 ns/iter (± 41) 3843 ns/iter (± 4) 1.58
misc/visitors/time-complexity/time 60 15275 ns/iter (± 82) 9495 ns/iter (± 651) 1.61
es/full-target/es2016 253689 ns/iter (± 242) 223295 ns/iter (± 1682) 1.14
es/full-target/es2017 246466 ns/iter (± 359) 212995 ns/iter (± 1077) 1.16
es/full-target/es2018 235544 ns/iter (± 544) 202235 ns/iter (± 819) 1.16
es2020_nullish_coalescing 93170 ns/iter (± 389) 68304 ns/iter (± 419) 1.36
es2020_optional_chaining 124502 ns/iter (± 317) 94865 ns/iter (± 696) 1.31
es2022_class_properties 149998 ns/iter (± 352) 115754 ns/iter (± 451) 1.30
es2018_object_rest_spread 96433 ns/iter (± 207) 73002 ns/iter (± 310) 1.32
es2019_optional_catch_binding 85759 ns/iter (± 189) 62800 ns/iter (± 164) 1.37
es2017_async_to_generator 86320 ns/iter (± 273) 63304 ns/iter (± 138) 1.36
es2016_exponentiation 90451 ns/iter (± 256) 67145 ns/iter (± 335) 1.35
es2015_arrow 94466 ns/iter (± 169) 71321 ns/iter (± 370) 1.32
es2015_block_scoped_fn 91656 ns/iter (± 181) 67655 ns/iter (± 223) 1.35
es2015_block_scoping 170354 ns/iter (± 243) 119601 ns/iter (± 446) 1.42

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.