Commit Graph

6582 Commits

Author SHA1 Message Date
Justin Ridgewell
2b503c16d5
fix(es/codegen): Fix LineCol calculation of printed files (#6763)
**Description:**

There were several issues with the way we updated the current `LineCol` position during the printing of the generated file:

- We used `chars` and `char_indices` (UTF-32) instead of `encode_utf16` (UTF-16) chars.
- JS uses UCS-2 (basically UTF-16) for its strings, and source maps default to that implicitly.
- `\r` was incorrectly handled
  - it didn't add a `line_start`; only `\n` did
- `\r\n` was incorrectly handled
- It was trying to let the `\n` path handle the `line_start`, but it called
`chars.next()` which ate the `\n` char.

I also took the opportunity to avoid the `Vec` allocations and reduced some code duplication.

See the
[before](https://evanw.github.io/source-map-visualization/#ODEzAC8qKgogKiBmb28KICogQHBhcmFtIGRhdGEgZm9vCiAqIEByZXR1cm5zIGZvbwogKi8gZXhwb3J0IGNvbnN0IGZpeHVwUmlza0NvbmZpZ0RhdGEgPSAoZGF0YSk9PnsKICAgIGlmICh4KSB7CiAgICAgICAgcmV0dXJuIDEyMzsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIDQ1NjsKICAgIH0KfTsKCi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1Y0hWMExuUnpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHlYRzRnS2lCbWIyOWNjbHh1SUNvZ1FIQmhjbUZ0SUdSaGRHRWdabTl2WEhKY2JpQXFJRUJ5WlhSMWNtNXpJR1p2YjF4eVhHNGdLaTljY2x4dVpYaHdiM0owSUdOdmJuTjBJR1pwZUhWd1VtbHphME52Ym1acFowUmhkR0VnUFNBb1pHRjBZVG9nWVc1NUtUb2dkSGx3WlhNdVVtbHphME52Ym1acFoxUjVjR1VnUFQ0Z2UxeHlYRzRnSUdsbUlDaDRLU0I3WEhKY2JpQWdJQ0J5WlhSMWNtNGdNVEl6TzF4eVhHNGdJSDBnWld4elpTQjdYSEpjYmlBZ0lDQnlaWFIxY200Z05EVTJPMXh5WEc0Z0lIMWNjbHh1ZlRzaVhTd2libUZ0WlhNaU9sc2labWw0ZFhCU2FYTnJRMjl1Wm1sblJHRjBZU0lzSW1SaGRHRWlMQ0o0SWwwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4dFJFRkpReXhIUVVORUxFOUJRVThzVFVGQlRVRXNjMEpCUVhOQ0xFTkJRVU5ETEU5QlFXOURPMGxCUTNSRkxFbEJRVWxETEVkQlFVYzdVVUZEVEN4UFFVRlBPMGxCUTFRc1QwRkJUenRSUVVOTUxFOUJRVTg3U1VGRFZDeERRVUZETzBGQlEwZ3NSVUZCUlNKOTQ0NAB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiaW5wdXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIGZvb1xyXG4gKiBAcGFyYW0gZGF0YSBmb29cclxuICogQHJldHVybnMgZm9vXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZml4dXBSaXNrQ29uZmlnRGF0YSA9IChkYXRhOiBhbnkpOiB0eXBlcy5SaXNrQ29uZmlnVHlwZSA9PiB7XHJcbiAgaWYgKHgpIHtcclxuICAgIHJldHVybiAxMjM7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiA0NTY7XHJcbiAgfVxyXG59OyJdLCJuYW1lcyI6WyJmaXh1cFJpc2tDb25maWdEYXRhIiwiZGF0YSIsIngiXSwibWFwcGluZ3MiOiJBQUFBLG1EQUlDLEdBQ0QsT0FBTyxNQUFNQSxzQkFBc0IsQ0FBQ0MsT0FBb0M7SUFDdEUsSUFBSUMsR0FBRztRQUNMLE9BQU87SUFDVCxPQUFPO1FBQ0wsT0FBTztJQUNULENBQUM7QUFDSCxFQUFFIn0=)
and
[after](https://evanw.github.io/source-map-visualization/#ODIyAC8qKgogKiBmb28KICogQHBhcmFtIGRhdGEgZm9vCiAqIEByZXR1cm5zIGZvbwogKi8gZXhwb3J0IHZhciBmaXh1cFJpc2tDb25maWdEYXRhID0gZnVuY3Rpb24oZGF0YSkgewogICAgaWYgKHgpIHsKICAgICAgICByZXR1cm4gMTIzOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gNDU2OwogICAgfQp9OwoKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHZZWEJ3TG1weklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4eVhHNGdLaUJtYjI5Y2NseHVJQ29nUUhCaGNtRnRJR1JoZEdFZ1ptOXZYSEpjYmlBcUlFQnlaWFIxY201eklHWnZiMXh5WEc0Z0tpOWNjbHh1Wlhod2IzSjBJR052Ym5OMElHWnBlSFZ3VW1semEwTnZibVpwWjBSaGRHRWdQU0FvWkdGMFlUb2dZVzU1S1RvZ2RIbHdaWE11VW1semEwTnZibVpwWjFSNWNHVWdQVDRnZTF4eVhHNGdJR2xtSUNoNEtTQjdYSEpjYmlBZ0lDQnlaWFIxY200Z01USXpPMXh5WEc0Z0lIMGdaV3h6WlNCN1hISmNiaUFnSUNCeVpYUjFjbTRnTkRVMk8xeHlYRzRnSUgxY2NseHVmVHNpWFN3aWJtRnRaWE1pT2xzaVptbDRkWEJTYVhOclEyOXVabWxuUkdGMFlTSXNJbVJoZEdFaUxDSjRJbDBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3p0RFFVbERMRWRCUTBRc1QwRkJUeXhKUVVGTlFTeHpRa0ZCYzBJc1UwRkJRME1zVFVGQmIwTTdTVUZEZEVVc1NVRkJTVU1zUjBGQlJ6dFJRVU5NTEU5QlFVODdTVUZEVkN4UFFVRlBPMUZCUTB3c1QwRkJUenRKUVVOVUxFTkJRVU03UVVGRFNDeEZRVUZGSW4wPTQ0NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiLi9hcHAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIGZvb1xyXG4gKiBAcGFyYW0gZGF0YSBmb29cclxuICogQHJldHVybnMgZm9vXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZml4dXBSaXNrQ29uZmlnRGF0YSA9IChkYXRhOiBhbnkpOiB0eXBlcy5SaXNrQ29uZmlnVHlwZSA9PiB7XHJcbiAgaWYgKHgpIHtcclxuICAgIHJldHVybiAxMjM7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiA0NTY7XHJcbiAgfVxyXG59OyJdLCJuYW1lcyI6WyJmaXh1cFJpc2tDb25maWdEYXRhIiwiZGF0YSIsIngiXSwibWFwcGluZ3MiOiJBQUFBOzs7O0NBSUMsR0FDRCxPQUFPLElBQU1BLHNCQUFzQixTQUFDQyxNQUFvQztJQUN0RSxJQUFJQyxHQUFHO1FBQ0wsT0FBTztJQUNULE9BQU87UUFDTCxPQUFPO0lBQ1QsQ0FBQztBQUNILEVBQUUifQ==)


**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6694.
2023-01-08 13:57:26 +09:00
SWC Bot
fb6770f649 chore: Publish crates 2023-01-06 08:17:26 +00:00
HeYunfei
8a6a1cbcf1
feat(es/minifier): Handle boolean in Evaluator (#6756)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/5953.
2023-01-06 08:15:07 +00:00
Donny/강동윤
48902b60d3 chore: Publish crates 2023-01-06 16:41:16 +09:00
SWC Bot
1161360d54 chore: Publish crates 2023-01-06 03:49:20 +00:00
Donny/강동윤
26a0c13589
fix(common): Mark \r as a line ending (#6752)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6694.
2023-01-06 03:47:16 +00:00
SWC Bot
ec8497b42c chore: Publish crates 2023-01-06 03:16:51 +00:00
HeYunfei
a1ccc8afdf
feat(es/minifier): Make name mangler understand block scoping (#6670)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/5090.
 - Closes https://github.com/swc-project/swc/issues/5766.
2023-01-06 03:14:10 +00:00
Donny/강동윤
e9f99c4fe7 chore: Publish crates 2023-01-06 10:41:41 +09:00
SWC Bot
e5ea18b62b chore: Publish crates 2023-01-05 23:46:00 +00:00
Donny/강동윤
7e6e7b107e
chore(ci): Fix publish action (#6757)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2023-01-06 08:43:32 +09:00
Donny/강동윤
ed2277fc07 chore(ci): Fix publish action 2023-01-05 19:58:28 +09:00
Donny/강동윤
f299101820 chore: Publish crates 2023-01-05 19:55:20 +09:00
Donny/강동윤
9769a9c677
chore: Publish v1.3.25 (#6754) 2023-01-05 10:48:00 +00:00
SWC Bot
1f5c44ea70 chore: Publish crates 2023-01-05 10:09:49 +00:00
Donny/강동윤
b46815a684
fix(es): Fix wasm (#6755) 2023-01-05 10:07:45 +00:00
SWC Bot
3b034d597b chore: Publish crates 2023-01-05 05:18:09 +00:00
realtimetodie
0076418819
fix(bindings/cli): Skip empty stdin in non tty environments (#6714) 2023-01-05 05:15:36 +00:00
SWC Bot
918a01bf5c chore: Publish crates 2023-01-04 14:19:54 +00:00
HeYunfei
36b26d3496
fix(es/react): Force refresh if code contains @refresh reset (#6749) 2023-01-04 14:17:01 +00:00
SWC Bot
790c478a7a chore: Publish crates 2023-01-04 07:29:33 +00:00
Donny/강동윤
65a0d3a310
fix(es/parser): Fix priority of >>> (#6748)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6739.
2023-01-04 07:27:08 +00:00
SWC Bot
d7081cc8a6 chore: Publish crates 2023-01-04 05:17:53 +00:00
Donny/강동윤
72fb606eb2
feat(es/jest): Support chaining of jest function calls (#6747)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6540.
2023-01-04 05:15:21 +00:00
SWC Bot
1638105865 chore: Publish crates 2023-01-04 04:33:32 +00:00
Donny/강동윤
88d40e8ab8
fix(es/minifier): Fix usage counter to fix infinite loop (#6744)
**Description:**

We skip non-computed property names while checking if we can inline an expression.

**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6729.
2023-01-04 04:31:12 +00:00
Donny/강동윤
62c0d7291a chore: Publish crates 2023-01-04 12:13:55 +09:00
SWC Bot
9bdbe9dc9b chore: Publish crates 2023-01-03 10:24:43 +00:00
RiESAEX
79afcb5d81
doc(es): Fix example (#6743) 2023-01-03 10:22:44 +00:00
SWC Bot
30471796c9 chore: Publish crates 2023-01-03 09:47:06 +00:00
Donny/강동윤
206c0dbebe
fix(es/compat): Fix syntax context of async-to-generator (#6741)
**Description:**

Previously, the `async-to-generator` produced invalid AST, in the aspect of span hygiene.

[Playground](https://play.swc.rs/?version=1.3.24&code=H4sIAAAAAAAAAz1MbQqAIBT77yn2UyG6gNQJuoSZRCAa7xkk4d1TicZgH7C5%2B4yUYGPgBE7ZuyWazREmSIVpxiMAcumi0C3ANZxyvQ6%2Fqa8CehxjaGNpOAcLaWjn%2F6KhKN1dGaoULSpfHPTdxn8AAAA%3D&config=H4sIAAAAAAAAA0WOSwrDMAxE76K1F22hXfgE3fQQxlWCi39ICsQY3z12cMlOjObNTIUfW9AVsiFGGheXKGYHDVIysiWXBRQId2kxnrEpwF2QovFv9BmJQQtt2D2GVpROIj9u92enfEqMk1MQXHRLGR02hUzIfL1MXP3f2XpFSN9tCPWccWa%2BoF0Zk3P8mcYxoR3Kj7IYzwAAAA%3D%3D).
It generate two bindings for `args` so it's invalid.


**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6730.
2023-01-03 09:45:03 +00:00
SWC Bot
1602f66fe6 chore: Publish crates 2023-01-03 03:47:48 +00:00
RiESAEX
98da6444b6
perf(es/preset-env): Use VisitMut instead of Fold for polyfill (#6734) 2023-01-03 03:45:25 +00:00
SWC Bot
2e32faaa3c chore: Publish crates 2023-01-03 03:14:24 +00:00
HeYunfei
b5d31cc2da
fix(es/utils): Fix detection of hoisting (#6738) 2023-01-03 03:12:01 +00:00
SWC Bot
0a1e30a4f8 chore: Publish crates 2022-12-30 06:34:07 +00:00
OJ Kwon
30dd65bb83
feat(bindings): Remove swcx from @swc/core (#6720) 2022-12-30 06:31:57 +00:00
SWC Bot
0a652096ae chore: Publish crates 2022-12-27 12:57:51 +00:00
Alexander Akait
1722428909
feat(css/prefixer): Support clamp (#6695) 2022-12-27 12:55:46 +00:00
SWC Bot
d72a31f990 chore: Publish crates 2022-12-27 12:24:41 +00:00
Alexander Akait
8af627d5c4
feat(css/parser): Normalize urange (#6704) 2022-12-27 12:22:46 +00:00
SWC Bot
35b72b59c8 chore: Publish crates 2022-12-27 07:43:30 +00:00
Bernardo
082dc2101b
fix(es/plugin): Fix plugin starter template (#6723) 2022-12-27 07:41:30 +00:00
SWC Bot
bfb2ffee0c chore: Publish crates 2022-12-27 01:02:01 +00:00
realtimetodie
b451fa9e88
fix(es): Remove import statement canonicalization (#6716) 2022-12-27 00:59:54 +00:00
SWC Bot
641e03c997 chore: Publish crates 2022-12-26 04:48:02 +00:00
Donny/강동윤
d506c96805
fix(preset-env): Update data (#6719) 2022-12-26 04:46:08 +00:00
Donny/강동윤
d8d9965aa4 chore: Publish crates 2022-12-23 14:58:20 +09:00
SWC Bot
22973cbbf2 chore: Publish crates 2022-12-23 05:07:21 +00:00
realtimetodie
24cd384c20
fix(cli): Use the --source-maps option (#6708) 2022-12-23 05:04:36 +00:00