swc updates

This commit is contained in:
Robin Appelman 2026-03-28 17:26:29 +01:00
commit c971fe6d79
9 changed files with 4737 additions and 4545 deletions

2992
build/bundlers/Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -7,23 +7,21 @@ edition = "2021"
lightningcss = { version = "1.0.0-alpha.61", features = ["browserslist", "visitor"] }
base64 = "0.21.0"
urlencoding = "2.1.2"
swc = "0.273.28"
swc_config = "=0.1.14"
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" }
swc_common = { version = "18.0.0", features = ["tty-emitter", "concurrent"] }
swc_core = { version = "53.0.1" }
swc_bundler = { version = "39.0.0" }
swc_ecma_loader = { version = "18.0.0", features = ["node", "cache"] }
swc_ecma_ast = { version = "19.0.0" }
swc_atoms = { version = "9.0.0", features = [] }
swc_ecma_parser = { version = "31.0.0", features = ["typescript"] }
swc_ecma_codegen = { version = "21.0.0" }
swc_ecma_transforms_base = { version = "34.0.0" }
swc_ecma_transforms_typescript = { version = "37.0.0" }
swc_ecma_visit = { version = "19.0.0" }
anyhow = "1.0.70"
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"
rand = "0.10.0"
fnv = "1.0.7"

View file

@ -46,7 +46,7 @@ pub fn guess_mime(path: &str) -> &'static str {
{
return "text/javascript";
}
return "text/plain";
"text/plain"
}
fn inline_url(path: &str) -> String {

View file

@ -27,7 +27,7 @@ impl VisitMut for InlineVisitor {
if callee.sym.as_ref() == "require" {
if let Some(arg) = args.first() {
if let Expr::Lit(Lit::Str(arg)) = arg.expr.as_ref() {
let path = arg.value.to_string();
let path = arg.value.to_string_lossy().into_owned();
self.visit_require(expr, &path)
}
}

View file

@ -6,7 +6,7 @@ use jsx_dom_expressions::TransformVisitor;
use std::collections::HashMap;
use std::io::Write;
use std::sync::Arc;
use swc_atoms::js_word;
use swc_atoms::Atom;
use swc_bundler::{Bundler, Load, ModuleData, ModuleRecord};
use swc_common::comments::NoopComments;
use swc_common::sync::Lrc;
@ -20,11 +20,11 @@ use swc_ecma_codegen::Emitter;
use swc_ecma_loader::resolvers::lru::CachingResolver;
use swc_ecma_loader::resolvers::node::NodeModulesResolver;
use swc_ecma_loader::TargetEnv;
use swc_ecma_parser::{parse_file_as_module, Syntax, TsConfig};
use swc_ecma_parser::{parse_file_as_module, Syntax, TsSyntax};
use swc_ecma_transforms_base::fixer::fixer;
use swc_ecma_transforms_base::hygiene::hygiene;
use swc_ecma_transforms_typescript::strip;
use swc_ecma_visit::{as_folder, FoldWith};
use swc_ecma_visit::visit_mut_pass;
pub fn bundle_script(script: &str) -> Vec<u8> {
#[cfg(debug_assertions)]
@ -95,7 +95,7 @@ impl swc_bundler::Hook for Hook {
Ok(vec![
KeyValueProp {
key: PropName::Ident(Ident::new(js_word!("url"), span)),
key: PropName::Ident(IdentName::new(Atom::new("url"), span)),
value: Box::new(Expr::Lit(Lit::Str(Str {
span,
raw: None,
@ -103,7 +103,7 @@ impl swc_bundler::Hook for Hook {
}))),
},
KeyValueProp {
key: PropName::Ident(Ident::new(js_word!("main"), span)),
key: PropName::Ident(IdentName::new(Atom::new("main"), span)),
value: Box::new(if module_record.is_entry {
Expr::Member(MemberExpr {
span,
@ -111,7 +111,7 @@ impl swc_bundler::Hook for Hook {
span,
kind: MetaPropKind::ImportMeta,
})),
prop: MemberProp::Ident(Ident::new(js_word!("main"), span)),
prop: MemberProp::Ident(IdentName::new(Atom::new("main"), span)),
})
} else {
Expr::Lit(Lit::Bool(Bool { span, value: false }))
@ -134,9 +134,9 @@ impl Load for Loader {
let module = parse_file_as_module(
&fm,
Syntax::Typescript(TsConfig {
Syntax::Typescript(TsSyntax {
tsx: true,
..TsConfig::default()
..TsSyntax::default()
}),
EsVersion::Es5,
None,
@ -152,11 +152,12 @@ impl Load for Loader {
let program = Program::Module(module);
let top_level_mark = Mark::new();
let unresolved_mark = Mark::new();
let program = program
.fold_with(&mut strip(top_level_mark))
.fold_with(&mut as_folder(InlineVisitor {}))
.fold_with(&mut as_folder(TransformVisitor::new(
.apply(strip(unresolved_mark, top_level_mark))
.apply(visit_mut_pass(InlineVisitor {}))
.apply(visit_mut_pass(TransformVisitor::new(
jsx_dom_expressions::config::Config {
module_name: "solid-js/web".to_string(),
built_ins: vec![
@ -175,8 +176,8 @@ impl Load for Loader {
},
NoopComments,
)))
.fold_with(&mut hygiene())
.fold_with(&mut fixer(None));
.apply(hygiene())
.apply(fixer(None));
let module = program.module().unwrap();