Skip to content

Commit

Permalink
fix(es/module): Fix logic for exact matches in jsc.paths (#7860)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #7829
  • Loading branch information
kdy1 committed Aug 25, 2023
1 parent e47f1c2 commit 52a1ee7
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 20 deletions.
24 changes: 24 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7829/1/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"module": {
"type": "es6"
},
"jsc": {
"baseUrl": ".",
"target": "es2020",
"parser": {
"syntax": "typescript",
"decorators": true,
"importMeta": true
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true
},
"keepClassNames": true,
"paths": {
"@my/pkg": [
"libs/pkg/src/index.ts"
],
}
}
}
4 changes: 4 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7829/1/input/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { fn } from '@my/pkg';


console.log(fn)
2 changes: 2 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7829/1/output/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import { fn } from "./libs/pkg/src";
console.log(fn);
24 changes: 24 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7829/2/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"module": {
"type": "es6"
},
"jsc": {
"baseUrl": ".",
"target": "es2020",
"parser": {
"syntax": "typescript",
"decorators": true,
"importMeta": true
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true
},
"keepClassNames": true,
"paths": {
"@my/pkg": [
"libs/pkg/src/index.js"
],
}
}
}
4 changes: 4 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7829/2/input/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { fn } from '@my/pkg';


console.log(fn)
2 changes: 2 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7829/2/output/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import { fn } from "./libs/pkg/src/index.js";
console.log(fn);
25 changes: 5 additions & 20 deletions crates/swc_ecma_loader/src/resolvers/tsc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -259,27 +259,12 @@ where
return Ok(FileName::Real(tp.into()));
}

if self.base_url_filename == *base {
// Prevent infinite loop

let replaced = self.base_url.join(&to[0]);
if replaced.exists() {
return Ok(FileName::Real(replaced));
}

return self
.invoke_inner_resolver(base, &format!("./{}", &to[0]))
.with_context(|| {
format!(
"tried to resolve `{}` because `{}` was exactly matched",
to[0], from
)
});
} else {
return self
.resolve(&self.base_url_filename, &format!("./{}", &to[0]))
.context("failed to resolve using jsc.baseUrl as base");
if let Ok(res) = self.resolve(&self.base_url_filename, &format!("./{}", &to[0]))
{
return Ok(res);
}

return Ok(FileName::Real(self.base_url.join(&to[0])));
}
}
}
Expand Down

