@swc/plugin-styled-jsx 1.5.75 → 1.5.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/Cargo.toml +3 -2
  2. package/package.json +1 -1
  3. package/src/lib.rs +10 -3
  4. package/swc_plugin_styled_jsx.wasm +0 -0
  5. package/transform/Cargo.toml +10 -3
  6. package/transform/src/lib.rs +2 -1
  7. package/transform/src/transform_css_swc.rs +394 -0
  8. package/transform/src/visitor.rs +43 -10
  9. package/transform/tests/errors/nested-style-tags/output.js +31 -4
  10. package/transform/tests/errors/ts-with-css-resolve/output.js +1 -1
  11. package/transform/tests/fixture/absent/output.swc.js +7 -0
  12. package/transform/tests/fixture/attribute-generation-classname-rewriting/output.swc.js +112 -0
  13. package/transform/tests/fixture/attribute-generation-modes/output.swc.js +228 -0
  14. package/transform/tests/fixture/class/output.swc.js +12 -0
  15. package/transform/tests/fixture/comments/output.swc.js +12 -0
  16. package/transform/tests/fixture/component-attribute/output.swc.js +10 -0
  17. package/transform/tests/fixture/conflicts/output.swc.js +14 -0
  18. package/transform/tests/fixture/css-selector-after-pseudo/output.swc.js +11 -0
  19. package/transform/tests/fixture/css-tag-same-file/output.swc.js +21 -0
  20. package/transform/tests/fixture/different-jsx-ids/output.swc.js +24 -0
  21. package/transform/tests/fixture/dynamic-element/output.swc.js +40 -0
  22. package/transform/tests/fixture/dynamic-element-class/output.swc.js +25 -0
  23. package/transform/tests/fixture/dynamic-element-external/output.swc.js +12 -0
  24. package/transform/tests/fixture/dynamic-this-in-arrow/output.swc.js +39 -0
  25. package/transform/tests/fixture/exported-jsx-style/output.swc.js +1 -0
  26. package/transform/tests/fixture/exported-non-jsx-style/output.swc.js +1 -0
  27. package/transform/tests/fixture/external-nested-scope/output.swc.js +7 -0
  28. package/transform/tests/fixture/external-stylesheet/output.swc.js +34 -0
  29. package/transform/tests/fixture/external-stylesheet-global/output.swc.js +18 -0
  30. package/transform/tests/fixture/external-stylesheet-multi-line/output.swc.js +9 -0
  31. package/transform/tests/fixture/fragment/output.swc.js +47 -0
  32. package/transform/tests/fixture/global/output.swc.js +7 -0
  33. package/transform/tests/fixture/global-child-selector/output.swc.js +8 -0
  34. package/transform/tests/fixture/global-redundant/output.swc.js +10 -0
  35. package/transform/tests/fixture/issue-30480/output.swc.js +15 -0
  36. package/transform/tests/fixture/issue-30570/output.swc.js +12 -0
  37. package/transform/tests/fixture/issue-31562-interpolation-in-mdea/output.swc.js +43 -0
  38. package/transform/tests/fixture/mixed-global-scoped/output.swc.js +11 -0
  39. package/transform/tests/fixture/multiple-jsx/output.swc.js +32 -0
  40. package/transform/tests/fixture/next-54653/output.swc.js +3 -0
  41. package/transform/tests/fixture/non-styled-jsx-style/output.swc.js +12 -0
  42. package/transform/tests/fixture/not-styled-jsx-tagged-templates/{output.js → output.lightningcss.js} +1 -2
  43. package/transform/tests/fixture/not-styled-jsx-tagged-templates/output.swc.js +23 -0
  44. package/transform/tests/fixture/number-after-placeholder/output.swc.js +17 -0
  45. package/transform/tests/fixture/one-off-global-selectors/output.swc.js +8 -0
  46. package/transform/tests/fixture/source-maps/output.swc.js +8 -0
  47. package/transform/tests/fixture/styles/output.swc.js +39 -0
  48. package/transform/tests/fixture/styles-external-invalid/output.swc.js +9 -0
  49. package/transform/tests/fixture/styles-external-invalid2/output.swc.js +8 -0
  50. package/transform/tests/fixture/styles2/output.swc.js +5 -0
  51. package/transform/tests/fixture/too-many/output.swc.js +49 -0
  52. package/transform/tests/fixture/tpl-escape-1/output.swc.js +12 -0
  53. package/transform/tests/fixture/tpl-escape-2/output.swc.js +17 -0
  54. package/transform/tests/fixture/tpl-placeholder-1-as-property/output.swc.js +28 -0
  55. package/transform/tests/fixture/tpl-placeholder-2-as-part-of-value/output.swc.js +34 -0
  56. package/transform/tests/fixture/tpl-placeholder-3-as-value/output.swc.js +28 -0
  57. package/transform/tests/fixture/tpl-placeholder-4-as-part-of-value-in-multiple/output.swc.js +31 -0
  58. package/transform/tests/fixture/tpl-placeholder-5-values-of-multiple-properties/output.swc.js +31 -0
  59. package/transform/tests/fixture/transform-css/output.swc.js +8 -0
  60. package/transform/tests/fixture/transform-css-complex-selector/output.swc.js +8 -0
  61. package/transform/tests/fixture/transform-css-complex-selector-2/output.swc.js +8 -0
  62. package/transform/tests/fixture/transform-css-global/output.swc.js +8 -0
  63. package/transform/tests/fixture/transform-css-media-query/output.swc.js +8 -0
  64. package/transform/tests/fixture/transform-css-normal/output.swc.js +8 -0
  65. package/transform/tests/fixture/transform-css-nth-1/output.swc.js +8 -0
  66. package/transform/tests/fixture/whitespace/output.lightningcss.js +12 -0
  67. package/transform/tests/fixture/whitespace/output.swc.js +12 -0
  68. package/transform/tests/fixture.rs +55 -38
  69. package/transform/tests/fixture/.expressions/output.js +0 -91
  70. package/transform/tests/fixture/nested-style-tags/output.js +0 -0
  71. /package/transform/src/{transform_css.rs → transform_css_lightningcss.rs} +0 -0
  72. /package/transform/tests/fixture/absent/{output.js → output.lightningcss.js} +0 -0
  73. /package/transform/tests/fixture/attribute-generation-classname-rewriting/{output.js → output.lightningcss.js} +0 -0
  74. /package/transform/tests/fixture/attribute-generation-modes/{output.js → output.lightningcss.js} +0 -0
  75. /package/transform/tests/fixture/class/{output.js → output.lightningcss.js} +0 -0
  76. /package/transform/tests/fixture/comments/{output.js → output.lightningcss.js} +0 -0
  77. /package/transform/tests/fixture/component-attribute/{output.js → output.lightningcss.js} +0 -0
  78. /package/transform/tests/fixture/conflicts/{output.js → output.lightningcss.js} +0 -0
  79. /package/transform/tests/fixture/css-selector-after-pseudo/{output.js → output.lightningcss.js} +0 -0
  80. /package/transform/tests/fixture/css-tag-same-file/{output.js → output.lightningcss.js} +0 -0
  81. /package/transform/tests/fixture/different-jsx-ids/{output.js → output.lightningcss.js} +0 -0
  82. /package/transform/tests/fixture/dynamic-element/{output.js → output.lightningcss.js} +0 -0
  83. /package/transform/tests/fixture/dynamic-element-class/{output.js → output.lightningcss.js} +0 -0
  84. /package/transform/tests/fixture/dynamic-element-external/{output.js → output.lightningcss.js} +0 -0
  85. /package/transform/tests/fixture/dynamic-this-in-arrow/{output.js → output.lightningcss.js} +0 -0
  86. /package/transform/tests/fixture/exported-jsx-style/{output.js → output.lightningcss.js} +0 -0
  87. /package/transform/tests/fixture/exported-non-jsx-style/{output.js → output.lightningcss.js} +0 -0
  88. /package/transform/tests/fixture/external-nested-scope/{output.js → output.lightningcss.js} +0 -0
  89. /package/transform/tests/fixture/external-stylesheet/{output.js → output.lightningcss.js} +0 -0
  90. /package/transform/tests/fixture/external-stylesheet-global/{output.js → output.lightningcss.js} +0 -0
  91. /package/transform/tests/fixture/external-stylesheet-multi-line/{output.js → output.lightningcss.js} +0 -0
  92. /package/transform/tests/fixture/fragment/{output.js → output.lightningcss.js} +0 -0
  93. /package/transform/tests/fixture/global/{output.js → output.lightningcss.js} +0 -0
  94. /package/transform/tests/fixture/global-child-selector/{output.js → output.lightningcss.js} +0 -0
  95. /package/transform/tests/fixture/global-redundant/{output.js → output.lightningcss.js} +0 -0
  96. /package/transform/tests/fixture/issue-30480/{output.js → output.lightningcss.js} +0 -0
  97. /package/transform/tests/fixture/issue-30570/{output.js → output.lightningcss.js} +0 -0
  98. /package/transform/tests/fixture/issue-31562-interpolation-in-mdea/{output.js → output.lightningcss.js} +0 -0
  99. /package/transform/tests/fixture/mixed-global-scoped/{output.js → output.lightningcss.js} +0 -0
  100. /package/transform/tests/fixture/multiple-jsx/{output.js → output.lightningcss.js} +0 -0
  101. /package/transform/tests/fixture/next-54653/{output.js → output.lightningcss.js} +0 -0
  102. /package/transform/tests/fixture/non-styled-jsx-style/{output.js → output.lightningcss.js} +0 -0
  103. /package/transform/tests/fixture/number-after-placeholder/{output.js → output.lightningcss.js} +0 -0
  104. /package/transform/tests/fixture/one-off-global-selectors/{output.js → output.lightningcss.js} +0 -0
  105. /package/transform/tests/fixture/source-maps/{output.js → output.lightningcss.js} +0 -0
  106. /package/transform/tests/fixture/stateless/{output.js → output.lightningcss.js} +0 -0
  107. /package/transform/tests/fixture/{whitespace/output.js → stateless/output.swc.js} +0 -0
  108. /package/transform/tests/fixture/styles/{output.js → output.lightningcss.js} +0 -0
  109. /package/transform/tests/fixture/styles-external-invalid/{output.js → output.lightningcss.js} +0 -0
  110. /package/transform/tests/fixture/styles-external-invalid2/{output.js → output.lightningcss.js} +0 -0
  111. /package/transform/tests/fixture/styles2/{output.js → output.lightningcss.js} +0 -0
  112. /package/transform/tests/fixture/too-many/{output.js → output.lightningcss.js} +0 -0
  113. /package/transform/tests/fixture/tpl-escape-1/{output.js → output.lightningcss.js} +0 -0
  114. /package/transform/tests/fixture/tpl-escape-2/{output.js → output.lightningcss.js} +0 -0
  115. /package/transform/tests/fixture/tpl-placeholder-1-as-property/{output.js → output.lightningcss.js} +0 -0
  116. /package/transform/tests/fixture/tpl-placeholder-2-as-part-of-value/{output.js → output.lightningcss.js} +0 -0
  117. /package/transform/tests/fixture/tpl-placeholder-3-as-value/{output.js → output.lightningcss.js} +0 -0
  118. /package/transform/tests/fixture/tpl-placeholder-4-as-part-of-value-in-multiple/{output.js → output.lightningcss.js} +0 -0
  119. /package/transform/tests/fixture/tpl-placeholder-5-values-of-multiple-properties/{output.js → output.lightningcss.js} +0 -0
  120. /package/transform/tests/fixture/transform-css/{output.js → output.lightningcss.js} +0 -0
  121. /package/transform/tests/fixture/transform-css-complex-selector/{output.js → output.lightningcss.js} +0 -0
  122. /package/transform/tests/fixture/transform-css-complex-selector-2/{output.js → output.lightningcss.js} +0 -0
  123. /package/transform/tests/fixture/transform-css-global/{output.js → output.lightningcss.js} +0 -0
  124. /package/transform/tests/fixture/transform-css-media-query/{output.js → output.lightningcss.js} +0 -0
  125. /package/transform/tests/fixture/transform-css-normal/{output.js → output.lightningcss.js} +0 -0
  126. /package/transform/tests/fixture/transform-css-nth-1/{output.js → output.lightningcss.js} +0 -0
