Commit Graph

139 Commits

Author SHA1 Message Date
Donny/강동윤
ac3a55a435
feat(visit): Add index to AstKind (#5138)
- Make `VisitAstPath` take `AstNodePath<AstKind, AstNodeRef>`.
 - Add index to `AstKind::Vec*`.
2022-07-09 10:15:12 +00:00
Donny/강동윤
0e4a03ccc6
fix(es/minifier): Don't inline a callable expression if it's used as a reference (#5118) 2022-07-06 03:53:11 +00:00
Donny/강동윤
1a9f93546b
chore(ci): Test concurrent (#4955) 2022-06-13 11:15:18 +00:00
Donny/강동윤
49b3c2715c
refactor(es/minifier): Make rust-analyzer fast, really (#4746) 2022-05-23 16:16:05 +09:00
Donny/강동윤
47e6cc5190
refactor(es/minifier): Make rust-analyzer faster (#4744)
- We now use a separate crate for testing the minifier. This makes IDE much faster.
2022-05-23 15:53:01 +09:00
Donny/강동윤
6a97c7bef8
fix(es/utils): Fix wrong apis (#4604)
# API Changes

## `swc_ecma_utils`

### Renames

 - `find_ids` => `find_pat_ids`
 - `prepend` => `prepend_stmt`
 - `as_bool` => `cast_to_bool`
 - `as_number` => `as_pure_number`
 - `as_string` => `cast_to_string`
 - (`as_pure_bool`, `cast_to_number` is not renamed)
 - `UsageFinder` => `IdentUsageFinder`.
 - `IdentFinder` => `IdentRefFinder`.

## Changes

 - Re-export of `HANDLER` from `swc_common::errors` is removed. Use `swc_common::error::HANDLER` instead.
 - Re-export of `Id` from `swc_ecma_ast` is removed. Use `swc_ecma_ast::Id` instead.
 - `ExprCtx` is used for apis related to `Expr`.
 - `preserve_effects` is now a method of `ExprCtx`. It was a top-level function.
 - `extract_side_effects_to` is now a method of `ExprCtx`. It was a top-level function.
 - `IdentUsageFinder` (previously `UsageFinder`) now takes `Id` instead of `Ident`.
 - `IdentRefFinder` (previously `IdentFinder`) now takes `Id` instead of `Ident`.
 - `ExprExt::is_ident_ref_to` is removed.
 - `Expr::is_global_ref_to` is added.
 - `:🆔:id` is removed. Use `Ident::to_id()` instead.
2022-05-11 04:36:22 +00:00
Donny/강동윤
2c861bd9e5
feat(es/ast): Improve Id APIs (#4614)
# API Changes

 - `Ident` now has `to_id()`. This method is added to allow removing an import.
2022-05-11 12:02:14 +09:00
Donny/강동윤
a6d404a8c2
chore(repo): Configure prettier (#4523) 2022-05-04 14:25:28 +00:00
Donny/강동윤
c216a03673
chore(ci): Improve bot script (#4430)
- It will now rebase another PR if there's a merge conflict.
 - It does not update the base branch if it's already up-to-date.
2022-04-25 19:21:34 +09:00
Donny/강동윤
a8ed5ba357
fix(es/minifier): Apply name mangler as much as we can (#4365) 2022-04-19 17:20:12 +09:00
Donny/강동윤
ba5f7436c1
chore(es/minifier): Add full benchmark for .minify() (#4341) 2022-04-15 22:31:15 +00:00
Donny/강동윤
83a8f489ec
refactor(bindings): Rename crates (#4337) 2022-04-15 22:47:44 +09:00
那里好脏不可以
37a8c90750
chore(*): Typo + fomatting (#4304) 2022-04-11 18:45:58 +00:00
Donny/강동윤
b37dafbd27
feat(es/minifier): Implement rules for optimizing loops (#4157) 2022-03-25 12:08:14 +00:00
Donny/강동윤
e6088408bf chore: Publish crates 2022-03-24 12:05:47 +09:00
Donny/강동윤
533f756274
fix(api/rust): Exclude test files from rust packages (#4091) 2022-03-19 10:49:12 +00:00
Donny/강동윤
bb08354950
fix(es/react): Fix _createElement (#4070) 2022-03-17 22:13:23 +00:00
OJ Kwon
fefb5870c7
feat(cli): Enable plugins for swc_cli (#4059) 2022-03-17 15:31:20 +09:00
LongYinan
db9b988845
feat(node-swc): Add libc field in Linux platform packages (#4046) 2022-03-16 18:58:24 +09:00
OJ Kwon
dab2002a2e
refactor(plugin/runner): Split modules and introduce feature flags (#4035) 2022-03-15 22:45:40 +00:00
Donny/강동윤
9b8b111264 chore(ci): Fix auto-rebase script 2022-03-15 16:46:15 +09:00
Donny/강동윤
be09ea6991
feat(es/minifier): Drop noop calls (#4019) 2022-03-15 16:23:32 +09:00
Donny/강동윤
c27b84c3f6
chore(ci): Make bump-command check lazy (#4018) 2022-03-15 15:17:20 +09:00
Donny/강동윤
ddfa490899 chore: Publish crates 2022-03-12 10:00:23 +09:00
Donny/강동윤
814dcc09d6
test(es/compat): Organize tests (#3825) 2022-03-03 05:51:09 +00:00
OJ Kwon
95ecc013fe
fix(node-swc/cli): Correctly expose swcx entrypoint (#3784) 2022-03-01 08:41:45 +00:00
Donny/강동윤
6d98d146a6 chore: Skip CI for automated commits (#3760) 2022-02-27 14:44:35 +09:00
Donny/강동윤
8b87bb4870
fix(es/parser): Don't attach comments to ; (#3720) 2022-02-24 07:23:53 +00:00
Donny/강동윤
76ec275c3c
chore(ci): Reduce CI time (#3719) 2022-02-24 06:06:03 +00:00
OJ Kwon
9cc094ab57
feat(node-swc): Expose the new swc_cli as a binary named swcx (#3684) 2022-02-23 16:47:47 +00:00
Łukasz
c5f0e87ebf
chore: Typo (#3646) 2022-02-20 23:17:06 +09:00
Donny/강동윤
2d9735b9a9 chore(ci): Fix the auto-bump scripts 2022-02-16 14:36:45 +09:00
Donny/강동윤
a1e45c4b86
feat(bot): Add auto-bump script (#3573) 2022-02-15 19:35:59 +09:00
Donny/강동윤
d3f1c4e602 chore: Fix auto-rebase script again 2022-02-15 02:12:32 +09:00
Donny/강동윤
47a81bdb95
chore(ci): Remove useless tests from the matrix (#3561) 2022-02-14 21:13:25 +09:00
Donny/강동윤
b1fc7a9e34
chore(ci): Add a bot for auto-rebasing (#3560) 2022-02-14 19:49:21 +09:00
Donny/강동윤
edc46ccf93 chore(crates): Use bot account for commiitter 2022-02-09 20:35:36 +09:00
Donny/강동윤
c10cbc4eca chore(crates): Use bot account for publishing commits 2022-02-09 20:31:32 +09:00
Donny
2cdd4300cf chore: Publish crates 2022-01-28 01:13:16 +09:00
LongYinan
9608605772
build(node-swc): Fix GLIBC < 2.18 compatible issues and android arm binary loading issue (#3314) 2022-01-20 02:21:24 +00:00
Donny/강동윤
70c2f3b3a5
security(repo): Fix crev integration (#3210) 2022-01-07 20:03:03 +09:00
Donny
56d1f03556 chore: Publish crates 2022-01-07 15:18:26 +09:00
Donny/강동윤
8a1016fb40
refactor(bundler): Improve test suite (#3144) 2021-12-29 19:19:44 +09:00
Donny/강동윤
cec325be63
security(repo): Configure cargo-crev (#3124) 2021-12-28 18:49:33 +09:00
LongYinan
206da128a1
feat(node): Upgrade napi to v2 (#2958) 2021-12-24 02:21:24 +00:00
OJ Kwon
42046e104d
feat(node/core): Include noop swc binaries (#3088) 2021-12-21 20:20:20 +00:00
Donny/강동윤
d482d61b9f
chore(scripts): Use cargo profile instruments instead of cargo instruments (#3086) 2021-12-21 16:09:19 +09:00
Donny/강동윤
8afb5af517
chore(repo): Make git faster (#3075)
swc_ecma_parser:
 - Flatten parser test suite ported from `tsc`.

swc:
 - Flatten the reference directory for the `tsc` test suite.
2021-12-20 14:05:57 +09:00
Donny
276d74f2e9 chore(crates): Use interactive bump 2021-12-19 14:11:08 +09:00
Donny
4006d5691f chore(api/rust): Automate updating of change logs 2021-12-13 05:43:50 +09:00
Donny
b9baa503e3 chore: Add a script to manage crates 2021-12-02 15:54:43 +09:00
Donny/강동윤
6b96a3d8ed
feat: Enable logging of timings (#2833)
swc_timer:
 - Add `Timer`.
 - Add `timer!()`.

node:
 - Enable logging.
2021-11-22 21:01:08 +09:00
Donny
a973b0bed4 chore: Publish crates 2021-11-03 13:55:27 +09:00
Donny
3935400a55 chore: Improve version manager script 2021-11-02 14:53:13 +09:00
Donny
cd2a2777d9 chore: Publish crates 2021-10-31 18:17:31 +09:00
Donny/강동윤
9ba68c6863
fix(common): Fix sourcemap (#2457)
swc_common:
 - Include the index to the name in `mappings` of a sourcemap.

swc:
 - Fix handling of `inputSourceMap`.
2021-10-18 06:43:59 +00:00
Donny/강동윤
1645bb30b7
perf(es/transforms): Reduce usage of #[fast_path] (#2442)
swc_ecma_ast:
 - Implement `Take` for `ObjectLit`.
 - Implement `Take` for `ArrayLit`.

swc_ecma_transforms_compat:
 - `nullish_coalescing`: Remove exponential visit.
 - `nullish_coalescing`: Migrate to `VisitMut`.
 - `optional_chaining`: Reduce exponential visit. (But it's not removed)
 - `class_properties`: Remove exponential visit.
 - `jsx_src`: Migrate to `VisitMut`.
 - `optional_chaining`: Mae it parallel.
 - `async_to_generator`: Remove `#[fast_path]`.
 - `arrow`: Remove `#[fast_path]`.
 - `destructuring`: Remove `#[fast_path]`.
 - `block_scoped_functions`:  Remove `#[fast_path]`.
 - `classes`: Remove `#[fast_path]`.
2021-10-16 08:12:02 +00:00
Donny/강동윤
4c983e9158
perf(es/codegen, es/parser): Improve performance (#2406)
ast_node:
 - Make `.span()` inlinable.

swc_ecma_codegen:
 - Reduce call to *heavy* `.span()` calls.

swc_ecma_parser:
 - Reduce `memmove` by using typed-arena.

swc_bundler:
 - Make `Bundle.bundle` take `&mut self`.
 - Make drop concurrent.
2021-10-15 12:49:37 +09:00
Donny/강동윤
7a31a3f530
feat(plugin/api): Determine plugin api (#2199) 2021-10-09 17:47:42 +09:00
Donny/강동윤
ac3fbd91ac
perf(bundler): Improve performance (#2384)
*:
 - Use `ahash` instread of `rustc-hash`.

swc_ecma_transforms_optimization:
 - Make `dce` parallel.
2021-10-09 08:08:13 +00:00
강동윤
cb2b0c671f
fix(es/transforms/base): Optimize hygiene (#2193)
swc_ecma_transforms_base:
 - `hygiene`: Don't rename if not required. (#1600)

swc_ecma_minifier:
 - Remove `hygiene_optimizer`.
2021-09-01 13:11:55 +00:00
강동윤
d975a197c9
fix(es): Fix source map (#2159)
swc:
 - Fill `names` of sourcemap.
 - Don't add `sourceContents` to sourcemap if `sources` is added.

node_swc:
 - Handle source map for `minify` correctly.
 - `minify`: Accept `{ filename: code }`.
2021-08-26 10:44:38 +00:00
강동윤
e468752ebc
fix(es/minifier): Fix usage via yarn resolution (#2158)
swc_common:
 - Deprecate some unused types.

swc:
 - `BoolOrObject`: Improve the error message for deserialization failure.
 - `BoolOrObject`: Treat an empty object as `true`.
 - `JsMinifyFormatOptions`: Add fields. (#2153)

node_swc:
 - Improve error message for deserialization failure.
2021-08-26 06:18:59 +00:00
강동윤
ff440d47a4
chore: Organize project (#1849) 2021-06-24 17:01:21 +09:00
LongYinan
d6571933ff
feat(node-swc): Support windows aarch64 and linux aarch64 musl (#1773) 2021-06-02 09:34:27 +09:00
LongYinan
6a13615381
feat(node-swc): Support FreeBSD (#1758) 2021-05-28 12:47:02 +09:00
LongYinan
ca417e9d59
feat(node-swc): Support windows ia32 arch (#1367) 2021-01-29 15:09:44 +09:00
강동윤
6a1c3da326
fix(bundler): Fix bugs (#1346)
swc_bundler:
 - Fix keywords pass.

swc_ecma_transforms_optimization:
 - Remove `dbg!`.
 - `constant_propagation`: Inline only injected variables.
2021-01-22 18:39:57 +09:00
LongYinan
0c45a31f31
Upgrade to napi@1 (#1244)
node-swc:
 - Support apple silicon.
 - Support linux aarch64.
 - Support linux armv7.
 - Support android aarch64.
 - Support yarn pnp.
2020-12-30 14:30:09 +09:00
강동윤
4490e2551d
swc.rs (#1085)
Changes url from https://swc-project.github.io to https://swc.rs
2020-09-21 22:53:48 +09:00
강동윤
2b12594cf2
Add musl support (#1072) 2020-09-13 18:27:26 +09:00
LongYinan
c0cb9e4401
Upgrade to napi-rs@0.3 cli (#1033) 2020-09-05 17:48:22 +09:00
강동윤
8a01e2b7b6
Fix spack (#1016)
swc_ecma_transforms:
 - Add tests for #898 
 - dce preserves `export * from 'foo';`

swc_bundler:
 - Fix some concurrency bugs
 - Run dce only once
 - Handle `export * from 'foo'`
 - Handle namespace imports with computed key
 - Add some unit tests for `plan`
 - Handle export default decl
 - Handle simple coomon dependencies properly
2020-09-03 22:45:42 +09:00
강동윤
8e237288d7
Migrate to napi (#1009) 2020-08-30 15:29:42 +09:00
강동윤
decac0c052
Improve performance of spack (#981)
swc_bundler:
 - Invoke `LocalMark` less time
 - Use better strategy for parallel computing
2020-08-23 17:27:56 +09:00
강동윤
db4ce50373
Bugfixes (#989)
swc_ecmascript:
 - Make react / const modules configurable
2020-08-23 12:29:01 +09:00
강동윤
c6a10251c9
Chores (#986) 2020-08-23 02:41:39 +09:00
강동윤
655fc12fcb
Make spack respect swcrc (#964) 2020-08-14 21:02:39 +09:00
강동윤
5baa636a4b
Chores (coverage, documentation, etc..) (#925) 2020-08-02 19:10:28 +09:00
강동윤
881c3a369f
Coverage with crontab (#920)
I decided to configure crontab on my desktop because coverage test requires 20+GB of ram
2020-08-01 16:57:36 +09:00
강동윤
0efba88e3f
Improve typescript parser (#811) 2020-06-02 19:22:41 +09:00
강동윤
598c179007 Correct coverage script 2020-05-23 20:15:41 +09:00
강동윤
3a372ad29a
Move node-swc into the repository (#789)
The commit will help

 - Better testing
 - Preventing regression like #785.
 - **Implementing spack** (It requires access to neon api because of the plugin system)
2020-05-22 20:36:39 +09:00
강동윤
53d09d448e
Handle await-for loop just like babel (#676) 2020-02-18 12:27:13 +09:00
강동윤
e709da9d55
Fix SourceMap (#672)
Previously, `SourceMap` (taken from rustc) has a bug which reuses start position when new_source_file is invoked concurrently.
2020-02-17 15:56:41 +09:00
강동윤
30e08a55a7 Fix coverage 2020-02-17 10:47:12 +09:00
강동윤
36aeac8639
Coverage (#670)
Add a script to calculate coverage
2020-02-16 21:06:25 +09:00
강동윤
348052b017
Improve optimizer (#660)
Although it's quite naive at the moment, I added two optimization passes.

 - dead code elimination (Closes #607)
 - inlining
2020-02-13 11:45:14 +09:00
강동윤
e949c40517
ECMAScript parser (#1)
- Parser and lexer for lastest ecma spec https://tc39.github.io/ecma262

  - Lexer is currently very inefficient

 - Use https://github.com/tc39/test262-parser-tests/ for testing.

 - Implement proc-macro based ast folder and assert_eq_ignore_span! based on it.

 - Some utilities for proc macro at /macros/common
2018-01-12 16:53:06 +09:00