1 comment on commit 52a1ee7

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 52a1ee7 Previous: d33a973 Ratio
es/full/bugs-1 287571 ns/iter (± 12979) 281747 ns/iter (± 13536) 1.02
es/full/minify/libraries/antd 1396613022 ns/iter (± 19602596) 1257700689 ns/iter (± 12510991) 1.11
es/full/minify/libraries/d3 287340201 ns/iter (± 6704277) 266104166 ns/iter (± 4007297) 1.08
es/full/minify/libraries/echarts 1132238165 ns/iter (± 18346810) 997640418 ns/iter (± 13156843) 1.13
es/full/minify/libraries/jquery 84469814 ns/iter (± 283040) 81063406 ns/iter (± 627280) 1.04
es/full/minify/libraries/lodash 97654002 ns/iter (± 562124) 95293407 ns/iter (± 784466) 1.02
es/full/minify/libraries/moment 49543496 ns/iter (± 316008) 47899993 ns/iter (± 627736) 1.03
es/full/minify/libraries/react 17984417 ns/iter (± 128151) 17320442 ns/iter (± 129090) 1.04
es/full/minify/libraries/terser 225525224 ns/iter (± 2873033) 206787476 ns/iter (± 2007271) 1.09
es/full/minify/libraries/three 411230823 ns/iter (± 3897908) 365917129 ns/iter (± 4230124) 1.12
es/full/minify/libraries/typescript 2722886384 ns/iter (± 20995115) 2456969357 ns/iter (± 17913102) 1.11
es/full/minify/libraries/victory 613676085 ns/iter (± 9737459) 534249901 ns/iter (± 4731050) 1.15
es/full/minify/libraries/vue 121354674 ns/iter (± 365541) 114169222 ns/iter (± 1582338) 1.06
es/full/codegen/es3 35740 ns/iter (± 110) 32513 ns/iter (± 568) 1.10
es/full/codegen/es5 36038 ns/iter (± 75) 33113 ns/iter (± 306) 1.09
es/full/codegen/es2015 35963 ns/iter (± 59) 32782 ns/iter (± 478) 1.10
es/full/codegen/es2016 36034 ns/iter (± 112) 32563 ns/iter (± 401) 1.11
es/full/codegen/es2017 35970 ns/iter (± 89) 32477 ns/iter (± 534) 1.11
es/full/codegen/es2018 35987 ns/iter (± 91) 32623 ns/iter (± 612) 1.10
es/full/codegen/es2019 36010 ns/iter (± 119) 32402 ns/iter (± 335) 1.11
es/full/codegen/es2020 36066 ns/iter (± 114) 32475 ns/iter (± 375) 1.11
es/full/all/es3 167228212 ns/iter (± 1815177) 163085686 ns/iter (± 2455761) 1.03
es/full/all/es5 158355872 ns/iter (± 1207130) 156913764 ns/iter (± 2458402) 1.01
es/full/all/es2015 119646865 ns/iter (± 717214) 118506202 ns/iter (± 1665360) 1.01
es/full/all/es2016 119745591 ns/iter (± 1151705) 115313449 ns/iter (± 2320674) 1.04
es/full/all/es2017 119002672 ns/iter (± 749297) 115664407 ns/iter (± 1035807) 1.03
es/full/all/es2018 116869544 ns/iter (± 845527) 113297834 ns/iter (± 1534214) 1.03
es/full/all/es2019 115590184 ns/iter (± 740710) 113510323 ns/iter (± 1114892) 1.02
es/full/all/es2020 111439233 ns/iter (± 525383) 108121100 ns/iter (± 1549842) 1.03
es/full/parser 487009 ns/iter (± 6459) 469435 ns/iter (± 5430) 1.04
es/full/base/fixer 19630 ns/iter (± 195) 18873 ns/iter (± 243) 1.04
es/full/base/resolver_and_hygiene 79810 ns/iter (± 92) 77529 ns/iter (± 1877) 1.03
serialization of serde 296 ns/iter (± 0) 281 ns/iter (± 7) 1.05
css/minify/libraries/bootstrap 28779667 ns/iter (± 106364) 27355817 ns/iter (± 325129) 1.05
css/visitor/compare/clone 1689059 ns/iter (± 4331) 1572134 ns/iter (± 26940) 1.07
css/visitor/compare/visit_mut_span 1844486 ns/iter (± 8892) 1685518 ns/iter (± 28561) 1.09
css/visitor/compare/visit_mut_span_panic 1904573 ns/iter (± 10922) 1748672 ns/iter (± 24756) 1.09
css/visitor/compare/fold_span 2619712 ns/iter (± 7939) 2462019 ns/iter (± 42141) 1.06
css/visitor/compare/fold_span_panic 2836488 ns/iter (± 47941) 2615627 ns/iter (± 45155) 1.08
css/lexer/bootstrap_5_1_3 4527562 ns/iter (± 2848) 4307711 ns/iter (± 72378) 1.05
css/lexer/foundation_6_7_4 3788460 ns/iter (± 2070) 3603008 ns/iter (± 36561) 1.05
css/lexer/tailwind_3_1_1 720591 ns/iter (± 538) 683025 ns/iter (± 6212) 1.05
css/parser/bootstrap_5_1_3 19829544 ns/iter (± 103012) 18958906 ns/iter (± 227243) 1.05
css/parser/foundation_6_7_4 16053645 ns/iter (± 93257) 15224367 ns/iter (± 298740) 1.05
css/parser/tailwind_3_1_1 3009630 ns/iter (± 7991) 2866075 ns/iter (± 42694) 1.05
es/codegen/colors 740273 ns/iter (± 404000) 707448 ns/iter (± 393875) 1.05
es/codegen/large 2889736 ns/iter (± 1534053) 3023666 ns/iter (± 1588175) 0.96
es/codegen/with-parser/colors 44806 ns/iter (± 580) 44075 ns/iter (± 544) 1.02
es/codegen/with-parser/large 486763 ns/iter (± 1153) 459436 ns/iter (± 4730) 1.06
es/minify/libraries/antd 1230353305 ns/iter (± 22312679) 1100246434 ns/iter (± 17754436) 1.12
es/minify/libraries/d3 250153905 ns/iter (± 3786320) 233401208 ns/iter (± 2692672) 1.07
es/minify/libraries/echarts 959311795 ns/iter (± 11151884) 868429323 ns/iter (± 6855489) 1.10
es/minify/libraries/jquery 73536304 ns/iter (± 195658) 72418026 ns/iter (± 849400) 1.02
es/minify/libraries/lodash 87660215 ns/iter (± 189178) 84725263 ns/iter (± 797214) 1.03
es/minify/libraries/moment 43668481 ns/iter (± 133141) 42372945 ns/iter (± 376554) 1.03
es/minify/libraries/react 16075170 ns/iter (± 72183) 15607880 ns/iter (± 145372) 1.03
es/minify/libraries/terser 193325283 ns/iter (± 3035760) 181050887 ns/iter (± 1627308) 1.07
es/minify/libraries/three 345860083 ns/iter (± 3198986) 310739668 ns/iter (± 3892543) 1.11
es/minify/libraries/typescript 2325114436 ns/iter (± 11442325) 2161189805 ns/iter (± 25655514) 1.08
es/minify/libraries/victory 505554742 ns/iter (± 5109591) 455212517 ns/iter (± 3914565) 1.11
es/minify/libraries/vue 107403361 ns/iter (± 204978) 105046910 ns/iter (± 1191837) 1.02
es/visitor/compare/clone 1944999 ns/iter (± 4571) 1896648 ns/iter (± 28815) 1.03
es/visitor/compare/visit_mut_span 2255857 ns/iter (± 8056) 2169192 ns/iter (± 36580) 1.04
es/visitor/compare/visit_mut_span_panic 2321267 ns/iter (± 4851) 2193247 ns/iter (± 25984) 1.06
es/visitor/compare/fold_span 3373368 ns/iter (± 11911) 3198344 ns/iter (± 41893) 1.05
es/visitor/compare/fold_span_panic 3473112 ns/iter (± 40762) 3306141 ns/iter (± 22328) 1.05
es/lexer/colors 13245 ns/iter (± 50) 12333 ns/iter (± 215) 1.07
es/lexer/angular 6108870 ns/iter (± 6619) 5733214 ns/iter (± 56971) 1.07
es/lexer/backbone 795559 ns/iter (± 1369) 731583 ns/iter (± 7958) 1.09
es/lexer/jquery 4505896 ns/iter (± 5537) 4170853 ns/iter (± 48371) 1.08
es/lexer/jquery mobile 6859250 ns/iter (± 5957) 6407604 ns/iter (± 129733) 1.07
es/lexer/mootools 3552246 ns/iter (± 5986) 3343403 ns/iter (± 53234) 1.06
es/lexer/underscore 663106 ns/iter (± 361) 614285 ns/iter (± 7490) 1.08
es/lexer/three 21327743 ns/iter (± 33086) 20247255 ns/iter (± 353170) 1.05
es/lexer/yui 3831585 ns/iter (± 3693) 3590715 ns/iter (± 64942) 1.07
es/parser/colors 26719 ns/iter (± 55) 25805 ns/iter (± 351) 1.04
es/parser/angular 13531123 ns/iter (± 67278) 12982010 ns/iter (± 242680) 1.04
es/parser/backbone 1970424 ns/iter (± 8574) 1885195 ns/iter (± 28018) 1.05
es/parser/jquery 10797495 ns/iter (± 67888) 10335078 ns/iter (± 142821) 1.04
es/parser/jquery mobile 16647521 ns/iter (± 98378) 15724852 ns/iter (± 202965) 1.06
es/parser/mootools 8286984 ns/iter (± 22122) 7941087 ns/iter (± 147068) 1.04
es/parser/underscore 1702262 ns/iter (± 9508) 1619529 ns/iter (± 21415) 1.05
es/parser/three 47884969 ns/iter (± 873855) 44618806 ns/iter (± 510613) 1.07
es/parser/yui 8199566 ns/iter (± 55705) 7804377 ns/iter (± 92934) 1.05
es/preset-env/usage/builtin_type 138430 ns/iter (± 32905) 132809 ns/iter (± 32110) 1.04
es/preset-env/usage/property 16566 ns/iter (± 116) 16575 ns/iter (± 185) 1.00
es/resolver/typescript 90919623 ns/iter (± 1172019) 85081841 ns/iter (± 1333682) 1.07
es/fixer/typescript 66004264 ns/iter (± 787524) 61544326 ns/iter (± 1656260) 1.07
es/hygiene/typescript 134660484 ns/iter (± 1209721) 125567384 ns/iter (± 1480875) 1.07
es/resolver_with_hygiene/typescript 249409564 ns/iter (± 2140629) 229332738 ns/iter (± 1940829) 1.09
es/visitor/base-perf/module_clone 58783 ns/iter (± 324) 57596 ns/iter (± 773) 1.02
es/visitor/base-perf/fold_empty 62980 ns/iter (± 330) 60225 ns/iter (± 1290) 1.05
es/visitor/base-perf/fold_noop_impl_all 63128 ns/iter (± 106) 60076 ns/iter (± 660) 1.05
es/visitor/base-perf/fold_noop_impl_vec 63570 ns/iter (± 312) 60337 ns/iter (± 1252) 1.05
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 57 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 40 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 109 ns/iter (± 0) 108 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 78 ns/iter (± 0) 1
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2588 ns/iter (± 9) 2601 ns/iter (± 41) 1.00
es/base/parallel/resolver/typescript 3728249021 ns/iter (± 254417276) 3682698865 ns/iter (± 234456679) 1.01
es/base/parallel/hygiene/typescript 1442155216 ns/iter (± 22494771) 1434476938 ns/iter (± 20101276) 1.01
misc/visitors/time-complexity/time 5 132 ns/iter (± 1) 131 ns/iter (± 8) 1.01
misc/visitors/time-complexity/time 10 390 ns/iter (± 8) 386 ns/iter (± 9) 1.01
misc/visitors/time-complexity/time 15 518 ns/iter (± 25) 496 ns/iter (± 4) 1.04
misc/visitors/time-complexity/time 20 1055 ns/iter (± 5) 1062 ns/iter (± 9) 0.99
misc/visitors/time-complexity/time 40 3516 ns/iter (± 92) 3457 ns/iter (± 48) 1.02
misc/visitors/time-complexity/time 60 7268 ns/iter (± 36) 7143 ns/iter (± 103) 1.02
es/full-target/es2016 230863 ns/iter (± 640) 222395 ns/iter (± 2576) 1.04
es/full-target/es2017 217393 ns/iter (± 942) 211915 ns/iter (± 3227) 1.03
es/full-target/es2018 206616 ns/iter (± 995) 201173 ns/iter (± 3021) 1.03
es2020_nullish_coalescing 71926 ns/iter (± 450) 69166 ns/iter (± 575) 1.04
es2020_optional_chaining 80274 ns/iter (± 205) 79188 ns/iter (± 1019) 1.01
es2022_class_properties 113279 ns/iter (± 269) 111427 ns/iter (± 1808) 1.02
es2018_object_rest_spread 74775 ns/iter (± 656) 73323 ns/iter (± 1268) 1.02
es2019_optional_catch_binding 63512 ns/iter (± 283) 60941 ns/iter (± 703) 1.04
es2017_async_to_generator 64022 ns/iter (± 138) 60154 ns/iter (± 454) 1.06
es2016_exponentiation 67918 ns/iter (± 105) 63720 ns/iter (± 624) 1.07
es2015_arrow 71605 ns/iter (± 214) 67938 ns/iter (± 1748) 1.05
es2015_block_scoped_fn 68436 ns/iter (± 270) 66491 ns/iter (± 1723) 1.03
es2015_block_scoping 123091 ns/iter (± 429) 123128 ns/iter (± 2669) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.