Austaras
ed5a9b3f2e
fix(es/minifier): Give up terminate merge if in try
with finally
( #8342 )
...
**Related issue:**
- Closes #8337 .
- Closes #8324 .
- Reverts #8328 .
2023-11-25 02:43:18 +00:00
Donny/강동윤
01e2c7fc5a
fix(es/minifier): Fix if_return
bug related to await
and yield
( #8328 )
...
**Related issue:**
- Closes #8324
2023-11-23 00:54:57 +00:00
Austaras
572ad63e08
fix(es/minifier): Apply new SyntaxContext
to inlined Arrow
correctly ( #8312 )
2023-11-20 00:11:38 +09:00
Donny/강동윤
a0048427dd
test(es/minifier): Update test refs ( #8310 )
2023-11-19 19:16:38 +09:00
Austaras
c18a959e3a
fix(es/minifier): Apply new SyntaxContext
to inlined Arrow
( #8301 )
...
**Related issue:**
- Closes #8288
2023-11-18 09:01:27 +09:00
Donny/강동윤
7985e02fc8
fix(es/minifier): Remove hack for built-in class names ( #8293 )
...
**Description:**
Regarding https://github.com/vercel/next.js/issues/55682 , I made a mistake while investigating. I assumed it's `swcMinify`-only but it seems like `node-fetch` is fundamentally incompatible with our minification options.
I thought `node-fetch` works with terser, but it did not, and it **should not**. But as I thought `terser` works, I assumed that `terser` has a hack for `AbortSignal`. And that's how I fixed `swcMinify: true`. The correct fix is `keep_classnames: true` but it will result in +~10% bundle size bloat.
At first, I used the correct way (`keep_classnames: true`), but it resulted in the bundle size bloat, so I mimicked the hack of terser with https://github.com/vercel/next.js/pull/57904 .
While working on other minification issues, I found that there's no such hack in `terser` and I need to remove the hack in the SWC minifier.
The repro in https://github.com/vercel/next.js/issues/55682 does not work with `swcMinify: false`, even with next@14. The problem of minifier and node-fetch was not exploited before `serverMinification: true`.
**Related issue:**
- https://github.com/brix/crypto-js/issues/415
2023-11-16 09:17:42 +09:00
Austaras
73fec945b5
fix(es/minifier): Make Finalizer
inline literals ( #8285 )
...
**Related issue:**
- Closes #8284
2023-11-15 01:07:37 +00:00
bohan
f059270348
feat(es/minifier): Support format.inline_script
( #8252 )
2023-11-14 21:37:05 +00:00
Austaras
65c3d0e3f4
feat(es/minifier): Swap bin expr to save paren ( #8277 )
2023-11-14 16:45:24 +00:00
Austaras
20fb5bab32
fix(es/minifier): Keep class with a static block ( #8283 )
...
**Related issue:**
- Closes #8271 .
2023-11-15 00:59:14 +09:00
Austaras
ebcd825225
fix(es/minifier): Enable seq inliner for const declarations ( #8255 )
2023-11-13 03:47:49 +00:00
Donny/강동윤
9a0572b968
refactor(swc_node_base): Rename to swc_malloc
( #8272 )
...
**Description:**
This is quite convinient.
2023-11-11 19:10:56 +00:00
Donny/강동윤
be748f0f33
fix(es/minifier): Use cooked
while converting tpls into strings ( #8248 )
...
**Related issue:**
- Closes #8228
2023-11-09 11:59:42 +00:00
Donny/강동윤
14ea705f27
build(cargo): Update rustc to nightly-2023-11-04
( #8221 )
...
**Breaking Changes**:
- `Mark::default()` is now identical as `Mark::new()`.
**Description:**
I want to see if inlining is improved
2023-11-04 21:47:10 +00:00
Donny/강동윤
1a26be2a27
feat(es/codegen): Respect ascii_only: false
for StrLit
( #8217 )
...
**Related issue:**
- Closes #8189
2023-11-04 04:15:58 +00:00
Donny/강동윤
dd805e95a4
feat(es/minifier): Respect inline level and preserve native names ( #8205 )
...
**Description:**
Note: Preserving native names is a hack, but it's used by `terser` and it's the only way to preserve the name of `class AbortSignal` while mangling without `keep_classnames: true`. We can special case `AbortSignal`, but let's just follow `terser`.
**Related issue:**
- https://github.com/vercel/next.js/pull/57904
2023-11-02 08:59:59 +09:00
Austaras
bb02cdd26e
refactor(es/minifier): Simplify analyzer context ( #8164 )
2023-10-27 18:16:00 +00:00
Donny/강동윤
9ceb57b4c7
fix(es/compat): Don't add pure annotations to dummy spans ( #8172 )
...
**Related issue:**
- Closes #8155 .
- Closes #8173 .
2023-10-23 15:00:35 -07:00
Austaras
c26a2252b6
fix(es/minifier): Always consider reassigned
when inlining ( #8168 )
...
**Related issue:**
- Closes #8161 .
2023-10-23 21:23:29 +00:00
Donny/강동윤
8a461b8957
feat(es/minifier): Drop empty static blocks ( #8152 )
...
**Related issue:**
- Closes #8136
2023-10-19 21:06:12 +00:00
Donny/강동윤
35601e4dcb
fix(es/minifier): Abort function inliner if keep_fnames
is true
( #8145 )
...
**Related issue:**
- https://github.com/vercel/next.js/issues/56408
2023-10-19 20:20:54 +00:00
Donny/강동윤
111de264b0
fix(es/minifier): Abort seq inliner if b
can short-circuit ( #8128 )
...
**Related issue:**
- Closes #8119
2023-10-18 03:44:36 +00:00
Austaras
4f67794223
feat(es/minifier): Inline into the arguments of new
using seq inliner ( #8127 )
2023-10-18 03:07:14 +00:00
magic-akari
7da3f52485
feat(es/minifier): Evaluate more toFixed
expressions ( #8109 )
2023-10-13 15:07:00 +09:00
Donny/강동윤
94bb42e294
fix(es/minifier): Don't inline functions if keep_fnames
is enabled ( #8093 )
...
**Related issue:**
- https://github.com/vercel/next.js/issues/56550
2023-10-12 00:39:19 +00:00
Austaras
01391e3c13
fix(es/minifier): Check if object shorthand is skippable for seq inliner ( #8036 )
...
**Related issue:**
- Closes #7984
2023-09-30 11:40:46 +00:00
Donny/강동윤
39c680d814
fix(es/codegen): Fix codegen of unicode surrogates ( #7985 )
...
**Description:**
x-ref: https://vercel.slack.com/archives/C02HY34AKME/p1695334071194139
Reproduction: https://github.com/kdy1/repro-test-mdx-korean
Regression of next.js: `v13.4.11`(swc_core@v0.79.13 ) => `v13.5.2`
(swc_core@v0.83.12 )
- `next@v13.4.19` works (swc_core@v0.79.59 )
- `next@v13.4.20-canary.3` works (swc_core@v0.79.70 )
- **`next@v13.4.20-canary.32` fails** (swc_core@v0.83.12 )
Commit range:
662f236aa5...e67bf05f9d
- `swc_core@v0.79.70`:
662f236aa5
- `swc_core@v0.83.12`:
e67bf05f9d
Diff: https://gist.github.com/kdy1/047e7e5537c34180d446cb3d5b95fce8
---
I did more investigation by monkey-patching the `next` package.
`.minify()` resolved without an exception.
It means that `.minify()` is producing an invalid ES code.
So... candidates are
- https://github.com/swc-project/swc/pull/7890
- https://github.com/swc-project/swc/pull/7876
- https://github.com/swc-project/swc/pull/7858
- https://github.com/swc-project/swc/pull/7856
- https://github.com/swc-project/swc/pull/7853
- https://github.com/swc-project/swc/pull/7832
2023-09-25 23:36:05 +00:00
Donny/강동윤
b3d3a7bc73
fix(es/minifier): Do not inline into a template literal with sequential inliner ( #7971 )
...
**Related issue:**
- Closes #7969 .
2023-09-20 06:57:03 +00:00
Donny/강동윤
ee7575695d
feat(es/codegen): Add an option to print assert
for import attributes ( #7914 )
...
**Description:**
- `jsc.experimental.keepImportAssertions` is renamed to `jsc.experimental.keepImportAttributes`.
- `jsc.experimental.emitAssertForImportAttributes` is added.
**Related issue:**
- Closes #7908
2023-09-05 21:24:25 +09:00
Austaras
2db10e9fd1
fix(es/resolver): Correctly resolve global value ( #7893 )
...
**Related issue:**
- Closes #7685
2023-08-31 05:54:18 +00:00
Austaras
87a47bfb2c
fix(es/minifier): Report is_fn_local
even if var is hoisted ( #7876 )
...
**Related issue:**
- Closes #7847
2023-08-29 10:21:14 +00:00
Lewis Liu
ae8cd9430d
fix(es/minifier): Don't remove exports ( #7856 )
2023-08-25 13:47:42 +09:00
Austaras
65db1badff
refactor(es/minifier): Pre-calculate reassigned
( #7832 )
2023-08-24 07:35:26 +00:00
Donny/강동윤
7fe01e64dd
fix(es/minifier): Don't inline properties if the var is not fn-local
( #7839 )
...
**Related issue:**
- https://github.com/vercel/next.js/issues/54192 .
2023-08-22 11:04:15 +09:00
Donny/강동윤
31de19ece2
fix(es/minifier): Preserve more analysis data upon inlining ( #7823 )
...
**Related issue:**
- Closes #7821 .
2023-08-17 18:09:02 +00:00
Austaras
f8ca366cc1
fix(es/minifier): Abort seq inliner if var is not fn_local or reassigned ( #7804 )
...
**Description:**
It turns out that the original implementation of `infect`is incomplete
because it cannot cover function param, and the new implementation
introduced in #7772 is redundant because what
[terser](https://github.com/terser/terser/blob/master/lib/compress/tighten-body.js#L909C18-L909C28 )
do is basically checking `fn_local`
**Related issue:**
- Closes #7784
2023-08-17 05:15:59 +00:00
Donny/강동윤
05990a98fd
fix(es/minifier): Preserve cooked
while compressing template literals ( #7773 )
...
**Related issue:**
- Closes #7770
2023-08-17 04:35:07 +00:00
Donny/강동윤
552d9aa344
fix(es/minifier): Do not drop properties used via this
( #7785 )
...
**Related issue:**
- Closes #7783 .
2023-08-10 02:48:35 +00:00
Donny/강동윤
eff0caca2b
feat(es/minifier): Support mangle.eval
( #7777 )
...
**Related issue:**
- Closes #7754
2023-08-09 20:42:12 +00:00
Austaras
ef8d12154d
fix(es/minifier): Abort seq inliner if a same var is defined in outer scope ( #7772 )
...
**Description:**
The algorithm here is directly copied from terser, I don't if it's correct or can be improved, but it does fix the issue.
**Related issue:**
- Closes #7749
2023-08-09 20:01:59 +00:00
Donny/강동윤
b45649b8d6
fix(es/codegen): Don't strip necessary escape characters ( #7687 )
...
**Related issue:**
- Closes #7678 .
2023-08-07 22:17:59 +00:00
Donny/강동윤
36ccbec061
fix(es/minifier): Abort on Array.slice
with start >= end
( #7745 )
...
**Related issue:**
- Closes #7742 .
2023-08-07 20:36:15 +00:00
Donny/강동윤
3873f58499
fix(es/minifier): Mark args of new
s as references ( #7743 )
...
**Related issue:**
- Closes #7739 .
2023-08-03 07:02:15 +09:00
Austaras
5ea6f27eb0
fix(es/minifier): Handle synthesized export default expression ( #7707 )
...
**Related issue:**
- Closes #7634 .
2023-07-31 04:10:18 +00:00
Donny/강동윤
e8c58cfd77
fix(es/utils): Fix string evaluation of array literals ( #7731 )
...
**Related issue:**
- Closes #7714 .
2023-07-31 03:31:37 +00:00
Donny/강동윤
f901b417d1
fix(es/minifier): Do not drop used properties ( #7702 )
...
**Related issue:**
- Closes #7700 .
- Closes #7710 .
2023-07-28 16:57:07 +00:00
Donny/강동윤
a26dbce981
fix(es/minifier): Abort seq inliner using visitor ( #7699 )
...
**Related issue:**
- Closes #7697 .
2023-07-25 03:30:33 +00:00
Austaras
bf723625b0
refactor(es/minifier): Respect top-level when invoking IIFE ( #7690 )
2023-07-25 02:53:55 +00:00
magic-akari
241c04ab4a
fix(es/minifier): Only cast global Infinity
/undefined
/NaN
( #7684 )
...
**Related issue:**
- Closes #7683 .
2023-07-21 01:57:39 +00:00
Austaras
9893bd2d43
refactor(es/minifier): Respect toplevel
and module
options ( #7671 )
2023-07-20 11:35:08 +09:00