@@ -0,0 +1,8 @@
1
+ import _JSXStyle from "styled-jsx/style";
2
+ export default (()=><div className={"jsx-1a19bb4817c105dd"}>
3
+
4
+ <p className={"jsx-1a19bb4817c105dd"}>test</p>
5
+
6
+ <_JSXStyle id={"1a19bb4817c105dd"}>{'p.jsx-1a19bb4817c105dd{color:red}p.jsx-1a19bb4817c105dd{color:red}*.jsx-1a19bb4817c105dd{color:blue}[href="woot"].jsx-1a19bb4817c105dd{color:red}'}</_JSXStyle>
7
+
8
+ </div>);
@@ -0,0 +1,8 @@
1
+ import _JSXStyle from "styled-jsx/style";
2
+ export default (()=><div className={"jsx-938ca197692ef624"}>
3
+
4
+ <p className={"jsx-938ca197692ef624"}>test</p>
5
+
6
+ <_JSXStyle id={"938ca197692ef624"}>{"li.jsx-938ca197692ef624:nth-child(2){color:lime}"}</_JSXStyle>
7
+
8
+ </div>);
@@ -0,0 +1,12 @@
1
+ import _JSXStyle from "styled-jsx/style";
2
+ export default (()=><div className={"jsx-94239b6d6b42c9b5"}>
3
+
4
+ <p className={"jsx-94239b6d6b42c9b5"}>test</p>
5
+
6
+ <p className={"jsx-94239b6d6b42c9b5"}>woot</p>
7
+
8
+ <p className={"jsx-94239b6d6b42c9b5"}>woot</p>
9
+
10
+ <_JSXStyle id={"94239b6d6b42c9b5"}>{"p.jsx-94239b6d6b42c9b5{color:red}"}</_JSXStyle>
11
+
12
+ </div>);
@@ -0,0 +1,12 @@
1
+ import _JSXStyle from "styled-jsx/style";
2
+ export default (()=><div className={"jsx-94239b6d6b42c9b5"}>
3
+
4
+ <p className={"jsx-94239b6d6b42c9b5"}>test</p>
5
+
6
+ <p className={"jsx-94239b6d6b42c9b5"}>woot</p>
7
+
8
+ <p className={"jsx-94239b6d6b42c9b5"}>woot</p>
9
+
10
+ <_JSXStyle id={"94239b6d6b42c9b5"}>{"p.jsx-94239b6d6b42c9b5{color:red}"}</_JSXStyle>
11
+
12
+ </div>);
@@ -22,47 +22,56 @@ fn syntax() -> Syntax {
22
22
 
23
23
  #[fixture("tests/fixture/**/input.js")]
24
24
  fn styled_jsx_fixture(input: PathBuf) {
25
- let output = input.parent().unwrap().join("output.js");
26
- test_fixture(
27
- syntax(),
28
- &|t| {
29
- chain!(
30
- resolver(Mark::new(), Mark::new(), false),
31
- styled_jsx(
32
- t.cm.clone(),
33
- FileName::Real(PathBuf::from("/some-project/src/some-file.js"))
25
+ for use_lightningcss in [true, false] {
26
+ let output = input.parent().unwrap().join(if use_lightningcss {
27
+ "output.lightningcss.js"
28
+ } else {
29
+ "output.swc.js"
30
+ });
31
+
32
+ test_fixture(
33
+ syntax(),
34
+ &|t| {
35
+ chain!(
36
+ resolver(Mark::new(), Mark::new(), false),
37
+ styled_jsx(
38
+ t.cm.clone(),
39
+ FileName::Real(PathBuf::from("/some-project/src/some-file.js")),
40
+ styled_jsx::visitor::Config { use_lightningcss }
41
+ )
34
42
  )
35
- )
36
- },
37
- &input,
38
- &output,
39
- Default::default(),
40
- );
43
+ },
44
+ &input,
45
+ &output,
46
+ Default::default(),
47
+ );
41
48
 
42
- test_fixture(
43
- syntax(),
44
- &|t| {
45
- // `resolver` uses `Mark` which is stored in a thread-local storage (namely
46
- // swc_common::GLOBALS), and this loop will make `Mark` to be different from the
47
- // invocation above.
48
- //
49
- // 1000 is used because in future I (kdy1) may optimize logic of resolver.
50
- for _ in 0..1000 {
51
- let _mark = Mark::fresh(Mark::root());
52
- }
49
+ test_fixture(
50
+ syntax(),
51
+ &|t| {
52
+ // `resolver` uses `Mark` which is stored in a thread-local storage (namely
53
+ // swc_common::GLOBALS), and this loop will make `Mark` to be different from the
54
+ // invocation above.
55
+ //
56
+ // 1000 is used because in future I (kdy1) may optimize logic of resolver.
57
+ for _ in 0..1000 {
58
+ let _mark = Mark::fresh(Mark::root());
59
+ }
53
60
 
54
- chain!(
55
- resolver(Mark::new(), Mark::new(), false),
56
- styled_jsx(
57
- t.cm.clone(),
58
- FileName::Real(PathBuf::from("/some-project/src/some-file.js"))
61
+ chain!(
62
+ resolver(Mark::new(), Mark::new(), false),
63
+ styled_jsx(
64
+ t.cm.clone(),
65
+ FileName::Real(PathBuf::from("/some-project/src/some-file.js")),
66
+ styled_jsx::visitor::Config { use_lightningcss }
67
+ )
59
68
  )
60
- )
61
- },
62
- &input,
63
- &output,
64
- Default::default(),
65
- );
69
+ },
70
+ &input,
71
+ &output,
72
+ Default::default(),
73
+ );
74
+ }
66
75
  }
67
76
 
68
77
  pub struct DropSpan;
@@ -82,7 +91,15 @@ fn styled_jsx_errors(input: PathBuf) {
82
91
 
83
92
  test_fixture(
84
93
  syntax(),
85
- &|t| styled_jsx(t.cm.clone(), file_name.clone()),
94
+ &|t| {
95
+ styled_jsx(
96
+ t.cm.clone(),
97
+ file_name.clone(),
98
+ styled_jsx::visitor::Config {
99
+ use_lightningcss: false,
100
+ },
101
+ )
102
+ },
86
103
  &input,
87
104
  &output,
88
105
  FixtureTestConfig {
@@ -1,91 +0,0 @@
1
- import _JSXStyle from "styled-jsx/style";
2
- const darken = (c)=>c;
3
- const color = 'red';
4
- const otherColor = 'green';
5
- const mediumScreen = '680px';
6
- const animationDuration = '200ms';
7
- const animationName = 'my-cool-animation';
8
- const obj = {
9
- display: 'block'
10
- };
11
- export default (({ display })=><div className={"jsx-b452af554142d27 " + _JSXStyle.dynamic([
12
- [
13
- "469c0b1cc43512b8",
14
- [
15
- display ? 'block' : 'none'
16
- ]
17
- ],
18
- [
19
- "d05e300c372f73ee",
20
- [
21
- darken(color) + 2
22
- ]
23
- ],
24
- [
25
- "72e421eb2017491a",
26
- [
27
- darken(color)
28
- ]
29
- ]
30
- ])}>
31
-
32
- <p className={"jsx-b452af554142d27 " + _JSXStyle.dynamic([
33
- [
34
- "469c0b1cc43512b8",
35
- [
36
- display ? 'block' : 'none'
37
- ]
38
- ],
39
- [
40
- "d05e300c372f73ee",
41
- [
42
- darken(color) + 2
43
- ]
44
- ],
45
- [
46
- "72e421eb2017491a",
47
- [
48
- darken(color)
49
- ]
50
- ]
51
- ])}>test</p>
52
-
53
- <_JSXStyle id={"cb56eab0db38d266"}>{`p.${color}.jsx-b452af554142d27{color:${otherColor};display:${obj.display}}`}</_JSXStyle>
54
-
55
- <_JSXStyle id={"94239b6d6b42c9b5"}>{"p.jsx-b452af554142d27{color:red}"}</_JSXStyle>
56
-
57
- <_JSXStyle id={"e66306ac259712aa"}>{`body{background:${color}}`}</_JSXStyle>
58
-
59
- <_JSXStyle id={"e66306ac259712aa"}>{`body{background:${color}}`}</_JSXStyle>
60
-
61
- // TODO: the next two should have the same hash
62
-
63
- <_JSXStyle id={"f08108daf927b99d"}>{`p.jsx-b452af554142d27{color:${color}}`}</_JSXStyle>
64
-
65
- <_JSXStyle id={"f08108daf927b99d"}>{`p.jsx-b452af554142d27{color:${color}}`}</_JSXStyle>
66
-
67
- <_JSXStyle id={"72e421eb2017491a"} dynamic={[
68
- darken(color)
69
- ]}>{`p.__jsx-style-dynamic-selector{color:${darken(color)}}`}</_JSXStyle>
70
-
71
- <_JSXStyle id={"d05e300c372f73ee"} dynamic={[
72
- darken(color) + 2
73
- ]}>{`p.__jsx-style-dynamic-selector{color:${darken(color) + 2}}`}</_JSXStyle>
74
-
75
- <_JSXStyle id={"7c5c5bde49d6c65d"}>{`@media(min-width:${mediumScreen}){p.jsx-b452af554142d27{color:green}p.jsx-b452af554142d27{color:${`red`}}}p.jsx-b452af554142d27{color:red}`}</_JSXStyle>
76
-
77
- <_JSXStyle id={"c5506be0b4762e0b"}>{`p.jsx-b452af554142d27{-webkit-animation-duration:${animationDuration};-moz-animation-duration:${animationDuration};-o-animation-duration:${animationDuration};animation-duration:${animationDuration}}`}</_JSXStyle>
78
-
79
- <_JSXStyle id={"ed798aa885be9084"}>{`p.jsx-b452af554142d27{-webkit-animation:${animationDuration} forwards ${animationName};-moz-animation:${animationDuration} forwards ${animationName};-o-animation:${animationDuration} forwards ${animationName};animation:${animationDuration} forwards ${animationName}}div.jsx-b452af554142d27{background:${color}}`}</_JSXStyle>
80
-
81
-
82
-
83
- <_JSXStyle id={"469c0b1cc43512b8"} dynamic={[
84
- display ? 'block' : 'none'
85
- ]}>{`span.__jsx-style-dynamic-selector{display:${display ? 'block' : 'none'}}`}</_JSXStyle>
86
-
87
- // TODO: causes bad syntax
88
-
89
- {}
90
-
91
- </div>);