swc updates

This commit is contained in:
Robin Appelman 2024-06-07 22:47:28 +02:00
commit 49a100bb61
11 changed files with 2759 additions and 2515 deletions

2027
build/bundlers/Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -4,23 +4,24 @@ version = "0.1.0"
edition = "2021"
[dependencies]
lightningcss = { version = "1.0.0-alpha.40", features = ["browserslist", "visitor"] }
lightningcss = { version = "1.0.0-alpha.57", features = ["browserslist", "visitor"] }
base64 = "0.21.0"
urlencoding = "2.1.2"
swc = "0.260.20"
swc_common = { version = "0.31.4", features = ["tty-emitter", "concurrent"] }
swc_core = { version = "0.75.20" }
swc_bundler = { version = "0.213.14" }
swc_ecma_loader = { version = "0.43.5", features = ["node", "cache"] }
swc_ecma_ast = { version = "0.103.4" }
swc_atoms = { version = "0.5.3" }
swc_ecma_parser = { version = "0.133.8", features = ["typescript"] }
swc_ecma_codegen = { version = "0.138.9" }
swc_ecma_transforms_base = { version = "0.126.10" }
swc_ecma_transforms_typescript = { version = "0.176.12" }
swc_ecma_visit = { version = "0.89.4" }
swc = "0.273.28"
swc_common = { version = "0.33", features = ["tty-emitter", "concurrent"] }
swc_core = { version = "0.90" }
swc_bundler = { version = "0.225.19" }
swc_ecma_loader = { version = "0.45.28", features = ["node", "cache"] }
swc_ecma_ast = { version = "0.112.8" }
swc_atoms = { version = "0.6.7" }
swc_ecma_parser = { version = "0.143.16", features = ["typescript"] }
swc_ecma_codegen = { version = "0.148.18" }
swc_ecma_transforms_base = { version = "0.137.21" }
swc_ecma_transforms_typescript = { version = "0.188.19" }
swc_ecma_visit = { version = "0.98.7" }
anyhow = "1.0.70"
jsx-dom-expressions = { version = "0.1", git = "https://github.com/icewind1991/swc-plugin-jsx-dom-expressions", branch = "mixed-svg" }
jsx-dom-expressions = { version = "0.1", git = "https://github.com/icewind1991/swc-plugin-jsx-dom-expressions", branch = "fix-builtin-import" }
#jsx-dom-expressions = { version = "0.1", git = "https://github.com/milomg/swc-plugin-jsx-dom-expressions" }
#jsx-dom-expressions = { version = "0.1", path = "../../../../rust/swc-plugin-jsx-dom-expressions" }
rand = "0.8.5"
fnv = "1.0.7"

View file

@ -71,10 +71,7 @@ pub fn bundle_script(script: &str) -> Vec<u8> {
fn write<W: Write>(minify: bool, cm: Arc<SourceMap>, module: &Module, out: W) {
let wr = JsWriter::new(cm.clone(), "\n", out, None);
let mut emitter = Emitter {
cfg: swc_ecma_codegen::Config {
minify,
..Default::default()
},
cfg: swc_ecma_codegen::Config::default().with_minify(minify),
cm: cm.clone(),
comments: None,
wr: if minify {
@ -152,15 +149,17 @@ impl Load for Loader {
panic!("failed to parse")
});
let program = Program::Module(module);
let top_level_mark = Mark::new();
let module = module
let program = program
.fold_with(&mut strip(top_level_mark))
.fold_with(&mut as_folder(InlineVisitor {}))
.fold_with(&mut as_folder(TransformVisitor::new(
jsx_dom_expressions::config::Config {
module_name: "solid-js/web".to_string(),
builtins: vec![
built_ins: vec![
"For".into(),
"Show".into(),
"Switch".into(),
@ -179,6 +178,8 @@ impl Load for Loader {
.fold_with(&mut hygiene())
.fold_with(&mut fixer(None));
let module = program.module().unwrap();
// if let FileName::Real(path) = &f {
// let mut out = vec![];
// write(false, self.cm.clone(), &module, &mut out);

View file

@ -14,10 +14,7 @@ pub fn bundle_style(style: &str) -> Vec<u8> {
let mut bundler = Bundler::new(
&fs,
None,
ParserOptions {
nesting: true,
..ParserOptions::default()
},
ParserOptions::default(),
);
let mut stylesheet = bundler
.bundle(Path::new(style))
@ -26,7 +23,7 @@ pub fn bundle_style(style: &str) -> Vec<u8> {
Browsers::from_browserslist(["last 2 versions"]).expect("failed to parse browserlist");
stylesheet
.minify(MinifyOptions {
targets: browsers.clone(),
targets: browsers.into(),
..MinifyOptions::default()
})
.expect("failed to minify css");
@ -40,7 +37,7 @@ pub fn bundle_style(style: &str) -> Vec<u8> {
stylesheet
.to_css(PrinterOptions {
targets: browsers,
targets: browsers.into(),
minify,
..PrinterOptions::default()
})
@ -54,7 +51,9 @@ struct InlineUrlVisitor;
impl<'i> Visitor<'i> for InlineUrlVisitor {
type Error = Infallible;
const TYPES: VisitTypes = visit_types!(URLS);
fn visit_types(&self) -> VisitTypes {
visit_types!(URLS)
}
fn visit_url(&mut self, url: &mut Url<'i>) -> Result<(), Self::Error> {
if let Some(path) = url.url.strip_prefix("inline://") {