Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.

Commit 767f9a5

Browse files
committed
Upgrade swc ecamscript to 0.151.0
1 parent a63add3 commit 767f9a5

File tree

4 files changed

+39
-33
lines changed

4 files changed

+39
-33
lines changed

compiler/Cargo.lock

Lines changed: 19 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ parcel_sourcemap = "2.0.2"
3232
# docs: https://swc.rs
3333
# crate: https://crates.io/search?q=swc_ecmascript
3434
swc_atoms = "0.2.11"
35-
swc_common = { version = "0.17.23", features = ["sourcemap"] }
36-
swc_ecma_transforms = { version = "0.145.0", features = ["proposal", "typescript", "react" ] }
37-
swc_ecmascript = { version = "0.147.0", features = ["codegen", "parser", "utils", "visit"] }
35+
swc_common = { version = "0.17.25", features = ["sourcemap"] }
36+
swc_ecma_transforms = { version = "0.148.0", features = ["proposal", "typescript", "react" ] }
37+
swc_ecmascript = { version = "0.151.0", features = ["codegen", "parser", "utils", "visit"] }
3838

3939
# wasm-bindgen
4040
# docs: https://rustwasm.github.io/docs/wasm-bindgen

compiler/src/swc.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ use std::{cell::RefCell, path::Path, rc::Rc};
88
use swc_common::comments::SingleThreadedComments;
99
use swc_common::errors::{Handler, HandlerFlags};
1010
use swc_common::{chain, FileName, Globals, Mark, SourceMap};
11+
use swc_ecma_transforms::pass::Optional;
1112
use swc_ecma_transforms::proposals::decorators;
12-
use swc_ecma_transforms::react;
1313
use swc_ecma_transforms::typescript::strip;
14-
use swc_ecma_transforms::{fixer, helpers, hygiene, pass::Optional, resolver_with_mark};
14+
use swc_ecma_transforms::{fixer, helpers, hygiene, react};
1515
use swc_ecmascript::ast::{EsVersion, Module, Program};
16-
use swc_ecmascript::codegen::{text_writer::JsWriter, Node};
17-
use swc_ecmascript::parser::{lexer::Lexer, EsConfig, StringInput, Syntax, TsConfig};
16+
use swc_ecmascript::codegen::text_writer::JsWriter;
17+
use swc_ecmascript::codegen::Node;
18+
use swc_ecmascript::parser::lexer::Lexer;
19+
use swc_ecmascript::parser::{EsConfig, StringInput, Syntax, TsConfig};
1820
use swc_ecmascript::visit::{Fold, FoldWith};
1921

2022
/// Options for transpiling a module.
@@ -106,9 +108,12 @@ impl SWC {
106108
options: &EmitOptions,
107109
) -> Result<(String, Option<String>), anyhow::Error> {
108110
swc_common::GLOBALS.set(&Globals::new(), || {
111+
let unresolved_mark = Mark::new();
109112
let top_level_mark = Mark::fresh(Mark::root());
110113
let jsx_runtime = resolver.borrow().jsx_runtime.clone();
111114
let specifier_is_remote = resolver.borrow().specifier_is_remote;
115+
let is_ts =
116+
self.specifier.ends_with(".ts") || self.specifier.ends_with(".mts") || self.specifier.ends_with(".tsx");
112117
let is_jsx = self.specifier.ends_with(".tsx") || self.specifier.ends_with(".jsx");
113118
let is_dev = resolver.borrow().is_dev;
114119
let react_options = if let Some(jsx_import_source) = &options.jsx_import_source {
@@ -146,7 +151,7 @@ impl SWC {
146151
false
147152
};
148153
let passes = chain!(
149-
resolver_with_mark(top_level_mark),
154+
swc_ecma_transforms::resolver(unresolved_mark, top_level_mark, is_ts),
150155
Optional::new(react::jsx_src(is_dev, self.source_map.clone()), is_jsx),
151156
resolve_fold(resolver.clone(), options.strip_data_export, false),
152157
decorators::decorators(decorators::Config {
@@ -260,7 +265,7 @@ fn get_es_config(jsx: bool) -> EsConfig {
260265
EsConfig {
261266
fn_bind: true,
262267
export_default_from: true,
263-
import_assertions: true,
268+
import_assertions: true,
264269
private_in_object: true,
265270
allow_super_outside_method: true,
266271
jsx,

compiler/src/tests.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fn transform(specifer: &str, source: &str, is_dev: bool, options: &EmitOptions)
2121
specifer,
2222
"https://deno.land/x/aleph",
2323
Some("react".into()),
24-
Some("17.0.2".into()),
24+
Some("18".into()),
2525
Some("64".into()),
2626
importmap,
2727
graph_versions,
@@ -89,8 +89,8 @@ fn import_resolving() {
8989
}, 1000)
9090
"#;
9191
let (code, _) = transform("./pages/blog/$id.tsx", source, false, &EmitOptions::default());
92-
assert!(code.contains("\"/-/esm.sh/react@17.0.2\""));
93-
assert!(code.contains("\"/-/cdn.esm.sh/v64/react-dom@17.0.2\""));
92+
assert!(code.contains("\"/-/esm.sh/react@18\""));
93+
assert!(code.contains("\"/-/cdn.esm.sh/v64/react-dom@18\""));
9494
assert!(code.contains("\"../../foo.ts?v=100\""));
9595
assert!(code.contains("\"./Layout.tsx\""));
9696
assert!(code.contains("\"/-/esm.sh/@fullcalendar/daygrid?css&dev&module\""));
@@ -115,17 +115,17 @@ fn jsx_automtic() {
115115
source,
116116
false,
117117
&EmitOptions {
118-
jsx_import_source: Some("https://esm.sh/react@17.0.2".to_owned()),
118+
jsx_import_source: Some("https://esm.sh/react@18".to_owned()),
119119
..Default::default()
120120
},
121121
);
122-
assert!(code.contains("import { jsx as _jsx, Fragment as _Fragment } from \"/-/esm.sh/react@17.0.2/jsx-runtime\""));
122+
assert!(code.contains("import { jsx as _jsx, Fragment as _Fragment } from \"/-/esm.sh/react@18/jsx-runtime\""));
123123
assert!(code.contains("_jsx(_Fragment, {"));
124124
assert!(code.contains("_jsx(\"h1\", {"));
125125
assert!(code.contains("children: \"Hello world!\""));
126126
assert_eq!(
127127
resolver.borrow().deps.get(0).unwrap().specifier,
128-
"https://esm.sh/react@17.0.2/jsx-runtime"
128+
"https://esm.sh/react@18/jsx-runtime"
129129
);
130130
}
131131

0 commit comments

Comments
 (0)