Commit Graph

185 Commits

Author SHA1 Message Date
David Sherret
2113bb3e19
fix(es/resolver): Ignore qualifiers of TsImportType (#8299) 2023-11-20 04:04:17 +00: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
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/강동윤
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
Donny/강동윤
b13bc32027
fix(es/compat): Make block-scoping pass rename exports correctly (#8175)
**Related issue:**

 - Closes #8148
2023-10-30 05:08:27 +00:00
Alessandro Chitolina
9c029ef095
feat(es/compat): Implement decorator metadata proposal (#8097)
**Description:**

This PR implements the [decorator
metadata](https://github.com/tc39/proposal-decorator-metadata) proposal,
that is now at Stage 3.

As the decorator metadata proposal is a small extension of the decorator
proposal and is not possible to compile the metadata without transpiling
decorators, I opted to implement it into the existing decorator
transformer (and helper)

**Related issue:**

 - Closes #7957
2023-10-16 20:38:53 +00:00
Donny/강동윤
226b17fa86
chore(ci): Remove unused concurrency tests (#8100) 2023-10-11 21:40:49 +09:00
Donny/강동윤
84cec8766d
refactor(atoms): Remove usage of js_word! to drop string-cache (#7976)
**Description:**

This PR is to prepare removal of `string-cache`. Actually, this PR does not remove it. Instead, this PR only removes direct usages of `js_word!`s, especially in patterns.



**Related issue:**

 - #4946.
2023-10-08 00:39:51 +00:00
magic-akari
1346528477
fix(es/helpers): Override mistake in _interop_require_wildcard (#8076)
**Related issue:**

 - https://github.com/babel/babel/issues/15995
2023-10-07 14:20:39 +00:00
Austaras
06b6eb9999
fix(es/compat): Generate OptCall for OptCall for private fields (#8031)
**Related issue:**

 - Closes #8003
2023-09-29 21:32:48 +00:00
magic-akari
9c9a538f23
refactor(es/typescript): Reimplement TypeScript pass (#7202)
**Description:**

## Bugfixes
- Exported `let`/`var` declarations in TypeScript namespaces should be mutable.
- Fix missing declaration of complex exported patterns in TypeScript namespaces.
- Preserve concrete TS namespaces.

## New Features
- Introducing [Verbatim Module Syntax](https://www.typescriptlang.org/tsconfig#verbatimModuleSyntax).
- Enum value will now be inlined whenever possible within a single module, optimizing runtime performance.
- Constant enums will be automatically eliminated when feasible, This can reduce bundle size.
- Added support for cross-referencing enum values.

## Deprecated
`TsEnumConfig` is deprecated
  - The `treat_const_enum_as_enum` transform option is deprecated.
  - The `ts_enum_is_readonly` assumption option is deprecated.

**BREAKING CHANGE:**

TypeScript Config is changed.


**Related issue:**

 - Closes #5197
 - Closes #5259 
 - Closes #7177
 - Closes #7453
 - Closes #7676 
 - Closes #7681
 - Closes #7791 
 - Closes #7961
2023-09-25 01:41:00 +00:00
Austaras
2db10e9fd1
fix(es/resolver): Correctly resolve global value (#7893)
**Related issue:**

 - Closes #7685
2023-08-31 05:54:18 +00:00
Donny/강동윤
4d3fcb86e4
feat(es/ast): Support import attributes proposal (#7868)
**Related issue:**

 - Closes #7179
2023-08-28 00:29:45 +00:00
Donny/강동윤
eff0caca2b
feat(es/minifier): Support mangle.eval (#7777)
**Related issue:**

 - Closes #7754
2023-08-09 20:42:12 +00: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/강동윤
a65be14a00
fix(es/minifier): Do not reuse identifier used for import bindings (#7639)
**Related issue:**

 - Closes #7634.
2023-07-18 04:11:00 +00:00
Donny/강동윤
6be1f7075d
fix(es/minifier): Fix a bug about eval of name mangler (#7615)
**Description:**

 - Repro: https://github.com/avitorio/swcminify-debug


**Related issue:**

 - https://github.com/vercel/next.js/discussions/30237#discussioncomment-6288339
2023-07-18 01:09:00 +00:00
Donny/강동윤
b34f1adbcc
build(cargo): Update rustc to 2023-07-03 (#7623) 2023-07-05 03:50:43 +00:00
Donny/강동윤
bcd5a1d666
feat(es/compat): Implement transform for explicit resource management (#7376)
**Related issue:**

 - Closes #7316.
 - Closes #7369.
2023-06-29 14:13:43 +00:00
underfin
e2725451aa
fix(es/fixer): Don't change default decls to default expr exports (#7585)
**Related issue:**

 - Closes #7584.
2023-06-29 07:50:25 +00:00
Donny/강동윤
1d9f972fb4
fix(es/resolver): Resolve the super class before registering a class name (#7550)
**Related issue:**

 - Closes #7546.
2023-06-20 05:03:01 +00:00
Donny/강동윤
3958f1792c
refactor(es/ast): Remove unused fields (#7518)
**Related issue:**

 - Closes #7347.
 - Closes #7487.
2023-06-12 08:02:34 +00:00
Donny/강동윤
041b491466
feat(es/parser): Implement explicit resource management (#7322)
**Description:**

 - Add `UsingDecl`.
 - Add `UsingDecl` to `Decl`.
 - Rename `VarDeclOrPat` to `ForHead`.
 - Add `UsingDecl` to `ForHead`.
 - Implement parser for using declarations.

**Related issue:**

 - #7316.
2023-05-10 04:16:44 +00:00
Fy
66b5b110bf
fix(es/compat): Transform curried function call with optional chaining (#7313)
**Related issue:**

 - Closes #7312
2023-04-24 05:23:53 +00:00
magic-akari
38dfb91ebc
fix(es/helpers): Remove unnecessary parameters in helper_expr! macro (#7296)
**Description:**

We have moved to snake_case, so the last parameter of helper_expr is unnecessary.
2023-04-20 08:26:34 +00:00
Austaras
7a00f2e954
fix(es/resolver): Hoist parameter in arrow and constructor (#7292)
**Related issue:**

 - Closes #7248.

---

Co-authored-by: Donny/강동윤 <kdy1997.dev@gmail.com>
2023-04-19 11:25:02 +00:00
Austaras
93a264c9a4
fix(es/renamer): Ensure that param and function body are in same scope (#7271)
**Description:**

The problem arises in L235 of swc_ecma_transforms_base/src/rename/mod.rs

```rs
unit!(visit_mut_fn_decl, FnDecl, true);
```

which calls `get_map` and evals to

```rs
node.visit_children_with(&mut v);
```

with `FnDecl` and `Analyzer` in L132. However, in `Analyzer`, a visit to raw function was not overloaded, so function arguments and function body are considered different scopes.

**Related issue:**

 - Closes #7261.
2023-04-15 04:19:52 +00:00
IWANABETHATGUY
c4cce12758
build(cargo): Update bitflags to v2 (#7270) 2023-04-15 03:26:56 +00:00
magic-akari
a13a78e3fe
feat(es/helpers): Use named export and unify import path (#7182)
**BREAKING CHANGE:**

Breaking changes for `@swc/helpers`. A new major version `0.5.0` is required.


**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/7157
2023-04-04 03:05:47 +00:00
Donny/강동윤
7a863ad18f
feat(es/compat): Implement stage 3 decorator, without auto accessor (#6950) 2023-04-03 08:13:12 +00:00
magic-akari
3ca954b9f9
fix(es/helpers): Use snake_case for helpers (#7147)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/7144.
 - Closes https://github.com/swc-project/swc/issues/7118.
2023-03-31 15:15:21 +09:00
Donny/강동윤
6d9763e8c0
fix(es/renamer): Don't use symbols used by declarations if eval exists (#7116)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6971.
 - Closes https://github.com/swc-project/swc/issues/7094.
2023-03-22 06:31:43 +00:00
Austaras
f250f243cb
refactor(es/fixer): Move comments with the insertion order (#7097) 2023-03-20 05:28:08 +00:00
Austaras
c114f006b4
refactor(es/resolver): Make syntax context for unresolved and top-level stable (#7096) 2023-03-20 11:01:19 +09:00
Austaras
0f09e356c3
feat(es/resolver): Make scope context identical to the vars (#7095) 2023-03-19 11:57:14 +09:00
Donny/강동윤
963c460613
refactor: Fix lints using clippy from nightly-2023-03-13 (#6920) 2023-03-14 04:56:21 +00:00
Donny/강동윤
085c6f35f1
fix(es/ast): Fix memory layout (#7062)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/7061.
2023-03-12 04:50:28 +00:00
Donny/강동윤
fbb3016870
fix(es): Support stable rustc again (#7057)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/7039.
2023-03-11 10:42:04 +00:00
Donny/강동윤
a9fe1d2d22
perf(es/ast): Shrink size of Expr (#7041)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/7019.
2023-03-09 13:34:11 +00:00
Donny/강동윤
367ac825f6
refactor(es/parser): Make lexer not generic over Input (#6993)
**Description:**

Currently, it uses `StringInput` as the input type, but I'll refactor it to use `String` or `Vec<u8>` directly to optimize it further.

**Related issue:**

 - https://github.com/swc-project/swc/discussions/6991
2023-02-28 08:20:29 +00:00
Donny/강동윤
e946c43f4e
fix(es/resolver): Use type context for export = if it's unresolved (#6963)
**Related issue:**

 - https://github.com/dudykr/stc/issues/717.
2023-02-19 23:50:19 +09:00
magic-akari
9382bda786
fix(es/minifier): Fix toFixed, toPrecision, toExponential and toString of Number (#6960) 2023-02-19 23:18:14 +09:00
Donny/강동윤
861d87cae6
fix(es/resolver): Resolve parameters correctly (#6890)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/5622.
2023-02-01 15:49:08 +09:00
RiESAEX
ad8d043f1d
feat(es/helper): Use require to load polyfills and helpers in Script (#6778) 2023-01-16 16:07:40 +00:00
Donny/강동윤
ebce18b221
fix(es/renamer): Handle rest params correctly (#6821)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6819.
2023-01-16 06:57:16 +00:00
Donny/강동윤
82bd5c2041
feat(es/renamer): Rename synthesized identifiers even on eval (#6818)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/5068.
2023-01-16 04:51:47 +00:00
Donny/강동윤
631dd7872b
feat(es/renamer): Support safari10 from the name mangler (#6801) 2023-01-13 05:00:13 +00:00
magic-akari
1d147602c0
fix(es/helpers): Make _classPrivateFieldLooseBase return receiver (#6770) 2023-01-09 10:58:29 +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/강동윤
cb4173aa73
perf(es/minifier): Use rope-like structure for the name mangler (#6661) 2022-12-15 09:31:09 +00:00