359d03f899
This PR
- updates swc crates to a09bfc22f8
- resolves https://github.com/vercel/next.js/discussions/30237?sort=new#discussioncomment-2693663
- resolves https://github.com/vercel/next.js/discussions/30237?sort=new#discussioncomment-2749346
![image](https://user-images.githubusercontent.com/29931815/168412242-6b72fc0e-788e-446b-804e-f071e0e67b73.png)
- applies various bugfixes
58 lines
1.8 KiB
Rust
58 lines
1.8 KiB
Rust
use std::path::PathBuf;
|
|
|
|
use swc_common::{chain, comments::SingleThreadedComments, Mark};
|
|
use swc_ecma_transforms_testing::test_fixture;
|
|
use swc_ecmascript::{
|
|
parser::{Syntax, TsConfig},
|
|
transforms::react::{jsx, Runtime},
|
|
};
|
|
use swc_emotion::EmotionOptions;
|
|
use testing::fixture;
|
|
|
|
fn ts_syntax() -> Syntax {
|
|
Syntax::Typescript(TsConfig {
|
|
tsx: true,
|
|
..Default::default()
|
|
})
|
|
}
|
|
|
|
#[fixture("tests/fixture/*/input.tsx")]
|
|
fn next_emotion_fixture(input: PathBuf) {
|
|
let output = input.parent().unwrap().join("output.ts");
|
|
test_fixture(
|
|
ts_syntax(),
|
|
&|tr| {
|
|
let top_level_mark = Mark::fresh(Mark::root());
|
|
let jsx = jsx::<SingleThreadedComments>(
|
|
tr.cm.clone(),
|
|
Some(tr.comments.as_ref().clone()),
|
|
swc_ecmascript::transforms::react::Options {
|
|
next: false.into(),
|
|
runtime: Some(Runtime::Automatic),
|
|
throw_if_namespace: false.into(),
|
|
development: false.into(),
|
|
use_builtins: true.into(),
|
|
use_spread: true.into(),
|
|
..Default::default()
|
|
},
|
|
top_level_mark,
|
|
);
|
|
chain!(
|
|
swc_emotion::emotion(
|
|
EmotionOptions {
|
|
enabled: Some(true),
|
|
sourcemap: Some(true),
|
|
auto_label: Some(true),
|
|
..Default::default()
|
|
},
|
|
&PathBuf::from("input.ts"),
|
|
tr.cm.clone(),
|
|
tr.comments.as_ref().clone(),
|
|
),
|
|
jsx
|
|
)
|
|
},
|
|
&input,
|
|
&output,
|
|
);
|
|
}
|